@agent-native/core 0.99.2 → 0.100.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 (381) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +21 -0
  3. package/corpus/core/docs/content/a2a-protocol.mdx +42 -0
  4. package/corpus/core/docs/content/agent-surfaces.mdx +43 -0
  5. package/corpus/core/docs/content/external-agents.mdx +11 -0
  6. package/corpus/core/docs/content/locales/ar-SA/a2a-protocol.mdx +42 -0
  7. package/corpus/core/docs/content/locales/ar-SA/agent-surfaces.mdx +30 -0
  8. package/corpus/core/docs/content/locales/ar-SA/external-agents.mdx +9 -0
  9. package/corpus/core/docs/content/locales/de-DE/a2a-protocol.mdx +42 -0
  10. package/corpus/core/docs/content/locales/de-DE/agent-surfaces.mdx +34 -0
  11. package/corpus/core/docs/content/locales/de-DE/external-agents.mdx +10 -0
  12. package/corpus/core/docs/content/locales/es-ES/a2a-protocol.mdx +42 -0
  13. package/corpus/core/docs/content/locales/es-ES/agent-surfaces.mdx +34 -0
  14. package/corpus/core/docs/content/locales/es-ES/external-agents.mdx +10 -0
  15. package/corpus/core/docs/content/locales/fr-FR/a2a-protocol.mdx +42 -0
  16. package/corpus/core/docs/content/locales/fr-FR/agent-surfaces.mdx +34 -0
  17. package/corpus/core/docs/content/locales/fr-FR/external-agents.mdx +11 -0
  18. package/corpus/core/docs/content/locales/hi-IN/a2a-protocol.mdx +42 -0
  19. package/corpus/core/docs/content/locales/hi-IN/agent-surfaces.mdx +31 -0
  20. package/corpus/core/docs/content/locales/hi-IN/external-agents.mdx +9 -0
  21. package/corpus/core/docs/content/locales/ja-JP/a2a-protocol.mdx +42 -0
  22. package/corpus/core/docs/content/locales/ja-JP/agent-surfaces.mdx +32 -0
  23. package/corpus/core/docs/content/locales/ja-JP/external-agents.mdx +10 -0
  24. package/corpus/core/docs/content/locales/ko-KR/a2a-protocol.mdx +42 -0
  25. package/corpus/core/docs/content/locales/ko-KR/agent-surfaces.mdx +32 -0
  26. package/corpus/core/docs/content/locales/ko-KR/external-agents.mdx +9 -0
  27. package/corpus/core/docs/content/locales/pt-BR/a2a-protocol.mdx +42 -0
  28. package/corpus/core/docs/content/locales/pt-BR/agent-surfaces.mdx +33 -0
  29. package/corpus/core/docs/content/locales/pt-BR/external-agents.mdx +10 -0
  30. package/corpus/core/docs/content/locales/zh-CN/a2a-protocol.mdx +42 -0
  31. package/corpus/core/docs/content/locales/zh-CN/agent-surfaces.mdx +29 -0
  32. package/corpus/core/docs/content/locales/zh-CN/external-agents.mdx +8 -0
  33. package/corpus/core/docs/content/locales/zh-TW/a2a-protocol.mdx +42 -0
  34. package/corpus/core/docs/content/locales/zh-TW/agent-surfaces.mdx +29 -0
  35. package/corpus/core/docs/content/locales/zh-TW/external-agents.mdx +8 -0
  36. package/corpus/core/package.json +1 -1
  37. package/corpus/core/src/agent/context-xray/actions/context-evict.ts +11 -0
  38. package/corpus/core/src/agent/context-xray/actions/context-pin.ts +11 -0
  39. package/corpus/core/src/agent/context-xray/actions/context-preview-get.ts +134 -0
  40. package/corpus/core/src/agent/context-xray/actions/context-restore.ts +11 -0
  41. package/corpus/core/src/agent/context-xray/actions/errors.ts +20 -0
  42. package/corpus/core/src/agent/context-xray/manifest.ts +106 -7
  43. package/corpus/core/src/agent/engine/context-directives-transform.ts +5 -1
  44. package/corpus/core/src/agent/production-agent.ts +100 -38
  45. package/corpus/core/src/agent/run-loop-with-resume.ts +7 -2
  46. package/corpus/core/src/client/AgentPanel.tsx +35 -8
  47. package/corpus/core/src/client/agent-page/AgentContextTab.tsx +501 -0
  48. package/corpus/core/src/client/agent-page/AgentJobsTab.tsx +370 -0
  49. package/corpus/core/src/client/agent-page/AgentTabsPage.tsx +1084 -0
  50. package/corpus/core/src/client/agent-page/types.ts +18 -0
  51. package/corpus/core/src/client/agent-page/use-jobs.ts +150 -0
  52. package/corpus/core/src/client/context-xray/ContextMeter.tsx +22 -5
  53. package/corpus/core/src/client/context-xray/ContextTreemap.tsx +16 -1
  54. package/corpus/core/src/client/context-xray/ContextXRayPanel.tsx +168 -3
  55. package/corpus/core/src/client/context-xray/format.ts +6 -0
  56. package/corpus/core/src/client/index.ts +6 -0
  57. package/corpus/core/src/client/resources/ResourcesPanel.tsx +51 -23
  58. package/corpus/core/src/client/settings/AutomationsSection.tsx +407 -387
  59. package/corpus/core/src/jobs/actions/list-recurring-jobs.ts +105 -0
  60. package/corpus/core/src/jobs/actions/manage-recurring-job.ts +85 -0
  61. package/corpus/core/src/jobs/tools.ts +1 -1
  62. package/corpus/core/src/localization/default-messages.ts +110 -0
  63. package/corpus/core/src/mcp/build-server.ts +1 -0
  64. package/corpus/core/src/mcp/connect-route.ts +62 -65
  65. package/corpus/core/src/server/action-discovery.ts +23 -0
  66. package/corpus/core/src/server/agent-chat/prompt-resources.ts +174 -2
  67. package/corpus/core/src/server/agent-chat-plugin.ts +175 -2
  68. package/corpus/core/src/server/auth.ts +1 -7
  69. package/corpus/core/src/server/google-oauth.ts +1 -7
  70. package/corpus/core/src/server/workspace-oauth.ts +31 -0
  71. package/corpus/core/src/shared/context-xray.ts +84 -1
  72. package/corpus/core/src/shared/mcp-connect-content.ts +130 -0
  73. package/corpus/core/src/templates/default/app/routes/_index.tsx +11 -0
  74. package/corpus/core/src/templates/default/app/routes/agent.tsx +33 -0
  75. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
  76. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +59 -0
  77. package/corpus/core/src/templates/workspace-core/.agents/skills/context-xray/SKILL.md +25 -0
  78. package/corpus/core/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +7 -0
  79. package/corpus/core/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +9 -0
  80. package/corpus/core/src/triggers/actions/list-automations.ts +99 -0
  81. package/corpus/core/src/triggers/actions/manage-automation.ts +78 -0
  82. package/corpus/templates/analytics/actions/data-source-status.ts +33 -15
  83. package/corpus/templates/analytics/actions/query-agent-native-analytics.ts +1 -1
  84. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +149 -24
  85. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +17 -0
  86. package/corpus/templates/analytics/app/components/layout/Header.tsx +1 -0
  87. package/corpus/templates/analytics/app/components/layout/Layout.tsx +1 -0
  88. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +8 -0
  89. package/corpus/templates/analytics/app/i18n/zh-TW.ts +1 -0
  90. package/corpus/templates/analytics/app/i18n-data.ts +1 -0
  91. package/corpus/templates/analytics/app/routes/agent.tsx +5 -0
  92. package/corpus/templates/analytics/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +6 -0
  93. package/corpus/templates/analytics/changelog/2026-07-13-analytics-answers-can-use-built-in-first-party-event-data.md +6 -0
  94. package/corpus/templates/analytics/changelog/2026-07-13-chart-legends-can-filter-to-one-series-or-hide-a-series-on-h.md +6 -0
  95. package/corpus/templates/analytics/changelog/2026-07-13-gpt-5-6-luna-answers-now-recover-normally-instead-of-showing.md +6 -0
  96. package/corpus/templates/analytics/server/plugins/agent-chat.ts +11 -2
  97. package/corpus/templates/assets/app/components/layout/Header.tsx +1 -0
  98. package/corpus/templates/assets/app/components/layout/Layout.tsx +1 -0
  99. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +2 -0
  100. package/corpus/templates/assets/app/routes/agent.tsx +5 -0
  101. package/corpus/templates/assets/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +6 -0
  102. package/corpus/templates/brain/app/components/layout/Layout.tsx +1 -0
  103. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +4 -1
  104. package/corpus/templates/brain/app/lib/brain.ts +11 -0
  105. package/corpus/templates/brain/app/root.tsx +15 -1
  106. package/corpus/templates/brain/app/routes/agent.tsx +11 -0
  107. package/corpus/templates/brain/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +6 -0
  108. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +1 -0
  109. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +2 -0
  110. package/corpus/templates/calendar/app/root.tsx +17 -1
  111. package/corpus/templates/calendar/app/routes/_app.agent.tsx +25 -0
  112. package/corpus/templates/calendar/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +6 -0
  113. package/corpus/templates/chat/app/components/layout/Header.tsx +1 -0
  114. package/corpus/templates/chat/app/components/layout/Layout.tsx +1 -0
  115. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +7 -0
  116. package/corpus/templates/chat/app/hooks/use-navigation-state.ts +3 -0
  117. package/corpus/templates/chat/app/root.tsx +24 -2
  118. package/corpus/templates/chat/app/routes/agent.tsx +15 -0
  119. package/corpus/templates/chat/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +6 -0
  120. package/corpus/templates/clips/app/components/library/library-layout.tsx +8 -0
  121. package/corpus/templates/clips/app/i18n/ar-SA.ts +2 -0
  122. package/corpus/templates/clips/app/i18n/de-DE.ts +2 -0
  123. package/corpus/templates/clips/app/i18n/en-US.ts +2 -0
  124. package/corpus/templates/clips/app/i18n/es-ES.ts +2 -0
  125. package/corpus/templates/clips/app/i18n/fr-FR.ts +2 -0
  126. package/corpus/templates/clips/app/i18n/hi-IN.ts +2 -0
  127. package/corpus/templates/clips/app/i18n/ja-JP.ts +2 -0
  128. package/corpus/templates/clips/app/i18n/ko-KR.ts +2 -0
  129. package/corpus/templates/clips/app/i18n/pt-BR.ts +2 -0
  130. package/corpus/templates/clips/app/i18n/zh-CN.ts +2 -0
  131. package/corpus/templates/clips/app/i18n/zh-TW.ts +2 -0
  132. package/corpus/templates/clips/app/root.tsx +7 -1
  133. package/corpus/templates/clips/app/routes/_app.agent.tsx +15 -0
  134. package/corpus/templates/clips/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
  135. package/corpus/templates/content/app/components/layout/Layout.tsx +1 -0
  136. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +36 -0
  137. package/corpus/templates/content/app/i18n/zh-TW.ts +2 -0
  138. package/corpus/templates/content/app/i18n-data.ts +44 -6
  139. package/corpus/templates/content/app/root.tsx +8 -0
  140. package/corpus/templates/content/app/routes/_app.agent.tsx +15 -0
  141. package/corpus/templates/content/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
  142. package/corpus/templates/design/app/components/layout/Layout.tsx +1 -0
  143. package/corpus/templates/design/app/components/layout/Sidebar.tsx +2 -0
  144. package/corpus/templates/design/app/i18n/zh-TW.ts +2 -0
  145. package/corpus/templates/design/app/i18n-data.ts +20 -0
  146. package/corpus/templates/design/app/root.tsx +7 -1
  147. package/corpus/templates/design/app/routes/agent.tsx +15 -0
  148. package/corpus/templates/design/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
  149. package/corpus/templates/dispatch/app/dispatch-extensions.tsx +10 -1
  150. package/corpus/templates/dispatch/app/i18n/zh-TW.ts +2 -0
  151. package/corpus/templates/dispatch/app/i18n-data.ts +20 -0
  152. package/corpus/templates/dispatch/app/root.tsx +7 -2
  153. package/corpus/templates/dispatch/app/routes/agent.tsx +18 -0
  154. package/corpus/templates/dispatch/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
  155. package/corpus/templates/forms/app/components/layout/Layout.tsx +1 -0
  156. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +35 -0
  157. package/corpus/templates/forms/app/i18n/ar-SA.ts +2 -0
  158. package/corpus/templates/forms/app/i18n/de-DE.ts +2 -0
  159. package/corpus/templates/forms/app/i18n/en-US.ts +2 -0
  160. package/corpus/templates/forms/app/i18n/es-ES.ts +2 -0
  161. package/corpus/templates/forms/app/i18n/fr-FR.ts +2 -0
  162. package/corpus/templates/forms/app/i18n/hi-IN.ts +2 -0
  163. package/corpus/templates/forms/app/i18n/ja-JP.ts +2 -0
  164. package/corpus/templates/forms/app/i18n/ko-KR.ts +2 -0
  165. package/corpus/templates/forms/app/i18n/pt-BR.ts +2 -0
  166. package/corpus/templates/forms/app/i18n/zh-CN.ts +2 -0
  167. package/corpus/templates/forms/app/i18n/zh-TW.ts +2 -0
  168. package/corpus/templates/forms/app/root.tsx +6 -1
  169. package/corpus/templates/forms/app/routes/_app.agent.tsx +15 -0
  170. package/corpus/templates/forms/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
  171. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +14 -2
  172. package/corpus/templates/macros/app/components/layout/Header.tsx +1 -0
  173. package/corpus/templates/macros/app/root.tsx +17 -2
  174. package/corpus/templates/macros/app/routes/agent.tsx +15 -0
  175. package/corpus/templates/macros/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
  176. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +42 -0
  177. package/corpus/templates/mail/app/components/layout/CommandPalette.tsx +6 -0
  178. package/corpus/templates/mail/app/routes/agent.tsx +15 -0
  179. package/corpus/templates/mail/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
  180. package/corpus/templates/plan/app/components/layout/Header.tsx +1 -0
  181. package/corpus/templates/plan/app/components/layout/Layout.tsx +1 -0
  182. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +2 -0
  183. package/corpus/templates/plan/app/root.tsx +8 -0
  184. package/corpus/templates/plan/app/routes/agent.tsx +15 -0
  185. package/corpus/templates/plan/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
  186. package/corpus/templates/slides/app/components/layout/Header.tsx +1 -0
  187. package/corpus/templates/slides/app/components/layout/Layout.tsx +1 -0
  188. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +2 -0
  189. package/corpus/templates/slides/app/root.tsx +10 -1
  190. package/corpus/templates/slides/app/routes/agent.tsx +15 -0
  191. package/corpus/templates/slides/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
  192. package/dist/agent/context-xray/actions/context-evict.js +5 -2
  193. package/dist/agent/context-xray/actions/context-evict.js.map +1 -1
  194. package/dist/agent/context-xray/actions/context-pin.js +5 -2
  195. package/dist/agent/context-xray/actions/context-pin.js.map +1 -1
  196. package/dist/agent/context-xray/actions/context-preview-get.d.ts +17 -0
  197. package/dist/agent/context-xray/actions/context-preview-get.d.ts.map +1 -0
  198. package/dist/agent/context-xray/actions/context-preview-get.js +94 -0
  199. package/dist/agent/context-xray/actions/context-preview-get.js.map +1 -0
  200. package/dist/agent/context-xray/actions/context-restore.js +5 -2
  201. package/dist/agent/context-xray/actions/context-restore.js.map +1 -1
  202. package/dist/agent/context-xray/actions/errors.d.ts +3 -0
  203. package/dist/agent/context-xray/actions/errors.d.ts.map +1 -1
  204. package/dist/agent/context-xray/actions/errors.js +6 -0
  205. package/dist/agent/context-xray/actions/errors.js.map +1 -1
  206. package/dist/agent/context-xray/manifest.d.ts +18 -1
  207. package/dist/agent/context-xray/manifest.d.ts.map +1 -1
  208. package/dist/agent/context-xray/manifest.js +68 -6
  209. package/dist/agent/context-xray/manifest.js.map +1 -1
  210. package/dist/agent/engine/context-directives-transform.d.ts +2 -0
  211. package/dist/agent/engine/context-directives-transform.d.ts.map +1 -1
  212. package/dist/agent/engine/context-directives-transform.js +2 -1
  213. package/dist/agent/engine/context-directives-transform.js.map +1 -1
  214. package/dist/agent/production-agent.d.ts +15 -0
  215. package/dist/agent/production-agent.d.ts.map +1 -1
  216. package/dist/agent/production-agent.js +74 -36
  217. package/dist/agent/production-agent.js.map +1 -1
  218. package/dist/agent/run-loop-with-resume.d.ts.map +1 -1
  219. package/dist/agent/run-loop-with-resume.js +6 -3
  220. package/dist/agent/run-loop-with-resume.js.map +1 -1
  221. package/dist/client/AgentPanel.d.ts +5 -1
  222. package/dist/client/AgentPanel.d.ts.map +1 -1
  223. package/dist/client/AgentPanel.js +9 -11
  224. package/dist/client/AgentPanel.js.map +1 -1
  225. package/dist/client/agent-page/AgentContextTab.d.ts +5 -0
  226. package/dist/client/agent-page/AgentContextTab.d.ts.map +1 -0
  227. package/dist/client/agent-page/AgentContextTab.js +202 -0
  228. package/dist/client/agent-page/AgentContextTab.js.map +1 -0
  229. package/dist/client/agent-page/AgentJobsTab.d.ts +3 -0
  230. package/dist/client/agent-page/AgentJobsTab.d.ts.map +1 -0
  231. package/dist/client/agent-page/AgentJobsTab.js +98 -0
  232. package/dist/client/agent-page/AgentJobsTab.js.map +1 -0
  233. package/dist/client/agent-page/AgentTabsPage.d.ts +20 -0
  234. package/dist/client/agent-page/AgentTabsPage.d.ts.map +1 -0
  235. package/dist/client/agent-page/AgentTabsPage.js +420 -0
  236. package/dist/client/agent-page/AgentTabsPage.js.map +1 -0
  237. package/dist/client/agent-page/types.d.ts +17 -0
  238. package/dist/client/agent-page/types.d.ts.map +1 -0
  239. package/dist/client/agent-page/types.js +9 -0
  240. package/dist/client/agent-page/types.js.map +1 -0
  241. package/dist/client/agent-page/use-jobs.d.ts +61 -0
  242. package/dist/client/agent-page/use-jobs.d.ts.map +1 -0
  243. package/dist/client/agent-page/use-jobs.js +71 -0
  244. package/dist/client/agent-page/use-jobs.js.map +1 -0
  245. package/dist/client/context-xray/ContextMeter.d.ts +3 -1
  246. package/dist/client/context-xray/ContextMeter.d.ts.map +1 -1
  247. package/dist/client/context-xray/ContextMeter.js +14 -5
  248. package/dist/client/context-xray/ContextMeter.js.map +1 -1
  249. package/dist/client/context-xray/ContextTreemap.d.ts +3 -2
  250. package/dist/client/context-xray/ContextTreemap.d.ts.map +1 -1
  251. package/dist/client/context-xray/ContextTreemap.js +9 -1
  252. package/dist/client/context-xray/ContextTreemap.js.map +1 -1
  253. package/dist/client/context-xray/ContextXRayPanel.d.ts.map +1 -1
  254. package/dist/client/context-xray/ContextXRayPanel.js +95 -20
  255. package/dist/client/context-xray/ContextXRayPanel.js.map +1 -1
  256. package/dist/client/context-xray/format.d.ts.map +1 -1
  257. package/dist/client/context-xray/format.js +12 -0
  258. package/dist/client/context-xray/format.js.map +1 -1
  259. package/dist/client/index.d.ts +3 -0
  260. package/dist/client/index.d.ts.map +1 -1
  261. package/dist/client/index.js +1 -0
  262. package/dist/client/index.js.map +1 -1
  263. package/dist/client/resources/ResourcesPanel.d.ts +9 -1
  264. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  265. package/dist/client/resources/ResourcesPanel.js +26 -10
  266. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  267. package/dist/client/settings/AutomationsSection.d.ts +9 -0
  268. package/dist/client/settings/AutomationsSection.d.ts.map +1 -1
  269. package/dist/client/settings/AutomationsSection.js +128 -147
  270. package/dist/client/settings/AutomationsSection.js.map +1 -1
  271. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  272. package/dist/jobs/actions/list-recurring-jobs.d.ts +21 -0
  273. package/dist/jobs/actions/list-recurring-jobs.d.ts.map +1 -0
  274. package/dist/jobs/actions/list-recurring-jobs.js +74 -0
  275. package/dist/jobs/actions/list-recurring-jobs.js.map +1 -0
  276. package/dist/jobs/actions/manage-recurring-job.d.ts +18 -0
  277. package/dist/jobs/actions/manage-recurring-job.d.ts.map +1 -0
  278. package/dist/jobs/actions/manage-recurring-job.js +68 -0
  279. package/dist/jobs/actions/manage-recurring-job.js.map +1 -0
  280. package/dist/jobs/tools.d.ts +13 -0
  281. package/dist/jobs/tools.d.ts.map +1 -1
  282. package/dist/jobs/tools.js +1 -1
  283. package/dist/jobs/tools.js.map +1 -1
  284. package/dist/localization/default-messages.d.ts +96 -0
  285. package/dist/localization/default-messages.d.ts.map +1 -1
  286. package/dist/localization/default-messages.js +96 -0
  287. package/dist/localization/default-messages.js.map +1 -1
  288. package/dist/mcp/build-server.d.ts.map +1 -1
  289. package/dist/mcp/build-server.js +1 -0
  290. package/dist/mcp/build-server.js.map +1 -1
  291. package/dist/mcp/connect-route.d.ts.map +1 -1
  292. package/dist/mcp/connect-route.js +44 -59
  293. package/dist/mcp/connect-route.js.map +1 -1
  294. package/dist/notifications/routes.d.ts +2 -2
  295. package/dist/resources/handlers.d.ts +1 -1
  296. package/dist/server/action-discovery.d.ts.map +1 -1
  297. package/dist/server/action-discovery.js +23 -0
  298. package/dist/server/action-discovery.js.map +1 -1
  299. package/dist/server/agent-chat/prompt-resources.d.ts +14 -0
  300. package/dist/server/agent-chat/prompt-resources.d.ts.map +1 -1
  301. package/dist/server/agent-chat/prompt-resources.js +139 -2
  302. package/dist/server/agent-chat/prompt-resources.js.map +1 -1
  303. package/dist/server/agent-chat-plugin.d.ts +1 -0
  304. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  305. package/dist/server/agent-chat-plugin.js +136 -3
  306. package/dist/server/agent-chat-plugin.js.map +1 -1
  307. package/dist/server/auth.d.ts.map +1 -1
  308. package/dist/server/auth.js +1 -4
  309. package/dist/server/auth.js.map +1 -1
  310. package/dist/server/google-oauth.d.ts.map +1 -1
  311. package/dist/server/google-oauth.js +1 -4
  312. package/dist/server/google-oauth.js.map +1 -1
  313. package/dist/server/transcribe-voice.d.ts +1 -1
  314. package/dist/server/workspace-oauth.d.ts +11 -0
  315. package/dist/server/workspace-oauth.d.ts.map +1 -0
  316. package/dist/server/workspace-oauth.js +25 -0
  317. package/dist/server/workspace-oauth.js.map +1 -0
  318. package/dist/shared/context-xray.d.ts +45 -1
  319. package/dist/shared/context-xray.d.ts.map +1 -1
  320. package/dist/shared/context-xray.js +12 -0
  321. package/dist/shared/context-xray.js.map +1 -1
  322. package/dist/shared/mcp-connect-content.d.ts +37 -0
  323. package/dist/shared/mcp-connect-content.d.ts.map +1 -0
  324. package/dist/shared/mcp-connect-content.js +92 -0
  325. package/dist/shared/mcp-connect-content.js.map +1 -0
  326. package/dist/templates/default/app/routes/_index.tsx +11 -0
  327. package/dist/templates/default/app/routes/agent.tsx +33 -0
  328. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
  329. package/dist/templates/workspace-core/.agents/skills/agent-page/SKILL.md +59 -0
  330. package/dist/templates/workspace-core/.agents/skills/context-xray/SKILL.md +25 -0
  331. package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +7 -0
  332. package/dist/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +9 -0
  333. package/dist/triggers/actions/list-automations.d.ts +24 -0
  334. package/dist/triggers/actions/list-automations.d.ts.map +1 -0
  335. package/dist/triggers/actions/list-automations.js +72 -0
  336. package/dist/triggers/actions/list-automations.js.map +1 -0
  337. package/dist/triggers/actions/manage-automation.d.ts +18 -0
  338. package/dist/triggers/actions/manage-automation.d.ts.map +1 -0
  339. package/dist/triggers/actions/manage-automation.js +60 -0
  340. package/dist/triggers/actions/manage-automation.js.map +1 -0
  341. package/docs/content/a2a-protocol.mdx +42 -0
  342. package/docs/content/agent-surfaces.mdx +43 -0
  343. package/docs/content/external-agents.mdx +11 -0
  344. package/docs/content/locales/ar-SA/a2a-protocol.mdx +42 -0
  345. package/docs/content/locales/ar-SA/agent-surfaces.mdx +30 -0
  346. package/docs/content/locales/ar-SA/external-agents.mdx +9 -0
  347. package/docs/content/locales/de-DE/a2a-protocol.mdx +42 -0
  348. package/docs/content/locales/de-DE/agent-surfaces.mdx +34 -0
  349. package/docs/content/locales/de-DE/external-agents.mdx +10 -0
  350. package/docs/content/locales/es-ES/a2a-protocol.mdx +42 -0
  351. package/docs/content/locales/es-ES/agent-surfaces.mdx +34 -0
  352. package/docs/content/locales/es-ES/external-agents.mdx +10 -0
  353. package/docs/content/locales/fr-FR/a2a-protocol.mdx +42 -0
  354. package/docs/content/locales/fr-FR/agent-surfaces.mdx +34 -0
  355. package/docs/content/locales/fr-FR/external-agents.mdx +11 -0
  356. package/docs/content/locales/hi-IN/a2a-protocol.mdx +42 -0
  357. package/docs/content/locales/hi-IN/agent-surfaces.mdx +31 -0
  358. package/docs/content/locales/hi-IN/external-agents.mdx +9 -0
  359. package/docs/content/locales/ja-JP/a2a-protocol.mdx +42 -0
  360. package/docs/content/locales/ja-JP/agent-surfaces.mdx +32 -0
  361. package/docs/content/locales/ja-JP/external-agents.mdx +10 -0
  362. package/docs/content/locales/ko-KR/a2a-protocol.mdx +42 -0
  363. package/docs/content/locales/ko-KR/agent-surfaces.mdx +32 -0
  364. package/docs/content/locales/ko-KR/external-agents.mdx +9 -0
  365. package/docs/content/locales/pt-BR/a2a-protocol.mdx +42 -0
  366. package/docs/content/locales/pt-BR/agent-surfaces.mdx +33 -0
  367. package/docs/content/locales/pt-BR/external-agents.mdx +10 -0
  368. package/docs/content/locales/zh-CN/a2a-protocol.mdx +42 -0
  369. package/docs/content/locales/zh-CN/agent-surfaces.mdx +29 -0
  370. package/docs/content/locales/zh-CN/external-agents.mdx +8 -0
  371. package/docs/content/locales/zh-TW/a2a-protocol.mdx +42 -0
  372. package/docs/content/locales/zh-TW/agent-surfaces.mdx +29 -0
  373. package/docs/content/locales/zh-TW/external-agents.mdx +8 -0
  374. package/package.json +1 -1
  375. package/src/templates/default/app/routes/_index.tsx +11 -0
  376. package/src/templates/default/app/routes/agent.tsx +33 -0
  377. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
  378. package/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +59 -0
  379. package/src/templates/workspace-core/.agents/skills/context-xray/SKILL.md +25 -0
  380. package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +7 -0
  381. package/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +9 -0
