genaicode 2.11.0 → 2.13.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.
Files changed (77) hide show
  1. package/CHANGELOG.md +44 -1
  2. package/README.md +18 -16
  3. package/dist/agents/cli-agent.d.ts +6 -3
  4. package/dist/agents/cli-agent.js +57 -35
  5. package/dist/agents/cli-agent.js.map +1 -1
  6. package/dist/agents/drivers/antigravity.d.ts +7 -1
  7. package/dist/agents/drivers/antigravity.js +27 -2
  8. package/dist/agents/drivers/antigravity.js.map +1 -1
  9. package/dist/agents/drivers/claude-approvals.d.ts +86 -0
  10. package/dist/agents/drivers/claude-approvals.js +277 -0
  11. package/dist/agents/drivers/claude-approvals.js.map +1 -0
  12. package/dist/agents/drivers/claude.d.ts +12 -2
  13. package/dist/agents/drivers/claude.js +73 -11
  14. package/dist/agents/drivers/claude.js.map +1 -1
  15. package/dist/agents/drivers/codex-approvals.d.ts +10 -0
  16. package/dist/agents/drivers/codex-approvals.js +102 -0
  17. package/dist/agents/drivers/codex-approvals.js.map +1 -0
  18. package/dist/agents/drivers/codex-live.d.ts +12 -1
  19. package/dist/agents/drivers/codex-live.js +46 -32
  20. package/dist/agents/drivers/codex-live.js.map +1 -1
  21. package/dist/agents/drivers/codex.d.ts +10 -1
  22. package/dist/agents/drivers/codex.js +48 -2
  23. package/dist/agents/drivers/codex.js.map +1 -1
  24. package/dist/agents/drivers/copilot.d.ts +9 -1
  25. package/dist/agents/drivers/copilot.js +31 -1
  26. package/dist/agents/drivers/copilot.js.map +1 -1
  27. package/dist/agents/drivers/cursor.d.ts +10 -1
  28. package/dist/agents/drivers/cursor.js +48 -5
  29. package/dist/agents/drivers/cursor.js.map +1 -1
  30. package/dist/agents/drivers/gemini.d.ts +11 -1
  31. package/dist/agents/drivers/gemini.js +46 -2
  32. package/dist/agents/drivers/gemini.js.map +1 -1
  33. package/dist/agents/drivers/muse-approvals.d.ts +19 -0
  34. package/dist/agents/drivers/muse-approvals.js +156 -0
  35. package/dist/agents/drivers/muse-approvals.js.map +1 -0
  36. package/dist/agents/drivers/muse-live.d.ts +5 -1
  37. package/dist/agents/drivers/muse-live.js +21 -109
  38. package/dist/agents/drivers/muse-live.js.map +1 -1
  39. package/dist/agents/drivers/opencode.d.ts +7 -1
  40. package/dist/agents/drivers/opencode.js +28 -2
  41. package/dist/agents/drivers/opencode.js.map +1 -1
  42. package/dist/agents/drivers/permission-args.d.ts +14 -0
  43. package/dist/agents/drivers/permission-args.js +40 -0
  44. package/dist/agents/drivers/permission-args.js.map +1 -0
  45. package/dist/agents/drivers/vibe.d.ts +9 -1
  46. package/dist/agents/drivers/vibe.js +40 -2
  47. package/dist/agents/drivers/vibe.js.map +1 -1
  48. package/dist/agents/hosted.js +6 -0
  49. package/dist/agents/hosted.js.map +1 -1
  50. package/dist/agents/live-agent.d.ts +49 -4
  51. package/dist/agents/live-agent.js +84 -15
  52. package/dist/agents/live-agent.js.map +1 -1
  53. package/dist/agents/permissions.d.ts +27 -0
  54. package/dist/agents/permissions.js +79 -0
  55. package/dist/agents/permissions.js.map +1 -0
  56. package/dist/agents/prepare.d.ts +12 -1
  57. package/dist/agents/prepare.js +18 -3
  58. package/dist/agents/prepare.js.map +1 -1
  59. package/dist/agents/rpc.d.ts +13 -2
  60. package/dist/agents/rpc.js +20 -2
  61. package/dist/agents/rpc.js.map +1 -1
  62. package/dist/agents/runtime.d.ts +2 -0
  63. package/dist/agents/runtime.js +10 -0
  64. package/dist/agents/runtime.js.map +1 -1
  65. package/dist/agents/session.d.ts +4 -1
  66. package/dist/agents/session.js +31 -6
  67. package/dist/agents/session.js.map +1 -1
  68. package/dist/agents/types.d.ts +56 -7
  69. package/dist/agents.d.ts +21 -13
  70. package/dist/agents.js +14 -9
  71. package/dist/agents.js.map +1 -1
  72. package/dist/react/agent-chat.js +10 -2
  73. package/dist/react/agent-chat.js.map +1 -1
  74. package/dist/ui/index.js +69 -69
  75. package/dist/ui/web-client.js +9 -9
  76. package/docs/agents.md +127 -19
  77. package/package.json +5 -5
