Commit Graph
4859 Commits
Author SHA1 Message Date
DottaandPaperclip 11da146c3c test(runner): align issue-thread assertions with current catalog
Assert the canonical active-task description and all nine DevTools tabs while retaining document-read, layout, and interaction assertions.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 13:51:40 -05:00
DottaandPaperclip c8239a3bab fix(runner): reject dev-only exceptions under wildcard exports
Treat unexpanded wildcard export targets as potentially exposing every scanned source, so they cannot bypass the reviewed private eval harness boundary.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 13:51:40 -05:00
DottaandPaperclip f7ab50455b fix(runner): parse import gates and pack explicit consumer inputs
Use the declared TypeScript parser to distinguish module references from fixture strings. Enforce declared public exports and the ADR0001 private development-only eval harness boundary, including public transitive exposure. Pack absolute dependency inputs from scratch without adopting publisher development toolchains.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 13:51:40 -05:00
DottaandPaperclip d16f56ef71 test(runner): check App icon parity at the server boundary
Keep both live and catalog schema assertions through public runner exports while removing the standalone suite dependency on App source.

Paperclip-Task: rich-acp-production

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 13:51:40 -05:00
DottaandPaperclip 01d6fcb832 docs(runner): link current Rust bridge architecture
Paperclip-Task: rich-acp-production

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 13:51:40 -05:00
DottaandPaperclip 623fcc1213 test(runner): align static replay fixture expectations
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 13:51:40 -05:00
DottaandPaperclip 6331ea1a1d fix(runner): load live console helpers from owning modules
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 13:35:28 -05:00
DottaandPaperclip 6405942a77 test(runner): drain retained commits before terminal ACK fault
Reproduce slow durable event commits in the completed-ACK row while leaving the native two-second deadline intact. Let maintenance enqueue suspend after all retained events drain so the row reliably exercises actual ACK loss and preserves its exact replay assertions.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 13:35:28 -05:00
Dotta ab0696ae9d test(runner): isolate cancellation timing and portable snapshot paths
Paperclip-Task: rich-acp-production
2026-09-29 13:12:05 -05:00
DottaandPaperclip ed3a0df1c1 test: await connection setup and persisted runtime identity
Complete the dialog fixture context and wait for the actual setup render. Observe the post-spawn PID update before checking the starting service identity, preserving provisioning and readiness assertions.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 13:04:12 -05:00
DottaandPaperclip 3a12ec4bef fix(runner): refresh settled ACPX run grants during authenticated attachment
Keep provider, session and semantic runtime context identities immutable while allowing registered per-run roots, MCP binding and current instructions to refresh on a new authenticated run. Reject same-run mutations and retain settlement gates with safe diagnostic reasons.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 12:39:25 -05:00
DottaandPaperclip 4f9506072c fix(runner): align editable draft bounds with Unicode schema lengths
Count initialText Unicode code points consistently in TypeScript, Zod, JSON Schema and Rust. Keep submitted-answer UTF-16 limits unchanged, with mixed BMP and astral boundary tests inside the wire byte cap.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 12:39:25 -05:00
DottaandPaperclip c2b0c804cb fix(ui): preserve canonical drafts in classic question cards
Reuse the canonical question form for pending structured questions so provider drafts, persisted edits, validation and exact submitted text survive both task surfaces.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 12:39:03 -05:00
DottaandPaperclip bb56af7fbd Keep the legacy question fixture payload type-safe
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 12:28:36 -05:00
DottaandPaperclip f308b14dae fix(ui): isolate pending question drafts by request identity
Remount question state before persistence when request identity changes, retaining same-request edits. Preserve exact canonical text at the compact-card API boundary while keeping legacy and custom-answer trimming.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 12:17:25 -05:00
DottaandPaperclip c5a4714add feat(runner): preserve editable question defaults through explicit response
Carry bounded text-only initialText through ACP normalization, Rust durable validation, shared contracts and the question UI. Saved edits and explicit clears survive reload. Preserve canonical submitted text while retaining legacy custom-answer normalization and existing validation.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 12:07:19 -05:00
DottaandPaperclip 8e8cdd7aaa fix(ui): allow clearing preloaded markdown on the first edit
Preserve the programmatic empty mount reset guard while recognizing input and Lexical deletion intent before change callbacks.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 12:07:19 -05:00
DottaandPaperclip 36f7a89b37 Check exact candidate eval profile before provider startup
Compare expected profile fields with the built Runner before materializing context or constructing a live service. Require the flag for candidate runs; old CLIs reject it without starting a provider.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 11:59:19 -05:00
DottaandPaperclip 61f33cb1ef Bound Daytona provider build worker memory
Limit pnpm tarball and lifecycle concurrency in the build stage. Keep dependency pins and runtime environment unchanged.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 11:59:19 -05:00
DottaandPaperclip 2042ca14c4 Keep Copilot notices session-scoped and close early smoke resources
Copilot passthrough does not identify the originating turn. Retain bounded session evidence and source identity without typed turn projection or invented turn provenance. Acquire smoke resource cleanup before every fallible setup operation.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 11:49:53 -05:00
DottaandPaperclip df3c87735a Merge branch 'codex/runner-cursor-acp' into codex/runner-copilot-acp
* codex/runner-cursor-acp:
  Bound Cursor child summaries without splitting Unicode characters

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 11:49:53 -05:00
DottaandPaperclip 76d943e625 Bound Cursor child summaries without splitting Unicode characters
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 11:44:35 -05:00
DottaandPaperclip 95dfde7c5c Merge current Cursor ACP runtime into Copilot v4
Preserve both profile-specific guards and complete terminal diagnostics; bind Copilot v4 to the regenerated ACPX patch.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 11:28:38 -05:00
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 2ff6a8efea fix(copilot): refresh instructions under provider lifetime ownership
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 11:17:22 -05:00
DottaandPaperclip 0f33a9080a fix(copilot): deliver native instructions with v4 session identity
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 11:12:26 -05:00
DottaandPaperclip 1d02ab77b2 fix(runner): refresh trusted system instructions before ACPX restore
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 11:09:17 -05:00
DottaandPaperclip aaf67099e9 fix(runner): refresh runtime context when restoring ACPX sessions
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 11:09:17 -05:00
DottaandPaperclip 751f59f26c test(copilot): record native system instruction delivery evidence
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 11:07:17 -05:00
DottaandPaperclip a93e8c03f6 fix(runner): refresh trusted system instructions before ACPX restore
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 10:43:30 -05:00
DottaandPaperclip e7572c693a perf(runner): bound native snapshot copy concurrency at 32
Preserve the 32 MiB batch budget and standalone oversized files, checked descriptors, canonical ordering, and fully drained failure cleanup.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 10:37:43 -05:00
DottaandPaperclip 3a08122558 Merge current master into Cursor ACP provider branch
Preserve upstream ACPX terminal diagnostics and rich extension delivery hooks.

