@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.
- package/README.md +57 -1
- package/dist/cli.js +190 -110
- 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 --
|
|
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
|