Skip to content

fix(@inkeep/agents-work-apps): mark @slack/socket-mode as dependency#2951

Merged
dimaMachina merged 5 commits intomainfrom
fix-build-in-work-app
Apr 1, 2026
Merged

fix(@inkeep/agents-work-apps): mark @slack/socket-mode as dependency#2951
dimaMachina merged 5 commits intomainfrom
fix-build-in-work-app

Conversation

@dimaMachina
Copy link
Copy Markdown
Collaborator

before

image

after

image

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Apr 1, 2026

🦋 Changeset detected

Latest commit: 256e3ad

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 10 packages
Name Type
@inkeep/agents-work-apps Patch
@inkeep/agents-api Patch
@inkeep/agents-manage-ui Patch
@inkeep/agents-cli Patch
@inkeep/agents-core Patch
@inkeep/agents-email Patch
@inkeep/agents-mcp Patch
@inkeep/agents-sdk Patch
@inkeep/ai-sdk-provider Patch
@inkeep/create-agents Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 1, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
agents-api Ready Ready Preview, Comment Apr 1, 2026 5:07pm
agents-docs Ready Ready Preview, Comment Apr 1, 2026 5:07pm
agents-manage-ui Ready Ready Preview, Comment Apr 1, 2026 5:07pm

Request Review

@dimaMachina
Copy link
Copy Markdown
Collaborator Author

@claude add a changeset based on changes in this PR

@socket-security
Copy link
Copy Markdown

socket-security Bot commented Apr 1, 2026

@socket-security
Copy link
Copy Markdown

socket-security Bot commented Apr 1, 2026

All alerts resolved. Learn more about Socket for GitHub.

This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored.

View full report

@inkeep-internal-ci
Copy link
Copy Markdown
Contributor

inkeep-internal-ci Bot commented Apr 1, 2026

Claude finished @dimaMachina's task in 1m 10s —— View job


Added changeset

  • Analyze PR changes
  • Create changeset
  • Commit and push

Created .changeset/fix-work-apps-build.md with a patch bump for @inkeep/agents-work-apps:

Fix build by marking @slack/socket-mode as external (neverBundle)

Pushed in commit 1150047.
·

@github-actions github-actions Bot deleted a comment from claude Bot Apr 1, 2026
@pullfrog
Copy link
Copy Markdown
Contributor

pullfrog Bot commented Apr 1, 2026

TL;DR — Fixes the agents-work-apps build by moving @slack/socket-mode from devDependencies to dependencies so tsdown stops trying to bundle it. Also adds per-workspace knip scripts enforced by a Biome nursery rule, cleans up tsdown configs, and removes the unused lucide-react dependency from agents-ui-demo.

Key changes

  • Move @slack/socket-mode to dependencies in agents-work-apps — as a production dependency it is excluded from bundling, preventing tsdown from compiling its native-addon-dependent source.
  • Add per-workspace knip scripts with Biome enforcementagents-email, agents-work-apps, agents-ui-demo, langfuse-dataset-example, and test-agents each gain a knip script; the useRequiredScripts nursery rule errors if one is missing.
  • Clean up agents-cli/tsdown.config.ts — expands the entry array for readability, excludes test-helpers.ts, and enables globImport: true.
  • Remove treeshake preset from root tsdown.config.ts — drops the treeshake: { preset: 'smallest' } option.
  • Remove unused lucide-react from agents-ui-demo — flagged by knip.

Summary | 12 files | 5 commits | base: mainfix-build-in-work-app


@slack/socket-mode moved to production dependencies

Before: @slack/socket-mode was listed in devDependencies, causing tsdown to compile its source — which fails due to native addon dependencies.
After: Listed in dependencies, so tsdown treats it as external and skips compilation entirely.

This is the root cause of the build failure. The package relies on native addons that cannot survive bundling; moving it to dependencies ensures tsdown never attempts to process it.

packages/agents-work-apps/package.json


Per-workspace knip scripts and Biome enforcement

Before: No per-workspace knip scripts; unused dependencies could accumulate silently.
After: Each workspace defines a knip script and Biome's useRequiredScripts nursery rule errors if one is missing.

The lucide-react removal from agents-ui-demo is a direct result of running knip. A new knip.config.ts in test-agents allowlists @inkeep/agents-cli since it's consumed via a config file rather than a direct import.

