Skip to content

Commit 94cfc60

Browse files
committed
sync(bfmono): fix(gambit-simulator-ui): restore build chat composer focus after send (+19 more) (bfmono@e0af6e37d)
This PR is an automated gambitmono sync of bfmono Gambit packages. - Source: `packages/gambit/` - Core: `packages/gambit-core/` - bfmono rev: e0af6e37d Changes: - e0af6e37d fix(gambit-simulator-ui): restore build chat composer focus after send - 56c910860 fix(gambit-simulator): dock activity indicator above composer input - 568d1cde6 test(gambit-simulator): cover build chat activity lifecycle - 367d07aad feat(gambit-simulator): add build chat activity indicator states - 1bed909b0 fix(gambit-ui): recover build chat state when stop request fails - 9a6249fcd feat(gambit-ui): show stop control in build chat composer - 18a987db4 feat(gambit-ui): wire build chat stop lifecycle in workspace context - 71bde9b2e feat(gambit-server): add dedicated build stop endpoint - ba9995564 fix(gambit-simulator): prevent build run-switch trace and file refresh races - 23ab43c56 perf(gambit-simulator): batch build traces and throttle build file refreshes - 2c168e78a chore(gambit): format google provider stream call - 9c66ae0ff fix(gambit-core): enforce cancellation before final model output - 0be05ad47 fix(simulator): advance offset cache after snapshot append - 264285925 fix(simulator): prevent offset gaps when session event writes fail - 57d6eaf82 fix(simulator): avoid circular JSON failures in session event writes - b223f3126 fix(simulator): cancel in-flight build/test runs on stop-reset - 428e9e377 feat(gambit): forward runtime cancellation to first-party providers - 7b8c03843 feat(gambit-core): add runDeck abort signal contract - 5c7e74ff8 test(gambit-simulator-ui): cover build chat trace bucket rendering - ef91ac161 feat(gambit-simulator-ui): bucket build chat tool and reasoning traces Do not edit this repo directly; make changes in bfmono and re-run the sync.
1 parent 5356ee6 commit 94cfc60

161 files changed

Lines changed: 28242 additions & 5428 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,14 @@ since = "849762245925cce325c04da1d604088370ec3723"
77

88
## Unreleased (v0.8.4)
99

10-
- TBD
10+
- feat(gambit): add `createDefaultedRuntime` and defaulted `runDeck` wrapper
11+
with CLI-equivalent provider/model routing for library callers
12+
- refactor(gambit): route CLI runtime/provider setup through shared
13+
`default_runtime` construction path
14+
- feat(demo-runner): migrate demo test-deck prompt generation to Gambit default
15+
runtime wrapper (no hardwired OpenRouter provider)
16+
- docs(gambit): add migration guidance for `runDeck` wrapper and `runDeckCore`
17+
replacement mapping
1118

1219
## v0.8.3
1320

README.md

