Skip to content

sync: paperclip upstream (2026-06-02)#164

Open
TSavo wants to merge 2 commits into
mainfrom
sync/paperclip-upstream-2026-06-02
Open

sync: paperclip upstream (2026-06-02)#164
TSavo wants to merge 2 commits into
mainfrom
sync/paperclip-upstream-2026-06-02

Conversation

@TSavo

@TSavo TSavo commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Automated upstream sync — Paperclip

Synced with latest from paperclipai/paperclip upstream.

What this does

  • Pulls in latest upstream changes (features, bug fixes, refactors)
  • Resolves any merge conflicts (preserving hostedMode guards)
  • Scans for new UI elements that leak infra without hostedMode guards
  • Fixes any gaps found

Verify

  • Build passes
  • hostedMode still hides all infra UI
  • No adapter/model selection visible in hosted mode

Note

Sync paperclip upstream changes from 2026-06-02 adding cloud upstream sync, new adapters, and search

This upstream sync brings a large set of new features, schema migrations, and infrastructure changes across the full stack:

  • Adds a cloud connect and cloud push CLI with a companion CloudUpstream.tsx UI page for syncing a local company to a remote Paperclip Cloud stack.
  • Registers acpx_local, cursor_cloud, and grok_local as built-in adapters with full server, UI, and CLI formatter implementations.
  • Adds a company-wide Search.tsx page with scope filters, recent searches, and grouped results; /search is now a board route.
  • Introduces CompanyEnvironments.tsx for SSH and sandbox environment management with probe and secret-ref sync on create/update.
  • Adds a BlockedInboxView.tsx for browsing, filtering, and grouping blocked issues.
  • Centralizes permission decisions in a new authorizationService and backfills agent memberships and human permission grants via migration 0088.
  • Adds 20+ new DB migrations including tables for cloud_upstream_connections, cloud_upstream_runs, document_annotation_threads/comments, issue_recovery_actions, resource_memberships, issue_plan_decompositions, and company_secret_provider_configs.
  • Adds a GitHub Actions PR review workflow (commitperclip-review.yml) with quality, dependency, and security gates.
  • Risk: Multiple breaking schema changes require sequential migration runs; the i18n/locale-validation.ts file appears syntactically incomplete and may cause build failures if locale validation is exercised.

Macroscope summarized 52f929f.

github-actions Bot added 2 commits June 2, 2026 10:25
…paperclip with paperclipai/paperclip@edeab22c, 242 commits ahead of prior baseline 40782f70.\n\nUpstream-Baseline-Sha: edeab22c288fef6ce0a05f0e5f6be4bae1c649b9
Copilot AI review requested due to automatic review settings June 2, 2026 10:33

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Sorry, we are unable to review this pull request

The GitHub API does not allow us to fetch diffs exceeding 300 files, and this pull request has 1380

@coderabbitai

coderabbitai Bot commented Jun 2, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 242 files, which is 92 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 2fc549fa-44ed-4ffc-bc18-cc053c1dc02b

📥 Commits

Reviewing files that changed from the base of the PR and between 5ccf4ad and 52f929f.

