@agent-native/core 0.108.0 → 0.109.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +25 -0
  3. package/corpus/core/package.json +1 -1
  4. package/corpus/core/src/a2a/client.ts +162 -17
  5. package/corpus/core/src/a2a/correlation.ts +50 -0
  6. package/corpus/core/src/a2a/handlers.ts +200 -14
  7. package/corpus/core/src/a2a/index.ts +7 -1
  8. package/corpus/core/src/a2a/invoke.ts +77 -1
  9. package/corpus/core/src/a2a/server.ts +13 -1
  10. package/corpus/core/src/a2a/task-store.ts +146 -6
  11. package/corpus/core/src/a2a/types.ts +32 -0
  12. package/corpus/core/src/action.ts +5 -2
  13. package/corpus/core/src/agent/production-agent.ts +33 -4
  14. package/corpus/core/src/client/AssistantChat.tsx +648 -603
  15. package/corpus/core/src/client/MultiTabAssistantChat.tsx +31 -4
  16. package/corpus/core/src/client/agent-chat-adapter.ts +23 -37
  17. package/corpus/core/src/client/agent-sidebar-state.ts +4 -0
  18. package/corpus/core/src/client/analytics.ts +84 -0
  19. package/corpus/core/src/client/chat/message-components.tsx +94 -22
  20. package/corpus/core/src/client/chat/tool-call-display.tsx +170 -47
  21. package/corpus/core/src/client/chat/use-agent-chat-lifecycle-tracking.ts +74 -0
  22. package/corpus/core/src/client/chat-thread-url.ts +11 -0
  23. package/corpus/core/src/client/error-capture.ts +12 -0
  24. package/corpus/core/src/client/extensions/ExtensionSlot.tsx +37 -1
  25. package/corpus/core/src/client/index.ts +2 -0
  26. package/corpus/core/src/client/route-chunk-recovery.ts +20 -8
  27. package/corpus/core/src/client/session-replay.ts +31 -0
  28. package/corpus/core/src/client/use-run-stuck-detection.ts +27 -1
  29. package/corpus/core/src/db/client.ts +55 -0
  30. package/corpus/core/src/extensions/actions.ts +2 -14
  31. package/corpus/core/src/extensions/store.ts +1 -1
  32. package/corpus/core/src/localization/default-messages.ts +3 -0
  33. package/corpus/core/src/mcp/build-server.ts +2 -2
  34. package/corpus/core/src/observability/traces.ts +172 -19
  35. package/corpus/core/src/progress/actions.ts +4 -2
  36. package/corpus/core/src/provider-api/index.ts +205 -105
  37. package/corpus/core/src/scripts/call-agent.ts +190 -19
  38. package/corpus/core/src/server/agent-chat/action-filters-a2a.ts +112 -25
  39. package/corpus/core/src/server/agent-chat-plugin.ts +136 -4
  40. package/corpus/core/src/styles/agent-conversation.css +7 -0
  41. package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +20 -0
  42. package/corpus/core/src/templates/default/app/i18n/de-DE.ts +20 -0
  43. package/corpus/core/src/templates/default/app/i18n/en-US.ts +20 -0
  44. package/corpus/core/src/templates/default/app/i18n/es-ES.ts +20 -0
  45. package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +21 -0
  46. package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +19 -0
  47. package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +20 -0
  48. package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +19 -0
  49. package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +20 -0
  50. package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +19 -0
  51. package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +19 -0
  52. package/corpus/core/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +49 -0
  53. package/corpus/core/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +5 -0
  54. package/corpus/core/src/templates/workspace-core/.agents/skills/observability/SKILL.md +7 -1
  55. package/corpus/core/src/templates/workspace-core/.agents/skills/performance/SKILL.md +13 -0
  56. package/corpus/core/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +1 -1
  57. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +29 -10
  58. package/corpus/templates/analytics/.agents/skills/gong/SKILL.md +54 -23
  59. package/corpus/templates/analytics/.builder/skills/apollo/SKILL.md +19 -41
  60. package/corpus/templates/analytics/.builder/skills/commonroom/SKILL.md +20 -35
  61. package/corpus/templates/analytics/.builder/skills/github/SKILL.md +23 -67
  62. package/corpus/templates/analytics/.builder/skills/pylon/SKILL.md +25 -43
  63. package/corpus/templates/analytics/AGENTS.md +22 -13
  64. package/corpus/templates/analytics/actions/account-deep-dive.ts +1 -0
  65. package/corpus/templates/analytics/actions/configure-gong-native-insights.ts +29 -0
  66. package/corpus/templates/analytics/actions/content-calendar-schema.ts +8 -4
  67. package/corpus/templates/analytics/actions/content-calendar.ts +12 -4
  68. package/corpus/templates/analytics/actions/dashboard-mutation-api.ts +2 -1
  69. package/corpus/templates/analytics/actions/gong-calls.ts +113 -22
  70. package/corpus/templates/analytics/actions/gong-native-insights.ts +166 -0
  71. package/corpus/templates/analytics/actions/hubspot-deals.ts +190 -46
  72. package/corpus/templates/analytics/actions/pylon-issues.ts +123 -0
  73. package/corpus/templates/analytics/actions/query-agent-native-analytics.ts +1 -1
  74. package/corpus/templates/analytics/actions/slack-messages.ts +179 -27
  75. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +48 -152
  76. package/corpus/templates/analytics/app/components/ui/chart.tsx +1 -1
  77. package/corpus/templates/analytics/app/hooks/use-chart-tooltip-flip.ts +21 -6
  78. package/corpus/templates/analytics/app/i18n/zh-TW.ts +13 -0
  79. package/corpus/templates/analytics/app/i18n-data.ts +134 -0
  80. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +181 -30
  81. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +6 -0
  82. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +4 -3
  83. package/corpus/templates/analytics/changelog/2026-07-17-analytics-now-includes-a-default-alert-for-spikes-in-stuck-agent-chats.md +6 -0
  84. package/corpus/templates/analytics/changelog/2026-07-17-dashboard-editors-can-add-shared-extensions-or-opt-into-per-.md +6 -0
  85. package/corpus/templates/analytics/changelog/2026-07-17-dashboard-extensions-show-a-loading-skeleton.md +6 -0
  86. package/corpus/templates/analytics/changelog/2026-07-17-errors-now-group-repeat-failures-consistently-and-keep-priva.md +6 -0
  87. package/corpus/templates/analytics/changelog/2026-07-17-gong-transcript-reviews-now-batch-bounded-call-windows-for-f.md +6 -0
  88. package/corpus/templates/analytics/changelog/2026-07-17-hubspot-deal-filters-now-run-in-hubspot-before-paging-result.md +6 -0
  89. package/corpus/templates/analytics/changelog/2026-07-17-notion-content-calendars-now-discover-the-matching-database-.md +6 -0
  90. package/corpus/templates/analytics/changelog/2026-07-17-pylon-dashboard-reads-now-use-the-paginated-issue-search-api.md +6 -0
  91. package/corpus/templates/analytics/changelog/2026-07-17-slack-reads-no-longer-join-channels-and-report-pagination-coverage.md +6 -0
  92. package/corpus/templates/analytics/docs/schemas/first-party-analytics.md +23 -14
  93. package/corpus/templates/analytics/docs/schemas/tracked-events.md +5 -1
  94. package/corpus/templates/analytics/server/handlers/notion.ts +14 -3
  95. package/corpus/templates/analytics/server/handlers/slack.ts +182 -29
  96. package/corpus/templates/analytics/server/jobs/analytics-alerts.ts +3 -3
  97. package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +2 -6
  98. package/corpus/templates/analytics/server/lib/analytics-alerts.ts +209 -87
  99. package/corpus/templates/analytics/server/lib/analytics-connector-catalog.ts +6 -2
  100. package/corpus/templates/analytics/server/lib/error-capture.ts +75 -8
  101. package/corpus/templates/analytics/server/lib/gong-native-policy.ts +72 -0
  102. package/corpus/templates/analytics/server/lib/gong.ts +54 -66
  103. package/corpus/templates/analytics/server/lib/hubspot.ts +40 -3
  104. package/corpus/templates/analytics/server/lib/notion.ts +83 -8
  105. package/corpus/templates/analytics/server/lib/real-data-actions.ts +4 -0
  106. package/corpus/templates/analytics/server/lib/slack.ts +242 -90
  107. package/corpus/templates/analytics/server/plugins/agent-chat.ts +3 -3
  108. package/corpus/templates/analytics/server/routes/api/pylon/accounts.get.ts +42 -1
  109. package/corpus/templates/analytics/server/routes/api/pylon/issues.get.ts +71 -1
  110. package/corpus/templates/analytics/server/routes/api/test-connection.post.ts +44 -4
  111. package/corpus/templates/clips/actions/finalize-recording.ts +541 -62
  112. package/corpus/templates/clips/app/components/library/bulk-action-toolbar.tsx +19 -1
  113. package/corpus/templates/clips/app/components/library/create-folder-dialog.tsx +123 -0
  114. package/corpus/templates/clips/app/components/library/library-grid.tsx +42 -4
  115. package/corpus/templates/clips/app/components/library/recording-card.tsx +30 -0
  116. package/corpus/templates/clips/app/components/player/playback-comment-overlay.tsx +17 -2
  117. package/corpus/templates/clips/app/components/player/video-player.tsx +14 -2
  118. package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +2 -2
  119. package/corpus/templates/clips/app/entry.client.tsx +6 -1
  120. package/corpus/templates/clips/app/i18n/ar-SA.ts +12 -1
  121. package/corpus/templates/clips/app/i18n/de-DE.ts +12 -1
  122. package/corpus/templates/clips/app/i18n/en-US.ts +12 -1
  123. package/corpus/templates/clips/app/i18n/es-ES.ts +11 -1
  124. package/corpus/templates/clips/app/i18n/fr-FR.ts +11 -1
  125. package/corpus/templates/clips/app/i18n/hi-IN.ts +10 -1
  126. package/corpus/templates/clips/app/i18n/ja-JP.ts +12 -1
  127. package/corpus/templates/clips/app/i18n/ko-KR.ts +11 -1
  128. package/corpus/templates/clips/app/i18n/pt-BR.ts +11 -1
  129. package/corpus/templates/clips/app/i18n/zh-CN.ts +11 -1
  130. package/corpus/templates/clips/app/i18n/zh-TW.ts +11 -1
  131. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +72 -1
  132. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +1 -1
  133. package/corpus/templates/clips/app/routes/record.tsx +3 -3
  134. package/corpus/templates/clips/app/routes/share.$shareId.tsx +6 -3
  135. package/corpus/templates/clips/changelog/2026-07-17-choose-which-workspace-receives-new-clips-recordings-and-des.md +6 -0
  136. package/corpus/templates/clips/changelog/2026-07-17-clips-now-retries-storage-verification-in-the-background-ins.md +6 -0
  137. package/corpus/templates/clips/changelog/2026-07-17-create-folders-directly-from-the-move-menu.md +6 -0
  138. package/corpus/templates/clips/changelog/2026-07-17-failed-desktop-uploads-now-offer-a-direct-way-to-reopen-clip.md +6 -0
  139. package/corpus/templates/clips/changelog/2026-07-17-fixed-broken-thumbnail-icons-appearing-over-playable-clip-em.md +6 -0
  140. package/corpus/templates/clips/changelog/2026-07-17-playback-comments-stay-readable-at-faster-playback-speeds.md +6 -0
  141. package/corpus/templates/clips/chrome-extension/src/finalize-recovery.ts +3 -0
  142. package/corpus/templates/clips/chrome-extension/src/offscreen.ts +3 -3
  143. package/corpus/templates/clips/desktop/src/app.tsx +19 -7
  144. package/corpus/templates/clips/desktop/src/lib/recorder.ts +111 -13
  145. package/corpus/templates/clips/desktop/src/lib/upload-verification.ts +16 -7
  146. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +2 -4
  147. package/corpus/templates/clips/desktop/src-tauri/src/native_screen/live_upload.rs +32 -15
  148. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +45 -18
  149. package/corpus/templates/clips/server/jobs/media-verification.ts +130 -0
  150. package/corpus/templates/clips/server/lib/builder-media-compression.ts +15 -0
  151. package/corpus/templates/clips/server/lib/media-verification-state.ts +38 -0
  152. package/corpus/templates/clips/server/lib/player-thumbnail-url.ts +31 -0
  153. package/corpus/templates/clips/server/lib/post-finalize-dispatch.ts +10 -3
  154. package/corpus/templates/clips/server/plugins/auth.ts +5 -5
  155. package/corpus/templates/clips/server/plugins/calendar-jobs.ts +2 -0
  156. package/corpus/templates/clips/server/routes/api/_agent-native-background/post-finalize-worker.post.ts +12 -2
  157. package/corpus/templates/clips/server/routes/api/public-recording.get.ts +6 -1
  158. package/corpus/templates/clips/server/routes/api/thumbnail/[recordingId].get.ts +340 -0
  159. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/abort.post.ts +24 -7
  160. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +91 -7
  161. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/status.get.ts +14 -0
  162. package/corpus/templates/clips/shared/finalize-recovery.ts +61 -2
  163. package/corpus/templates/clips/shared/share-meta.ts +1 -1
  164. package/corpus/templates/content/app/entry.client.tsx +6 -1
  165. package/corpus/templates/dispatch/AGENTS.md +5 -0
  166. package/corpus/templates/dispatch/changelog/2026-07-17-apps-page-links-to-other-available-apps.md +6 -0
  167. package/corpus/templates/dispatch/changelog/2026-07-17-curated-template-remixes.md +6 -0
  168. package/corpus/templates/mail/app/entry.client.tsx +6 -1
  169. package/corpus/templates/slides/.agents/skills/slide-images/SKILL.md +11 -7
  170. package/corpus/templates/slides/.env.example +0 -1
  171. package/corpus/templates/slides/AGENTS.md +4 -0
  172. package/corpus/templates/slides/DEVELOPING.md +2 -2
  173. package/corpus/templates/slides/actions/index-design-system-with-builder.ts +1 -1
  174. package/corpus/templates/slides/actions/logo-config.ts +6 -7
  175. package/corpus/templates/slides/actions/search-images.ts +11 -39
  176. package/corpus/templates/slides/actions/search-logos.ts +5 -52
  177. package/corpus/templates/slides/app/components/editor/ImageSearchPanel.tsx +1 -1
  178. package/corpus/templates/slides/app/components/editor/LogoSearchPanel.tsx +16 -26
  179. package/corpus/templates/slides/app/entry.client.tsx +6 -1
  180. package/corpus/templates/slides/server/lib/media-search-providers.ts +216 -0
  181. package/corpus/templates/slides/server/register-secrets.ts +30 -0
  182. package/dist/a2a/client.d.ts +47 -1
  183. package/dist/a2a/client.d.ts.map +1 -1
  184. package/dist/a2a/client.js +94 -12
  185. package/dist/a2a/client.js.map +1 -1
  186. package/dist/a2a/correlation.d.ts +10 -0
  187. package/dist/a2a/correlation.d.ts.map +1 -0
  188. package/dist/a2a/correlation.js +40 -0
  189. package/dist/a2a/correlation.js.map +1 -0
  190. package/dist/a2a/handlers.d.ts.map +1 -1
  191. package/dist/a2a/handlers.js +147 -15
  192. package/dist/a2a/handlers.js.map +1 -1
  193. package/dist/a2a/index.d.ts +4 -4
  194. package/dist/a2a/index.d.ts.map +1 -1
  195. package/dist/a2a/index.js +2 -2
  196. package/dist/a2a/index.js.map +1 -1
  197. package/dist/a2a/invoke.d.ts +29 -2
  198. package/dist/a2a/invoke.d.ts.map +1 -1
  199. package/dist/a2a/invoke.js +33 -1
  200. package/dist/a2a/invoke.js.map +1 -1
  201. package/dist/a2a/server.d.ts.map +1 -1
  202. package/dist/a2a/server.js +14 -1
  203. package/dist/a2a/server.js.map +1 -1
  204. package/dist/a2a/task-store.d.ts +12 -1
  205. package/dist/a2a/task-store.d.ts.map +1 -1
  206. package/dist/a2a/task-store.js +96 -6
  207. package/dist/a2a/task-store.js.map +1 -1
  208. package/dist/a2a/types.d.ts +27 -0
  209. package/dist/a2a/types.d.ts.map +1 -1
  210. package/dist/a2a/types.js.map +1 -1
  211. package/dist/action.d.ts +5 -2
  212. package/dist/action.d.ts.map +1 -1
  213. package/dist/action.js.map +1 -1
  214. package/dist/agent/production-agent.d.ts +14 -0
  215. package/dist/agent/production-agent.d.ts.map +1 -1
  216. package/dist/agent/production-agent.js +19 -3
  217. package/dist/agent/production-agent.js.map +1 -1
  218. package/dist/client/AssistantChat.d.ts +14 -1
  219. package/dist/client/AssistantChat.d.ts.map +1 -1
  220. package/dist/client/AssistantChat.js +158 -136
  221. package/dist/client/AssistantChat.js.map +1 -1
  222. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  223. package/dist/client/MultiTabAssistantChat.js +27 -4
  224. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  225. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  226. package/dist/client/agent-chat-adapter.js +21 -39
  227. package/dist/client/agent-chat-adapter.js.map +1 -1
  228. package/dist/client/agent-sidebar-state.d.ts +1 -0
  229. package/dist/client/agent-sidebar-state.d.ts.map +1 -1
  230. package/dist/client/agent-sidebar-state.js +4 -0
  231. package/dist/client/agent-sidebar-state.js.map +1 -1
  232. package/dist/client/analytics.d.ts +14 -0
  233. package/dist/client/analytics.d.ts.map +1 -1
  234. package/dist/client/analytics.js +67 -0
  235. package/dist/client/analytics.js.map +1 -1
  236. package/dist/client/chat/message-components.d.ts +8 -0
  237. package/dist/client/chat/message-components.d.ts.map +1 -1
  238. package/dist/client/chat/message-components.js +62 -19
  239. package/dist/client/chat/message-components.js.map +1 -1
  240. package/dist/client/chat/tool-call-display.d.ts +6 -0
  241. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  242. package/dist/client/chat/tool-call-display.js +83 -14
  243. package/dist/client/chat/tool-call-display.js.map +1 -1
  244. package/dist/client/chat/use-agent-chat-lifecycle-tracking.d.ts +8 -0
  245. package/dist/client/chat/use-agent-chat-lifecycle-tracking.d.ts.map +1 -0
  246. package/dist/client/chat/use-agent-chat-lifecycle-tracking.js +51 -0
  247. package/dist/client/chat/use-agent-chat-lifecycle-tracking.js.map +1 -0
  248. package/dist/client/chat-thread-url.d.ts +2 -0
  249. package/dist/client/chat-thread-url.d.ts.map +1 -0
  250. package/dist/client/chat-thread-url.js +12 -0
  251. package/dist/client/chat-thread-url.js.map +1 -0
  252. package/dist/client/error-capture.d.ts.map +1 -1
  253. package/dist/client/error-capture.js +7 -0
  254. package/dist/client/error-capture.js.map +1 -1
  255. package/dist/client/extensions/ExtensionSlot.d.ts +3 -1
  256. package/dist/client/extensions/ExtensionSlot.d.ts.map +1 -1
  257. package/dist/client/extensions/ExtensionSlot.js +28 -3
  258. package/dist/client/extensions/ExtensionSlot.js.map +1 -1
  259. package/dist/client/index.d.ts +1 -1
  260. package/dist/client/index.d.ts.map +1 -1
  261. package/dist/client/index.js +1 -1
  262. package/dist/client/index.js.map +1 -1
  263. package/dist/client/route-chunk-recovery.d.ts.map +1 -1
  264. package/dist/client/route-chunk-recovery.js +14 -9
  265. package/dist/client/route-chunk-recovery.js.map +1 -1
  266. package/dist/client/session-replay.d.ts +15 -0
  267. package/dist/client/session-replay.d.ts.map +1 -1
  268. package/dist/client/session-replay.js +20 -0
  269. package/dist/client/session-replay.js.map +1 -1
  270. package/dist/client/use-run-stuck-detection.d.ts.map +1 -1
  271. package/dist/client/use-run-stuck-detection.js +25 -1
  272. package/dist/client/use-run-stuck-detection.js.map +1 -1
  273. package/dist/db/client.d.ts +7 -0
  274. package/dist/db/client.d.ts.map +1 -1
  275. package/dist/db/client.js +33 -0
  276. package/dist/db/client.js.map +1 -1
  277. package/dist/extensions/actions.d.ts.map +1 -1
  278. package/dist/extensions/actions.js +2 -10
  279. package/dist/extensions/actions.js.map +1 -1
  280. package/dist/extensions/store.js +1 -1
  281. package/dist/extensions/store.js.map +1 -1
  282. package/dist/localization/default-messages.d.ts +3 -0
  283. package/dist/localization/default-messages.d.ts.map +1 -1
  284. package/dist/localization/default-messages.js +3 -0
  285. package/dist/localization/default-messages.js.map +1 -1
  286. package/dist/mcp/build-server.d.ts +2 -0
  287. package/dist/mcp/build-server.d.ts.map +1 -1
  288. package/dist/mcp/build-server.js +2 -2
  289. package/dist/mcp/build-server.js.map +1 -1
  290. package/dist/notifications/routes.d.ts +2 -2
  291. package/dist/observability/routes.d.ts +5 -5
  292. package/dist/observability/traces.d.ts +9 -0
  293. package/dist/observability/traces.d.ts.map +1 -1
  294. package/dist/observability/traces.js +137 -19
  295. package/dist/observability/traces.js.map +1 -1
  296. package/dist/progress/actions.d.ts.map +1 -1
  297. package/dist/progress/actions.js +3 -2
  298. package/dist/progress/actions.js.map +1 -1
  299. package/dist/progress/routes.d.ts +1 -1
  300. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  301. package/dist/provider-api/index.d.ts.map +1 -1
  302. package/dist/provider-api/index.js +91 -8
  303. package/dist/provider-api/index.js.map +1 -1
  304. package/dist/scripts/call-agent.d.ts.map +1 -1
  305. package/dist/scripts/call-agent.js +140 -17
  306. package/dist/scripts/call-agent.js.map +1 -1
  307. package/dist/secrets/routes.d.ts +9 -9
  308. package/dist/server/agent-chat/action-filters-a2a.d.ts +24 -2
  309. package/dist/server/agent-chat/action-filters-a2a.d.ts.map +1 -1
  310. package/dist/server/agent-chat/action-filters-a2a.js +62 -7
  311. package/dist/server/agent-chat/action-filters-a2a.js.map +1 -1
  312. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  313. package/dist/server/agent-chat-plugin.js +118 -5
  314. package/dist/server/agent-chat-plugin.js.map +1 -1
  315. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  316. package/dist/server/transcribe-voice.d.ts +1 -1
  317. package/dist/styles/agent-conversation.css +7 -0
  318. package/dist/templates/default/app/i18n/ar-SA.ts +20 -0
  319. package/dist/templates/default/app/i18n/de-DE.ts +20 -0
  320. package/dist/templates/default/app/i18n/en-US.ts +20 -0
  321. package/dist/templates/default/app/i18n/es-ES.ts +20 -0
  322. package/dist/templates/default/app/i18n/fr-FR.ts +21 -0
  323. package/dist/templates/default/app/i18n/hi-IN.ts +19 -0
  324. package/dist/templates/default/app/i18n/ja-JP.ts +20 -0
  325. package/dist/templates/default/app/i18n/ko-KR.ts +19 -0
  326. package/dist/templates/default/app/i18n/pt-BR.ts +20 -0
  327. package/dist/templates/default/app/i18n/zh-CN.ts +19 -0
  328. package/dist/templates/default/app/i18n/zh-TW.ts +19 -0
  329. package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +49 -0
  330. package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +5 -0
  331. package/dist/templates/workspace-core/.agents/skills/observability/SKILL.md +7 -1
  332. package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +13 -0
  333. package/dist/templates/workspace-core/.agents/skills/tracking/SKILL.md +1 -1
  334. package/package.json +1 -1
  335. package/src/templates/default/app/i18n/ar-SA.ts +20 -0
  336. package/src/templates/default/app/i18n/de-DE.ts +20 -0
  337. package/src/templates/default/app/i18n/en-US.ts +20 -0
  338. package/src/templates/default/app/i18n/es-ES.ts +20 -0
  339. package/src/templates/default/app/i18n/fr-FR.ts +21 -0
  340. package/src/templates/default/app/i18n/hi-IN.ts +19 -0
  341. package/src/templates/default/app/i18n/ja-JP.ts +20 -0
  342. package/src/templates/default/app/i18n/ko-KR.ts +19 -0
  343. package/src/templates/default/app/i18n/pt-BR.ts +20 -0
  344. package/src/templates/default/app/i18n/zh-CN.ts +19 -0
  345. package/src/templates/default/app/i18n/zh-TW.ts +19 -0
  346. package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +49 -0
  347. package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +5 -0
  348. package/src/templates/workspace-core/.agents/skills/observability/SKILL.md +7 -1
  349. package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +13 -0
  350. package/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +1 -1
  351. package/corpus/templates/analytics/server/handlers/github.ts +0 -200
  352. package/corpus/templates/analytics/server/handlers/pylon.ts +0 -43
  353. package/corpus/templates/analytics/server/lib/apollo.ts +0 -167
  354. package/corpus/templates/analytics/server/lib/commonroom.ts +0 -149
  355. package/corpus/templates/analytics/server/lib/github.ts +0 -660
  356. package/corpus/templates/analytics/server/lib/mixpanel.ts +0 -156
  357. package/corpus/templates/analytics/server/lib/posthog.ts +0 -194
  358. package/corpus/templates/analytics/server/lib/pylon.ts +0 -109
  359. package/corpus/templates/analytics/server/routes/api/github/graphql.post.ts +0 -1
  360. package/corpus/templates/analytics/server/routes/api/github/issue.get.ts +0 -1
  361. package/corpus/templates/analytics/server/routes/api/github/org-prs.get.ts +0 -1
  362. package/corpus/templates/analytics/server/routes/api/github/pr.get.ts +0 -1
  363. package/corpus/templates/analytics/server/routes/api/github/prs.get.ts +0 -1
  364. package/corpus/templates/analytics/server/routes/api/github/search.get.ts +0 -1
  365. package/corpus/templates/slides/actions/fetch-logos.ts +0 -90
  366. package/corpus/templates/slides/actions/image-search.ts +0 -64
  367. package/corpus/templates/slides/actions/import-github.ts +0 -182
  368. package/corpus/templates/slides/actions/logo-lookup.ts +0 -113