@@ -1,18 +1,62 @@
1
1
  import { cliAgent } from '../cli-agent.js';
2
+ import { exclusiveOption, resolvePermissions } from '../permissions.js';
2
3
  import { isObject, numberField, stringField } from './json.js';
3
4
  const EDIT_TOOLS = new Set(['replace', 'write_file', 'edit']);
5
+ /**
6
+ * Gemini CLI flags for `permissions`. `deny` is approval mode `auto_edit` (edits run, other
7
+ * tools are refused headless), `auto-approve` is `yolo`, and `read-only` is `plan`, which
8
+ * cannot be combined with `auto-approve`. `workspace-write` runs Gemini in its sandbox
9
+ * (`--sandbox`: Seatbelt on macOS, Docker or Podman elsewhere; Gemini fails to start when
10
+ * none is available) and `unrestricted` turns it off. `GEMINI_SANDBOX` overrides the flag in
11
+ * Gemini, so it is set too. `ask` is not possible headless.
12
+ */
13
+ export function geminiPermissionFlags(permissions) {
14
+ const { approval, sandbox } = permissions;
15
+ if (approval === 'ask')
16
+ throw new Error("gemini cannot ask for approval headless (permissions.approval 'ask').");
17
+ if (sandbox === 'read-only' && approval === 'auto-approve')
18
+ throw new Error("gemini's read-only mode (plan) cannot be combined with permissions.approval 'auto-approve'.");
19
+ const args = [];
20
+ const replaces = {};
21
+ const mode = sandbox === 'read-only' ? 'plan' : approval === 'auto-approve' ? 'yolo' : approval ? 'auto_edit' : undefined;
22
+ if (mode) {
23
+ Object.assign(replaces, { '--approval-mode': 'value', '--yolo': 'flag', '-y': 'flag' });
24
+ args.push('--approval-mode', mode);
25
+ }
26
+ let env;
27
+ if (sandbox === 'workspace-write' || sandbox === 'unrestricted') {
28
+ Object.assign(replaces, { '--sandbox': 'flag', '-s': 'flag', '--no-sandbox': 'flag' });
29
+ args.push(sandbox === 'workspace-write' ? '--sandbox' : '--no-sandbox');
30
+ env = { GEMINI_SANDBOX: sandbox === 'workspace-write' ? 'true' : 'false' };
31
+ }
32
+ return { args, replaces, ...(env ? { env } : {}) };
33
+ }
4
34
  /** Gemini CLI in headless mode (`gemini --prompt ... --output-format stream-json`). */
5
35
  export function gemini(options = {}) {
6
36
  return cliAgent({
7
37
  name: 'gemini',
8
38
  command: options.command ?? 'gemini',
9
- capabilities: { usage: true },
39
+ capabilities: {
40
+ usage: true,
41
+ permissions: { approval: ['auto-approve', 'deny'], sandbox: ['workspace-write', 'read-only', 'unrestricted'] },
42
+ },
10
43
  args: (task) => geminiArgs(task, options),
44
+ prepare: (task) => {
45
+ const { env } = geminiPermissionFlags(resolvePermissions(task.permissions));
46
+ return { args: geminiArgs(task, options), ...(env ? { env } : {}) };
47
+ },
11
48
  createParser: createGeminiParser,
12
49
  });
13
50
  }
