Commit Graph
58 Commits
Author SHA1 Message Date
DottaandPaperclip 62e642590f Bind Cursor instructions to native rules and gate every ACP connection
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 11:24:48 -05:00
DottaandPaperclip 1f8316294e Prove Cursor SDK interactions and retain profile v3 build evidence
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 09:54:38 -05:00
DottaandPaperclip 526081b9d6 Version patched Cursor isolation as profile v3
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 09:46:57 -05:00
Dotta 703ad69de5 Merge branch 'codex/runner-acp-production' into codex/runner-cursor-acp
* codex/runner-acp-production:
  Bind ACP persistent agent files to registered runtime context
2026-09-29 09:45:05 -05:00
DottaandPaperclip 46b7598889 Bind ACP persistent agent files to registered runtime context
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 09:44:36 -05:00
DottaandPaperclip f49907f42c Isolate pinned Cursor ACP configuration and preserve typed failures
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 09:42:28 -05:00
DottaandPaperclip 3d79b2b1f3 Integrate final rich ACP foundation for production qualification
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* codex/runner-rich-acp:
  fix(runner): stop settlement publication after persistence failure
  feat(agents): persist agent files across tasks without revision history (#14420)
  test(runner): synchronize recovered ACP fixture cleanup
  fix(runner): persist ACP response settlement across crashes
  feat(storage): add plain directory sync with conflict preflight (#14416)
  fix: retry sandbox ACP input delivery after gateway failures (#14485)
  fix: retain project defaults in partial workspace overrides (#14502)
  test: control Telegram subscription retry timing (#14501)
  fix: retain diagnostic reasons for native runner failures (#14481)
  fix: prevent run identity locks from blocking audit checks (#14478)
  fix: preserve company context across browser hot reload (#14482)
  feat(ui): improve task composer controls and pending input (#14322)
  Improve task artifacts with rich cards and editable stories (#14469)
2026-09-29 09:33:13 -05:00
DottaandPaperclip 24beb00575 feat(runner): add rich ACP transport and durable interaction foundation (#14430)
Add shared rich ACP transport, durable questions and permissions, verified provider packaging, and bounded activity and plan presentation. Keep Cursor, Copilot, and Pi pending their separate provider qualification.

Persist interaction settlement before publication, fence failed writes until fresh recovery, and preserve owned-process cleanup. Incorporate reviewed mainline integration with extended harness coverage.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 08:56:21 -05:00
DottaandPaperclip 8747917668 Merge master agent-file persistence into rich ACP foundation
Preserve the extended harness and instruction-persistence suites, generated
contracts, and cleanup/collection ordering. Record the unqualified ACPX
agent-directory capability without broadening environment or path policy.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 08:36:37 -05:00
DottaandPaperclip 9b3c53923c fix(runner): stop settlement publication after persistence failure
Publish staged ACP resolutions only after their atomic state write succeeds. Latch persistence failures across commands, polls, retained event drains and acknowledgements; stop owned processes without overwriting uncertain snapshots. Cover failed rename and post-rename writes, mixed requests, acknowledgement failure and indeterminate command replay.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 08:27:09 -05:00
DottaandPaperclip a99a4eb1fc Merge storage sync changes and preserve runner test diagnostics
Resolve the transport fixture overlap by retaining independent cleanup and bounded failure reporting, together with the upstream explicit executable permissions.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 08:05:35 -05:00
DottaandPaperclip 060099f7b8 fix(runner): persist ACP response settlement across crashes
Record successful response delivery in the durable provider outbox before retiring the pending request. Preserve settlement across restart without replaying provider responses. Disable automatic issue lookups in provider decision documents.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 08:03:38 -05:00
Dotta 2eeedcd7f3 Merge branch 'codex/runner-rich-acp' into codex/runner-cursor-acp
* codex/runner-rich-acp:
  docs(runner): report rich ACP capabilities and paid qualification
2026-09-28 17:42:43 -05:00
Dotta d97ef47a81 docs(runner): report rich ACP capabilities and paid qualification 2026-09-28 17:42:39 -05:00
DottaandPaperclip bdbbd4cbfc Document Cursor prompt-image implementation gap
Distinguish the native image capability advertisement from the runner's text-only turn contract and assign the missing attachment conversion an explicit P1 follow-up.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 16:55:53 -05:00
DottaandPaperclip f676c9d2c8 docs(runner): record offline Cursor Linux image verification
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 16:06:05 -05:00
DottaandPaperclip 72f8887709 docs(runner): record Cursor native EOF lifecycle limit
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:57:45 -05:00
DottaandPaperclip e450bc4346 test(runner): retain Cursor native denial and billing evidence
Preserve the original grader failure and assess the same captured turn through exact tool-call correlation without another prompt.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:55:37 -05:00
DottaandPaperclip 829686b0c8 Record successful serialized Cursor question restart recovery
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:46:51 -05:00
DottaandPaperclip d35b83074a Retain native Cursor question availability qualification failure
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:41:32 -05:00
DottaandPaperclip d9321659d4 Refresh Cursor packaged launch proof after shared integration
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:19:19 -05:00
DottaandPaperclip 25fb1b5b31 Pin final Cursor lock graph and reconcile bounded product usage
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:17:33 -05:00
DottaandPaperclip 78360fa55a Record Cursor plan approval and retained restart infrastructure failure
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:16:01 -05:00
DottaandPaperclip 9d4f9fbe8a Retain merged Cursor pack and daemon qualification provenance
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:16:01 -05:00
DottaandPaperclip 46bf05c67f Retain Cursor file validation and artifact qualification evidence
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:16:01 -05:00
DottaandPaperclip b6b4ee2055 Retain Cursor local Product completion and billing evidence
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:16:01 -05:00
DottaandPaperclip 93bdd456b5 Retain passing authenticated Cursor protocol qualification evidence
Record exact source and fresh daemon identities, successful native MCP task-context calls, included dashboard usage with unknown native receipt, and the earlier denied attempt without an automatic retry.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:16:00 -05:00
DottaandPaperclip 73363e5be5 Record Cursor entitlement attempt and explicit usage gaps
Retain the initial denied canonical attempt without treating absent usage as zero; document the typed native error dropped by Cursor ACP and replacement-account model discovery.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:16:00 -05:00
DottaandPaperclip eda4b7e8cb Record authenticated Cursor model and configuration discovery
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:16:00 -05:00
DottaandPaperclip 2897bd971e Refresh Cursor pack proof after final launch credential fix
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:16:00 -05:00
DottaandPaperclip e5fa1cff1f Retain Cursor pack proof after credential and receipt review fixes
Record the exact reviewed runtime source, clean dependency resolution, pack and native closure digests, and a credential-free launch through the generic installation registry. Keep authenticated and Daytona qualification explicitly pending.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:16:00 -05:00
DottaandPaperclip eb0f43c45a Retain final rebased Cursor pack and registry launch proof
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:16:00 -05:00
DottaandPaperclip 4235e35070 Record Cursor candidate pack proof and exact remaining rich event gaps
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:16:00 -05:00
DottaandPaperclip 36313fc908 Preserve Cursor child activity without flattening foreign sessions
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:16:00 -05:00
DottaandPaperclip e2000ca283 Bind Cursor rich input and activity adapters to an active parent turn
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:16:00 -05:00
DottaandPaperclip 72d7bbc9b8 Bound full Cursor plan presentation by durable payload size
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:16:00 -05:00
DottaandPaperclip 0129e32b3c Add Cursor ACP rich interactions and pinned distributions
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:16:00 -05:00
DottaandPaperclip f063fbf2bc Map rich ACP surfaces to evidence and update paid qualification results
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:14:02 -05:00
DottaandPaperclip af76ed3d46 Record paid product evidence and remaining ACP qualification gaps
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:02:22 -05:00
DottaandPaperclip d8a4e62147 Admit verified runnerd Pi identity and record paid qualification progress
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 14:47:31 -05:00
DottaandPaperclip a589381f90 Record initial authenticated ACP qualification evidence and limits
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 14:26:29 -05:00
DottaandPaperclip 84955c9321 Record review verification and preserve pack provenance
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 12:52:49 -05:00
DottaandPaperclip afb6985c7e Link the rich ACP review stack and qualification evidence
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 12:35:45 -05:00
DottaandPaperclip 920fab4050 Record browser proof and remaining rich content gaps
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 12:23:19 -05:00
DottaandPaperclip 2ed1540570 Merge current master and validate negotiated ACP capability envelopes
Synchronize with master 14795136f5 while retaining the recorded implementation base. Regenerate protocol contracts and preserve both input-presence and permission-scope checks.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 12:07:57 -05:00
DottaandPaperclip 588dd00af1 Bind candidate diagnostics and recovery to explicit runner policy
Preserve Pi pricing receipt provenance, require evaluation opt-in, and record qualification boundaries.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 11:55:09 -05:00
DottaandPaperclip 14795136f5 fix(runtime): finalize and recover sandbox workspace exports safely (#14402)
Serialize native workspace finalization, validate streamed archives within bounded limits, and quietly recover unsafe exports from saved results. Preserve exact allocations for exhausted transient failures and provide export-only retry without rerunning the provider.

Consolidates #14314, #14315, #14329, and #14334 while preserving the already-merged finalization label changes.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 10:57:32 -05:00
DottaandPaperclip f55759942b fix(runner): accept compatible Codex releases from 0.149.0 (#13853)
Keep the minimum fixed at 0.149.0 until a deliberate maintainer change. Accept stable versions below 0.157.0 separately from the reproducible install pin.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-23 11:27:43 -07:00
DottaandPaperclip b193077582 fix: report Slack callback health correctly behind Cloud proxies (#13694)
## Thinking Path

> - Paperclip is the open source app people use to manage AI agents for
work.
> - Slack connections turn messages into governed agent runs and return
replies to Slack.
> - Remote runs must replace an incompatible sandbox runner with the
controller's packaged binary.
> - The fallback used a package-relative path that does not match the
vendored server layout.
> - Slack callback health also compared the internal proxy address with
the public callback address.
> - Master now contains the runner fallback fix; this pull request fixes
callback health and extends missing-runner regression coverage.

## Linked Issues or Issue Description

Refs #13677, #13680, #13691, and #13686.

**What happened?**

A packaged controller stopped a Slack-triggered remote run with
`runner_remote_artifact_unavailable` when the sandbox runner needed
replacement. Working Slack callbacks also showed a stale URL warning
behind the Cloud gateway.

**Expected behavior**

The controller stages its packaged runner when needed. Callback health
uses the observed public address and still detects real address changes.

**Steps to reproduce**

1. Run a packaged server with a sandbox that has an older runner or no
runner.
2. Send a Slack mention to an agent that uses that sandbox.
3. Route signed Slack callbacks through a claimed Cloud gateway that
rewrites the upstream host.
4. Check the run and the Slack callback health panel.

**Paperclip version or commit**

Reproduced on master at `aeef493f4a7603b7b1254421b80fb00212982390`. The
fix branch also includes #13691.

**Deployment mode**

Packaged server with a Cloud gateway and a Daytona sandbox.

## What Changed

- Extend the controller-owned runner fallback tests with a missing
sandbox binary case; retain the fix now merged in #13686.
- Prefer dedicated gateway diagnostic headers that survive provider
rewrites of standard forwarded headers. Use validated host hints only
for callback-health evidence on claimed Cloud instances after provider
acceptance. Preserve request bodies, routing, authentication, and
configured callback URLs.
- Cover current, stale, and missing sandbox runners, all Slack callback
surfaces, rejected callbacks, malformed proxy hints, real host and port
changes, and the existing self-hosted behavior.
- Document the artifact lookup and callback-health boundaries.

## Verification

- Native session executor and binary resolver suites: 379 tests passed
after merging current master (`45c99a0d0`).
- Targeted callback integration suite with disposable PostgreSQL: 4
tests passed before rebase.
- Full `pnpm -r typecheck` and `pnpm build` passed after merging current
master. The full local suite passed 12,668 tests; one suite failed to
start its disposable PostgreSQL. Rerunning that suite alone passed all
31 tests.
- The built server resolver selected the executable under
`server/dist/vendor/paperclip-runner/bin/`.
- Final callback regression: all 4 targeted integration tests pass,
covering provider header rewrites, default ports, uppercase/trailing-dot
hosts, and ignored self-hosted hints.
- Live staging proof of the runner fix: a previously failed Slack thread
recovered, a new mention received its requested response, and the
account-connect command succeeded. Unsigned callbacks returned 401.
- Live browser and Slack acceptance passed: generated callback URLs,
account linking, a new mention, an interactive question and answer, and
all three callback-health indicators. The connector was activated
through the onboarding UI.
- All 54 latest-head checks pass, two optional checks are skipped, and
Greptile is 5/5 with no unresolved threads.

## Risks

- Runner fallback must select a binary for the remote platform. This
preserves explicit remote artifact overrides and the existing capability
checks.
- Proxy headers are not identity proof. They are used only for
diagnostics on claimed Cloud instances after the provider accepts the
request. Self-hosted instances ignore them. Wrong public hosts and ports
still warn.
- No database migration or new public API contract.

## Model Used

OpenAI GPT-6 via Codex. Used reasoning, repository tools, code
execution, and browser/native-app testing. Exact model variant and
context window were not exposed by the 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

---------

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-09-19 17:32:51 -05:00
DottaandPaperclip 9335b7db10 fix(runner): validate inherited environments and replace stale sandbox binaries (#13677)
Resolve the effective environment for account adoption and adapter tests. Preserve saved-agent overrides when the request omits environmentId, and treat explicit null as inheritance from the instance.

Reject sandbox runners that lack unlimited-runtime and connection-lease-renewal capabilities. Stage the bundled runner before launch when the image binary is stale.

Add regression coverage for environment precedence, fail-closed validation, adapter switches, API-key reverification, and runner artifact fallback. Document the operational workaround for older controllers.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-19 08:51:18 -05:00