{"_id":"@anfilat/bit-by-bit","name":"@anfilat/bit-by-bit","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@anfilat/bit-by-bit","version":"0.1.0","description":"Step-by-step task management for Pi — splits LLM output into isolated task branches","author":{"name":"Andrey Filatkin"},"type":"module","keywords":["pi-package","pi"],"scripts":{"test":"vitest run","lint":"oxlint src/","lint:fix":"oxlint --fix src/","format":"oxfmt src/ test/","format:check":"oxfmt --check src/ test/","typecheck":"tsc --noEmit","extraction:compare":"node --experimental-strip-types extraction-check/compare.ts","extraction:update":"node --experimental-strip-types extraction-check/compare.ts --update"},"devDependencies":{"oxfmt":"^0.48.0","oxlint":"^1.63.0","simple-git-hooks":"^2.13.0","typescript":"^6.0.3","vitest":"^4.1.5"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*","@earendil-works/pi-tui":"*","@sinclair/typebox":"*"},"simple-git-hooks":{"pre-commit":"npx oxfmt --check src/ test/ && npx oxlint src/ && npx vitest run"},"pi":{"extensions":["./src"]},"repository":{"type":"git","url":"git+https://github.com/anfilat/bit-by-bit.git"},"homepage":"https://github.com/anfilat/bit-by-bit#readme","bugs":{"url":"https://github.com/anfilat/bit-by-bit/issues"},"license":"MIT","gitHead":"6af1c44dddb65e40c2f20da4c1f16b2a18be991a","_id":"@anfilat/bit-by-bit@0.1.0","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-gv2MlU9Fi1+Paf47OLbilrGyNmyc5ajP72qm6/G7osVPG667Sa/LFel666oweAmOhxMZw316klQSyvGM/aEkvw==","shasum":"5790f3f66d5d14eb7d4d0ddc80dd51bcea7eb014","tarball":"https://registry.npmjs.org/@anfilat/bit-by-bit/-/bit-by-bit-0.1.0.tgz","fileCount":20,"unpackedSize":52127,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICa7Ps7/wPIoZ0tcpYccsDEyeShfsl+iBhOJpNh6kjdNAiB/P1HuCtSO7NpRSkrlRbRo0Zy39FeUGkt1XhtQi+x/ag=="}]},"_npmUser":{"name":"anfilat","email":"anfilat@gmail.com"},"directories":{},"maintainers":[{"name":"anfilat","email":"anfilat@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bit-by-bit_0.1.0_1778499912341_0.016552204849777707"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-11T11:45:12.216Z","0.1.0":"2026-05-11T11:45:12.540Z","modified":"2026-05-11T11:45:12.773Z"},"maintainers":[{"name":"anfilat","email":"anfilat@gmail.com"}],"description":"Step-by-step task management for Pi — splits LLM output into isolated task branches","homepage":"https://github.com/anfilat/bit-by-bit#readme","keywords":["pi-package","pi"],"repository":{"type":"git","url":"git+https://github.com/anfilat/bit-by-bit.git"},"author":{"name":"Andrey Filatkin"},"bugs":{"url":"https://github.com/anfilat/bit-by-bit/issues"},"license":"MIT","readme":"# bit-by-bit\n\nA [Pi](https://github.com/earendil-works/pi) extension for step-by-step task management.\n\nWhen an LLM produces a long list — review feedback, plan items, a set of ideas — it's hard to handle all at once.\nThis extension splits such a list into individual tasks and lets you focus on one at a time.\nYou can switch between tasks and mark them done — each one lives in its own branch,\nso the assistant only works on the current task without being distracted by the rest.\n\n## Install\n\n```bash\npi install npm:@anfilat/bit-by-bit\n```\n\n## Usage\n\n1. Ask the LLM to produce a numbered list — a review, a plan, a set of issues, anything with distinct items.\n2. Run `/bit-by-bit` — the extension extracts each item into a separate task and navigates to the first one.\n3. Work on the task. When done, use `/bit-by-bit done` to mark it done and `/bit-by-bit next` to move to next one.\n\n### Commands\n\n| Command | Description |\n|---------|-------------|\n| `/bit-by-bit` | Extract tasks from last assistant message, start first task |\n| `/bit-by-bit choose` | Show task list, switch to chosen task |\n| `/bit-by-bit next` | Go to next task |\n| `/bit-by-bit prev` | Go to previous task |\n| `/bit-by-bit done` | Mark current task as done |\n| `/bit-by-bit undone` | Unmark current task |\n| `/bit-by-bit write` | Write a task document to `bit-by-bit/` directory, so you can shelve it for later |\n| `/bit-by-bit off` | Pause bit-by-bit mode |\n| `/bit-by-bit resume` | Resume after pause |\n\n### Status bar\n\nWhen active, the status bar shows:\n\n```\nbit-by-bit: 3/12(✓2) | ✗ ▸ Fix null pointer in UserService\n```\n\n- `3/12` — current task / total\n- `✓2` — tasks marked done\n- `✗` or `✓` — current task status\n\nIf you navigate outside the task branches (via `/tree`), it shows:\n\n```\nbit-by-bit: 12(✓2) | ⚠ Outside task area\n```\n\n## How it works\n\n1. **Extraction** — `/bit-by-bit` calls the current model to parse the last assistant message into items.\n2. **Branching** — Each task gets its own branch forked from the current point in the session tree.\n3. **Context isolation** — On every turn, the extension injects a context message telling the assistant to focus only on the current task.\n4. **Persistence** — All state (tasks, done/off/resume markers, branch mappings) is stored in the session tree as custom entries. Full state reconstruction happens on session restore.\n5. **Shelving tasks** — `/bit-by-bit write` generates a markdown document describing the current task, so you can set it aside and come back to it later.\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-c28e4b82393deb2b335bb7376ab4711e"}