14
51
  export function geminiArgs(task, options = {}) {
15
- const args = ['--output-format', 'stream-json', '--approval-mode', options.approvalMode ?? 'auto_edit'];
52
+ const permissions = resolvePermissions(task.permissions);
53
+ const flags = geminiPermissionFlags(permissions);
54
+ const owned = flags.args.includes('--approval-mode');
55
+ exclusiveOption('gemini', 'approvalMode', options.approvalMode !== undefined, 'approval/sandbox', owned);
56
+ const args = ['--output-format', 'stream-json'];
57
+ if (!owned)
58
+ args.push('--approval-mode', options.approvalMode ?? 'auto_edit');
59
+ args.push(...flags.args);
16
60
  if (options.trustWorkspace ?? true)
17
61
  args.push('--skip-trust');
18
62
  if (task.model)
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/agents/drivers/gemini.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/agents/drivers/gemini.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type LiveApprovalIds, type LiveApprovals, type LiveSession } from '../live-agent.js';
2
+ export interface MuseApprovalOptions {
3
+ /** How long to wait for the server to acknowledge `approval/decide`. Default 60 s. */
4
+ requestTimeoutMs?: number;
5
+ /** A decision could not be delivered. Default: emit it as an `error` event. */
6
+ onError?(message: string): void;
7
+ }
8
+ /**
9
+ * Muse approvals (`muse serve`). An `approval/requested` notification, or the
10
+ * `approval/request` server request (answered with a bare receipt), offers server-minted
11
+ * choices; the decision goes back as an `approval/decide` command naming one of them and
12
+ * the stage's `currentRequirementId`. A multi-stage approval advances through
13
+ * `approval/updated`, and each stage is asked once however often it is delivered.
14
+ *
15
+ * Approving picks only a choice scoped `once`: a request that offers nothing narrower than
16
+ * the session is denied. `approval/resolved` (decided elsewhere) and `alreadyTerminal`
17
+ * updates withdraw the open question.
18
+ */
19
+ export declare function museApprovals(session: LiveSession, ids: () => LiveApprovalIds, options?: MuseApprovalOptions): LiveApprovals;
@@ -0,0 +1,156 @@
1
+ import { uuidv7 } from '../live-agent.js';
2
+ import { RpcError } from '../rpc.js';
3
+ import { isObject, stringField } from './json.js';
4
+ /**
5
+ * Muse approvals (`muse serve`). An `approval/requested` notification, or the
6
+ * `approval/request` server request (answered with a bare receipt), offers server-minted
7
+ * choices; the decision goes back as an `approval/decide` command naming one of them and
8
+ * the stage's `currentRequirementId`. A multi-stage approval advances through
9
+ * `approval/updated`, and each stage is asked once however often it is delivered.
10
+ *
11
+ * Approving picks only a choice scoped `once`: a request that offers nothing narrower than
12
+ * the session is denied. `approval/resolved` (decided elsewhere) and `alreadyTerminal`
13
+ * updates withdraw the open question.
14
+ */
15
+ export function museApprovals(session, ids, options = {}) {
16
+ const timeout = options.requestTimeoutMs ?? 60_000;
17
+ const fail = options.onError ?? ((message) => session.emit({ type: 'error', message }));
18
+ const turn = new AbortController();
19
+ const requests = new Map();
20
+ const decided = new Set();
21
+ const closed = new Set();
22
+ const stages = new Map();
23
+ const questions = new Map();
24
+ const ownSession = (params) => ids().session !== undefined && stringField(params, 'sessionId') === ids().session;
25
+ const ownTurn = (params) => {
26
+ const current = ids().turn;
27
+ const requested = stringField(params, 'turnId');
28
+ return ownSession(params) && (!requested || !current || requested === current);
29
+ };
30
+ const withdraw = (approvalId) => {
31
+ closed.add(approvalId);
32
+ questions.get(approvalId)?.abort();
33
+ };
34
+ const decide = async (params) => {
35
+ const approvalId = stringField(params, 'approvalId');
36
+ const requirement = isObject(params.currentRequirementId) ? params.currentRequirementId : undefined;
37
+ if (!approvalId || !requirement)
38
+ return fail('Muse sent an approval without an approval or requirement id.');
39
+ const stageKey = `${approvalId} ${stringField(requirement, 'approvalId')}:${String(requirement.sourceIndex)}`;
40
+ if (decided.has(stageKey) || closed.has(approvalId) || turn.signal.aborted)
41
+ return;
42
+ decided.add(stageKey);
43
+ const stage = (stages.get(approvalId) ?? 0) + 1;
44
+ stages.set(approvalId, stage);
45
+ // Choices are read from a copy: the handler sees `detail` and must not change them.
46
+ const choices = Array.isArray(params.availableChoices)
47
+ ? structuredClone(params.availableChoices).filter(isChoice)
48
+ : [];
49
+ const question = new AbortController();
50
+ questions.set(approvalId, question);
51
+ let decision;
52
+ try {
53
+ decision = await session.approve(museApprovalRequest(params, stage === 1 ? approvalId : `${approvalId}/${stage}`), AbortSignal.any([turn.signal, question.signal]));
54
+ }
55
+ finally {
56
+ if (questions.get(approvalId) === question)
57
+ questions.delete(approvalId);
58
+ }
59
+ // Withdrawn, decided elsewhere, or the turn is over: there is nothing left to answer.
60
+ if (question.signal.aborted || closed.has(approvalId) || turn.signal.aborted || session.signal.aborted)
61
+ return;
62
+ if (!ownTurn(params))
63
+ return;
64
+ let choice = pickChoice(choices, decision);
65
+ if (!choice && decision === 'approve') {
66
+ choice = pickChoice(choices, 'deny');
67
+ fail(`Muse offered no one-time approval for ${approvalId}; denying it.`);
68
+ }
69
+ if (!choice)
70
+ return fail(`Muse offered no choice that denies approval ${approvalId}.`);
71
+ const ack = await session.rpc.request('approval/decide', {
72
+ sessionId: ids().session,
73
+ approvalId,
74
+ choiceId: choice.choiceId,
75
+ requirementId: requirement,
76
+ commandId: uuidv7(),
77
+ }, timeout);
78
+ // `terminal: true`: this decision closed the whole approval, so no later stage needs one.
79
+ if (isObject(ack) && ack.terminal === true)
80
+ closed.add(approvalId);
81
+ };
82
+ const run = (params) => void decide(params).catch((error) => fail(`Answering a Muse approval failed: ${error instanceof Error ? error.message : String(error)}`));
83
+ const requested = (params) => {
84
+ const approvalId = stringField(params, 'approvalId');
85
+ if (approvalId && !requests.has(approvalId))
86
+ requests.set(approvalId, params);
87
+ run(params);
88
+ };
89
+ return {
90
+ request(method, params) {
91
+ if (method !== 'approval/request')
92
+ return undefined;
93
+ if (!isObject(params) || !ownTurn(params))
94
+ return Promise.reject(new RpcError('This approval does not belong to the running turn.', -32602));
95
+ // The server request wants only a presentation receipt; the decision is a separate command.
96
+ requested(params);
97
+ return Promise.resolve({});
98
+ },
99
+ notification(method, params) {
100
+ if (method !== 'approval/requested' && method !== 'approval/updated' && method !== 'approval/resolved')
101
+ return false;
102
+ if (!isObject(params) || !ownSession(params))
103
+ return true;
104
+ const approvalId = stringField(params, 'approvalId');
105
+ if (method === 'approval/resolved') {
106
+ if (approvalId)
107
+ withdraw(approvalId);
108
+ return true;
109
+ }
110
+ if (method === 'approval/requested') {
111
+ if (ownTurn(params))
112
+ requested(params);
113
+ return true;
114
+ }
115
+ const original = approvalId ? requests.get(approvalId) : undefined;
116
+ if (isObject(params.change) && params.change.kind === 'alreadyTerminal') {
117
+ if (approvalId)
118
+ withdraw(approvalId);
119
+ return true;
120
+ }
121
+ // The update carries the new stage; the tool and its arguments stay those of the request.
122
+ if (original)
123
+ run({ ...original, ...params });
124
+ return true;
125
+ },
126
+ close() {
127
+ turn.abort();
128
+ },
129
+ };
130
+ }
131
+ function isChoice(value) {
132
+ return isObject(value) && typeof value.choiceId === 'string' && typeof value.decision === 'string';
133
+ }
134
+ /** Approve once and never for the session; deny once where offered, else as the server offers. */
135
+ function pickChoice(choices, decision) {
136
+ if (decision === 'approve')
137
+ return choices.find((choice) => choice.decision === 'approved' && choice.scope === 'once');
138
+ const denials = choices.filter((choice) => choice.decision === 'denied' || choice.decision === 'abort');
139
+ return denials.find((choice) => choice.decision === 'denied' && choice.scope === 'once') ?? denials[0];
140
+ }
141
+ function museApprovalRequest(params, id) {
142
+ const subject = isObject(params.subject) ? params.subject : {};
143
+ const subjectKind = stringField(subject, 'kind');
144
+ const access = stringField(subject, 'access');
145
+ const kind = subjectKind === 'shell' || subjectKind === 'process'
146
+ ? 'command'
147
+ : subjectKind === 'fileAccess' && access !== undefined && access !== 'read'
148
+ ? 'file-change'
149
+ : 'other';
150
+ const summary = stringField(subject, 'command') ??
151
+ stringField(subject, 'path') ??
152
+ stringField(subject, 'target') ??
153
+ stringField(params, 'toolName');
154
+ return { id, kind, scope: 'once', ...(summary ? { summary } : {}), detail: params };
155
+ }
156
+ //# sourceMappingURL=muse-approvals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"muse-approvals.js","sourceRoot":"","sources":["../../../src/agents/drivers/muse-approvals.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,11 @@ export interface MuseLiveOptions {
9
9
  }
