@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.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +25 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/a2a/client.ts +162 -17
- package/corpus/core/src/a2a/correlation.ts +50 -0
- package/corpus/core/src/a2a/handlers.ts +200 -14
- package/corpus/core/src/a2a/index.ts +7 -1
- package/corpus/core/src/a2a/invoke.ts +77 -1
- package/corpus/core/src/a2a/server.ts +13 -1
- package/corpus/core/src/a2a/task-store.ts +146 -6
- package/corpus/core/src/a2a/types.ts +32 -0
- package/corpus/core/src/action.ts +5 -2
- package/corpus/core/src/agent/production-agent.ts +33 -4
- package/corpus/core/src/client/AssistantChat.tsx +648 -603
- package/corpus/core/src/client/MultiTabAssistantChat.tsx +31 -4
- package/corpus/core/src/client/agent-chat-adapter.ts +23 -37
- package/corpus/core/src/client/agent-sidebar-state.ts +4 -0
- package/corpus/core/src/client/analytics.ts +84 -0
- package/corpus/core/src/client/chat/message-components.tsx +94 -22
- package/corpus/core/src/client/chat/tool-call-display.tsx +170 -47
- package/corpus/core/src/client/chat/use-agent-chat-lifecycle-tracking.ts +74 -0
- package/corpus/core/src/client/chat-thread-url.ts +11 -0
- package/corpus/core/src/client/error-capture.ts +12 -0
- package/corpus/core/src/client/extensions/ExtensionSlot.tsx +37 -1
- package/corpus/core/src/client/index.ts +2 -0
- package/corpus/core/src/client/route-chunk-recovery.ts +20 -8
- package/corpus/core/src/client/session-replay.ts +31 -0
- package/corpus/core/src/client/use-run-stuck-detection.ts +27 -1
- package/corpus/core/src/db/client.ts +55 -0
- package/corpus/core/src/extensions/actions.ts +2 -14
- package/corpus/core/src/extensions/store.ts +1 -1
- package/corpus/core/src/localization/default-messages.ts +3 -0
- package/corpus/core/src/mcp/build-server.ts +2 -2
- package/corpus/core/src/observability/traces.ts +172 -19
- package/corpus/core/src/progress/actions.ts +4 -2
- package/corpus/core/src/provider-api/index.ts +205 -105
- package/corpus/core/src/scripts/call-agent.ts +190 -19
- package/corpus/core/src/server/agent-chat/action-filters-a2a.ts +112 -25
- package/corpus/core/src/server/agent-chat-plugin.ts +136 -4
- package/corpus/core/src/styles/agent-conversation.css +7 -0
- package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +20 -0
- package/corpus/core/src/templates/default/app/i18n/de-DE.ts +20 -0
- package/corpus/core/src/templates/default/app/i18n/en-US.ts +20 -0
- package/corpus/core/src/templates/default/app/i18n/es-ES.ts +20 -0
- package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +21 -0
- package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +19 -0
- package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +20 -0
- package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +19 -0
- package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +20 -0
- package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +19 -0
- package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +19 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +49 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +5 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/observability/SKILL.md +7 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/performance/SKILL.md +13 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +1 -1
- package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +29 -10
- package/corpus/templates/analytics/.agents/skills/gong/SKILL.md +54 -23
- package/corpus/templates/analytics/.builder/skills/apollo/SKILL.md +19 -41
- package/corpus/templates/analytics/.builder/skills/commonroom/SKILL.md +20 -35
- package/corpus/templates/analytics/.builder/skills/github/SKILL.md +23 -67
- package/corpus/templates/analytics/.builder/skills/pylon/SKILL.md +25 -43
- package/corpus/templates/analytics/AGENTS.md +22 -13
- package/corpus/templates/analytics/actions/account-deep-dive.ts +1 -0
- package/corpus/templates/analytics/actions/configure-gong-native-insights.ts +29 -0
- package/corpus/templates/analytics/actions/content-calendar-schema.ts +8 -4
- package/corpus/templates/analytics/actions/content-calendar.ts +12 -4
- package/corpus/templates/analytics/actions/dashboard-mutation-api.ts +2 -1
- package/corpus/templates/analytics/actions/gong-calls.ts +113 -22
- package/corpus/templates/analytics/actions/gong-native-insights.ts +166 -0
- package/corpus/templates/analytics/actions/hubspot-deals.ts +190 -46
- package/corpus/templates/analytics/actions/pylon-issues.ts +123 -0
- package/corpus/templates/analytics/actions/query-agent-native-analytics.ts +1 -1
- package/corpus/templates/analytics/actions/slack-messages.ts +179 -27
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +48 -152
- package/corpus/templates/analytics/app/components/ui/chart.tsx +1 -1
- package/corpus/templates/analytics/app/hooks/use-chart-tooltip-flip.ts +21 -6
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +13 -0
- package/corpus/templates/analytics/app/i18n-data.ts +134 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +181 -30
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +6 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +4 -3
- package/corpus/templates/analytics/changelog/2026-07-17-analytics-now-includes-a-default-alert-for-spikes-in-stuck-agent-chats.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-dashboard-editors-can-add-shared-extensions-or-opt-into-per-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-dashboard-extensions-show-a-loading-skeleton.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-errors-now-group-repeat-failures-consistently-and-keep-priva.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-gong-transcript-reviews-now-batch-bounded-call-windows-for-f.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-hubspot-deal-filters-now-run-in-hubspot-before-paging-result.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-notion-content-calendars-now-discover-the-matching-database-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-pylon-dashboard-reads-now-use-the-paginated-issue-search-api.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-slack-reads-no-longer-join-channels-and-report-pagination-coverage.md +6 -0
- package/corpus/templates/analytics/docs/schemas/first-party-analytics.md +23 -14
- package/corpus/templates/analytics/docs/schemas/tracked-events.md +5 -1
- package/corpus/templates/analytics/server/handlers/notion.ts +14 -3
- package/corpus/templates/analytics/server/handlers/slack.ts +182 -29
- package/corpus/templates/analytics/server/jobs/analytics-alerts.ts +3 -3
- package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +2 -6
- package/corpus/templates/analytics/server/lib/analytics-alerts.ts +209 -87
- package/corpus/templates/analytics/server/lib/analytics-connector-catalog.ts +6 -2
- package/corpus/templates/analytics/server/lib/error-capture.ts +75 -8
- package/corpus/templates/analytics/server/lib/gong-native-policy.ts +72 -0
- package/corpus/templates/analytics/server/lib/gong.ts +54 -66
- package/corpus/templates/analytics/server/lib/hubspot.ts +40 -3
- package/corpus/templates/analytics/server/lib/notion.ts +83 -8
- package/corpus/templates/analytics/server/lib/real-data-actions.ts +4 -0
- package/corpus/templates/analytics/server/lib/slack.ts +242 -90
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +3 -3
- package/corpus/templates/analytics/server/routes/api/pylon/accounts.get.ts +42 -1
- package/corpus/templates/analytics/server/routes/api/pylon/issues.get.ts +71 -1
- package/corpus/templates/analytics/server/routes/api/test-connection.post.ts +44 -4
- package/corpus/templates/clips/actions/finalize-recording.ts +541 -62
- package/corpus/templates/clips/app/components/library/bulk-action-toolbar.tsx +19 -1
- package/corpus/templates/clips/app/components/library/create-folder-dialog.tsx +123 -0
- package/corpus/templates/clips/app/components/library/library-grid.tsx +42 -4
- package/corpus/templates/clips/app/components/library/recording-card.tsx +30 -0
- package/corpus/templates/clips/app/components/player/playback-comment-overlay.tsx +17 -2
- package/corpus/templates/clips/app/components/player/video-player.tsx +14 -2
- package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +2 -2
- package/corpus/templates/clips/app/entry.client.tsx +6 -1
- package/corpus/templates/clips/app/i18n/ar-SA.ts +12 -1
- package/corpus/templates/clips/app/i18n/de-DE.ts +12 -1
- package/corpus/templates/clips/app/i18n/en-US.ts +12 -1
- package/corpus/templates/clips/app/i18n/es-ES.ts +11 -1
- package/corpus/templates/clips/app/i18n/fr-FR.ts +11 -1
- package/corpus/templates/clips/app/i18n/hi-IN.ts +10 -1
- package/corpus/templates/clips/app/i18n/ja-JP.ts +12 -1
- package/corpus/templates/clips/app/i18n/ko-KR.ts +11 -1
- package/corpus/templates/clips/app/i18n/pt-BR.ts +11 -1
- package/corpus/templates/clips/app/i18n/zh-CN.ts +11 -1
- package/corpus/templates/clips/app/i18n/zh-TW.ts +11 -1
- package/corpus/templates/clips/app/routes/_app.settings._index.tsx +72 -1
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +1 -1
- package/corpus/templates/clips/app/routes/record.tsx +3 -3
- package/corpus/templates/clips/app/routes/share.$shareId.tsx +6 -3
- package/corpus/templates/clips/changelog/2026-07-17-choose-which-workspace-receives-new-clips-recordings-and-des.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-17-clips-now-retries-storage-verification-in-the-background-ins.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-17-create-folders-directly-from-the-move-menu.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-17-failed-desktop-uploads-now-offer-a-direct-way-to-reopen-clip.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-17-fixed-broken-thumbnail-icons-appearing-over-playable-clip-em.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-17-playback-comments-stay-readable-at-faster-playback-speeds.md +6 -0
- package/corpus/templates/clips/chrome-extension/src/finalize-recovery.ts +3 -0
- package/corpus/templates/clips/chrome-extension/src/offscreen.ts +3 -3
- package/corpus/templates/clips/desktop/src/app.tsx +19 -7
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +111 -13
- package/corpus/templates/clips/desktop/src/lib/upload-verification.ts +16 -7
- package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +2 -4
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen/live_upload.rs +32 -15
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +45 -18
- package/corpus/templates/clips/server/jobs/media-verification.ts +130 -0
- package/corpus/templates/clips/server/lib/builder-media-compression.ts +15 -0
- package/corpus/templates/clips/server/lib/media-verification-state.ts +38 -0
- package/corpus/templates/clips/server/lib/player-thumbnail-url.ts +31 -0
- package/corpus/templates/clips/server/lib/post-finalize-dispatch.ts +10 -3
- package/corpus/templates/clips/server/plugins/auth.ts +5 -5
- package/corpus/templates/clips/server/plugins/calendar-jobs.ts +2 -0
- package/corpus/templates/clips/server/routes/api/_agent-native-background/post-finalize-worker.post.ts +12 -2
- package/corpus/templates/clips/server/routes/api/public-recording.get.ts +6 -1
- package/corpus/templates/clips/server/routes/api/thumbnail/[recordingId].get.ts +340 -0
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/abort.post.ts +24 -7
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +91 -7
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/status.get.ts +14 -0
- package/corpus/templates/clips/shared/finalize-recovery.ts +61 -2
- package/corpus/templates/clips/shared/share-meta.ts +1 -1
- package/corpus/templates/content/app/entry.client.tsx +6 -1
- package/corpus/templates/dispatch/AGENTS.md +5 -0
- package/corpus/templates/dispatch/changelog/2026-07-17-apps-page-links-to-other-available-apps.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-07-17-curated-template-remixes.md +6 -0
- package/corpus/templates/mail/app/entry.client.tsx +6 -1
- package/corpus/templates/slides/.agents/skills/slide-images/SKILL.md +11 -7
- package/corpus/templates/slides/.env.example +0 -1
- package/corpus/templates/slides/AGENTS.md +4 -0
- package/corpus/templates/slides/DEVELOPING.md +2 -2
- package/corpus/templates/slides/actions/index-design-system-with-builder.ts +1 -1
- package/corpus/templates/slides/actions/logo-config.ts +6 -7
- package/corpus/templates/slides/actions/search-images.ts +11 -39
- package/corpus/templates/slides/actions/search-logos.ts +5 -52
- package/corpus/templates/slides/app/components/editor/ImageSearchPanel.tsx +1 -1
- package/corpus/templates/slides/app/components/editor/LogoSearchPanel.tsx +16 -26
- package/corpus/templates/slides/app/entry.client.tsx +6 -1
- package/corpus/templates/slides/server/lib/media-search-providers.ts +216 -0
- package/corpus/templates/slides/server/register-secrets.ts +30 -0
- package/dist/a2a/client.d.ts +47 -1
- package/dist/a2a/client.d.ts.map +1 -1
- package/dist/a2a/client.js +94 -12
- package/dist/a2a/client.js.map +1 -1
- package/dist/a2a/correlation.d.ts +10 -0
- package/dist/a2a/correlation.d.ts.map +1 -0
- package/dist/a2a/correlation.js +40 -0
- package/dist/a2a/correlation.js.map +1 -0
- package/dist/a2a/handlers.d.ts.map +1 -1
- package/dist/a2a/handlers.js +147 -15
- package/dist/a2a/handlers.js.map +1 -1
- package/dist/a2a/index.d.ts +4 -4
- package/dist/a2a/index.d.ts.map +1 -1
- package/dist/a2a/index.js +2 -2
- package/dist/a2a/index.js.map +1 -1
- package/dist/a2a/invoke.d.ts +29 -2
- package/dist/a2a/invoke.d.ts.map +1 -1
- package/dist/a2a/invoke.js +33 -1
- package/dist/a2a/invoke.js.map +1 -1
- package/dist/a2a/server.d.ts.map +1 -1
- package/dist/a2a/server.js +14 -1
- package/dist/a2a/server.js.map +1 -1
- package/dist/a2a/task-store.d.ts +12 -1
- package/dist/a2a/task-store.d.ts.map +1 -1
- package/dist/a2a/task-store.js +96 -6
- package/dist/a2a/task-store.js.map +1 -1
- package/dist/a2a/types.d.ts +27 -0
- package/dist/a2a/types.d.ts.map +1 -1
- package/dist/a2a/types.js.map +1 -1
- package/dist/action.d.ts +5 -2
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js.map +1 -1
- package/dist/agent/production-agent.d.ts +14 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +19 -3
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +14 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +158 -136
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +27 -4
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +21 -39
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/agent-sidebar-state.d.ts +1 -0
- package/dist/client/agent-sidebar-state.d.ts.map +1 -1
- package/dist/client/agent-sidebar-state.js +4 -0
- package/dist/client/agent-sidebar-state.js.map +1 -1
- package/dist/client/analytics.d.ts +14 -0
- package/dist/client/analytics.d.ts.map +1 -1
- package/dist/client/analytics.js +67 -0
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/chat/message-components.d.ts +8 -0
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +62 -19
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/chat/tool-call-display.d.ts +6 -0
- package/dist/client/chat/tool-call-display.d.ts.map +1 -1
- package/dist/client/chat/tool-call-display.js +83 -14
- package/dist/client/chat/tool-call-display.js.map +1 -1
- package/dist/client/chat/use-agent-chat-lifecycle-tracking.d.ts +8 -0
- package/dist/client/chat/use-agent-chat-lifecycle-tracking.d.ts.map +1 -0
- package/dist/client/chat/use-agent-chat-lifecycle-tracking.js +51 -0
- package/dist/client/chat/use-agent-chat-lifecycle-tracking.js.map +1 -0
- package/dist/client/chat-thread-url.d.ts +2 -0
- package/dist/client/chat-thread-url.d.ts.map +1 -0
- package/dist/client/chat-thread-url.js +12 -0
- package/dist/client/chat-thread-url.js.map +1 -0
- package/dist/client/error-capture.d.ts.map +1 -1
- package/dist/client/error-capture.js +7 -0
- package/dist/client/error-capture.js.map +1 -1
- package/dist/client/extensions/ExtensionSlot.d.ts +3 -1
- package/dist/client/extensions/ExtensionSlot.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionSlot.js +28 -3
- package/dist/client/extensions/ExtensionSlot.js.map +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/route-chunk-recovery.d.ts.map +1 -1
- package/dist/client/route-chunk-recovery.js +14 -9
- package/dist/client/route-chunk-recovery.js.map +1 -1
- package/dist/client/session-replay.d.ts +15 -0
- package/dist/client/session-replay.d.ts.map +1 -1
- package/dist/client/session-replay.js +20 -0
- package/dist/client/session-replay.js.map +1 -1
- package/dist/client/use-run-stuck-detection.d.ts.map +1 -1
- package/dist/client/use-run-stuck-detection.js +25 -1
- package/dist/client/use-run-stuck-detection.js.map +1 -1
- package/dist/db/client.d.ts +7 -0
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +33 -0
- package/dist/db/client.js.map +1 -1
- package/dist/extensions/actions.d.ts.map +1 -1
- package/dist/extensions/actions.js +2 -10
- package/dist/extensions/actions.js.map +1 -1
- package/dist/extensions/store.js +1 -1
- package/dist/extensions/store.js.map +1 -1
- package/dist/localization/default-messages.d.ts +3 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +3 -0
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/mcp/build-server.d.ts +2 -0
- package/dist/mcp/build-server.d.ts.map +1 -1
- package/dist/mcp/build-server.js +2 -2
- package/dist/mcp/build-server.js.map +1 -1
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/routes.d.ts +5 -5
- package/dist/observability/traces.d.ts +9 -0
- package/dist/observability/traces.d.ts.map +1 -1
- package/dist/observability/traces.js +137 -19
- package/dist/observability/traces.js.map +1 -1
- package/dist/progress/actions.d.ts.map +1 -1
- package/dist/progress/actions.js +3 -2
- package/dist/progress/actions.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/provider-api/index.d.ts.map +1 -1
- package/dist/provider-api/index.js +91 -8
- package/dist/provider-api/index.js.map +1 -1
- package/dist/scripts/call-agent.d.ts.map +1 -1
- package/dist/scripts/call-agent.js +140 -17
- package/dist/scripts/call-agent.js.map +1 -1
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/agent-chat/action-filters-a2a.d.ts +24 -2
- package/dist/server/agent-chat/action-filters-a2a.d.ts.map +1 -1
- package/dist/server/agent-chat/action-filters-a2a.js +62 -7
- package/dist/server/agent-chat/action-filters-a2a.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +118 -5
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/styles/agent-conversation.css +7 -0
- package/dist/templates/default/app/i18n/ar-SA.ts +20 -0
- package/dist/templates/default/app/i18n/de-DE.ts +20 -0
- package/dist/templates/default/app/i18n/en-US.ts +20 -0
- package/dist/templates/default/app/i18n/es-ES.ts +20 -0
- package/dist/templates/default/app/i18n/fr-FR.ts +21 -0
- package/dist/templates/default/app/i18n/hi-IN.ts +19 -0
- package/dist/templates/default/app/i18n/ja-JP.ts +20 -0
- package/dist/templates/default/app/i18n/ko-KR.ts +19 -0
- package/dist/templates/default/app/i18n/pt-BR.ts +20 -0
- package/dist/templates/default/app/i18n/zh-CN.ts +19 -0
- package/dist/templates/default/app/i18n/zh-TW.ts +19 -0
- package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +49 -0
- package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +5 -0
- package/dist/templates/workspace-core/.agents/skills/observability/SKILL.md +7 -1
- package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +13 -0
- package/dist/templates/workspace-core/.agents/skills/tracking/SKILL.md +1 -1
- package/package.json +1 -1
- package/src/templates/default/app/i18n/ar-SA.ts +20 -0
- package/src/templates/default/app/i18n/de-DE.ts +20 -0
- package/src/templates/default/app/i18n/en-US.ts +20 -0
- package/src/templates/default/app/i18n/es-ES.ts +20 -0
- package/src/templates/default/app/i18n/fr-FR.ts +21 -0
- package/src/templates/default/app/i18n/hi-IN.ts +19 -0
- package/src/templates/default/app/i18n/ja-JP.ts +20 -0
- package/src/templates/default/app/i18n/ko-KR.ts +19 -0
- package/src/templates/default/app/i18n/pt-BR.ts +20 -0
- package/src/templates/default/app/i18n/zh-CN.ts +19 -0
- package/src/templates/default/app/i18n/zh-TW.ts +19 -0
- package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +49 -0
- package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +5 -0
- package/src/templates/workspace-core/.agents/skills/observability/SKILL.md +7 -1
- package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +13 -0
- package/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +1 -1
- package/corpus/templates/analytics/server/handlers/github.ts +0 -200
- package/corpus/templates/analytics/server/handlers/pylon.ts +0 -43
- package/corpus/templates/analytics/server/lib/apollo.ts +0 -167
- package/corpus/templates/analytics/server/lib/commonroom.ts +0 -149
- package/corpus/templates/analytics/server/lib/github.ts +0 -660
- package/corpus/templates/analytics/server/lib/mixpanel.ts +0 -156
- package/corpus/templates/analytics/server/lib/posthog.ts +0 -194
- package/corpus/templates/analytics/server/lib/pylon.ts +0 -109
- package/corpus/templates/analytics/server/routes/api/github/graphql.post.ts +0 -1
- package/corpus/templates/analytics/server/routes/api/github/issue.get.ts +0 -1
- package/corpus/templates/analytics/server/routes/api/github/org-prs.get.ts +0 -1
- package/corpus/templates/analytics/server/routes/api/github/pr.get.ts +0 -1
- package/corpus/templates/analytics/server/routes/api/github/prs.get.ts +0 -1
- package/corpus/templates/analytics/server/routes/api/github/search.get.ts +0 -1
- package/corpus/templates/slides/actions/fetch-logos.ts +0 -90
- package/corpus/templates/slides/actions/image-search.ts +0 -64
- package/corpus/templates/slides/actions/import-github.ts +0 -182
- package/corpus/templates/slides/actions/logo-lookup.ts +0 -113
|
@@ -117,6 +117,54 @@ const answer = await callAgent(
|
|
|
117
117
|
// answer is a plain string
|
|
118
118
|
```
|
|
119
119
|
|
|
120
|
+
### Fast bounded read: `invokeAgentAction()`
|
|
121
|
+
|
|
122
|
+
When the caller knows the exact receiver-owned read action and arguments, skip
|
|
123
|
+
the receiver's model loop:
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
import { invokeAgentAction } from "@agent-native/core/a2a";
|
|
127
|
+
|
|
128
|
+
const { result } = await invokeAgentAction({
|
|
129
|
+
target: "analytics",
|
|
130
|
+
action: "gong-calls",
|
|
131
|
+
input: { company: "Acme", days: 90, includeTranscripts: true },
|
|
132
|
+
userEmail,
|
|
133
|
+
orgDomain,
|
|
134
|
+
orgSecret,
|
|
135
|
+
});
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
The receiver still owns schema validation, credentials, access scoping, audit
|
|
139
|
+
attribution, and exposure policy. Direct invocation is available only for
|
|
140
|
+
cataloged, authenticated, explicitly exposed read-only actions that do not
|
|
141
|
+
require approval. Its JWT is audience-bound to the receiving app. Use normal
|
|
142
|
+
message delegation for planning, synthesis, multi-step work, or mutations.
|
|
143
|
+
|
|
144
|
+
Inside an agent loop, `call-agent` exposes the same path with `action` + `input`;
|
|
145
|
+
omit `message` and `taskId` in that mode.
|
|
146
|
+
|
|
147
|
+
### Retry safety and trace linkage
|
|
148
|
+
|
|
149
|
+
`call-agent` automatically derives an owner-scoped idempotency key from the
|
|
150
|
+
originating turn, target, and exact message. If a retry reaches the receiver
|
|
151
|
+
after the caller timed out, asynchronous `message/send` returns the existing
|
|
152
|
+
active or completed task instead of starting a duplicate agent run. Failed and
|
|
153
|
+
canceled tasks release the key for an intentional retry; synchronous calls are
|
|
154
|
+
never deduplicated. Lower-level clients may pass an
|
|
155
|
+
`idempotencyKey` explicitly; keep it stable for the same logical submission and
|
|
156
|
+
change it when the work changes. Dedupe is scoped to the JWT-authenticated
|
|
157
|
+
owner and verified org, and keys are limited to 128 characters.
|
|
158
|
+
|
|
159
|
+
The caller also forwards bounded correlation metadata (`callerApp`,
|
|
160
|
+
`callerThreadId`, `parentRunId`, `parentTurnId`, and direct-read
|
|
161
|
+
`invocationId`). These fields
|
|
162
|
+
are telemetry hints only. Receivers must continue to derive identity,
|
|
163
|
+
ownership, org scope, access, and approval from the verified request context.
|
|
164
|
+
Delegated model loops emit `$ai_generation` with A2A/MCP lineage, while direct
|
|
165
|
+
reads emit the content-free `$a2a_read_invoke` event; neither event includes
|
|
166
|
+
action arguments or results.
|
|
167
|
+
|
|
120
168
|
### Advanced: `A2AClient` (full control)
|
|
121
169
|
|
|
122
170
|
```ts
|
|
@@ -178,6 +226,7 @@ cannot carry these grants.
|
|
|
178
226
|
| ---------------- | -------------------------------- | ------------- |
|
|
179
227
|
| `message/send` | Send a message, get a task back | Yes |
|
|
180
228
|
| `message/stream` | Send a message, stream responses | Yes |
|
|
229
|
+
| `actions/invoke` | Invoke one exposed read action | Yes, JWT |
|
|
181
230
|
| `tasks/get` | Get task status by ID | Yes |
|
|
182
231
|
| `tasks/cancel` | Cancel a running task | Yes |
|
|
183
232
|
|
package/corpus/core/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md
CHANGED
|
@@ -42,6 +42,11 @@ The main agent should discover available siblings before assuming capability:
|
|
|
42
42
|
- In the agent loop, use `call-agent` with the sibling app id when another app
|
|
43
43
|
owns the work or data. Never call the current app through `call-agent`; use
|
|
44
44
|
local actions instead.
|
|
45
|
+
- When the exact sibling-owned read action and input are already known, use
|
|
46
|
+
`invokeAgentAction()` or `call-agent` with `action` + `input`. This preserves
|
|
47
|
+
the receiver's credentials and access checks while skipping its second model
|
|
48
|
+
loop. Use prompt-based `invokeAgent()` only when the sibling must reason,
|
|
49
|
+
synthesize, mutate, or perform a multi-step workflow.
|
|
45
50
|
|
|
46
51
|
Send narrow prompts to siblings: name the exact question, relevant ids, date
|
|
47
52
|
ranges, and expected output shape. Preserve returned ids and URLs verbatim.
|
|
@@ -285,7 +285,13 @@ LLM generation:
|
|
|
285
285
|
- Agent Native Analytics shape: the same event lands in `analytics_events` with
|
|
286
286
|
mirrored query-friendly properties such as `run_id`, `thread_id`,
|
|
287
287
|
`cost_cents_x100`, `duration_ms`, `tool_calls`, `successful_tools`,
|
|
288
|
-
`failed_tools`, and `status`.
|
|
288
|
+
`failed_tools`, and `status`. A content-free `tools` array includes at most
|
|
289
|
+
50 tool names, start offsets, durations, statuses, and coarse error classes;
|
|
290
|
+
interrupted calls are finalized as errors, and failed runs still emit with
|
|
291
|
+
zero or known usage. `tools_truncated` marks longer runs while the rollup counts remain complete.
|
|
292
|
+
Delegated runs add `delegation_protocol`, `caller_app`, `a2a_task_id`, and
|
|
293
|
+
`parent_run_id` when available. `parent_turn_id` is separate because one
|
|
294
|
+
logical turn may span multiple concrete runs.
|
|
289
295
|
|
|
290
296
|
Do not build a separate LLM-observability ingestion API unless there is a clear
|
|
291
297
|
reason the tracking provider registry cannot express the use case. Keep prompt,
|
|
@@ -99,6 +99,19 @@ index the growing tables first.
|
|
|
99
99
|
`await`s — each `await` is another round-trip.
|
|
100
100
|
- Prefer **one composed endpoint** over several dependent calls.
|
|
101
101
|
|
|
102
|
+
For provider wrappers, inspect the upstream API before building a list-then-
|
|
103
|
+
enrich flow. Prefer the richest endpoint that can apply the real filters and
|
|
104
|
+
return the needed associations or participants in one paginated operation.
|
|
105
|
+
Cursor pagination is already serial; adding a serial detail/enrichment request
|
|
106
|
+
to every page doubles its critical path. Exhaustive records belong in corpus
|
|
107
|
+
recipes or data programs with explicit coverage, not one agent tool call per
|
|
108
|
+
page or item.
|
|
109
|
+
|
|
110
|
+
First-class provider actions should represent one stable conceptual operation.
|
|
111
|
+
Keep arbitrary endpoint, filter, and pagination access in the provider API
|
|
112
|
+
substrate; do not turn a convenience action into a capability ceiling or
|
|
113
|
+
duplicate the provider transport, auth, quota, and cache implementation.
|
|
114
|
+
|
|
102
115
|
## 4. Avoid client-side waterfalls
|
|
103
116
|
|
|
104
117
|
- Don't gate query B on query A's result unless B truly needs it. Fire
|
|
@@ -141,7 +141,7 @@ Other framework-level baseline events:
|
|
|
141
141
|
- `signup` from Better Auth user creation, with `auth_provider`, `auth_user_id`, and first-touch referral attribution (`referral_source`, `referrer_user`, `referral_medium`, `referral_campaign`, `utm_*`, `first_touch_path`, `landing_referrer` — see "Referral / viral attribution" above)
|
|
142
142
|
- `builder connect clicked` and `builder connect popup blocked` from browser Connect Builder CTAs
|
|
143
143
|
- `builder connect started`, `builder connect succeeded`, `builder connect failed`, `builder disconnect succeeded`, and `builder disconnect failed` from the Builder connection routes, with LLM connection context when resolvable
|
|
144
|
-
- `$ai_generation` from instrumented agent loops, with PostHog AI Observability fields such as `$ai_trace_id`, `$ai_session_id`, `$ai_model`, `$ai_provider`, `$ai_input_tokens`, `$ai_output_tokens`, `$ai_latency`, `$ai_total_cost_usd`, and mirrored Agent Native query fields such as `run_id`, `thread_id`, `cost_cents_x100`, `duration_ms`, `tool_calls`, and `status`. Prompt, tool argument, and output content is
|
|
144
|
+
- `$ai_generation` from instrumented agent loops, with PostHog AI Observability fields such as `$ai_trace_id`, `$ai_session_id`, `$ai_model`, `$ai_provider`, `$ai_input_tokens`, `$ai_output_tokens`, `$ai_latency`, `$ai_total_cost_usd`, and mirrored Agent Native query fields such as `run_id`, `thread_id`, `cost_cents_x100`, `duration_ms`, `tool_calls`, and `status`. A bounded `tools` array contains names, start offsets, durations, statuses, and coarse error classes only; interrupted tools and failed runs remain visible, and delegated runs include protocol/task/parent-run/parent-turn correlation. Prompt, tool argument, result, and output content is excluded.
|
|
145
145
|
|
|
146
146
|
For new lifecycle events, call `track()` server-side when the server is the source of truth, and `trackEvent()` client-side only for browser interactions.
|
|
147
147
|
|
|
@@ -83,7 +83,7 @@ When the user asks for a dashboard:
|
|
|
83
83
|
2. If a metric definition, date range, or grain is ambiguous and the choice would change the panel's numbers, use the `ask-question` clarifying tool once before building. Skip it when the dictionary or the user already settled it.
|
|
84
84
|
3. If a metric is not documented, do not guess column names. Ask for the table/columns or introspect the provider schema, then propose a dictionary entry with `save-data-dictionary-entry`.
|
|
85
85
|
4. Build a complete `SqlDashboardConfig` with `name` and `panels`. Optionally set top-level `columns` (1–6, default 2) to control how many grid columns the panels before any section use.
|
|
86
|
-
5. Every panel needs `id`, `title`, `source`, `chartType`, `width`, and `sql`. `width` is the number of grid columns the panel spans (1..6, clamped to the active section's column count). Section panels skip `source` and `sql` and may set their own `columns` (1–6) to override the dashboard default for the panels following the section. Extension panels (`chartType: "extension"`) also skip `source` and `sql`; use `config.
|
|
86
|
+
5. Every panel needs `id`, `title`, `source`, `chartType`, `width`, and `sql`. `width` is the number of grid columns the panel spans (1..6, clamped to the active section's column count). Section panels skip `source` and `sql` and may set their own `columns` (1–6) to override the dashboard default for the panels following the section. Extension panels (`chartType: "extension"`) also skip `source` and `sql`; use `config.extensionId` for ordinary author-selected shared embeds. Use `config.extensionSlotId` only when the user explicitly asks for a personal/per-viewer slot (see "Embedding An Extension As A Panel").
|
|
87
87
|
6. Persist with `update-dashboard`, not raw SQL or settings writes.
|
|
88
88
|
7. Navigate to it with `pnpm action navigate --view=adhoc --dashboardId=<id>`.
|
|
89
89
|
|
|
@@ -115,8 +115,27 @@ rather than forcing it into a native dashboard config.
|
|
|
115
115
|
## Embedding An Extension As A Panel
|
|
116
116
|
|
|
117
117
|
Use `chartType: "extension"` to add an extension box alongside normal SQL
|
|
118
|
-
charts. The panel skips `source` and `sql`.
|
|
119
|
-
|
|
118
|
+
charts. The panel skips `source` and `sql`. For ordinary requests such as "put
|
|
119
|
+
X in this dashboard," save the author-selected extension id in
|
|
120
|
+
`config.extensionId`. This makes the selection part of the shared dashboard and
|
|
121
|
+
keeps the widget present in scheduled report captures:
|
|
122
|
+
|
|
123
|
+
```jsonc
|
|
124
|
+
{
|
|
125
|
+
"id": "pipeline-widget",
|
|
126
|
+
"title": "Pipeline Widget",
|
|
127
|
+
"chartType": "extension",
|
|
128
|
+
"width": 3,
|
|
129
|
+
"config": { "extensionId": "extension-123" },
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Direct embeds receive the dashboard id, name, description, current filters,
|
|
134
|
+
and panel context. Embedding does not grant extension access, so share the
|
|
135
|
+
extension with the dashboard audience.
|
|
136
|
+
|
|
137
|
+
Use a stable `config.extensionSlotId` only when the user explicitly wants each
|
|
138
|
+
viewer to choose or install their own widget:
|
|
120
139
|
|
|
121
140
|
```text
|
|
122
141
|
analytics.dashboard.<dashboard-id>.panel.<panel-id>
|
|
@@ -141,14 +160,14 @@ Empty slots show the normal install affordance instead of a broken iframe.
|
|
|
141
160
|
|
|
142
161
|
Notes:
|
|
143
162
|
|
|
144
|
-
-
|
|
145
|
-
filters, and panel id/title/slot id as live context.
|
|
163
|
+
- Both direct and slot-backed extensions receive dashboard and panel context.
|
|
146
164
|
- Installs and extension access are per viewer. Sharing the dashboard does not
|
|
147
165
|
automatically install or grant access to its extension for other viewers.
|
|
148
|
-
-
|
|
149
|
-
|
|
166
|
+
- Slot installs are per-user preferences. Different viewers can see different
|
|
167
|
+
widgets, and scheduled reports running as a service identity may show an
|
|
168
|
+
empty slot. This is why slots are opt-in rather than the default.
|
|
150
169
|
|
|
151
|
-
## Cloning A
|
|
170
|
+
## Cloning A Direct-Extension Dashboard (e.g. per-customer copies)
|
|
152
171
|
|
|
153
172
|
When the user asks for a copy of an existing extension-backed dashboard for a
|
|
154
173
|
different customer/org (for example "make an Intuit version of the Roku usage
|
|
@@ -159,7 +178,7 @@ from that written file — never by pulling the body into chat context first or
|
|
|
159
178
|
re-typing it as a `content` argument.
|
|
160
179
|
|
|
161
180
|
1. `get-sql-dashboard` with `includeConfig: true` on the source dashboard and
|
|
162
|
-
confirm the target panel is a
|
|
181
|
+
confirm the target panel is a `chartType: "extension"` panel with
|
|
163
182
|
`config.extensionId`; grab that extension id. For a slot-backed panel, clone
|
|
164
183
|
the dashboard panel with a new stable `extensionSlotId`, then target and
|
|
165
184
|
install the desired extension into that slot instead of using this body-copy
|
|
@@ -405,7 +424,7 @@ type PanelInput = PanelPatch & {
|
|
|
405
424
|
chartType: NonNullable<PanelPatch["chartType"]>;
|
|
406
425
|
source?: PanelPatch["source"]; // required for non-section / non-extension panels
|
|
407
426
|
sql?: string; // required for non-section / non-extension panels
|
|
408
|
-
// For chartType "extension": use config.
|
|
427
|
+
// For chartType "extension": use config.extensionId by default; extensionSlotId is opt-in per-viewer content.
|
|
409
428
|
};
|
|
410
429
|
|
|
411
430
|
type PanelFilter = {
|
|
@@ -12,6 +12,15 @@ dive that asks what happened in customer conversations.
|
|
|
12
12
|
|
|
13
13
|
## Actions
|
|
14
14
|
|
|
15
|
+
- `gong-native-insights` — one provider-native qualitative synthesis operation
|
|
16
|
+
(`ask_account`, `ask_deal`, or `generate_brief`) through Gong's connected MCP.
|
|
17
|
+
Use it for themes, risks, summaries, and deck narrative when the native tools
|
|
18
|
+
are connected. One action invocation makes at most one Gong AI request; omit
|
|
19
|
+
`operation` to inspect its schemas without spending a credit request, and set
|
|
20
|
+
`allowCreditRequest=true` only for the one consolidated request you intend to
|
|
21
|
+
send. Paid calls also require a workspace owner to enable them once with
|
|
22
|
+
`configure-gong-native-insights`; the policy defaults off and disabling it
|
|
23
|
+
never blocks the raw evidence path.
|
|
15
24
|
- `account-deep-dive` — first choice for named account/deal deep dives that
|
|
16
25
|
need HubSpot plus Gong. It searches by account/deal/company/contact domain,
|
|
17
26
|
loads Gong call details, and returns compact transcript excerpts for synthesis.
|
|
@@ -19,18 +28,32 @@ dive that asks what happened in customer conversations.
|
|
|
19
28
|
a single transcript by call ID, or return transcript excerpts for matching
|
|
20
29
|
calls.
|
|
21
30
|
|
|
22
|
-
##
|
|
31
|
+
## Route Synthesis and Evidence Separately
|
|
23
32
|
|
|
24
|
-
|
|
25
|
-
|
|
33
|
+
- Use `gong-native-insights` for qualitative synthesis where Gong may retrieve
|
|
34
|
+
and analyze evidence internally. Its result is provider synthesis: coverage
|
|
35
|
+
is unknown and raw transcript evidence is unavailable.
|
|
36
|
+
- Use `gong-calls` or `provider-corpus-job` for quotes, exact counts, transcript
|
|
37
|
+
records, coverage-sensitive claims, and proof that something was absent.
|
|
38
|
+
- Consolidate related native questions into one narrowly scoped request. Each
|
|
39
|
+
native operation independently consumes Gong credits, so do not make one call
|
|
40
|
+
per slide, bullet, or sub-question.
|
|
41
|
+
- From a sibling app, call the exact cataloged read action directly through
|
|
42
|
+
`call-agent`'s `action` + `input` mode. This skips Analytics' second model loop.
|
|
43
|
+
Use ordinary message delegation only when Analytics must plan, join sources,
|
|
44
|
+
or synthesize across multiple operations.
|
|
26
45
|
|
|
27
|
-
|
|
28
|
-
directly.
|
|
29
|
-
2. **Party/email-domain match second**: for calls that did not title-match,
|
|
30
|
-
fetch party data via the extensive endpoint and match against external
|
|
31
|
-
participant names, emails, and email domains.
|
|
46
|
+
## Account Search Algorithm
|
|
32
47
|
|
|
33
|
-
|
|
48
|
+
Gong search pages `POST /v2/calls/extensive` directly with the requested date
|
|
49
|
+
window and party data (not `GET /v2/calls`, which returns no parties). Each call
|
|
50
|
+
is matched against both:
|
|
51
|
+
|
|
52
|
+
1. **Title variants**: the call title contains a generated search variant.
|
|
53
|
+
2. **External parties**: an external participant's name, email, or domain
|
|
54
|
+
matches a generated search variant.
|
|
55
|
+
|
|
56
|
+
This catches calls titled "Builder <> Acme" when you search
|
|
34
57
|
"Acme Corp" by matching the "acme" name variant or "@acme.com" domain variant.
|
|
35
58
|
The lib generates variants by stripping deal suffixes (`- New Deal`, `- Fusion`),
|
|
36
59
|
corporate suffixes (`Group`, `Inc`, `Corp`, `LLC`), and deriving first word and
|
|
@@ -63,6 +86,10 @@ For account or deal deep dives:
|
|
|
63
86
|
4. Use `transcriptLimit` around 3-5 for a first pass. For broad coverage of a
|
|
64
87
|
named account, increase to 10-20 — the action supports up to 50. Increase
|
|
65
88
|
when the returned calls don't cover the time window or key people you need.
|
|
89
|
+
For a bounded "review all calls" request with at most 50 matches, make one
|
|
90
|
+
call with `exhaustive=true`, `after`, `before`, and
|
|
91
|
+
`includeTranscripts=true`; do not split discovery and transcripts into
|
|
92
|
+
separate agent tool calls.
|
|
66
93
|
5. Use the compact transcript excerpts returned by `includeTranscripts=true`.
|
|
67
94
|
Do not fetch raw individual transcripts unless the user asks for exhaustive
|
|
68
95
|
quoting, debugging, or export.
|
|
@@ -91,22 +118,26 @@ When a single transcript is needed, `gong-calls(transcript: "...")` returns
|
|
|
91
118
|
compact extracted text by default. Set `rawTranscript=true` only for
|
|
92
119
|
debugging/export, and never pass raw transcript payloads into `save-analysis`.
|
|
93
120
|
|
|
94
|
-
## Complete-Coverage Transcript Scan
|
|
121
|
+
## Complete-Coverage Transcript Scan
|
|
95
122
|
|
|
96
123
|
When the question is "do ANY of these calls mention X?" or "how many calls across
|
|
97
124
|
this cohort mention X?" — where missing a single call makes the answer wrong — do
|
|
98
|
-
NOT
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
`
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
125
|
+
NOT conclude absence from a sampled `includeTranscripts` result. Choose the
|
|
126
|
+
smallest complete path for the bounded cohort:
|
|
127
|
+
|
|
128
|
+
1. **Named account, up to 50 calls, qualitative review.** Make one `gong-calls`
|
|
129
|
+
call with `exhaustive=true`, a bounded `after`/`before` window, and
|
|
130
|
+
`includeTranscripts=true`. The action discovers every matching call and
|
|
131
|
+
fetches transcript excerpts in batches, returning `transcriptCoverage`. Do
|
|
132
|
+
not fetch the same call IDs one at a time afterward.
|
|
133
|
+
|
|
134
|
+
2. **Bounded mention/absence search, up to 200 calls.** Make one `gong-calls`
|
|
135
|
+
call with `exhaustive=true`, the date window, `transcriptQuery`, and an
|
|
136
|
+
adequate `transcriptScanLimit`. Report its coverage fields and only make an
|
|
137
|
+
absence claim when coverage is complete.
|
|
138
|
+
|
|
139
|
+
3. **Larger or multi-account corpus.** Prefer `provider-corpus-job` with
|
|
140
|
+
`mode: "batch-search"` over one-call-at-a-time loops. Use
|
|
110
141
|
`provider-api-catalog(provider: "gong")` and its `corpusRecipes` if you need
|
|
111
142
|
the exact shape. The canonical request is `POST /calls/transcript` with
|
|
112
143
|
`batch.itemBodyPath: "filter.callIds"`, `batch.responseItemsPath:
|
|
@@ -115,7 +146,7 @@ negative. Use this two-step pattern:
|
|
|
115
146
|
call IDs through `batch.inputDatasetId` + `batch.inputValuePath` or through
|
|
116
147
|
`batch.items`.
|
|
117
148
|
|
|
118
|
-
|
|
149
|
+
4. **Use `run-code` only for joins/reductions around the corpus path.** After
|
|
119
150
|
the transcript job exists, use `run-code`, `query-staged-dataset`, or job
|
|
120
151
|
results to join hits back to deals/accounts, compute variants, dedupe, and
|
|
121
152
|
format evidence. A `run-code` loop over `gong-calls(transcript: id)` is a
|
|
@@ -7,54 +7,32 @@ description: >
|
|
|
7
7
|
|
|
8
8
|
# Apollo.io Integration (Contact & Company Enrichment)
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## Use the shared provider API actions
|
|
11
11
|
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
- **Env vars**: `APOLLO_API_KEY`
|
|
15
|
-
- **Caching**: 10-minute in-memory cache, max 120 entries
|
|
12
|
+
Apollo has no provider-specific action, route, or server client in Analytics.
|
|
13
|
+
Use the shared provider API substrate:
|
|
16
14
|
|
|
17
|
-
|
|
15
|
+
- `provider-api-catalog` with `provider: "apollo"` to inspect the registered
|
|
16
|
+
base URL, authentication, official docs, placeholders, and examples.
|
|
17
|
+
- `provider-api-docs` before relying on a remembered endpoint or request body.
|
|
18
|
+
- `provider-api-request` for the authenticated request. The server injects
|
|
19
|
+
`APOLLO_API_KEY` as `x-api-key`; never pass the key in action arguments.
|
|
18
20
|
|
|
19
|
-
|
|
21
|
+
For large searches, pass `stageAs` and the documented pagination settings, then
|
|
22
|
+
use `query-staged-dataset` to filter or aggregate without loading the full
|
|
23
|
+
response into agent context.
|
|
20
24
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
| Function | Description |
|
|
24
|
-
| ------------------------------------- | --------------------------------------------------- |
|
|
25
|
-
| `searchPeople(params)` | Search people by criteria |
|
|
26
|
-
| `enrichPerson(email)` | Enrich a contact by email (returns null on failure) |
|
|
27
|
-
| `searchOrganizations(query, params?)` | Search companies |
|
|
28
|
-
| `enrichOrganization(domain)` | Enrich company by domain (returns null on failure) |
|
|
29
|
-
|
|
30
|
-
### API Routes
|
|
31
|
-
|
|
32
|
-
| Route | Description |
|
|
33
|
-
| ------------------------ | ------------------------- |
|
|
34
|
-
| `GET /api/apollo/search` | Search contacts/companies |
|
|
35
|
-
|
|
36
|
-
## Script Usage
|
|
25
|
+
## Example workflow
|
|
37
26
|
|
|
38
27
|
```bash
|
|
39
|
-
|
|
40
|
-
pnpm action
|
|
41
|
-
|
|
42
|
-
# Search by company
|
|
43
|
-
pnpm action apollo-search --company=Example Inc
|
|
44
|
-
|
|
45
|
-
# Search by domain
|
|
46
|
-
pnpm action apollo-search --domain=example.com
|
|
47
|
-
|
|
48
|
-
# Find decision-makers
|
|
49
|
-
pnpm action apollo-search --company=Example Inc --title=CTO
|
|
50
|
-
|
|
51
|
-
# Search by name
|
|
52
|
-
pnpm action apollo-search --name="John Smith"
|
|
28
|
+
pnpm action provider-api-catalog --provider=apollo
|
|
29
|
+
pnpm action provider-api-docs --provider=apollo
|
|
30
|
+
pnpm action provider-api-request --provider=apollo --method=POST --path=/api/v1/mixed_people/search --body='{"q_keywords":"vp marketing","page":1,"per_page":10}'
|
|
53
31
|
```
|
|
54
32
|
|
|
55
33
|
## Key Patterns & Gotchas
|
|
56
34
|
|
|
57
|
-
-
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
35
|
+
- Apollo search and enrichment endpoints use POST; confirm current endpoint
|
|
36
|
+
paths and payloads through `provider-api-docs` before calling them.
|
|
37
|
+
- Report the method, path, filters, returned row count, and pagination coverage.
|
|
38
|
+
- Do not treat a default page as complete coverage.
|
|
@@ -7,48 +7,33 @@ description: >
|
|
|
7
7
|
|
|
8
8
|
# Common Room Integration (Community)
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## Use the shared provider API actions
|
|
11
11
|
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
- **Env vars**: `COMMONROOM_API_TOKEN`
|
|
15
|
-
- **Caching**: 10-minute in-memory cache, max 120 entries
|
|
12
|
+
Common Room has no provider-specific action, route, or server client in
|
|
13
|
+
Analytics. Use the shared provider API substrate:
|
|
16
14
|
|
|
17
|
-
|
|
15
|
+
- `provider-api-catalog` with `provider: "commonroom"` to inspect the
|
|
16
|
+
registered base URL, authentication, official docs, and examples.
|
|
17
|
+
- `provider-api-docs` before relying on a remembered endpoint, filter, or
|
|
18
|
+
pagination shape.
|
|
19
|
+
- `provider-api-request` for the authenticated request. The server injects
|
|
20
|
+
`COMMONROOM_API_TOKEN` as a bearer token; never pass it in action arguments.
|
|
18
21
|
|
|
19
|
-
|
|
22
|
+
For broad member or activity pulls, pass `stageAs` and the documented
|
|
23
|
+
pagination settings, then use `query-staged-dataset` to search or aggregate the
|
|
24
|
+
complete staged cohort.
|
|
20
25
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
| Function | Description |
|
|
24
|
-
| -------------------------------- | --------------------------------------------------- |
|
|
25
|
-
| `getTokenStatus()` | Check API token validity |
|
|
26
|
-
| `getMemberByEmail(email)` | Look up a member by email (returns null on failure) |
|
|
27
|
-
| `getMembers(params?)` | Search members (POST with query, cursor, limit) |
|
|
28
|
-
| `getActivityForMember(memberId)` | Get activity feed for a member |
|
|
29
|
-
| `getSegments()` | List community segments |
|
|
30
|
-
|
|
31
|
-
### API Routes
|
|
32
|
-
|
|
33
|
-
| Route | Description |
|
|
34
|
-
| ----------------------------- | ------------------------ |
|
|
35
|
-
| `GET /api/commonroom/members` | Search community members |
|
|
36
|
-
|
|
37
|
-
## Script Usage
|
|
26
|
+
## Example workflow
|
|
38
27
|
|
|
39
28
|
```bash
|
|
40
|
-
|
|
41
|
-
pnpm action
|
|
42
|
-
|
|
43
|
-
# Search by query
|
|
44
|
-
pnpm action commonroom-members --query=search_term
|
|
45
|
-
|
|
46
|
-
# List segments
|
|
47
|
-
pnpm action commonroom-members --segments
|
|
29
|
+
pnpm action provider-api-catalog --provider=commonroom
|
|
30
|
+
pnpm action provider-api-docs --provider=commonroom
|
|
31
|
+
pnpm action provider-api-request --provider=commonroom --method=GET --path=/members
|
|
48
32
|
```
|
|
49
33
|
|
|
50
34
|
## Key Patterns & Gotchas
|
|
51
35
|
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
36
|
+
- Verify member-search, activity, and segment endpoints in
|
|
37
|
+
`provider-api-docs`; do not rely on the removed bespoke client's assumptions.
|
|
38
|
+
- Report the method, path, filters, returned row count, and pagination coverage.
|
|
39
|
+
- Use raw activity/member evidence for exhaustive or absence-sensitive claims.
|
|
@@ -7,70 +7,29 @@ description: >
|
|
|
7
7
|
|
|
8
8
|
# GitHub Integration
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
| `getIssue(owner, repo, number)` | Issue detail with labels, assignees |
|
|
30
|
-
| `listPRs(owner, repo, opts)` | List repo PRs by state (open/closed/all) |
|
|
31
|
-
| `searchOrgPRs(opts)` | Convenience wrapper — prepends the `org:<org> is:pr` qualifiers |
|
|
32
|
-
| `runGraphQL(query, variables?)` | Raw GraphQL query |
|
|
33
|
-
|
|
34
|
-
### API Routes
|
|
35
|
-
|
|
36
|
-
| Route | Description |
|
|
37
|
-
| -------------------------------------------------------------------- | -------------------------------------- |
|
|
38
|
-
| `GET /api/github/search?q=...&type=pr\|issue&limit=30` | Full GitHub search syntax |
|
|
39
|
-
| `GET /api/github/pr?owner=...&repo=...&number=...` | PR detail with commits, reviews, files |
|
|
40
|
-
| `GET /api/github/issue?owner=...&repo=...&number=...` | Issue detail |
|
|
41
|
-
| `GET /api/github/prs?owner=...&repo=...&state=open\|closed\|all` | List repo PRs |
|
|
42
|
-
| `GET /api/github/org-prs?org=<org>&q=...&state=OPEN\|CLOSED\|MERGED` | Org-wide PR search |
|
|
43
|
-
| `POST /api/github/graphql` body: `{ query, variables? }` | Raw GraphQL |
|
|
44
|
-
|
|
45
|
-
## Script Usage
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
# Search open PRs in an org
|
|
49
|
-
pnpm action github-prs --org=<org> --query="is:open label:bug"
|
|
50
|
-
|
|
51
|
-
# List PRs for a specific repo
|
|
52
|
-
pnpm action github-prs --repo=<org>/<repo> --state=open
|
|
53
|
-
|
|
54
|
-
# Get full PR detail (commits, reviews, files)
|
|
55
|
-
pnpm action github-prs --pr=<org>/<repo>/1234
|
|
56
|
-
|
|
57
|
-
# Get issue detail
|
|
58
|
-
pnpm action github-prs --issue=<org>/<repo>/567
|
|
59
|
-
|
|
60
|
-
# Full GitHub search syntax (works across all orgs/repos)
|
|
61
|
-
pnpm action github-prs --search="fix authentication is:pr is:merged"
|
|
62
|
-
pnpm action github-prs --search="memory leak" --type=issue
|
|
63
|
-
|
|
64
|
-
# Raw GraphQL
|
|
65
|
-
pnpm action github-prs --graphql='{ viewer { login } }'
|
|
66
|
-
|
|
67
|
-
# Filtering with built-in helpers
|
|
68
|
-
pnpm action github-prs --org=<org> --grep="auth" --fields=number,title,state,url
|
|
69
|
-
```
|
|
10
|
+
GitHub access uses the shared provider API runtime and the Analytics GitHub
|
|
11
|
+
OAuth connection. Do not add a separate GitHub client or `/api/github/*`
|
|
12
|
+
pass-through routes.
|
|
13
|
+
|
|
14
|
+
## Access Paths
|
|
15
|
+
|
|
16
|
+
- Use `github-repo-files` for repository file discovery, bounded text search,
|
|
17
|
+
and file reads. It is the stable, agent-friendly wrapper around the shared
|
|
18
|
+
core implementation.
|
|
19
|
+
- Use `provider-api-catalog`, `provider-api-docs`, and
|
|
20
|
+
`provider-api-request` with provider `github` for pull requests, issues,
|
|
21
|
+
searches, and GraphQL operations not modeled by `github-repo-files`.
|
|
22
|
+
- For broad or paginated analysis, stage the provider response and reduce it
|
|
23
|
+
with `query-staged-dataset` or `run-code` instead of returning a large corpus
|
|
24
|
+
to chat.
|
|
25
|
+
|
|
26
|
+
Authentication remains owned by `server/lib/github-oauth.ts`; provider calls
|
|
27
|
+
must resolve the current viewer's OAuth grant or scoped credential through the
|
|
28
|
+
shared runtime.
|
|
70
29
|
|
|
71
30
|
## Key Patterns & Gotchas
|
|
72
31
|
|
|
73
|
-
### GitHub search qualifiers
|
|
32
|
+
### GitHub search qualifiers
|
|
74
33
|
|
|
75
34
|
- `org:<org>` — all repos in org
|
|
76
35
|
- `repo:<org>/<repo>` — specific repo
|
|
@@ -84,9 +43,6 @@ pnpm action github-prs --org=<org> --grep="auth" --fields=number,title,state,url
|
|
|
84
43
|
- `review:approved` — approved PRs
|
|
85
44
|
- `review:changes_requested`
|
|
86
45
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
- The REST search API returns up to 100 results per call; paginated list endpoints use `restGetPaginated()` with Link header traversal
|
|
91
|
-
- `getPR()` makes 4 parallel API calls: PR data, commits, reviews, files — provides a complete picture in one shot
|
|
92
|
-
- 5-minute in-memory cache on all requests
|
|
46
|
+
Use provider documentation to confirm endpoint, version, pagination, and search
|
|
47
|
+
behavior before making absence claims. Report the repository or organization,
|
|
48
|
+
filters, page coverage, and any truncation with the answer.
|