⛔ Files ignored due to path filters (58)
  • package-lock.json is excluded by !**/package-lock.json
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • sidecars/paperclip/doc/assets/banner.jpg is excluded by !**/*.jpg
  • sidecars/paperclip/doc/assets/pap-2189/desktop-1440x900-dark.png is excluded by !**/*.png
  • sidecars/paperclip/doc/assets/pap-2189/desktop-1440x900-light.png is excluded by !**/*.png
  • sidecars/paperclip/doc/assets/pap-2189/mobile-390x844-dark.png is excluded by !**/*.png
  • sidecars/paperclip/doc/assets/pap-2189/mobile-390x844-light.png is excluded by !**/*.png
  • sidecars/paperclip/doc/assets/pap-3368/desktop-planning-detail.png is excluded by !**/*.png
  • sidecars/paperclip/doc/assets/pap-3368/desktop-planning-row.png is excluded by !**/*.png
  • sidecars/paperclip/doc/assets/pap-3368/desktop-standard-toggle.png is excluded by !**/*.png
  • sidecars/paperclip/doc/assets/pap-3368/mobile-planning-detail.png is excluded by !**/*.png
  • sidecars/paperclip/doc/assets/pap-3368/mobile-planning-row.png is excluded by !**/*.png
  • sidecars/paperclip/doc/pr/5429/env-editor-with-secrets.png is excluded by !**/*.png
  • sidecars/paperclip/doc/pr/5429/secret-binding-picker.png is excluded by !**/*.png
  • sidecars/paperclip/doc/pr/5429/secrets-inventory.png is excluded by !**/*.png
  • sidecars/paperclip/doc/screenshots/pr-6381/aws-discovery-candidates.png is excluded by !**/*.png
  • sidecars/paperclip/doc/screenshots/pr-6381/provider-vaults-tab.png is excluded by !**/*.png
  • sidecars/paperclip/doc/screenshots/pr-6381/remove-provider-vault-confirmation.png is excluded by !**/*.png
  • sidecars/paperclip/docs/assets/pr-5426/scheduled-retry-story-desktop.png is excluded by !**/*.png
  • sidecars/paperclip/docs/assets/pr-5426/scheduled-retry-story-mobile.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2837/newissue-cheap-desktop.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2837/newissue-cheap-mobile.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2837/newissue-custom-desktop.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2837/newissue-custom-mobile.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2837/newissue-primary-desktop.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2837/newissue-primary-mobile.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2837/newissue-unsupported-desktop.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2837/newissue-unsupported-mobile.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2837/runledger-profile-badges-desktop.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2837/runledger-profile-badges-mobile.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2944/skills-claude-dark.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2944/skills-claude-light.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2944/skills-codex-dark.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2944/skills-codex-light.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2944/skills-custom-dark.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2944/skills-custom-light.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2944/skills-empty-library-dark.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2944/skills-empty-library-light.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2944/skills-loading-dark.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2944/skills-loading-light.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pap-2945/monitor-surfaces.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pr-4616/sidebar-agent-actions.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pr-4616/sidebar-agent-row.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pr-5291/after-issue-management.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pr-5291/after-navigation-layout.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pr-5291/after-projects-workspaces.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pr-5291/after-status-language.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pr-5291/before-issue-management.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pr-5291/before-navigation-layout.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pr-5291/before-projects-workspaces.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pr-5356/issue-thread-notices-collapsed.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pr-5356/issue-thread-notices-expanded.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pr-5428/assigned-backlog-dark.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pr-5428/assigned-backlog-light.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pr-6384/dev-restart-banner-desktop.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pr-6384/dev-restart-banner-mobile.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pr-6384/inbox-rows-desktop.png is excluded by !**/*.png
  • sidecars/paperclip/docs/pr-screenshots/pr-6384/sidebar-desktop.png is excluded by !**/*.png
📒 Files selected for processing (242)
  • sidecars/paperclip/.github/dependabot.yml
  • sidecars/paperclip/.github/scripts/check-pr-dependencies.mjs
  • sidecars/paperclip/.github/scripts/check-pr-linked-issue.mjs
  • sidecars/paperclip/.github/scripts/check-pr-lockfile.mjs
  • sidecars/paperclip/.github/scripts/check-pr-security.mjs
  • sidecars/paperclip/.github/scripts/check-pr-template.mjs
  • sidecars/paperclip/.github/scripts/check-pr-test-coverage.mjs
  • sidecars/paperclip/.github/scripts/fetch-pr-files.mjs
  • sidecars/paperclip/.github/scripts/get-bot-token.mjs
  • sidecars/paperclip/.github/scripts/run-quality-gates.mjs
  • sidecars/paperclip/.github/scripts/tests/check-pr-dependencies.test.mjs
  • sidecars/paperclip/.github/scripts/tests/check-pr-linked-issue.test.mjs
  • sidecars/paperclip/.github/scripts/tests/check-pr-lockfile.test.mjs
  • sidecars/paperclip/.github/scripts/tests/check-pr-security.test.mjs
  • sidecars/paperclip/.github/scripts/tests/check-pr-template.test.mjs
  • sidecars/paperclip/.github/scripts/tests/check-pr-test-coverage.test.mjs
  • sidecars/paperclip/.github/scripts/tests/fetch-pr-files.test.mjs
  • sidecars/paperclip/.github/scripts/tests/get-bot-token.test.mjs
  • sidecars/paperclip/.github/scripts/tests/run-quality-gates.test.mjs
  • sidecars/paperclip/.github/workflows/commitperclip-review.yml
  • sidecars/paperclip/.github/workflows/docker.yml
  • sidecars/paperclip/.github/workflows/e2e.yml
  • sidecars/paperclip/.github/workflows/pr.yml
  • sidecars/paperclip/.github/workflows/release-smoke.yml
  • sidecars/paperclip/.github/workflows/release.yml
  • sidecars/paperclip/.gitignore
  • sidecars/paperclip/.upstream-baseline
  • sidecars/paperclip/AGENTS.md
  • sidecars/paperclip/Dockerfile
  • sidecars/paperclip/README.md
  • sidecars/paperclip/cli/README.md
  • sidecars/paperclip/cli/package.json
  • sidecars/paperclip/cli/src/__tests__/cloud.test.ts
  • sidecars/paperclip/cli/src/__tests__/company-delete.test.ts
  • sidecars/paperclip/cli/src/__tests__/company-import-export-e2e.test.ts
  • sidecars/paperclip/cli/src/__tests__/company.test.ts
  • sidecars/paperclip/cli/src/__tests__/home-paths.test.ts
  • sidecars/paperclip/cli/src/__tests__/network-bind.test.ts
  • sidecars/paperclip/cli/src/__tests__/onboard.test.ts
  • sidecars/paperclip/cli/src/__tests__/plugin-init.test.ts
  • sidecars/paperclip/cli/src/__tests__/secrets.test.ts
  • sidecars/paperclip/cli/src/__tests__/skills.test.ts
  • sidecars/paperclip/cli/src/__tests__/worktree.test.ts
  • sidecars/paperclip/cli/src/adapters/registry.ts
  • sidecars/paperclip/cli/src/checks/secrets-check.ts
  • sidecars/paperclip/cli/src/commands/client/cloud-store.ts
  • sidecars/paperclip/cli/src/commands/client/cloud-transfer.ts
  • sidecars/paperclip/cli/src/commands/client/cloud.ts
  • sidecars/paperclip/cli/src/commands/client/plugin.ts
  • sidecars/paperclip/cli/src/commands/client/secrets.ts
  • sidecars/paperclip/cli/src/commands/client/skills.ts
  • sidecars/paperclip/cli/src/commands/routines.ts
  • sidecars/paperclip/cli/src/commands/worktree-lib.ts
  • sidecars/paperclip/cli/src/commands/worktree.ts
  • sidecars/paperclip/cli/src/config/home.ts
  • sidecars/paperclip/cli/src/index.ts
  • sidecars/paperclip/cli/src/prompts/secrets.ts
  • sidecars/paperclip/cli/tsconfig.json
  • sidecars/paperclip/doc/AGENT-ARTIFACTS.md
  • sidecars/paperclip/doc/CLI.md
  • sidecars/paperclip/doc/DATABASE.md
  • sidecars/paperclip/doc/DEPLOYMENT-MODES.md
  • sidecars/paperclip/doc/DEVELOPING.md
  • sidecars/paperclip/doc/DOCKER.md
  • sidecars/paperclip/doc/GOAL.md
  • sidecars/paperclip/doc/PRODUCT.md
  • sidecars/paperclip/doc/PUBLISHING.md
  • sidecars/paperclip/doc/RELEASE-AUTOMATION-SETUP.md
  • sidecars/paperclip/doc/RELEASING.md
  • sidecars/paperclip/doc/SECRETS-AWS-PROVIDER.md
  • sidecars/paperclip/doc/SPEC-implementation.md
  • sidecars/paperclip/doc/SPEC.md
  • sidecars/paperclip/doc/execution-semantics.md
  • sidecars/paperclip/doc/plans/2026-03-14-adapter-skill-sync-rollout.md
  • sidecars/paperclip/doc/plans/2026-04-26-plugin-secret-ref-company-scope.md
  • sidecars/paperclip/doc/plans/2026-05-05-scaled-kanban-board-design.md
  • sidecars/paperclip/doc/plans/2026-05-05-scaled-kanban-board.md
  • sidecars/paperclip/doc/plans/2026-05-06-llm-wiki-paperclip-asset-security-gate.md
  • sidecars/paperclip/doc/plans/2026-05-26-skills-cli-catalog-contract.md
  • sidecars/paperclip/doc/plugins/LOCAL_PLUGIN_DEVELOPMENT.md
  • sidecars/paperclip/doc/plugins/PLUGIN_AUTHORING_GUIDE.md
  • sidecars/paperclip/doc/plugins/PLUGIN_SPEC.md
  • sidecars/paperclip/doc/spec/invite-flow.md
  • sidecars/paperclip/docker/ecs-task-definition.json
  • sidecars/paperclip/docs/adapters/creating-an-adapter.md
  • sidecars/paperclip/docs/api/routines.md
  • sidecars/paperclip/docs/api/secrets-remote-import.md
  • sidecars/paperclip/docs/api/secrets.md
  • sidecars/paperclip/docs/cli/control-plane-commands.md
  • sidecars/paperclip/docs/cli/overview.md
  • sidecars/paperclip/docs/cli/setup-commands.md
  • sidecars/paperclip/docs/deploy/aws-ecs.md
  • sidecars/paperclip/docs/deploy/overview.md
  • sidecars/paperclip/docs/deploy/secrets.md
  • sidecars/paperclip/docs/guides/board-operator/delegation.md
  • sidecars/paperclip/docs/guides/board-operator/execution-workspaces-and-runtime-services.md
  • sidecars/paperclip/docs/start/core-concepts.md
  • sidecars/paperclip/package.json
  • sidecars/paperclip/packages/adapter-utils/README.md
  • sidecars/paperclip/packages/adapter-utils/src/command-managed-runtime.test.ts
  • sidecars/paperclip/packages/adapter-utils/src/command-managed-runtime.ts
  • sidecars/paperclip/packages/adapter-utils/src/command-redaction.ts
  • sidecars/paperclip/packages/adapter-utils/src/execution-target-sandbox.test.ts
  • sidecars/paperclip/packages/adapter-utils/src/execution-target.test.ts
  • sidecars/paperclip/packages/adapter-utils/src/execution-target.ts
  • sidecars/paperclip/packages/adapter-utils/src/index.ts
  • sidecars/paperclip/packages/adapter-utils/src/remote-execution-env.ts
  • sidecars/paperclip/packages/adapter-utils/src/remote-managed-runtime.ts
  • sidecars/paperclip/packages/adapter-utils/src/sandbox-callback-bridge.test.ts
  • sidecars/paperclip/packages/adapter-utils/src/sandbox-callback-bridge.ts
  • sidecars/paperclip/packages/adapter-utils/src/sandbox-install-command.test.ts
  • sidecars/paperclip/packages/adapter-utils/src/sandbox-install-command.ts
  • sidecars/paperclip/packages/adapter-utils/src/sandbox-managed-runtime.test.ts
  • sidecars/paperclip/packages/adapter-utils/src/sandbox-managed-runtime.ts
  • sidecars/paperclip/packages/adapter-utils/src/sandbox-shell.ts
  • sidecars/paperclip/packages/adapter-utils/src/server-utils.test.ts
  • sidecars/paperclip/packages/adapter-utils/src/server-utils.ts
  • sidecars/paperclip/packages/adapter-utils/src/session-compaction.ts
  • sidecars/paperclip/packages/adapter-utils/src/ssh-fixture.test.ts
  • sidecars/paperclip/packages/adapter-utils/src/ssh.ts
  • sidecars/paperclip/packages/adapter-utils/src/types.ts
  • sidecars/paperclip/packages/adapter-utils/src/workspace-restore-merge.test.ts
  • sidecars/paperclip/packages/adapter-utils/src/workspace-restore-merge.ts
  • sidecars/paperclip/packages/adapters/AUTHORING.md
  • sidecars/paperclip/packages/adapters/acpx-local/package.json
  • sidecars/paperclip/packages/adapters/acpx-local/src/cli/format-event.test.ts
  • sidecars/paperclip/packages/adapters/acpx-local/src/cli/format-event.ts
  • sidecars/paperclip/packages/adapters/acpx-local/src/cli/index.ts
  • sidecars/paperclip/packages/adapters/acpx-local/src/index.ts
  • sidecars/paperclip/packages/adapters/acpx-local/src/server/config-schema.ts
  • sidecars/paperclip/packages/adapters/acpx-local/src/server/execute.test.ts
  • sidecars/paperclip/packages/adapters/acpx-local/src/server/execute.ts
  • sidecars/paperclip/packages/adapters/acpx-local/src/server/index.ts
  • sidecars/paperclip/packages/adapters/acpx-local/src/server/session-codec.ts
  • sidecars/paperclip/packages/adapters/acpx-local/src/server/skills.ts
  • sidecars/paperclip/packages/adapters/acpx-local/src/server/test.test.ts
  • sidecars/paperclip/packages/adapters/acpx-local/src/server/test.ts
  • sidecars/paperclip/packages/adapters/acpx-local/src/ui/build-config.ts
  • sidecars/paperclip/packages/adapters/acpx-local/src/ui/index.ts
  • sidecars/paperclip/packages/adapters/acpx-local/src/ui/parse-stdout.test.ts
  • sidecars/paperclip/packages/adapters/acpx-local/src/ui/parse-stdout.ts
  • sidecars/paperclip/packages/adapters/acpx-local/tsconfig.json
  • sidecars/paperclip/packages/adapters/acpx-local/vitest.config.ts
  • sidecars/paperclip/packages/adapters/claude-local/src/index.ts
  • sidecars/paperclip/packages/adapters/claude-local/src/server/claude-config.test.ts
  • sidecars/paperclip/packages/adapters/claude-local/src/server/claude-config.ts
  • sidecars/paperclip/packages/adapters/claude-local/src/server/execute.remote.test.ts
  • sidecars/paperclip/packages/adapters/claude-local/src/server/execute.ts
  • sidecars/paperclip/packages/adapters/claude-local/src/server/index.ts
  • sidecars/paperclip/packages/adapters/claude-local/src/server/models.ts
  • sidecars/paperclip/packages/adapters/claude-local/src/server/parse.ts
  • sidecars/paperclip/packages/adapters/claude-local/src/server/permissions.ts
  • sidecars/paperclip/packages/adapters/claude-local/src/server/prompt-cache.ts
  • sidecars/paperclip/packages/adapters/claude-local/src/server/skills.ts
  • sidecars/paperclip/packages/adapters/claude-local/src/server/test.ts
  • sidecars/paperclip/packages/adapters/claude-local/src/ui/build-config.ts
  • sidecars/paperclip/packages/adapters/codex-local/src/index.ts
  • sidecars/paperclip/packages/adapters/codex-local/src/server/codex-args.test.ts
  • sidecars/paperclip/packages/adapters/codex-local/src/server/codex-args.ts
  • sidecars/paperclip/packages/adapters/codex-local/src/server/codex-home.test.ts
  • sidecars/paperclip/packages/adapters/codex-local/src/server/codex-home.ts
  • sidecars/paperclip/packages/adapters/codex-local/src/server/execute.remote.test.ts
  • sidecars/paperclip/packages/adapters/codex-local/src/server/execute.ts
  • sidecars/paperclip/packages/adapters/codex-local/src/server/skills.ts
  • sidecars/paperclip/packages/adapters/codex-local/src/server/test.remote.test.ts
  • sidecars/paperclip/packages/adapters/codex-local/src/server/test.ts
  • sidecars/paperclip/packages/adapters/codex-local/src/ui/build-config.ts
  • sidecars/paperclip/packages/adapters/cursor-cloud/package.json
  • sidecars/paperclip/packages/adapters/cursor-cloud/src/cli/format-event.ts
  • sidecars/paperclip/packages/adapters/cursor-cloud/src/cli/index.ts
  • sidecars/paperclip/packages/adapters/cursor-cloud/src/index.ts
  • sidecars/paperclip/packages/adapters/cursor-cloud/src/server/execute.test.ts
  • sidecars/paperclip/packages/adapters/cursor-cloud/src/server/execute.ts
  • sidecars/paperclip/packages/adapters/cursor-cloud/src/server/index.ts
  • sidecars/paperclip/packages/adapters/cursor-cloud/src/server/session.test.ts
  • sidecars/paperclip/packages/adapters/cursor-cloud/src/server/session.ts
  • sidecars/paperclip/packages/adapters/cursor-cloud/src/server/test.ts
  • sidecars/paperclip/packages/adapters/cursor-cloud/src/ui/build-config.test.ts
  • sidecars/paperclip/packages/adapters/cursor-cloud/src/ui/build-config.ts
  • sidecars/paperclip/packages/adapters/cursor-cloud/src/ui/index.ts
  • sidecars/paperclip/packages/adapters/cursor-cloud/src/ui/parse-stdout.test.ts
  • sidecars/paperclip/packages/adapters/cursor-cloud/src/ui/parse-stdout.ts
  • sidecars/paperclip/packages/adapters/cursor-cloud/tsconfig.json
  • sidecars/paperclip/packages/adapters/cursor-local/src/index.ts
  • sidecars/paperclip/packages/adapters/cursor-local/src/server/execute.remote.test.ts
  • sidecars/paperclip/packages/adapters/cursor-local/src/server/execute.test.ts
  • sidecars/paperclip/packages/adapters/cursor-local/src/server/execute.ts
  • sidecars/paperclip/packages/adapters/cursor-local/src/server/remote-command.test.ts
  • sidecars/paperclip/packages/adapters/cursor-local/src/server/remote-command.ts
  • sidecars/paperclip/packages/adapters/cursor-local/src/server/test.test.ts
  • sidecars/paperclip/packages/adapters/cursor-local/src/server/test.ts
  • sidecars/paperclip/packages/adapters/cursor-local/src/ui/build-config.ts
  • sidecars/paperclip/packages/adapters/gemini-local/src/cli/format-event.ts
  • sidecars/paperclip/packages/adapters/gemini-local/src/index.ts
  • sidecars/paperclip/packages/adapters/gemini-local/src/server/execute.remote.test.ts
  • sidecars/paperclip/packages/adapters/gemini-local/src/server/execute.ts
  • sidecars/paperclip/packages/adapters/gemini-local/src/server/parse.test.ts
  • sidecars/paperclip/packages/adapters/gemini-local/src/server/parse.ts
  • sidecars/paperclip/packages/adapters/gemini-local/src/server/test.ts
  • sidecars/paperclip/packages/adapters/gemini-local/src/ui/build-config.ts
  • sidecars/paperclip/packages/adapters/gemini-local/src/ui/parse-stdout.test.ts
  • sidecars/paperclip/packages/adapters/gemini-local/src/ui/parse-stdout.ts
  • sidecars/paperclip/packages/adapters/grok-local/package.json
  • sidecars/paperclip/packages/adapters/grok-local/src/cli/format-event.test.ts
  • sidecars/paperclip/packages/adapters/grok-local/src/cli/format-event.ts
  • sidecars/paperclip/packages/adapters/grok-local/src/cli/index.ts
  • sidecars/paperclip/packages/adapters/grok-local/src/index.ts
  • sidecars/paperclip/packages/adapters/grok-local/src/server/execute.test.ts
  • sidecars/paperclip/packages/adapters/grok-local/src/server/execute.ts
  • sidecars/paperclip/packages/adapters/grok-local/src/server/index.ts
  • sidecars/paperclip/packages/adapters/grok-local/src/server/parse.test.ts
  • sidecars/paperclip/packages/adapters/grok-local/src/server/parse.ts
  • sidecars/paperclip/packages/adapters/grok-local/src/server/skills.ts
  • sidecars/paperclip/packages/adapters/grok-local/src/server/test.test.ts
  • sidecars/paperclip/packages/adapters/grok-local/src/server/test.ts
  • sidecars/paperclip/packages/adapters/grok-local/src/shared/turn-boundary.test.ts
  • sidecars/paperclip/packages/adapters/grok-local/src/shared/turn-boundary.ts
  • sidecars/paperclip/packages/adapters/grok-local/src/ui/build-config.test.ts
  • sidecars/paperclip/packages/adapters/grok-local/src/ui/build-config.ts
  • sidecars/paperclip/packages/adapters/grok-local/src/ui/index.ts
  • sidecars/paperclip/packages/adapters/grok-local/src/ui/parse-stdout.test.ts
  • sidecars/paperclip/packages/adapters/grok-local/src/ui/parse-stdout.ts
  • sidecars/paperclip/packages/adapters/grok-local/tsconfig.json
  • sidecars/paperclip/packages/adapters/openclaw-gateway/README.md
  • sidecars/paperclip/packages/adapters/openclaw-gateway/src/server/execute.ts
  • sidecars/paperclip/packages/adapters/opencode-local/src/index.ts
  • sidecars/paperclip/packages/adapters/opencode-local/src/server/execute.remote.test.ts
  • sidecars/paperclip/packages/adapters/opencode-local/src/server/execute.ts
  • sidecars/paperclip/packages/adapters/opencode-local/src/server/index.ts
  • sidecars/paperclip/packages/adapters/opencode-local/src/server/models.test.ts
  • sidecars/paperclip/packages/adapters/opencode-local/src/server/models.ts
  • sidecars/paperclip/packages/adapters/opencode-local/src/server/runtime-config.ts
  • sidecars/paperclip/packages/adapters/opencode-local/src/server/test.remote.test.ts
  • sidecars/paperclip/packages/adapters/opencode-local/src/server/test.ts
  • sidecars/paperclip/packages/adapters/opencode-local/src/ui/build-config.ts
  • sidecars/paperclip/packages/adapters/pi-local/src/index.ts
  • sidecars/paperclip/packages/adapters/pi-local/src/server/execute.remote.test.ts
  • sidecars/paperclip/packages/adapters/pi-local/src/server/execute.ts
  • sidecars/paperclip/packages/adapters/pi-local/src/server/test.ts
  • sidecars/paperclip/packages/adapters/pi-local/src/ui/build-config.ts
  • sidecars/paperclip/packages/db/package.json
  • sidecars/paperclip/packages/db/src/backup-lib.test.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch sync/paperclip-upstream-2026-06-02

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

@greptile-apps

greptile-apps Bot commented Jun 2, 2026

Copy link
Copy Markdown

Too many files changed for review. (1380 files found, 100 file limit)

@qodo-code-review

Copy link
Copy Markdown

Review Summary by Qodo

Sync upstream Paperclip with recovery actions, LLM Wiki plugin, and expanded test coverage

✨ Enhancement 🧪 Tests

Grey Divider

Walkthroughs

Description
• Synced with latest upstream changes from paperclipai/paperclip repository (2026-06-02)
• Extensive test suite expansion across multiple services including issues service, attachment
  routes, heartbeat recovery, ACPX local executor, and recovery actions
• Added comprehensive recovery action handling with watchdog folding, successful run handoff
  management, and continuation retry classification
• Implemented LLM Wiki plugin manifest with complete tool definitions, API routes, and UI slot
  registration
• Enhanced heartbeat recovery with recovery actions model, environment lease cleanup, and stranded
  work escalation
• Added Vitest configurations for Cloudflare bridge template and exe-dev sandbox provider
• Fixed environment runtime driver test cleanup and secret binding issues
• New ACPX local adapter UI utilities for stdout parsing and configuration building
Diagram
flowchart LR
  upstream["Paperclip Upstream<br/>2026-06-02"]
  recovery["Recovery Service<br/>Enhancements"]
  wiki["LLM Wiki Plugin<br/>Manifest"]
  tests["Test Suite<br/>Expansion"]
  config["Configuration<br/>Updates"]
  
  upstream --> recovery
  upstream --> wiki
  upstream --> tests
  upstream --> config
  
  recovery -- "watchdog folding<br/>handoff management" --> merged["Merged Changes"]
  wiki -- "plugin tools<br/>API routes" --> merged
  tests -- "service coverage<br/>executor tests" --> merged
  config -- "vitest configs<br/>UI utilities" --> merged

Loading

Grey Divider

File Changes

1. sidecars/paperclip/server/src/__tests__/issues-service.test.ts 🧪 Tests +2239/-283

Extensive test suite expansion for issues service functionality

• Added comprehensive test coverage for issue comment attribution derivation from run logs
• Implemented tests for plugin operation issue filtering in default lists and inbox-style queries
• Added tests for accepted plan decomposition with concurrent retry handling and fingerprint
 validation
• Enhanced tests for workspace environment inheritance, dependency readiness barriers, and execution
 lock management
• Added tests for issue pagination by update timestamp and blockedBy summaries in batched queries

sidecars/paperclip/server/src/tests/issues-service.test.ts


2. sidecars/paperclip/server/src/__tests__/issue-attachment-routes.test.ts 🧪 Tests +388/-9

Enhanced attachment routes testing with video support and validation

• Added mock services for companyService, workProductService, issueThreadInteractionService,
 and issueRecoveryActionService
• Implemented tests for video attachment uploads, byte-range support, and content-type validation
• Added tests for attachment size limit enforcement at both process and company levels
• Implemented tests for work product artifact metadata canonicalization and cross-company access
 control
• Added test for process-level attachment cap configuration

sidecars/paperclip/server/src/tests/issue-attachment-routes.test.ts


3. sidecars/paperclip/packages/plugins/sandbox-providers/cloudflare/bridge-template/vitest.config.ts ⚙️ Configuration changes +8/-0

Add Vitest configuration for Cloudflare bridge template

• Created new Vitest configuration file for the Cloudflare bridge template
• Configured test discovery pattern and Node.js environment

sidecars/paperclip/packages/plugins/sandbox-providers/cloudflare/bridge-template/vitest.config.ts


View more (108)
4. sidecars/paperclip/server/src/__tests__/heartbeat-process-recovery.test.ts ✨ Enhancement +1825/-124

Heartbeat recovery refactor with recovery actions and handoff workflows

• Added imports for new database tables (budgetPolicies, costEvents,
 documentAnnotationThreads, environmentLeases, executionWorkspaces, issuePlanDecompositions,
 issueRecoveryActions, issueThreadInteractions, issueWorkProducts, workspaceOperations) and
 recovery service utilities
• Expanded database cleanup logic in test teardown to handle new table dependencies with retry loops
 for circular foreign key constraints
• Added seedEnvironmentLeaseFixture() helper to create test environment and lease records
• Refactored expectStrandedRecoveryArtifacts() to expectSourceScopedStrandedRecoveryAction()
 with new recovery action model replacing issue-based recovery
• Added seedAssignedTodoNoRunFixture() helper for testing assigned todo work without prior runs
• Added comprehensive test cases for successful-run handoff workflows, environment lease cleanup,
 recovery action creation, and stranded work escalation
• Enhanced context snapshot handling to exclude modelProfile from retry runs and support
 recovery-specific metadata
• Added tests for budget-blocked work, paused agents, mixed-cause failures, and productive terminal
 continuations

sidecars/paperclip/server/src/tests/heartbeat-process-recovery.test.ts


5. sidecars/paperclip/packages/plugins/plugin-llm-wiki/src/manifest.ts ⚙️ Configuration changes +601/-0

LLM Wiki plugin manifest configuration and tool definitions

• New file defining complete plugin manifest for LLM Wiki plugin with ID
 paperclipai.plugin-llm-wiki
• Declares plugin capabilities including database migrations, issue management, agent management,
 and UI registration
• Defines Wiki Maintainer agent with Claude adapter and managed skills for ingest, query, lint, and
 index refresh
• Configures three maintenance routines (cursor window processing, nightly lint, index refresh) with
 schedule triggers
• Registers ten plugin tools for wiki operations (search, read/write pages, propose patches, manage
 sources, append logs, update index, list backlinks/pages)
• Defines API routes for bootstrap, space management, source capture, and query sessions
• Registers UI slots for sidebar link and wiki page route

sidecars/paperclip/packages/plugins/plugin-llm-wiki/src/manifest.ts


6. sidecars/paperclip/packages/adapters/acpx-local/src/ui/index.ts Miscellaneous +2/-0

ACPX local adapter UI utilities export module

• New file exporting two utility functions: parseAcpxStdoutLine and buildAcpxLocalConfig
• Provides public API for parsing ACPX adapter stdout and building local adapter configuration

sidecars/paperclip/packages/adapters/acpx-local/src/ui/index.ts


7. sidecars/paperclip/server/src/services/recovery/service.ts ✨ Enhancement +1594/-141

Recovery service enhancements for watchdog folding and handoff management

• Added comprehensive recovery action handling with new imports for issueRecoveryActionService,
 model profile hints, and successful run handoff logic
• Implemented source-resolved watchdog folding to detect when source issues reach terminal states
 through same-run activity
• Added continuation retry classification system distinguishing transient infrastructure failures
 from non-retryable errors
• Enhanced stranded issue recovery with support for successful run handoff exhaustion, nested
 recovery prevention, and recovery action tracking
• Expanded issue graph liveness auto-recovery with lookback window configuration and dependency
 update tracking

sidecars/paperclip/server/src/services/recovery/service.ts


8. sidecars/paperclip/packages/adapters/acpx-local/src/server/execute.test.ts 🧪 Tests +702/-0

ACPX local executor test suite for skill isolation and credentials

• Added comprehensive test suite for ACPX local executor with 16 test cases covering skill
 isolation, credential management, and error handling
• Tests verify symlink security (preventing access to files outside skill directories), credential
 wrapper lifecycle, and concurrent execution scenarios
• Includes tests for ACPX runtime error enrichment, stderr logging, environment variable isolation,
 and agent-specific configuration
• Validates Claude agent settings management, settings merging with user entries, and verbose
 logging opt-in behavior

sidecars/paperclip/packages/adapters/acpx-local/src/server/execute.test.ts


9. sidecars/paperclip/server/src/__tests__/environment-runtime-driver-contract.test.ts 🐞 Bug fix +7/-37

Environment runtime driver test cleanup and secret binding

• Removed unused createServer import and servers array that was managing HTTP server lifecycle
• Added secret binding creation to properly associate private key secrets with environments
• Simplified test cleanup by removing server closure logic

sidecars/paperclip/server/src/tests/environment-runtime-driver-contract.test.ts


10. sidecars/paperclip/packages/plugins/sandbox-providers/exe-dev/vitest.config.ts ⚙️ Configuration changes +8/-0

Vitest configuration for exe-dev sandbox provider

• Created new Vitest configuration file for the exe-dev sandbox provider plugin
• Configured test discovery pattern and Node.js environment for test execution

sidecars/paperclip/packages/plugins/sandbox-providers/exe-dev/vitest.config.ts


11. pnpm-lock.yaml Additional files +2006/-196

...

pnpm-lock.yaml


12. sidecars/paperclip/.github/dependabot.yml Additional files +23/-0

...

sidecars/paperclip/.github/dependabot.yml


13. sidecars/paperclip/.github/scripts/check-pr-dependencies.mjs Additional files +89/-0

...

sidecars/paperclip/.github/scripts/check-pr-dependencies.mjs


14. sidecars/paperclip/.github/scripts/check-pr-linked-issue.mjs Additional files +53/-0

...

sidecars/paperclip/.github/scripts/check-pr-linked-issue.mjs


15. sidecars/paperclip/.github/scripts/check-pr-lockfile.mjs Additional files +31/-0

...

sidecars/paperclip/.github/scripts/check-pr-lockfile.mjs


16. sidecars/paperclip/.github/scripts/check-pr-security.mjs Additional files +350/-0

...

sidecars/paperclip/.github/scripts/check-pr-security.mjs


17. sidecars/paperclip/.github/scripts/check-pr-template.mjs Additional files +88/-0

...

sidecars/paperclip/.github/scripts/check-pr-template.mjs


18. sidecars/paperclip/.github/scripts/check-pr-test-coverage.mjs Additional files +83/-0

...

sidecars/paperclip/.github/scripts/check-pr-test-coverage.mjs


19. sidecars/paperclip/.github/scripts/fetch-pr-files.mjs Additional files +21/-0

...

sidecars/paperclip/.github/scripts/fetch-pr-files.mjs


20. sidecars/paperclip/.github/scripts/get-bot-token.mjs Additional files +113/-0

...

sidecars/paperclip/.github/scripts/get-bot-token.mjs


21. sidecars/paperclip/.github/scripts/run-quality-gates.mjs Additional files +145/-0

...

sidecars/paperclip/.github/scripts/run-quality-gates.mjs


22. sidecars/paperclip/.github/scripts/tests/check-pr-dependencies.test.mjs Additional files +65/-0

...

sidecars/paperclip/.github/scripts/tests/check-pr-dependencies.test.mjs


23. sidecars/paperclip/.github/scripts/tests/check-pr-linked-issue.test.mjs Additional files +111/-0

...

sidecars/paperclip/.github/scripts/tests/check-pr-linked-issue.test.mjs


24. sidecars/paperclip/.github/scripts/tests/check-pr-lockfile.test.mjs Additional files +33/-0

...

sidecars/paperclip/.github/scripts/tests/check-pr-lockfile.test.mjs


25. sidecars/paperclip/.github/scripts/tests/check-pr-security.test.mjs Additional files +316/-0

...

sidecars/paperclip/.github/scripts/tests/check-pr-security.test.mjs


26. sidecars/paperclip/.github/scripts/tests/check-pr-template.test.mjs Additional files +123/-0

...

sidecars/paperclip/.github/scripts/tests/check-pr-template.test.mjs


27. sidecars/paperclip/.github/scripts/tests/check-pr-test-coverage.test.mjs Additional files +101/-0

...

sidecars/paperclip/.github/scripts/tests/check-pr-test-coverage.test.mjs


28. sidecars/paperclip/.github/scripts/tests/fetch-pr-files.test.mjs Additional files +37/-0

...

sidecars/paperclip/.github/scripts/tests/fetch-pr-files.test.mjs


29. sidecars/paperclip/.github/scripts/tests/get-bot-token.test.mjs Additional files +33/-0

...

sidecars/paperclip/.github/scripts/tests/get-bot-token.test.mjs


30. sidecars/paperclip/.github/scripts/tests/run-quality-gates.test.mjs Additional files +43/-0

...

sidecars/paperclip/.github/scripts/tests/run-quality-gates.test.mjs


31. sidecars/paperclip/.github/workflows/commitperclip-review.yml Additional files +69/-0

...

sidecars/paperclip/.github/workflows/commitperclip-review.yml


32. sidecars/paperclip/.github/workflows/docker.yml Additional files +2/-2

...

sidecars/paperclip/.github/workflows/docker.yml


33. sidecars/paperclip/.github/workflows/e2e.yml Additional files +3/-1

...

sidecars/paperclip/.github/workflows/e2e.yml


34. sidecars/paperclip/.github/workflows/pr.yml Additional files +181/-13

...

sidecars/paperclip/.github/workflows/pr.yml


35. sidecars/paperclip/.github/workflows/release-smoke.yml Additional files +5/-2

...

sidecars/paperclip/.github/workflows/release-smoke.yml


36. sidecars/paperclip/.github/workflows/release.yml Additional files +12/-0

...

sidecars/paperclip/.github/workflows/release.yml


37. sidecars/paperclip/.upstream-baseline Additional files +1/-1

...

sidecars/paperclip/.upstream-baseline


38. sidecars/paperclip/AGENTS.md Additional files +3/-0

...

sidecars/paperclip/AGENTS.md


39. sidecars/paperclip/Dockerfile Additional files +7/-0

...

sidecars/paperclip/Dockerfile


40. sidecars/paperclip/README.md Additional files +15/-20

...

sidecars/paperclip/README.md


41. sidecars/paperclip/cli/README.md Additional files +18/-1

...

sidecars/paperclip/cli/README.md


42. sidecars/paperclip/cli/package.json Additional files +4/-1

...

sidecars/paperclip/cli/package.json


43. sidecars/paperclip/cli/src/__tests__/cloud.test.ts Additional files +243/-0

...

sidecars/paperclip/cli/src/tests/cloud.test.ts


44. sidecars/paperclip/cli/src/__tests__/company-delete.test.ts Additional files +1/-0

...

sidecars/paperclip/cli/src/tests/company-delete.test.ts


45. sidecars/paperclip/cli/src/__tests__/company-import-export-e2e.test.ts Additional files +170/-41

...

sidecars/paperclip/cli/src/tests/company-import-export-e2e.test.ts


46. sidecars/paperclip/cli/src/__tests__/company.test.ts Additional files +4/-0

...

sidecars/paperclip/cli/src/tests/company.test.ts


47. sidecars/paperclip/cli/src/__tests__/home-paths.test.ts Additional files +6/-4

...

sidecars/paperclip/cli/src/tests/home-paths.test.ts


48. sidecars/paperclip/cli/src/__tests__/network-bind.test.ts Additional files +13/-6

...

sidecars/paperclip/cli/src/tests/network-bind.test.ts


49. sidecars/paperclip/cli/src/__tests__/onboard.test.ts Additional files +37/-1

...

sidecars/paperclip/cli/src/tests/onboard.test.ts


50. sidecars/paperclip/cli/src/__tests__/plugin-init.test.ts Additional files +164/-0

...

sidecars/paperclip/cli/src/tests/plugin-init.test.ts


51. sidecars/paperclip/cli/src/__tests__/secrets.test.ts Additional files +257/-0

...

sidecars/paperclip/cli/src/tests/secrets.test.ts


52. sidecars/paperclip/cli/src/__tests__/skills.test.ts Additional files +506/-0

...

sidecars/paperclip/cli/src/tests/skills.test.ts


53. sidecars/paperclip/cli/src/__tests__/worktree.test.ts Additional files +41/-1

...

sidecars/paperclip/cli/src/tests/worktree.test.ts


54. sidecars/paperclip/cli/src/adapters/registry.ts Additional files +21/-0

...

sidecars/paperclip/cli/src/adapters/registry.ts


55. sidecars/paperclip/cli/src/checks/secrets-check.ts Additional files +98/-4

...

sidecars/paperclip/cli/src/checks/secrets-check.ts


56. sidecars/paperclip/cli/src/commands/client/cloud-store.ts Additional files +177/-0

...

sidecars/paperclip/cli/src/commands/client/cloud-store.ts


57. sidecars/paperclip/cli/src/commands/client/cloud-transfer.ts Additional files +297/-0

...

sidecars/paperclip/cli/src/commands/client/cloud-transfer.ts


58. sidecars/paperclip/cli/src/commands/client/cloud.ts Additional files +721/-0

...

sidecars/paperclip/cli/src/commands/client/cloud.ts


59. sidecars/paperclip/cli/src/commands/client/plugin.ts Additional files +185/-25

...

sidecars/paperclip/cli/src/commands/client/plugin.ts


60. sidecars/paperclip/cli/src/commands/client/secrets.ts Additional files +501/-0

...

sidecars/paperclip/cli/src/commands/client/secrets.ts


61. sidecars/paperclip/cli/src/commands/client/skills.ts Additional files +1017/-0

...

sidecars/paperclip/cli/src/commands/client/skills.ts


62. sidecars/paperclip/cli/src/commands/routines.ts Additional files +2/-0

...

sidecars/paperclip/cli/src/commands/routines.ts


63. sidecars/paperclip/cli/src/commands/worktree-lib.ts Additional files +2/-6

...

sidecars/paperclip/cli/src/commands/worktree-lib.ts


64. sidecars/paperclip/cli/src/commands/worktree.ts Additional files +8/-1

...

sidecars/paperclip/cli/src/commands/worktree.ts


65. sidecars/paperclip/cli/src/config/home.ts Additional files +26/-31

...

sidecars/paperclip/cli/src/config/home.ts


66. sidecars/paperclip/cli/src/index.ts Additional files +6/-0

...

sidecars/paperclip/cli/src/index.ts


67. sidecars/paperclip/cli/src/prompts/secrets.ts Additional files +4/-2

...

sidecars/paperclip/cli/src/prompts/secrets.ts


68. sidecars/paperclip/cli/tsconfig.json Additional files +1/-1

...

sidecars/paperclip/cli/tsconfig.json


69. sidecars/paperclip/doc/AGENT-ARTIFACTS.md Additional files +97/-0

...

sidecars/paperclip/doc/AGENT-ARTIFACTS.md


70. sidecars/paperclip/doc/CLI.md Additional files +166/-1

...

sidecars/paperclip/doc/CLI.md


71. sidecars/paperclip/doc/DATABASE.md Additional files +45/-17

...

sidecars/paperclip/doc/DATABASE.md


72. sidecars/paperclip/doc/DEPLOYMENT-MODES.md Additional files +34/-3

...

sidecars/paperclip/doc/DEPLOYMENT-MODES.md


73. sidecars/paperclip/doc/DEVELOPING.md Additional files +139/-6

...

sidecars/paperclip/doc/DEVELOPING.md


74. sidecars/paperclip/doc/DOCKER.md Additional files +10/-0

...

sidecars/paperclip/doc/DOCKER.md


75. sidecars/paperclip/doc/GOAL.md Additional files +9/-6

...

sidecars/paperclip/doc/GOAL.md


76. sidecars/paperclip/doc/PRODUCT.md Additional files +15/-9

...

sidecars/paperclip/doc/PRODUCT.md


77. sidecars/paperclip/doc/PUBLISHING.md Additional files +59/-0

...

sidecars/paperclip/doc/PUBLISHING.md


78. sidecars/paperclip/doc/RELEASE-AUTOMATION-SETUP.md Additional files +21/-0

...

sidecars/paperclip/doc/RELEASE-AUTOMATION-SETUP.md


79. sidecars/paperclip/doc/RELEASING.md Additional files +2/-0

...

sidecars/paperclip/doc/RELEASING.md


80. sidecars/paperclip/doc/SECRETS-AWS-PROVIDER.md Additional files +368/-0

...

sidecars/paperclip/doc/SECRETS-AWS-PROVIDER.md


81. sidecars/paperclip/doc/SPEC-implementation.md Additional files +196/-22

...

sidecars/paperclip/doc/SPEC-implementation.md


82. sidecars/paperclip/doc/SPEC.md Additional files +2/-0

...

sidecars/paperclip/doc/SPEC.md


83. sidecars/paperclip/doc/execution-semantics.md Additional files +249/-29

...

sidecars/paperclip/doc/execution-semantics.md


84. sidecars/paperclip/doc/plans/2026-03-14-adapter-skill-sync-rollout.md Additional files +64/-50

...

sidecars/paperclip/doc/plans/2026-03-14-adapter-skill-sync-rollout.md


85. sidecars/paperclip/doc/plans/2026-04-26-plugin-secret-ref-company-scope.md Additional files +86/-0

...

sidecars/paperclip/doc/plans/2026-04-26-plugin-secret-ref-company-scope.md


86. sidecars/paperclip/doc/plans/2026-05-05-scaled-kanban-board-design.md Additional files +90/-0

...

sidecars/paperclip/doc/plans/2026-05-05-scaled-kanban-board-design.md


87. sidecars/paperclip/doc/plans/2026-05-05-scaled-kanban-board.md Additional files +250/-0

...

sidecars/paperclip/doc/plans/2026-05-05-scaled-kanban-board.md


88. sidecars/paperclip/doc/plans/2026-05-06-llm-wiki-paperclip-asset-security-gate.md Additional files +135/-0

...

sidecars/paperclip/doc/plans/2026-05-06-llm-wiki-paperclip-asset-security-gate.md


89. sidecars/paperclip/doc/plans/2026-05-26-skills-cli-catalog-contract.md Additional files +486/-0

...

sidecars/paperclip/doc/plans/2026-05-26-skills-cli-catalog-contract.md


90. sidecars/paperclip/doc/plugins/LOCAL_PLUGIN_DEVELOPMENT.md Additional files +142/-0

...

sidecars/paperclip/doc/plugins/LOCAL_PLUGIN_DEVELOPMENT.md


91. sidecars/paperclip/doc/plugins/PLUGIN_AUTHORING_GUIDE.md Additional files +382/-29

...

sidecars/paperclip/doc/plugins/PLUGIN_AUTHORING_GUIDE.md


92. sidecars/paperclip/doc/plugins/PLUGIN_SPEC.md Additional files +105/-5

...

sidecars/paperclip/doc/plugins/PLUGIN_SPEC.md


93. sidecars/paperclip/doc/spec/invite-flow.md Additional files +38/-40

...

sidecars/paperclip/doc/spec/invite-flow.md


94. sidecars/paperclip/docker/ecs-task-definition.json Additional files +90/-0

...

sidecars/paperclip/docker/ecs-task-definition.json


95. sidecars/paperclip/docs/adapters/creating-an-adapter.md Additional files +17/-0

...

sidecars/paperclip/docs/adapters/creating-an-adapter.md


96. sidecars/paperclip/docs/api/routines.md Additional files +19/-2

...

sidecars/paperclip/docs/api/routines.md


97. sidecars/paperclip/docs/api/secrets-remote-import.md Additional files +133/-0

...

sidecars/paperclip/docs/api/secrets-remote-import.md


98. sidecars/paperclip/docs/api/secrets.md Additional files +361/-4

...

sidecars/paperclip/docs/api/secrets.md


99. sidecars/paperclip/docs/cli/control-plane-commands.md Additional files +23/-0

...

sidecars/paperclip/docs/cli/control-plane-commands.md


100. sidecars/paperclip/docs/cli/overview.md Additional files +10/-0

...

sidecars/paperclip/docs/cli/overview.md


101. sidecars/paperclip/docs/cli/setup-commands.md Additional files +9/-1

...

sidecars/paperclip/docs/cli/setup-commands.md


102. sidecars/paperclip/docs/deploy/aws-ecs.md Additional files +580/-0

...

sidecars/paperclip/docs/deploy/aws-ecs.md


103. sidecars/paperclip/docs/deploy/overview.md Additional files +1/-1

...

sidecars/paperclip/docs/deploy/overview.md


104. sidecars/paperclip/docs/deploy/secrets.md Additional files +318/-0

...

sidecars/paperclip/docs/deploy/secrets.md


105. sidecars/paperclip/docs/guides/board-operator/delegation.md Additional files +1/-1

...

sidecars/paperclip/docs/guides/board-operator/delegation.md


106. sidecars/paperclip/docs/guides/board-operator/execution-workspaces-and-runtime-services.md Additional files +11/-0

...

sidecars/paperclip/docs/guides/board-operator/execution-workspaces-and-runtime-services.md


107. sidecars/paperclip/docs/start/core-concepts.md Additional files +2/-2

...

sidecars/paperclip/docs/start/core-concepts.md


108. sidecars/paperclip/package.json Additional files +10/-1

...

sidecars/paperclip/package.json


109. sidecars/paperclip/packages/adapter-utils/README.md Additional files +37/-0

...

sidecars/paperclip/packages/adapter-utils/README.md


110. sidecars/paperclip/packages/adapter-utils/src/command-managed-runtime.test.ts Additional files +220/-0

...

sidecars/paperclip/packages/adapter-utils/src/command-managed-runtime.test.ts


111. Additional files not shown Additional files +0/-0

...

Additional files not shown


Grey Divider

Qodo Logo

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

Grey Divider

Looking for bugs?

Check back in a few minutes. An AI review agent is analyzing this pull request.

Grey Divider

Qodo Logo

@qodo-code-review

Copy link
Copy Markdown

CI Feedback 🧐

A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

Action: ci

Failed stage: Build (affected) [❌]

Failure summary:

The action failed during the build step because TypeScript compilation errored in
@paperclipai/server.
- @paperclipai/server:build failed with tsc exit code 2 due to a type mismatch
in src/app.ts(277,9):
- TS2322: Type '"local_trusted" | "authenticated" | "hosted_proxy"' is not
assignable to type '"local_trusted" | "authenticated" | undefined'
- Specifically, the value
"hosted_proxy" is not allowed by the destination type.
- This failure caused the overall
paperclip:build/turbo run to stop with Failed: @paperclipai/server#build and Process completed with
exit code 2.

Relevant error logs:
1:  Runner name: 'wopr-runner-03d6bd44d466'
2:  Runner group name: 'default'
...

248:  Progress: resolved 2476, reused 0, downloaded 2367, added 2419
249:  Progress: resolved 2476, reused 0, downloaded 2404, added 2457
250:  Progress: resolved 2476, reused 0, downloaded 2408, added 2461
251:  Progress: resolved 2476, reused 0, downloaded 2411, added 2464
252:  Progress: resolved 2476, reused 0, downloaded 2414, added 2467
253:  Progress: resolved 2476, reused 0, downloaded 2416, added 2469
254:  Progress: resolved 2476, reused 0, downloaded 2417, added 2469
255:  Progress: resolved 2476, reused 0, downloaded 2417, added 2471
256:  Progress: resolved 2476, reused 0, downloaded 2418, added 2472
257:  Progress: resolved 2476, reused 0, downloaded 2419, added 2473
258:  Progress: resolved 2476, reused 0, downloaded 2420, added 2474
259:  Progress: resolved 2476, reused 0, downloaded 2421, added 2474
260:  Progress: resolved 2476, reused 0, downloaded 2421, added 2475
261:  Progress: resolved 2476, reused 0, downloaded 2422, added 2475
262:  Progress: resolved 2476, reused 0, downloaded 2422, added 2476, done
263:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/node_modules/.pnpm/node_modules/.bin/crypto-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/node_modules/.pnpm/node_modules/@wopr-network/platform-crypto-server/dist/entry.js'
264:  .../node_modules/msw postinstall$ node -e "import('./config/scripts/postinstall.js').catch(() => void 0)"
...

267:  .../node_modules/msw postinstall: Done
268:  .../node_modules/msw postinstall: Done
269:  .../esbuild@0.27.4/node_modules/esbuild postinstall$ node install.js
270:  .../node_modules/better-sqlite3 install: (node:24223) [DEP0176] DeprecationWarning: fs.R_OK is deprecated, use fs.constants.R_OK instead
271:  .../node_modules/better-sqlite3 install: (Use `node --trace-deprecation ...` to show where the warning was created)
272:  .../node_modules/protobufjs postinstall$ node scripts/postinstall
273:  .../node_modules/cpu-features install$ node buildcheck.js > buildcheck.gypi && node-gyp rebuild
274:  .../node_modules/protobufjs postinstall: Done
275:  .../esbuild@0.27.4/node_modules/esbuild postinstall: Done
276:  .../sharp@0.34.5/node_modules/sharp install$ node install/check.js || npm run build
277:  .../node_modules/better-sqlite3 install: Done
278:  .../node_modules/msw postinstall$ node -e "import('./config/scripts/postinstall.js').catch(() => void 0)"
279:  .../node_modules/cpu-features install: gyp info it worked if it ends with ok
280:  .../node_modules/cpu-features install: gyp info using node-gyp@11.5.0
281:  .../node_modules/cpu-features install: gyp info using node@24.13.1 | linux | x64
282:  .../node_modules/cpu-features install: (node:24285) [DEP0169] DeprecationWarning: `url.parse()` behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead. CVEs are not issued for `url.parse()` vulnerabilities.
283:  .../node_modules/cpu-features install: (Use `node --trace-deprecation ...` to show where the warning was created)
...

348:  .../node_modules/cpu-features install: /home/runner/.cache/node-gyp/24.13.1/include/node/node.h:1312:3: note: in expansion of macro 'NODE_MODULE_X'
349:  .../node_modules/cpu-features install:  1312 |   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
350:  .../node_modules/cpu-features install:       |   ^~~~~~~~~~~~~
351:  .../node_modules/cpu-features install: ../src/binding.cc:151:1: note: in expansion of macro 'NODE_MODULE'
352:  .../node_modules/cpu-features install:   151 | NODE_MODULE(cpufeatures, init)
353:  .../node_modules/cpu-features install:       | ^~~~~~~~~~~
354:  .../node_modules/cpu-features install:   SOLINK_MODULE(target) Release/obj.target/cpufeatures.node
355:  .../node_modules/cpu-features install:   COPY Release/cpufeatures.node
356:  .../node_modules/cpu-features install: make: Leaving directory '/home/runner/actions-runner/_work/platform/platform/node_modules/.pnpm/cpu-features@0.0.10/node_modules/cpu-features/build'
357:  .../node_modules/cpu-features install: gyp info ok 
358:  .../node_modules/cpu-features install: Done
359:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install$ node install.js
360:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install: gyp info it worked if it ends with ok
361:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install: gyp info using node-gyp@11.5.0
362:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install: gyp info using node@24.13.1 | linux | x64
363:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install: (node:24708) [DEP0169] DeprecationWarning: `url.parse()` behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead. CVEs are not issued for `url.parse()` vulnerabilities.
364:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install: (Use `node --trace-deprecation ...` to show where the warning was created)
...

386:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install: gyp info spawn args '--no-parallel',
387:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install: gyp info spawn args '--generator-output',
388:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install: gyp info spawn args 'build',
389:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install: gyp info spawn args '-Goutput_dir=.'
390:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install: gyp info spawn args ]
391:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install: gyp info spawn make
392:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install: gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
393:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install: make: Entering directory '/home/runner/actions-runner/_work/platform/platform/node_modules/.pnpm/ssh2@1.17.0/node_modules/ssh2/lib/protocol/crypto/build'
394:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install:   CXX(target) Release/obj.target/sshcrypto/src/binding.o
395:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install:   SOLINK_MODULE(target) Release/obj.target/sshcrypto.node
396:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install:   COPY Release/sshcrypto.node
397:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install: make: Leaving directory '/home/runner/actions-runner/_work/platform/platform/node_modules/.pnpm/ssh2@1.17.0/node_modules/ssh2/lib/protocol/crypto/build'
398:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install: gyp info ok 
399:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install: Succeeded in building optional crypto binding
400:  .../.pnpm/ssh2@1.17.0/node_modules/ssh2 install: Done
401:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/examples/plugin-authoring-smoke-example/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/sdk/dist/dev-cli.js'
402:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/create-paperclip-plugin/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/sdk/dist/dev-cli.js'
403:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/examples/plugin-file-browser-example/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/sdk/dist/dev-cli.js'
404:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/examples/plugin-hello-world-example/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/sdk/dist/dev-cli.js'
405:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/examples/plugin-kitchen-sink-example/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/sdk/dist/dev-cli.js'
406:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/paperclip-plugin-fake-sandbox/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/sdk/dist/dev-cli.js'
407:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/examples/plugin-orchestration-smoke-example/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/sdk/dist/dev-cli.js'
408:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/plugin-workspace-diff/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/sdk/dist/dev-cli.js'
409:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/plugin-llm-wiki/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/sdk/dist/dev-cli.js'
410:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/server/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/sdk/dist/dev-cli.js'
411:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/sdk/dist/dev-cli.js'
412:  devDependencies:
413:  + @biomejs/biome 2.4.9
414:  + @changesets/cli 2.30.0
415:  + tsx 4.21.0
416:  + turbo 2.9.3
417:  + typescript 5.9.3
418:  + vitest 4.1.2
419:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/examples/plugin-authoring-smoke-example/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/examples/plugin-authoring-smoke-example/node_modules/@paperclipai/plugin-sdk/dist/dev-cli.js'
420:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/examples/plugin-file-browser-example/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/examples/plugin-file-browser-example/node_modules/@paperclipai/plugin-sdk/dist/dev-cli.js'
421:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/create-paperclip-plugin/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/create-paperclip-plugin/node_modules/@paperclipai/plugin-sdk/dist/dev-cli.js'
422:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/examples/plugin-hello-world-example/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/examples/plugin-hello-world-example/node_modules/@paperclipai/plugin-sdk/dist/dev-cli.js'
423:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/examples/plugin-orchestration-smoke-example/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/examples/plugin-orchestration-smoke-example/node_modules/@paperclipai/plugin-sdk/dist/dev-cli.js'
424:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/examples/plugin-kitchen-sink-example/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/examples/plugin-kitchen-sink-example/node_modules/@paperclipai/plugin-sdk/dist/dev-cli.js'
425:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/paperclip-plugin-fake-sandbox/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/paperclip-plugin-fake-sandbox/node_modules/@paperclipai/plugin-sdk/dist/dev-cli.js'
426:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/plugin-llm-wiki/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/plugin-llm-wiki/node_modules/@paperclipai/plugin-sdk/dist/dev-cli.js'
427:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/plugin-workspace-diff/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/plugin-workspace-diff/node_modules/@paperclipai/plugin-sdk/dist/dev-cli.js'
428:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/server/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/server/node_modules/@paperclipai/plugin-sdk/dist/dev-cli.js'
429:  WARN  Failed to create bin at /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/node_modules/.bin/paperclip-plugin-dev-server. ENOENT: no such file or directory, open '/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/node_modules/@paperclipai/plugin-sdk/dist/dev-cli.js'
430:  .../plugins/plugin-workspace-diff postinstall$ node ../../../scripts/link-plugin-dev-sdk.mjs
...

456:  • Remote caching disabled
457:  ##[group]@wopr-network/wopr-platform-ui:lint
458:  cache miss, executing 40d28042b6c19df5
459:  > @wopr-network/wopr-platform-ui@0.1.0 lint /home/runner/actions-runner/_work/platform/platform/shells/wopr-platform-ui
460:  > biome check src/
461:  Checked 127 files in 24ms. No fixes applied.
462:  ##[endgroup]
463:  ##[group]@wopr-network/wopr-plugin-p2p:lint
464:  cache miss, executing d9c87bb63805ca53
465:  > @wopr-network/wopr-plugin-p2p@1.0.1 lint /home/runner/actions-runner/_work/platform/platform/sidecars/wopr/packages/plugin-p2p
466:  > biome check src/
467:  src/channel-hooks.ts:112:26 lint/suspicious/noExplicitAny ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
468:  ! Unexpected any. Specify a different type.
469:  110 │ 	clientId: string,
470:  111 │ 	guildId?: string,
471:  > 112 │ 	log?: { info: (...args: any[]) => void; error: (...args: any[]) => void },
472:  │ 	                        ^^^
473:  113 │ ): Promise<void> {
474:  114 │ 	const logger = log || console;
475:  i any disables many type checking rules. Its use should be avoided.
476:  src/channel-hooks.ts:112:59 lint/suspicious/noExplicitAny ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
477:  ! Unexpected any. Specify a different type.
478:  110 │ 	clientId: string,
479:  111 │ 	guildId?: string,
480:  > 112 │ 	log?: { info: (...args: any[]) => void; error: (...args: any[]) => void },
481:  │ 	                                                         ^^^
...

707:  src/core/a2a-tools/_base.ts:31:57 lint/suspicious/noExplicitAny ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
708:  ! Unexpected any. Specify a different type.
709:  29 │ // handlers without the `extra` second arg (SDK breaking change in newer versions)
710:  30 │ // eslint-disable-next-line @typescript-eslint/no-explicit-any
711:  > 31 │ export const tool: (...args: any[]) => any = sdkTool as any;
712:  │                                                         ^^^
713:  32 │ 
714:  33 │ // Re-export everything tool modules need
715:  i any disables many type checking rules. Its use should be avoided.
716:  src/daemon/middleware/auth.ts:123:9 lint/complexity/useOptionalChain  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━
717:  ! Change to an optional chain.
718:  121 │     }
719:  122 │ 
720:  > 123 │     if (!authHeader || !authHeader.startsWith("Bearer ")) {
721:  │         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
722:  124 │       return c.json({ error: "Missing or invalid Authorization header" }, 401);
723:  125 │     }
724:  i Unsafe fix: Change to an optional chain.
725:  121 121 │       }
726:  122 122 │   
727:  123     │ - ····if·(!authHeader·||·!authHeader.startsWith("Bearer·"))·{
728:  123 │ + ····if·(!authHeader?.startsWith("Bearer·"))·{
729:  124 124 │         return c.json({ error: "Missing or invalid Authorization header" }, 401);
730:  125 125 │       }
...

756:  src/app/og/route.tsx:36:7 lint/a11y/noSvgWithoutTitle ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
757:  ! Alternative text title element cannot be empty
758:  35 │       {/* Paperclip icon */}
759:  > 36 │       <svg
760:  │       ^^^^
761:  > 37 │         width="80"
762:  ...
763:  > 42 │         style={{ marginBottom: "32px" }}
764:  > 43 │       >
765:  │       ^
766:  44 │         <path
767:  45 │           d="M11 22V12a5 5 0 0 1 10 0v8a3 3 0 0 1-6 0V12a1 1 0 0 1 2 0v8"
768:  i For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.
769:  src/lib/onboarding-chat.ts:136:11 lint/suspicious/noConsole  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
770:  ! Don't use console.
771:  134 │         } else if (chunk.type === "error") {
772:  135 │           streamError = { code: chunk.code ?? "unknown", message: chunk.message ?? "Unknown error" };
773:  > 136 │           console.error("[onboarding] server error event", streamError);
774:  │           ^^^^^^^^^^^^^
775:  137 │         }
776:  138 │         // chunk.type === "done" — stream complete
777:  i The use of console is often reserved for debugging.
778:  i Unsafe fix: Remove console.
779:  134 134 │           } else if (chunk.type === "error") {
780:  135 135 │             streamError = { code: chunk.code ?? "unknown", message: chunk.message ?? "Unknown error" };
781:  136     │ - ··········console.error("[onboarding]·server·error·event",·streamError);
782:  137 136 │           }
...

