mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-06 10:48:12 +02:00
## Thinking Path > - Paperclip is the open source app people use to manage AI agents for work. > - The Claude local adapter lists models for users with a Claude subscription. > - The list needs Claude Sonnet 5.5 and its supported effort levels. > - Sonnet 5.5 needs Claude Code 2.1.284 or later on both execution paths. > - The qualified ACP runtime previously used Claude Code 2.1.280. > - This change adds Sonnet 5.5 and pins Agent SDK 0.3.286, which includes Claude Code 2.1.286. > - Users can select the model and run it with a qualified runtime. ## Linked Issues or Issue Description Refs #3936. This replaces #14816 because the maintainer integration cannot write to the contributor fork. Thank you to @SkilLab-Tech for the model support, runtime refresh, tests, and platform digest verification. This branch preserves both original commits: `8d2f3261af61a2ac1120e51e8a8618732ace543b` and `e68d1d002a3ed745f016fb11c50ac5a3c5a9ff8d`. Related work: - #14917 added Claude model ordering. This branch includes that merged change and resolves its conflicts with #14816. - #14942 updates the other models and harnesses. It remains separate. Its matching Sonnet effort and CLI-gate changes are identical. Both PRs merge with master. The second PR will need a rebase after the first merges because adjacent runtime-pin and test edits conflict. - #14954 is another Sonnet 5.5 change. It overlaps with the model additions but does not include the qualified runtime refresh. - #14039 makes the per-task effort picker model-aware. #3937 is also related to effort selection. The original author checked the [Claude Code changelog](https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md) and [effort documentation](https://platform.claude.com/docs/en/build-with-claude/effort) on 2026-10-01. ## What Changed - Add the direct `claude-sonnet-5-5` model and Low, Medium, High, X-High, and Max effort levels. - Require Claude Code 2.1.284 or later for that model on the CLI path. - Put Sonnet 5.5 after Opus 5.5 in the current-model group. Keep Sonnet 5 in the older-model group. - Retain the Sonnet 5.5 assertions and the model-order assertions in the server tests. - Pin Agent SDK 0.3.286 and Claude Code 2.1.286 across overrides, integrity digests, qualified profiles, Rust provider pins, and the Daytona version check. - Update the related adapter and runtime documentation. ## Verification Local verification uses the resolved source tree and pnpm 9.15.4. Model tests passed on Node 25.9.0. Runtime integrity tests use CI's Node 24.21.0. - Five focused Claude test files pass: 62 tests. They cover model defaults, model ordering, CLI gates, and remote execution probes. - Server model-list and UI setup tests pass: 30 tests. - The Claude adapter typecheck passes. - Runner integrity and qualification tests pass on Node 24.21.0: 78 tests. Four descriptor-loader tests fail on Node 25.9.0; all four pass on the CI version. - The runner package contract passes: 10 tests. - Full local typecheck stopped with exit 137 in the database package under the container's 4 GB memory limit. The production build reached the runner Rust build, then stopped because `cargo` is absent. - The full stable local Vitest run was stopped after all current-head CI test shards passed. It did not complete locally. The 180 focused tests listed above passed. - `git diff --check` passes. The branch changes 20 files against master. It has no lockfile or workflow changes. - The original author verified all three platform digests against registry integrity and ran the Linux executable. Its version was `2.1.286 (Claude Code)`. See #14816 for that evidence. - Greptile reviewed head `6db3d3f1` and gave 5/5 with zero comments. Both Superagent scans and Commitperclip pass. All current-head CI jobs pass, including build, typecheck, Rust, test shards, browser tests, and the canary dry run. ## Risks - The controller and provider pack must use matching runtime pins. Deploy them together. - CI owns `pnpm-lock.yaml`. The master lockfile refresh must resolve the SDK override. Refresh the Daytona lock digest with that lockfile. - Images built with Claude Code older than 2.1.284 need a rebuild before the CLI path can use Sonnet 5.5. - The runtime remains at SDK 0.3.286. This PR does not take the later 0.3.287 patch. - A live Sonnet 5.5 session and a Daytona image build are not part of the local verification. ## Model Used - Original work: Anthropic Claude Code, `claude-sonnet-5-5`. Review: `claude-opus-5-5`. The author reported `xhigh` effort, tool use, and code execution. The original context window was not reported. - Merge repair and PR preparation: OpenAI Codex, based on GPT-6, with tool use and code execution. The runtime does not expose the exact model identifier or context window in this session. ## Checklist - [x] I have included a thinking path that traces from project context to this change - [x] I have specified the model used (with version and capability details) - [x] I have checked ROADMAP.md and confirmed this PR does not duplicate planned core work - [x] I have searched GitHub for duplicate or related PRs and linked them above - [x] I have either (a) linked existing issues with `Fixes: #` / `Closes #` / `Refs #` OR (b) described the issue in-PR following the relevant issue template - [x] I have not referenced internal/instance-local Paperclip issues or links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip` URLs) - [x] My branch name describes the change (e.g. `docs/...`, `fix/...`) and contains no internal Paperclip ticket id or instance-derived details - [x] I have run tests locally and they pass - [x] I have added or updated tests where applicable - [x] I have updated relevant documentation to reflect my changes - [x] I have considered and documented any risks above - [x] All Paperclip CI gates are green - [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups - [x] I will address all Greptile and reviewer comments before requesting merge ## Squash Attribution Keep these trailers in the squash commit to preserve the original author and AI attribution: ```text Co-Authored-By: Claude Code (Ivan) <SkilLab-Tech@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-Authored-By: Paperclip <noreply@paperclip.ing> ``` --------- Co-authored-by: Claude Code (Ivan) <ivan@skillab.com.br> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Paperclip <noreply@paperclip.ing>
50 lines
2.5 KiB
YAML
50 lines
2.5 KiB
YAML
packages:
|
|
- packages/*
|
|
- packages/adapters/*
|
|
- packages/plugins/*
|
|
# Keep sandbox-provider plugins installable as standalone packages without
|
|
# forcing root pnpm-lock.yaml churn for their third-party deps.
|
|
- "!packages/plugins/sandbox-providers/**"
|
|
- packages/plugins/examples/*
|
|
# Keep this smoke fixture installable as a local plugin example without
|
|
# forcing PRs to commit pnpm-lock.yaml for a new workspace importer.
|
|
- "!packages/plugins/examples/plugin-orchestration-smoke-example"
|
|
- server
|
|
- ui
|
|
- cli
|
|
|
|
# Keep in sync with package.json#pnpm.patchedDependencies. Newer pnpm
|
|
# versions read patch configuration only from the workspace manifest.
|
|
patchedDependencies:
|
|
postgres@3.4.9: patches/postgres@3.4.9.patch
|
|
embedded-postgres@18.1.0-beta.16: patches/embedded-postgres@18.1.0-beta.16.patch
|
|
acpx@0.12.0: patches/acpx@0.12.0.patch
|
|
acpx@0.13.1: patches/acpx@0.13.1.patch
|
|
"@agentclientprotocol/claude-agent-acp@0.73.0": patches/@agentclientprotocol__claude-agent-acp@0.73.0.patch
|
|
"@agentclientprotocol/codex-acp@1.6.2": patches/@agentclientprotocol__codex-acp@1.6.2.patch
|
|
"@chat-adapter/slack@4.39.0": patches/@chat-adapter__slack@4.39.0.patch
|
|
"@chat-adapter/discord@4.39.0": patches/@chat-adapter__discord@4.39.0.patch
|
|
"@chat-adapter/telegram@4.39.0": patches/@chat-adapter__telegram@4.39.0.patch
|
|
"@chat-adapter/teams@4.39.0": patches/@chat-adapter__teams@4.39.0.patch
|
|
"@chat-adapter/github@4.39.0": patches/@chat-adapter__github@4.39.0.patch
|
|
"@discordjs/ws@1.2.3": patches/@discordjs__ws@1.2.3.patch
|
|
|
|
# Agent CLIs share the current runtime used by the native provider pack.
|
|
# pnpm patches change package files, but overrides control dependency resolution.
|
|
overrides:
|
|
"@agentclientprotocol/codex-acp@1.6.2>@openai/codex": "0.156.0"
|
|
"@agentclientprotocol/claude-agent-acp@0.73.0>@anthropic-ai/claude-agent-sdk": "0.3.286"
|
|
rollup: ">=4.59.0"
|
|
react: "^19.2.8"
|
|
react-dom: "^19.2.8"
|
|
# CodeMirror validates extensions with instanceof, so exactly one copy of
|
|
# these two packages may resolve. Different CodeMirror packages pin
|
|
# different transitive minors, which resolves two copies and crashes the
|
|
# editor with "Unrecognized extension value in extension set". A shared
|
|
# range forces every consumer onto one resolution.
|
|
"@codemirror/state": "^6.7.2"
|
|
"@codemirror/view": "^6.43.11"
|
|
# Parsers and highlighters must share NodeProp IDs from one Lezer instance.
|
|
# Mixed copies can interpret unrelated node metadata as highlighting tags.
|
|
"@lezer/common": "^1.5.2"
|