Lines changed: 74 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,10 @@ Drop into a REPL (streams by default):
100100
npx @bolt-foundry/gambit repl <deck>
101101
```
102102

103-
Run a persona against a root deck (test bot):
103+
Run a persona against a root deck (scenario):
104104

105105
```
106-
npx @bolt-foundry/gambit test-bot <root-deck> --test-deck <persona-deck>
106+
npx @bolt-foundry/gambit scenario <root-deck> --test-deck <persona-deck>
107107
```
108108

109109
Grade a saved session:
@@ -124,6 +124,23 @@ Tracing and state: 
124124
`--verbose` to print events\
125125
`--state <file>` to persist a session.
126126

127+
### Worker sandbox defaults
128+
129+
- Deck-executing CLI surfaces default to worker sandbox execution.
130+
- Use `--no-worker-sandbox` (or `--legacy-exec`) to force legacy in-process
131+
execution.
132+
- `--worker-sandbox` explicitly forces worker execution on.
133+
- `--sandbox` / `--no-sandbox` are deprecated aliases.
134+
- `gambit.toml` equivalent:
135+
```toml
136+
[execution]
137+
worker_sandbox = false # same as --no-worker-sandbox
138+
# legacy_exec = true # equivalent rollback toggle
139+
```
140+
141+
The npm launcher (`npx @bolt-foundry/gambit ...`) runs the Gambit CLI binary for
142+
your platform, so these defaults and flags apply there as well.
143+
127144
## Using the Simulator
128145

129146
The simulator is the local Debug UI that streams runs and renders traces.
@@ -173,6 +190,59 @@ Define `contextSchema`/`responseSchema` with Zod to validate IO, and implement\
173190
`ctx.spawnAndWait({ path, input })`. Emit structured trace events with\
174191
`ctx.log(...)`.
175192

193+
### Runtime defaults for programmatic `runDeck`
194+
195+
`runDeck` from `@bolt-foundry/gambit` now uses CLI-equivalent provider/model
196+
defaults (alias expansion, provider routing, fallback behavior).
197+
198+
Before (direct-provider setup in each caller):
199+
200+
```ts
201+
import { createOpenRouterProvider, runDeck } from "jsr:@bolt-foundry/gambit";
202+
203+
const provider = createOpenRouterProvider({
204+
apiKey: Deno.env.get("OPENROUTER_API_KEY")!,
205+
});
206+
await runDeck({
207+
path: "./root.deck.md",
208+
input: { message: "hi" },
209+
modelProvider: provider,
210+
});
211+
```
212+
213+
After (defaulted wrapper):
214+
215+
```ts
216+
import { runDeck } from "jsr:@bolt-foundry/gambit";
217+
218+
await runDeck({
219+
path: "./root.deck.md",
220+
input: { message: "hi" },
221+
});
222+
```
223+
224+
Per-runtime override (shared runtime object):
225+
226+
```ts
227+
import { createDefaultedRuntime, runDeck } from "jsr:@bolt-foundry/gambit";
228+
229+
const runtime = await createDefaultedRuntime({
230+
fallbackProvider: "codex-cli",
231+
});
232+
233+
await runDeck({
234+
runtime,
235+
path: "./root.deck.md",
236+
input: { message: "hi" },
237+
});
238+
```
239+
240+
Replacement mapping:
241+
242+
- Legacy direct core passthrough export: `runDeck` -> `runDeckCore`
243+
- Defaulted wrapper export: `runDeck`
244+
- Runtime builder: `createDefaultedRuntime`
245+
176246
---
177247

178248
## Author your first deck
@@ -271,8 +341,8 @@ npx @bolt-foundry/gambit serve ./examples/respond_flow/decks/root.deck.ts --port
271341
Then:
272342

273343
1. Open `http://localhost:8000/test`, pick the **Escalation persona**, and run
274-
it. Leave the “Use test deck input for init” toggle on to see persona data
275-
seed the init form automatically.
344+
it. Leave the “Use scenario deck input for init” toggle on to see persona
345+
data seed the init form automatically.
276346
2. Switch to the Debug tab to inspect the session—the child deck emits a
277347
`gambit_respond` payload that now shows up as a structured assistant turn.
278348
3. Head to the Calibrate tab and run the **Respond payload grader** to exercise

deno.jsonc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"bundle:sim:sourcemap": "deno run -A scripts/bundle_simulator_ui.ts --sourcemap=external",
2626
"bundle:sim:web": "deno run -A scripts/bundle_simulator_ui.ts --platform=browser",
2727
"bundle:sim:web:sourcemap": "deno run -A scripts/bundle_simulator_ui.ts --platform=browser --sourcemap=external",
28-
"serve:bot": "mkdir -p /tmp/gambit-bot-root && GAMBIT_BOT_ROOT=/tmp/gambit-bot-root deno run -A src/cli.ts serve src/decks/gambit-bot/PROMPT.md --bundle --port 8000",
28+
"serve:bot": "mkdir -p /tmp/gambit-bot-root && GAMBIT_SIMULATOR_BUILD_BOT_ROOT=/tmp/gambit-bot-root GAMBIT_BOT_ROOT=/tmp/gambit-bot-root deno run -A src/cli.ts serve src/decks/gambit-bot/PROMPT.md --bundle --port 8000",
2929
"serve:bot:sandbox": "deno run -A scripts/serve_bot_sandbox.ts",
3030
"build_npm": "deno run -A scripts/build_npm.ts"
3131
},

