{"_id":"@builtbyberry/prymer-cli","_rev":"2-2a344d6a9a376c270a0c98f855f8a812","name":"@builtbyberry/prymer-cli","dist-tags":{"latest":"0.3.0"},"versions":{"0.2.0":{"name":"@builtbyberry/prymer-cli","version":"0.2.0","keywords":["prymer","mcp","context","hooks","cli"],"license":"MIT","_id":"@builtbyberry/prymer-cli@0.2.0","maintainers":[{"name":"builtbyberry","email":"daniel@builtbyberry.com"}],"homepage":"https://github.com/builtbyberry/swarmcloud/tree/main/cli/prymer#readme","bugs":{"url":"https://github.com/builtbyberry/swarmcloud/issues"},"bin":{"prymer":"bin/prymer.js"},"dist":{"shasum":"a357e41362f86e786d5b7858ed148e7b407fc9b8","tarball":"https://registry.npmjs.org/@builtbyberry/prymer-cli/-/prymer-cli-0.2.0.tgz","fileCount":8,"integrity":"sha512-eS9AzIkXT/vhccpbTc87tWM/62ulx2P+8V1V4ixnLf1ox35Bvijew6e8i7LvtzjUanIaF6izT+UeXZh1k16YmQ==","signatures":[{"sig":"MEYCIQDVAclyTdl0mpGEWMJ2smXw+GheWUb0UuvBP7zqqS6/8QIhAKRpaofKgjCtL8yi9GGPQccMTjaJeDC70feZjWxOgFSm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23301},"type":"module","engines":{"node":">=18"},"gitHead":"169f6fb47b7f79422d970325e785bbc49b44cf09","scripts":{"test":"node --test","prepublishOnly":"node --test"},"_npmUser":{"name":"builtbyberry","email":"daniel@builtbyberry.com"},"repository":{"url":"git+https://github.com/builtbyberry/swarmcloud.git","type":"git","directory":"cli/prymer"},"_npmVersion":"10.9.8","description":"The Prymer executing-hook helper: load context at session start and checkpoint at session stop, deterministically, from a scoped channel credential.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/prymer-cli_0.2.0_1784898730164_0.2151461984791212","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"_id":"@builtbyberry/prymer-cli@0.3.0","bin":{"prymer":"bin/prymer.js"},"bugs":{"url":"https://github.com/builtbyberry/swarmcloud/issues"},"dist":{"shasum":"5492267b44cc407e5aa24f81fdd8c4c8720c0465","tarball":"https://registry.npmjs.org/@builtbyberry/prymer-cli/-/prymer-cli-0.3.0.tgz","fileCount":9,"integrity":"sha512-sDdrBgwIVqOofvwV0sdHteL8bCO7zcLdssZxyGtz6wmYIbWeK8m4kUhTcA7sMLIPWfzNLGdQj4yF9t+vIhNNug==","signatures":[{"sig":"MEUCIBQazN4BWOcoHMWZ2stMz4hZiZaKeI5T5sczSBj4H2FLAiEAuV31WBKdq9NYy3BTl1PKg202stSpRZEnsXHbPxxLBfs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDULn/vcJqNddsPkDaB9qNdYwB2BYqxdf8RGdttXxfIfgIhAMZZeNjvCdcKVADwGYoBGjrDM8SDu03H/uxih68ypHts"}],"unpackedSize":27450},"name":"@builtbyberry/prymer-cli","type":"module","engines":{"node":">=18"},"gitHead":"57f73e21bebeaabfc215ceb1b4837c43217e3e8c","license":"MIT","scripts":{"test":"node --test","prepublishOnly":"node --test"},"version":"0.3.0","_npmUser":{"name":"builtbyberry","email":"daniel@builtbyberry.com"},"homepage":"https://github.com/builtbyberry/swarmcloud/tree/main/cli/prymer#readme","keywords":["prymer","mcp","context","hooks","cli"],"repository":{"url":"git+https://github.com/builtbyberry/swarmcloud.git","type":"git","directory":"cli/prymer"},"_npmVersion":"10.9.8","description":"The Prymer executing-hook helper: load context at session start and checkpoint at session stop, deterministically, from a scoped channel credential.","directories":{},"maintainers":[{"name":"builtbyberry","email":"daniel@builtbyberry.com"}],"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/prymer-cli_0.3.0_1790201100071_0.7914587834054718"}}},"time":{"created":"2026-07-24T13:12:10.051Z","modified":"2026-09-23T22:05:00.812Z","0.2.0":"2026-07-24T13:12:10.328Z","0.3.0":"2026-09-23T22:05:00.156Z"},"bugs":{"url":"https://github.com/builtbyberry/swarmcloud/issues"},"license":"MIT","homepage":"https://github.com/builtbyberry/swarmcloud/tree/main/cli/prymer#readme","keywords":["prymer","mcp","context","hooks","cli"],"repository":{"url":"git+https://github.com/builtbyberry/swarmcloud.git","type":"git","directory":"cli/prymer"},"description":"The Prymer executing-hook helper: load context at session start and checkpoint at session stop, deterministically, from a scoped channel credential.","maintainers":[{"name":"builtbyberry","email":"daniel@builtbyberry.com"}],"readme":"# `prymer` — Prymer executing-hook helper\n\nA small, dependency-free CLI for the **executing-hook power mode**. The web\nconnectors install _instructional_ hooks that nudge the model to call the Prymer\nMCP tools. This CLI instead runs the ritual itself, so the load step happens\ndeterministically — even when the model forgets.\n\nIt is built on Node's standard library only (no npm dependencies).\n\n## Install\n\n```bash\nnpm install -g @builtbyberry/prymer-cli\n```\n\n## Authenticate\n\n1. In Prymer, open **Settings → Connected tools** and create a **hook credential**\n   for the channel you want this machine to use. The token (`swhk_…`) is shown\n   once.\n2. Store it:\n\n```bash\nprymer login --url https://your-prymer-host --token swhk_xxx\n```\n\nThe token reaches exactly one channel and only the load + checkpoint verbs, so a\nleak is contained to that channel — never your whole account. On macOS it is kept\nin the login keychain; elsewhere in a `~/.prymer/*.json` file with `0600`\npermissions. Use `--profile <name>` to keep tokens for several channels side by\nside.\n\n## Use it in hooks\n\n```bash\nprymer install-hooks --client codex   # writes .codex/hooks.json\nprymer install-hooks --client claude  # writes .claude/settings.json\n```\n\nBoth write a `SessionStart` hook that runs `prymer inject --client <client>`. Codex\nand Claude Code both feed `SessionStart` stdout to the model as additional context,\nso the channel's context document loads automatically at the start of every\nsession.\n\n`prymer inject` also reads the `session_id` the coding tool passes to the hook on\nstdin and sends it (in the `X-Prymer-Session` header), so Prymer records which\nrecords reached your session in the workspace's content-access record. Upgrading\nto 0.3.0 is all that takes. `--client` only labels the delivery with your coding\ntool; to add it to an existing hook, edit the hook's command to\n`prymer inject --client <client>` rather than re-running `install-hooks`, which\nreplaces the whole settings file.\n\n## Commands\n\n| Command                                         | What it does                                                                                                                                                                                      |\n| ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `prymer login`                                  | Store a hook credential (verifies it before saving).                                                                                                                                              |\n| `prymer logout`                                 | Remove a stored credential.                                                                                                                                                                       |\n| `prymer whoami`                                 | Show the stored host + a masked token.                                                                                                                                                            |\n| `prymer inject [--client <codex\\|claude>]`      | Print the channel's context document (for `SessionStart`), sending the hook's session id so the delivery is recorded. Fails quiet so it never breaks a session; use `--strict` to surface errors. |\n| `prymer checkpoint --title <t> --summary <s>`   | Append a checkpoint. Idempotent per session + state; only shares when the channel's capture mode is **Auto**.                                                                                     |\n| `prymer install-hooks --client <codex\\|claude>` | Write the executing `SessionStart` hook for a client.                                                                                                                                             |\n\n### Checkpointing\n\n`inject` is fully deterministic — no model needed. A checkpoint, by contrast,\nneeds a summary worth keeping, so it's a step the agent (or you) takes when there\nis something to record rather than a blind Stop hook:\n\n```bash\nprymer checkpoint --session \"$SESSION_ID\" \\\n  --title \"Finished the billing fix\" \\\n  --summary \"Switched to Stripe; tests green.\"\n```\n\nThe idempotency key is derived from the session id + title + summary, so re-running\nthe same checkpoint for the same session is a no-op rather than a duplicate.\n\n## Test\n\n```bash\ncd cli/prymer && npm test\n```\n","readmeFilename":"README.md"}