biome.jsonc · test-agents/knip.config.ts · agents-ui-demo/package.json


agents-cli tsdown config cleanup

Before: Single-line entry array, included test-helpers.ts in build output, no globImport.
After: Multi-line entry with !**/test-helpers.ts exclusion and globImport: true enabled.

agents-cli/tsdown.config.ts · tsdown.config.ts

Pullfrog  | View workflow run | Triggered by Pullfrog | Using Claude Opus𝕏

@pullfrog
Copy link
Copy Markdown
Contributor

pullfrog Bot commented Apr 1, 2026

PR Summary

TL;DR

Fixes a build failure in @inkeep/agents-work-apps by marking @slack/socket-mode as a never-bundled external dependency. Alongside this, migrates all tsdown configs from the deprecated external option to the new deps.neverBundle API (tsdown ^0.21.7), and enforces that every workspace package declares a knip script via a new Biome lint rule.


Key Changes

1. Mark @slack/socket-mode as external in agents-work-apps

  • File: packages/agents-work-apps/tsdown.config.ts
  • Before: No external/neverBundle config — tsdown attempted to bundle @slack/socket-mode, which contains native/incompatible code that breaks the build (see "before" screenshot in PR body).
  • After: deps: { neverBundle: ['@slack/socket-mode'] } ensures the package is always required at runtime from node_modules, not inlined into the bundle.
  • Why it matters: This is the primary fix. Without it, the agents-work-apps build fails.

2. Migrate externaldeps.neverBundle across all tsdown configs

  • Files: agents-api/tsdown.config.ts, agents-cli/tsdown.config.ts, packages/agents-core/tsdown.config.ts
  • Before: Used the external: [...] option (deprecated/removed in tsdown 0.21+).
  • After: Uses deps: { neverBundle: [...] } with identical package lists.
  • Why it matters: The tsdown upgrade to ^0.21.7 requires this migration. The external field is no longer supported; deps.neverBundle is the replacement API with equivalent semantics.

3. Upgrade tsdown from ^0.19.0 to ^0.21.7

  • File: package.json (root)
  • Before: tsdown: ^0.19.0
  • After: tsdown: ^0.21.7
  • Why it matters: Enables the deps.neverBundle API used across all configs. The lockfile update (1034 lines changed) reflects the transitive dependency resolution for this upgrade.

4. Enforce knip script in every workspace package (Biome lint rule)

  • File: biome.jsonc
  • Before: No enforcement that packages have a knip script.
  • After: nursery.useRequiredScripts rule set to "error" requiring a "knip" script in every package.json.
  • Why it matters: Ensures every workspace is configured for dead-dependency detection via knip, preventing unused dependencies from accumulating.

5. Add missing knip scripts to workspace packages

  • Files: agents-cookbook/evals/langfuse-dataset-example/package.json, agents-ui-demo/package.json, packages/agents-email/package.json, packages/agents-work-apps/package.json, test-agents/package.json
  • Before: These packages had no knip script.
  • After: Each gets a knip script scoped to its workspace (e.g., knip --directory ../.. --workspace packages/agents-work-apps --dependencies).
  • Why it matters: Required to satisfy the new Biome lint rule from change readme clarity #4.

6. Add knip config for test-agents

  • File: test-agents/knip.config.ts (new file)
  • Before: No knip config — knip would flag @inkeep/agents-cli as unused.
  • After: Creates a config that ignores @inkeep/agents-cli (used in inkeep.config.ts, not statically detectable by knip).
  • Why it matters: Prevents false-positive unused dependency warnings in the test-agents workspace.

7. Remove unused lucide-react dependency

  • File: agents-ui-demo/package.json
  • Before: lucide-react: ^0.539.0 listed as a dependency.
  • After: Removed.
  • Why it matters: Likely surfaced by knip as an unused dependency — cleaning it up.

8. Fix missing newline at EOF in AGENTS.md

  • File: AGENTS.md
  • Before: File ended without a trailing newline.
  • After: Trailing newline added.
  • Why it matters: Trivial housekeeping — fixes "No newline at end of file" warnings.

All Changed Files

