@f-o-h/cli 0.1.75 → 0.1.77

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 CHANGED
@@ -1,177 +1,44 @@
1
- # Front Of House CLI
2
-
3
- AI-operator provisioning CLI for Front Of House.
4
-
5
- Public mirror: https://github.com/iiko38/front-of-house-cli
6
-
7
- Current published baseline: `@f-o-h/cli@0.1.48`
8
-
9
- This mirror is a generated release artifact. The private product monorepo is not
10
- published here, and no open-source license is granted unless stated separately.
11
-
12
- Package-local examples and schemas ship with the npm artifact:
13
-
14
- - `examples/scenario-suite.viewing.yml`
15
- - `examples/proof-report.example.json`
16
- - `examples/transcript-export.example.json`
17
- - `examples/improvement-packet.example.json`
18
- - `examples/external-agent-run.example.json`
19
- - `schemas/cli-envelope.schema.json`
20
- - `schemas/scenario-suite.schema.json`
21
- - `schemas/transcript-export.schema.json`
22
- - `schemas/improvement-packet.schema.json`
23
- - `schemas/external-agent-run.schema.json`
24
-
25
- ## Install
26
-
27
- ```bash
28
- npx @f-o-h/cli setup
29
- ```
30
-
31
- Or install globally:
32
-
33
- ```bash
34
- npm install -g @f-o-h/cli
35
- foh --help
36
- ```
37
-
38
- Verify the package version:
39
-
40
- ```bash
41
- npx @f-o-h/cli --version
42
- ```
43
-
44
- ## First Run
45
-
46
- ```bash
47
- foh auth signup --web
48
- foh auth login --web
49
- foh auth login
50
- foh org list
51
- foh org use --org <org-id>
52
- foh setup
53
- foh prove --agent <agent-id> --json
54
- ```
55
-
56
- For AI agents and text-only terminals:
57
-
58
- ```bash
59
- foh auth signup --web --json
60
- foh auth login --web --json
61
- foh auth login --email "$FOH_EMAIL" --password "$FOH_PASSWORD" --json
62
- foh org list --json
63
- foh org use --org <org-id> --json
64
- FOH_CLI_SPEND_POLICY=no_spend foh setup --org <org-id> --agent-template <template-id> --agent-name "Demo Agent" --phone-mode observe --json
65
- foh prove --agent <agent-id> --json --out foh-proof.json
66
- foh test run --suite ./suite.yml --agent <agent-id> --json --out foh-test-report.json
67
- foh agent replay --file ./transcript-export.json --json
68
- foh bug improve --from-file foh-proof.json --out foh-improvement.json --json
69
- ```
70
-
71
- Trusted server-side automation can use a scoped service token without browser
72
- approval:
1
+ # Front Of House CLI
73
2
 
74
- ```bash
75
- FOH_SERVICE_TOKEN="$FOH_SERVICE_TOKEN" FOH_ORG_ID="$FOH_ORG_ID" foh auth whoami --json
76
- ```
3
+ AI-operator provisioning CLI for Front Of House.
77
4
 
78
- `auth whoami --json` includes `auth.expires_at` and `auth.token_ttl_seconds`
79
- without exposing the token. Refresh short-lived eval tokens before long
80
- external-agent runs; controlled live eval execution fails closed when explicit
81
- `FOH_EXTERNAL_AGENT_EVAL_*` credentials are missing, expired, or expire before
82
- the run budget.
5
+ Public mirror: https://github.com/iiko38/front-of-house-cli
83
6
 
