openpencil/packages/harness
Danila Poyarkov 83a5ea1b42
feat(ai): add HarnessAgent sidecar foundation (#560)
* feat(ai): add HarnessAgent sidecar foundation

* feat(ai): integrate Pi as a Harness provider

* fix(ai): harden Harness provider integration

* fix(ai): address Harness integration review

* fix(ai): align Harness code with project conventions

* fix(ai): preserve Harness sessions on cancellation

* test(ai): cover Harness JSONL framing

* refactor(ai): generalize Harness sidecar adapters

* fix(ci): build Harness sidecar for native checks
2026-08-19 17:41:10 +03:00
..
src feat(ai): add HarnessAgent sidecar foundation (#560) 2026-08-19 17:41:10 +03:00
tests feat(ai): add HarnessAgent sidecar foundation (#560) 2026-08-19 17:41:10 +03:00
package.json feat(ai): add HarnessAgent sidecar foundation (#560) 2026-08-19 17:41:10 +03:00
README.md feat(ai): add HarnessAgent sidecar foundation (#560) 2026-08-19 17:41:10 +03:00
tsconfig.json feat(ai): add HarnessAgent sidecar foundation (#560) 2026-08-19 17:41:10 +03:00
tsdown.config.ts feat(ai): add HarnessAgent sidecar foundation (#560) 2026-08-19 17:41:10 +03:00

@open-pencil/harness

Private Node runtime for coding-agent harness sessions. It owns the backend-neutral session lifecycle, opaque resume-state persistence, and the JSONL sidecar protocol used by host applications.

The first backend uses AI SDK HarnessAgent, Pi, and local just-bash. Pi runs in the Node host process; just-bash provides an isolated in-memory workspace and shell without requiring cloud infrastructure.

Current scope

  • Backend-neutral, streaming session service.
  • Atomic, bounded persistence of opaque harness resume state.
  • JSONL stdio sidecar transport.
  • Pi + just-bash backend.

The package is not wired into the desktop application yet. Credentials are supplied to the sidecar process at runtime and are never written to resume-state storage.

Local sandbox limitation

just-bash is process-local and in-memory. Multi-turn sessions work while the sidecar remains alive, but its sandbox cannot be reattached after a process restart. Persisted opaque state establishes the session contract; durable restart recovery requires a persistent sandbox provider in a later integration.