From 85d2c54d5383fc78c69cedbfd37f245645a6785e Mon Sep 17 00:00:00 2001 From: dotta Date: Mon, 23 Mar 2026 19:23:10 -0500 Subject: [PATCH] fix(ci): refresh lockfile in PR jobs --- .github/workflows/pr.yml | 20 ++++++++++++++++++++ ui/src/lib/mention-chips.ts | 32 +++++++++++++++++++++++++++----- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 8ec14f0d..b19de9dd 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -56,6 +56,8 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Setup pnpm uses: pnpm/action-setup@v4 @@ -68,6 +70,14 @@ jobs: node-version: 24 cache: pnpm + - name: Refresh lockfile when manifests change + run: | + changed="$(git diff --name-only "${{ github.event.pull_request.base.sha }}" "${{ github.event.pull_request.head.sha }}")" + manifest_pattern='(^|/)package\.json$|^pnpm-workspace\.yaml$|^\.npmrc$|^pnpmfile\.(cjs|js|mjs)$' + if printf '%s\n' "$changed" | grep -Eq "$manifest_pattern"; then + pnpm install --lockfile-only --ignore-scripts --no-frozen-lockfile + fi + - name: Install dependencies run: pnpm install --frozen-lockfile @@ -94,6 +104,8 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Setup pnpm uses: pnpm/action-setup@v4 @@ -106,6 +118,14 @@ jobs: node-version: 24 cache: pnpm + - name: Refresh lockfile when manifests change + run: | + changed="$(git diff --name-only "${{ github.event.pull_request.base.sha }}" "${{ github.event.pull_request.head.sha }}")" + manifest_pattern='(^|/)package\.json$|^pnpm-workspace\.yaml$|^\.npmrc$|^pnpmfile\.(cjs|js|mjs)$' + if printf '%s\n' "$changed" | grep -Eq "$manifest_pattern"; then + pnpm install --lockfile-only --ignore-scripts --no-frozen-lockfile + fi + - name: Install dependencies run: pnpm install --frozen-lockfile diff --git a/ui/src/lib/mention-chips.ts b/ui/src/lib/mention-chips.ts index d951d0ce..fe043100 100644 --- a/ui/src/lib/mention-chips.ts +++ b/ui/src/lib/mention-chips.ts @@ -112,11 +112,7 @@ function buildAgentIconMask(iconName: string | null): string | null { if (cached) return cached; const Icon = getAgentIcon(iconName); - const iconNode = ( - Icon as unknown as { - iconNode?: Array<[string, Record]>; - } - ).iconNode; + const iconNode = resolveLucideIconNode(Icon); if (!Array.isArray(iconNode) || iconNode.length === 0) return null; const body = iconNode.map(([tag, attrs]) => { @@ -136,6 +132,32 @@ function buildAgentIconMask(iconName: string | null): string | null { return url; } +function resolveLucideIconNode( + icon: unknown, +): Array<[string, Record]> | null { + const staticIconNode = ( + icon as { + iconNode?: Array<[string, Record]>; + } + ).iconNode; + if (Array.isArray(staticIconNode) && staticIconNode.length > 0) { + return staticIconNode; + } + + const render = ( + icon as { + render?: (props: Record, ref: unknown) => { + props?: { iconNode?: Array<[string, Record]> }; + } | null; + } + ).render; + const rendered = typeof render === "function" ? render({}, null) : null; + const renderedIconNode = rendered?.props?.iconNode; + return Array.isArray(renderedIconNode) && renderedIconNode.length > 0 + ? renderedIconNode + : null; +} + function escapeAttribute(value: string): string { return value .replaceAll("&", "&")