package/corpus/README.md CHANGED
@@ -27,5 +27,5 @@ rg -n "defineAction|useActionQuery" node_modules/@agent-native/core/corpus
27
27
 
28
28
  ## Generated Counts
29
29
 
30
- - core files: 2241
31
- - template files: 5551
30
+ - core files: 2255
31
+ - template files: 5582
@@ -1,5 +1,26 @@
1
1
  # @agent-native/core
2
2
 
3
+ ## 0.100.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 8e6f022: Add an Agent Jobs page tab for recurring jobs and personal automations, with scoped status views and management controls.
8
+ - 8e6f022: Add the full-page Agent surface with scoped Context, Files, Connections, Jobs, and Access tabs, plus shared MCP connection guidance.
9
+ - 8e6f022: Expose system-prompt sections in Context X-Ray and add a no-thread context preview with provenance, governance, and token breakdowns.
10
+
11
+ ### Patch Changes
12
+
13
+ - 8e6f022: Document the full-page Agent surface, its tab responsibilities, and the in-app external-client Access flow.
14
+ - 8e6f022: Align fullscreen chat thread width with the composer width.
15
+ - 8e6f022: Preserve the registered root Google OAuth callback for workspace apps when deploy-time workspace metadata is available but a runtime relay flag is missing.
16
+ - 8e6f022: Recover reasoning-only model completions before app-specific final-answer guards run, and keep guards anchored to the original user request across internal continuations.
17
+
18
+ ## 0.99.3
19
+
20
+ ### Patch Changes
21
+
22
+ - 03cd25c: Document the `agent-native invoke` CLI usage and flags on the A2A protocol docs page, across all locales.
23
+
3
24
  ## 0.99.2
