@outerlayer/cli 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +15 -21
  3. package/dist/build-info.json +1 -1
  4. package/dist/{chunk-DEDV5V4U.js → chunk-4TNZMO7V.js} +1874 -3191
  5. package/dist/{chunk-RCQXYLMO.js → chunk-65WXAANR.js} +2 -17
  6. package/dist/{chunk-4H56Y7O6.js → chunk-DCNOXRMV.js} +1 -1
  7. package/dist/{chunk-IWIUYLDR.js → chunk-I3ETLSNE.js} +7 -187
  8. package/dist/{chunk-XN2XZFTK.js → chunk-NTTPJV35.js} +1 -1
  9. package/dist/{chunk-A6NNKRJU.js → chunk-NXLLURA4.js} +4 -4
  10. package/dist/{chunk-VU34RWDU.js → chunk-Q6CL5THG.js} +3 -2
  11. package/dist/{chunk-ECSYRPCC.js → chunk-R5KBGVII.js} +50 -4
  12. package/dist/chunk-U32VSRLO.js +2225 -0
  13. package/dist/chunk-WZBHBH3J.js +20 -0
  14. package/dist/{chunk-YMTXR7PJ.js → chunk-YOOSBOKS.js} +1 -1
  15. package/dist/{cli-3JYGL2OB.js → cli-G7DILYJY.js} +127 -138
  16. package/dist/{context-materialize-J6CRQ7O7.js → context-materialize-6WKT3RBQ.js} +1 -1
  17. package/dist/{emit-artifact-cmd-23F4YKQ3.js → emit-artifact-cmd-UQVT3OKW.js} +8 -6
  18. package/dist/{emit-finding-cmd-6K7ERPKG.js → emit-finding-cmd-FDOU2OPD.js} +8 -6
  19. package/dist/{emit-result-cmd-NDFHMJX7.js → emit-result-cmd-H2T4C2K3.js} +8 -6
  20. package/dist/{hook-fast-CBW4ZETX.js → hook-fast-J5LCDHUJ.js} +2 -2
  21. package/dist/{hook-wrap-fast-36WGE6EX.js → hook-wrap-fast-KXYNX3AD.js} +2 -2
  22. package/dist/index.js +4 -4
  23. package/dist/{loop-NFSOBUUJ.js → loop-ASZRX3CZ.js} +12 -10
  24. package/dist/{status-WGOJTXZF.js → status-I27IST4L.js} +10 -8
  25. package/dist/{statusline-fast-Z5U5CEC6.js → statusline-fast-3C5OXHDD.js} +2 -2
  26. package/dist/{sync-cmd-C5UGI4SF.js → sync-cmd-BBAUZ5JD.js} +8 -6
  27. package/dist/{watch-V3K4PESQ.js → watch-3DTPJETH.js} +8 -6
  28. package/dist/{work-claim-cmd-FQDWQVT2.js → work-claim-cmd-5AUNCLS2.js} +10 -8
  29. package/dist/{work-cmd-CW26EZZO.js → work-cmd-2P4BVX47.js} +9 -7
  30. package/dist/{work-launch-YNNCKIH3.js → work-launch-LT663PB3.js} +2 -1
  31. package/dist/{work-pr-cmd-W2QNMWXP.js → work-pr-cmd-AZQPWH4H.js} +8 -6
  32. package/package.json +1 -1
  33. package/dist/emit-commit-credit-cmd-2GX5M2BR.js +0 -121
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @outerlayer/cli
2
2
 
3
+ ## 0.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 4757f83: Remove `outerlayer emit commit-credit` and the commit journal hooks. `init` no longer installs the `post-rewrite`, `post-commit` and `prepare-commit-msg` hooks, commits no longer get an `OuterLayer-Session` trailer, and sync no longer recovers commits from the reflog. `init`, `hooks install-git` and `sync` remove the copies of those hooks an earlier version installed, and leave hooks you wrote alone. The `gitHooks` setting in `~/.outerlayer/config.json` is ignored.
8
+
9
+ ### Patch Changes
10
+
11
+ - 1251e83: Permissions are named over product nouns. A CLI login key now holds the `agent` preset (`sessions.ingest`, `sessions.read`, `evidence.insert`, `work.read`, `work.insert`, `git.read`, `context.read`), and the documented key presets are `agent`, `runner`, `reader` and `custom`.
12
+
13
+ ## 0.1.1
14
+
15
+ ### Patch Changes
16
+
17
+ - 7754c0d: Hooks installed with `npx @outerlayer/cli init` no longer break when npm clears its cache. Run from a package runner's cache (`npx`, `pnpm dlx`, `yarn dlx`, `bunx`), `init` copies the CLI to `~/.outerlayer/cli` and points every hook and the status line at that copy. Re-running `init` moves hooks an earlier version pointed into the npx cache, and `npx @outerlayer/cli@latest init` upgrades the copy. A global or project install is used where it is, as before. `doctor` now fails when a hook runs a file that no longer exists, instead of reporting the hooks as installed.
18
+
3
19
  ## 0.1.0
