mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-11-08 21:01:54 +01:00
## Thinking Path > - Paperclip is the open source app people use to manage AI agents for work. > - Sandbox provider plugins let those agents run in remote environments. > - The boxd provider exists, but its release entry excludes it from CI publishing. > - npm now has the `@paperclipai/plugin-boxd@0.0.0` bootstrap placeholder. > - This pull request enables CI publishing and documents npm installation. > - A pre-existing OpenCode fixture blocked CI because it qualified a group-writable host Node binary. > - This also gives that test its own Linux Node copy with strict permissions. > - Operators can install a real release after CI publishes it. ## Linked Issues or Issue Description Related implementation: https://github.com/paperclipai/paperclip/pull/17284. No matching public issue or duplicate release-enrollment PR was found. **What existing behavior does this improve?** Publishing and installing the existing boxd sandbox provider. **Subsystem affected** `packages/plugins` and the npm release manifest. **Current behavior** `publishFromCi` is false. npm has only the `0.0.0` placeholder. The README says the package is not published and requires a local-path install. **Proposed behavior** Include boxd in CI releases. Document stable installation, explicit published versions, and the placeholder limit. **Reason and benefit** Operators can install the provider through the existing npm plugin installer after a real release ships. **Breaking changes** None. This changes release enrollment and documentation only. **Additional context** This follows the existing plugin and sandbox roadmap items. It adds no new runtime capability. ## What Changed - Set `publishFromCi: true` for `@paperclipai/plugin-boxd` in the release manifest. - Replace the README's unpublished-package notice with npm installation guidance. - Explain that the `0.0.0` placeholder has no plugin functionality and that `latest` can point to it until the first stable release. - Keep the local development instructions available. - Fix the existing ingress-retry test to use an owned Linux Node copy and explicit executable permissions. This follows the existing OpenCode transport fixture. It does not change production launch checks. ## Verification - Passed: `node --test scripts/release-package-map.test.mjs scripts/check-release-package-bootstrap.test.mjs scripts/bootstrap-npm-package.test.mjs` (31 tests). - Passed: `node scripts/release-package-map.mjs check`. - Passed: `PAPERCLIP_RELEASE_BOOTSTRAP_BASE_SHA=origin/master node scripts/check-release-package-bootstrap.mjs scripts/release-package-manifest.json packages/plugins/sandbox-providers/boxd/README.md`. - Passed: `git diff --check`. - Confirmed that npm resolves `@paperclipai/plugin-boxd` to version `0.0.0`. - Full workspace typecheck, test suite, and build were not run locally. CI checks remain required before merge. - Initial CI failure: [native Runner job](https://github.com/paperclipai/paperclip/actions/runs/41889969053/job/126785636239), OpenCode ingress retry, `qualified OpenCode proxy command must not be group- or world-writable`. The failing fixture is byte-identical to the base commit `3a2249dd576`. It passed `process.execPath` to qualification, while other OpenCode tests already use a private Linux Node copy. - Local focused run: `pnpm exec vitest run server/src/services/native-runtime/native-ingress-bootstrap-retry.integration.test.ts` built the real Rust Runner and passed the Codex case. The OpenCode case stopped at `runner_remote_provider_artifact_incompatible: OpenCode proxy path belongs to the controller host` on macOS (`/Users/...`). This does not exercise the new Linux-only copy. - An unchanged-base OpenCode comparison was attempted with `-t "reacquires opencode ingress"`, but PostgreSQL setup failed with `ENOSPC` before the case ran. The local baseline comparison is therefore inconclusive. Task-owned Rust build outputs were cleaned to recover disk space. - At this stage Linux verification was pending. The successful final run is recorded below. - No new tests were needed. The existing release-tool tests cover manifest enrollment, dependency ordering, and bootstrap checks. - Current-head CI interruption: [workspaces-a shard 1/2](https://github.com/paperclipai/paperclip/actions/runs/41893808561/job/126799012853) was cancelled after the runner received a shutdown signal. The log shows no assertion failure. The job rerun request was rejected with HTTP 403 because the workflow was still running. The subsequent fixture correction starts a new full CI run and supersedes that pending rerun. - CI at `7fffa315`: [native Runner job](https://github.com/paperclipai/paperclip/actions/runs/41893808561/job/126799011711) passed executable permission checks, then failed because Node tried to resolve `/memfd:paperclip-verified-launch (deleted)`. The private executable was named `opencode-node`, which bypassed Runner's Node interpreter recognition. The fixture now names its copy `node`, matching the existing transport fixture and selecting the CommonJS descriptor loader. - Passed a local smoke test of the production CommonJS descriptor loader using an open, unlinked script file. This is macOS evidence only; the successful final Linux run below provides the complete ingress retry evidence. - Final verification on `bcacac542aa0a1b641b26c099c1e9fc4a1653ec4`: all 54 reported checks passed; three unrelated checks were skipped. [Native Runner integration job](https://github.com/paperclipai/paperclip/actions/runs/41895787712/job/126805844773) passed, including the OpenCode ingress retry regression. The fresh full run also passed the workspace shard that was interrupted on the previous attempt. Greptile reports 5/5 for this exact head with no unresolved review threads. Earlier failures and local verification limits remain recorded above. ## Risks - The maintainer confirmed that npm trusted publishing is configured for this package. The first real CI publish will verify OIDC authentication. - Merging enables publication in the next successful canary run. An installation that uses `latest` can still resolve to the placeholder until the first stable release includes this change. ## Model Used OpenAI Codex, exact model ID `gpt-6.1-sol`, with xhigh reasoning effort, repository tool use, and shell execution. The runtime does not expose the context window size. ## 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 --------- Co-authored-by: Paperclip <noreply@paperclip.ing>
178 lines
4.2 KiB
JSON
178 lines
4.2 KiB
JSON
[
|
|
{
|
|
"dir": "packages/adapter-utils",
|
|
"name": "@paperclipai/adapter-utils",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/adapters/claude-local",
|
|
"name": "@paperclipai/adapter-claude-local",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/adapters/codex-local",
|
|
"name": "@paperclipai/adapter-codex-local",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/adapters/cursor-cloud",
|
|
"name": "@paperclipai/adapter-cursor-cloud",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/adapters/cursor-local",
|
|
"name": "@paperclipai/adapter-cursor-local",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/adapters/gemini-local",
|
|
"name": "@paperclipai/adapter-gemini-local",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/adapters/grok-local",
|
|
"name": "@paperclipai/adapter-grok-local",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/adapters/hermes",
|
|
"name": "@paperclipai/hermes-paperclip-adapter",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/adapters/hermes-gateway",
|
|
"name": "@paperclipai/adapter-hermes-gateway",
|
|
"publishFromCi": false
|
|
},
|
|
{
|
|
"dir": "packages/adapters/kimi-local",
|
|
"name": "@paperclipai/adapter-kimi-local",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/adapters/opencode-local",
|
|
"name": "@paperclipai/adapter-opencode-local",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/adapters/pi-local",
|
|
"name": "@paperclipai/adapter-pi-local",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/adapters/openclaw-gateway",
|
|
"name": "@paperclipai/adapter-openclaw-gateway",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/shared",
|
|
"name": "@paperclipai/shared",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/skills-catalog",
|
|
"name": "@paperclipai/skills-catalog",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/teams-catalog",
|
|
"name": "@paperclipai/teams-catalog",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/db",
|
|
"name": "@paperclipai/db",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/plugins/sdk",
|
|
"name": "@paperclipai/plugin-sdk",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/plugins/plugin-workspace-diff",
|
|
"name": "@paperclipai/plugin-workspace-diff",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "server",
|
|
"name": "@paperclipai/server",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "cli",
|
|
"name": "paperclipai",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/mcp-server",
|
|
"name": "@paperclipai/mcp-server",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/google-sheets-mcp-server",
|
|
"name": "@paperclipai/google-sheets-mcp-server",
|
|
"publishFromCi": false
|
|
},
|
|
{
|
|
"dir": "packages/kv-demo-mcp-server",
|
|
"name": "@paperclipai/kv-demo-mcp-server",
|
|
"publishFromCi": false
|
|
},
|
|
{
|
|
"dir": "packages/plugins/create-paperclip-plugin",
|
|
"name": "@paperclipai/create-paperclip-plugin",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/plugins/sandbox-providers/boxd",
|
|
"name": "@paperclipai/plugin-boxd",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/plugins/sandbox-providers/cloudflare",
|
|
"name": "@paperclipai/plugin-cloudflare-sandbox",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/plugins/sandbox-providers/createos",
|
|
"name": "@paperclipai/plugin-createos",
|
|
"publishFromCi": false
|
|
},
|
|
{
|
|
"dir": "packages/plugins/sandbox-providers/daytona",
|
|
"name": "@paperclipai/plugin-daytona",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/plugins/sandbox-providers/exe-dev",
|
|
"name": "@paperclipai/plugin-exe-dev",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/plugins/sandbox-providers/e2b",
|
|
"name": "@paperclipai/plugin-e2b",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/plugins/sandbox-providers/modal",
|
|
"name": "@paperclipai/plugin-modal",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/plugins/sandbox-providers/kubernetes",
|
|
"name": "@paperclipai/plugin-kubernetes",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "packages/plugins/sandbox-providers/novita",
|
|
"name": "@paperclipai/plugin-novita-sandbox",
|
|
"publishFromCi": true
|
|
},
|
|
{
|
|
"dir": "ui",
|
|
"name": "@paperclipai/ui",
|
|
"publishFromCi": true
|
|
}
|
|
]
|