docs/external/concepts/runtime.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ safe/observable.
3131
- `gambit_end`: enable with `![end](gambit://cards/end.card.md)` in Markdown (or
3232
`allowEnd: true` in TypeScript decks). Calling it returns a sentinel
3333
`{ __gambitEnd: true, payload?, status?, message?, code?, meta? }` so
34-
CLI/test-bot loops stop reinjecting the closing assistant turn.
34+
CLI/scenario loops stop reinjecting the closing assistant turn.
3535

3636
## State and turn order
3737

docs/external/guides/authoring.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ verification.
1212
references (action/test/grader) and schema fragments into the parent deck.
1313
- Action decks are child decks exposed as model tools. Names must match
1414
`^[A-Za-z_][A-Za-z0-9_]*$` and avoid the `gambit_` prefix (reserved).
15-
- Persona/test decks may accept free-form user turns. Use the `acceptsUserTurns`
16-
flag to control this behavior: root decks default to `true`, while action
17-
decks default to `false`. Set it explicitly to `true` for persona/bot decks or
18-
to `false` for workflow-only decks.
15+
- Persona/scenario decks may accept free-form user turns. Use the
16+
`acceptsUserTurns` flag to control this behavior: root decks default to
17+
`true`, while action decks default to `false`. Set it explicitly to `true` for
18+
persona/bot decks or to `false` for workflow-only decks.
1919

2020
## Pick a format
2121

