mirror of
https://github.com/CopilotKit/CopilotKit.git
synced 2026-09-14 16:26:20 +08:00
b3c7d57406
Revalidation against current main (the branch was 1345 commits behind): - docs workflow ran `pnpm reconcile` but `add-paths` listed only the fragment, so its PR would land a fresh fragment beside a stale telemetry-events.json and fail the registry's telemetry-reconcile staleness gate — the exact failure the runtime workflow was already fixed for. Verified against the registry's shipped emitters: every automated fragment PR there (website.corp, Intelligence surfaces) carries telemetry-events.json alongside its fragment. - Refresh the action pins to the SHAs main now uses everywhere (checkout v7, setup-node v7.0.0, pnpm/action-setup v6.0.10). - Narrow the docs trigger to code under shell-docs/src, excluding src/content (1000+ MDX/JSON prose files that cannot hold a posthog.capture call site) so prose edits stop firing a full install. - Note in the zizmor justification why setup-node v7's new package-manager-cache auto-path still leaves this workflow cacheless (it engages only for npm-declared repos; this one declares pnpm). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
121 lines
4.8 KiB
YAML
121 lines
4.8 KiB
YAML
# telemetry / runtime fragment
|
|
#
|
|
# Regenerates the `CopilotKit.runtime` telemetry-registry fragment and opens a
|
|
# path-limited PR against CopilotKit/oss-path-to-production whenever a stable
|
|
# monorepo release publishes (that's when @copilotkit/runtime ships). The
|
|
# emitter is content-gated: if the runtime event set is unchanged, the fragment
|
|
# is left untouched and create-pull-request opens nothing — so this only PRs
|
|
# when the runtime's telemetry actually changed.
|
|
name: telemetry / runtime fragment
|
|
|
|
on:
|
|
# A stable monorepo release. Scoped-package releases tag "<scope>/v..."; the
|
|
# monorepo (which carries @copilotkit/runtime) tags "vX.Y.Z" — no slash.
|
|
release:
|
|
types: [published]
|
|
workflow_dispatch: {}
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: telemetry-runtime-fragment
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
fragment:
|
|
if: >
|
|
github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'release' &&
|
|
github.event.release.prerelease == false &&
|
|
!contains(github.event.release.tag_name, '/'))
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
contents: read
|
|
# GitHub rejects secrets.* in an `if:`, so surface the registry App ID as an
|
|
# env var and gate the mint step on it — the workflow self-skips when the
|
|
# registry App secrets aren't configured on this repo.
|
|
env:
|
|
REGISTRY_APP_ID: ${{ secrets.TELEMETRY_REGISTRY_APP_ID }}
|
|
steps:
|
|
- name: Checkout CopilotKit
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: Setup pnpm
|
|
uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10
|
|
|
|
- name: Setup Node
|
|
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
with:
|
|
node-version: 22.x
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
|
|
# Cross-repo token, least privilege: NO explicit owner (defaults to the
|
|
# app installation's owner) + bare `repositories` scopes the token to this
|
|
# one repo; contents+pull-requests write and nothing else.
|
|
- name: Mint token for oss-path-to-production
|
|
if: env.REGISTRY_APP_ID != ''
|
|
id: token
|
|
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
|
|
with:
|
|
app-id: ${{ secrets.TELEMETRY_REGISTRY_APP_ID }}
|
|
private-key: ${{ secrets.TELEMETRY_REGISTRY_APP_PRIVATE_KEY }}
|
|
repositories: oss-path-to-production
|
|
permission-contents: write
|
|
permission-pull-requests: write
|
|
|
|
- name: Checkout oss-path-to-production
|
|
if: steps.token.outputs.token != ''
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
with:
|
|
repository: CopilotKit/oss-path-to-production
|
|
token: ${{ steps.token.outputs.token }}
|
|
path: p2p
|
|
persist-credentials: false
|
|
|
|
- name: Generate runtime fragment
|
|
if: steps.token.outputs.token != ''
|
|
run: pnpm tsx scripts/telemetry/emit-fragment.ts --surface runtime --out p2p/telemetry-registry/fragments/CopilotKit.runtime.json
|
|
|
|
# Regenerate the canonical alongside the fragment — the registry's reconcile
|
|
# CI rejects a stale telemetry-events.json, so a fragment-only PR fails.
|
|
# Use the registry's own pnpm (its packageManager field).
|
|
- name: Setup pnpm for registry
|
|
if: steps.token.outputs.token != ''
|
|
uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10
|
|
with:
|
|
package_json_file: p2p/package.json
|
|
|
|
- name: Reconcile registry
|
|
if: steps.token.outputs.token != ''
|
|
working-directory: p2p
|
|
run: |
|
|
pnpm install --frozen-lockfile
|
|
pnpm reconcile
|
|
|
|
- name: Open fragment PR
|
|
if: steps.token.outputs.token != ''
|
|
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8
|
|
with:
|
|
token: ${{ steps.token.outputs.token }}
|
|
path: p2p
|
|
add-paths: |
|
|
telemetry-registry/fragments/CopilotKit.runtime.json
|
|
telemetry-registry/telemetry-events.json
|
|
base: main
|
|
branch: telemetry/copilotkit-runtime
|
|
delete-branch: true
|
|
commit-message: "chore(telemetry): update CopilotKit.runtime fragment"
|
|
title: "chore(telemetry): update CopilotKit.runtime fragment"
|
|
body: |
|
|
Automated update of the `CopilotKit.runtime` telemetry-registry fragment,
|
|
emitted from the CopilotKit runtime type catalog on a stable release.
|
|
|
|
`telemetry-events.json` is regenerated alongside it (`pnpm reconcile`) so the
|
|
registry's reconcile check sees a fresh canonical; curated fields are preserved.
|