10
10
  /**
11
11
  * Muse over its JSON-RPC server (`muse serve`). Supports `steer()` and routes
12
- * approval requests to `task.onApproval`; without one, each request is denied.
12
+ * approval requests to `task.onApproval` (see `museApprovals`); without one, each request is denied.
13
+ *
14
+ * `task.permissions`: `ask` and `auto-approve` use approval mode `onRequest` (auto-approve
15
+ * picks the one-time choice of each request, never a session grant); `deny` is
16
+ * `denyUnmatched`. Muse has no sandbox, so `sandbox` can only be `unrestricted`.
13
17
  */
14
18
  export declare function museLive(options?: MuseLiveOptions): CodingAgent;
15
19
  /** Map one `muse serve` notification to agent events. */
@@ -1,16 +1,26 @@
1
1
  import { liveAgent, uuidv7 } from '../live-agent.js';
2
+ import { resolvePermissions } from '../permissions.js';
2
3
  import { RpcError } from '../rpc.js';
4
+ import { museApprovals } from './muse-approvals.js';
3
5
  import { isObject, stringField } from './json.js';
4
6
  const TOOL_KINDS = new Set(['commandExecution', 'toolCall', 'mcpToolCall', 'fileChange']);
5
7
  /**
6
8
  * Muse over its JSON-RPC server (`muse serve`). Supports `steer()` and routes
7
- * approval requests to `task.onApproval`; without one, each request is denied.
9
+ * approval requests to `task.onApproval` (see `museApprovals`); without one, each request is denied.
10
+ *
11
+ * `task.permissions`: `ask` and `auto-approve` use approval mode `onRequest` (auto-approve
12
+ * picks the one-time choice of each request, never a session grant); `deny` is
13
+ * `denyUnmatched`. Muse has no sandbox, so `sandbox` can only be `unrestricted`.
8
14
  */