# File Category
1 packages/agents-work-apps/tsdown.config.ts Primary fix — neverBundle @slack/socket-mode
2 agents-api/tsdown.config.ts tsdown config migration (externalneverBundle)
3 agents-cli/tsdown.config.ts tsdown config migration
4 packages/agents-core/tsdown.config.ts tsdown config migration
5 package.json tsdown version bump 0.190.21.7
6 biome.jsonc New lint rule: require knip script
7 agents-cookbook/evals/langfuse-dataset-example/package.json Add knip script
8 agents-ui-demo/package.json Add knip script + remove unused lucide-react
9 packages/agents-email/package.json Add knip script
10 packages/agents-work-apps/package.json Add knip script
11 test-agents/package.json Add knip script
12 test-agents/knip.config.ts New knip config (ignore false positive)
13 pnpm-lock.yaml Lockfile update (tsdown upgrade + lucide-react removal)
14 AGENTS.md Trailing newline fix

Pullfrog  | View workflow run | Triggered by Pullfrog | Using Claude Opus𝕏

@pullfrog
Copy link
Copy Markdown
Contributor

pullfrog Bot commented Apr 1, 2026

TL;DR — Fixes a build failure in @inkeep/agents-work-apps caused by bundling @slack/socket-mode (which contains native/incompatible code). Also upgrades tsdown from 0.19 to 0.21.7, migrating all configs to the new deps.neverBundle API, and enforces per-workspace knip scripts via a new Biome lint rule.

Key changes

  • Mark @slack/socket-mode as neverBundle — prevents the build error by excluding the package from the tsdown bundle in agents-work-apps
  • Migrate externaldeps.neverBundle — updates all four tsdown configs to match the new tsdown 0.21+ API
  • Upgrade tsdown to ^0.21.7 — picks up the deps.neverBundle option and drops the deprecated external field
  • Enforce knip script in every workspace — adds a Biome useRequiredScripts rule and the corresponding knip scripts to five workspaces that were missing them
  • Remove unused lucide-react — drops a dead dependency from agents-ui-demo, likely surfaced by knip

Summary | 14 files | 4 commits | base: mainfix-build-in-work-app


@slack/socket-mode excluded from bundle

Before: tsdown attempted to bundle @slack/socket-mode into the agents-work-apps output, causing a build failure due to incompatible native code.
After: the package is listed in deps.neverBundle, keeping it as an external runtime dependency and resolving the build error.

The tsdown upgrade from ^0.19.0 to ^0.21.7 replaces the deprecated external option with the new deps.neverBundle array across all four tsdown configs (agents-api, agents-cli, agents-core, agents-work-apps). The agents-work-apps config gains @slack/socket-mode as its first neverBundle entry — the root cause of the build failure.

packages/agents-work-apps/tsdown.config.ts · agents-api/tsdown.config.ts · packages/agents-core/tsdown.config.ts · package.json


Per-workspace knip enforcement

Before: no lint rule ensured workspaces defined a knip script, so dead dependencies could accumulate undetected.
After: Biome's useRequiredScripts: ["knip"] rule fails CI if any workspace package.json is missing a knip script.

Five workspaces gained the missing knip script, and a new test-agents/knip.config.ts was added to ignore @inkeep/agents-cli (a false positive). The lucide-react dependency in agents-ui-demo was removed — likely the first catch from this enforcement.

biome.jsonc · test-agents/knip.config.ts · agents-ui-demo/package.json

Pullfrog  | View workflow run | Triggered by Pullfrog | Using Claude Opus𝕏

Copy link
Copy Markdown
Contributor

@pullfrog pullfrog Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clean PR. The core fix (marking @slack/socket-mode as neverBundle) is correct, and the tsdown externaldeps.neverBundle migration is complete across all configs. The biome useRequiredScripts rule is a nice guardrail for ensuring consistent knip coverage.

Two observations (neither blocking):

  1. @slack/socket-mode dependency categorization — it's listed as a devDependency in agents-work-apps/package.json but dynamically imported at runtime (src/slack/socket-mode.ts:19). This works in the monorepo (hoisted deps), but if @inkeep/agents-work-apps is ever installed standalone, startSocketMode() will fail. Consider promoting it to dependencies or optionalDependencies.

  2. notFound revert — the PR removes the recently-added ConversationTimeRange discriminated union and the 404 early-exit path, plus deletes the associated changeset. A 404 from the bounds API now falls through to the generic catch/warn/fallback path, meaning SigNoz still gets queried with a 180-day window. Worth a note in the PR description on why this is being reverted.

Pullfrog  | Fix all ➔Fix 👍s ➔View workflow run | Using Claude Opus𝕏