Co-Authored-By: Paperclip <hello@paperclip.ing>
2026-09-29 10:36:20 -05:00
DottaandPaperclip 5630481a38 test(copilot): preserve final question failure and offline recovery proof
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 10:34:51 -05:00
DottaandPaperclip e08bb92aa2 fix(runner): refresh runtime context when restoring ACPX sessions
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 10:34:15 -05:00
DottaandPaperclip 83076d7e7c feat: return completed handoffs to Agent Chat (#14408)
Return completed Agent Chat handoffs through a durable outbox and scope each generated update to its supplied tasks. Add recovery, browser delivery, result access, and calibrated quality coverage.

Validated with two consecutive ten-case Claude/Codex campaigns, all CI checks, and a 5/5 review.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 10:25:52 -05:00
DottaandPaperclip 3b4b270650 fix(adapters): preserve ACP terminal failure diagnostics (#14573)
## Thinking Path

> - Paperclip is the open source app people use to manage AI agents for
work.
> - The shared ACP adapter engine records agent failures for operators.
> - ACP providers can report a failure category, title, and detailed
cause.
> - Our patch kept only the category in the saved error, so an operator
could not diagnose a failure when tracing was off.
> - This pull request preserves redacted provider diagnostics in the run
error, transcript, and structured run result.
> - Operators can now inspect the provider message and any supplied
request ID or stack trace after the run ends.

## Linked Issues or Issue Description

Refs #13889 (the diagnostic gap; this PR does not update the bundled
Claude version).
Refs #14484 (related model-refusal classification; this PR retains
diagnostics for all terminal failure categories).

**What happened?**
An ACP turn failed with only `ACP agent reported a terminal service
failure.` The provider's title and details were available in memory but
absent from the saved error and transcript.

**Expected behavior**
The run retains useful provider diagnostics even when raw tracing is
disabled. Credentials remain redacted. A size limit must report
truncation instead of silently removing the cause.

**Steps to reproduce**
1. Run an ACP agent that returns an error-severity typed session
failure.
2. Include an HTTP error, request ID, and stack text in its title and
details.
3. Inspect the failed run with tracing disabled. Before this change,
only the category survives.

## What Changed

- Both pinned ACPX patches pass complete error text to the in-memory
callback, so redaction happens before truncation.
- The shared engine retains the sanitized category, title, and details
in `resultJson.terminalSessionFailure` and includes the text in the run
error and error transcript.
- Diagnostics redact configured environment values even under arbitrary
names, unknown launch-environment values, connection URL passwords, run
credentials, and common credential syntax. Known boolean settings remain
readable, while credential values are redacted even when embedded in
other text. Diagnostics remove control characters and invalid Unicode.
- Title and detail limits keep escaped transcript JSON below the
server's chunk limit. Truncated fields include an omission count. The
safe run-result projection preserves a byte-bounded diagnostic preview
when the result exceeds its byte budget, with an explicit pointer to the
full adapter-bounded run error and transcript.
- The existing UI and CLI display the error. Diagnostics do not become
assistant output. Issue continuation summaries and session-compaction
prompts receive only the generic category, preventing provider text from
becoming handoff instructions. Existing quota classification, warnings,
timeout precedence, and control-channel failure precedence remain in
place.
- Regression tests cover real ACP child processes with both pinned
versions in one-shot and persistent modes, credential redaction, request
IDs after the old 4 KiB cutoff, transcript parsing, storage bounds, and
database retrieval of oversized multibyte diagnostics.

## Verification

- Full CI on `20ad4f5f1f66c46d2c260e6ad0339cbea607b4cf`: **54 passed, 2
intentionally skipped, no pending or failing checks**. Includes
typechecking, build, all Vitest shards, Runner checks, browser E2E, and
the canary packaging/public-install dry run.
- Greptile: **5/5** on this commit. Superagent security scan passes. All
review threads are resolved.
- Local verification passed: shared ACP engine suite (395 tests); real
Claude ACP child-process and diagnostic regressions across both pinned
runtimes and both execution modes; run retrieval and model-handoff
regressions (59 tests); ACPX patch packaging (16 tests); full typecheck
and build. Affected package typechecks and focused tests were rerun
after review fixes.
- The broad local `pnpm test:run` was stopped after review edits made
its cached imports stale. Fresh targeted runs pass, including both
affected server suites. Cold-build import failures were also rerun after
dependency builds: chat integration (1,063 tests) and tool access (351
tests) pass. The final commit's complete CI matrix is green.

## Risks

- Provider diagnostic text is untrusted. This change retains more of it
in company-scoped run records. Redaction and size bounds apply before
persistence.
- Diagnostics are limited to fields the provider supplies. Old runs
cannot recover discarded error text.
- No schema migration, recovery-policy change, or new Telemetry or
OpenTelemetry export.

## Model Used

- OpenAI GPT-6 through Codex, with reasoning, repository inspection,
code editing, and test execution. The exact serving model ID and
context-window size are 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)
- [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-29 10:18:30 -05:00
DottaandPaperclip 3d0c45920c Admit the verified Copilot v3 identity in Rust
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 10:09:15 -05:00
DottaandPaperclip 70d9fc4bee Admit the verified Cursor v3 identity in Rust
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 10:08:55 -05:00
Dotta 550801f956 Merge branch 'codex/runner-cursor-acp' into codex/runner-copilot-acp
* codex/runner-cursor-acp:
  Admit the verified Cursor v3 identity in Rust
  Admit current ACP profiles and verify cross-language pin agreement
  Prove Cursor SDK interactions and retain profile v3 build evidence
2026-09-29 10:08:55 -05:00
DottaandPaperclip ff37a38ed3 Admit current ACP profiles and verify cross-language pin agreement
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 10:08:37 -05:00
DottaandPaperclip 59bba28192 Follow current Copilot profile identity in native installation admission
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 10:04:53 -05:00
DottaandPaperclip fa393bff17 Preserve authoritative Copilot guard errors for pending ACP requests
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 10:03:28 -05:00
DottaandPaperclip 7668cd822d Preserve Copilot policy rejection codes across sidecar transport
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 10:00:20 -05:00
DottaandPaperclip 860ac89c86 Bind Copilot v3 identity to native detached-work admission
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 09:58:50 -05:00
Dotta 304472946d Merge commit 'abad2bd0d' into codex/runner-copilot-acp
* commit 'abad2bd0d':
  Bind Daytona image identity to Cursor isolation patch
2026-09-29 09:58:05 -05:00
DottaandPaperclip f9cd8dd256 Deny native Copilot detached work before permission dispatch
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 09:58:05 -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 abad2bd0da Bind Daytona image identity to Cursor isolation patch
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 09:53:20 -05:00
DottaandPaperclip fcb1421685 Retain Copilot detached-command early completion regression
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 09:51:04 -05:00
DottaandPaperclip f221ca1910 Prove Copilot permission recovery after provider death without replay
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 09:48:54 -05:00