@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
|
@@ -129,6 +129,9 @@ const messages = {
|
|
|
129
129
|
'Apps in the "{{workspace}}" workspace. Each app gets its own route under this workspace and shares its database, auth, and agent chat.',
|
|
130
130
|
appsInWorkspace: "Apps in {{workspace}}",
|
|
131
131
|
workspaceApps: "Workspace apps",
|
|
132
|
+
otherApps: "Other apps",
|
|
133
|
+
otherAppsDescription: "Open other apps available to you.",
|
|
134
|
+
availableCount: "{{count}} available",
|
|
132
135
|
activeCount: "{{count}} active",
|
|
133
136
|
hiddenCount: "{{count}} hidden",
|
|
134
137
|
createApp: "Create app",
|
|
@@ -345,7 +345,7 @@ function warnFullCatalogServed(toolCount: number): void {
|
|
|
345
345
|
);
|
|
346
346
|
}
|
|
347
347
|
|
|
348
|
-
function isAuthenticatedReadAction(entry: ActionEntry): boolean {
|
|
348
|
+
export function isAuthenticatedReadAction(entry: ActionEntry): boolean {
|
|
349
349
|
return (
|
|
350
350
|
entry.http !== false &&
|
|
351
351
|
entry.http?.method === "GET" &&
|
|
@@ -404,7 +404,7 @@ const AUTO_READ_EXCLUDED_ACTION_PATTERNS: RegExp[] = [
|
|
|
404
404
|
/browser-session/,
|
|
405
405
|
];
|
|
406
406
|
|
|
407
|
-
function isAutoReadExcludedActionName(name: string): boolean {
|
|
407
|
+
export function isAutoReadExcludedActionName(name: string): boolean {
|
|
408
408
|
return (
|
|
409
409
|
AUTO_READ_EXCLUDED_ACTION_NAMES.has(name) ||
|
|
410
410
|
AUTO_READ_EXCLUDED_ACTION_PATTERNS.some((pattern) => pattern.test(name))
|
|
@@ -26,6 +26,16 @@ function costUsdFromCenticents(value: number): number {
|
|
|
26
26
|
return Math.round((value / 10_000) * 1_000_000) / 1_000_000;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
const MAX_TRACKED_GENERATION_TOOL_CALLS = 50;
|
|
30
|
+
|
|
31
|
+
type GenerationToolCall = {
|
|
32
|
+
name: string;
|
|
33
|
+
started_offset_ms: number;
|
|
34
|
+
duration_ms: number;
|
|
35
|
+
status: "success" | "error";
|
|
36
|
+
error_class: "tool_error" | "legacy_inferred_error" | "interrupted" | null;
|
|
37
|
+
};
|
|
38
|
+
|
|
29
39
|
function emitLlmGenerationTrackingEvent(args: {
|
|
30
40
|
runId: string;
|
|
31
41
|
threadId: string | null;
|
|
@@ -45,6 +55,15 @@ function emitLlmGenerationTrackingEvent(args: {
|
|
|
45
55
|
toolCalls: number;
|
|
46
56
|
successfulTools: number;
|
|
47
57
|
failedTools: number;
|
|
58
|
+
tools: GenerationToolCall[];
|
|
59
|
+
toolsTruncated: boolean;
|
|
60
|
+
delegation?: {
|
|
61
|
+
protocol: "a2a" | "mcp";
|
|
62
|
+
callerApp?: string;
|
|
63
|
+
taskId?: string;
|
|
64
|
+
parentRunId?: string;
|
|
65
|
+
parentTurnId?: string;
|
|
66
|
+
};
|
|
48
67
|
createdAt: number;
|
|
49
68
|
experimentAssignments?: Array<{
|
|
50
69
|
experimentId: string;
|
|
@@ -77,6 +96,14 @@ function emitLlmGenerationTrackingEvent(args: {
|
|
|
77
96
|
tool_calls: args.toolCalls,
|
|
78
97
|
successful_tools: args.successfulTools,
|
|
79
98
|
failed_tools: args.failedTools,
|
|
99
|
+
tools: args.tools,
|
|
100
|
+
tools_truncated: args.toolsTruncated,
|
|
101
|
+
delegated: args.delegation ? true : undefined,
|
|
102
|
+
delegation_protocol: args.delegation?.protocol,
|
|
103
|
+
caller_app: args.delegation?.callerApp,
|
|
104
|
+
a2a_task_id: args.delegation?.taskId,
|
|
105
|
+
parent_run_id: args.delegation?.parentRunId,
|
|
106
|
+
parent_turn_id: args.delegation?.parentTurnId,
|
|
80
107
|
model_selection_source: args.modelSelectionSource,
|
|
81
108
|
created_at: new Date(args.createdAt).toISOString(),
|
|
82
109
|
created_at_ms: args.createdAt,
|
|
@@ -191,6 +218,7 @@ export async function instrumentAgentLoop(opts: {
|
|
|
191
218
|
send: (event: AgentChatEvent) => void;
|
|
192
219
|
signal: AbortSignal;
|
|
193
220
|
providerOptions?: any;
|
|
221
|
+
runId?: string;
|
|
194
222
|
}) => Promise<AgentLoopUsage>;
|
|
195
223
|
loopOpts: {
|
|
196
224
|
engine: any;
|
|
@@ -202,6 +230,7 @@ export async function instrumentAgentLoop(opts: {
|
|
|
202
230
|
send: (event: AgentChatEvent) => void;
|
|
203
231
|
signal: AbortSignal;
|
|
204
232
|
providerOptions?: any;
|
|
233
|
+
runId?: string;
|
|
205
234
|
};
|
|
206
235
|
runId: string;
|
|
207
236
|
threadId: string | null;
|
|
@@ -217,6 +246,13 @@ export async function instrumentAgentLoop(opts: {
|
|
|
217
246
|
variantId: string;
|
|
218
247
|
}>;
|
|
219
248
|
modelSelectionSource?: string;
|
|
249
|
+
delegation?: {
|
|
250
|
+
protocol: "a2a" | "mcp";
|
|
251
|
+
callerApp?: string;
|
|
252
|
+
taskId?: string;
|
|
253
|
+
parentRunId?: string;
|
|
254
|
+
parentTurnId?: string;
|
|
255
|
+
};
|
|
220
256
|
/** Raw user-authored message before prompt/context enrichment. */
|
|
221
257
|
sentimentInput?: string;
|
|
222
258
|
classifyError?: (error: unknown) =>
|
|
@@ -271,6 +307,7 @@ export async function instrumentAgentLoop(opts: {
|
|
|
271
307
|
number,
|
|
272
308
|
{
|
|
273
309
|
spanId: string;
|
|
310
|
+
callId?: string;
|
|
274
311
|
startMs: number;
|
|
275
312
|
toolName: string;
|
|
276
313
|
input: AgentToolInput;
|
|
@@ -278,12 +315,11 @@ export async function instrumentAgentLoop(opts: {
|
|
|
278
315
|
endResult?: { status: "success" | "error"; errorMessage: string | null };
|
|
279
316
|
}
|
|
280
317
|
>();
|
|
281
|
-
// Secondary index
|
|
282
|
-
//
|
|
283
|
-
// pair starts and dones correctly when the agent runs concurrent calls to the
|
|
284
|
-
// same tool name (read-only / parallelSafe batches via Promise.all), we keep a
|
|
285
|
-
// queue per name and match each done to the OLDEST still-pending start.
|
|
318
|
+
// Secondary index for legacy emitters without call ids. Current tool events
|
|
319
|
+
// are paired by id first; same-name FIFO remains as a compatibility fallback.
|
|
286
320
|
const toolNameToCounters = new Map<string, number[]>();
|
|
321
|
+
const toolCallIdToCounter = new Map<string, number>();
|
|
322
|
+
const generationToolCalls = new Map<number, GenerationToolCall>();
|
|
287
323
|
|
|
288
324
|
let toolCallCount = 0;
|
|
289
325
|
let successfulTools = 0;
|
|
@@ -304,6 +340,7 @@ export async function instrumentAgentLoop(opts: {
|
|
|
304
340
|
// microtask gap by recording the span on the pending entry when ready.
|
|
305
341
|
const entry: {
|
|
306
342
|
spanId: string;
|
|
343
|
+
callId?: string;
|
|
307
344
|
startMs: number;
|
|
308
345
|
toolName: string;
|
|
309
346
|
input: AgentToolInput;
|
|
@@ -316,12 +353,14 @@ export async function instrumentAgentLoop(opts: {
|
|
|
316
353
|
};
|
|
317
354
|
} = {
|
|
318
355
|
spanId: sid,
|
|
356
|
+
...(event.id ? { callId: event.id } : {}),
|
|
319
357
|
startMs: Date.now(),
|
|
320
358
|
toolName: event.tool,
|
|
321
359
|
input: event.input,
|
|
322
360
|
otelSpan: null,
|
|
323
361
|
};
|
|
324
362
|
pendingTools.set(counter, entry);
|
|
363
|
+
if (event.id) toolCallIdToCounter.set(event.id, counter);
|
|
325
364
|
void startAgentSpan("tool.call", {
|
|
326
365
|
"tool.name": event.tool,
|
|
327
366
|
}).then((span) => {
|
|
@@ -343,16 +382,39 @@ export async function instrumentAgentLoop(opts: {
|
|
|
343
382
|
else toolNameToCounters.set(event.tool, [counter]);
|
|
344
383
|
} else if (event.type === "tool_done") {
|
|
345
384
|
const queue = toolNameToCounters.get(event.tool);
|
|
346
|
-
const
|
|
385
|
+
const counterFromId = event.id
|
|
386
|
+
? toolCallIdToCounter.get(event.id)
|
|
387
|
+
: undefined;
|
|
388
|
+
const legacyQueueIndex =
|
|
389
|
+
event.id && counterFromId === undefined && queue
|
|
390
|
+
? queue.findIndex(
|
|
391
|
+
(candidate) => !pendingTools.get(candidate)?.callId,
|
|
392
|
+
)
|
|
393
|
+
: -1;
|
|
394
|
+
const counter =
|
|
395
|
+
counterFromId ??
|
|
396
|
+
(event.id
|
|
397
|
+
? legacyQueueIndex >= 0
|
|
398
|
+
? queue?.[legacyQueueIndex]
|
|
399
|
+
: undefined
|
|
400
|
+
: queue?.shift());
|
|
347
401
|
const pending =
|
|
348
402
|
counter !== undefined ? pendingTools.get(counter) : undefined;
|
|
349
403
|
if (counter !== undefined) {
|
|
350
404
|
pendingTools.delete(counter);
|
|
405
|
+
if (pending?.callId) toolCallIdToCounter.delete(pending.callId);
|
|
406
|
+
if ((counterFromId !== undefined || legacyQueueIndex >= 0) && queue) {
|
|
407
|
+
const queueIndex = queue.indexOf(counter);
|
|
408
|
+
if (queueIndex >= 0) queue.splice(queueIndex, 1);
|
|
409
|
+
}
|
|
351
410
|
if (queue && queue.length === 0)
|
|
352
411
|
toolNameToCounters.delete(event.tool);
|
|
353
412
|
}
|
|
354
413
|
toolCallCount++;
|
|
355
414
|
|
|
415
|
+
const finishedAt = Date.now();
|
|
416
|
+
|
|
417
|
+
const explicitError = event.isError === true;
|
|
356
418
|
const isError =
|
|
357
419
|
typeof event.isError === "boolean"
|
|
358
420
|
? event.isError
|
|
@@ -362,6 +424,24 @@ export async function instrumentAgentLoop(opts: {
|
|
|
362
424
|
if (isError) failedTools++;
|
|
363
425
|
else successfulTools++;
|
|
364
426
|
|
|
427
|
+
if (
|
|
428
|
+
counter !== undefined &&
|
|
429
|
+
counter < MAX_TRACKED_GENERATION_TOOL_CALLS &&
|
|
430
|
+
pending
|
|
431
|
+
) {
|
|
432
|
+
generationToolCalls.set(counter, {
|
|
433
|
+
name: pending.toolName,
|
|
434
|
+
started_offset_ms: Math.max(0, pending.startMs - runStart),
|
|
435
|
+
duration_ms: Math.max(0, finishedAt - pending.startMs),
|
|
436
|
+
status: isError ? "error" : "success",
|
|
437
|
+
error_class: !isError
|
|
438
|
+
? null
|
|
439
|
+
: explicitError
|
|
440
|
+
? "tool_error"
|
|
441
|
+
: "legacy_inferred_error",
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
|
|
365
445
|
// Finalize the OTel tool span. If the span promise hasn't resolved yet
|
|
366
446
|
// we record the result on the entry so its `.then` handler ends it.
|
|
367
447
|
const otelEndResult = {
|
|
@@ -392,7 +472,7 @@ export async function instrumentAgentLoop(opts: {
|
|
|
392
472
|
cacheReadTokens: 0,
|
|
393
473
|
cacheWriteTokens: 0,
|
|
394
474
|
costCentsX100: 0,
|
|
395
|
-
durationMs: pending ?
|
|
475
|
+
durationMs: pending ? Math.max(0, finishedAt - pending.startMs) : 0,
|
|
396
476
|
status: isError ? "error" : "success",
|
|
397
477
|
errorMessage: isError ? event.result : null,
|
|
398
478
|
metadata:
|
|
@@ -422,7 +502,11 @@ export async function instrumentAgentLoop(opts: {
|
|
|
422
502
|
let errorMessage: string | null = null;
|
|
423
503
|
let runMetadata: Record<string, unknown> | null = opts.metadata ?? null;
|
|
424
504
|
try {
|
|
425
|
-
usage = await runAgentLoop({
|
|
505
|
+
usage = await runAgentLoop({
|
|
506
|
+
...loopOpts,
|
|
507
|
+
runId,
|
|
508
|
+
send: instrumentedSend,
|
|
509
|
+
});
|
|
426
510
|
} catch (err: any) {
|
|
427
511
|
const classification = opts.classifyError?.(err) ?? null;
|
|
428
512
|
runStatus = classification?.status ?? "error";
|
|
@@ -440,6 +524,62 @@ export async function instrumentAgentLoop(opts: {
|
|
|
440
524
|
const runEnd = Date.now();
|
|
441
525
|
const totalDurationMs = runEnd - runStart;
|
|
442
526
|
|
|
527
|
+
if (pendingTools.size > 0) {
|
|
528
|
+
if (runStatus === "success") {
|
|
529
|
+
runStatus = "error";
|
|
530
|
+
errorMessage ??= "Agent run ended with interrupted tool calls";
|
|
531
|
+
}
|
|
532
|
+
for (const [counter, pending] of pendingTools) {
|
|
533
|
+
toolCallCount += 1;
|
|
534
|
+
failedTools += 1;
|
|
535
|
+
if (counter < MAX_TRACKED_GENERATION_TOOL_CALLS) {
|
|
536
|
+
generationToolCalls.set(counter, {
|
|
537
|
+
name: pending.toolName,
|
|
538
|
+
started_offset_ms: Math.max(0, pending.startMs - runStart),
|
|
539
|
+
duration_ms: Math.max(0, runEnd - pending.startMs),
|
|
540
|
+
status: "error",
|
|
541
|
+
error_class: "interrupted",
|
|
542
|
+
});
|
|
543
|
+
}
|
|
544
|
+
const interruptedMessage = "Tool call interrupted before completion";
|
|
545
|
+
if (pending.otelSpan) {
|
|
546
|
+
openOtelToolSpans.delete(pending.otelSpan);
|
|
547
|
+
endAgentSpan(pending.otelSpan, {
|
|
548
|
+
status: "error",
|
|
549
|
+
errorMessage: interruptedMessage,
|
|
550
|
+
attributes: { "tool.name": pending.toolName },
|
|
551
|
+
});
|
|
552
|
+
} else {
|
|
553
|
+
pending.endResult = {
|
|
554
|
+
status: "error",
|
|
555
|
+
errorMessage: interruptedMessage,
|
|
556
|
+
};
|
|
557
|
+
}
|
|
558
|
+
spans.push({
|
|
559
|
+
id: pending.spanId,
|
|
560
|
+
runId,
|
|
561
|
+
threadId,
|
|
562
|
+
userId,
|
|
563
|
+
parentSpanId,
|
|
564
|
+
spanType: "tool_call",
|
|
565
|
+
name: pending.toolName,
|
|
566
|
+
inputTokens: 0,
|
|
567
|
+
outputTokens: 0,
|
|
568
|
+
cacheReadTokens: 0,
|
|
569
|
+
cacheWriteTokens: 0,
|
|
570
|
+
costCentsX100: 0,
|
|
571
|
+
durationMs: Math.max(0, runEnd - pending.startMs),
|
|
572
|
+
status: "error",
|
|
573
|
+
errorMessage: interruptedMessage,
|
|
574
|
+
metadata: null,
|
|
575
|
+
createdAt: runEnd,
|
|
576
|
+
});
|
|
577
|
+
}
|
|
578
|
+
pendingTools.clear();
|
|
579
|
+
toolNameToCounters.clear();
|
|
580
|
+
toolCallIdToCounter.clear();
|
|
581
|
+
}
|
|
582
|
+
|
|
443
583
|
let costCentsX100 = 0;
|
|
444
584
|
try {
|
|
445
585
|
const { calculateCost } = await import("../usage/store.js");
|
|
@@ -455,8 +595,15 @@ export async function instrumentAgentLoop(opts: {
|
|
|
455
595
|
} catch {}
|
|
456
596
|
|
|
457
597
|
let llmCallCount = 0;
|
|
458
|
-
if (usage) {
|
|
598
|
+
if (usage || runStatus === "error") {
|
|
459
599
|
llmCallCount = 1;
|
|
600
|
+
const generationUsage = usage ?? {
|
|
601
|
+
inputTokens: 0,
|
|
602
|
+
outputTokens: 0,
|
|
603
|
+
cacheReadTokens: 0,
|
|
604
|
+
cacheWriteTokens: 0,
|
|
605
|
+
model: loopOpts.model,
|
|
606
|
+
};
|
|
460
607
|
const llmSpanId = spanId();
|
|
461
608
|
const llmSpan: TraceSpan = {
|
|
462
609
|
id: llmSpanId,
|
|
@@ -465,11 +612,11 @@ export async function instrumentAgentLoop(opts: {
|
|
|
465
612
|
userId,
|
|
466
613
|
parentSpanId,
|
|
467
614
|
spanType: "llm_call",
|
|
468
|
-
name:
|
|
469
|
-
inputTokens:
|
|
470
|
-
outputTokens:
|
|
471
|
-
cacheReadTokens:
|
|
472
|
-
cacheWriteTokens:
|
|
615
|
+
name: generationUsage.model,
|
|
616
|
+
inputTokens: generationUsage.inputTokens,
|
|
617
|
+
outputTokens: generationUsage.outputTokens,
|
|
618
|
+
cacheReadTokens: generationUsage.cacheReadTokens,
|
|
619
|
+
cacheWriteTokens: generationUsage.cacheWriteTokens,
|
|
473
620
|
costCentsX100,
|
|
474
621
|
durationMs: totalDurationMs,
|
|
475
622
|
status: runStatus,
|
|
@@ -488,11 +635,11 @@ export async function instrumentAgentLoop(opts: {
|
|
|
488
635
|
typeof loopOpts.engine?.name === "string"
|
|
489
636
|
? loopOpts.engine.name
|
|
490
637
|
: undefined,
|
|
491
|
-
model:
|
|
492
|
-
inputTokens:
|
|
493
|
-
outputTokens:
|
|
494
|
-
cacheReadTokens:
|
|
495
|
-
cacheWriteTokens:
|
|
638
|
+
model: generationUsage.model,
|
|
639
|
+
inputTokens: generationUsage.inputTokens,
|
|
640
|
+
outputTokens: generationUsage.outputTokens,
|
|
641
|
+
cacheReadTokens: generationUsage.cacheReadTokens,
|
|
642
|
+
cacheWriteTokens: generationUsage.cacheWriteTokens,
|
|
496
643
|
costCentsX100,
|
|
497
644
|
durationMs: totalDurationMs,
|
|
498
645
|
status: runStatus,
|
|
@@ -500,6 +647,12 @@ export async function instrumentAgentLoop(opts: {
|
|
|
500
647
|
toolCalls: toolCallCount,
|
|
501
648
|
successfulTools,
|
|
502
649
|
failedTools,
|
|
650
|
+
tools: [...generationToolCalls.entries()]
|
|
651
|
+
.sort(([a], [b]) => a - b)
|
|
652
|
+
.map(([, detail]) => detail),
|
|
653
|
+
toolsTruncated:
|
|
654
|
+
toolInvocationCounter > MAX_TRACKED_GENERATION_TOOL_CALLS,
|
|
655
|
+
delegation: opts.delegation,
|
|
503
656
|
createdAt: runStart,
|
|
504
657
|
experimentAssignments: opts.experimentAssignments,
|
|
505
658
|
modelSelectionSource: opts.modelSelectionSource,
|
|
@@ -35,6 +35,7 @@ Use for non-trivial work with multiple real steps (not single-action lookups). D
|
|
|
35
35
|
- Exactly one task in progress at a time; never batch-complete steps after the fact — update as you go.
|
|
36
36
|
- Always transition pending → in_progress before completing a step.
|
|
37
37
|
- If the task pivots (scope change, unexpected blocker), update the current step to reflect it before continuing.
|
|
38
|
+
- Only include fields for the selected action; do not send empty placeholder fields.
|
|
38
39
|
- End every run with "complete" (succeeded / failed / cancelled). Never leave a run open indefinitely.
|
|
39
40
|
|
|
40
41
|
Actions:
|
|
@@ -78,8 +79,9 @@ Actions:
|
|
|
78
79
|
},
|
|
79
80
|
status: {
|
|
80
81
|
type: "string",
|
|
81
|
-
enum: ["succeeded", "failed", "cancelled"],
|
|
82
|
-
description:
|
|
82
|
+
enum: ["", "succeeded", "failed", "cancelled"],
|
|
83
|
+
description:
|
|
84
|
+
'[complete] Terminal status for the run. Omit it for "start" and "update".',
|
|
83
85
|
},
|
|
84
86
|
active: {
|
|
85
87
|
type: "boolean",
|