9
15
  export function museLive(options = {}) {
10
16
  return liveAgent({
11
17
  name: 'muse',
12
18
  command: options.command ?? 'muse',
13
- capabilities: { effort: ['minimal', 'low', 'medium', 'high', 'xhigh', 'max'], approvals: true },
19
+ capabilities: {
20
+ effort: ['minimal', 'low', 'medium', 'high', 'xhigh', 'max'],
21
+ approvals: true,
22
+ permissions: { approval: ['ask', 'auto-approve', 'deny'], sandbox: ['unrestricted'] },
23
+ },
14
24
  args: (task) => [
15
25
  'serve',
16
26
  ...((options.trustWorkspace ?? true) ? ['--trust-workspace'] : []),
@@ -28,14 +38,12 @@ async function driveMuse(session, options) {
28
38
  const finished = new Promise((resolve) => {
29
39
  finish = resolve;
30
40
  });
31
- const approvals = museApprovals(session, () => ids.session, timeout);
41
+ const approvals = museApprovals(session, () => ids, { requestTimeoutMs: timeout });
32
42
  session.onNotification((method, params) => {
33
43
  if (ids.session === undefined || stringField(params, 'sessionId') !== ids.session)
34
44
  return;
35
- if (method === 'approval/requested')
36
- return approvals.requested(params);
37
- if (method === 'approval/updated')
38
- return approvals.updated(params);
45
+ if (approvals.notification(method, params))
46
+ return;
39
47
  if (method === 'turn/completed') {
40
48
  if (ids.turn && stringField(params, 'turnId') && stringField(params, 'turnId') !== ids.turn)
41
49
  return;
@@ -43,6 +51,7 @@ async function driveMuse(session, options) {
43
51
  const error = stringField(isObject(params) ? params.error : undefined, 'message');
44
52
  if (error)
45
53
  session.emit({ type: 'error', message: error });
54
+ approvals.close();
46
55
  finish(terminal === 'completed' ? { ok: true } : { ok: false, error: error ?? `Muse turn ${terminal ?? 'ended'}.` });
47
56
  return;
48
57
  }
@@ -50,13 +59,10 @@ async function driveMuse(session, options) {
50
59
  session.emit(event);
51
60
  });
52
61
  session.onRequest((method, params) => {
53
- // The server-request form of an approval wants only a presentation receipt; the
54
- // decision goes back as an `approval/decide` command, as for the notification form.
55
- if (method === 'approval/request' && stringField(params, 'sessionId') === ids.session) {
56
- approvals.requested(params);
57
- return {};
58
- }
59
- throw new RpcError('This client cannot grant this request.', -32601);
62
+ const answer = approvals.request(method, params);
63
+ if (!answer)
64
+ throw new RpcError('This client cannot grant this request.', -32601);
65
+ return answer;
60
66
  });
61
67
  await rpc.request('initialize', { clientInfo: { name: 'genaicode', version: '2' }, capabilities: { userInputDialogs: false } }, timeout);
62
68
  rpc.notify('initialized');
@@ -64,7 +70,7 @@ async function driveMuse(session, options) {
64
70
  commandId: uuidv7(),
65
71
  workspaceRoot: task.cwd,
66
72
  ...(task.model ? { modelId: task.model } : {}),
67
- approvalMode: 'onRequest',
73
+ approvalMode: resolvePermissions(task.permissions).approval === 'deny' ? 'denyUnmatched' : 'onRequest',
68
74
  }, timeout);
69
75
  const sessionId = stringField(isObject(created) ? created.session : undefined, 'sessionId');
70
76
  ids.session = sessionId;
@@ -89,100 +95,6 @@ async function driveMuse(session, options) {
89
95
  });
90
96
  return finished;
91
97
  }
92
- /**
93
- * Muse's approval round trip: an `approval/requested` notification (or `approval/request`
94
- * server request) offers server-minted choices, and the client answers with an
95
- * `approval/decide` command naming one of them. A multi-stage approval advances through
96
- * `approval/updated` with a new `currentRequirementId`, and each stage is decided once.
97
- */
98
- function museApprovals(session, sessionId, timeout) {
99
- const decided = new Set();
100
- const closed = new Set();
101
- const requests = new Map();
102
- const stages = new Map();
103
- const decide = async (params) => {
104
- const approvalId = stringField(params, 'approvalId');
105
- const requirement = isObject(params.currentRequirementId) ? params.currentRequirementId : undefined;
106
- const choices = Array.isArray(params.availableChoices) ? params.availableChoices.filter(isChoice) : [];
107
- if (!approvalId || !requirement)
108
- return;
109
- const stageKey = `${approvalId} ${stringField(requirement, 'approvalId')}:${String(requirement.sourceIndex)}`;
110
- if (decided.has(stageKey) || closed.has(approvalId))
111
- return;
112
- decided.add(stageKey);
113
- const stage = (stages.get(approvalId) ?? 0) + 1;
114
- stages.set(approvalId, stage);
115
- const decision = await session.approve(museApprovalRequest(params, stage === 1 ? approvalId : `${approvalId}/${stage}`));
116
- // Approving for the session or for good would grant more than was asked: deny instead.
117
- let choice = pickChoice(choices, decision);
118
- if (!choice && decision === 'approve') {
119
- choice = pickChoice(choices, 'deny');
120
- session.emit({ type: 'error', message: `Muse offered no one-time approval for ${approvalId}; denying it.` });
121
- }
122
- if (!choice) {
123
- session.emit({ type: 'error', message: `Muse offered no choice that denies approval ${approvalId}.` });
124
- return;
125
- }
126
- const ack = await session.rpc.request('approval/decide', {
127
- sessionId: sessionId(),
128
- approvalId,
129
- choiceId: choice.choiceId,
130
- requirementId: requirement,
131
- commandId: uuidv7(),
132
- }, timeout);
133
- // `terminal: true`: this decision closed the whole approval, so no later stage needs one.
134
- if (isObject(ack) && ack.terminal === true)
135
- closed.add(approvalId);
136
- };
137
- const run = (params) => void decide(params).catch((error) => session.emit({
138
- type: 'error',
139
- message: `Answering a Muse approval failed: ${error instanceof Error ? error.message : String(error)}`,
140
- }));
141
- return {
142
- requested(params) {
143
- if (!isObject(params))
144
- return;
145
- const approvalId = stringField(params, 'approvalId');
146
- if (approvalId)
147
- requests.set(approvalId, params);
148
- run(params);
149
- },
150
- updated(params) {
151
- if (!isObject(params))
152
- return;
153
- const approvalId = stringField(params, 'approvalId');
154
- const original = approvalId ? requests.get(approvalId) : undefined;
155
- if (!original || (isObject(params.change) && params.change.kind === 'alreadyTerminal'))
156
- return;
157
- // The update carries the new stage; the tool and its arguments stay those of the request.
158
- run({ ...original, ...params });
159
- },
160
- };
161
- }
162
- function isChoice(value) {
163
- return isObject(value) && typeof value.choiceId === 'string' && typeof value.decision === 'string';
164
- }
165
- /** The narrowest matching choice: approve once rather than for the session, deny once rather than for good. */
166
- function pickChoice(choices, decision) {
167
- const wanted = decision === 'approve' ? ['approved'] : ['denied', 'abort'];
168
- const matching = choices.filter((choice) => wanted.includes(choice.decision));
169
- return matching.find((choice) => choice.scope === 'once') ?? matching[0];
170
- }
171
- function museApprovalRequest(params, id) {
172
- const subject = isObject(params.subject) ? params.subject : {};
173
- const subjectKind = stringField(subject, 'kind');
174
- const access = stringField(subject, 'access');
175
- const kind = subjectKind === 'shell' || subjectKind === 'process'
176
- ? 'command'
177
- : subjectKind === 'fileAccess' && access !== undefined && access !== 'read'
178
- ? 'file-change'
179
- : 'other';
180
- const summary = stringField(subject, 'command') ??
181
- stringField(subject, 'path') ??
182
- stringField(subject, 'target') ??
183
- stringField(params, 'toolName');
184
- return { id, kind, ...(summary ? { summary } : {}), detail: params };
185
- }
186
98
  /** Map one `muse serve` notification to agent events. */
187
99
  export function museNotification(method, params) {
188
100
  const item = isObject(params) && isObject(params.item) ? params.item : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"muse-live.js","sourceRoot":"","sources":["../../../src/agents/drivers/muse-live.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"muse-live.js","sourceRoot":"","sources":["../../../src/agents/drivers/muse-live.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { type AgentOutputParser } from '../cli-agent.js';
2
- import type { AgentTask, CodingAgent } from '../types.js';
2
+ import { type PermissionFlags } from '../permissions.js';
3
+ import type { AgentPermissions, AgentTask, CodingAgent } from '../types.js';
3
4
  export interface OpencodeAgentOptions {
4
5
  /** Executable name or path. Default `opencode`. */
5
6
  command?: string;
@@ -13,5 +14,10 @@ export interface OpencodeAgentOptions {
13
14
  * `task.effort` maps to `--variant`.
14
15
  */
15
16
  export declare function opencode(options?: OpencodeAgentOptions): CodingAgent;
17
+ /**
18
+ * opencode flags for `permissions`: `auto-approve` is `--auto`, `deny` leaves it off. opencode
19
+ * has no sandbox, so `sandbox` can only be `unrestricted`. `ask` is not possible headless.
20
+ */
21
+ export declare function opencodePermissionFlags(permissions: AgentPermissions): PermissionFlags;
16
22
  export declare function opencodeArgs(task: AgentTask, options?: OpencodeAgentOptions): string[];
17
23
  export declare function createOpencodeParser(): AgentOutputParser;
@@ -1,4 +1,5 @@
1
1
  import { cliAgent } from '../cli-agent.js';
2
+ import { exclusiveOption, resolvePermissions } from '../permissions.js';
2
3
  import { isObject, numberField, stringField } from './json.js';
3
4
  const EDIT_TOOLS = new Set(['edit', 'write', 'patch', 'multiedit']);
4
5
  /**
@@ -9,16 +10,41 @@ export function opencode(options = {}) {
9
10
  return cliAgent({
10
11
  name: 'opencode',
11
12
  command: options.command ?? 'opencode',
12
- capabilities: { effort: ['minimal', 'low', 'medium', 'high', 'max'], usage: true, resume: true },
13
+ capabilities: {
14
+ effort: ['minimal', 'low', 'medium', 'high', 'max'],
15
+ usage: true,
16
+ resume: true,
17
+ permissions: { approval: ['auto-approve', 'deny'], sandbox: ['unrestricted'] },
18
+ },
13
19
  args: (task) => opencodeArgs(task, options),
14
20
  createParser: createOpencodeParser,
15
21
  });
16
22
  }
23
+ /**
24
+ * opencode flags for `permissions`: `auto-approve` is `--auto`, `deny` leaves it off. opencode
25
+ * has no sandbox, so `sandbox` can only be `unrestricted`. `ask` is not possible headless.
26
+ */
27
+ export function opencodePermissionFlags(permissions) {
28
+ const { approval, sandbox } = permissions;
29
+ if (approval === 'ask')
30
+ throw new Error("opencode cannot ask for approval headless (permissions.approval 'ask').");
31
+ if (sandbox && sandbox !== 'unrestricted')
32
+ throw new Error(`opencode has no sandbox ('${sandbox}').`);
33
+ return {
34
+ args: approval === 'auto-approve' ? ['--auto'] : [],
35
+ replaces: approval ? { '--auto': 'flag' } : {},
36
+ };
37
+ }
17
38
  export function opencodeArgs(task, options = {}) {
18
39
  const args = ['run', '--format', 'json'];
19
40
  if (options.agent)
20
41
  args.push('--agent', options.agent);
21
- if (options.autoApprove)
42
+ const permissions = resolvePermissions(task.permissions);
43
+ exclusiveOption('opencode', 'autoApprove', options.autoApprove !== undefined, 'approval', !!permissions.approval);
44
+ const flags = opencodePermissionFlags(permissions);
45
+ if (permissions.approval)
46
+ args.push(...flags.args);
47
+ else if (options.autoApprove)
22
48
  args.push('--auto');
23
49
  if (task.model)
24
50
  args.push('--model', task.model);
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/agents/drivers/opencode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/agents/drivers/opencode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { AgentTask } from '../types.js';
2
+ /** Agents `applyPermissionArgs` can translate for (`agy` is Antigravity). */
3
+ export declare const PERMISSION_AGENTS: readonly string[];
4
+ /**
5
+ * Rewrite an agent's own headless argument list (one an app keeps outside the genaicode
6
+ * drivers) for `permissions`: flags the translation owns are replaced, the rest kept. Each
7
+ * agent's translation is the one its driver uses (`claudePermissionFlags`, ...). Throws for an
8
+ * unknown agent or a combination it cannot honor. For Claude, `ask` and `auto-approve` also
9
+ * need the permission prompt tool (`claudeApprovalTool` with the same sandbox).
10
+ */
11
+ export declare function applyPermissionArgs(agent: string, args: readonly string[], permissions: AgentTask['permissions']): {
12
+ args: string[];
13
+ env: Record<string, string>;
14
+ };