@@ -1284,6 +1284,35 @@ const PROVIDER_CONFIGS: Record<ProviderApiId, ProviderApiConfig> = {
1284
1284
  defaultHeaders: { "Notion-Version": "2026-03-11" },
1285
1285
  templateUses: ["analytics", "brain", "content", "dispatch"],
1286
1286
  examples: [{ label: "Search", method: "POST", path: "/search", body: {} }],
1287
+ corpusRecipes: [
1288
+ {
1289
+ label: "Search a Notion data source with complete cursor coverage",
1290
+ useWhen:
1291
+ "Use for coverage-sensitive searches across one known Notion data source's page properties. This does not search page block bodies.",
1292
+ workflow: [
1293
+ "Resolve the exact data source id and apply the narrowest provider-side filter and filter_properties projection first.",
1294
+ "Start provider-corpus-job with mode=paginated-search and pass next_cursor back as start_cursor in the POST body.",
1295
+ "Search only the returned properties and report the 10,000-result API ceiling plus any incomplete request_status.",
1296
+ "For page body text, stage page ids and fetch block children through a separate bounded data program; property search is not body search.",
1297
+ ],
1298
+ request: {
1299
+ method: "POST",
1300
+ path: "/data_sources/<data-source-id>/query",
1301
+ body: { page_size: 100 },
1302
+ },
1303
+ pagination: {
1304
+ itemsPath: "results",
1305
+ nextCursorPath: "next_cursor",
1306
+ cursorBodyPath: "start_cursor",
1307
+ maxPages: 100,
1308
+ },
1309
+ search: {
1310
+ textPaths: ["properties"],
1311
+ idPaths: ["id"],
1312
+ metadataPaths: ["id", "url", "created_time", "last_edited_time"],
1313
+ },
1314
+ },
1315
+ ],
1287
1316
  },
