diff --git a/apps/server/src/j5/a2a/CrewLaunchService.test.ts b/apps/server/src/j5/a2a/CrewLaunchService.test.ts index 0d83474f34b0..23f7d6f5ce81 100644 --- a/apps/server/src/j5/a2a/CrewLaunchService.test.ts +++ b/apps/server/src/j5/a2a/CrewLaunchService.test.ts @@ -809,7 +809,7 @@ it.effect( assert.equal(resolved.runtimeMode, "approval-required"); assert.equal(resolved.runtime.harness, "Claude Code"); assert.equal(resolved.runtime.reasoning, "low"); - assert.equal(resolved.runtime.access, "Approval required"); + assert.equal(resolved.runtime.access, "Supervised"); assert.deepStrictEqual(resolved.runtime.modelSelection, custom.modelSelection); assert.equal(resolved.runtime.runtimeMode, custom.runtimeMode); const instance = yield* launcher.launch({ @@ -876,7 +876,7 @@ it.effect( ]) .pipe(Effect.flip); assert.equal(invalidAccess._tag, "CrewLaunchSeatUnavailableError"); - assert.include(invalidAccess.message, "Choose Approval required or Full access"); + assert.include(invalidAccess.message, "Choose Supervised or Full access"); // Neither configured provider advertises Critic's saved model: the human override // still launches, preserving its snapshot and behavior on the selected harness. const personaSeat = { diff --git a/apps/server/src/j5/a2a/CrewLaunchService.ts b/apps/server/src/j5/a2a/CrewLaunchService.ts index 0fdf88de8aec..7a3b11545e44 100644 --- a/apps/server/src/j5/a2a/CrewLaunchService.ts +++ b/apps/server/src/j5/a2a/CrewLaunchService.ts @@ -281,7 +281,7 @@ export const layer = Layer.effect( seatName: seat.name, agentId: "custom seat", detail: - "This ACP harness cannot enforce the selected access mode. Choose Approval required or Full access.", + "This ACP harness cannot enforce the selected access mode. Choose Supervised or Full access.", }); // Custom seats carry the selected access mode, without a persona sandbox assignment. resolved.push({ @@ -377,7 +377,7 @@ export const layer = Layer.effect( seatName: seat.name, agentId, detail: - "This ACP harness cannot enforce the selected access mode. Choose Approval required or Full access.", + "This ACP harness cannot enforce the selected access mode. Choose Supervised or Full access.", }); // The obligation is read from the same immutable snapshot the seat will run on, so a // later library edit cannot change what a running seat owes. diff --git a/apps/server/src/j5/a2a/CrewProposalsHttp.test.ts b/apps/server/src/j5/a2a/CrewProposalsHttp.test.ts index 7605bc389c27..cb75a0186dcb 100644 --- a/apps/server/src/j5/a2a/CrewProposalsHttp.test.ts +++ b/apps/server/src/j5/a2a/CrewProposalsHttp.test.ts @@ -84,7 +84,7 @@ it("lists open proposals for readers and resolves them only for operators", asyn harness: "Claude Code", model: "Claude Fable 5.1", reasoning: "High", - access: "Approval required", + access: "Supervised", modelSelection: customSeat.modelSelection, runtimeMode: customSeat.runtimeMode, }, @@ -155,7 +155,7 @@ it("lists open proposals for readers and resolves them only for operators", asyn harness: "Claude Code", model: "Claude Fable 5.1", reasoning: "High", - access: "Approval required", + access: "Supervised", modelSelection: customSeat.modelSelection, runtimeMode: customSeat.runtimeMode, }, diff --git a/apps/server/src/j5/a2a/crewRuntimePreview.ts b/apps/server/src/j5/a2a/crewRuntimePreview.ts index e18982134420..e3fafa6d4b8c 100644 --- a/apps/server/src/j5/a2a/crewRuntimePreview.ts +++ b/apps/server/src/j5/a2a/crewRuntimePreview.ts @@ -126,8 +126,8 @@ export function describeCrewSeatRuntime( : mode === "auto" ? "Auto" : mode === "auto-accept-edits" - ? "Accept edits" - : "Approval required"; + ? "Auto-accept edits" + : "Supervised"; return { seat, provider: providerName(provider, model?.subProvider), diff --git a/apps/web/src/j5/crew/crewSeatRuntime.test.ts b/apps/web/src/j5/crew/crewSeatRuntime.test.ts index 84f26ed029e8..a89027cf6414 100644 --- a/apps/web/src/j5/crew/crewSeatRuntime.test.ts +++ b/apps/web/src/j5/crew/crewSeatRuntime.test.ts @@ -115,7 +115,7 @@ describe("crew member edits", () => { }); it.each(["auto", "auto-accept-edits"] as const)( - "switches unsupported ACP %s access to explicit Approval required", + "switches unsupported ACP %s access to explicit Supervised", (runtimeMode) => { const draft = { ...crewSeatDraft(seat), runtimeMode }; const acp = { diff --git a/apps/web/src/j5/crew/crewSeatRuntime.ts b/apps/web/src/j5/crew/crewSeatRuntime.ts index bb0920cbf1db..807baa46f236 100644 --- a/apps/web/src/j5/crew/crewSeatRuntime.ts +++ b/apps/web/src/j5/crew/crewSeatRuntime.ts @@ -21,13 +21,13 @@ export interface CrewSeatDraft { export const CREW_ACCESS_OPTIONS = [ { value: "approval-required", - label: "Approval required", + label: "Supervised", description: "Ask before commands and file changes.", }, { value: "auto-accept-edits", - label: "Accept edits", - description: "Approve edits; ask before other actions.", + label: "Auto-accept edits", + description: "Auto-approve edits, ask before other actions.", }, { value: "auto", @@ -82,7 +82,7 @@ export const crewModelSelection = ( return { instanceId: provider.instanceId, model: model.slug, ...(options ? { options } : {}) }; }; -/** ACP cannot enforce Auto or Accept edits; a harness switch visibly chooses its supervised mode. */ +/** ACP cannot enforce Auto or Auto-accept edits; a harness switch visibly chooses its supervised mode. */ export const chooseCrewHarness = ( draft: CrewSeatDraft, provider: Pick,