84
- `auth signup --web` opens the console signup page when possible and always
85
- prints the fallback URL. `auth login --web` starts browser device
86
- authorization, opens `/cli-auth`, waits for console approval, and stores the
87
- returned short-lived token. Credential auth remains available as fallback.
88
-
89
- `foh prove` produces a compact signed proof report across auth, org context,
90
- agent validation, contact phone readiness, voice provider health, widget
91
- channel/embed readiness, and widget smoke. It does not run release
92
- certification by default; run `foh certify run --agent <id> --profile release` (budget-safe default)
93
- before publish, or pass `--include-certification` only when you intentionally
94
- want the slower certification check inside proof. It is read-only by default;
95
- pass `--mutation-mode ensure` or `--repair` only when you explicitly want proof
96
- to ensure missing widget state. Use `--strict` in automation when holds should
97
- fail the command, and `--mission voice` or `--require-phone` when a
98
- voice/contact number is mandatory for the demo.
99
- Use `--contact-path byon` when the proof is meant to validate a
100
- customer-owned/BYON phone route; missing BYON config then reports
101
- `byon_voice_number_not_configured` instead of suggesting FOH number purchase.
102
- For repeated or parallel explicit-certification proof missions in AI-agent
103
- evals, pass `--include-certification --proof-cache-dir .foh/proof-cache` so
104
- simulation certification runs once and sibling proofs reuse the same signed
105
- certification detail.
106
-
107
- For mass AI-agent evals and repeated demo rehearsals, keep setup on the free
108
- scaffold lane:
109
-
110
- ```bash
111
- FOH_CLI_SPEND_POLICY=no_spend foh setup --org <org-id> --agent-template <template-id> --agent-name "Demo Agent" --phone-mode observe --json
112
- ```
113
-
114
- `--phone-mode observe` checks whether a contact phone already exists without
115
- buying one. `--phone-mode skip` bypasses the phone step. `--phone-mode purchase`
116
- is the explicit paid contact path and is fail-closed when
117
- `FOH_CLI_SPEND_POLICY=no_spend` is set.
118
-
119
- If managed-number provisioning is blocked by account/provider capacity or empty
120
- reserve inventory, proof reports `provider_capacity_blocked`; fix capacity or
121
- switch to BYON rather than retrying blindly.
7
+ Current published baseline: `@f-o-h/cli@0.1.77`
122
8
 
123
- Attach a customer-owned voice number without FOH purchasing inventory:
9
+ This mirror is a generated release artifact. The private product monorepo is not
10
+ published here, and no open-source license is granted unless stated separately.
11
+
12
+ ## Install
13
+
14
+ Use npm/npx. Do not clone the private monorepo for public setup.
124
15
 
125
16
  ```bash
126
- foh provision byon attach --phone-number <e164> --confirm-owned --org <org-id> --json
17
+ npx --yes @f-o-h/cli@latest --version
18
+ npx --yes @f-o-h/cli@latest start
127
19
  ```
128
20
 
129
- The attach command requires explicit ownership confirmation, writes the org's
130
- voice channel, returns Twilio webhook URLs, and preserves the cost boundary:
131
- the customer owns the number/provider account.
21
+ For repeat use:
132
22
 
133
- The CLI defaults to the production API at `https://api.frontofhouse.okii.uk`.
134
-
135
- ## External-Agent Eval Capture
136
-
137
- Use this when testing whether a clean coding agent can start from public docs
138
- and the public npm package without private repo context:
139
-
140
- ```bash
141
- foh eval external-agent batch \
142
- --models openai/codex,anthropic/claude,cursor/agent \
143
- --prompt-version blank-setup.v1 \
144
- --json
23
+ ```bash
24
+ npm install -g @f-o-h/cli@latest
25
+ foh --help
145
26
  ```
146
-
147
- Run each returned launch command in a clean agent terminal:
148
-
149
- ```bash
150
- foh eval external-agent run \
151
- --model-provider openai \
152
- --model-name codex \
153
- --prompt-version blank-setup.v1
154
- ```
155
-
156
- The command writes a versioned prompt, launches an instrumented shell, captures
157
- FOH CLI commands into `commands.ndjson`, and finalizes `run.json` as an
158
- `external_agent_run.v1` artifact when the shell exits.
159
27
 
160
- Run artifacts include `eval_state` so repeated benchmark runs make lifecycle
161
- intent explicit: reuse the existing eval org, agent, and widget by default;
162
- create ephemeral orgs only for explicit lifecycle tests; do not create paid
163
- phone resources unless a BYON/customer-owned or operator-approved paid lane is
164
- selected.
28
+ ## First Customer Path
165
29
 
166
- For no-spend evals, inspect reusable state before creating anything:
30
+ This is the path a blank AI coding agent or developer should try first:
167
31
 
168
32
  ```bash