format: 'esm',
entry: ['src/**/*.ts', '!**/__tests__', '!**/*.test.ts'],
deps: {
neverBundle: ['@slack/socket-mode'],
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct fix — @slack/socket-mode is dynamically imported at runtime and must not be bundled.

Note: the package is currently listed as a devDependency in package.json despite being runtime-imported. This works in the monorepo, but would break for standalone consumers. Consider moving to dependencies or optionalDependencies in a follow-up.

Comment thread agents-manage-ui/src/lib/api/signoz-conversation-time-range.ts
Copy link
Copy Markdown
Contributor

@claude claude Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Review Summary

(0) Total Issues | Risk: Low

✅ No Issues Found

This PR is clean. The automated review dispatched 3 domain-specific reviewers (DevOps, Standards, Consistency) and none found actionable issues.

What was verified:

  1. tsdown migration (externaldeps.neverBundle) — All 4 tsdown configs migrated correctly and consistently. The API change aligns with tsdown 0.21.x.

  2. @slack/socket-mode exclusion — Correctly marked as neverBundle since it's dynamically imported at runtime (line 19 of socket-mode.ts) and contains native code that cannot be bundled.

  3. Biome useRequiredScripts rule — Properly configured to enforce knip scripts across workspaces. The 5 packages missing knip scripts were updated.

  4. Changeset — Appropriate patch bump for @inkeep/agents-work-apps.

🕐 Pending Recommendations (1)

  • 🟡 packages/agents-work-apps/package.json @slack/socket-mode is in devDependencies but used at runtime — consider promoting to dependencies or optionalDependencies (raised by Pullfrog)

✅ APPROVE

Summary: Clean, well-executed fix. The core change (marking @slack/socket-mode as neverBundle) correctly resolves the build failure. The opportunistic tsdown API migration and knip enforcement are consistent and complete. The only open item is the dependency categorization question raised by Pullfrog, which is non-blocking.

Reviewers (3)
Reviewer Returned Main Findings Consider While You're Here Inline Comments Pending Recs Discarded
pr-review-devops 0 0 0 0 0 0 0
pr-review-standards 0 0 0 0 0 0 0
pr-review-consistency 0 0 0 0 0 0 0
Total 0 0 0 0 0 0 0

@github-actions github-actions Bot deleted a comment from claude Bot Apr 1, 2026
@dimaMachina dimaMachina changed the title fix(@inkeep/agents-work-apps): mark @slack/socket-mode as external (neverBundle) fix(@inkeep/agents-work-apps): mark @slack/socket-mode as dependency Apr 1, 2026
Comment thread .changeset/fix-work-apps-build.md Outdated
@inkeep
Copy link
Copy Markdown
Contributor

inkeep Bot commented Apr 1, 2026

I see the suggestion has already been applied to the changeset file. The description now reads: "Fix build in @inkeep/agents-work-apps, marking @slack/socket-mode as dependecy to avoid compiling its source code" 👍

Copy link
Copy Markdown
Contributor

@claude claude Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Review Summary

(0) Total Issues | Risk: Low

✅ No New Issues

This is a delta review covering the 1 commit since the previous review (504d19a37).

Changes in this delta:

  1. @slack/socket-mode promoted to dependencies — Moves the package from devDependencies to dependencies in agents-work-apps/package.json. This directly addresses the prior Pullfrog observation about the package being runtime-imported but incorrectly categorized. Now standalone consumers will have the dependency correctly installed.

  2. neverBundle removed from agents-work-apps/tsdown.config.ts — Since the package is now a proper dependency and unbundle: true is set, explicit neverBundle configuration is no longer needed. The dependency will be externalized by default.

  3. treeshake removed from root tsdown.config.ts — Removes the treeshake: { preset: 'smallest' } option from the root config. This is a cleanup change that doesn't affect the fix.

Prior Feedback Addressed

✅ The Pullfrog observation about @slack/socket-mode dependency categorization has been addressed in this commit.


✅ APPROVE

Summary: Clean follow-up commit that addresses the prior review feedback by promoting @slack/socket-mode to a runtime dependency. The fix is now complete and correct.

Reviewers (0)
Reviewer Returned Main Findings Consider While You're Here Inline Comments Pending Recs Discarded
Total 0 0 0 0 0 0 0

Note: No sub-reviewers dispatched — delta scope was small (3 files, 1 commit) and covered straightforward dependency/config changes that addressed prior feedback.

Copy link
Copy Markdown
Contributor

@claude claude Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Review Summary

(0) Total Issues | Risk: Low

✅ No Changes Since Last Review

This is a re-review with no new commits since the previous automated review at commit f65c812e034a.

Current state: The PR correctly fixes the @inkeep/agents-work-apps build by:

  1. Moving @slack/socket-mode to dependencies — The package is dynamically imported at runtime (socket-mode.ts:19), so it must be a runtime dependency, not a dev dependency. This fixes both the bundling issue and ensures standalone consumers get the dependency installed.

  2. Migrating externaldeps.neverBundle — All tsdown configs updated consistently for tsdown 0.21.x API.

  3. Adding Biome useRequiredScripts enforcement — Ensures all workspaces have a knip script for dead dependency detection.

  4. Removing unused lucide-react — Cleanup caught by the new knip enforcement.

Prior Feedback Status

Pullfrog's observation about @slack/socket-mode being in devDependencies has been addressed — it's now correctly in dependencies.


✅ APPROVE

Summary: No new changes since last approval. The PR is ready to merge. 🚢

Reviewers (0)
Reviewer Returned Main Findings Consider While You're Here Inline Comments Pending Recs Discarded
Total 0 0 0 0 0 0 0

Note: No sub-reviewers dispatched — this is a re-review with no new commits since the last automated review.

@dimaMachina dimaMachina force-pushed the fix-build-in-work-app branch from f65c812 to 2d7c270 Compare April 1, 2026 16:50
Comment thread agents-cli/tsdown.config.ts
Comment thread agents-cli/tsdown.config.ts
Copy link
Copy Markdown
Contributor

@claude claude Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Review Summary

(1) Total Issues | Risk: Low

🟠⚠️ Major (1) 🟠⚠️

🟠 1) <missing_file> Missing changeset for published package