4
20
 
5
21
  ### Minor Changes
package/README.md CHANGED
@@ -67,10 +67,9 @@ content:
67
67
  repository — never the session's own content. `outerlayer work claim`
68
68
  records a lease for this host before it starts working on an item, so two
69
69
  hosts never build the same piece of work at once; `renew` extends it and
70
- `release` marks it done. A runner key needs `git_connection.read` to list
71
- and read items, `work_item_claim.insert` to claim, and
72
- `work_item_claim.update` to renew or release — the two claim permissions
73
- are not granted to a dashboard role by default, since a claim is a host's
70
+ `release` marks it done. A runner key needs `git.read` and `work.read` to
71
+ list and read items, and `work.claim` to claim, renew or release — `work.claim`
72
+ is not granted to a dashboard role by default, since a claim is a host's
74
73
  lease, not a person's.
75
74
  - **`outerlayer runner start`** lists, claims, renews and releases work
76
75
  items the same way `work claim`/`renew`/`release` do, on the schedule its
@@ -83,12 +82,11 @@ content:
83
82
  recording, a report, a log — along with its caption. With no recorded
84
83
  session to attach it to, it uploads immediately, anchored to a pull request
85
84
  or to the git checkout.
86
- - **`outerlayer emit <name>`** and **`outerlayer emit commit-credit`** send
87
- one check's outcome, and one commit's attribution, for a work item. Run
88
- from inside a session, they send only when that session carries a launch
89
- record — the session's own content may not leave by a second route. Run
90
- from CI or a plain shell, where there is no session, they send as they
91
- always have.
85
+ - **`outerlayer emit <name>`** sends one check's outcome for a work item.
86
+ Run from inside a session, it sends only when that session carries a
87
+ launch record — the session's own content may not leave by a second
88
+ route. Run from CI or a plain shell, where there is no session, it sends
89
+ as it always has.
92
90
  - **`outerlayer emit finding`** and **`outerlayer emit findings <file>`** send
93
91
  one finding, or a whole batch of them, for a work item — the same