1288
1317
  posthog: {
1289
1318
  id: "posthog",
@@ -1306,11 +1335,21 @@ const PROVIDER_CONFIGS: Record<ProviderApiId, ProviderApiConfig> = {
1306
1335
  ],
1307
1336
  examples: [
1308
1337
  {
1309
- label: "List events",
1310
- method: "GET",
1311
- path: "/api/projects/{projectId}/events/",
1338
+ label: "Aggregate events with HogQL",
1339
+ method: "POST",
1340
+ path: "/api/projects/{projectId}/query/",
1341
+ body: {
1342
+ query: {
1343
+ kind: "HogQLQuery",
1344
+ query:
1345
+ "SELECT event, count() AS events FROM events WHERE timestamp >= now() - INTERVAL 7 DAY GROUP BY event ORDER BY events DESC LIMIT 100",
1346
+ },
1347
+ },
1312
1348
  },
1313
1349
  ],
1350
+ notes: [
1351
+ "Prefer the query endpoint with a bounded HogQL projection or server-side aggregation over paging raw events into the agent context.",
1352
+ ],
1314
1353
  },
1315
1354
  prometheus: {
1316
1355
  id: "prometheus",
@@ -1400,6 +1439,39 @@ const PROVIDER_CONFIGS: Record<ProviderApiId, ProviderApiConfig> = {
1400
1439
  { label: "Search messages", method: "GET", path: "/search.messages" },
1401
1440
  { label: "Post message", method: "POST", path: "/chat.postMessage" },
1402
1441
  ],
1442
+ notes: [
1443
+ "Bot-token reads must not call conversations.join implicitly. A bot can read only conversations it is already a member of with the required history scope.",
1444
+ "search.messages requires a compatible user token; do not assume a bot token can use it. Use conversations.history for channel-scoped bot reads.",
1445
+ ],
1446
+ corpusRecipes: [
1447
+ {
1448
+ label: "Search complete Slack channel history",
1449
+ useWhen:
1450
+ "Use for all-message, mention, phrase, or absence-sensitive searches in one known Slack conversation without one agent turn per cursor page.",
1451
+ workflow: [
1452
+ "Resolve the exact channel id without joining or mutating membership.",
1453
+ "Start provider-corpus-job with mode=paginated-search against conversations.history, bounded by oldest/latest when possible.",
1454
+ "Pass response_metadata.next_cursor back as cursor and let quota_wait pause/resume rate-limited installations.",
1455
+ "Report channel id, time bounds, pages, messages searched, matches, and is_limited or access gaps.",
1456
+ ],
1457
+ request: {
1458
+ method: "GET",
1459
+ path: "/conversations.history",
1460
+ query: { channel: "<channel-id>" },
1461
+ },
1462
+ pagination: {
1463
+ itemsPath: "messages",
1464
+ nextCursorPath: "response_metadata.next_cursor",
1465
+ cursorParam: "cursor",
1466
+ maxPages: 500,
1467
+ },
1468
+ search: {
1469
+ textPaths: ["text", "blocks", "attachments"],
1470
+ idPaths: ["ts", "client_msg_id"],
1471
+ metadataPaths: ["ts", "user", "thread_ts", "type", "subtype"],
1472
+ },
1473
+ },
1474
+ ],
1403
1475
  },