788:  > 164 │   console.log("[onboarding] stream parsed", {
789:  │   ^^^^^^^^^^^
790:  165 │     ready: gate.ready,
791:  166 │     hasArtifact: !!gate.artifact,
792:  i The use of console is often reserved for debugging.
793:  i Unsafe fix: Remove console.
794:  161 161 │       }
795:  162 162 │     }
796:  163     │ - 
797:  164     │ - ··console.log("[onboarding]·stream·parsed",·{
798:  165     │ - ····ready:·gate.ready,
799:  166     │ - ····hasArtifact:·!!gate.artifact,
800:  167     │ - ····artifactKeys:·gate.artifact·?·Object.keys(gate.artifact)·:·[],
801:  168     │ - ····visibleContentLength:·visibleContent.length,
802:  169     │ - ····jsonExtracted,
803:  170     │ - ····error:·streamError?.code,
804:  171     │ - ··});
805:  172 163 │   
806:  173 164 │     return { visibleContent, gate, error: streamError };
807:  src/lib/onboarding-chat.ts:192:3 lint/suspicious/noConsole  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
...

818:  190 190 │     const cleanMessages = messages.filter((m) => m.content.length > 0);
819:  191     │ - 
820:  192     │ - ··console.log("[onboarding]·sending",·{
821:  193     │ - ····state,
822:  194     │ - ····phase,
823:  195     │ - ····messageCount:·cleanMessages.length,
824:  196     │ - ····artifacts:·artifacts·?·Object.keys(artifacts).filter((k)·=>·!!(artifacts·as·Record<string,·unknown>)[k])·:·[],
825:  197     │ - ····emptyFiltered:·messages.length·-·cleanMessages.length,
826:  198     │ - ··});
827:  199 191 │   
828:  200 192 │     const abort = new AbortController();
829:  src/lib/onboarding-chat.ts:217:7 lint/suspicious/noConsole  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
830:  ! Don't use console.
831:  215 │       }
832:  216 │       const suffix = incidentId ? ` (${incidentId})` : "";
833:  > 217 │       console.error("[onboarding] server error", { status: res.status, state, phase, incidentId });
834:  │       ^^^^^^^^^^^^^
835:  218 │       throw new Error(`Onboarding chat failed: ${res.status}${suffix}`);
836:  219 │     }
837:  i The use of console is often reserved for debugging.
838:  i Unsafe fix: Remove console.
839:  215 215 │         }
840:  216 216 │         const suffix = incidentId ? ` (${incidentId})` : "";
841:  217     │ - ······console.error("[onboarding]·server·error",·{·status:·res.status,·state,·phase,·incidentId·});
842:  218 217 │         throw new Error(`Onboarding chat failed: ${res.status}${suffix}`);
843:  219 218 │       }
...

