@anyforge/control 0.7.2 → 0.8.1

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 (3) hide show
  1. package/README.md +57 -1
  2. package/dist/cli.js +190 -110
  3. package/package.json +5 -4
package/README.md CHANGED
@@ -14,6 +14,17 @@ The second half is what makes AnyForge usable from CI. Every command speaks the
14
14
  npx @anyforge/control init
15
15
  ```
16
16
 
17
+ Sign in to the workspace you want to connect. Issuing a Control key requires
18
+ an **Owner**, **Operator** or **Editor** role in that workspace. If approval
19
+ says **Editor or higher required**, ask a workspace owner to check your
20
+ membership and role, then rerun `init` with a new browser approval code.
21
+ Reinstalling the CLI does not change your permissions.
22
+
23
+ Owners and Operators can receive `read`, `write` and `approve` scopes.
24
+ Editors can receive `read` and `write` for planning, but cannot run crews or
25
+ approve gates. A role change does not add scopes to an existing key; rerun
26
+ `init` if the new role needs scopes your key lacks.
27
+
17
28
  The CLI:
18
29
 
19
30
  1. Issues a one-time auth code, opens your browser to authorise it.
@@ -45,9 +56,16 @@ The inference proxy is **BYOK-only**: it routes Claude Code through your own Ant
45
56
  `anyforge init` detects a subscription login and **skips patching**, steering you to the **AnyForge MCP server** instead — which keeps your subscription for inference and adds AnyForge control (HIL approvals, work items, crews) on top, with no auth conflict:
46
57
 
47
58
  ```bash
48
- claude mcp add anyforge --env ANYFORGE_API_KEY=<your key> -- npx -y @anyforge/mcp-server
59
+ claude mcp add anyforge -- npx -y @anyforge/mcp-server
49
60
  ```
50
61
 
62
+ Run this after `init`: the MCP server reads the credential and endpoint from
63
+ `~/.anyforge/credentials`, so no secret belongs in the command. If your MCP
64
+ client runs on another machine, configure its secret store with
65
+ `ANYFORGE_API_TOKEN` and `ANYFORGE_API_URL`; `ANYFORGE_API_KEY` is not the
66
+ MCP server's credential variable. Restart the client and check
67
+ `claude mcp list`.
68
+
51
69
  If you really want the metered BYOK proxy, re-run `anyforge init --force` (you'll need an Anthropic API key configured on your company; this disables your subscription in Claude Code until you `anyforge logout`).
52
70
 
53
71
  ### Why `ANTHROPIC_AUTH_TOKEN`, not `ANTHROPIC_API_KEY`?
@@ -126,6 +144,35 @@ attachment when a turn exceeds the remaining conversation limit.
126
144
  `anyforge ask` keeps its existing stateless read-only API and JSON output.
127
145
  See the [CLI guide](https://anyforge.ai/docs/cli) for the full command contract.
128
146
 
147
+ ### Oracle in ACP clients
148
+
149
+ `anyforge acp` exposes the hosted Oracle over Agent Client Protocol v1 stdio.
150
+ Sign in once with `anyforge oracle login`, then add a local ACP provider in
151
+ T3 Code with executable `anyforge` and argument `acp`. For an editor that
152
+ accepts command configuration:
153
+
154
+ ```json
155
+ {
156
+ "command": "anyforge",
157
+ "args": ["acp"]
158
+ }
159
+ ```
160
+
161
+ The adapter supports saved conversations, streaming answers, tool activity,
162
+ questions, cancellation and recovery after a stream disconnect. Read access
163
+ is the default. Add `--workspace <name-or-id>` to select a saved workspace,
164
+ or `--program`, `--initiative` or `--codebase` to select Oracle context.
165
+ Workspace changes need a suitable grant and `--write`; operator actions also
166
+ need `--approve` and your current role. The same Oracle confirmation rules apply.
167
+
168
+ This is a hosted Oracle integration: local files are never opened or changed,
169
+ and client-supplied MCP tools are omitted with a visible notice. T3's injected
170
+ tools are handled this way too. Your workspace's server-side tools remain
171
+ available within your access. This deliberately limited ACP profile does not
172
+ claim full protocol conformance. See the
173
+ [ACP setup guide](https://anyforge.ai/docs?page=acp) for limits
174
+ and setup details. ACP v2 is not supported.
175
+
129
176
  ### Setup
130
177
 
131
178
  | | |
@@ -152,6 +199,8 @@ See the [CLI guide](https://anyforge.ai/docs/cli) for the full command contract.
152
199
  | `anyforge workflows` | List operator workflows | `read` |
153
200
  | `anyforge run <id>` | Dispatch a run (`--input '{"repo":"acme/web"}'`) | `write` |
154
201
  | `anyforge ask <question>` | Ask the Oracle one question | `read` |
202
+ | `anyforge audit` | Page through the hash-chained audit trail (`--event`, `--actor`, `--from`, `--to`, `--cursor`, `--all`); `--verify` checks every hash and link across the pages read | `audit:read` + owner |
203
+ | `anyforge people invite <email> --role <role>` | Invite one person as operator, editor, viewer or filer on a verified company domain (`--team <ids>`, `--no-email`); `people invitations` lists the invitations the key could have written and `people withdraw <email>` withdraws a pending one | `people:invite` + owner |
155
204
 
156
205
  Every command takes `--json`, which prints the API payload verbatim:
157
206
 
@@ -171,6 +220,7 @@ CI gates on these, so they are a contract:
171
220
  | `2` | Usage error |
172
221
  | `3` | Not authenticated — run `init`, or set `ANYFORGE_API_TOKEN` |
173
222
  | `4` | The API refused; its error code, and any details the API sent with it, print to stderr |
223
+ | `5` | `audit --verify` found a broken link or an entry that no longer matches its hash |
174
224
  | `130` | An Oracle run was interrupted: `exec` was cancelled with Ctrl+C, or you left an interactive session whose last answer you cancelled |
175
225
 
176
226
  Errors and progress go to stderr, so a `--json` pipe stays parseable under a failure.
@@ -232,6 +282,12 @@ A successful check verifies the Control API used by MCP; confirm the actual MCP
232
282
  connection in your agent client. It does not send an inference request or charge
233
283
  for a test call.
234
284
 
285
+ If you used an older CLI, run `npx @anyforge/control@latest status` to use the
286
+ current diagnostics. Confirm the displayed workspace and user before checking
287
+ activity. In **Settings → API keys**, the last-used time shows credential use;
288
+ in **Traces**, **My activity** filters attributable traces to your user.
289
+ Older traces labelled **Unknown** cannot establish who made the request.
290
+
235
291
  The three connections are separate:
236
292
 
237
293
  - **MCP** provides access to AnyForge work and tools. It does not route inference