94
92
  anchoring as `emit <name>` (`--item`, or the recorded session's own item),
@@ -145,7 +143,7 @@ before it gives up.
145
143
  |---|---|
146
144
  | `outerlayer sync` | Upload sessions launched with `OUTERLAYER_WORK` to your OuterLayer cloud workspace (incremental — only what's new since the last sync). Tier-gated client-side (`--tier metrics\|redacted\|full`, default `full`); `--dry-run` prints exactly what would leave the machine; `--all` re-sends everything (idempotent server-side). Credentials come from `outerlayer login`, `OUTERLAYER_*` env vars, or `--url/--app-id`. |
147
145
  | `outerlayer login [--url] [--app-id]` | Save the cloud URL, app id, and API key to `~/.outerlayer/config.json` once. The key is read from stdin (`echo "$KEY" \| outerlayer login …`) or a prompt with echo off; it is never a flag. `--no-input` refuses to prompt. |
148
- | `outerlayer init` | Install the capture hooks and the status-line segment. `--json` for scripts. Claude Code deletes transcripts after ~30 days; run `outerlayer daemon` separately to mirror them first — `init` does not start it for you. |
146
+ | `outerlayer init` | Install the capture hooks and the status-line segment. `--json` for scripts. Run through `npx`, it copies the CLI to `~/.outerlayer/cli` and points the hooks at that copy, so they survive npm clearing its cache; `npx @outerlayer/cli@latest init` upgrades it. From any other install, the hooks run that install. Claude Code deletes transcripts after ~30 days; run `outerlayer daemon` separately to mirror them first — `init` does not start it for you. |
149
147
  | `outerlayer daemon` | Run the copy-out daemon in the foreground (`--once` for a single sweep, which uploads nothing). Once cloud credentials exist, it also streams a launched session's new turns as they land — see Privacy, above. `outerlayer watch` is the former name and still works, with a warning. |
150
148
  | `outerlayer doctor` | Check the installation: hooks, status-line freshness, and sync health. `--json` prints the checks and a summary for scripts. |
151
149
  | `outerlayer context emit [--check]` | Compile `.outerlayer/` into each configured target tool's native files (targets come from `.outerlayer/config.json`). `--check` computes outputs and diffs against disk without writing (CI mode). Bare `outerlayer emit` with no name still compiles, with a deprecation warning. |
@@ -154,7 +152,6 @@ before it gives up.
154
152
  | `outerlayer emit artifact <file> --caption <text> [--for <criterion-id>] [--pr <n>]` | Upload a proof artifact — screenshot, recording, report, or log — with its caption. Inside a recorded session it spools locally and ships on the next `sync`; otherwise it uploads immediately, anchored to a pull request or the current checkout. `--replaces` retires artifacts an earlier run uploaded. |
155
153
  | `outerlayer emit <name> --result <pass\|fail> [--link <url>] [--body <text>\|--body-file <path>] --item <number>` | Record one named check's outcome on a work item. A check that ran carries the run URL as its proof (`--link`); a judgment you are making yourself carries one sentence (`--body`, or `--body-file` to read it from a file — `-` reads standard input). A `fail` needs at least one of the two; a `pass` needs neither. `--item` names the work item by the number printed when the item was created — always required, in or out of a recorded session; from inside a session it can only name an item that session was NOT launched for (a session cannot record a check on its own item). Prints the recorded check's id. Who recorded it comes from your API key, never from what you send. |
156
154
  | `outerlayer emit artifact-review --result <pass\|fail> --artifact <id> [--body <text>\|--body-file <path>]` | Record a person's own pass or fail on one artifact — evidence already emitted, bound to a criterion. `--artifact` names it and replaces `--item`; the gateway resolves the work item from the artifact's own pull request. `--link` is refused. A `fail` reads its sentence from `--body`/`--body-file`, or from standard input when neither is given. Refused from inside a recorded session — an artifact verdict is a person's act, the same rule the gateway enforces. Prints the recorded verdict's id. |
157
- | `outerlayer emit commit-credit --pr <n> …` | Send one commit's attribution for a pull request. |
158
155
  | `outerlayer emit finding --id <id> --subject <change\|context> --title <text> --file <path> --kind <behavior\|hygiene\|proof> --verdict <confirmed\|refuted\|unverified> --source <implementer\|reviewer\|refuter\|gate> --where <label> [--item <number>] …` | Record one finding — what was found wrong about the change (`--subject change`) or about a rule it ran on (`--subject context`, which then needs `--rule-path`, `--rule-quote` and `--rule-relation` together — all three are required, not just `--rule-path`). Validated against the same contract the gateway checks before anything is sent. `--item` names the work item; without it, inside a recorded session, the item that session was launched for is used automatically — unlike `emit <name>`, a session may record findings on its own item. Re-emitting the same `--id` on the item replaces that finding. |
159
156
  | `outerlayer emit findings <file> [--item <number>]` | Record a whole batch at once, read from a `FindingBatch` JSON file (`-` for standard input) — the same shape and validation as `emit finding`, one record per subject/title/file/kind/verdict/source/where. Anchored the same way: `--item`, else a recorded session's own item. |
160
157
  | `outerlayer mcp install [--transport stdio\|http] [--url] [--name] [--command]` | Write (or update) an `mcpServers` entry in `.mcp.json` for the OuterLayer gateway. Default `stdio`: the client spawns `outerlayer mcp serve`, which reads the API key from `~/.outerlayer/config.json` (or `OUTERLAYER_API_KEY`) each time it connects, so a reconnect picks up a newly saved or rotated key. `--transport http` writes a direct `POST /v1/mcp` entry referencing `${OUTERLAYER_API_KEY}`, resolved by the client from the environment it was launched with. Never writes an API key. Pass `--url`/`--app-id` for self-host. |
@@ -174,15 +171,12 @@ before it gives up.
174
171
  | `outerlayer runner status [--config <path>] [--recent] [--json]` | A header naming the runner's own state, then a row per running job — item, queue, stage, elapsed, started, lease, job directory. `--recent` adds finished jobs, newest first, capped at 20, with their outcomes. |
175
172
  | `outerlayer runner logs <item> [--config <path>] [-f]` | Prints the newest attempt's log for one item, following it with `-f`. |
176
173
 
177
- The `work` commands need an API key that carries `Ingest traces`
178
- (`trace.write`) to add, remove, and declare a pull request (`pr`), and `Read
179
- the Work page` (`git_connection.read`) to look an item up — which `remove` and
180
- `status` both do before they act. Tick both when you mint the key, in
181
- Settings → API keys. Claiming a lease needs `Claim work items`
182
- (`work_item_claim.insert`); renewing or releasing one needs `Renew or
183
- release work item claims` (`work_item_claim.update`). Withdrawing an
184
- addition somebody else made additionally needs `Withdraw others' work from
185
- the Work page` (`git_connection.update`).
174
+ The `work` commands need an API key that carries `work.insert` to add,
175
+ remove, and declare a pull request (`pr`), and `work.read` to look an item up
176
+ — which `remove` and `status` both do before they act. Tick both when you
177
+ mint the key, in Settings → API keys. Claiming, renewing or releasing a
178
+ lease needs `work.claim`. Withdrawing an addition somebody else made
179
+ additionally needs `work.update`.
186
180
 
187
181
  ### Recording your own pass or fail on a check
188
182
 
@@ -1 +1 @@
1
- {"id":"2026-09-23T16:41:05.295Z+7ad24522","root":"/Users/carbonteq/manage-ai/control-plane/cli-release","pkg":"outerlayer"}
1
+ {"id":"2026-09-25T19:18:18.529Z+059710d","root":"/home/runner/_work/outerlayer/outerlayer","pkg":"outerlayer"}