diff --git a/DEVELOPING.md b/DEVELOPING.md index 854b59b..91ea084 100644 --- a/DEVELOPING.md +++ b/DEVELOPING.md @@ -32,7 +32,7 @@ If you want the wrapper to manage local bootstrap for you instead, run: node dist/index.js add ./fixtures/minimal-company --target new ``` -That path uses the bundled `paperclipai` canary, runs `paperclipai onboard --yes` when needed, and starts the local server automatically before importing. +That path uses the bundled stable `paperclipai` release, runs `paperclipai onboard --yes` when needed, and starts the local server automatically before importing. ## Hand-Test Against A Docker Paperclip Instance diff --git a/README.md b/README.md index 74b303d..5b32e5a 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,7 @@ Use these when the Paperclip CLI needs explicit connection or profile settings: - `auto` is the default. It checks the local Paperclip config, falls back to `http://127.0.0.1:3100`, runs `paperclipai onboard --yes` when no config exists yet, and starts `paperclipai run` if the server is not already up. - `custom-url` skips the local bootstrap and expects a reachable Paperclip instance at `--api-base`. -`companies.sh` requires a recent Paperclip build for the company import flow. This repo currently pins `paperclipai@2026.324.0-canary.7`, and the wrapper rejects versions older than `2026.324.0-canary.0`. +`companies.sh` requires a recent Paperclip build for the company import flow. Fresh installs resolve `paperclipai@latest`, and the wrapper rejects versions older than `2026.318.0`. ## Telemetry @@ -168,7 +168,7 @@ export PAPERCLIPAI_CMD=/path/to/paperclipai export PAPERCLIPAI_CMD="pnpm --dir /path/to/paperclip paperclipai" ``` -If you override the command, `companies.sh` still requires `paperclipai >= 2026.324.0-canary.0`. +If you override the command, `companies.sh` still requires `paperclipai >= 2026.318.0`. ### Import fails with collision errors diff --git a/doc/RELEASING.md b/doc/RELEASING.md index 1a2f7aa..5bc8a44 100644 --- a/doc/RELEASING.md +++ b/doc/RELEASING.md @@ -105,13 +105,13 @@ git push origin refs/tags/vYYYY.MDD.P ## Dependency Policy -`companies.sh` currently pins `paperclipai@2026.324.0-canary.7`. +`companies.sh` depends on `paperclipai@latest`, so fresh installs resolve the current stable Paperclip release. That means: -- canary publishes are expected to track Paperclip canaries -- a stable `companies.sh` release is still allowed when it has been validated against the pinned Paperclip build -- when Paperclip stable contains the required company import/export features, update the dependency and continue promoting stable releases normally +- canary publishes should still be validated against the current Paperclip canary when a change depends on unreleased Paperclip behavior +- stable `companies.sh` releases track the npm `latest` Paperclip dist-tag by default +- if a future `companies.sh` change needs unreleased Paperclip behavior again, pin or override deliberately instead of relying on `latest` ## Smoke Checks diff --git a/package.json b/package.json index a81538e..1be21a9 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "dependencies": { "@clack/prompts": "^0.10.1", "commander": "^13.1.0", - "paperclipai": "2026.324.0-canary.7", + "paperclipai": "latest", "picocolors": "^1.1.1" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 54ff740..e7dd50d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ importers: specifier: ^13.1.0 version: 13.1.0 paperclipai: - specifier: 2026.324.0-canary.7 - version: 2026.324.0-canary.7(@noble/hashes@2.0.1)(kysely@0.28.14)(pg@8.20.0) + specifier: latest + version: 2026.318.0(@noble/hashes@2.0.1)(kysely@0.28.14)(pg@8.20.0) picocolors: specifier: ^1.1.1 version: 1.1.1 @@ -320,9 +320,6 @@ packages: cpu: [x64] os: [win32] - '@emnapi/runtime@1.9.1': - resolution: {integrity: sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==} - '@esbuild/aix-ppc64@0.27.4': resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} engines: {node: '>=18'} @@ -488,143 +485,6 @@ packages: '@noble/hashes': optional: true - '@img/colour@1.1.0': - resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} - engines: {node: '>=18'} - - '@img/sharp-darwin-arm64@0.34.5': - resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [darwin] - - '@img/sharp-darwin-x64@0.34.5': - resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-darwin-arm64@1.2.4': - resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} - cpu: [arm64] - os: [darwin] - - '@img/sharp-libvips-darwin-x64@1.2.4': - resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-linux-arm64@1.2.4': - resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} - cpu: [arm64] - os: [linux] - - '@img/sharp-libvips-linux-arm@1.2.4': - resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} - cpu: [arm] - os: [linux] - - '@img/sharp-libvips-linux-ppc64@1.2.4': - resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} - cpu: [ppc64] - os: [linux] - - '@img/sharp-libvips-linux-riscv64@1.2.4': - resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} - cpu: [riscv64] - os: [linux] - - '@img/sharp-libvips-linux-s390x@1.2.4': - resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} - cpu: [s390x] - os: [linux] - - '@img/sharp-libvips-linux-x64@1.2.4': - resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} - cpu: [x64] - os: [linux] - - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': - resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} - cpu: [arm64] - os: [linux] - - '@img/sharp-libvips-linuxmusl-x64@1.2.4': - resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} - cpu: [x64] - os: [linux] - - '@img/sharp-linux-arm64@0.34.5': - resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - - '@img/sharp-linux-arm@0.34.5': - resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm] - os: [linux] - - '@img/sharp-linux-ppc64@0.34.5': - resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ppc64] - os: [linux] - - '@img/sharp-linux-riscv64@0.34.5': - resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [riscv64] - os: [linux] - - '@img/sharp-linux-s390x@0.34.5': - resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [s390x] - os: [linux] - - '@img/sharp-linux-x64@0.34.5': - resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - - '@img/sharp-linuxmusl-arm64@0.34.5': - resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - - '@img/sharp-linuxmusl-x64@0.34.5': - resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - - '@img/sharp-wasm32@0.34.5': - resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [wasm32] - - '@img/sharp-win32-arm64@0.34.5': - resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [win32] - - '@img/sharp-win32-ia32@0.34.5': - resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ia32] - os: [win32] - - '@img/sharp-win32-x64@0.34.5': - resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [win32] - '@noble/ciphers@2.1.1': resolution: {integrity: sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw==} engines: {node: '>= 20.19.0'} @@ -633,38 +493,38 @@ packages: resolution: {integrity: sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==} engines: {node: '>= 20.19.0'} - '@paperclipai/adapter-claude-local@2026.324.0-canary.7': - resolution: {integrity: sha512-wrjiIHfOK+rl51JWstAT6hX1W22HnW3aKZQjV1ciGQFCjCTmt3x7MLM1aCSLg/Afh05VmHuhU5/ynE+lwZ2l6A==} + '@paperclipai/adapter-claude-local@2026.318.0': + resolution: {integrity: sha512-ndWNm4MUv/D4MoDHAoxGnLJg2sKo7l8MT3hZ/IiRd7NiIMk2qjZOkWZ+JatqZojtOeH1LiYAhSsn5t0z/W3jPw==} - '@paperclipai/adapter-codex-local@2026.324.0-canary.7': - resolution: {integrity: sha512-WTUy55krfpAwtpqmecwzcZCLASamJi2pJfT3LzakuYhZD3A9rBNp5InWR0wrYqOC1145XUrklnOZDLoveNRPaA==} + '@paperclipai/adapter-codex-local@2026.318.0': + resolution: {integrity: sha512-ymbfC6aoi8ip8bJiMNF4Y6sp0lOTXpImtU3nd9dSQ1BIu2cKTJ7N5LsabbPXbuhRAQxk5hjIMNmoNujSZdpAsg==} - '@paperclipai/adapter-cursor-local@2026.324.0-canary.7': - resolution: {integrity: sha512-y0ctU77PKGzE+Bo0EAS562qJUumWXwDYbJGWFsJleNnMjf4ErFZdz7irum+EZ4XaA7p85qbhJuB9KEAyoxVdbw==} + '@paperclipai/adapter-cursor-local@2026.318.0': + resolution: {integrity: sha512-K+HRio7jlDLa/EfvYMXppaXpZ/Kjh7YXPIzKe3ZcFjPS/W83/TEdewIcnI973u8ifVnRRhMfC9zsIwUfFOhMIw==} - '@paperclipai/adapter-gemini-local@2026.324.0-canary.7': - resolution: {integrity: sha512-+2NeN5SJ4YJVI1UZlETZFKR0LVLC4ZBdtKvjd19tHdDLGMt5XNbMuFyIZJAFKUnP/HSUWOyP88CWdKY3+1rRow==} + '@paperclipai/adapter-gemini-local@2026.318.0': + resolution: {integrity: sha512-W402fwrfaYQ8GgxX7mQXAe5j54ku695z+pFiufx7XMqyCeTxB++wYPYU8P1O83tOjsuQa8dHSO/uqMp8wD6Dbw==} - '@paperclipai/adapter-openclaw-gateway@2026.324.0-canary.7': - resolution: {integrity: sha512-0PBvfEFf4KCeRTR1Nnt2O8MEoymp2c2Do4n9wyrdnqS2fIf5WmK+tp5+ohUeLsGF8NsPGav3HgMuViCc2d+n3g==} + '@paperclipai/adapter-openclaw-gateway@2026.318.0': + resolution: {integrity: sha512-++nXbjmnTP2SeSD6L8c6r9+3qMXf6wC/peHKd7PDjYhcTDVWI7TTQfzN4X1z7RlHfdl+rF9HSYZXRIuFT5d6yg==} - '@paperclipai/adapter-opencode-local@2026.324.0-canary.7': - resolution: {integrity: sha512-RCtdUd7z2sv4tVmvB156/+eOgenjBMw+0ICqVey0wlCbNS4PA8n5h7K1eCB/PiwaVYp8ybahFmb9lCLkWqyr6Q==} + '@paperclipai/adapter-opencode-local@2026.318.0': + resolution: {integrity: sha512-2SWiAfhPaFtk0+WkPqs/e/kZQw4nxJl83ArlcDtV2j0tvoztdmcVKdJ0TjNZCCUejdZ9eN5W6NwKl//vkDMzAQ==} - '@paperclipai/adapter-pi-local@2026.324.0-canary.7': - resolution: {integrity: sha512-LD0/07/hFiiu0KJxz4NmZ2macHWsvPYt29B3GB0neaIDpd1QLU/FugxYBCrfW70daJhZE9lO5wgCzpuF1e21UQ==} + '@paperclipai/adapter-pi-local@2026.318.0': + resolution: {integrity: sha512-e1Mq2PIHykp50lIxF4CpsQaqGX7qCt7nToEFVXAaCvxgVC5fMD9jKFMMP/wRkh7ccTaCbnDxFfL1pb2YAZxJIQ==} '@paperclipai/adapter-utils@0.3.1': resolution: {integrity: sha512-W66k+hJkQE8ma0asM/Sd90AC8HHy/BLG/sd0aOC+rDWw+gOasQyUkTnDoPv1zhQuTyKEEvLFV6ByOOKqEiAz/A==} - '@paperclipai/adapter-utils@2026.324.0-canary.7': - resolution: {integrity: sha512-jBD17e7Gym4R/NsghnStWbGwmpMKnvSrVhE5ePGhtssWSM3B1eD4tZFOum01LvPbs1zHMw3gqlRzZh/w3NRTIA==} + '@paperclipai/adapter-utils@2026.318.0': + resolution: {integrity: sha512-Zvl8j8K2zkb1ZvcjGiBY9otkEF7CkUHMDvMNnpqEIP65vRjMxUOcemoJrAa3gvEEOgd1RRvbMDdyNQ+fkrr5uA==} - '@paperclipai/db@2026.324.0-canary.7': - resolution: {integrity: sha512-yp9z+IQrF0u+sl3LZ3CLK5knVEUF3wWsnTcAZMU+gwFVAXwfmfncZeGF7qN/h8MwJYyo7o+8GYuFwrZ2IT/ECw==} + '@paperclipai/db@2026.318.0': + resolution: {integrity: sha512-/0bT2tDFokBZiShulo+pnpAewOW6/z3VRQ1xDZLFA/ab7VYf+jlSq9cn08uPqAdZ3DYtY+MlEM3RS9nrl3b2eQ==} - '@paperclipai/plugin-sdk@2026.324.0-canary.7': - resolution: {integrity: sha512-ojy1upw92ZOcMbD3wjEt+mKwpKef2ec0LyePGM78e/APJqK7iZEyRVQkqk4dxqdFnpDtkg+3PPPuS7A9kdbZdQ==} + '@paperclipai/plugin-sdk@2026.318.0': + resolution: {integrity: sha512-bqRDdTXKZjh+DXS9f1R9YdRtTyBhewbxD1ENwJcz88PDszGg7V/1/pYjs2t0xJhG8QU9LJ8LTYagLOw7jpF4Og==} hasBin: true peerDependencies: react: '>=18' @@ -672,11 +532,11 @@ packages: react: optional: true - '@paperclipai/server@2026.324.0-canary.7': - resolution: {integrity: sha512-G4greRF0hyEWyPKp9iWut0zKRKoUDI3UmxmJiM41eix1gJYpOsxawLQ9RXDS8lOY0gb2qW76FIfJwSfXErX9ww==} + '@paperclipai/server@2026.318.0': + resolution: {integrity: sha512-X5n90BYyWLTIVb9DboutDv6G8xXXEQuyomuWz529yYqJ79FemSXAKGiYs6PMFw5eOuED+iZ4Q0tk9OB2QtlzxQ==} - '@paperclipai/shared@2026.324.0-canary.7': - resolution: {integrity: sha512-7kCfpUxfYj5DX947FablVHb0lJWKDWLd6ujTFK+REGBkOmRwyjWYb8F3AJynonZD1ChupYE7jrCOyqecDcpEXA==} + '@paperclipai/shared@2026.318.0': + resolution: {integrity: sha512-7ZtZN+Z0dpwVtusJ8X0R+xntlHOLYgWO3HAHnAGIXnrPcoRm6hK0l52AuDa81g82YpfpgMpCNUU7eJw3K3RUQA==} '@pinojs/redact@0.4.0': resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==} @@ -1120,10 +980,6 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} - detect-libc@2.1.2: - resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} - engines: {node: '>=8'} - detect-port@2.1.0: resolution: {integrity: sha512-epZuWb/6Q62L+nDHJc/hQAqf8pylsqgk3BpZXVBx1CDnr3nkrVNn73Uu1rXcFzkNcc+hkP3whuOg7JZYaQB65Q==} engines: {node: '>= 16.0.0'} @@ -1501,8 +1357,8 @@ packages: resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} engines: {node: '>=20'} - paperclipai@2026.324.0-canary.7: - resolution: {integrity: sha512-lpDuqrTYHKM3L9ChfEtXcA0ZhvEBEU3W8QVufZb9v0/r1lhVmqRiyxX+A2o/V3ekNfEsxCbgePYieWZPCNhvLA==} + paperclipai@2026.318.0: + resolution: {integrity: sha512-AVaAGgNZB7rEbTXeUFQ5uonx0rWqUvUm5epob1DcJDczPfy8MFIE2KKs0mOkMUcaE5g0sGPpfZE1CAPadIlGCQ==} engines: {node: '>=20'} hasBin: true @@ -1677,11 +1533,6 @@ packages: secure-json-parse@4.1.0: resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==} - semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} - engines: {node: '>=10'} - hasBin: true - send@1.2.1: resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} engines: {node: '>= 18'} @@ -1696,10 +1547,6 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - sharp@0.34.5: - resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} @@ -2417,11 +2264,6 @@ snapshots: '@embedded-postgres/windows-x64@18.1.0-beta.16': optional: true - '@emnapi/runtime@1.9.1': - dependencies: - tslib: 2.8.1 - optional: true - '@esbuild/aix-ppc64@0.27.4': optional: true @@ -2504,152 +2346,56 @@ snapshots: optionalDependencies: '@noble/hashes': 2.0.1 - '@img/colour@1.1.0': {} - - '@img/sharp-darwin-arm64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.4 - optional: true - - '@img/sharp-darwin-x64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.4 - optional: true - - '@img/sharp-libvips-darwin-arm64@1.2.4': - optional: true - - '@img/sharp-libvips-darwin-x64@1.2.4': - optional: true - - '@img/sharp-libvips-linux-arm64@1.2.4': - optional: true - - '@img/sharp-libvips-linux-arm@1.2.4': - optional: true - - '@img/sharp-libvips-linux-ppc64@1.2.4': - optional: true - - '@img/sharp-libvips-linux-riscv64@1.2.4': - optional: true - - '@img/sharp-libvips-linux-s390x@1.2.4': - optional: true - - '@img/sharp-libvips-linux-x64@1.2.4': - optional: true - - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': - optional: true - - '@img/sharp-libvips-linuxmusl-x64@1.2.4': - optional: true - - '@img/sharp-linux-arm64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.4 - optional: true - - '@img/sharp-linux-arm@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.4 - optional: true - - '@img/sharp-linux-ppc64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.4 - optional: true - - '@img/sharp-linux-riscv64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-riscv64': 1.2.4 - optional: true - - '@img/sharp-linux-s390x@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.4 - optional: true - - '@img/sharp-linux-x64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.4 - optional: true - - '@img/sharp-linuxmusl-arm64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 - optional: true - - '@img/sharp-linuxmusl-x64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 - optional: true - - '@img/sharp-wasm32@0.34.5': - dependencies: - '@emnapi/runtime': 1.9.1 - optional: true - - '@img/sharp-win32-arm64@0.34.5': - optional: true - - '@img/sharp-win32-ia32@0.34.5': - optional: true - - '@img/sharp-win32-x64@0.34.5': - optional: true - '@noble/ciphers@2.1.1': {} '@noble/hashes@2.0.1': {} - '@paperclipai/adapter-claude-local@2026.324.0-canary.7': + '@paperclipai/adapter-claude-local@2026.318.0': dependencies: - '@paperclipai/adapter-utils': 2026.324.0-canary.7 + '@paperclipai/adapter-utils': 2026.318.0 picocolors: 1.1.1 - '@paperclipai/adapter-codex-local@2026.324.0-canary.7': + '@paperclipai/adapter-codex-local@2026.318.0': dependencies: - '@paperclipai/adapter-utils': 2026.324.0-canary.7 + '@paperclipai/adapter-utils': 2026.318.0 picocolors: 1.1.1 - '@paperclipai/adapter-cursor-local@2026.324.0-canary.7': + '@paperclipai/adapter-cursor-local@2026.318.0': dependencies: - '@paperclipai/adapter-utils': 2026.324.0-canary.7 + '@paperclipai/adapter-utils': 2026.318.0 picocolors: 1.1.1 - '@paperclipai/adapter-gemini-local@2026.324.0-canary.7': + '@paperclipai/adapter-gemini-local@2026.318.0': dependencies: - '@paperclipai/adapter-utils': 2026.324.0-canary.7 + '@paperclipai/adapter-utils': 2026.318.0 picocolors: 1.1.1 - '@paperclipai/adapter-openclaw-gateway@2026.324.0-canary.7': + '@paperclipai/adapter-openclaw-gateway@2026.318.0': dependencies: - '@paperclipai/adapter-utils': 2026.324.0-canary.7 + '@paperclipai/adapter-utils': 2026.318.0 picocolors: 1.1.1 ws: 8.20.0 transitivePeerDependencies: - bufferutil - utf-8-validate - '@paperclipai/adapter-opencode-local@2026.324.0-canary.7': + '@paperclipai/adapter-opencode-local@2026.318.0': dependencies: - '@paperclipai/adapter-utils': 2026.324.0-canary.7 + '@paperclipai/adapter-utils': 2026.318.0 picocolors: 1.1.1 - '@paperclipai/adapter-pi-local@2026.324.0-canary.7': + '@paperclipai/adapter-pi-local@2026.318.0': dependencies: - '@paperclipai/adapter-utils': 2026.324.0-canary.7 + '@paperclipai/adapter-utils': 2026.318.0 picocolors: 1.1.1 '@paperclipai/adapter-utils@0.3.1': {} - '@paperclipai/adapter-utils@2026.324.0-canary.7': {} + '@paperclipai/adapter-utils@2026.318.0': {} - '@paperclipai/db@2026.324.0-canary.7(kysely@0.28.14)(pg@8.20.0)': + '@paperclipai/db@2026.318.0(kysely@0.28.14)(pg@8.20.0)': dependencies: - '@paperclipai/shared': 2026.324.0-canary.7 + '@paperclipai/shared': 2026.318.0 drizzle-orm: 0.38.4(kysely@0.28.14)(pg@8.20.0)(postgres@3.4.8) embedded-postgres: 18.1.0-beta.16 postgres: 3.4.8 @@ -2684,25 +2430,25 @@ snapshots: - sql.js - sqlite3 - '@paperclipai/plugin-sdk@2026.324.0-canary.7': + '@paperclipai/plugin-sdk@2026.318.0': dependencies: - '@paperclipai/shared': 2026.324.0-canary.7 + '@paperclipai/shared': 2026.318.0 zod: 3.25.76 - '@paperclipai/server@2026.324.0-canary.7(@noble/hashes@2.0.1)(kysely@0.28.14)(pg@8.20.0)(postgres@3.4.8)': + '@paperclipai/server@2026.318.0(@noble/hashes@2.0.1)(kysely@0.28.14)(pg@8.20.0)(postgres@3.4.8)': dependencies: '@aws-sdk/client-s3': 3.1015.0 - '@paperclipai/adapter-claude-local': 2026.324.0-canary.7 - '@paperclipai/adapter-codex-local': 2026.324.0-canary.7 - '@paperclipai/adapter-cursor-local': 2026.324.0-canary.7 - '@paperclipai/adapter-gemini-local': 2026.324.0-canary.7 - '@paperclipai/adapter-openclaw-gateway': 2026.324.0-canary.7 - '@paperclipai/adapter-opencode-local': 2026.324.0-canary.7 - '@paperclipai/adapter-pi-local': 2026.324.0-canary.7 - '@paperclipai/adapter-utils': 2026.324.0-canary.7 - '@paperclipai/db': 2026.324.0-canary.7(kysely@0.28.14)(pg@8.20.0) - '@paperclipai/plugin-sdk': 2026.324.0-canary.7 - '@paperclipai/shared': 2026.324.0-canary.7 + '@paperclipai/adapter-claude-local': 2026.318.0 + '@paperclipai/adapter-codex-local': 2026.318.0 + '@paperclipai/adapter-cursor-local': 2026.318.0 + '@paperclipai/adapter-gemini-local': 2026.318.0 + '@paperclipai/adapter-openclaw-gateway': 2026.318.0 + '@paperclipai/adapter-opencode-local': 2026.318.0 + '@paperclipai/adapter-pi-local': 2026.318.0 + '@paperclipai/adapter-utils': 2026.318.0 + '@paperclipai/db': 2026.318.0(kysely@0.28.14)(pg@8.20.0) + '@paperclipai/plugin-sdk': 2026.318.0 + '@paperclipai/shared': 2026.318.0 ajv: 8.18.0 ajv-formats: 3.0.1(ajv@8.18.0) better-auth: 1.4.18(drizzle-orm@0.38.4(kysely@0.28.14)(pg@8.20.0)(postgres@3.4.8))(pg@8.20.0) @@ -2720,7 +2466,6 @@ snapshots: pino: 9.14.0 pino-http: 10.5.0 pino-pretty: 13.1.3 - sharp: 0.34.5 ws: 8.20.0 zod: 3.25.76 transitivePeerDependencies: @@ -2773,7 +2518,7 @@ snapshots: - vitest - vue - '@paperclipai/shared@2026.324.0-canary.7': + '@paperclipai/shared@2026.318.0': dependencies: zod: 3.25.76 @@ -3285,8 +3030,6 @@ snapshots: depd@2.0.0: {} - detect-libc@2.1.2: {} - detect-port@2.1.0: dependencies: address: 2.0.3 @@ -3633,10 +3376,10 @@ snapshots: powershell-utils: 0.1.0 wsl-utils: 0.3.1 - paperclipai@2026.324.0-canary.7(@noble/hashes@2.0.1)(kysely@0.28.14)(pg@8.20.0): + paperclipai@2026.318.0(@noble/hashes@2.0.1)(kysely@0.28.14)(pg@8.20.0): dependencies: '@clack/prompts': 0.10.1 - '@paperclipai/server': 2026.324.0-canary.7(@noble/hashes@2.0.1)(kysely@0.28.14)(pg@8.20.0)(postgres@3.4.8) + '@paperclipai/server': 2026.318.0(@noble/hashes@2.0.1)(kysely@0.28.14)(pg@8.20.0)(postgres@3.4.8) commander: 13.1.0 dotenv: 17.3.1 drizzle-orm: 0.38.4(kysely@0.28.14)(pg@8.20.0)(postgres@3.4.8) @@ -3871,8 +3614,6 @@ snapshots: secure-json-parse@4.1.0: {} - semver@7.7.4: {} - send@1.2.1: dependencies: debug: 4.4.3 @@ -3902,37 +3643,6 @@ snapshots: setprototypeof@1.2.0: {} - sharp@0.34.5: - dependencies: - '@img/colour': 1.1.0 - detect-libc: 2.1.2 - semver: 7.7.4 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.5 - '@img/sharp-darwin-x64': 0.34.5 - '@img/sharp-libvips-darwin-arm64': 1.2.4 - '@img/sharp-libvips-darwin-x64': 1.2.4 - '@img/sharp-libvips-linux-arm': 1.2.4 - '@img/sharp-libvips-linux-arm64': 1.2.4 - '@img/sharp-libvips-linux-ppc64': 1.2.4 - '@img/sharp-libvips-linux-riscv64': 1.2.4 - '@img/sharp-libvips-linux-s390x': 1.2.4 - '@img/sharp-libvips-linux-x64': 1.2.4 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 - '@img/sharp-linux-arm': 0.34.5 - '@img/sharp-linux-arm64': 0.34.5 - '@img/sharp-linux-ppc64': 0.34.5 - '@img/sharp-linux-riscv64': 0.34.5 - '@img/sharp-linux-s390x': 0.34.5 - '@img/sharp-linux-x64': 0.34.5 - '@img/sharp-linuxmusl-arm64': 0.34.5 - '@img/sharp-linuxmusl-x64': 0.34.5 - '@img/sharp-wasm32': 0.34.5 - '@img/sharp-win32-arm64': 0.34.5 - '@img/sharp-win32-ia32': 0.34.5 - '@img/sharp-win32-x64': 0.34.5 - side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 diff --git a/src/paperclip.test.ts b/src/paperclip.test.ts index e38f216..433e1cd 100644 --- a/src/paperclip.test.ts +++ b/src/paperclip.test.ts @@ -180,10 +180,10 @@ test("comparePaperclipVersions handles canary prereleases", () => { assert.equal(comparePaperclipVersions("2026.318.0", "2026.324.0-canary.0") < 0, true); }); -test("isPaperclipVersionSupported enforces the minimum canary gate", () => { - assert.equal(isPaperclipVersionSupported("2026.324.0-canary.0"), true); - assert.equal(isPaperclipVersionSupported("2026.324.0-canary.2"), true); - assert.equal(isPaperclipVersionSupported("2026.318.0"), false); +test("isPaperclipVersionSupported enforces the minimum stable gate", () => { + assert.equal(isPaperclipVersionSupported("2026.318.0"), true); + assert.equal(isPaperclipVersionSupported("2026.325.0-canary.1"), true); + assert.equal(isPaperclipVersionSupported("2026.317.9"), false); }); test("resolveLocalPaperclipConnection uses a discovered project config when present", () => { diff --git a/src/paperclip.ts b/src/paperclip.ts index 6b1dbc6..ea7ab9b 100644 --- a/src/paperclip.ts +++ b/src/paperclip.ts @@ -43,7 +43,7 @@ export interface PaperclipBootstrapResult { } export const DEFAULT_PAPERCLIP_API_BASE = "http://127.0.0.1:3100"; -export const MINIMUM_PAPERCLIP_VERSION = "2026.324.0-canary.0"; +export const MINIMUM_PAPERCLIP_VERSION = "2026.318.0"; export const DEFAULT_PAPERCLIP_READY_TIMEOUT_MS = 120_000; const require = createRequire(import.meta.url); @@ -301,7 +301,7 @@ export async function ensurePaperclipVersion(): Promise { if (!isPaperclipVersionSupported(version)) { throw new Error( `companies.sh requires paperclipai ${MINIMUM_PAPERCLIP_VERSION} or newer. Found ${version}. ` + - "Install a newer paperclipai canary or point PAPERCLIPAI_CMD at a newer build.", + "Install a newer stable paperclipai release or point PAPERCLIPAI_CMD at a newer build.", ); } return version;