Issue: This PR modifies @inkeep/agents-work-apps (a published package) by moving @slack/socket-mode from devDependencies to dependencies, but no changeset file is present in the PR.

Why: Per AGENTS.md guidelines, any behavior change to a published package requires a changeset. This fix affects how the package is installed by downstream consumers — without @slack/socket-mode in dependencies, standalone consumers would get a runtime error when startSocketMode() is called.

Fix: Add a changeset:

pnpm bump patch --pkg agents-work-apps "Fix build by marking @slack/socket-mode as a runtime dependency"

Refs:


✅ Verified as Correct

  1. @slack/socket-modedependencies — Correctly moved from devDependencies to dependencies. The package is dynamically imported at runtime in socket-mode.ts, so it must be a runtime dependency.

  2. Biome useRequiredScripts rule — Properly configured to enforce knip scripts across all workspaces.

  3. knip scripts added — All 5 workspaces that were missing knip scripts now have them.

  4. lucide-react removed — Unused dependency correctly removed from agents-ui-demo.

  5. external kept in agents-cli/tsdown.config.ts — dimaMachina's suggestion was applied correctly.


🚫 REQUEST CHANGES

Summary: The core fix is correct and all prior feedback has been addressed. The only blocking issue is the missing changeset for @inkeep/agents-work-apps. Once added, this PR is ready to merge.

Reviewers (0)
Reviewer Returned Main Findings Consider While You're Here Inline Comments Pending Recs Discarded
Total 0 0 0 0 0 0 0

Note: No sub-reviewers dispatched — this is a delta review of a small, focused build-fix PR that has been previously reviewed and approved. The only new finding is the missing changeset.

Copy link
Copy Markdown
Contributor

@claude claude Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Review Summary

(1) Total Issues | Risk: Low

✅ No New Issues in Delta

This is a delta review covering 1 commit since the previous automated review (2ba4dcb13).

Change in this delta:

  • agents-cli/tsdown.config.ts — Added outDir: 'dist' (line 16), applying dimaMachina's suggestion. This is a correct and straightforward config change.

🕐 Pending Recommendations (1)

  • 🟠 <missing_file> Missing changeset for @inkeep/agents-work-apps — Moving @slack/socket-mode from devDependencies to dependencies affects how the package is installed by downstream consumers and requires a changeset

🚫 REQUEST CHANGES

Summary: The delta commit is clean — it correctly applies dimaMachina's suggestion to add outDir: 'dist' to the CLI config. However, the missing changeset flagged in the previous review remains unresolved. Once added, this PR is ready to merge.