1404
1476
  stripe: {
1405
1477
  id: "stripe",
@@ -1690,60 +1762,66 @@ export async function executeProviderApiRequest(
1690
1762
  // --- fetchAllPages mode ---
1691
1763
  if (args.fetchAllPages) {
1692
1764
  const pageCfg = args.fetchAllPages;
1693
- const { items, pageCount, lastStatus, lastContentType } =
1694
- await fetchAllPages(pageCfg, async (extra) => {
1695
- const queryWithCursor = extra?.query
1696
- ? mergeQueryObjects(
1697
- substituteUnknown(args.query, placeholders),
1698
- extra.query,
1699
- )
1700
- : substituteUnknown(args.query, placeholders);
1701
- const pageUrl = buildProviderUrl({
1702
- config,
1703
- baseUrl,
1704
- rawPath: substituteString(args.path, placeholders),
1705
- query: queryWithCursor,
1706
- });
1707
- const bodyWithCursor = extra?.bodyCursor
1708
- ? setValueAtPath(
1709
- substituteUnknown(args.body, placeholders),
1710
- extra.bodyCursor.path,
1711
- extra.bodyCursor.value,
1712
- )
1713
- : substituteUnknown(args.body, placeholders);
1714
- const pageBody = prepareBody(bodyWithCursor, { ...headers });
1715
- const requestKey = createProviderRequestDedupeKey({
1716
- method,
1717
- url: pageUrl.href,
1718
- body: pageBody,
1719
- headers,
1720
- });
1721
- const resp = await fetchWithTimeout(pageUrl.href, {
1765
+ const {
1766
+ items,
1767
+ pageCount,
1768
+ lastStatus,
1769
+ lastContentType,
1770
+ truncated,
1771
+ nextCursor,
1772
+ } = await fetchAllPages(pageCfg, async (extra) => {
1773
+ const queryWithCursor = extra?.query
1774
+ ? mergeQueryObjects(
1775
+ substituteUnknown(args.query, placeholders),
1776
+ extra.query,
1777
+ )
1778
+ : substituteUnknown(args.query, placeholders);
1779
+ const pageUrl = buildProviderUrl({
1780
+ config,
1781
+ baseUrl,
1782
+ rawPath: substituteString(args.path, placeholders),
1783
+ query: queryWithCursor,
1784
+ });
1785
+ const bodyWithCursor = extra?.bodyCursor
1786
+ ? setValueAtPath(
1787
+ substituteUnknown(args.body, placeholders),
1788
+ extra.bodyCursor.path,
1789
+ extra.bodyCursor.value,
1790
+ )
1791
+ : substituteUnknown(args.body, placeholders);
1792
+ const pageBody = prepareBody(bodyWithCursor, headers);
1793
+ const requestKey = createProviderRequestDedupeKey({
1794
+ method,
1795
+ url: pageUrl.href,
1796
+ body: pageBody,
1797
+ headers,
1798
+ });
1799
+ const resp = await fetchWithTimeout(pageUrl.href, {
1800
+ method,
1801
+ headers,
1802
+ body: pageBody,
1803
+ maxBytes: effectiveMaxBytes,
1804
+ timeoutMs: clampTimeout(args.timeoutMs),
1805
+ secretValues: auth.secretValues,
1806
+ quota: {
1807
+ identity: quotaIdentity,
1722
1808
  method,
1723
- headers,
1724
- body: pageBody,
1725
- maxBytes: effectiveMaxBytes,
1726
- timeoutMs: clampTimeout(args.timeoutMs),
1727
- secretValues: auth.secretValues,
1728
- quota: {
1729
- identity: quotaIdentity,
1730
- method,
1731
- target: describeProviderRequestTarget(
1732
- pageUrl.href,
1733
- auth.secretValues,
1734
- ),
1735
- requestKey,
1736
- },
1737
- });
1738
- return {
1739
- text:
1740
- resp.text ??
1741
- (resp.json !== undefined ? JSON.stringify(resp.json) : ""),
1742
- contentType: resp.contentType,
1743
- status: resp.status,
1744
- ok: resp.ok,
1745
- };
1809
+ target: describeProviderRequestTarget(
1810
+ pageUrl.href,
1811
+ auth.secretValues,
1812
+ ),
1813
+ requestKey,
1814
+ },
1746
1815
  });
1816
+ return {
1817
+ text:
1818
+ resp.text ??
1819
+ (resp.json !== undefined ? JSON.stringify(resp.json) : ""),
1820
+ contentType: resp.contentType,
1821
+ status: resp.status,
1822
+ ok: resp.ok,
1823
+ };
1824
+ });
1747
1825
 
1748
1826
  const allItemsJson = JSON.stringify(items, null, 2);
1749
1827
  const metadata = {
@@ -1751,6 +1829,8 @@ export async function executeProviderApiRequest(
1751
1829
  pagesRead: pageCount,
1752
1830
  totalItems: Array.isArray(items) ? items.length : 0,
1753
1831
  lastStatus,
1832
+ truncated,
1833
+ nextCursor,
1754
1834
  };
1755
1835
 
1756
1836
  if (args.saveToFile) {
@@ -2642,57 +2722,63 @@ async function executeCustomProviderApiRequest(
2642
2722
  // --- fetchAllPages mode (same cursor pagination as built-in providers) ---
2643
2723
  if (args.fetchAllPages) {
2644
2724
  const pageCfg = args.fetchAllPages;
2645
- const { items, pageCount, lastStatus, lastContentType } =
2646
- await fetchAllPages(pageCfg, async (extra) => {
2647
- const queryWithCursor = extra?.query
2648
- ? mergeQueryObjects(args.query, extra.query)
2649
- : args.query;
2650
- const pageUrl = buildProviderUrl({
2651
- config: syntheticConfig,
2652
- baseUrl,
2653
- rawPath: args.path,
2654
- query: queryWithCursor,
2655
- });
2656
- const bodyWithCursor = extra?.bodyCursor
2657
- ? setValueAtPath(
2658
- args.body,
2659
- extra.bodyCursor.path,
2660
- extra.bodyCursor.value,
2661
- )
2662
- : args.body;
2663
- const pageBody = prepareBody(bodyWithCursor, { ...headers });
2664
- const requestKey = createProviderRequestDedupeKey({
2665
- method,
2666
- url: pageUrl.href,
2667
- body: pageBody,
2668
- headers,
2669
- });
2670
- const resp = await fetchWithTimeout(pageUrl.href, {
2725
+ const {
2726
+ items,
2727
+ pageCount,
2728
+ lastStatus,
2729
+ lastContentType,
2730
+ truncated,
2731
+ nextCursor,
2732
+ } = await fetchAllPages(pageCfg, async (extra) => {
2733
+ const queryWithCursor = extra?.query
2734
+ ? mergeQueryObjects(args.query, extra.query)
2735
+ : args.query;
2736
+ const pageUrl = buildProviderUrl({
2737
+ config: syntheticConfig,
2738
+ baseUrl,
2739
+ rawPath: args.path,
2740
+ query: queryWithCursor,
2741
+ });
2742
+ const bodyWithCursor = extra?.bodyCursor
2743
+ ? setValueAtPath(
2744
+ args.body,
2745
+ extra.bodyCursor.path,
2746
+ extra.bodyCursor.value,
2747
+ )
2748
+ : args.body;
2749
+ const pageBody = prepareBody(bodyWithCursor, headers);
2750
+ const requestKey = createProviderRequestDedupeKey({
2751
+ method,
2752
+ url: pageUrl.href,
2753
+ body: pageBody,
2754
+ headers,
2755
+ });
2756
+ const resp = await fetchWithTimeout(pageUrl.href, {
2757
+ method,
2758
+ headers,
2759
+ body: pageBody,
2760
+ maxBytes: effectiveMaxBytes,
2761
+ timeoutMs: clampTimeout(args.timeoutMs),
2762
+ secretValues: auth.secretValues,
2763
+ quota: {
2764
+ identity: quotaIdentity,
2671
2765
  method,
2672
- headers,
2673
- body: pageBody,
2674
- maxBytes: effectiveMaxBytes,
2675
- timeoutMs: clampTimeout(args.timeoutMs),
2676
- secretValues: auth.secretValues,
2677
- quota: {
2678
- identity: quotaIdentity,
2679
- method,
2680
- target: describeProviderRequestTarget(
2681
- pageUrl.href,
2682
- auth.secretValues,
2683
- ),
2684
- requestKey,
2685
- },
2686
- });
2687
- return {
2688
- text:
2689
- resp.text ??
2690
- (resp.json !== undefined ? JSON.stringify(resp.json) : ""),
2691
- contentType: resp.contentType,
2692
- status: resp.status,
2693
- ok: resp.ok,
2694
- };
2766
+ target: describeProviderRequestTarget(
2767
+ pageUrl.href,
2768
+ auth.secretValues,
2769
+ ),
2770
+ requestKey,
2771
+ },
2695
2772
  });
2773
+ return {
2774
+ text:
2775
+ resp.text ??
2776
+ (resp.json !== undefined ? JSON.stringify(resp.json) : ""),
2777
+ contentType: resp.contentType,
2778
+ status: resp.status,
2779
+ ok: resp.ok,
2780
+ };
2781
+ });
2696
2782
 
2697
2783
  const allItemsJson = JSON.stringify(items, null, 2);
2698
2784
  const metadata = {
@@ -2704,6 +2790,8 @@ async function executeCustomProviderApiRequest(
2704
2790
  pagesRead: pageCount,
2705
2791
  totalItems: Array.isArray(items) ? items.length : 0,
2706
2792
  lastStatus,
2793
+ truncated,
2794
+ nextCursor,
2707
2795
  };
2708
2796
 
2709
2797
  if (args.saveToFile) {
@@ -5146,6 +5234,8 @@ async function fetchAllPages(
5146
5234
  pageCount: number;
5147
5235
  lastStatus: number;
5148
5236
  lastContentType: string | null;
5237
+ truncated: boolean;
5238
+ nextCursor: string | null;
5149
5239
  }> {
5150
5240
  const maxPages = Math.min(
5151
5241
  Number.isFinite(config.maxPages) && config.maxPages! > 0
@@ -5159,6 +5249,7 @@ async function fetchAllPages(
5159
5249
  let pageCount = 0;
5160
5250
  let lastStatus = 0;
5161
5251
  let lastContentType: string | null = null;
5252
+ let truncated = false;
5162
5253
 
5163
5254
  if (!config.cursorParam && !config.cursorBodyPath) {
5164
5255
  throw new Error(
@@ -5224,12 +5315,21 @@ async function fetchAllPages(
5224
5315
  nextCursor === null ||
5225
5316
  nextCursor === cursor
5226
5317
  ) {
5318
+ truncated = false;
5227
5319
  break;
5228
5320
  }
5229
5321
  cursor = String(nextCursor);
5322
+ truncated = pageCount >= maxPages;
5230
5323
  }
5231
5324
 
5232
- return { items, pageCount, lastStatus, lastContentType };
5325
+ return {
5326
+ items,
5327
+ pageCount,
5328
+ lastStatus,
5329
+ lastContentType,
5330
+ truncated,
5331
+ nextCursor: truncated ? (cursor ?? null) : null,
5332
+ };
5233
5333
  }
5234
5334
 
5235
5335
  function fingerprint(value: string): string {