@@ -77,7 +77,7 @@ migrate a repository, run:
7777
deno run -A packages/gambit/scripts/migrate-schema-terms.ts <repo-root>
7878
```
7979

80-
## Action decks, test decks, grader decks
80+
## Action decks, scenario decks, grader decks
8181

8282
- Add action decks in front matter or TS definitions:
8383
`actionDecks = [{ name = "get_time", path = "./get_time.deck.ts" }]`.
@@ -101,10 +101,10 @@ deno run -A packages/gambit/scripts/migrate-schema-terms.ts <repo-root>
101101
should set `acceptsUserTurns = true` and may declare its own `contextSchema`
102102
(for example `contextSchema = "../schemas/my_persona_test.zod.ts"`) so the
103103
Test tab renders a schema-driven “Scenario” form for that persona.
104-
- For persona/test decks, you can embed
104+
- For persona/scenario decks, you can embed
105105
`![generate-test-input](gambit://cards/generate-test-input.card.md)` to
106-
include the Test Bot init-fill contract instructions.
107-
- Test Bot init fill: when a Test Bot run is missing required init fields, the
106+
include the scenario init-fill contract instructions.
107+
- Scenario init fill: when a scenario run is missing required init fields, the
108108
selected persona deck is asked to supply only the missing values before the
109109
run begins. The persona receives a single user message containing a JSON
110110
payload like:
@@ -133,8 +133,8 @@ deno run -A packages/gambit/scripts/migrate-schema-terms.ts <repo-root>
133133
- Markdown roots default to `true`; TypeScript decks default to `false`
134134
everywhere. Set it to `false` for any workflow deck that should never accept
135135
user turns (regardless of how it's run).
136-
- Persona/test decks should set `acceptsUserTurns = true` so they can receive
137-
messages even when invoked as non-root bots.
136+
- Persona/scenario decks should set `acceptsUserTurns = true` so they can
137+
receive messages even when invoked as non-root bots.
138138

139139
## Synthetic tools and handlers
140140

@@ -170,7 +170,7 @@ deno run -A packages/gambit/scripts/migrate-schema-terms.ts <repo-root>
170170
http://localhost:8000/debug.
171171
- Tracing: add `--verbose` for console traces or `--trace out.jsonl` to persist
172172
events; use `--state state.json` with `run` to persist conversation state
173-
between turns. When `--state` is omitted, test-bot/serve sessions default to
173+
between turns. When `--state` is omitted, scenario/serve sessions default to
174174
`<project-root>/.gambit/sessions/...` where each session includes `state.json`
175175
(materialized snapshot) plus append-only `events.jsonl`, `feedback.jsonl`, and
176176
`grading.jsonl` for downstream ingestion. The project root is the nearest

docs/external/reference/cli.md

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,22 @@ How to run Gambit, the agent harness framework, locally and observe runs.
1111
- Command help: `deno run -A src/cli.ts help <command>` (or
1212
`deno run -A src/cli.ts <command> -h`).
1313
- Run once:
14-
`deno run -A src/cli.ts run <deck> [--context <json|string>] [--message <json|string>] [--model <id>] [--model-force <id>] [--trace <file>] [--state <file>] [--stream] [--responses] [--verbose]`
14+
`deno run -A src/cli.ts run <deck> [--context <json|string>] [--message <json|string>] [--model <id>] [--model-force <id>] [--trace <file>] [--state <file>] [--stream] [--responses] [--verbose] [--worker-sandbox|--no-worker-sandbox|--legacy-exec]`
1515
- Check models: `deno run -A src/cli.ts check <deck>`
1616
- REPL: `deno run -A src/cli.ts repl <deck>` (defaults to
1717
`src/decks/gambit-assistant.deck.md` in a local checkout). Streams by default
1818
and keeps state in memory for the session.
19-
- Test bot (CLI):
20-
`deno run -A src/cli.ts test-bot <root-deck> --test-deck <persona-deck> [--context <json|string>] [--bot-input <json|string>] [--message <json|string>] [--max-turns <n>] [--state <file>] [--grade <grader-deck> ...] [--trace <file>] [--responses] [--verbose]`
19+
- Scenario (CLI):
20+
`deno run -A src/cli.ts scenario <root-deck> --test-deck <persona-deck> [--context <json|string>] [--bot-input <json|string>] [--message <json|string>] [--max-turns <n>] [--state <file>] [--grade <grader-deck> ...] [--trace <file>] [--responses] [--verbose] [--worker-sandbox|--no-worker-sandbox|--legacy-exec]`
2121
- Grade (CLI):
22-
`deno run -A src/cli.ts grade <grader-deck> --state <file> [--model <id>] [--model-force <id>] [--trace <file>] [--responses] [--verbose]`
22+
`deno run -A src/cli.ts grade <grader-deck> --state <file> [--model <id>] [--model-force <id>] [--trace <file>] [--responses] [--verbose] [--worker-sandbox|--no-worker-sandbox|--legacy-exec]`
2323
- Export bundle (CLI):
2424
`deno run -A src/cli.ts export [<deck>] --state <file> --out <bundle.tar.gz>`
2525
- Debug UI: `deno run -A src/cli.ts serve <deck> --port 8000` then open
2626
http://localhost:8000/. This serves a multi-page UI:
2727

2828
- Debug (default): `http://localhost:8000/debug`
29-
- Test: `http://localhost:8000/test-bot`
29+
- Test: `http://localhost:8000/test`
3030
- Calibrate: `http://localhost:8000/calibrate`
3131

3232
The WebSocket server streams turns, traces, and status updates.
@@ -46,15 +46,24 @@ How to run Gambit, the agent harness framework, locally and observe runs.
4646
- `GAMBIT_RESPONSES_MODE=1`: env alternative to `--responses` for runtime/state.
4747
- `GAMBIT_OPENROUTER_RESPONSES=1`: route OpenRouter calls through the Responses
4848
API (experimental; chat remains the default path).
49+
- Worker execution defaults on for deck-executing surfaces. Use
50+
`--no-worker-sandbox` (or `--legacy-exec`) to roll back to legacy in-process
51+
execution. `--sandbox/--no-sandbox` still work as deprecated aliases.
52+
- `gambit.toml` config equivalent:
53+
```toml
54+
[execution]
55+
worker_sandbox = false # same as --no-worker-sandbox
56+
# legacy_exec = true # equivalent rollback toggle
57+
```
4958

5059
## State and tracing
5160

52-
- `--state <file>` (run/test-bot/grade/export): load/persist messages so you can
61+
- `--state <file>` (run/scenario/grade/export): load/persist messages so you can
5362
continue a conversation; skips `gambit_context` on resume. `grade` writes
5463
`meta.gradingRuns` back into the session state, while `export` reads the state
5564
file to build the bundle.
5665
- `--out <file>` (export): bundle output path (tar.gz).
57-
- `--grade <grader-deck>` (test-bot): can be repeated; graders run in the order
66+
- `--grade <grader-deck>` (scenario): can be repeated; graders run in the order
5867
provided and append results to `meta.gradingRuns` in the same session state
5968
file.
6069
- `--trace <file>` writes JSONL trace events; `--verbose` prints trace to
@@ -91,17 +100,17 @@ How to run Gambit, the agent harness framework, locally and observe runs.
91100
`window.gambitFormatTrace` hook in the page; return a string or
92101
`{role?, summary?, details?, depth?}` to override the entry that appears in
93102
the Traces & Tools pane.
94-
- The Test page reuses the same simulator runtime but drives persona/test-bot
103+
- The Test page reuses the same simulator runtime but drives persona/scenario
95104
decks so you can batch synthetic conversations, inspect per-turn scoring, and
96105
export JSONL artifacts for later ingestion. List personas by declaring
97106
`[[testDecks]]` entries in your root deck (for example
98107
`gambit/examples/advanced/voice_front_desk/decks/root.deck.md`). Each entry’s
99108
`path` should point to a persona deck (Markdown or TS) that includes
100109
`acceptsUserTurns = true`; the persona deck’s own `contextSchema` and defaults
101-
power the Scenario/Test Bot form (see
110+
power the Scenario form (see
102111
`gambit/examples/advanced/voice_front_desk/tests/new_patient_intake.deck.md`).
103112
Editing those deck files is how you add/remove personas now—there is no
104-
`.gambit/test-bot.md` override.
113+
`.gambit/scenario.md` override.
105114
- The Calibrate page is the regroup/diagnostics view for graders that run
106115
against saved Debug/Test sessions; it currently serves as a placeholder until
107116
the grading transport lands.

docs/external/reference/cli/commands/bot.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
+++
22
command = "bot"
33
summary = "Run the Gambit bot assistant"
4-
usage = "gambit bot [<dir>] [--bot-root <dir>] [--model <id>] [--model-force <id>] [--responses] [--verbose]"
4+
usage = "gambit bot [<dir>] [--bot-root <dir>] [--model <id>] [--model-force <id>] [--responses] [--verbose] [--worker-sandbox|--no-worker-sandbox|--legacy-exec]"
55
flags = [
66
"--bot-root <dir> Allowed folder for bot file writes (defaults to workspace.decks if set; overrides <dir>)",
77
"--model <id> Default model id",
88
"--model-force <id> Override model id",
99
"--responses Run runtime/state in Responses mode",
10+
"--worker-sandbox Force worker execution on",
11+
"--no-worker-sandbox Force worker execution off",
12+
"--legacy-exec Alias for --no-worker-sandbox",
13+
"--sandbox Deprecated alias for --worker-sandbox",
14+
"--no-sandbox Deprecated alias for --no-worker-sandbox",
1015
"--verbose Print trace events to console",
1116
]
1217
+++

docs/external/reference/cli/commands/grade.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
+++
22
command = "grade"
33
summary = "Grade a saved state file"
4-
usage = "gambit grade <grader-deck.(ts|md)> --state <file> [--model <id>] [--model-force <id>] [--trace <file>] [--responses] [--verbose]"
4+
usage = "gambit grade <grader-deck.(ts|md)> --state <file> [--model <id>] [--model-force <id>] [--trace <file>] [--responses] [--verbose] [--worker-sandbox|--no-worker-sandbox|--legacy-exec]"
55
flags = [
66
"--grader <path> Grader deck path (overrides positional)",
77
"--state <file> Load/persist state",
88
"--model <id> Default model id",
99
"--model-force <id> Override model id",
1010
"--trace <file> Write trace events to file (JSONL)",
1111
"--responses Run runtime/state in Responses mode",
12+
"--worker-sandbox Force worker execution on",
13+
"--no-worker-sandbox Force worker execution off",
14+
"--legacy-exec Alias for --no-worker-sandbox",
15+
"--sandbox Deprecated alias for --worker-sandbox",
16+
"--no-sandbox Deprecated alias for --no-worker-sandbox",
1217
"--verbose Print trace events to console",
1318
]
1419
+++

docs/external/reference/cli/commands/repl.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,25 @@
11
+++
22
command = "repl"
33
summary = "Start an interactive REPL"
4-
usage = "gambit repl <deck.(ts|md)> [--context <json|string>] [--message <json|string>] [--model <id>] [--model-force <id>] [--responses] [--verbose]"
4+
usage = "gambit repl <deck.(ts|md)> [--context <json|string>] [--message <json|string>] [--model <id>] [--model-force <id>] [--responses] [--verbose] [-A|--allow-all|--allow-<kind>] [--worker-sandbox|--no-worker-sandbox|--legacy-exec]"
55
flags = [
66
"--context <json|string> Context payload (seeds gambit_context; legacy --init still works)",
77
"--message <json|string> Initial user message (sent before assistant speaks)",
88
"--model <id> Default model id",
99
"--model-force <id> Override model id",
1010
"--responses Run runtime/state in Responses mode",
1111
"--verbose Print trace events to console",
12+
"-A, --allow-all Allow all session permissions (read/write/run/net/env)",
13+
"--allow-read[=<paths>] Session read override (all when value omitted)",
14+
"--allow-write[=<paths>] Session write override (all when value omitted)",
15+
"--allow-run[=<entries>] Session run override (all when value omitted)",
16+
"--allow-net[=<hosts>] Session net override (all when value omitted)",
17+
"--allow-env[=<names>] Session env override (all when value omitted)",
18+
"--worker-sandbox Force worker execution on",
19+
"--no-worker-sandbox Force worker execution off",
20+
"--legacy-exec Alias for --no-worker-sandbox",
21+
"--sandbox Deprecated alias for --worker-sandbox",
22+
"--no-sandbox Deprecated alias for --no-worker-sandbox",
1223
]
1324
+++
1425

docs/external/reference/cli/commands/run.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
+++
22
command = "run"
33
summary = "Run a deck once"
4-
usage = "gambit run [<deck.(ts|md)>] [--context <json|string>] [--message <json|string>] [--model <id>] [--model-force <id>] [--trace <file>] [--state <file>] [--stream] [--responses] [--verbose]"
4+
usage = "gambit run [<deck.(ts|md)>] [--context <json|string>] [--message <json|string>] [--model <id>] [--model-force <id>] [--trace <file>] [--state <file>] [--stream] [--responses] [--verbose] [-A|--allow-all|--allow-<kind>] [--worker-sandbox|--no-worker-sandbox|--legacy-exec]"
55
flags = [
66
"--context <json|string> Context payload (seeds gambit_context; legacy --init still works)",
77
"--message <json|string> Initial user message (sent before assistant speaks)",
@@ -12,6 +12,17 @@ flags = [
1212
"--stream Enable streaming responses",
1313
"--responses Run runtime/state in Responses mode",
1414
"--verbose Print trace events to console",
15+
"-A, --allow-all Allow all session permissions (read/write/run/net/env)",
16+
"--allow-read[=<paths>] Session read override (all when value omitted)",
17+
"--allow-write[=<paths>] Session write override (all when value omitted)",
18+
"--allow-run[=<entries>] Session run override (all when value omitted)",
19+
"--allow-net[=<hosts>] Session net override (all when value omitted)",
20+
"--allow-env[=<names>] Session env override (all when value omitted)",
21+
"--worker-sandbox Force worker execution on",
22+
"--no-worker-sandbox Force worker execution off",
23+
"--legacy-exec Alias for --no-worker-sandbox",
24+
"--sandbox Deprecated alias for --worker-sandbox",
25+
"--no-sandbox Deprecated alias for --no-worker-sandbox",
1526
]
1627
+++
1728

0 commit comments

Comments
 (0)