@anyforge/control 0.7.1 → 0.8.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.
- package/README.md +62 -5
- package/dist/cli.js +191 -109
- 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`?
|
|
@@ -64,6 +82,7 @@ start a conversation or submit a read-only turn from a script:
|
|
|
64
82
|
```bash
|
|
65
83
|
anyforge oracle login
|
|
66
84
|
anyforge oracle
|
|
85
|
+
anyforge oracle -p "Summarize current risks"
|
|
67
86
|
anyforge oracle --program prog_123
|
|
68
87
|
anyforge oracle exec "Summarize current risks" --json
|
|
69
88
|
cat incident.log | anyforge oracle exec "Explain this log" --stream-json
|
|
@@ -98,8 +117,8 @@ with an explanation.
|
|
|
98
117
|
Interactive conversations are read only by default. Use `oracle login --write`
|
|
99
118
|
and start with `oracle --write` to enable workspace edits. Consequential edits
|
|
100
119
|
require a later explicit confirmation of the proposed action. Operator actions
|
|
101
|
-
and external MCP writes additionally require `--approve`. `oracle exec`
|
|
102
|
-
|
|
120
|
+
and external MCP writes additionally require `--approve`. `oracle exec` and
|
|
121
|
+
`oracle -p` always remain read only.
|
|
103
122
|
|
|
104
123
|
Use Shift+Enter for multiline input. Type `/` for the command palette:
|
|
105
124
|
`/help`, `/status` (session, workspace, access, model, last turn, usage and
|
|
@@ -108,8 +127,8 @@ limits), `/new`, `/clear`, `/resume`, `/workspace`, `/context`, `/attach`,
|
|
|
108
127
|
`/remember [what]` are answered by the Oracle itself, as in the web widget;
|
|
109
128
|
acting on `/catchup` decisions needs a session started with `--write --approve`.
|
|
110
129
|
|
|
111
|
-
While Oracle works,
|
|
112
|
-
|
|
130
|
+
While Oracle works, an indicator appears under its name immediately. A status
|
|
131
|
+
line shows elapsed time and the current step, and each tool appears as it runs. Enter queues
|
|
113
132
|
one follow-up message. Esc or Ctrl+C cancels the current run and keeps the
|
|
114
133
|
conversation open; press Ctrl+C twice, or Ctrl+D on an empty line, to exit.
|
|
115
134
|
Ctrl+O shows or hides finished tool activity; Ctrl+Shift+F searches the
|
|
@@ -125,6 +144,35 @@ attachment when a turn exceeds the remaining conversation limit.
|
|
|
125
144
|
`anyforge ask` keeps its existing stateless read-only API and JSON output.
|
|
126
145
|
See the [CLI guide](https://anyforge.ai/docs/cli) for the full command contract.
|
|
127
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
|
+
|
|
128
176
|
### Setup
|
|
129
177
|
|
|
130
178
|
| | |
|
|
@@ -151,6 +199,8 @@ See the [CLI guide](https://anyforge.ai/docs/cli) for the full command contract.
|
|
|
151
199
|
| `anyforge workflows` | List operator workflows | `read` |
|
|
152
200
|
| `anyforge run <id>` | Dispatch a run (`--input '{"repo":"acme/web"}'`) | `write` |
|
|
153
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 |
|
|
154
204
|
|
|
155
205
|
Every command takes `--json`, which prints the API payload verbatim:
|
|
156
206
|
|
|
@@ -170,6 +220,7 @@ CI gates on these, so they are a contract:
|
|
|
170
220
|
| `2` | Usage error |
|
|
171
221
|
| `3` | Not authenticated — run `init`, or set `ANYFORGE_API_TOKEN` |
|
|
172
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 |
|
|
173
224
|
| `130` | An Oracle run was interrupted: `exec` was cancelled with Ctrl+C, or you left an interactive session whose last answer you cancelled |
|
|
174
225
|
|
|
175
226
|
Errors and progress go to stderr, so a `--json` pipe stays parseable under a failure.
|
|
@@ -231,6 +282,12 @@ A successful check verifies the Control API used by MCP; confirm the actual MCP
|
|
|
231
282
|
connection in your agent client. It does not send an inference request or charge
|
|
232
283
|
for a test call.
|
|
233
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
|
+
|
|
234
291
|
The three connections are separate:
|
|
235
292
|
|
|
236
293
|
- **MCP** provides access to AnyForge work and tools. It does not route inference
|