Commit Graph
5124 Commits
Author SHA1 Message Date
DottaandPaperclip 4e3cf6b07e Integrate immutable Boat instruction snapshots
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* commit '469da8b2c2':
  fix(boat): stage immutable context per bootstrap attempt
  Document provider cache computer-owner capability requirement
2026-10-10 11:57:19 -05:00
DottaandPaperclip 73061fad60 Document persistent Boat runtime asset reuse and snapshot limits
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:57:19 -05:00
DottaandPaperclip 469da8b2c2 fix(boat): stage immutable context per bootstrap attempt
Bind generated instructions and skills to fresh attempt-owned snapshot paths, retaining old immutable snapshots without touching persistent user files or provider HOME. Record possible process dispatch only at the actual launch RPC boundary so preparation failures can retire their exact owner safely.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:56:53 -05:00
DottaandPaperclip 7f646066e8 Document provider cache computer-owner capability requirement
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:52:47 -05:00
DottaandPaperclip a8e7bc576d Integrate immutable Boat provider pack cache
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:51:58 -05:00
DottaandPaperclip 173bcbf4fb Document bounded graceful retirement of Boat runners
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:51:58 -05:00
DottaandPaperclip 3233b079cd test(boat): retain cache acceptance coverage in stacked PR
Keep the immutable cache suite and Boat secret configuration acceptance assertion in the combined feature PR while preserving the standalone core review size.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:50:19 -05:00
DottaandPaperclip 5b00bdb95e Reuse immutable provider packs across computer task sessions
Verify shared cache hits before archive preparation. Publish privately staged, verified packs without replacing shared bytes and fence retry uploads with exact ownership receipts.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:50:02 -05:00
DottaandPaperclip 1e5cf7cb42 Integrate graceful Boat idle retirement and recovery
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:46:53 -05:00
DottaandPaperclip 719aa4eee6 Keep attached Boat identity read-only in environment settings
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:46:43 -05:00
DottaandPaperclip 94ddd82b9f fix(boat): settle runner authority before idle retirement
Reserve exact computer generations for graceful suspension, keep provider checkpoints on their persistent remote authority, and fence failed prelaunch attempts before retry. Recover previously retired quiescent Codex checkpoints only with exact ownership and unchanged-byte evidence.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:45:58 -05:00
DottaandPaperclip 8096727117 test(boat): keep remote acceptance extensions in stacked PR
Preserve the two existing additive runtime acceptance suites in the stacked feature PR while keeping browser synchronization fixes in the independently checked core branch.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:44:36 -05:00
DottaandPaperclip da30252a5e Compare project plans with the first started execution
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:44:36 -05:00
DottaandPaperclip 1c705e0991 Wait for inbox retry response before leaving the page
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:44:36 -05:00
DottaandPaperclip 0a440b9333 Merge remote-tracking branch 'origin/master' into codex/boat-environment-core
* origin/master:
  fix(pi-local): avoid embedding model catalogue in errors (#13628)
  fix(opencode-local): run in the realized workspace (#11438)
  fix(ui): align chat connection and recovery cards (#15771)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:44:36 -05:00
DottaandPaperclip 00f92a6d05 fix(computers): reserve bounded graceful runner retirement
Fence admission and ordinary commands at warm expiry, reserve exact-generation process control for at most thirty seconds of shutdown, and always retire the owned slice after graceful close or timeout.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:44:06 -05:00
DottaandPaperclip 7ec6da3e15 Record native Claude cold and warm Boat proof
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:41:42 -05:00
DottaandPaperclip 7b2e0084bd Name Boat consistently in environment selectors
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:39:15 -05:00
DottaandPaperclip d361a06dc3 Compare project plans with the first started execution
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:32:26 -05:00
DottaandPaperclip b6f8c44f9f Reclaim abandoned computer home uploads from durable receipts
Persist exact upload ownership before staging, renew a five-minute inactivity lease per chunk, and reclaim verified expired uploads on seed or home admission. Preserve active uploads and unrelated directories, and fence delayed writes and aborts after replacement.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:31:56 -05:00
DottaandPaperclip be0d04df4e Integrate bounded Boat SSH admission with cleanup capacity
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:24:05 -05:00
DottaandPaperclip cd1bfc1aa0 Reserve Boat SSH capacity for lifecycle and process control
Bound each physical Boat to eight SSH operations with six ordinary slots and four bulk transfers. Preserve command deadlines while queued and always release admission after transport completion or failure.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:23:47 -05:00
DottaandPaperclip 4cf77817b7 Wait for inbox retry response before leaving the page
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:22:00 -05:00
DottaandPaperclip 064f7adbcf Record native desktop keyboard and staging attachment evidence
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:18:56 -05:00
DottaandPaperclip d9d308aead Merge commit 'db3a9aecf4' into codex/boat-environment
* commit 'db3a9aecf4':
  fix(boat): resolve prior workspace authority to recorded lease
  Allow bounded Boat connection probes before saving an agent

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:17:16 -05:00
DottaandPaperclip db3a9aecf4 fix(boat): resolve prior workspace authority to recorded lease
Preserve historical PRP workspace coordinates and require the recorded lease run plus exact retired owner before rotating authority.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:16:40 -05:00
DottaandPaperclip 8242d89916 Allow bounded Boat connection probes before saving an agent
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:16:40 -05:00
DottaandPaperclip e4294560ed Describe Boat persistence and bounded cold startup
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:09:57 -05:00
DottaandPaperclip 025a0b8ae5 Integrate bounded cold provider bootstrap
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:09:21 -05:00
DottaandPaperclip 26d404cbfe Move bootstrap and instruction acceptance coverage to stacked PR
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:08:49 -05:00
DottaandPaperclip ab5bb8552a fix(boat): bound provider-pack cold bootstrap separately
Allow thirty minutes for computer ACPX pack staging without extending turn, recovery, finalization or warm-idle deadlines.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:06:31 -05:00
DottaandPaperclip 2f0f08c939 Integrate bounded home seeding and desktop input discovery
Preserve persistent home acceptance coverage in the stacked PR.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:03:25 -05:00
DottaandPaperclip cebfa8b09f Bound initial computer home uploads and exclude runtime state
Stream initial personal files through bounded chunks into private staging and atomically publish without replacing an existing home. Keep the home-level runtime directory out of instruction enumeration and seeding while preserving nested user content.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:00:36 -05:00
DottaandPaperclip 421f7f0600 Resolve Boat input readiness in the desktop user context
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:59:29 -05:00
DottaandPaperclip 18a1e89a08 Integrate scoped legacy runtime files and retirement recovery
Keep the adapter ownership acceptance tests in the stacked PR.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:56:32 -05:00
DottaandPaperclip 82880b10ac Keep legacy runtime acceptance coverage in stacked PR
The combined feature branch retains the complete execution-target tests; this runtime branch preserves the production fix with its existing baseline suite.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:54:42 -05:00
DottaandPaperclip e90fbf20a1 fix(adapters): isolate computer legacy runtime assets by owner
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:54:14 -05:00
DottaandPaperclip d6363b41d4 fix(runtime): verify retired computer owners after warm expiry
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:53:10 -05:00
DottaandPaperclip 564e65ab1a fix(runtime): verify retired computer owners after warm expiry
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:52:52 -05:00
DottaandPaperclip 38fee2e4f1 Reconcile superseded Boat stop operations
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* commit 'ff26b3af9':
  Reconcile superseded Boat stop operations
2026-10-10 10:51:43 -05:00
DottaandPaperclip ff26b3af9b Reconcile superseded Boat stop operations
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:50:20 -05:00
DottaandPaperclip 41cb4b8d95 Integrate Boat desktop readiness and exact retirement proof
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* commit '03962e718':
  Expose exact read-only computer retirement proof
  Restore Boat desktop input before computer access
2026-10-10 10:50:20 -05:00
DottaandPaperclip e8dd4ed574 Record real Boat hot reload and idle lifecycle evidence
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:50:20 -05:00
DottaandPaperclip 03962e7189 Expose exact read-only computer retirement proof
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:48:33 -05:00
lorenzozane 0e37a385e6 fix(pi-local): avoid embedding model catalogue in errors (#13628)
<!-- Write all pull request text in Simplified Technical English
(ASD-STE100): short sentences, one instruction per sentence, simple
approved vocabulary, and the active voice. -->

## Thinking Path

> - Paperclip is the open source app people use to manage AI agents for
work
> - The pi-local adapter discovers and validates models before it starts
a local Pi process
> - An unavailable-model error included model IDs from the discovered
catalogue
> - Repeating those IDs made persisted and rendered failures noisy and
exposed substitute choices
> - This pull request keeps the requested model, reports the available
count, and points to the existing lookup command
> - The benefit is a concise error without changing model discovery or
matching

## Linked Issues or Issue Description

Fixes #13612

## What Changed

- Replace model catalogue interpolation in unavailable-model errors with
the requested model, normalized model count, and `pi --list-models`.
- Add a regression test with 13 discovered models and exact
error-message matching.

## Verification

- `pnpm exec vitest run
packages/adapters/pi-local/src/server/models.test.ts`
- `pnpm exec vitest run packages/adapters/pi-local/src/server/*.test.ts`
- `pnpm --filter @paperclipai/adapter-pi-local typecheck`
- `git diff --check`

All listed checks pass locally. The test suite uses a temporary Pi
executable and verifies that model IDs are not appended to the error.

## Risks

Low risk. Only unavailable-model error wording changes. Model discovery,
matching, valid model execution, and failure handling remain unchanged.
Full repository CI was not run locally because the host uses Node
22.22.1 and the repository declares Node >=24.11.0.

> For core feature work, check [`ROADMAP.md`](ROADMAP.md) first and
discuss it in `#dev` before opening the PR. Feature PRs that overlap
with planned core work may need to be redirected — check the roadmap
first. See `CONTRIBUTING.md`.

## Model Used

OpenAI GPT-5.6 Luna (`gpt-5.6-luna`); tool-assisted code execution. The
context window size is not exposed 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)
- [ ] 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 #13612)
- [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
- [ ] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [ ] All Paperclip CI gates are green
- [ ] Greptile is 5/5 with no open P2s, recommendations, or follow-ups
- [x] I will address all Greptile and reviewer comments before
requesting merge
2026-10-10 10:48:00 -05:00
DottaandPaperclip 3308a116d4 Restore Boat desktop input before computer access
Probe IBus without replacing a healthy daemon. Rebind a failed restored socket to the same user private runtime directory before viewer access or Cua MCP startup; headless execution stays independent.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:47:31 -05:00
Kilianandcommitperclip-bot 28e134873e fix(opencode-local): run in the realized workspace (#11438)
## Thinking Path

> - Paperclip is the open source app people use to manage AI agents for
work
> - Paperclip adapters start each agent in its selected workspace
> - Paperclip can realize a different workspace path for local and
remote runs
> - The OpenCode CLI prefers its inherited `PWD` when no `--dir` option
is present
> - The process `cwd` option does not update the inherited `PWD` value
> - This pull request passes the realized workspace to OpenCode with
`--dir`
> - The benefit is that OpenCode sessions and tools use the workspace
that Paperclip selected

## Linked Issues or Issue Description

No matching issue exists.

Refs #8287. That earlier pull request describes the realized remote
workspace path. It does not make the OpenCode CLI use that path.

I searched open and closed issues and pull requests for `opencode
--dir`, `opencode cwd PWD`, and `opencode workspace directory`. I found
no duplicate.

**What happened?**

Paperclip gives the OpenCode process the correct operating system `cwd`.
However, the adapter does not pass OpenCode's `--dir` option. OpenCode
uses `process.env.PWD` before `process.cwd()` when `--dir` is absent. A
server `PWD` that differs from the realized workspace can therefore
place the OpenCode session and its tools in the wrong directory.

**Expected behavior**

OpenCode must use the workspace that Paperclip realized for the run. An
explicit `--dir` in `extraArgs` must remain valid and must not be
duplicated.

**Steps to reproduce**

1. Start the Paperclip server from directory A.
2. Configure an OpenCode agent with directory B, or realize directory B
on a remote execution target.
3. Start a run without a manual `--dir` value in `extraArgs`.
4. Inspect the OpenCode session directory or run a directory-sensitive
tool.
5. Before this change, OpenCode can use directory A from the inherited
`PWD`.
6. After this change, OpenCode receives `--dir B`.

**Paperclip version or commit**

`b38d6ddb811b3ff3145ff5df60174eb9e7313fe6`

**Deployment mode**

Self-hosted server. The same adapter path is used in local development
and remote execution.

**Installation method**

Built from source.

**Agent adapter(s) involved**

OpenCode.

**Database mode**

Not database-related.

**Additional context**

OpenCode v1.17.13 defines `--dir` and uses the inherited `PWD` as its
fallback root. See the [OpenCode run command
source](https://github.com/anomalyco/opencode/blob/10c894bdeef3618f5666fb506ef7f9491bb964d8/packages/opencode/src/cli/cmd/run.ts#L333-L339).

## What Changed

- Add the realized execution workspace as `--dir` for OpenCode runs.
- Preserve an explicit `--dir` or `--dir=...` value from `extraArgs`.
- Stop option detection at the first `--` terminator.
- Extend the remote execution tests for realized, explicit, and
post-terminator directory arguments.

## Verification

- `pnpm exec vitest run packages/adapters/opencode-local/src` passed: 7
files and 40 tests.
- `pnpm --filter @paperclipai/adapter-opencode-local typecheck` passed.
- `pnpm --filter @paperclipai/adapter-opencode-local build` passed.
- `pnpm -r typecheck` passed for all 31 selected workspace projects.
- `pnpm build` passed for all selected workspace projects.
- `git diff --check` passed.

I also ran `pnpm test:run`. It completed with 334 test files passing and
2 test files failing. It reported 3,790 passing tests and 4 skipped
tests. The two failures are in `issue-monitor-scheduler.test.ts` and
`workspace-runtime.test.ts`. Each failure reproduces on the unchanged
base commit after this pull request is removed. Neither test imports or
covers the OpenCode adapter.

## Risks

- The behavior change is limited to OpenCode run arguments.
- A custom old OpenCode binary that does not support `--dir` will reject
the option. The current official OpenCode v1.17.13 CLI supports it.
- An explicit operator `--dir` remains authoritative. The adapter does
not add a duplicate option because OpenCode's parser converts repeated
string options to an array.
- This change does not modify schemas, migrations, APIs, telemetry, or
user data.

> For core feature work, check [`ROADMAP.md`](ROADMAP.md) first and
discuss it in `#dev` before opening the PR. Feature PRs that overlap
with planned core work may need to be redirected — check the roadmap
first. See `CONTRIBUTING.md`.

## Model Used

OpenAI Codex based on GPT-5. The runtime did not expose a more specific
model ID or context-window size. The agent used high-depth reasoning,
repository access, shell execution, and GitHub tools.

## 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
- [ ] 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: commitperclip-bot <305974387+commitperclip-bot@users.noreply.github.com>
2026-10-10 10:46:21 -05:00
DottaandPaperclip 6f6ad90e0f Show failed computer lookup with a retry action
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:43:56 -05:00
DottaandPaperclip 4896a4304c Merge upstream workspace preparation into Boat qualification
Preserve the Boat route acceptance suite in the stacked UI PR.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:42:54 -05:00
DottaandPaperclip 6e4bd77b58 Merge upstream workspace preparation extraction into Boat runtime
Preserve Boat workspace and credential policies in prepareHeartbeatWorkspace. Move computer route acceptance coverage to the stacked UI PR without dropping coverage from the full feature tree.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:39:19 -05:00