To fix:

pnpm bump patch --pkg agents-work-apps "Fix build by marking @slack/socket-mode as a runtime dependency"
Reviewers (0)
Reviewer Returned Main Findings Consider While You're Here Inline Comments Pending Recs Discarded
Total 0 0 0 0 0 1 0

Note: No sub-reviewers dispatched — delta scope was trivial (1 file, 1 line change applying a suggestion).

@github-actions github-actions Bot deleted a comment from claude Bot Apr 1, 2026
Copy link
Copy Markdown
Contributor

@claude claude Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Review Summary

(0) Total Issues | Risk: Low

✅ No New Issues

This is a delta review covering the 1 commit since the previous automated review (14ed168f9).

Change in this delta:

  • .changeset/breezy-lemons-dream.md — Adds the missing changeset for @inkeep/agents-work-apps with a patch bump. The changeset accurately describes the fix: moving @slack/socket-mode to dependencies to avoid compilation errors.

Prior Feedback Addressed

✅ The missing changeset issue flagged in the previous review has been resolved. The changeset correctly targets @inkeep/agents-work-apps with a patch bump and a clear description.

Full PR Summary (for posterity)

This PR correctly fixes the @inkeep/agents-work-apps build by:

  1. Moving @slack/socket-mode to dependencies — The package is dynamically imported at runtime, so it must be a runtime dependency. This ensures standalone consumers get the dependency installed and prevents bundling issues.

  2. Adding Biome useRequiredScripts enforcement — Ensures all workspaces have a knip script for dead dependency detection.

  3. Adding knip scripts to 5 workspaces that were missing them.

  4. Removing unused lucide-react from agents-ui-demo — Cleanup caught by knip.

  5. agents-cli/tsdown.config.ts improvements — Excludes test-helpers.ts from build, adds globImport: true, and expands entry for readability.


✅ APPROVE

Summary: The blocking issue from the previous review (missing changeset) has been addressed. The changeset is properly formatted with an appropriate patch bump and accurate description. Ship it! 🚢

Reviewers (0)
Reviewer Returned Main Findings Consider While You're Here Inline Comments Pending Recs Discarded
Total 0 0 0 0 0 0 0

Note: No sub-reviewers dispatched — delta scope was trivial (1 file, changeset addition only).