4
25
 
5
26
  ### Patch Changes
@@ -392,6 +392,48 @@ app environment and pass the caller identity (`userEmail`) so outbound calls are
392
392
  signed as JWT bearer tokens. Use `apiKeyEnv` only for legacy external peers that
393
393
  expect a static bearer token. Use local actions instead of invoking yourself.
394
394
 
395
+ ## CLI: agent-native invoke {#cli-invoke}
396
+
397
+ `agent-native invoke` is a thin CLI wrapper over the same resolve-and-call primitive as `agentNative.invoke()`. Use it to trigger an app's agent from a shell script, a CI job, a cron entry, or any external system that can shell out — the CLI equivalent of posting to `/_agent-native/a2a` by hand.
398
+
399
+ ```bash
400
+ agent-native invoke <app-or-url> "prompt" [options]
401
+ ```
402
+
403
+ ```bash
404
+ # Resolve "analytics" in the workspace registry and wait for the reply
405
+ agent-native invoke analytics "Summarize signups by source this month"
406
+
407
+ # Call a deployed app directly by URL, reading the bearer token from env
408
+ agent-native invoke https://analytics.example.com "How many signups last week?" \
409
+ --api-key-env ANALYTICS_A2A_KEY
410
+
411
+ # Force one blocking message/send instead of the default async+poll
412
+ agent-native invoke analytics "Quick lookup" --sync
413
+
414
+ # Machine-readable output for scripting
415
+ agent-native invoke analytics "Summarize signups" --json
416
+ ```
417
+
418
+ | Option | Description |
419
+ | ------------------------- | ------------------------------------------------------------------------- |
420
+ | `--agent <id\|name\|url>` | Target agent (alias for the positional `<app-or-url>`) |
421
+ | `--message <text>` | Prompt (alias for the positional `"prompt"`) |
422
+ | `--api-key-env <name>` | Read the bearer token from an environment variable |
423
+ | `--api-key <token>` | Bearer token value, passed inline |
424
+ | `--context-id <id>` | A2A `contextId`, to continue an existing task's conversation |
425
+ | `--self-app-id <id>` | Current app id, used for self-call prevention |
426
+ | `--self-url <url>` | Current app URL, used for self-call prevention |
427
+ | `--timeout-ms <n>` | Async polling timeout |
428
+ | `--poll-interval-ms <n>` | Async polling interval |
429
+ | `--sync` | Use one blocking `message/send` request instead of the async+poll default |
430
+ | `--no-hint` | Send the prompt as-is, without the cross-app invocation hint |
431
+ | `--json` | Print target metadata and response text as JSON |
432
+
433
+ Like `callAgent()`, the CLI defaults to async + poll (`invokeAgent` → `callAgent` under the hood), which is the safe choice against hosted/serverless targets — see [Serverless webhook and gateway timeouts](#json-rpc-methods) above. Pass `--sync` only when you know the target isn't behind a gateway with a short execution limit.
434
+
435
+ The target resolves the same way as `agentNative.invoke()`: by workspace app id, by app name, or by a full URL — so the same command works against a sibling app in a multi-app workspace or an arbitrary A2A peer elsewhere.
436
+
395
437
  ## Task lifecycle {#task-lifecycle}
396
438
 
397
439
  Each message creates a task that moves through these states:
@@ -29,6 +29,49 @@ start in chat, appear as a native table or chart, become a durable page in the
29
29
  app, and still run from jobs, scripts, MCP, or A2A without changing the operation
30
30
  the agent calls.
31
31
 
32
+ ## Full-page Agent workspace {#agent-page}
33
+
34
+ When a full application needs a durable place to inspect and configure its
35
+ agent, mount `AgentTabsPage` at `/agent`. Current templates pair that route
36
+ with an app-navigation entry and pass `agentPageHref="/agent"` to
37
+ `AgentSidebar`; the sidebar's Resources and Settings modes can then link to the
38
+ full page without duplicating those flows.
39
+
40
+ ```tsx filename="app/routes/agent.tsx"
41
+ import { AgentTabsPage } from "@agent-native/core/client";
42
+
43
+ export default function AgentRoute() {
44
+ return <AgentTabsPage />;
45
+ }
46
+ ```
47
+
48
+ The shared page currently provides five tabs:
49
+
50
+ - **Context** shows a scope preview, token budget, ordered system sections
51
+ grouped by provenance, governance, and source, a list/treemap view, and the
52
+ latest live-thread snapshot. It is a current snapshot, not per-iteration
53
+ provenance history.
54
+ - **Files** re-hosts the existing `ResourcesPanel` for personal or
55
+ organization resources.
56
+ - **Connections** re-hosts MCP server management and the A2A remote-agent list:
57
+ what this app's agent can call.
58
+ - **Jobs** shows scoped recurring jobs and automations with the existing
59
+ pause/resume, details, and delete flows. Automations are personal-only today.
60
+ - **Access** shows the app MCP URL, an A2A agent card when available, and shared
61
+ setup guides for Claude, ChatGPT, Cursor, Claude Code, Codex, and other
62
+ clients. It links to `/mcp/connect` for the full connect flow and token
63
+ fallback.
64
+
65
+ The page-level **Personal / Organization** toggle supplies scope to the tabs.
66
+ Members can inspect organization data while organization management remains
67
+ restricted to owners/admins where the hosted component enforces that boundary.
68
+ The design goal is inspectable, attributable, governable context, with
69
+ capability separated from access: Connections describes what the app can call;
70
+ Access describes how external clients connect to it. The page is a thin shell
71
+ over existing components, actions, and access checks—not a new admin console.
72
+ Grants, scope editing, revocation UI, and per-iteration provenance history are
73
+ not provided by this page yet.
74
+
32
75
  <Diagram id="doc-block-hvdxgh" title="The surface spectrum" summary={"One action surface, four product shapes — each adds UI without changing the operation underneath."}>
33
76
 
34
77
  ```html
@@ -118,6 +118,17 @@ Every hosted app also has a helper page at
118
118
  `https://&lt;app&gt;/mcp/connect` with the copyable URL and
119
119
  host-specific tabs for Claude, ChatGPT, Cursor, Claude Code, Codex, and Other.
120
120
 
121
+ ### The in-app Access tab {#access-tab}
122
+
123
+ Apps that mount `AgentTabsPage` also expose this connection flow in the page's
124
+ **Access** tab. It shows the app's MCP URL, an A2A agent card when available,
125
+ and the same client setup instructions used by the full connect page. Use it as
126
+ the in-app starting point for connecting Claude, ChatGPT, Cursor, Claude Code,
127
+ Codex, or another MCP client; the tab links to `/mcp/connect` for the full flow
128
+ and static-token fallback. This is connection setup UI, not a general access
129
+ control console: grants, scope editing, and revocation management are not
130
+ implemented in the tab yet.
131
+
121
132
  ### Claude and ChatGPT OAuth {#oauth}
122
133
 
123
134
  Claude / Claude Desktop: add a custom connector, paste the MCP URL, click
@@ -384,6 +384,48 @@ console.log(`Called ${result.target.name}: ${result.responseText}`);
384
384
  تم التوقيع عليها كرموز حاملة JWT. استخدم `apiKeyEnv` فقط للأقران الخارجيين القدامى الذين
385
385
  توقع رمزًا مميزًا لحامل ثابت. استخدم actions المحلي بدلاً من استدعاء نفسك.
386
386
 
387
+ ## واجهة سطر الأوامر: agent-native invoke {#cli-invoke}
388
+
389
+ `agent-native invoke` عبارة عن غلاف رفيع لواجهة سطر الأوامر فوق نفس بدائية الحل والاستدعاء التي تستخدمها `agentNative.invoke()`. استخدمه لتشغيل وكيل أحد التطبيقات من نص برمجي في shell، أو مهمة CI، أو إدخال cron، أو أي نظام خارجي يمكنه تنفيذ أوامر shell — وهو المكافئ عبر سطر الأوامر لإرسال طلب POST يدويًا إلى `/_agent-native/a2a`.
390
+
391
+ ```bash
392
+ agent-native invoke <app-or-url> "prompt" [options]
393
+ ```
394
+
395
+ ```bash
396
+ # حلّ "analytics" في سجل مساحة العمل وانتظر الرد
397
+ agent-native invoke analytics "Summarize signups by source this month"
398
+
399
+ # استدعِ تطبيقًا منشورًا مباشرةً عبر عنوان URL، مع قراءة رمز الحامل من متغير بيئة
400
+ agent-native invoke https://analytics.example.com "How many signups last week?" \
401
+ --api-key-env ANALYTICS_A2A_KEY
402
+
403
+ # فرض طلب message/send حاجز واحد بدلاً من الوضع الافتراضي async+poll
404
+ agent-native invoke analytics "Quick lookup" --sync
405
+
406
+ # إخراج قابل للقراءة الآلية للبرمجة النصية
407
+ agent-native invoke analytics "Summarize signups" --json
408
+ ```
409
+
410
+ | Option | الوصف |
411
+ | ------------------------- | ------------------------------------------------------------------------ |
412
+ | `--agent <id\|name\|url>` | الوكيل المستهدف (اسم بديل للوسيطة الموضعية `<app-or-url>`) |
413
+ | `--message <text>` | الطلب النصي (اسم بديل للوسيطة الموضعية `"prompt"`) |
414
+ | `--api-key-env <name>` | قراءة رمز الحامل (bearer token) من متغير بيئة |
415
+ | `--api-key <token>` | قيمة رمز الحامل، مُمرَّرة مباشرة |
416
+ | `--context-id <id>` | `contextId` الخاص بـ A2A، لمتابعة محادثة مهمة موجودة بالفعل |
417
+ | `--self-app-id <id>` | معرف التطبيق الحالي، يُستخدم لمنع الاستدعاء الذاتي |
418
+ | `--self-url <url>` | عنوان URL للتطبيق الحالي، يُستخدم لمنع الاستدعاء الذاتي |
419
+ | `--timeout-ms <n>` | مهلة الاستطلاع (polling) غير المتزامن |
420
+ | `--poll-interval-ms <n>` | فاصل الاستطلاع غير المتزامن |
421
+ | `--sync` | استخدام طلب `message/send` حاجب واحد بدلاً من الوضع الافتراضي async+poll |
422
+ | `--no-hint` | إرسال الطلب النصي كما هو، دون تلميح الاستدعاء بين التطبيقات |
423
+ | `--json` | طباعة بيانات الهدف الوصفية ونص الاستجابة بصيغة JSON |
424
+
425
+ مثل `callAgent()`، تعتمد واجهة سطر الأوامر افتراضيًا على async + poll (`invokeAgent` ← `callAgent` تحت الغطاء)، وهو الخيار الآمن عند استهداف بيئات مستضافة/serverless — انظر [مهلات بوابة الويب هوك وبوابة العبور بلا خادم](#json-rpc-methods) أعلاه. استخدم `--sync` فقط عندما تكون متأكدًا أن الهدف ليس خلف بوابة ذات مهلة تنفيذ قصيرة.
426
+
427
+ يتم حل الهدف بنفس طريقة `agentNative.invoke()`: عبر معرف تطبيق مساحة العمل، أو اسم التطبيق، أو عنوان URL كامل — لذا يعمل نفس الأمر مع تطبيق شقيق في مساحة عمل متعددة التطبيقات أو مع أي نظير A2A تعسفي في مكان آخر.
428
+
387
429
  ## دورة حياة المهمة {#task-lifecycle}
388
430
 
389
431
  تنشئ كل رسالة مهمة تنتقل عبر هذه الحالات:
@@ -6,6 +6,36 @@ search: "التطبيق الكامل للدردشة الغنية للوكيل م
6
6
 
7
7
  # أسطح الوكيل
8
8
 
9
+ ## مساحة عمل Agent الكاملة {#agent-page}
10
+
11
+ عندما يحتاج التطبيق الكامل إلى مكان دائم لفحص وكيله وتهيئته، اربط
12
+ `AgentTabsPage` بالمسار `/agent`. أضف المسار إلى تنقل التطبيق ومرر
13
+ `agentPageHref="/agent"` إلى `AgentSidebar` كي تصل وضعيّتا Resources وSettings
14
+ إلى الصفحة الكاملة من دون تكرار التدفقات.
15
+
16
+ ```tsx filename="app/routes/agent.tsx"
17
+ import { AgentTabsPage } from "@agent-native/core/client";
18
+
19
+ export default function AgentRoute() {
20
+ return <AgentTabsPage />;
21
+ }
22
+ ```
23
+
24
+ تحتوي الصفحة المشتركة حاليًا على خمس علامات تبويب:
25
+
26
+ - **Context** — معاينة النطاق، وميزانية الرموز، وأقسام النظام المرتبة مع مصدرها وحوكمتها، وعرض القائمة أو الخريطة، وأحدث لقطة للمحادثة الحية.
27
+ - **Files** — يعيد استخدام `ResourcesPanel` للموارد الشخصية أو الخاصة بالمؤسسة.
28
+ - **Connections** — إدارة خوادم MCP وقائمة الوكلاء البعيدين عبر A2A؛ أي ما يستطيع وكيل التطبيق استدعاءه.
29
+ - **Jobs** — الوظائف المتكررة والأتمتة مع تدفقات الإيقاف والاستئناف والتفاصيل والحذف الموجودة. الأتمتة شخصية اليوم.
30
+ - **Access** — عنوان MCP وبطاقة وكيل A2A عند توفرها وتعليمات إعداد العملاء الخارجيين؛ ويربط بالمسار `/mcp/connect` للتدفق الكامل والرمز الاحتياطي.
31
+
32
+ يحدد مفتاح **Personal / Organization** نطاق علامات التبويب. يمكن للأعضاء فحص
33
+ بيانات المؤسسة، بينما تظل إدارة المؤسسة مقصورة على المالكين/المسؤولين حيث يفرض
34
+ المكوّن المستضاف هذا الحد. الهدف هو جعل
35
+ السياق قابلًا للفحص ونسبته وحوكمته، مع فصل القدرة عما يتعلق بالوصول. الصفحة
36
+ غلاف رقيق للمكونات والإجراءات وفحوصات الوصول الموجودة، وليست لوحة إدارة جديدة.
37
+ ولا توفر حاليًا واجهة لإدارة المنح أو النطاقات أو الإلغاء، ولا سجل مصدر لكل تكرار.
38
+
9
39
  Agent-Native قابل للتأليف بشكل متعمد. يمكنك استخدام الوكيل بدون الكثير من UI،
10
40
  استخدم UI بدون وقت تشغيل الوكيل المضمن، أو استخدمهما معًا بشكل كامل
11
41
  التطبيق.
@@ -117,6 +117,15 @@ https://<your-app>.agent-native.com/mcp
117
117
  `https://&lt;app&gt;/mcp/connect` مع URL القابل للنسخ و
118
118
  علامات التبويب الخاصة بالمضيف لـ Claude، وChatGPT، والمؤشر، وClaude Code، وCodex، وغيرها.
119
119
 
120
+ ### علامة التبويب Access داخل التطبيق {#access-tab}
121
+
122
+ تعرض التطبيقات التي تستخدم `AgentTabsPage` تدفق الاتصال نفسه في علامة تبويب
123
+ **Access**. وهي تعرض عنوان MCP، وبطاقة وكيل A2A عند توفرها، وتعليمات إعداد
124
+ Claude وChatGPT وCursor وClaude Code وCodex والعملاء الآخرين. استخدمها كنقطة
125
+ البداية داخل التطبيق، ثم افتح `/mcp/connect` للتدفق الكامل والرمز الاحتياطي.
126
+ هذه واجهة لإعداد الاتصال وليست وحدة تحكم عامة بالوصول؛ لا توفر علامة التبويب
127
+ بعد واجهة لإدارة المنح أو النطاقات أو الإلغاء.
128
+
120
129
  ### Claude وChatGPT OAuth {#oauth}
121
130
 
122
131
  Claude / Claude سطح المكتب: أضف موصلًا مخصصًا، والصق MCP URL، وانقر على
@@ -386,6 +386,48 @@ App-Umgebung und übergeben Sie die Anruferidentität (`userEmail`), sodass ausg
386
386
  signiert als JWT-Inhaber-Token. Verwenden Sie `apiKeyEnv` nur für ältere externe Peers, die
387
387
  erwarten Sie ein statisches Inhabertoken. Verwenden Sie lokales actions, anstatt sich selbst aufzurufen.
388
388
 
389
+ ## CLI: agent-native invoke {#cli-invoke}
390
+
391
+ `agent-native invoke` ist ein schlanker CLI-Wrapper über dieselbe Resolve-and-Call-Primitive wie `agentNative.invoke()`. Verwenden Sie es, um den Agenten einer App aus einem Shell-Skript, einem CI-Job, einem Cron-Eintrag oder einem beliebigen externen System auszulösen, das Befehle ausführen kann — das CLI-Äquivalent zum manuellen Posten an `/_agent-native/a2a`.
392
+
393
+ ```bash
394
+ agent-native invoke <app-or-url> "prompt" [options]
395
+ ```
396
+
397
+ ```bash
398
+ # "analytics" in der Workspace-Registry auflösen und auf die Antwort warten
399
+ agent-native invoke analytics "Summarize signups by source this month"
400
+
401
+ # Eine bereitgestellte App direkt per URL aufrufen und das Bearer-Token aus der Umgebung lesen
402
+ agent-native invoke https://analytics.example.com "How many signups last week?" \
403
+ --api-key-env ANALYTICS_A2A_KEY
404
+
405
+ # Eine einzelne blockierende message/send-Anfrage erzwingen statt des standardmäßigen Async+Poll
406
+ agent-native invoke analytics "Quick lookup" --sync
407
+
408
+ # Maschinenlesbare Ausgabe für Skripting
409
+ agent-native invoke analytics "Summarize signups" --json
410
+ ```
411
+
412
+ | Option | Beschreibung |
413
+ | ------------------------- | ------------------------------------------------------------------------------------ |
414
+ | `--agent <id\|name\|url>` | Ziel-Agent (Alias für das positionelle `<app-or-url>`) |
415
+ | `--message <text>` | Prompt (Alias für das positionelle `"prompt"`) |
416
+ | `--api-key-env <name>` | Liest das Bearer-Token aus einer Umgebungsvariable |
417
+ | `--api-key <token>` | Bearer-Token-Wert, inline übergeben |
418
+ | `--context-id <id>` | A2A-`contextId`, um die Konversation einer bestehenden Aufgabe fortzusetzen |
419
+ | `--self-app-id <id>` | Aktuelle App-ID, verwendet zur Selbstaufruf-Vermeidung |
420
+ | `--self-url <url>` | Aktuelle App-URL, verwendet zur Selbstaufruf-Vermeidung |
421
+ | `--timeout-ms <n>` | Timeout für Async-Polling |
422
+ | `--poll-interval-ms <n>` | Intervall für Async-Polling |
423
+ | `--sync` | Eine blockierende `message/send`-Anfrage anstelle des Async+Poll-Standards verwenden |
424
+ | `--no-hint` | Den Prompt unverändert senden, ohne den App-übergreifenden Aufruf-Hinweis |
425
+ | `--json` | Zielmetadaten und Antworttext als JSON ausgeben |
426
+
427
+ Wie `callAgent()` verwendet die CLI standardmäßig Async + Poll (`invokeAgent` → `callAgent` unter der Haube), was die sichere Wahl gegenüber gehosteten/serverlosen Zielen ist — siehe [Serverless-Webhook- und Gateway-Timeouts](#json-rpc-methods) oben. Übergeben Sie `--sync` nur, wenn Sie wissen, dass sich das Ziel nicht hinter einem Gateway mit kurzem Ausführungslimit befindet.
428
+
429
+ Das Ziel wird auf die gleiche Weise aufgelöst wie bei `agentNative.invoke()`: über die Workspace-App-ID, den App-Namen oder eine vollständige URL — sodass derselbe Befehl sowohl gegen eine Geschwister-App in einem Multi-App-Workspace als auch gegen einen beliebigen A2A-Peer anderswo funktioniert.
430
+
389
431
  ## Aufgabenlebenszyklus {#task-lifecycle}
390
432
 
391
433
  Jede Nachricht erstellt eine Aufgabe, die diese Zustände durchläuft:
@@ -6,6 +6,40 @@ search: "Headless Agent Rich Chat, vollständige App BYO Agent Runtime AgentChat
6
6
 
7
7
  # Agentenoberflächen
8
8
 
9
+ ## Vollständiger Agent-Arbeitsbereich {#agent-page}
10
+
11
+ Wenn eine vollständige Anwendung einen dauerhaften Ort zum Prüfen und
12
+ Konfigurieren ihres Agents braucht, binde `AgentTabsPage` unter `/agent` ein.
13
+ Füge die Route zur App-Navigation hinzu und übergib `agentPageHref="/agent"` an
14
+ `AgentSidebar`, damit die Modi Resources und Settings auf die vollständige
15
+ Seite verweisen können, ohne diese Abläufe zu duplizieren.
16
+
17
+ ```tsx filename="app/routes/agent.tsx"
18
+ import { AgentTabsPage } from "@agent-native/core/client";
19
+
20
+ export default function AgentRoute() {
21
+ return <AgentTabsPage />;
22
+ }
23
+ ```
24
+
25
+ Die gemeinsame Seite bietet derzeit fünf Tabs:
26
+
27
+ - **Context** — Bereichsvorschau, Tokenbudget, geordnete Systemabschnitte mit Herkunft und Governance, Listen-/Treemap-Ansicht und der aktuelle Live-Thread-Snapshot.
28
+ - **Files** — verwendet `ResourcesPanel` für persönliche oder organisationsweite Ressourcen wieder.
29
+ - **Connections** — MCP-Serververwaltung und A2A-Liste entfernter Agents: was der Agent dieser App aufrufen kann.
30
+ - **Jobs** — wiederkehrende Jobs und Automatisierungen mit den vorhandenen Abläufen zum Pausieren/Fortsetzen, für Details und zum Löschen. Automatisierungen sind derzeit persönlich.
31
+ - **Access** — MCP-URL, eine A2A-Agent-Card wenn verfügbar, und gemeinsame Einrichtungsanleitungen; die vollständige Verbindung und den Token-Fallback gibt es unter `/mcp/connect`.
32
+
33
+ Der Umschalter **Personal / Organization** gibt den Tabs ihren Bereich.
34
+ Mitglieder können Organisationsdaten einsehen; die Organisationsverwaltung
35
+ bleibt dort, wo die gehostete Komponente diese Grenze durchsetzt, auf
36
+ Inhaber/Administratoren beschränkt. Das Ziel
37
+ sind prüfbarer, zuordenbarer und steuerbarer Kontext sowie eine klare Trennung
38
+ zwischen Fähigkeit und Zugriff. Die Seite ist eine dünne Hülle um vorhandene
39
+ Komponenten, Actions und Zugriffskontrollen, keine neue Admin-Konsole. Grants,
40
+ Bereichsänderung, Widerruf und Verlauf der Provenienz pro Iteration sind hier
41
+ noch nicht verfügbar.
42
+
9
43
  Agent-Native ist bewusst zusammensetzbar. Sie können den Agenten ohne großen Aufwand verwenden UI,
10
44
  Verwenden Sie UI ohne die integrierte Agent-Laufzeit oder verwenden Sie beide zusammen als Vollversion
11
45
  Anwendung.
@@ -117,6 +117,16 @@ Jede gehostete App verfügt auch über eine Hilfsseite unter
117
117
  `https://&lt;app&gt;/mcp/connect` mit dem kopierbaren URL und
118
118
  hostspezifische Registerkarten für Claude, ChatGPT, Cursor, Claude-Code, Codex und Andere.
119
119
 
120
+ ### Der In-App-Tab Access {#access-tab}
121
+
122
+ Apps, die `AgentTabsPage` einbinden, stellen denselben Verbindungsablauf im Tab
123
+ **Access** bereit. Er zeigt die MCP-URL, bei Verfügbarkeit eine A2A-Agent-Card
124
+ und die gemeinsamen Einrichtungsanleitungen für Claude, ChatGPT, Cursor, Claude
125
+ Code, Codex und andere Clients. Beginnen Sie dort und öffnen Sie `/mcp/connect`
126
+ für den vollständigen Ablauf und den Token-Fallback. Dies ist eine Oberfläche
127
+ für die Verbindungseinrichtung, keine allgemeine Zugriffskonsole; Grants,
128
+ Bereichsänderung und Widerruf werden in diesem Tab noch nicht verwaltet.
129
+
120
130
  ### Claude und ChatGPT OAuth {#oauth}
121
131
 
122
132
  Claude / Claude Desktop: Fügen Sie einen benutzerdefinierten Connector hinzu, fügen Sie MCP URL ein und klicken Sie auf
@@ -386,6 +386,48 @@ entorno de la aplicación y pasar la identidad de la persona que llama (`userEma
386
386
  firmado como tokens al portador JWT. Utilice `apiKeyEnv` solo para pares externos heredados que
387
387
  espera un token de portador estático. Utilice actions local en lugar de invocarse a sí mismo.
388
388
 
389
+ ## CLI: agent-native invoke {#cli-invoke}
390
+
391
+ `agent-native invoke` es un envoltorio de CLI ligero sobre la misma primitiva de resolución e invocación que `agentNative.invoke()`. Úselo para activar el agente de una aplicación desde un script de shell, un job de CI, una entrada de cron, o cualquier sistema externo que pueda ejecutar comandos — el equivalente en CLI de hacer un POST manual a `/_agent-native/a2a`.
392
+
393
+ ```bash
394
+ agent-native invoke <app-or-url> "prompt" [options]
395
+ ```
396
+
397
+ ```bash
398
+ # Resuelve "analytics" en el registro del espacio de trabajo y espera la respuesta
399
+ agent-native invoke analytics "Summarize signups by source this month"
400
+
401
+ # Llama directamente a una aplicación desplegada por URL, leyendo el token de portador desde una variable de entorno
402
+ agent-native invoke https://analytics.example.com "How many signups last week?" \
403
+ --api-key-env ANALYTICS_A2A_KEY
404
+
405
+ # Fuerza un único message/send bloqueante en lugar del valor predeterminado async+poll
406
+ agent-native invoke analytics "Quick lookup" --sync
407
+
408
+ # Salida legible por máquina para scripting
409
+ agent-native invoke analytics "Summarize signups" --json
410
+ ```
411
+
412
+ | Option | Description |
413
+ | ------------------------- | ---------------------------------------------------------------------------------------------- |
414
+ | `--agent <id\|name\|url>` | Agente de destino (alias del argumento posicional `<app-or-url>`) |
415
+ | `--message <text>` | Prompt (alias del argumento posicional `"prompt"`) |
416
+ | `--api-key-env <name>` | Lee el token de portador desde una variable de entorno |
417
+ | `--api-key <token>` | Valor del token de portador, pasado en línea |
418
+ | `--context-id <id>` | `contextId` de A2A, para continuar la conversación de una tarea existente |
419
+ | `--self-app-id <id>` | ID de la aplicación actual, usado para prevenir autoinvocación |
420
+ | `--self-url <url>` | URL de la aplicación actual, usada para prevenir autoinvocación |
421
+ | `--timeout-ms <n>` | Tiempo de espera del sondeo asíncrono |
422
+ | `--poll-interval-ms <n>` | Intervalo de sondeo asíncrono |
423
+ | `--sync` | Usa una única solicitud `message/send` bloqueante en lugar del valor predeterminado async+poll |
424
+ | `--no-hint` | Envía el prompt tal cual, sin la sugerencia de invocación entre aplicaciones |
425
+ | `--json` | Imprime los metadatos del destino y el texto de respuesta como JSON |
426
+
427
+ Al igual que `callAgent()`, la CLI usa de forma predeterminada async + poll (`invokeAgent` → `callAgent` internamente), que es la opción segura frente a destinos alojados/serverless — vea [Tiempos de espera de webhooks y gateways serverless](#json-rpc-methods) más arriba. Pase `--sync` solo cuando sepa que el destino no está detrás de un gateway con un límite de ejecución corto.
428
+
429
+ El destino se resuelve de la misma manera que `agentNative.invoke()`: por ID de aplicación del espacio de trabajo, por nombre de aplicación, o por una URL completa — así que el mismo comando funciona contra una aplicación hermana en un espacio de trabajo multiaplicación o contra un par A2A arbitrario en otro lugar.
430
+
389
431
  ## Ciclo de vida de la tarea {#task-lifecycle}
390
432
 
391
433
  Cada mensaje crea una tarea que pasa por estos estados:
@@ -6,6 +6,40 @@ search: "aplicación completa de chat enriquecido de agente sin cabeza BYO tiemp
6
6
 
7
7
  # Superficies de agentes
8
8
 
9
+ ## Espacio de trabajo completo del agente {#agent-page}
10
+
11
+ Cuando una aplicación completa necesita un lugar permanente para inspeccionar y
12
+ configurar su agente, monta `AgentTabsPage` en `/agent`. Añade la ruta a la
13
+ navegación de la aplicación y pasa `agentPageHref="/agent"` a `AgentSidebar` para
14
+ que los modos Resources y Settings enlacen a la página completa sin duplicar
15
+ estos flujos.
16
+
17
+ ```tsx filename="app/routes/agent.tsx"
18
+ import { AgentTabsPage } from "@agent-native/core/client";
19
+
20
+ export default function AgentRoute() {
21
+ return <AgentTabsPage />;
22
+ }
23
+ ```
24
+
25
+ La página compartida ofrece actualmente cinco pestañas:
26
+
27
+ - **Context** — vista previa del ámbito, presupuesto de tokens, secciones de sistema ordenadas con procedencia y gobierno, vista de lista/treemap y la instantánea del hilo activo más reciente.
28
+ - **Files** — vuelve a alojar `ResourcesPanel` para recursos personales o de la organización.
29
+ - **Connections** — gestión de servidores MCP y lista de agentes remotos A2A: lo que puede llamar el agente de esta aplicación.
30
+ - **Jobs** — trabajos recurrentes y automatizaciones con los flujos existentes de pausar/reanudar, detalles y borrar. Las automatizaciones son personales por ahora.
31
+ - **Access** — URL de MCP, tarjeta de agente A2A cuando existe y guías de configuración compartidas; el flujo completo y el token alternativo están en `/mcp/connect`.
32
+
33
+ El selector **Personal / Organization** proporciona el ámbito a las pestañas.
34
+ Los miembros pueden inspeccionar los datos de la organización, mientras que su
35
+ administración sigue restringida a propietarios/administradores donde el
36
+ componente alojado impone ese límite. El
37
+ objetivo es que el contexto sea inspeccionable, atribuible y gobernable, y
38
+ separar capacidad de acceso. La página es una capa fina sobre componentes,
39
+ acciones y comprobaciones existentes, no una nueva consola de administración.
40
+ Todavía no ofrece interfaz para grants, edición de ámbitos, revocación ni
41
+ historial de procedencia por iteración.
42
+
9
43
  Agent-Native es deliberadamente componible. Puedes utilizar el agente sin mucho UI,
10
44
  use el UI sin el tiempo de ejecución del agente integrado, o use ambos juntos como un completo
11
45
  solicitud.
@@ -117,6 +117,16 @@ Cada aplicación alojada también tiene una página de ayuda en
117
117
  `https://&lt;app&gt;/mcp/connect` con el URL copiable y
118
118
  pestañas específicas del host para Claude, ChatGPT, Cursor, Código Claude, Codex y Otros.
119
119
 
120
+ ### Pestaña Access dentro de la aplicación {#access-tab}
121
+
122
+ Las aplicaciones que montan `AgentTabsPage` ofrecen el mismo flujo de conexión
123
+ en la pestaña **Access**. Muestra la URL de MCP, una tarjeta del agente A2A si
124
+ está disponible y las guías compartidas para Claude, ChatGPT, Cursor, Claude
125
+ Code, Codex y otros clientes. Úsala como punto de partida dentro de la app y
126
+ abre `/mcp/connect` para el flujo completo y el token alternativo. Es una
127
+ interfaz de configuración de conexión, no una consola general de acceso: la
128
+ pestaña todavía no gestiona grants, edición de ámbitos ni revocación.
129
+
120
130
  ### Claude y ChatGPT OAuth {#oauth}
121
131
 
122
132
  Escritorio Claude / Claude: agregue un conector personalizado, pegue el MCP URL, haga clic
@@ -384,6 +384,48 @@ environnement d'application et transmettre l'identité de l'appelant (`userEmail
384
384
  signé en tant que jetons au porteur JWT. Utilisez `apiKeyEnv` uniquement pour les anciens homologues externes qui
385
385
  attendez-vous à un jeton de porteur statique. Utilisez actions local au lieu de vous invoquer.
386
386
 
387
+ ## CLI : agent-native invoke {#cli-invoke}
388
+
389
+ `agent-native invoke` est un mince wrapper CLI au-dessus de la même primitive de résolution et d'appel que `agentNative.invoke()`. Utilisez-la pour déclencher l'agent d'une application depuis un script shell, un job CI, une entrée cron, ou tout système externe capable de lancer une commande shell — l'équivalent CLI d'un POST manuel vers `/_agent-native/a2a`.
390
+
391
+ ```bash
392
+ agent-native invoke <app-or-url> "prompt" [options]
393
+ ```
394
+
395
+ ```bash
396
+ # Résoudre "analytics" dans le registre de l'espace de travail et attendre la réponse
397
+ agent-native invoke analytics "Summarize signups by source this month"
398
+
399
+ # Appeler une application déployée directement par URL, en lisant le jeton au porteur depuis l'environnement
400
+ agent-native invoke https://analytics.example.com "How many signups last week?" \
401
+ --api-key-env ANALYTICS_A2A_KEY
402
+
403
+ # Forcer un seul message/send bloquant au lieu du mode async+poll par défaut
404
+ agent-native invoke analytics "Quick lookup" --sync
405
+
406
+ # Sortie exploitable par machine pour le scripting
407
+ agent-native invoke analytics "Summarize signups" --json
408
+ ```
409
+
410
+ | Option | Description |
411
+ | ------------------------- | ---------------------------------------------------------------------------------------- |
412
+ | `--agent <id\|name\|url>` | Agent cible (alias de l'argument positionnel `<app-or-url>`) |
413
+ | `--message <text>` | Prompt (alias de l'argument positionnel `"prompt"`) |
414
+ | `--api-key-env <name>` | Lit le jeton au porteur depuis une variable d'environnement |
415
+ | `--api-key <token>` | Valeur du jeton au porteur, passée directement |
416
+ | `--context-id <id>` | `contextId` A2A, pour poursuivre la conversation d'une tâche existante |
417
+ | `--self-app-id <id>` | Identifiant de l'application courante, utilisé pour éviter les auto-appels |
418
+ | `--self-url <url>` | URL de l'application courante, utilisée pour éviter les auto-appels |
419
+ | `--timeout-ms <n>` | Délai d'expiration du polling asynchrone |
420
+ | `--poll-interval-ms <n>` | Intervalle de polling asynchrone |
421
+ | `--sync` | Utilise une seule requête `message/send` bloquante au lieu du mode async+poll par défaut |
422
+ | `--no-hint` | Envoie le prompt tel quel, sans l'indice d'invocation inter-application |
423
+ | `--json` | Affiche les métadonnées de la cible et le texte de la réponse au format JSON |
424
+
425
+ Comme `callAgent()`, la CLI utilise par défaut le mode async + poll (`invokeAgent` → `callAgent` en interne), ce qui est le choix sûr face à des cibles hébergées/serverless — voir [Délais d'expiration des webhooks et passerelles serverless](#json-rpc-methods) ci-dessus. Ne passez `--sync` que lorsque vous savez que la cible n'est pas derrière une passerelle avec une limite d'exécution courte.
426
+
427
+ La cible se résout de la même manière que `agentNative.invoke()` : par identifiant d'application de l'espace de travail, par nom d'application, ou par une URL complète — la même commande fonctionne donc aussi bien contre une application sœur dans un espace de travail multi-applications que contre un pair A2A arbitraire ailleurs.
428
+
387
429
  ## Cycle de vie des tâches {#task-lifecycle}
388
430
 
389
431
  Chaque message crée une tâche qui passe par ces états :
@@ -6,6 +6,40 @@ search: "Application complète de chat enrichi d'agent sans tête BYO runtime d'
6
6
 
7
7
  # Surfaces des agents
8
8
 
9
+ ## Espace de travail Agent complet {#agent-page}
10
+
11
+ Lorsqu'une application complète a besoin d'un endroit durable pour inspecter et
12
+ configurer son agent, montez `AgentTabsPage` sur `/agent`. Ajoutez la route à la
13
+ navigation de l'application et passez `agentPageHref="/agent"` à
14
+ `AgentSidebar` afin que les modes Resources et Settings puissent ouvrir la page
15
+ complète sans dupliquer ces flux.
16
+
17
+ ```tsx filename="app/routes/agent.tsx"
18
+ import { AgentTabsPage } from "@agent-native/core/client";
19
+
20
+ export default function AgentRoute() {
21
+ return <AgentTabsPage />;
22
+ }
23
+ ```
24
+
25
+ La page partagée propose actuellement cinq onglets :
26
+
27
+ - **Context** — aperçu du périmètre, budget de tokens, sections système ordonnées avec provenance et gouvernance, vue liste/treemap et dernière capture du fil actif.
28
+ - **Files** — réutilise `ResourcesPanel` pour les ressources personnelles ou de l'organisation.
29
+ - **Connections** — gestion des serveurs MCP et liste des agents distants A2A : ce que l'agent de l'application peut appeler.
30
+ - **Jobs** — tâches récurrentes et automatisations avec les flux existants de pause/reprise, détails et suppression. Les automatisations sont personnelles pour le moment.
31
+ - **Access** — URL MCP, fiche d'agent A2A si disponible et guides de configuration partagés ; le flux complet et le repli par jeton sont disponibles sur `/mcp/connect`.
32
+
33
+ Le sélecteur **Personal / Organization** fournit le périmètre aux onglets. Les
34
+ membres peuvent inspecter les données de l'organisation, tandis que sa gestion
35
+ reste réservée aux propriétaires/administrateurs là où le composant hébergé
36
+ applique cette limite. Le
37
+ but est de rendre le contexte inspectable, attribuable et gouvernable, tout en
38
+ séparant capacité et accès. La page est une fine enveloppe autour des
39
+ composants, actions et contrôles existants, pas une nouvelle console
40
+ d'administration. Elle ne fournit pas encore d'interface pour les grants, la
41
+ modification du périmètre, la révocation ou l'historique de provenance par itération.
42
+
9
43
  Agent-Native est délibérément composable. Vous pouvez utiliser l'agent sans trop dépenser UI,
10
44
  utilisez le UI sans le runtime d'agent intégré, ou utilisez les deux ensemble comme un ensemble complet
11
45
  application.
@@ -117,6 +117,17 @@ Chaque application hébergée dispose également d'une page d'aide à l'adresse
117
117
  `https://&lt;app&gt;/mcp/connect` avec le URL copiable et
118
118
  Onglets spécifiques à l'hôte pour Claude, ChatGPT, Cursor, Claude Code, Codex et autres.
119
119
 
120
+ ### L'onglet Access dans l'application {#access-tab}
121
+
122
+ Les applications qui montent `AgentTabsPage` proposent le même flux de connexion
123
+ dans l'onglet **Access**. Il affiche l'URL MCP, une fiche d'agent A2A si elle est
124
+ disponible et les guides de configuration communs pour Claude, ChatGPT, Cursor,
125
+ Claude Code, Codex et les autres clients. Utilisez-le comme point de départ dans
126
+ l'application, puis ouvrez `/mcp/connect` pour le flux complet et le repli par
127
+ jeton. Il s'agit d'une interface de configuration, pas d'une console générale
128
+ d'accès : l'onglet ne gère pas encore les grants, la modification du périmètre
129
+ ou la révocation.
130
+
120
131
  ### Claude et ChatGPT OAuth {#oauth}
121
132
 
122
133
  Claude / Claude Desktop : ajoutez un connecteur personnalisé, collez le MCP URL, cliquez