169
- foh org status --json
170
- foh agent list --json
33
+ npx --yes @f-o-h/cli@latest auth signup --web --json
34
+ npx --yes @f-o-h/cli@latest auth login --web --json
35
+ npx --yes @f-o-h/cli@latest setup --phone-mode observe --json
36
+ npx --yes @f-o-h/cli@latest prove --agent <agent-id> --mission widget --json
37
+ npx --yes @f-o-h/cli@latest publish --agent <agent-id> --json
171
38
  ```
172
39
 
173
- If a reusable eval agent already exists, configure and prove that agent rather
174
- than creating a second bronze-tier agent.
40
+ `publish` consumes existing release evidence. If evidence is missing or stale,
41
+ it blocks with a reason code and `next_commands`; follow those commands exactly.
175
42
 
176
43
  ## Common Missions
177
44
 
@@ -180,80 +47,75 @@ than creating a second bronze-tier agent.
180
47
  | Start | `foh start` |
181
48
  | Setup | `foh setup --phone-mode observe --json` |
182
49
  | Prove | `foh prove --agent <agent_id> --mission widget --json` |
183
- | Certify | `foh certify run --agent <agent_id> --profile release --json` |
50
+ | Publish | `foh publish --agent <agent_id> --json` |
184
51
  | Debug | `foh debug --out test-results/foh-cli-diag.latest.json --json` |
185
- | Platform feedback | `foh bug improve --from-file <artifact.json> --json` |
186
- | Publish | `foh agent publish --agent <agent_id> --json` |
187
52
 
188
- For a planted knowledge-miss benchmark:
53
+ For AI agents: prefer `--json`, preserve command outputs as evidence, and follow
54
+ `next_commands` exactly when a command blocks.
55
+
56
+ ## Cost-Safe Phone Setup
57
+
58
+ Use the free scaffold lane for demos and repeated AI-agent tests:
189
59
 
190
60
  ```bash
191
- foh eval external-agent batch \
192
- --models openai/codex \
193
- --prompt-version knowledge-miss.v1 \
194
- --knowledge-question "Does 12 Acacia Avenue allow Saturday viewings?" \
195
- --expected-answer "Saturday viewings are available by appointment only." \
196
- --json
61
+ FOH_CLI_SPEND_POLICY=no_spend foh setup --phone-mode observe --json
197
62
  ```
198
63
 
199
- The prompt instructs the clean agent to run `foh knowledge query`, preserve the
200
- failure packet, and convert it with `foh bug improve`.
64
+ `--phone-mode observe` checks whether a contact phone already exists without
65
+ buying one. `--phone-mode skip` bypasses the phone step. `--phone-mode purchase`
66
+ is the explicit paid contact path and is fail-closed when
67
+ `FOH_CLI_SPEND_POLICY=no_spend` is set.
201
68
 
202
- For guarded programmable-runner planning:
203
-
204
- ```bash
205
- foh eval external-agent execute \
206
- --runner codex \
207
- --batch test-results/external-agent-runs/<batch>/batch.json \
208
- --codex-model gpt-5.3-codex \
209
- --dry-run \
210
- --json
69
+ Attach a customer-owned voice number without FOH purchasing inventory:
70
+
71
+ ```bash
72
+ foh provision byon attach --phone-number <e164> --confirm-owned --org <org-id> --json
211
73
  ```
212
74
 
