{"_id":"@arnedeutsch/picc","name":"@arnedeutsch/picc","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.1":{"name":"@arnedeutsch/picc","version":"0.1.1","description":"Agentic harness that runs Claude Code projects unchanged on GPT/Codex models, built as an extension bundle on Pi.","type":"module","license":"MIT","author":{"name":"Arne","email":"arne@idedeluxe.com"},"homepage":"https://github.com/ArneDeutsch/PiCC#readme","repository":{"type":"git","url":"git+https://github.com/ArneDeutsch/PiCC.git"},"bugs":{"url":"https://github.com/ArneDeutsch/PiCC/issues"},"publishConfig":{"access":"public"},"keywords":["claude-code","claude","codex","gpt","chatgpt","agent","coding-agent","harness","pi","skills","subagents","worktree"],"bin":{"picc":"bin/picc.mjs"},"engines":{"node":">=22.19.0"},"scripts":{"build":"node scripts/build-runtime.mjs","typecheck":"tsc -p tsconfig.json --noEmit","typecheck:test":"tsc -p tsconfig.test.json","typecheck:all":"npm run typecheck && npm run typecheck:test","test":"vitest run --project unit","verify":"npm run typecheck:all && npm run test:unit","test:watch":"vitest --project unit","test:unit":"vitest run --project unit","test:e2e":"npm run test:packaged && npm run test:e2e:compiled && npm run test:e2e:source-fallback","test:e2e:compiled":"node scripts/check-real-pi.mjs && vitest run --project e2e --exclude \"test/e2e-packaged-launcher.test.ts\" --exclude \"test/e2e-source-fallback.test.ts\"","test:e2e:source-fallback":"node scripts/check-real-pi.mjs && vitest run --project e2e test/e2e-source-fallback.test.ts","test:coverage":"vitest run --coverage --project unit --project integration","gen:capabilities":"node scripts/gen-capability-matrix.mjs","setup":"npm ci && npm run build && npm link","hooks:install":"git config core.hooksPath .githooks","update:pi":"node scripts/update-pi-suite.mjs","preversion":"npm run verify:all","prepublishOnly":"npm run verify:all","test:source":"npm run test:unit && npm run test:integration && npm run test:e2e:source-fallback","test:packaged":"node scripts/check-real-pi.mjs && vitest run --project e2e test/e2e-packaged-launcher.test.ts","test:integration":"vitest run --project integration","test:all":"npm run test:unit && npm run test:integration && npm run test:e2e","verify:all":"npm run typecheck:all && npm run test:all"},"dependencies":{"@earendil-works/pi-agent-core":"0.83.0","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0","@earendil-works/pi-tui":"0.83.0","@modelcontextprotocol/sdk":"^1.29.0","picomatch":"^4.0.5","typebox":"1.3.7","yaml":"^2.9.0"},"devDependencies":{"@types/node":"^26.1.1","@types/picomatch":"^4.0.3","@vitest/coverage-v8":"^4.1.10","jiti":"2.7.0","tsx":"4.23.0","typescript":"^7.0.2","vitest":"^4.1.10"},"_id":"@arnedeutsch/picc@0.1.1","_integrity":"sha512-JpsAJ/qk2w+Tyv/m2ruv9jiWmTlmv5H3NGp/F/ixDH8HZU0fpIq1lj0z0+feFgW4bHevXJ61aUdwojbUpMW8rw==","_resolved":"/home/runner/work/_temp/picc-release-30825476326/arnedeutsch-picc-0.1.1.tgz","_from":"file:/home/runner/work/_temp/picc-release-30825476326/arnedeutsch-picc-0.1.1.tgz","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-JpsAJ/qk2w+Tyv/m2ruv9jiWmTlmv5H3NGp/F/ixDH8HZU0fpIq1lj0z0+feFgW4bHevXJ61aUdwojbUpMW8rw==","shasum":"b5dc26a735c0fc404c02cc277c8cc1d5c2182d5a","tarball":"https://registry.npmjs.org/@arnedeutsch/picc/-/picc-0.1.1.tgz","fileCount":367,"unpackedSize":7305626,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arnedeutsch%2fpicc@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHHXxSuhgdFoNelsq0CUQzhG+A4aHPwwjFjlAK4k9+HxAiEA/pZLK2dzZ1JUsmi9V+1m+NTLliJOFNM9HVZopoIHBWE="}]},"_npmUser":{"name":"arnedeutsch","email":"arne@idedeluxe.com"},"directories":{},"maintainers":[{"name":"arnedeutsch","email":"arne@idedeluxe.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/picc_0.1.1_1785769511838_0.8130431829935776"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-03T15:05:11.658Z","0.1.1":"2026-08-03T15:05:12.040Z","modified":"2026-08-03T15:05:12.495Z"},"maintainers":[{"name":"arnedeutsch","email":"arne@idedeluxe.com"}],"description":"Agentic harness that runs Claude Code projects unchanged on GPT/Codex models, built as an extension bundle on Pi.","homepage":"https://github.com/ArneDeutsch/PiCC#readme","keywords":["claude-code","claude","codex","gpt","chatgpt","agent","coding-agent","harness","pi","skills","subagents","worktree"],"repository":{"type":"git","url":"git+https://github.com/ArneDeutsch/PiCC.git"},"author":{"name":"Arne","email":"arne@idedeluxe.com"},"bugs":{"url":"https://github.com/ArneDeutsch/PiCC/issues"},"license":"MIT","readme":"# PiCC\n\n[![CI](https://github.com/ArneDeutsch/PiCC/actions/workflows/ci.yml/badge.svg)](https://github.com/ArneDeutsch/PiCC/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n**Run projects built for Claude Code — unchanged — on GPT/Codex models, from your ChatGPT\nsubscription.**\n\nMany projects carry a `.claude/` corpus: `CLAUDE.md` hierarchies, skills, subagents,\n`settings.json` permissions and hooks, rules, and workflows that rely on worktree isolation and\nparallel sessions. PiCC is an agentic harness that reads and honors those Claude-format\nartifacts natively on GPT models, with **no changes to the target project**.\n\nIt is built as an extension bundle on [Pi](https://github.com/earendil-works/pi) (MIT), which\nalready solves the two hardest problems — spending a ChatGPT/Codex subscription and abstracting\nthe model provider. PiCC adds the Claude Code compatibility layer on top.\n\n![Four PiCC instances](doc/picc_tui.png)\n\n## Quick start\n\nPiCC requires Node.js 22.19 or newer, npm, and git. Windows also requires Git Bash from Git for\nWindows. Install the current release, then launch it from the Claude Code project you want to use:\n\n```powershell\nnpm install --global @arnedeutsch/picc\ncd <path-to-your-claude-code-project>\npicc\n# /login  → connect ChatGPT Plus/Pro (one time)\n# /model  → pick a GPT/Codex model\n# /doctor → review this project's compatibility findings\n```\n\nIf npm cannot resolve `@arnedeutsch/picc`, use the source checkout instead:\n\n```powershell\ngit clone https://github.com/ArneDeutsch/PiCC.git\ncd PiCC\nnpm run setup\n```\n\nThen change to the target project and run `picc` as above. Installation variants, exact versions,\nWindows notes, authentication, and updates are in the [user guide](doc/user-guide.md#2-install).\nRelease archives and notes are on [GitHub Releases](https://github.com/ArneDeutsch/PiCC/releases).\n\n**→ Full documentation: [doc/user-guide.md](doc/user-guide.md)** ·\n[Architecture](doc/architecture.md) · [Supported features](doc/supported-features.md) ·\n[Testing](doc/testing.md) · [Contributing](CONTRIBUTING.md)\n\n## What it does\n\n- **Skills** — `.claude/skills` and legacy `.claude/commands`, with progressive disclosure,\n  argument substitution, and shell injection.\n- **Subagents** — `.claude/agents/*.md` and the built-in agent types, with description-driven\n  routing, parallel background fan-out (nesting is opt-in via `subagents.maxDepth`), per-agent\n  tool gating, and worktree isolation.\n- **Subagent observability** — a live status panel of the whole agent tree with a drill-down per\n  agent (prompt, structured live detail, final answer, stop/dismiss/steer), plus condensed,\n  expandable per-agent records in the chat transcript.\n- **Worktrees** — `EnterWorktree`/`ExitWorktree` with a real session-cwd swap and a\n  Windows-tolerant lifecycle, for parallel sessions on one repo.\n- **Hooks** — command hooks with Claude's stdin-JSON/stdout-decision contract and matcher\n  semantics; see the capability matrix for compact lifecycle limits.\n- **CLAUDE.md, memory & rules** — the ancestor hierarchy, recursive `@import` (the AGENTS.md\n  bridge), auto memory, and `.claude/rules/`.\n- **Settings & permissions** — `settings.json` precedence and merge semantics, with `deny` rules\n  as a hard block.\n- **MCP servers** — native, project-configured, and standalone managed stdio or selected remote\n  HTTP/SSE servers expose tools, prompts, and resources behind central policy admission and\n  source-specific controls; see the [capability matrix](doc/supported-features.md) for exact limits.\n- **Compaction resilience** — proactive checkpointing on supported model transports, with\n  instruction preservation and bounded recovery; see the [user guide](doc/user-guide.md).\n- **Plugins** — read-only local inventory and diagnostics accompany exact installed-state loading;\n  see [Installed plugins](doc/user-guide.md#installed-plugins).\n- **Images & notebooks** — `Read` delivers image files and cell-aware `.ipynb` output (plots\n  included) as real image blocks on a vision-capable model, degrading to a text placeholder on a\n  non-vision model; notebooks can be edited cell-by-cell with `NotebookEdit`; a genuinely unsupported\n  binary (e.g. a PDF) returns a clean binary error.\n- **Git commits** — nudges richer, repo-style-matching commit messages by default.\n\nEverything unrecognized degrades safely instead of crashing (the completeness floor).\nThe full, always-current compatibility matrix is in\n[doc/supported-features.md](doc/supported-features.md).\n\n## Control surface\n\nInside a session: `/skills` and `/agents` list the loaded corpus; `/doctor` gives an explicit\nproject compatibility report; `/mcp` shows bounded read-only MCP server status; `/usage` reports a\nper-subagent token/cost breakdown; `/quota` reports provider quota headers; `alt+a` opens the\nsubagent status panel.\nEligible user-invocable skills whose names do not conflict with built-ins appear in the `/`\nautocomplete menu. Model and per-model steering are\nconfigured outside the project — see the [user guide](doc/user-guide.md#5-control-surface-project-external).\n\n## Repository layout\n\n| Path | Contents |\n|---|---|\n| `src/` | The harness: loaders (`claude/`), engines (`engine/`), Pi runtime layer (`runtime/`), capability registry (`registry/`), extension entry (`index.ts`) |\n| `bin/picc.mjs` | Launcher (Pi + extension preloaded) |\n| `examples/hello-claude` | Minimal demo project |\n| `examples/full-surface` | Larger fixture exercising a broad slice of the feature surface |\n| `test/` | Unit, offline-integration, and live e2e tests (vitest) — see [doc/testing.md](doc/testing.md) |\n| `doc/` | [User guide](doc/user-guide.md), [architecture](doc/architecture.md), [supported features](doc/supported-features.md), [testing](doc/testing.md), and the pinned [Pi contracts](doc/pi-integration.md) |\n\n## Development\n\n```bash\nnpm run typecheck:all    # strict TS over src + tests\nnpm test                 # unit lane (same as test:unit)\nnpm run test:integration # offline whole-extension integration lane\nnpm run test:e2e         # packaged, compiled real-Pi, and source-fallback witnesses\nnpm run test:all         # unit + integration + e2e\nnpm run gen:capabilities # regenerate doc/supported-features.md from the registry\n```\n\nSupport claims are pinned to a **Claude Code ~2.1.x (mid-2026)** baseline in the capability\nregistry (`src/registry/capability-registry.ts`); the runtime compatibility report is generated\nfrom it, so docs and behavior cannot drift. See [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md","_rev":"1-28a5cb3c9f6ca05e049f7be63e701a29"}