{"_id":"@amolfi/cli","_rev":"7-d6f15289c5042fdce6a03b77cab0525d","name":"@amolfi/cli","dist-tags":{"latest":"0.1.0-rc.7"},"versions":{"0.1.0-rc.1":{"name":"@amolfi/cli","version":"0.1.0-rc.1","license":"UNLICENSED","_id":"@amolfi/cli@0.1.0-rc.1","maintainers":[{"name":"amolfi","email":"j@amolfi.com"}],"homepage":"https://amolfi.com/developers","bin":{"amolfi":"bin/amolfi.mjs"},"dist":{"shasum":"bdba2bb85cef141c4bb9212d775dd6a27d508e07","tarball":"https://registry.npmjs.org/@amolfi/cli/-/cli-0.1.0-rc.1.tgz","fileCount":8,"integrity":"sha512-4WL1AeY7UaA1+TWJfR1DX9dooa4esFeVxCmXkOMBM3vhbM3r3KAD1rvY6UUzS54CovrMybGrhDTT+lgOF9bajw==","signatures":[{"sig":"MEYCIQDV5HiAdksJx5puntz0VTXey204AOlozqseMmvyWFYiwwIhAKMTNkaejKyuDNlaKx7eA4NZ2pFrookP2MXEkw+yhuW2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22497},"type":"module","engines":{"node":">=20"},"gitHead":"3748a247bd69236e5f6b5fb829b528c1b32a1578","scripts":{"test":"node --test test/","pack:check":"npm pack --dry-run"},"_npmUser":{"name":"amolfi","email":"j@amolfi.com"},"_npmVersion":"10.8.2","description":"Amolfi from your terminal — a client of the public API contract (api.amolfi.com). Reads, Amo runs, and approvals that stay in the app. Published 2026-08-08 (D9, James) after live API receipts; the private guard is lifted now the preconditions are met.","directories":{},"_nodeVersion":"20.20.1","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.0-rc.1_1786220486505_0.5665376094050221","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc.2":{"name":"@amolfi/cli","version":"0.1.0-rc.2","license":"UNLICENSED","_id":"@amolfi/cli@0.1.0-rc.2","maintainers":[{"name":"amolfi","email":"j@amolfi.com"}],"homepage":"https://amolfi.com/developers","bin":{"amolfi":"bin/amolfi.mjs"},"dist":{"shasum":"3e738f03ec7d22b906237dede7ef1d86cd553cc4","tarball":"https://registry.npmjs.org/@amolfi/cli/-/cli-0.1.0-rc.2.tgz","fileCount":8,"integrity":"sha512-qBzwUF2mycDPkp6j4XFa6EUREJNvQZ363BKkkHFTvpNaq0HyXsLO1rNwbPPl5xdaSpLR5dZdNUrF/E/he3Hs+g==","signatures":[{"sig":"MEQCIHckuzB+8XZ3v8jwfmbY92qgl9qf7RgKRV23EtQ9SfXDAiBTdF3RRKK1ez8E0FdXJ64tIZ1egHeEQx7yiqw/DJZ13w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23046},"type":"module","engines":{"node":">=20"},"gitHead":"78a03c45ab111666d2455f7ca712979e2e894881","scripts":{"test":"node --test test/","pack:check":"npm pack --dry-run"},"_npmUser":{"name":"amolfi","email":"j@amolfi.com"},"_npmVersion":"10.8.2","description":"Amolfi from your terminal — a client of the public API contract (api.amolfi.com). Reads, Amo runs, and approvals that stay in the app. Published 2026-08-08 (D9, James) after live API receipts; the private guard is lifted now the preconditions are met.","directories":{},"_nodeVersion":"20.20.1","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.0-rc.2_1786221133797_0.772933057936871","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc.3":{"name":"@amolfi/cli","version":"0.1.0-rc.3","license":"SEE LICENSE IN LICENSE.md","_id":"@amolfi/cli@0.1.0-rc.3","maintainers":[{"name":"amolfi","email":"j@amolfi.com"}],"homepage":"https://amolfi.com/developers","bin":{"amolfi":"bin/amolfi.mjs"},"dist":{"shasum":"6a673c4c766c135bf988bf660e1ac6b7e905dd59","tarball":"https://registry.npmjs.org/@amolfi/cli/-/cli-0.1.0-rc.3.tgz","fileCount":9,"integrity":"sha512-YmMh1u0rPxi+YP6eiNb4Xpa7ErQdF+fUyoGUiOMVThOn3tMFh9e4mE+sbGfPdf6VnEa03IwZ4Ft1GrHMHprPvg==","signatures":[{"sig":"MEUCICOq1xRt1oIyAHKl4mmZ+FxBSHG0/xC4fba79RjY9BbSAiEAs1g34wQdq3AWrJ5GN3wdnNBowZ3QIHThF/r30Cf2CPI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26097},"type":"module","engines":{"node":">=20"},"gitHead":"9ddacab0c116706ead5ee428509e8b3f3e6195d9","scripts":{"test":"node --test test/","pack:check":"npm pack --dry-run"},"_npmUser":{"name":"amolfi","email":"j@amolfi.com"},"_npmVersion":"10.8.2","description":"Amolfi from your terminal — a client of the public API contract (api.amolfi.com). Reads, Amo runs, and approvals that stay in the app. Published 2026-08-08 (D9, James) after live API receipts; the private guard is lifted now the preconditions are met.","directories":{},"_nodeVersion":"20.20.1","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.0-rc.3_1786231922420_0.6624027975502249","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc.4":{"name":"@amolfi/cli","version":"0.1.0-rc.4","license":"SEE LICENSE IN LICENSE.md","_id":"@amolfi/cli@0.1.0-rc.4","maintainers":[{"name":"amolfi","email":"j@amolfi.com"}],"homepage":"https://amolfi.com/developers","bin":{"amolfi":"bin/amolfi.mjs"},"dist":{"shasum":"af9c24fb426c6d0e0ef264199bfe9ae18a7c6851","tarball":"https://registry.npmjs.org/@amolfi/cli/-/cli-0.1.0-rc.4.tgz","fileCount":11,"integrity":"sha512-mdhN6EUO8vcMjib8euMIZ7cEIF7XRkm5d8oKyi0TYK3C+RfRrUFXZrJrfnJC4BZjzwIgeHa4LkgLDqzEE9kD2w==","signatures":[{"sig":"MEUCIQCc03sTQPgffKfPCugOlGF/UmKd0oAk0wGSChEdJ2sVFAIgAQBVD7eBkW6kqQU26zCDbvxOeWHQqvuZqT7n5w5PgUs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43679},"type":"module","engines":{"node":">=20"},"gitHead":"6e9f0ca08cb919592d21a77ffea1700569aebc9c","scripts":{"test":"node --test test/","pack:check":"npm pack --dry-run"},"_npmUser":{"name":"amolfi","email":"j@amolfi.com"},"_npmVersion":"10.8.2","description":"Amolfi from your terminal — a client of the public API contract at api.amolfi.com. Reads, Amo runs, and approvals that stay in the app.","directories":{},"_nodeVersion":"20.20.1","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.0-rc.4_1786249370521_0.805210521211358","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc.5":{"name":"@amolfi/cli","version":"0.1.0-rc.5","license":"SEE LICENSE IN LICENSE.md","_id":"@amolfi/cli@0.1.0-rc.5","maintainers":[{"name":"amolfi","email":"j@amolfi.com"}],"homepage":"https://amolfi.com/model/api","bin":{"amolfi":"bin/amolfi.mjs"},"dist":{"shasum":"af0c9448ea84c98558b112ef35127503174961b2","tarball":"https://registry.npmjs.org/@amolfi/cli/-/cli-0.1.0-rc.5.tgz","fileCount":15,"integrity":"sha512-wGyb/93qK3sda2elnrd2sCy34Th0gaUEaNP+G2oALOQlRraqY3mFdGDsXB7gJima1pHqpfI1KnWvTm53YOSWDA==","signatures":[{"sig":"MEUCIQDsJ0P1aQlHM8XH1f27SzQTxFzBWu1GqehUs4BtQAL39gIgOzUou7tcN8U1Zk5ANtmmejUCboCMI+M1cvFQ6OhvLQU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72964},"type":"module","engines":{"node":">=20"},"gitHead":"24e95dc4c7a14cf16b6f3a96d26617c0ab5f6c16","scripts":{"test":"node --test test/*.test.mjs && ../../infra/node_modules/.bin/tsx --test test/*.test.mts","pack:check":"npm pack --dry-run"},"_npmUser":{"name":"amolfi","email":"j@amolfi.com"},"_npmVersion":"11.12.1","description":"Amolfi from your terminal. Read workspace records, start governed runs, and keep approvals in the app.","directories":{},"_nodeVersion":"26.0.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.0-rc.5_1786504963794_0.08734766831650176","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc.6":{"name":"@amolfi/cli","version":"0.1.0-rc.6","license":"SEE LICENSE IN LICENSE.md","_id":"@amolfi/cli@0.1.0-rc.6","maintainers":[{"name":"amolfi","email":"j@amolfi.com"}],"homepage":"https://amolfi.com/model/api","bin":{"amolfi":"bin/amolfi.mjs"},"dist":{"shasum":"f5b235d028bcca9541369e06c3f5d41a4608be12","tarball":"https://registry.npmjs.org/@amolfi/cli/-/cli-0.1.0-rc.6.tgz","fileCount":17,"integrity":"sha512-NGNxtJI0JSpndCUhQMEOgOM9AuYlv29Zv2+QhVowinkAtHDDgtfkVcY9vfiVrF2mGirUoEt8sYPsxs7iyJ7how==","signatures":[{"sig":"MEQCIExOQW6dJH1bbP2XfzqNu9ecrnMJTI1x4YxXMP9PIuGYAiAiSQBQjM1IT9fI50G0yufP0JLz5BTo8EBtQFDbn4FAPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97450},"type":"module","engines":{"node":">=20"},"gitHead":"7722a7ef086d6bc65cd61edf73fd0ecfcbaa6307","scripts":{"test":"node --test test/*.test.mjs && ../../infra/node_modules/.bin/tsx --test test/*.test.mts","pack:check":"npm pack --dry-run"},"_npmUser":{"name":"amolfi","email":"j@amolfi.com"},"_npmVersion":"11.12.1","description":"Amolfi from your terminal. Read workspace records, start governed runs, and keep approvals in the app.","directories":{},"_nodeVersion":"26.0.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.0-rc.6_1786517337180_0.991708550240062","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc.7":{"name":"@amolfi/cli","version":"0.1.0-rc.7","description":"Amolfi from your terminal. Read workspace records, start governed runs, and keep approvals in the app.","type":"module","publishConfig":{"access":"public"},"homepage":"https://amolfi.com/model/api","license":"SEE LICENSE IN LICENSE.md","bin":{"amolfi":"bin/amolfi.mjs"},"engines":{"node":">=20"},"scripts":{"test":"node --test test/*.test.mjs && ../../infra/node_modules/.bin/tsx --test test/*.test.mts","pack:check":"npm pack --dry-run"},"dependencies":{},"devDependencies":{},"gitHead":"b3f2e2ea14508832d36dac1399c4b675050802b8","_id":"@amolfi/cli@0.1.0-rc.7","_nodeVersion":"26.0.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-tRMVcpwDh565uolYQ6/q2qHrOjl0LHXLm1WqUlETwBfpPsgq0uIWZrarJi2EK+f5tHtzr7X0QtCLsqhg6SSxhQ==","shasum":"5c66f32e72ecf5e5841a6e5f729a89c2c269a720","tarball":"https://registry.npmjs.org/@amolfi/cli/-/cli-0.1.0-rc.7.tgz","fileCount":17,"unpackedSize":108887,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCwpPDDKfLJ/rlUESUTcbEuOshS1itS3RcuRuSrU2F28wIhAIGNiIKUkGgbcjnnXDVxeMblYRZ6qwCnnTQAFCR9RXem"}]},"_npmUser":{"name":"amolfi","email":"j@amolfi.com"},"directories":{},"maintainers":[{"name":"amolfi","email":"j@amolfi.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cli_0.1.0-rc.7_1786552132783_0.20372712675500426"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-08T20:21:26.262Z","modified":"2026-08-12T16:28:53.130Z","0.1.0-rc.1":"2026-08-08T20:21:26.662Z","0.1.0-rc.2":"2026-08-08T20:32:13.973Z","0.1.0-rc.3":"2026-08-08T23:32:02.634Z","0.1.0-rc.4":"2026-08-09T04:22:50.653Z","0.1.0-rc.5":"2026-08-12T03:22:43.953Z","0.1.0-rc.6":"2026-08-12T06:48:57.324Z","0.1.0-rc.7":"2026-08-12T16:28:52.939Z"},"license":"SEE LICENSE IN LICENSE.md","homepage":"https://amolfi.com/model/api","description":"Amolfi from your terminal. Read workspace records, start governed runs, and keep approvals in the app.","maintainers":[{"name":"amolfi","email":"j@amolfi.com"}],"readme":"# @amolfi/cli\n\nWork from your terminal. Approvals stay with the owner.\n\n`@amolfi/cli` is the dependency-free client for the public Amolfi API. It\nrequires Node 20 or newer.\n\n```bash\nnpm install -g @amolfi/cli\n```\n\nThis package is proprietary software. It is licensed for use with the Amolfi\nservice and is not open source. Read [LICENSE.md](./LICENSE.md).\n\n## Sign in\n\nRun the device flow for interactive work:\n\n```bash\namolfi login\n```\n\nThe CLI opens the server-issued sign-in page in your default browser. You use\nthe existing Amolfi account login and 2FA policy, choose the workspace there,\nand return to the terminal after the dedicated completion page appears. An\nalready-signed-in browser session is reused without skipping workspace choice\nor authorization. The credential stays in macOS Keychain or Linux Secret\nService. There is no plaintext file fallback.\n\nOn a headless machine, when browser launch fails, or with `amolfi login --manual`,\nthe CLI prints the one-time URL and code instead.\n\nSet `AMOLFI_TOKEN` for unattended callers such as CI, cron, or n8n. Mint the\nworkspace token in Amolfi and grant only the scopes the caller needs.\n\n```bash\nexport AMOLFI_TOKEN=amolfi_sk_...\n```\n\nThe default host is `https://api.amolfi.com`. Set `AMOLFI_API_URL` only when\nyou need another environment.\n\n## Commands\n\n```bash\namolfi                                  # interactive shell in a terminal\namolfi demo                             # local shell preview, no network call\namolfi health\namolfi scopes\n\namolfi team\namolfi webhooks\namolfi audit 50\n\namolfi files list\namolfi files put ./pricing-model.md\namolfi files get <id> --output ./copy.md\n\namolfi ask \"draft the October email from what shipped\"\namolfi ask \"prepare the campaign and bring back the finished plan\"  # Auto by default\namolfi ask --effort ultrawork \"audit the launch and return the finished brief\"\namolfi runs                              # recent durable work, current first\namolfi runs start --style collaborative \"prepare the renewal brief\"\namolfi runs select <run_id>              # shared across terminal processes\namolfi runs status                       # inspect the selected run\namolfi runs get <run_id>\namolfi runs watch [run_id]\namolfi runs guidance <run_id> \"shorter, warmer\"\namolfi runs cancel [run_id]\namolfi runs clear\n```\n\nThe interactive shell keeps its composer pinned to the bottom and follows the\ncurrent terminal width. Type a goal and press Enter. Amo starts the same\ngoverned run used by `amolfi ask`. The working indicator moves; Amo stays still.\nType `/help` for the local command palette. A shell session is one terminal\nview; a durable work run continues in Amolfi and can be selected, inspected,\nor followed from another terminal.\nUse `Shift+Tab` or `/style` to open the two-option working-style picker:\n\n- **Ask** does the work and pauses only when your judgment would materially\n  improve the result.\n- **Auto** is the default. It makes every reasonable judgment call, starts durable background\n  work, and returns the run id immediately.\n\nThe selection is sent to the public API and stored on the durable run, so another\nterminal sees the same truth. If a followed run reports `needs_input`, the next\nshell prompt answers and resumes that same run. This is distinct from\n`pending_approval`, which still settles only in the app.\n\nType `/effort` to open the full-width effort picker. `Left` and `Right` preview\nFast, Normal, High, and Ultrawork. `Enter` commits; `Escape` restores the value\nthat was active when you opened it. Normal is the default. The selected effort\nis sent to the API, stored on the durable run, and controls the canonical model\nroute. Ultrawork uses its own separately configurable heavy route.\n\nCrossing into Ultrawork ignites the terminal-cell spectrum once and then settles\ninto a slow field. `NO_COLOR`, `TERM=dumb`, a non-TTY stream, or\n`AMOLFI_REDUCED_MOTION=1` uses a clean static picker. No effort or working style\nchanges approval authority.\n\nExplicit commands remain line-oriented. They keep native scrollback, clean\ncopy and paste, and piping:\n\n```bash\namolfi ask \"prepare the renewal brief\" | tee run.txt\n```\n\nAdd `--json` to a read command for its raw response.\n\n## Authority\n\nThe CLI reads workspace records and starts governed runs. File upload is the\nonly direct byte-ingest command. It uses the same quota and malware scan gates\nas the app.\n\nAnything that sends, spends, signs, or publishes waits for the owner. A run in\n`pending_approval` prints the exact review address and exits successfully. The\nowner approves or declines in the app. A run in `needs_input` is different: it\nhas one work question that guidance may answer, but guidance cannot approve an\naction.\n\nCredential issuance, membership changes, provider connections, and approvals\nstay in the app. A machine credential cannot grant itself more authority.\n\n## Scopes\n\n`team`, `webhooks`, and `audit` require `workspace.team.read`,\n`workspace.webhooks.read`, and `workspace.audit.read`. A missing scope returns\n`SCOPE_REQUIRED`.\n\nFiles use separate least-privilege scopes:\n\n- `files.records.read` for metadata\n- `files.content.write` for scan-gated uploads\n- `files.content.read` for downloads\n\nKeep file-read credentials narrow, out of logs, and revoked when the caller no\nlonger needs them.\n\n## Output and exit codes\n\nInteractive output uses Amolfi Green for emphasis. Piped output is plain text.\n`NO_COLOR` disables color. `FORCE_COLOR=1`, `2`, or `3` enables ANSI color when\nyou need it.\n\n- `0`: completed, waiting for input, or waiting for owner approval\n- `1`: API, network, or file-transfer failure\n- `2`: invalid usage or configuration\n\n## Verify the package\n\n```bash\nnpm --prefix tools/cli test\nnpm --prefix tools/cli run pack:check\n```\n\nThe tests cover request headers, idempotent retries, rate-limit backoff,\ndevice-flow timing, native credential custody, governed-run receipts, public\ncatalog routing, scan-gated file transfer, installed-bin behavior, and\n`NO_COLOR` output.\n","readmeFilename":"README.md"}