{"_id":"@casualjim/pi-taskplane-planner","_rev":"4-1f6edd7c1c8e98d534ac497a245503a2","name":"@casualjim/pi-taskplane-planner","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@casualjim/pi-taskplane-planner","version":"0.1.0","keywords":["pi-package","planner","taskplane","extension","specs"],"author":{"name":"casualjim"},"license":"MIT","_id":"@casualjim/pi-taskplane-planner@0.1.0","maintainers":[{"name":"casualjim","email":"ivan@flanders.co.nz"}],"homepage":"https://github.com/casualjim/pi-taskplane-planner#readme","bugs":{"url":"https://github.com/casualjim/pi-taskplane-planner/issues"},"pi":{"extensions":["./extensions/planner-extension.mjs"]},"bin":{"planner":"bin/planner.mjs"},"dist":{"shasum":"9e3c1b721ae7c43c9008fc48ced1b4dcab1c7b9b","tarball":"https://registry.npmjs.org/@casualjim/pi-taskplane-planner/-/pi-taskplane-planner-0.1.0.tgz","fileCount":27,"integrity":"sha512-8a6gocwGCK7zSzvomspbVUbqtsUpjPa5UjfhAoOE1zAcpn6XV/GER9k8weagpIaIqT6qEZ7DWatcObJRVVoobA==","signatures":[{"sig":"MEQCIEgWC1TjcEFGUvZWerp4uQog9Aiq/1pBXCv0w3PMh/r/AiAI5sNkrJkT9KkcT5YEoGnRI0bPlGTblHpnM+EPaw4kQw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90560},"type":"module","module":"index.ts","engines":{"node":">=22.0.0"},"gitHead":"08ed853c137334a8143d70922c814f7859af7c5f","private":false,"scripts":{"test":"bun test","build":"bunx tsc --noEmit","test:runtime-e2e":"PLANNER_RUNTIME_E2E=1 bun test tests/runtime-e2e.test.mjs"},"_npmUser":{"name":"casualjim","email":"ivan@flanders.co.nz"},"repository":{"url":"git+https://github.com/casualjim/pi-taskplane-planner.git","type":"git"},"_npmVersion":"11.11.0","description":"Planner-native pi extension and CLI companion to Taskplane","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.9.2"},"_npmOperationalInternal":{"tmp":"tmp/pi-taskplane-planner_0.1.0_1775778001569_0.9699427767660835","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@casualjim/pi-taskplane-planner","version":"0.1.1","keywords":["pi-package","planner","taskplane","extension","specs"],"author":{"name":"casualjim"},"license":"MIT","_id":"@casualjim/pi-taskplane-planner@0.1.1","maintainers":[{"name":"casualjim","email":"ivan@flanders.co.nz"}],"homepage":"https://github.com/casualjim/pi-taskplane-planner#readme","bugs":{"url":"https://github.com/casualjim/pi-taskplane-planner/issues"},"pi":{"extensions":["./extensions/planner-extension.mjs"]},"bin":{"planner":"bin/planner.mjs"},"dist":{"shasum":"d582054cb0cdacf2e8f26454523d00d79e06baa2","tarball":"https://registry.npmjs.org/@casualjim/pi-taskplane-planner/-/pi-taskplane-planner-0.1.1.tgz","fileCount":22,"integrity":"sha512-lEj56LmHTI2+XX+mA6vZT+5ASmujAmdEAnyVFJKQizTUSecw5n//A4alEjpuPhpjaWbmwccXyi0GkpXN80tMhQ==","signatures":[{"sig":"MEQCID3SYkhWsHj3PSQHUzJs2zY0x2ahInRvxL4QPbySmZzwAiBmh1jlbMLAxk5O2mvHDhH2pINvZI0hlN9WDTm2ctux2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68526},"type":"module","module":"index.ts","engines":{"node":">=24.0.0"},"gitHead":"f313d221324a381b5ff69db7200fd0f88cb7cc3e","private":false,"scripts":{"test":"bun test","build":"bunx tsc --noEmit","test:runtime-e2e":"PLANNER_RUNTIME_E2E=1 PLANNER_RUNTIME_E2E_MODEL=openai-codex/gpt-5.4-mini PLANNER_RUNTIME_E2E_THINKING=medium bun test tests/runtime-e2e.test.mjs"},"_npmUser":{"name":"casualjim","email":"ivan@flanders.co.nz"},"repository":{"url":"git+https://github.com/casualjim/pi-taskplane-planner.git","type":"git"},"_npmVersion":"11.11.0","description":"Planner-native pi extension and CLI companion to Taskplane","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.9.2"},"_npmOperationalInternal":{"tmp":"tmp/pi-taskplane-planner_0.1.1_1776212423545_0.5072813312972666","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@casualjim/pi-taskplane-planner","version":"0.2.0","keywords":["pi-package","planner","taskplane","extension","specs"],"author":{"name":"casualjim"},"license":"MIT","_id":"@casualjim/pi-taskplane-planner@0.2.0","maintainers":[{"name":"casualjim","email":"ivan@flanders.co.nz"}],"homepage":"https://github.com/casualjim/pi-taskplane-planner#readme","bugs":{"url":"https://github.com/casualjim/pi-taskplane-planner/issues"},"pi":{"extensions":["./extensions/planner-extension.mjs"]},"bin":{"planner":"bin/planner.mjs"},"dist":{"shasum":"d6ead9e0dc8038f8fa78d0278a011c39c06b2be1","tarball":"https://registry.npmjs.org/@casualjim/pi-taskplane-planner/-/pi-taskplane-planner-0.2.0.tgz","fileCount":22,"integrity":"sha512-Kveka708ilBOCclwXJifYN1XwqWfVsCtb7VyIu1gNxI8fsv/g2ODfrxJVjGFc1ZuLivUWPr1f72af3wZ3iY3VQ==","signatures":[{"sig":"MEUCIQCSc62YR6/EXNaq7/Z3sCYuvdzqw7vldNlAl05+GyCk4AIgd9EcIYHXnjw7Ob8GfnC6p1X+ujf5ZLM0roVy7DNSP9s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@casualjim%2fpi-taskplane-planner@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":68873},"type":"module","module":"index.ts","engines":{"node":">=24.0.0"},"gitHead":"3b6730b0ec6be4ca4adbf7f49476a228a12cc633","private":false,"scripts":{"test":"bun test","build":"tsc --noEmit","typecheck":"tsc --noEmit","check:pack":"npm pack --dry-run","test:runtime-e2e":"PLANNER_RUNTIME_E2E=1 PLANNER_RUNTIME_E2E_MODEL=openai-codex/gpt-5.4-mini PLANNER_RUNTIME_E2E_THINKING=medium bun test tests/runtime-e2e.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ad061fcf-10a5-46ac-87af-8670c9b4dcba"}},"repository":{"url":"git+https://github.com/casualjim/pi-taskplane-planner.git","type":"git"},"_npmVersion":"11.11.0","description":"Planner-native pi extension and CLI companion to Taskplane","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.9.2"},"_npmOperationalInternal":{"tmp":"tmp/pi-taskplane-planner_0.2.0_1776231926817_0.4357552762879511","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@casualjim/pi-taskplane-planner","version":"0.2.1","module":"index.ts","type":"module","private":false,"description":"Planner-native pi extension and CLI companion to Taskplane","keywords":["pi-package","planner","taskplane","extension","specs"],"bin":{"planner":"bin/planner.mjs"},"pi":{"extensions":["./extensions/planner-extension.mjs"]},"scripts":{"build":"tsc --noEmit","typecheck":"tsc --noEmit","check:pack":"npm pack --dry-run","test":"bun test","test:runtime-e2e":"PLANNER_RUNTIME_E2E=1 PLANNER_RUNTIME_E2E_MODEL=openai-codex/gpt-5.4-mini PLANNER_RUNTIME_E2E_THINKING=medium bun test tests/runtime-e2e.test.mjs"},"engines":{"node":">=24.0.0"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/casualjim/pi-taskplane-planner.git"},"homepage":"https://github.com/casualjim/pi-taskplane-planner#readme","bugs":{"url":"https://github.com/casualjim/pi-taskplane-planner/issues"},"license":"MIT","author":{"name":"casualjim"},"devDependencies":{"@types/bun":"latest","typescript":"^5.9.2"},"gitHead":"357f4d295bdc876467509b1878df8d2ee4934b13","_id":"@casualjim/pi-taskplane-planner@0.2.1","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-41L29Yv/fMUmmZ/UYhBsuBy6fS2F/woOxNJzvvYjgZSGJtGjRrFiyLVIlpBm8fRJe1qhTI7IUOuqCrhvn/WZ7g==","shasum":"cfaa36a498141a672ee0607b165763742706ecb9","tarball":"https://registry.npmjs.org/@casualjim/pi-taskplane-planner/-/pi-taskplane-planner-0.2.1.tgz","fileCount":22,"unpackedSize":75254,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@casualjim%2fpi-taskplane-planner@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCr0BwiWm/1WaiKZOnMexqfvBwQXQHuqP1uE45D+XSRuQIhAOAX+kR37KlvzK/81ZFJuYW0RE969W52+gTm1X/Y5ucq"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ad061fcf-10a5-46ac-87af-8670c9b4dcba"}},"directories":{},"maintainers":[{"name":"casualjim","email":"ivan@flanders.co.nz"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-taskplane-planner_0.2.1_1776281095572_0.27661982590467016"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-09T23:40:01.464Z","modified":"2026-04-15T19:24:55.983Z","0.1.0":"2026-04-09T23:40:01.715Z","0.1.1":"2026-04-15T00:20:23.724Z","0.2.0":"2026-04-15T05:45:26.955Z","0.2.1":"2026-04-15T19:24:55.722Z"},"bugs":{"url":"https://github.com/casualjim/pi-taskplane-planner/issues"},"author":{"name":"casualjim"},"license":"MIT","homepage":"https://github.com/casualjim/pi-taskplane-planner#readme","keywords":["pi-package","planner","taskplane","extension","specs"],"repository":{"type":"git","url":"git+https://github.com/casualjim/pi-taskplane-planner.git"},"description":"Planner-native pi extension and CLI companion to Taskplane","maintainers":[{"name":"casualjim","email":"ivan@flanders.co.nz"}],"readme":"# @casualjim/pi-taskplane-planner\n\nGlue between OpenSpec long-horizon planning and Taskplane execution.\n\nThis package compiles approved OpenSpec change contracts into Taskplane-native\nexecution packets, runs whole-change conformance, and archives verified delta\nspecs into cumulative truth.\n\n**Planning is done by OpenSpec** (`/opsx:explore`, `/opsx:propose`).\n**Execution is done by Taskplane** (`/orch`).\n**This package bridges the two** — it does not duplicate either.\n\n## What it provides\n\n- **Pi extension commands** (thin orchestration glue):\n  - `/plan-stage` — validate an approved OpenSpec change and compile it into Taskplane packets\n  - `/plan-archive` — promote passing delta specs into cumulative truth and archive the change\n  - `/plan-reopen` — mark a change as reopened after a contract defect\n- **Thin CLI** for status and packet operations:\n  - `planner status [change]` — inspect staging and conformance state\n  - `planner stage <change>` — compile approved contracts into Taskplane packets\n  - `planner archive <change>` — archive a verified change\n  - `planner reopen <change> [reason]` — reopen after a contract defect\n- **Taskplane packet generation**\n  - one implementation packet per capability spec (coarse-grained, end-to-end steps)\n  - one terminal conformance packet for the whole change\n- **Archive flow** that promotes delta specs into cumulative captured truth\n\n## Layout\n\nOpenSpec owns the change contract:\n\n```text\nopenspec/\n  changes/\n    <change-slug>/\n      proposal.md\n      design.md\n      specs/\n        <capability>/spec.md\n      conformance.md          ← written by the conformance Taskplane task\n  specs/\n    <capability>/spec.md      ← cumulative truth (synced on archive)\n  changes/\n    archive/\n      YYYY-MM-DD-<change-slug>/\n```\n\nTaskplane owns execution:\n\n```text\ntaskplane-tasks/\n  CONTEXT.md\n  PHASE-IMPLEMENTATION.md\n  PHASE-CONFORMANCE.md\n  TP-xxx-.../\n    PROMPT.md\n    STATUS.md\n```\n\n## Installation\n\nThis package is published to npm as `@casualjim/pi-taskplane-planner` and requires Node.js 24+.\n\n### Install for pi\n\n```bash\npi install npm:@casualjim/pi-taskplane-planner\n```\n\n### Install the CLI on your PATH\n\n```bash\nnpm install -g @casualjim/pi-taskplane-planner\n```\n\nThen restart or `/reload` pi. Use `pi list` to confirm the package is registered.\n\n## Workflow\n\n### 1. Plan with OpenSpec\n\n```text\n/opsx:explore my-change\n/opsx:propose my-change\n```\n\nThis creates `openspec/changes/my-change/` with proposal, design, specs, and tasks.\n\n### 2. Stage into Taskplane packets\n\n```text\n/plan-stage my-change\n```\n\nThis validates the approved contract and compiles it into Taskplane packets under\n`taskplane-tasks/`. Generated packets use coarse-grained end-to-end steps —\ntests, documentation, and repo gates are folded into the implementation step.\n\n### 3. Execute with Taskplane\n\n```text\n/orch taskplane-tasks/TP-001-.../PROMPT.md taskplane-tasks/TP-002-verify-.../PROMPT.md\n```\n\n### 4. Archive verified truth\n\nWhen conformance passes:\n\n```bash\nplanner archive my-change\n```\n\nThis syncs delta specs into cumulative truth and moves the change into the archive.\n\n## Development\n\nRun tests:\n\n```bash\nnpm test\n```\n\nRun the Node-based package gate used by CI/publishing:\n\n```bash\nnpm run typecheck\nnpm run check:pack\n```\n\n`npm run build` remains an alias for the typecheck gate.\n\nOptional runtime E2E (requires a working local Taskplane + pi runtime environment and model/API access):\n\n```bash\nnpm run test:runtime-e2e\n```\n\nThis executes a planner-generated implementation packet through real Taskplane runtime orchestration,\nproves the runtime worker reads `PHASE-IMPLEMENTATION.md`, then probes a planner-generated conformance\npacket and proves that the runtime worker reads `PHASE-CONFORMANCE.md` at the correct phase boundary.\nThe test then writes a deterministic `ARCHIVE_READY` conformance report from the harness and archives\nthe change.\n\n## Publishing\n\nPublishing is automated through GitHub Actions using the same main-branch publish flow as `../pi-heimdall`:\n\n- `CI` runs on pull requests and manual dispatch with `npm ci`, `npm run typecheck`, and `npm run check:pack`\n- `Publish` runs on pushes to `main` and manual dispatch\n- if the `package.json` version is not already on npm, the workflow publishes it with trusted publishing\n- after a successful publish, the workflow bumps the patch version on `main` with `[skip ci]` so the repo is ready for the next publish\n- npmjs needs a Trusted Publisher entry for this repo\n- npm trusted publishing means no long-lived npm token secret is needed in GitHub\n\n## Notes\n\n- OpenSpec handles all planning: exploration, proposal creation, design, and spec generation.\n- Taskplane handles all execution: worker orchestration, review, and merge.\n- This package only bridges the two — it compiles approved OpenSpec contracts into Taskplane packets, manages conformance, and archives results.\n","readmeFilename":"README.md"}