@github-actions github-actions Bot deleted a comment from claude Bot Apr 1, 2026
@dimaMachina dimaMachina added this pull request to the merge queue Apr 1, 2026
Merged via the queue into main with commit a26343d Apr 1, 2026
25 of 26 checks passed
@dimaMachina dimaMachina deleted the fix-build-in-work-app branch April 1, 2026 17:27
Gaurav-Narayan-Varma pushed a commit that referenced this pull request Apr 1, 2026
…cy` (#2951)

* upd

* upd

* Apply suggestion from @dimaMachina

* Apply suggestion from @dimaMachina

* Create breezy-lemons-dream.md
dimaMachina added a commit that referenced this pull request Apr 2, 2026
…cy` (#2951)

* upd

* upd

* Apply suggestion from @dimaMachina

* Apply suggestion from @dimaMachina

* Create breezy-lemons-dream.md
github-merge-queue Bot pushed a commit that referenced this pull request Apr 2, 2026
* chore(dashboard): dockerize visual regression tests for cross-OS consistency

Run Playwright browser inside a Docker container so visual screenshot
tests produce identical results on macOS (local dev) and Linux (CI).

- Add docker-compose.visual.yml with Playwright server container
- Update vitest config to connect to Docker browser via websocket
  when PW_TEST_CONNECT_WS_ENDPOINT env var is set
- Add test:visual and test:visual:update npm scripts
- Update CI workflow to use Docker Playwright server instead of
  bare Playwright install
- Regenerate screenshot baselines from Linux container

Closes PRD-6191

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* fix: address PR review feedback

- Add explicit failure handling if Playwright server doesn't start
- Bind Docker port to 127.0.0.1 only (don't expose to network)
- Align npx playwright version with Docker image (both 1.58.0)

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* fix: restore Playwright install step in CI

The @vitest/browser-playwright package requires a local Playwright
install to initialize, even when the actual browser runs in Docker
via connectOptions. Keep the install step alongside the Docker server.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* fix(dashboard): pass PW_TEST_CONNECT_WS_ENDPOINT through turbo strict mode

Turbo v2 strict mode filters env vars not listed in turbo.json from
child processes. The Playwright WebSocket endpoint was being silently
dropped, causing vitest to fall back to local Chromium instead of the
Docker server — producing mismatched screenshots in CI.

Also pins docker-compose.visual.yml to linux/amd64 so local baselines
match CI regardless of host architecture (see
microsoft/playwright#13873), and fixes the
Playwright cache restore-keys prefix mismatch.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* docs: add visual regression test workflow to AGENTS.md

* fix(dashboard): resolve Monaco strict locator violation in nested error state visual test

* fix(dashboard): fix Monaco strict locator violation with data-testid and stable render wait

* Refactor vitest.config.ts by removing unused code

* Update vitest.config.ts

* fix(dashboard): restore onUnhandledError handler for Monaco browser tests

The previous refactor removed the onUnhandledError handler, causing CI
to fail with exit code 1 due to 3 known, unfixable Monaco Editor errors
in Vitest browser mode:

1. "Cannot use import statement outside a module" - Monaco web workers
   cannot load ESM in the Vitest browser sandbox
2. "InvalidCharacterError" / "is not a valid name" - Monaco attempts
   createElement with an SVG data URI as the tag name
3. "Closing rpc while" - Vitest worker RPC shutdown race condition

These errors were originally suppressed by Nick in #2046 and #2078 after
investigation confirmed they are unfixable Monaco/Vitest internals that
do not affect test correctness.

Refs: #2046, #2078

* fix(dashboard): remove unused pixelmatch devDependency

The pixelmatch package is no longer imported after the vitest.config.ts
refactor removed the custom tolerantPixelmatch comparator. Knip
correctly flags it as unused.

* fix

* upd

* upd

* format

* lock

* rm

* fix

* Create fluffy-gorillas-joke.md

* Apply suggestion from @claude[bot]

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>

* fix(@inkeep/agents-work-apps): mark `@slack/socket-mode` as `dependency` (#2951)

* upd

* upd

* Apply suggestion from @dimaMachina

* Apply suggestion from @dimaMachina

* Create breezy-lemons-dream.md

* Document MCP header forwarding in Visual Builder docs (#2956)

* docs: add MCP header forwarding and fix header key casing examples

* updated warnings in headers docs

* updated warnings in mcp servers docs

* In product copilot tutorial (#2957)

* docs build updated api reference

* tutorial done

* implements pnpm minimumReleaseAge and upgrades pnpm to 10.33.0 (#2958)

* implements pnpm minimumReleaseAge

* upgrades pnpm to 10.16.0

* upgrades pnpm to 10.33.0

* ci: surface stable preview URLs in PRs (#2799)

* ci: surface stable preview urls in PRs

* fix: add temp file cleanup trap and paginate comment search

- Add EXIT trap to clean up mktemp file
- Paginate through all PR comments when searching for the existing
  marker comment, fixing duplicate-comment risk on PRs with 100+ comments

Co-authored-by: Andrew Mikofalvy <[email protected]>
Co-Authored-By: Claude Opus 4.6 <[email protected]>

* ci: fix preview URL comment updates

---------

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Andrew Mikofalvy <[email protected]>
Co-authored-by: Claude Opus 4.6 <[email protected]>

* feat: S3 presigned URLs for private media delivery (#2887)

* feat: add S3 presigned URL support for private media delivery

- Add optional getPresignedUrl() to BlobStorageProvider interface
- Implement in S3BlobStorageProvider using @aws-sdk/s3-request-presigner
- Make resolveMessageBlobUris() async with presigned URL first, manage
  proxy fallback for non-S3 backends (Option D hybrid)
- Update both call sites (run + manage conversation routes) with await
- Add presigned URL tests to s3-provider and resolve-blob-uris test suites
- Include full spec with evidence files

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

* docs: add S3 blob storage deployment guide

Covers S3 setup, IAM permissions, env vars, S3-compatible services,
storage backend priority, and presigned URL delivery flow.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

* chore: add changeset for S3 presigned URL support

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

* fix: add error handling for presigned URL failures with proxy fallback

- Wrap getPresignedUrl() in try-catch so failures fall through to manage
  proxy URL instead of crashing the entire conversation response
- Add test for presigned URL failure → proxy fallback path
- Add mixed-content test with presigned URLs active
- Fix doc icon quoting convention

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

* fix: correct callout type and remove inaccurate configurable claim in docs

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

* feat: make presigned URL expiry configurable via `BLOB_STORAGE_PRESIGNED_URL_EXPIRY_SECONDS`

- Add `BLOB_STORAGE_PRESIGNED_URL_EXPIRY_SECONDS` to env.ts Zod schema
  (default 7200s / 2 hours, range 60–604800)
- Replace hardcoded `DEFAULT_PRESIGNED_EXPIRY_SECONDS` constant in
  s3-provider.ts with env var lookup
- Update tests to use env var in mocks and verify new default
- Add env var to .env.example files and deployment docs

* fix: address PR review comments

- Clarify Vercel Blob is also a valid production backend (serves via proxy)
- Add per-service S3-compatible path-style guidance (R2 vs B2 vs Spaces)
- Make first resolve-blob-uris test explicitly set its mock (test isolation)

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

* chore: reset lockfile from main to minimize resolution drift

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

* fix: pin s3-request-presigner to match client-s3 to prevent lockfile drift

Pin @aws-sdk/s3-request-presigner to 3.995.0 (same as resolved client-s3)
to minimize pnpm-lock.yaml changes and prevent react version mismatch
that caused agents-email test failures in CI.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

* Resolve blob storage provider once per message list instead of per message

Addresses PR feedback: call getBlobStorageProvider() once in
resolveMessagesListBlobUris and pass the provider through to
resolveMessageBlobUris, avoiding N singleton lookups per conversation
retrieval.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

* chore: reset lockfile from main and reinstall to fix CI

Reset pnpm-lock.yaml from main per repo guidelines to prevent
resolution drift that was causing monaco-editor ESM import failures
in agents-manage-ui tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

* Address remaining review suggestions: list-level presigned URL test and AWS CLI prerequisite

- Add test for resolveMessagesListBlobUris with presigned URLs active
  across multiple messages, covering Promise.all handling
- Add AWS CLI prerequisite note to S3 setup docs

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

* Remove AWS CLI prerequisite note from S3 docs

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
Co-authored-by: pullfrog[bot] <226033991+pullfrog[bot]@users.noreply.github.com>

* ci: add preview janitor and recreate control (#2930)

* ci: add preview state janitor and recreate path

* ci: simplify preview janitor and var resolution

* ci: address preview janitor review feedback

* ci: gate preview auth on SpiceDB deployment readiness

* ci: tighten preview bootstrap retry budget

* ci: retry preview recreate after Railway delete

* ci: clarify skipped preview workflow jobs

* Rename headers in schema and usage to hyphen format (#2962)

* Version Packages (#2952)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Andrew Mikofalvy <[email protected]>

* Update actions/setup-node and pnpm/action-setup to Node.js 24 versions (#2963)

Upgrade actions/setup-node from v4 to v6.3.0 and pnpm/action-setup from
v4 to v5.0.0 across all workflows to resolve the Node.js 20 deprecation
warning. Node.js 20 actions will be forced to Node.js 24 starting June 2, 2026.

https://claude.ai/code/session_01D5Ah1eAYvZCS2SfZ5Lopi3

Co-authored-by: Claude <[email protected]>

* credential id reference added (#2967)

* Add minimumReleaseAgeExclude for @inkeep/* packages (#2968)

Excludes @inkeep scoped packages from the 1440-minute minimum release age
gate so our own published packages can be installed immediately after release.

https://claude.ai/code/session_01LBEnpfsjj6r4cdwXs2VeHx

Co-authored-by: Claude <[email protected]>

* add TooltipProvider

* add back timeout

* should fix tests

* polish

* fix

* pnpm i

* upd

---------

Co-authored-by: Varun Varahabhotla <[email protected]>
Co-authored-by: Claude Opus 4.6 <[email protected]>
Co-authored-by: Varun Varahabhotla <[email protected]>
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: bryan-inkeep <[email protected]>
Co-authored-by: Gaurav Varma <[email protected]>
Co-authored-by: robert-inkeep <[email protected]>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Andrew Mikofalvy <[email protected]>
Co-authored-by: Andrew Mikofalvy <[email protected]>
Co-authored-by: pullfrog[bot] <226033991+pullfrog[bot]@users.noreply.github.com>
Co-authored-by: inkeep-internal-ci[bot] <259778081+inkeep-internal-ci[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant