Commit Graph
11 Commits
Author SHA1 Message Date
DottaandPaperclip 37f81ae1b4 fix(runner): preserve live console replay cursor
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-18 18:23:13 +00:00
DottaandPaperclip 59e57017b1 refactor(runner): organize package by responsibility
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-11 12:56:59 +00:00
DottaandClaude Opus 5 cda1fb03ab fix(runner): preserve phase 4b request terminal and goal semantics
Five protocol corrections from the CTO review of the Phase 4b work.

Canonical runtime request outcome. The real driver emitted `resolution`
while the scripted driver and browser read `action`, so a real resolved
card reported an unknown outcome. `harnessRuntimeRequestOutcome` is now
the one payload every driver emits for a terminal `runtime_request.*`
fact, carrying `requestId`, `requestKind`, `turnId`, and `itemId` in the
payload as well as the event binding.

Decoded request identities. Path segments are split before they are
decoded, so a percent-encoded reserved character stays inside the segment
the browser meant it for; malformed encoding fails with 400.

Resolution shapes validated by request kind.
`parseHarnessRuntimeRequestResolution` requires `answers` for a
`user_input` submit and `content` for an elicitation submit, and rejects
a mismatched body instead of accepting it as an empty response. Both
drivers and the browser transport run it, and the request card now sends
elicitation answers as `content`.

One terminal fact per reconnect. The demo server snapshots after the
close rather than before it, so requests the close already cancelled are
not replayed into the driver's stale-request recovery path and reported
terminal a second time. Reading afterwards also carries the closing
events' source sequence into the resumed session.

Goal support retired only on a provider denial. A transport or protocol
failure during `thread/goal/get` said nothing about what the build
supports but still set `goals: false`. `CodexRpcError` now carries the
JSON-RPC code, and the capability is retired only when the provider
answers that it will not serve the method.

Three defects surfaced while verifying the above are fixed here too: a
same-origin `EventSource` GET sends no `Origin`, so requiring one on
`/stream` rejected the console's own subscription and no live-console
test could connect; the browser payload redactor covered only
`.paperclip` paths and leaked the app-server's `~/.codex/memories`; and
the browser suite shares one server across 19 sessions against an
interactive cap of 16, now sized through `PAPERCLIP_PHASE4B_MAX_SESSIONS`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 06:04:03 +00:00
DottaandPaperclip 405a4a4506 fix(runner): secure phase4b browser transport
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-08 05:43:13 +00:00
96092b832d feat(runner): add phase 4b live codex protocol console
Add the package-local browser tracer over the Phase 4b protocol boundary as a
new Live console mode in the standalone devtool.

Surfaces derive only from canonical PRP events and the shared reducer: live
transcript and composer, same-turn steering with stale-turn recovery, three
distinct interrupt races, inline runtime request cards, capability-gated goal
controls, parent/child lineage, reconnect, refresh, replay, and a redacted
protocol inspector.

Add a deterministic scripted driver and eleven demo chats behind the same demo
server routes the real Codex driver uses, so every protocol state is reachable
without a provider account and PAPERCLIP_PHASE4B_DRIVER=codex swaps in the real
session.

Adapt shadcn/ui and Vercel AI Elements source with zero new runtime
dependencies, and extend the boundary check to keep it that way.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 05:26:45 +00:00
DottaandPaperclip 5da7172af5 feat(runner): expand recovery diagnostics
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-07 23:59:43 +00:00
DottaandPaperclip b6ec51df04 feat(runner): add durable Phase 3 recovery transport
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-07 23:37:33 +00:00
DottaandPaperclip a9e6db06e0 fix(runner): address phase 2 tutorial QA
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-07 22:13:41 +00:00
DottaandPaperclip 90daf4ff00 fix(runner): polish live browser diagnostics
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-07 21:31:46 +00:00
DottaandPaperclip f32331a567 feat(runner): add Phase 2 local harness loop
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-07 21:09:14 +00:00
DottaandPaperclip 1b51f95c6c feat(runner): add phase 1 static replay contract
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-07 19:13:00 +00:00