@agent-native/core 0.107.2 → 0.109.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +24 -0
- package/corpus/core/docs/content/actions.mdx +48 -0
- package/corpus/core/docs/content/locales/ar-SA/actions.mdx +38 -0
- package/corpus/core/docs/content/locales/de-DE/actions.mdx +38 -0
- package/corpus/core/docs/content/locales/es-ES/actions.mdx +38 -0
- package/corpus/core/docs/content/locales/fr-FR/actions.mdx +38 -0
- package/corpus/core/docs/content/locales/hi-IN/actions.mdx +38 -0
- package/corpus/core/docs/content/locales/ja-JP/actions.mdx +38 -0
- package/corpus/core/docs/content/locales/ko-KR/actions.mdx +38 -0
- package/corpus/core/docs/content/locales/pt-BR/actions.mdx +38 -0
- package/corpus/core/docs/content/locales/zh-CN/actions.mdx +38 -0
- package/corpus/core/docs/content/locales/zh-TW/actions.mdx +38 -0
- package/corpus/core/package.json +5 -1
- package/corpus/core/src/a2a/client.ts +140 -17
- package/corpus/core/src/a2a/handlers.ts +60 -0
- package/corpus/core/src/a2a/index.ts +6 -1
- package/corpus/core/src/a2a/invoke.ts +68 -1
- package/corpus/core/src/a2a/server.ts +13 -1
- package/corpus/core/src/a2a/types.ts +16 -0
- package/corpus/core/src/a2a-claims.ts +52 -0
- package/corpus/core/src/action.ts +7 -2
- package/corpus/core/src/agent/production-agent.ts +10 -4
- package/corpus/core/src/audit/record.ts +6 -0
- 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/feature-flags/FeatureFlagsPanel.tsx +519 -0
- package/corpus/core/src/client/feature-flags/helpers.ts +77 -0
- package/corpus/core/src/client/feature-flags/index.ts +13 -0
- package/corpus/core/src/client/feature-flags/types.ts +29 -0
- package/corpus/core/src/client/feature-flags/use-feature-flag.ts +26 -0
- package/corpus/core/src/client/index.ts +13 -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/extensions/actions.ts +2 -14
- package/corpus/core/src/extensions/routes.ts +1 -1
- package/corpus/core/src/extensions/store.ts +1 -1
- package/corpus/core/src/feature-flags/a2a-action-route.ts +56 -0
- package/corpus/core/src/feature-flags/actions/get-feature-flags.ts +24 -0
- package/corpus/core/src/feature-flags/actions/list-feature-flags.ts +69 -0
- package/corpus/core/src/feature-flags/actions/set-feature-flag.ts +89 -0
- package/corpus/core/src/feature-flags/index.ts +21 -0
- package/corpus/core/src/feature-flags/permissions.ts +53 -0
- package/corpus/core/src/feature-flags/plugin.ts +44 -0
- package/corpus/core/src/feature-flags/registry.ts +96 -0
- package/corpus/core/src/feature-flags/store.ts +176 -0
- package/corpus/core/src/index.ts +15 -0
- package/corpus/core/src/localization/default-messages.ts +50 -0
- package/corpus/core/src/mcp/build-server.ts +2 -2
- 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 +137 -17
- package/corpus/core/src/server/action-discovery.ts +12 -0
- package/corpus/core/src/server/action-routes.ts +47 -5
- package/corpus/core/src/server/agent-chat/action-filters-a2a.ts +40 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +31 -0
- package/corpus/core/src/server/index.ts +1 -0
- package/corpus/core/src/settings/org-settings.ts +13 -0
- package/corpus/core/src/settings/store.ts +57 -0
- package/corpus/core/src/styles/agent-conversation.css +7 -0
- package/corpus/core/src/templates/default/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/core/src/templates/default/AGENTS.md +1 -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/headless/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +28 -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/feature-flags/SKILL.md +169 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/performance/SKILL.md +13 -0
- package/corpus/core/src/templates/workspace-core/AGENTS.md +1 -1
- package/corpus/core/src/templates/workspace-root/AGENTS.md +1 -1
- package/corpus/core/src/vite/action-types-plugin.ts +12 -0
- package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +29 -10
- package/corpus/templates/analytics/.agents/skills/feature-flags/SKILL.md +169 -0
- 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 +37 -16
- 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/list-workspace-feature-flags.ts +15 -0
- package/corpus/templates/analytics/actions/navigate.ts +2 -2
- package/corpus/templates/analytics/actions/pylon-issues.ts +123 -0
- package/corpus/templates/analytics/actions/set-workspace-feature-flag.ts +45 -0
- package/corpus/templates/analytics/actions/slack-messages.ts +179 -27
- package/corpus/templates/analytics/actions/view-screen.ts +13 -0
- package/corpus/templates/analytics/app/components/agents/FeatureFlagsFleetPanel.tsx +243 -0
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +48 -152
- package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +11 -3
- 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/hooks/use-navigation-state.ts +3 -1
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +30 -0
- package/corpus/templates/analytics/app/i18n-data.ts +385 -0
- package/corpus/templates/analytics/app/pages/Agents.tsx +22 -2
- 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-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-manage-feature-flag-rollouts-across-your-organization-s-apps.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/server/handlers/notion.ts +14 -3
- package/corpus/templates/analytics/server/handlers/slack.ts +182 -29
- package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +2 -6
- package/corpus/templates/analytics/server/lib/analytics-connector-catalog.ts +6 -2
- package/corpus/templates/analytics/server/lib/db-admin-connections.ts +13 -5
- 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/lib/workspace-feature-flags.ts +347 -0
- 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/assets/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/brain/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/calendar/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/chat/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/clips/.agents/skills/feature-flags/SKILL.md +169 -0
- 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/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/changelog/2026-07-17-choose-which-workspace-receives-new-clips-recordings-and-des.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/desktop/src/app.tsx +1 -1
- package/corpus/templates/clips/server/plugins/feature-flags.ts +11 -0
- package/corpus/templates/clips/shared/feature-flags.ts +30 -37
- package/corpus/templates/content/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/content/app/entry.client.tsx +6 -1
- package/corpus/templates/design/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/design/AGENTS.md +5 -3
- package/corpus/templates/design/actions/add-fusion-screens.ts +4 -6
- package/corpus/templates/design/actions/apply-fusion-edits.ts +4 -6
- package/corpus/templates/design/actions/create-fusion-app.ts +5 -4
- package/corpus/templates/design/actions/deploy-fusion-app.ts +4 -3
- package/corpus/templates/design/actions/get-fusion-deploy-status.ts +4 -6
- package/corpus/templates/design/actions/list-fusion-edits.ts +4 -3
- package/corpus/templates/design/actions/push-fusion-app.ts +4 -6
- package/corpus/templates/design/actions/queue-fusion-edit.ts +4 -3
- package/corpus/templates/design/actions/send-fusion-message.ts +4 -6
- package/corpus/templates/design/actions/sync-fusion-app.ts +4 -3
- package/corpus/templates/design/app/components/editor/PromptDialog.tsx +1 -1
- package/corpus/templates/design/app/pages/Index.tsx +8 -6
- package/corpus/templates/design/server/plugins/feature-flags.ts +5 -0
- package/corpus/templates/design/shared/full-app.ts +10 -7
- package/corpus/templates/dispatch/.agents/skills/feature-flags/SKILL.md +169 -0
- 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/forms/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/macros/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/mail/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/mail/app/entry.client.tsx +6 -1
- package/corpus/templates/plan/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/slides/.agents/skills/feature-flags/SKILL.md +169 -0
- 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/corpus/templates/tasks/.agents/skills/feature-flags/SKILL.md +169 -0
- package/dist/a2a/client.d.ts +38 -1
- package/dist/a2a/client.d.ts.map +1 -1
- package/dist/a2a/client.js +81 -12
- package/dist/a2a/client.js.map +1 -1
- package/dist/a2a/handlers.d.ts.map +1 -1
- package/dist/a2a/handlers.js +47 -0
- 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 +26 -2
- package/dist/a2a/invoke.d.ts.map +1 -1
- package/dist/a2a/invoke.js +30 -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/types.d.ts +12 -0
- package/dist/a2a/types.d.ts.map +1 -1
- package/dist/a2a/types.js.map +1 -1
- package/dist/a2a-claims.d.ts +10 -0
- package/dist/a2a-claims.d.ts.map +1 -0
- package/dist/a2a-claims.js +41 -0
- package/dist/a2a-claims.js.map +1 -0
- package/dist/action.d.ts +7 -2
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js.map +1 -1
- package/dist/agent/production-agent.d.ts +5 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +5 -3
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/audit/record.d.ts +3 -0
- package/dist/audit/record.d.ts.map +1 -1
- package/dist/audit/record.js +3 -0
- package/dist/audit/record.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/feature-flags/FeatureFlagsPanel.d.ts +10 -0
- package/dist/client/feature-flags/FeatureFlagsPanel.d.ts.map +1 -0
- package/dist/client/feature-flags/FeatureFlagsPanel.js +143 -0
- package/dist/client/feature-flags/FeatureFlagsPanel.js.map +1 -0
- package/dist/client/feature-flags/helpers.d.ts +16 -0
- package/dist/client/feature-flags/helpers.d.ts.map +1 -0
- package/dist/client/feature-flags/helpers.js +50 -0
- package/dist/client/feature-flags/helpers.js.map +1 -0
- package/dist/client/feature-flags/index.d.ts +5 -0
- package/dist/client/feature-flags/index.d.ts.map +1 -0
- package/dist/client/feature-flags/index.js +4 -0
- package/dist/client/feature-flags/index.js.map +1 -0
- package/dist/client/feature-flags/types.d.ts +27 -0
- package/dist/client/feature-flags/types.d.ts.map +1 -0
- package/dist/client/feature-flags/types.js +2 -0
- package/dist/client/feature-flags/types.js.map +1 -0
- package/dist/client/feature-flags/use-feature-flag.d.ts +8 -0
- package/dist/client/feature-flags/use-feature-flag.d.ts.map +1 -0
- package/dist/client/feature-flags/use-feature-flag.js +15 -0
- package/dist/client/feature-flags/use-feature-flag.js.map +1 -0
- package/dist/client/index.d.ts +2 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -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/collab/struct-routes.d.ts +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/routes.d.ts.map +1 -1
- package/dist/extensions/routes.js +1 -1
- package/dist/extensions/routes.js.map +1 -1
- package/dist/extensions/store.js +1 -1
- package/dist/extensions/store.js.map +1 -1
- package/dist/feature-flags/a2a-action-route.d.ts +14 -0
- package/dist/feature-flags/a2a-action-route.d.ts.map +1 -0
- package/dist/feature-flags/a2a-action-route.js +50 -0
- package/dist/feature-flags/a2a-action-route.js.map +1 -0
- package/dist/feature-flags/actions/get-feature-flags.d.ts +3 -0
- package/dist/feature-flags/actions/get-feature-flags.d.ts.map +1 -0
- package/dist/feature-flags/actions/get-feature-flags.js +18 -0
- package/dist/feature-flags/actions/get-feature-flags.js.map +1 -0
- package/dist/feature-flags/actions/list-feature-flags.d.ts +28 -0
- package/dist/feature-flags/actions/list-feature-flags.d.ts.map +1 -0
- package/dist/feature-flags/actions/list-feature-flags.js +60 -0
- package/dist/feature-flags/actions/list-feature-flags.js.map +1 -0
- package/dist/feature-flags/actions/set-feature-flag.d.ts +26 -0
- package/dist/feature-flags/actions/set-feature-flag.d.ts.map +1 -0
- package/dist/feature-flags/actions/set-feature-flag.js +78 -0
- package/dist/feature-flags/actions/set-feature-flag.js.map +1 -0
- package/dist/feature-flags/index.d.ts +5 -0
- package/dist/feature-flags/index.d.ts.map +1 -0
- package/dist/feature-flags/index.js +5 -0
- package/dist/feature-flags/index.js.map +1 -0
- package/dist/feature-flags/permissions.d.ts +13 -0
- package/dist/feature-flags/permissions.d.ts.map +1 -0
- package/dist/feature-flags/permissions.js +37 -0
- package/dist/feature-flags/permissions.js.map +1 -0
- package/dist/feature-flags/plugin.d.ts +17 -0
- package/dist/feature-flags/plugin.d.ts.map +1 -0
- package/dist/feature-flags/plugin.js +29 -0
- package/dist/feature-flags/plugin.js.map +1 -0
- package/dist/feature-flags/registry.d.ts +23 -0
- package/dist/feature-flags/registry.d.ts.map +1 -0
- package/dist/feature-flags/registry.js +59 -0
- package/dist/feature-flags/registry.js.map +1 -0
- package/dist/feature-flags/store.d.ts +31 -0
- package/dist/feature-flags/store.d.ts.map +1 -0
- package/dist/feature-flags/store.js +124 -0
- package/dist/feature-flags/store.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/localization/default-messages.d.ts +45 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +45 -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/progress/actions.d.ts.map +1 -1
- package/dist/progress/actions.js +3 -2
- package/dist/progress/actions.js.map +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/resources/handlers.d.ts +3 -3
- package/dist/scripts/call-agent.d.ts.map +1 -1
- package/dist/scripts/call-agent.js +107 -16
- package/dist/scripts/call-agent.js.map +1 -1
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +12 -0
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/action-routes.d.ts +3 -0
- package/dist/server/action-routes.d.ts.map +1 -1
- package/dist/server/action-routes.js +45 -5
- package/dist/server/action-routes.js.map +1 -1
- package/dist/server/agent-chat/action-filters-a2a.d.ts +6 -0
- package/dist/server/agent-chat/action-filters-a2a.d.ts.map +1 -1
- package/dist/server/agent-chat/action-filters-a2a.js +27 -0
- 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 +27 -1
- 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/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/settings/org-settings.d.ts +2 -0
- package/dist/settings/org-settings.d.ts.map +1 -1
- package/dist/settings/org-settings.js +5 -1
- package/dist/settings/org-settings.js.map +1 -1
- package/dist/settings/store.d.ts +8 -0
- package/dist/settings/store.d.ts.map +1 -1
- package/dist/settings/store.js +48 -0
- package/dist/settings/store.js.map +1 -1
- package/dist/styles/agent-conversation.css +7 -0
- package/dist/templates/chat/.agents/skills/feature-flags/SKILL.md +169 -0
- package/dist/templates/default/.agents/skills/feature-flags/SKILL.md +169 -0
- package/dist/templates/default/AGENTS.md +1 -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/headless/.agents/skills/feature-flags/SKILL.md +169 -0
- package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +28 -0
- package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +5 -0
- package/dist/templates/workspace-core/.agents/skills/feature-flags/SKILL.md +169 -0
- package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +13 -0
- package/dist/templates/workspace-core/AGENTS.md +1 -1
- package/dist/templates/workspace-root/AGENTS.md +1 -1
- package/dist/vite/action-types-plugin.d.ts.map +1 -1
- package/dist/vite/action-types-plugin.js +12 -0
- package/dist/vite/action-types-plugin.js.map +1 -1
- package/docs/content/actions.mdx +48 -0
- package/docs/content/locales/ar-SA/actions.mdx +38 -0
- package/docs/content/locales/de-DE/actions.mdx +38 -0
- package/docs/content/locales/es-ES/actions.mdx +38 -0
- package/docs/content/locales/fr-FR/actions.mdx +38 -0
- package/docs/content/locales/hi-IN/actions.mdx +38 -0
- package/docs/content/locales/ja-JP/actions.mdx +38 -0
- package/docs/content/locales/ko-KR/actions.mdx +38 -0
- package/docs/content/locales/pt-BR/actions.mdx +38 -0
- package/docs/content/locales/zh-CN/actions.mdx +38 -0
- package/docs/content/locales/zh-TW/actions.mdx +38 -0
- package/package.json +5 -1
- package/src/templates/chat/.agents/skills/feature-flags/SKILL.md +169 -0
- package/src/templates/default/.agents/skills/feature-flags/SKILL.md +169 -0
- package/src/templates/default/AGENTS.md +1 -0
- 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/headless/.agents/skills/feature-flags/SKILL.md +169 -0
- package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +28 -0
- package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +5 -0
- package/src/templates/workspace-core/.agents/skills/feature-flags/SKILL.md +169 -0
- package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +13 -0
- package/src/templates/workspace-core/AGENTS.md +1 -1
- package/src/templates/workspace-root/AGENTS.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/clips/actions/get-feature-flags.ts +0 -30
- 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
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: feature-flags
|
|
3
|
+
description: >-
|
|
4
|
+
Declare, evaluate, manage, and remove framework feature flags. Use when
|
|
5
|
+
shipping a capability gradually, targeting users or organizations, or
|
|
6
|
+
replacing a compile-time rollout switch with a production-safe runtime flag.
|
|
7
|
+
scope: dev
|
|
8
|
+
metadata:
|
|
9
|
+
internal: true
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Feature Flags
|
|
13
|
+
|
|
14
|
+
A feature flag is a boolean declared in app code, evaluated locally by Core,
|
|
15
|
+
and managed from the Analytics fleet control plane. Code owns whether a flag
|
|
16
|
+
exists. Runtime settings own only its rollout state.
|
|
17
|
+
|
|
18
|
+
Flags let an app deploy dormant code and turn it on in the real environment
|
|
19
|
+
without another deployment. They are not experiments: do not add variants,
|
|
20
|
+
hypotheses, conversion metrics, exposure tracking, or lifecycle states.
|
|
21
|
+
|
|
22
|
+
## When to use one
|
|
23
|
+
|
|
24
|
+
Use a flag for a reversible rollout of a user-facing capability whose dormant
|
|
25
|
+
code is safe to deploy. Flags are useful for production dogfooding, exact-user
|
|
26
|
+
or organization pilots, and deterministic percentage rollouts.
|
|
27
|
+
|
|
28
|
+
Do not use a flag for authentication, authorization, secrets, audit enablement,
|
|
29
|
+
SSR cache behavior, or another security boundary. Client hiding is presentation
|
|
30
|
+
only; every guarded server action must evaluate the same registered flag.
|
|
31
|
+
|
|
32
|
+
## Agent workflow
|
|
33
|
+
|
|
34
|
+
### 1. Declare
|
|
35
|
+
|
|
36
|
+
Keep definitions in a shared TypeScript module so server and client code use the
|
|
37
|
+
same stable key. Flags are boolean and default-off.
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
import { defineFeatureFlag } from "@agent-native/core/feature-flags";
|
|
41
|
+
|
|
42
|
+
export const FULL_APP_BUILDING = defineFeatureFlag({
|
|
43
|
+
key: "full-app-building",
|
|
44
|
+
displayName: "Full app building",
|
|
45
|
+
description: "Create and edit Fusion-backed applications.",
|
|
46
|
+
});
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Keys are immutable, never reused, and contain only letters, numbers, dots,
|
|
50
|
+
underscores, or hyphens. Prefer a concise app-owned name. Do not create flag
|
|
51
|
+
definitions or rollout rows from Analytics.
|
|
52
|
+
|
|
53
|
+
### 2. Register
|
|
54
|
+
|
|
55
|
+
Register app definitions from a Nitro plugin before actions are discovered.
|
|
56
|
+
Do not add app-specific flags to a Core registry.
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
import { createFeatureFlagsPlugin } from "@agent-native/core/server";
|
|
60
|
+
|
|
61
|
+
import { FULL_APP_BUILDING } from "../../shared/feature-flags.js";
|
|
62
|
+
|
|
63
|
+
export default createFeatureFlagsPlugin({ flags: [FULL_APP_BUILDING] });
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 3. Guard server and client
|
|
67
|
+
|
|
68
|
+
The server action is the enforcement boundary:
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
import { isFeatureFlagEnabled } from "@agent-native/core/feature-flags";
|
|
72
|
+
|
|
73
|
+
run: async (args, ctx) => {
|
|
74
|
+
if (!(await isFeatureFlagEnabled(FULL_APP_BUILDING, ctx))) {
|
|
75
|
+
throw new Error("Full app building is not enabled for this account.");
|
|
76
|
+
}
|
|
77
|
+
// guarded operation
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Use the client hook only to hide or reveal hydrated UI:
|
|
82
|
+
|
|
83
|
+
```tsx
|
|
84
|
+
import { useFeatureFlag } from "@agent-native/core/client";
|
|
85
|
+
|
|
86
|
+
const enabled = useFeatureFlag(FULL_APP_BUILDING.key);
|
|
87
|
+
return enabled ? <FullAppOption /> : null;
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
The client hook intentionally returns false while loading or for an unknown
|
|
91
|
+
flag. Never replace that fail-closed behavior with app-local bucketing or a
|
|
92
|
+
compile-time fallback. Never evaluate personalized flags in the public SSR
|
|
93
|
+
shell; it is shared and cached for every visitor.
|
|
94
|
+
|
|
95
|
+
### 4. Verify and roll out
|
|
96
|
+
|
|
97
|
+
1. Verify the off path before changing rollout state.
|
|
98
|
+
2. Confirm the registered flag appears in **Analytics → Feature flags** for the
|
|
99
|
+
app and is Off by default.
|
|
100
|
+
3. Use **Enable for me** for initial production dogfood.
|
|
101
|
+
4. Expand to exact emails, organization IDs, or a percentage only from
|
|
102
|
+
Analytics.
|
|
103
|
+
5. Confirm the client presentation and authoritative server action agree.
|
|
104
|
+
|
|
105
|
+
## Management contract
|
|
106
|
+
|
|
107
|
+
Core mounts three actions in registered apps:
|
|
108
|
+
|
|
109
|
+
| Action | Purpose |
|
|
110
|
+
| --- | --- |
|
|
111
|
+
| `get-feature-flags` | Return the current caller's evaluated boolean values. |
|
|
112
|
+
| `list-feature-flags` | Return definitions and rollout metadata to an authorized operator. |
|
|
113
|
+
| `set-feature-flag` | Atomically turn a flag off, enable it for the operator, or replace targeting rules. |
|
|
114
|
+
|
|
115
|
+
Analytics calls the app-local operator actions through narrowly scoped A2A
|
|
116
|
+
delegation. Tokens require an exact audience, organization, scope, operator
|
|
117
|
+
role, and audit correlation id. Management is permission-checked and audited
|
|
118
|
+
by the target app. Never manage flags through generic settings routes, raw SQL,
|
|
119
|
+
or per-app toggle UIs.
|
|
120
|
+
|
|
121
|
+
## Rollout semantics
|
|
122
|
+
|
|
123
|
+
The operator modes are **Off**, **Targeted**, and **Everyone**. Core stores them
|
|
124
|
+
as `off`, `rules`, and `on`.
|
|
125
|
+
|
|
126
|
+
Targeted rules combine exact normalized emails, exact organization IDs, and a
|
|
127
|
+
percentage with OR semantics. Exact matches are checked first. Percentage
|
|
128
|
+
buckets use Core's stable hash of the flag key and authenticated user identity;
|
|
129
|
+
anonymous callers fail closed. Raising a percentage preserves the users already
|
|
130
|
+
included at a lower percentage. Do not implement bucketing in app code.
|
|
131
|
+
|
|
132
|
+
Unknown definitions, missing state, malformed state, storage errors, and
|
|
133
|
+
evaluation errors all return the code default (`false` in v1). Explicit Off
|
|
134
|
+
wins over every target; Everyone enables every authenticated caller.
|
|
135
|
+
|
|
136
|
+
## Remove a flag
|
|
137
|
+
|
|
138
|
+
After a rollout is permanent:
|
|
139
|
+
|
|
140
|
+
1. Replace guarded branches with the chosen behavior.
|
|
141
|
+
2. Delete the server and client gates.
|
|
142
|
+
3. Delete the definition and registration entry.
|
|
143
|
+
4. Verify the flag disappears from the Analytics fleet.
|
|
144
|
+
5. Remove stale tests and rollout instructions.
|
|
145
|
+
|
|
146
|
+
A permanent flag is just an if statement with a pension plan.
|
|
147
|
+
|
|
148
|
+
## Verification checklist
|
|
149
|
+
|
|
150
|
+
- Unknown and unregistered keys evaluate false.
|
|
151
|
+
- UI hiding and server enforcement use the same registered key.
|
|
152
|
+
- Exact-user, organization, deterministic percentage, Everyone, and Off paths
|
|
153
|
+
have focused tests.
|
|
154
|
+
- Increasing a percentage is monotonic; anonymous percentage evaluation is off.
|
|
155
|
+
- Unauthorized callers cannot list targeting details or mutate flags.
|
|
156
|
+
- Mutations are atomic, read back stored state, emit refresh, and appear in the
|
|
157
|
+
audit log with the flag key.
|
|
158
|
+
- Analytics represents ready, no-definition, unsupported, forbidden, legacy,
|
|
159
|
+
and unreachable directory apps honestly.
|
|
160
|
+
- Future agents can find this skill from root `AGENTS.md`, and
|
|
161
|
+
`pnpm guard:workspace-skills` passes after syncing generated copies.
|
|
162
|
+
|
|
163
|
+
## Related skills
|
|
164
|
+
|
|
165
|
+
- **adding-a-feature** — preserve UI/action/instruction/application-state parity
|
|
166
|
+
- **actions** — define and call guarded app operations
|
|
167
|
+
- **audit-log** — inspect automatic action mutation history
|
|
168
|
+
- **reliable-mutations** — make rollout changes atomic and provable
|
|
169
|
+
- **security** — keep security controls out of feature flags
|
|
@@ -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.
|
|
@@ -7,49 +7,31 @@ description: >
|
|
|
7
7
|
|
|
8
8
|
# Pylon Integration (Support)
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
### API Routes
|
|
31
|
-
|
|
32
|
-
| Route | Description |
|
|
33
|
-
| ------------------------- | -------------------- |
|
|
34
|
-
| `GET /api/pylon/issues` | List support tickets |
|
|
35
|
-
| `GET /api/pylon/accounts` | List accounts |
|
|
36
|
-
|
|
37
|
-
## Script Usage
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
# Open support tickets for a customer
|
|
41
|
-
pnpm action pylon-issues --account="Example Corp" --state=open
|
|
42
|
-
|
|
43
|
-
# All issues
|
|
44
|
-
pnpm action pylon-issues --query=search_term
|
|
45
|
-
|
|
46
|
-
# List accounts
|
|
47
|
-
pnpm action pylon-issues --accounts
|
|
48
|
-
```
|
|
10
|
+
Pylon access uses the shared provider API runtime. Do not add a separate Pylon
|
|
11
|
+
client. `/api/pylon/issues` remains only as a thin compatibility route for an
|
|
12
|
+
existing dashboard and delegates to the same action/provider runtime.
|
|
13
|
+
|
|
14
|
+
## Access Paths
|
|
15
|
+
|
|
16
|
+
- Use `provider-api-catalog`, `provider-api-docs`, and
|
|
17
|
+
`provider-api-request` with provider `pylon` for bounded account, contact,
|
|
18
|
+
and issue queries.
|
|
19
|
+
- Use a data program with `providerFetchAll("pylon", ...)` for reusable joins,
|
|
20
|
+
exhaustive support-ticket analysis, or dashboard sources. Existing risk
|
|
21
|
+
meeting programs demonstrate the HubSpot-to-Pylon domain join.
|
|
22
|
+
- Stage large responses and reduce them with `query-staged-dataset` or
|
|
23
|
+
`run-code` before returning results to chat.
|
|
24
|
+
- For issue corpora, prefer `POST /issues/search` with the created-at filter and
|
|
25
|
+
body cursor. The older `GET /issues` endpoint has a 30-day window and should
|
|
26
|
+
not be used for broad dashboard coverage.
|
|
27
|
+
|
|
28
|
+
Authentication is resolved from the current viewer's scoped Pylon credential
|
|
29
|
+
through the shared provider runtime.
|
|
49
30
|
|
|
50
31
|
## Key Patterns & Gotchas
|
|
51
32
|
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
|
|
33
|
+
- Confirm the current endpoint, time-window, filter, and cursor contract with
|
|
34
|
+
`provider-api-docs`; do not impose a fixed lookback window in a wrapper.
|
|
35
|
+
- Report inspected issue/account counts, pagination coverage, failed pages, and
|
|
36
|
+
truncation. A sampled response cannot support an exhaustive absence claim.
|
|
37
|
+
- Query Pylon directly unless the user explicitly asks for a warehouse copy.
|