862:  │                                                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
863:  95 │     authSocial: authSocialRouter,
864:  96 │   });
865:  Checked 951 files in 282ms. No fixes applied.
866:  Found 1 warning.
867:  ##[endgroup]
868:  ##[group]@wopr-network/wopr-plugin-imessage:lint
869:  cache miss, executing 8a94bba4399c8d44
870:  > @wopr-network/wopr-plugin-imessage@1.0.1 lint /home/runner/actions-runner/_work/platform/platform/sidecars/wopr/packages/plugin-imessage
871:  > biome check src/
872:  src/imsg-client.ts:16:19 lint/suspicious/noExplicitAny ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
873:  ! Unexpected any. Specify a different type.
874:  15 │ interface PendingRequest {
875:  > 16 │ 	resolve: (value: any) => void;
876:  │ 	                 ^^^
877:  17 │ 	reject: (error: Error) => void;
878:  18 │ 	timer?: NodeJS.Timeout;
...

888:  ! Unexpected any. Specify a different type.
889:  148 │ 	async request(
890:  149 │ 		method: string,
891:  > 150 │ 		params?: Record<string, any>,
892:  │ 		                        ^^^
893:  151 │ 		timeoutMs = 30000,
894:  152 │ 	): Promise<any> {
895:  i any disables many type checking rules. Its use should be avoided.
896:  src/imsg-client.ts:152:13 lint/suspicious/noExplicitAny ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
897:  ! Unexpected any. Specify a different type.
898:  150 │ 		params?: Record<string, any>,
899:  151 │ 		timeoutMs = 30000,
900:  > 152 │ 	): Promise<any> {
901:  │ 	           ^^^
902:  153 │ 		if (!this.child?.stdin) {
903:  154 │ 			throw new Error("imsg rpc not running");
904:  i any disables many type checking rules. Its use should be avoided.
...

949:  src/types.ts:51:26 lint/suspicious/noExplicitAny ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
950:  ! Unexpected any. Specify a different type.
951:  49 │ 	id: number;
952:  50 │ 	method: string;
953:  > 51 │ 	params?: Record<string, any>;
954:  │ 	                        ^^^
955:  52 │ }
956:  53 │ 
957:  i any disables many type checking rules. Its use should be avoided.
958:  src/types.ts:57:11 lint/suspicious/noExplicitAny ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
959:  ! Unexpected any. Specify a different type.
960:  55 │ 	jsonrpc: "2.0";
961:  56 │ 	id: number;
962:  > 57 │ 	result?: any;
963:  │ 	         ^^^
964:  58 │ 	error?: {
965:  59 │ 		code: number;
...

1320:  ⚠ No build cache found. Please configure build caching for faster rebuilds. Read more: https://nextjs.org/docs/messages/no-cache
1321:  Attention: Next.js now collects completely anonymous telemetry regarding usage.
1322:  This information is used to shape Next.js' roadmap and prioritize features.
1323:  You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
1324:  https://nextjs.org/telemetry
1325:  ▲ Next.js 16.1.6 (Turbopack)
1326:  Creating an optimized production build ...
1327:  ✓ Compiled successfully in 10.2s
1328:  Running TypeScript ...
1329:  Collecting page data using 31 workers ...
1330:  ⚠ Using edge runtime on a page currently disables static generation for that page
1331:  Generating static pages using 31 workers (0/71) ...
1332:  Generating static pages using 31 workers (17/71) 
1333:  Generating static pages using 31 workers (35/71) 
1334:  Generating static pages using 31 workers (53/71) 
1335:  [api] Failed to fetch pricing data TypeError: fetch failed
1336:  at async s (.next/server/chunks/ssr/core_platform-ui-core_src_efa229ab._.js:1:7890)
1337:  at async x (.next/server/chunks/ssr/core_platform-ui-core_src_efa229ab._.js:1:8209) {
1338:  [cause]: Error: connect ECONNREFUSED 127.0.0.1:3001
1339:  at <unknown> (Error: connect ECONNREFUSED 127.0.0.1:3001) {
1340:  errno: -111,
...

1454:  ┌ ○ /
1455:  ├ ○ /_not-found
1456:  ├ ○ /billing
1457:  ├ ○ /fleet
1458:  ├ ○ /products
1459:  ├ ƒ /products/[slug]
1460:  ├ ○ /tenants
1461:  └ ƒ /tenants/[id]
1462:  ○  (Static)   prerendered as static content
1463:  ƒ  (Dynamic)  server-rendered on demand
1464:  ##[endgroup]
1465:  �[;31m@paperclipai/server:build�[;0m
1466:  cache miss, executing aff1f3c059215320
1467:  > @paperclipai/server@0.3.1 build /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/server
1468:  > tsc && mkdir -p dist/onboarding-assets && cp -R src/onboarding-assets/. dist/onboarding-assets/
1469:  ##[error]src/app.ts(277,9): error TS2322: Type '"local_trusted" | "authenticated" | "hosted_proxy"' is not assignable to type '"local_trusted" | "authenticated" | undefined'.
1470:  Type '"hosted_proxy"' is not assignable to type '"local_trusted" | "authenticated" | undefined'.
1471:  ELIFECYCLE  Command failed with exit code 2.
1472:  ##[group]@wopr-network/holyship-platform-ui:build
1473:  cache miss, executing 1049a6155090fd1b
1474:  > @wopr-network/holyship-platform-ui@0.1.0 build /home/runner/actions-runner/_work/platform/platform/shells/holyship-platform-ui
1475:  > next build
1476:  ⚠ No build cache found. Please configure build caching for faster rebuilds. Read more: https://nextjs.org/docs/messages/no-cache
1477:  Attention: Next.js now collects completely anonymous telemetry regarding usage.
1478:  This information is used to shape Next.js' roadmap and prioritize features.
1479:  You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
1480:  https://nextjs.org/telemetry
1481:  ▲ Next.js 16.1.6 (Turbopack)
1482:  Creating an optimized production build ...
1483:  ✓ Compiled successfully in 13.7s
1484:  Running TypeScript ...
1485:  ELIFECYCLE  Command failed.
1486:  ##[endgroup]
1487:  ##[group]@wopr-network/nemoclaw-platform-ui:build
1488:  cache miss, executing 57fcd43a0d210a2f
1489:  > @wopr-network/nemoclaw-platform-ui@0.1.0 build /home/runner/actions-runner/_work/platform/platform/shells/nemoclaw-platform-ui
1490:  > next build
1491:  ⚠ No build cache found. Please configure build caching for faster rebuilds. Read more: https://nextjs.org/docs/messages/no-cache
1492:  Attention: Next.js now collects completely anonymous telemetry regarding usage.
1493:  This information is used to shape Next.js' roadmap and prioritize features.
1494:  You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
1495:  https://nextjs.org/telemetry
1496:  ▲ Next.js 16.1.6 (Turbopack)
1497:  ⚠ The "middleware" file convention is deprecated. Please use "proxy" instead. Learn more: https://nextjs.org/docs/messages/middleware-to-proxy
1498:  Creating an optimized production build ...
1499:  ✓ Compiled successfully in 13.8s
1500:  Running TypeScript ...
1501:  ELIFECYCLE  Command failed.
1502:  ##[endgroup]
...

1507:  ##[endgroup]
1508:  ##[group]@wopr-network/paperclip-platform-ui:build
1509:  cache miss, executing c161709eb3cc276f
1510:  > @wopr-network/paperclip-platform-ui@0.1.0 build /home/runner/actions-runner/_work/platform/platform/shells/paperclip-platform-ui
1511:  > next build
1512:  ⚠ No build cache found. Please configure build caching for faster rebuilds. Read more: https://nextjs.org/docs/messages/no-cache
1513:  Attention: Next.js now collects completely anonymous telemetry regarding usage.
1514:  This information is used to shape Next.js' roadmap and prioritize features.
1515:  You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
1516:  https://nextjs.org/telemetry
1517:  ▲ Next.js 16.1.6 (Turbopack)
1518:  ⚠ The "middleware" file convention is deprecated. Please use "proxy" instead. Learn more: https://nextjs.org/docs/messages/middleware-to-proxy
1519:  Creating an optimized production build ...
1520:  ✓ Compiled successfully in 13.5s
1521:  Running TypeScript ...
1522:  ELIFECYCLE  Command failed.
1523:  ##[endgroup]
...

1528:  ⚠ Warning: Next.js inferred your workspace root, but it may not be correct.
1529:  We detected multiple lockfiles and selected the directory of /home/runner/actions-runner/_work/platform/platform/pnpm-lock.yaml as the root directory.
1530:  To silence this warning, set `turbopack.root` in your Next.js config, or consider removing one of the lockfiles if it's not needed.
1531:  See https://nextjs.org/docs/app/api-reference/config/next-config-js/turbopack#root-directory for more information.
1532:  Detected additional lockfiles: 
1533:  * /home/runner/actions-runner/_work/platform/platform/shells/wopr-platform-ui/package-lock.json
1534:  ⚠ No build cache found. Please configure build caching for faster rebuilds. Read more: https://nextjs.org/docs/messages/no-cache
1535:  Attention: Next.js now collects completely anonymous telemetry regarding usage.
1536:  This information is used to shape Next.js' roadmap and prioritize features.
1537:  You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
1538:  https://nextjs.org/telemetry
1539:  ▲ Next.js 16.1.6 (Turbopack)
1540:  Creating an optimized production build ...
1541:  ✓ Compiled successfully in 15.2s
1542:  Running TypeScript ...
1543:  ELIFECYCLE  Command failed.
1544:  ##[endgroup]
1545:  ##[group]paperclip:build
1546:  cache miss, executing 2b2c75182cf86339
1547:  ##[error]@paperclipai/server#build: command (/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/server) /home/runner/setup-pnpm/node_modules/.bin/bin/pnpm run build exited (2)
1548:  ERROR  @paperclipai/server#build: command (/home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/server) /home/runner/setup-pnpm/node_modules/.bin/bin/pnpm run build exited (2)
1549:  > paperclip@ build /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip
...

1577:  packages/adapters/openclaw-gateway build: Done
1578:  packages/adapters/pi-local build$ tsc
1579:  packages/adapters/grok-local build: Done
1580:  packages/db build$ pnpm run check:migrations && tsc && cp -r src/migrations dist/migrations
1581:  packages/adapters/gemini-local build: Done
1582:  packages/mcp-server build$ tsc
1583:  packages/db build: > @paperclipai/db@0.3.1 check:migrations /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/db
1584:  packages/db build: > tsx src/check-migration-numbering.ts
1585:  packages/adapters/pi-local build: Done
1586:  packages/plugins/sdk build$ pnpm --filter @paperclipai/shared build && tsc
1587:  packages/adapters/opencode-local build: Done
1588:  packages/plugins/sdk build: > @paperclipai/shared@0.3.1 build /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/shared
1589:  packages/plugins/sdk build: > tsc
1590:  packages/mcp-server build: Done
1591:  packages/db build: Done
1592:  packages/plugins/sdk build: Failed
1593:  packages/plugins/create-paperclip-plugin build$ tsc
...

1598:  .../examples/plugin-hello-world-example prebuild: > node ../../../scripts/ensure-plugin-build-deps.mjs
1599:  .../plugin-authoring-smoke-example prebuild: > @paperclipai/plugin-sdk@1.0.0 ensure-build-deps /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/sdk
1600:  .../plugin-authoring-smoke-example prebuild: > node ../../../scripts/ensure-plugin-build-deps.mjs
1601:  .../examples/plugin-file-browser-example prebuild: > @paperclipai/plugin-sdk@1.0.0 ensure-build-deps /home/runner/actions-runner/_work/platform/platform/sidecars/paperclip/packages/plugins/sdk
1602:  .../examples/plugin-file-browser-example prebuild: > node ../../../scripts/ensure-plugin-build-deps.mjs
1603:  .../examples/plugin-hello-world-example prebuild: Done
1604:  .../examples/plugin-hello-world-example build$ tsc
1605:  .../plugin-authoring-smoke-example prebuild: Done
1606:  .../plugin-authoring-smoke-example build$ node ./esbuild.config.mjs
1607:  .../examples/plugin-file-browser-example prebuild: Done
1608:  .../examples/plugin-file-browser-example build$ tsc && node ./scripts/build-ui.mjs
1609:  ##[endgroup]
1610:  Tasks:    44 successful, 51 total
1611:  Cached:    0 cached, 51 total
1612:  Time:    52.672s 
1613:  Failed:    @paperclipai/server#build
1614:  ERROR  run failed: command  exited (2)
1615:  ##[error]Process completed with exit code 2.
1616:  Post job cleanup.

@github-advanced-security github-advanced-security AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

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.

3 participants