213
- This writes `executor-plan.json`, creates intentionally empty clean workspaces
214
- outside the private repo, validates the local Codex binary/help flags, and
215
- prints exact `codex exec` commands without executing them. Use `--codex-model`
216
- to compare the same prompt across explicit Codex models; the selected runner
217
- model is recorded in `executor-plan.json` and controlled-run `run.json`.
218
-
219
- Before promoting run artifacts, scan and redact them:
220
-
221
- ```bash
222
- foh eval external-agent scan-artifacts \
223
- --run-dir test-results/external-agent-runs/<batch>/<run-id> \
224
- --private-repo-root <private-repo-root> \
225
- --write-redacted \
226
- --json
227
- ```
228
-
229
- After dry-run review, one controlled Codex run can be launched explicitly with
230
- `--live`. Live mode is intentionally limited to one run per batch and finalizes
231
- `run.json` even on timeout or non-zero exit:
232
-
233
- ```bash
234
- foh eval external-agent execute \
235
- --runner codex \
236
- --batch test-results/external-agent-runs/<one-model-batch>/batch.json \
237
- --timeout-minutes 30 \
238
- --live \
239
- --json
240
- ```
241
-
242
- For Linux eval hosts where Codex's default Bubblewrap sandbox cannot configure
243
- loopback networking, keep sandboxing enabled and select the legacy Landlock
244
- backend explicitly:
245
-
246
- ```bash
247
- foh eval external-agent execute \
248
- --runner codex \
249
- --batch test-results/external-agent-runs/<one-model-batch>/batch.json \
250
- --codex-sandbox-backend legacy-landlock \
251
- --codex-network-access \
252
- --timeout-minutes 30 \
253
- --live \
254
- --json
255
- ```
256
-
75
+ The attach command requires explicit ownership confirmation, writes the org's
76
+ voice channel, returns provider webhook URLs, and preserves the cost boundary:
77
+ the customer owns the number/provider account.
78
+
79
+ ## Auth Modes
80
+
81
+ `auth signup --web` opens the console signup page when possible and always
82
+ prints the fallback URL. `auth login --web` starts browser device authorization,
83
+ opens `/cli-auth`, waits for console approval, and stores a short-lived token.
84
+ Credential auth remains available as fallback.
85
+
86
+ Trusted server-side automation can use a scoped service token without browser
87
+ approval:
88
+
89
+ ```bash
90
+ FOH_SERVICE_TOKEN="$FOH_SERVICE_TOKEN" FOH_ORG_ID="$FOH_ORG_ID" foh auth whoami --json
91
+ ```
92
+
93
+ `auth whoami --json` includes `auth.expires_at` and `auth.token_ttl_seconds`
94
+ without exposing the token.
95
+
96
+ ## Package Artifacts
97
+
98
+ Package-local examples and schemas ship with the npm artifact:
99
+
100
+ - `examples/scenario-suite.viewing.yml`
101
+ - `examples/proof-report.example.json`
102
+ - `examples/transcript-export.example.json`
103
+ - `examples/improvement-packet.example.json`
104
+ - `examples/external-agent-run.example.json`
105
+ - `schemas/cli-envelope.schema.json`
106
+ - `schemas/scenario-suite.schema.json`
107
+ - `schemas/transcript-export.schema.json`
108
+ - `schemas/improvement-packet.schema.json`
109
+ - `schemas/external-agent-run.schema.json`
110
+
111
+ ## Advanced Operator Surfaces
112
+
113
+ These commands are intentionally outside the first customer path:
114
+
115
+ - `foh certify run --agent <agent_id> --profile release --json` produces release evidence when `publish` asks for it.
116
+ - `foh bug improve --from-file <artifact.json> --json` converts FOH product/docs/runtime failures into redacted improvement packets.
117
+ - `foh eval external-agent ...` runs the controlled external-agent benchmark harness.
118
+ - `foh sim ...` and Dojo-related certification flows are platform/operator testing surfaces.
257
119
  ## Local Scenario Suites
258
120
 
259
121
  `foh test run --suite <file>` runs deterministic widget-runtime checks for a