agent-dealer 0.1.0 → 0.1.2

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.
@@ -8,8 +8,8 @@
8
8
  <link rel="apple-touch-icon" href="/apple-touch-icon.png" />
9
9
  <meta name="theme-color" content="#0a0e14" />
10
10
  <link rel="preload" href="/fonts/Monaco.ttf" as="font" type="font/ttf" crossorigin />
11
- <script type="module" crossorigin src="/assets/index-BPfTEO0-.js"></script>
12
- <link rel="stylesheet" crossorigin href="/assets/index-Blmq-P5I.css">
11
+ <script type="module" crossorigin src="/assets/index-hIzZ8TM8.js"></script>
12
+ <link rel="stylesheet" crossorigin href="/assets/index-ChdPKYDd.css">
13
13
  </head>
14
14
  <body>
15
15
  <div id="root"></div>
@@ -29,6 +29,10 @@ export declare const AgentProfile: z.ZodObject<{
29
29
  defaultPlanModel: z.ZodNullable<z.ZodString>;
30
30
  /** CLI model id for execution; null = runtime default */
31
31
  defaultExecuteModel: z.ZodNullable<z.ZodString>;
32
+ /** Serialized PhaseBudget; null = runtime default (no CLI caps) */
33
+ defaultPlanBudgetJson: z.ZodNullable<z.ZodString>;
34
+ /** Serialized PhaseBudget; null = runtime default (no CLI caps) */
35
+ defaultExecuteBudgetJson: z.ZodNullable<z.ZodString>;
32
36
  isBuiltin: z.ZodBoolean;
33
37
  createdAt: z.ZodString;
34
38
  updatedAt: z.ZodString;
@@ -42,6 +46,8 @@ export declare const AgentProfile: z.ZodObject<{
42
46
  playbookId: string | null;
43
47
  defaultPlanModel: string | null;
44
48
  defaultExecuteModel: string | null;
49
+ defaultPlanBudgetJson: string | null;
50
+ defaultExecuteBudgetJson: string | null;
45
51
  isBuiltin: boolean;
46
52
  createdAt: string;
47
53
  updatedAt: string;
@@ -55,6 +61,8 @@ export declare const AgentProfile: z.ZodObject<{
55
61
  playbookId: string | null;
56
62
  defaultPlanModel: string | null;
57
63
  defaultExecuteModel: string | null;
64
+ defaultPlanBudgetJson: string | null;
65
+ defaultExecuteBudgetJson: string | null;
58
66
  isBuiltin: boolean;
59
67
  createdAt: string;
60
68
  updatedAt: string;
@@ -72,6 +80,10 @@ export declare const AgentWithHealth: z.ZodObject<{
72
80
  defaultPlanModel: z.ZodNullable<z.ZodString>;
73
81
  /** CLI model id for execution; null = runtime default */
74
82
  defaultExecuteModel: z.ZodNullable<z.ZodString>;
83
+ /** Serialized PhaseBudget; null = runtime default (no CLI caps) */
84
+ defaultPlanBudgetJson: z.ZodNullable<z.ZodString>;
85
+ /** Serialized PhaseBudget; null = runtime default (no CLI caps) */
86
+ defaultExecuteBudgetJson: z.ZodNullable<z.ZodString>;
75
87
  isBuiltin: z.ZodBoolean;
76
88
  createdAt: z.ZodString;
77
89
  updatedAt: z.ZodString;
@@ -101,6 +113,8 @@ export declare const AgentWithHealth: z.ZodObject<{
101
113
  playbookId: string | null;
102
114
  defaultPlanModel: string | null;
103
115
  defaultExecuteModel: string | null;
116
+ defaultPlanBudgetJson: string | null;
117
+ defaultExecuteBudgetJson: string | null;
104
118
  isBuiltin: boolean;
105
119
  createdAt: string;
106
120
  updatedAt: string;
@@ -119,6 +133,8 @@ export declare const AgentWithHealth: z.ZodObject<{
119
133
  playbookId: string | null;
120
134
  defaultPlanModel: string | null;
121
135
  defaultExecuteModel: string | null;
136
+ defaultPlanBudgetJson: string | null;
137
+ defaultExecuteBudgetJson: string | null;
122
138
  isBuiltin: boolean;
123
139
  createdAt: string;
124
140
  updatedAt: string;
@@ -133,6 +149,26 @@ export declare const CreateAgentInput: z.ZodObject<{
133
149
  playbookId: z.ZodOptional<z.ZodString>;
134
150
  defaultPlanModel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
135
151
  defaultExecuteModel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
152
+ defaultPlanBudget: z.ZodOptional<z.ZodNullable<z.ZodObject<{
153
+ maxTurns: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
154
+ maxBudgetUsd: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
155
+ }, "strip", z.ZodTypeAny, {
156
+ maxTurns?: number | null | undefined;
157
+ maxBudgetUsd?: number | null | undefined;
158
+ }, {
159
+ maxTurns?: number | null | undefined;
160
+ maxBudgetUsd?: number | null | undefined;
161
+ }>>>;
162
+ defaultExecuteBudget: z.ZodOptional<z.ZodNullable<z.ZodObject<{
163
+ maxTurns: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
164
+ maxBudgetUsd: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
165
+ }, "strip", z.ZodTypeAny, {
166
+ maxTurns?: number | null | undefined;
167
+ maxBudgetUsd?: number | null | undefined;
168
+ }, {
169
+ maxTurns?: number | null | undefined;
170
+ maxBudgetUsd?: number | null | undefined;
171
+ }>>>;
136
172
  }, "strip", z.ZodTypeAny, {
137
173
  name: string;
138
174
  runtime: "claude_code" | "cursor_local";
@@ -141,6 +177,14 @@ export declare const CreateAgentInput: z.ZodObject<{
141
177
  playbookId?: string | undefined;
142
178
  defaultPlanModel?: string | null | undefined;
143
179
  defaultExecuteModel?: string | null | undefined;
180
+ defaultPlanBudget?: {
181
+ maxTurns?: number | null | undefined;
182
+ maxBudgetUsd?: number | null | undefined;
183
+ } | null | undefined;
184
+ defaultExecuteBudget?: {
185
+ maxTurns?: number | null | undefined;
186
+ maxBudgetUsd?: number | null | undefined;
187
+ } | null | undefined;
144
188
  }, {
145
189
  name: string;
146
190
  runtime: "claude_code" | "cursor_local";
@@ -149,6 +193,14 @@ export declare const CreateAgentInput: z.ZodObject<{
149
193
  playbookId?: string | undefined;
150
194
  defaultPlanModel?: string | null | undefined;
151
195
  defaultExecuteModel?: string | null | undefined;
196
+ defaultPlanBudget?: {
197
+ maxTurns?: number | null | undefined;
198
+ maxBudgetUsd?: number | null | undefined;
199
+ } | null | undefined;
200
+ defaultExecuteBudget?: {
201
+ maxTurns?: number | null | undefined;
202
+ maxBudgetUsd?: number | null | undefined;
203
+ } | null | undefined;
152
204
  }>;
153
205
  export type CreateAgentInput = z.infer<typeof CreateAgentInput>;
154
206
  export declare const UpdateAgentInput: z.ZodObject<{
@@ -159,6 +211,26 @@ export declare const UpdateAgentInput: z.ZodObject<{
159
211
  playbookId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
160
212
  defaultPlanModel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
161
213
  defaultExecuteModel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
214
+ defaultPlanBudget: z.ZodOptional<z.ZodNullable<z.ZodObject<{
215
+ maxTurns: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
216
+ maxBudgetUsd: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
217
+ }, "strip", z.ZodTypeAny, {
218
+ maxTurns?: number | null | undefined;
219
+ maxBudgetUsd?: number | null | undefined;
220
+ }, {
221
+ maxTurns?: number | null | undefined;
222
+ maxBudgetUsd?: number | null | undefined;
223
+ }>>>;
224
+ defaultExecuteBudget: z.ZodOptional<z.ZodNullable<z.ZodObject<{
225
+ maxTurns: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
226
+ maxBudgetUsd: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
227
+ }, "strip", z.ZodTypeAny, {
228
+ maxTurns?: number | null | undefined;
229
+ maxBudgetUsd?: number | null | undefined;
230
+ }, {
231
+ maxTurns?: number | null | undefined;
232
+ maxBudgetUsd?: number | null | undefined;
233
+ }>>>;
162
234
  }, "strip", z.ZodTypeAny, {
163
235
  name?: string | undefined;
164
236
  runtime?: "claude_code" | "cursor_local" | undefined;
@@ -167,6 +239,14 @@ export declare const UpdateAgentInput: z.ZodObject<{
167
239
  playbookId?: string | null | undefined;
168
240
  defaultPlanModel?: string | null | undefined;
169
241
  defaultExecuteModel?: string | null | undefined;
242
+ defaultPlanBudget?: {
243
+ maxTurns?: number | null | undefined;
244
+ maxBudgetUsd?: number | null | undefined;
245
+ } | null | undefined;
246
+ defaultExecuteBudget?: {
247
+ maxTurns?: number | null | undefined;
248
+ maxBudgetUsd?: number | null | undefined;
249
+ } | null | undefined;
170
250
  }, {
171
251
  name?: string | undefined;
172
252
  runtime?: "claude_code" | "cursor_local" | undefined;
@@ -175,6 +255,14 @@ export declare const UpdateAgentInput: z.ZodObject<{
175
255
  playbookId?: string | null | undefined;
176
256
  defaultPlanModel?: string | null | undefined;
177
257
  defaultExecuteModel?: string | null | undefined;
258
+ defaultPlanBudget?: {
259
+ maxTurns?: number | null | undefined;
260
+ maxBudgetUsd?: number | null | undefined;
261
+ } | null | undefined;
262
+ defaultExecuteBudget?: {
263
+ maxTurns?: number | null | undefined;
264
+ maxBudgetUsd?: number | null | undefined;
265
+ } | null | undefined;
178
266
  }>;
179
267
  export type UpdateAgentInput = z.infer<typeof UpdateAgentInput>;
180
268
  export declare const AgentsSnapshot: z.ZodObject<{
@@ -190,6 +278,10 @@ export declare const AgentsSnapshot: z.ZodObject<{
190
278
  defaultPlanModel: z.ZodNullable<z.ZodString>;
191
279
  /** CLI model id for execution; null = runtime default */
192
280
  defaultExecuteModel: z.ZodNullable<z.ZodString>;
281
+ /** Serialized PhaseBudget; null = runtime default (no CLI caps) */
282
+ defaultPlanBudgetJson: z.ZodNullable<z.ZodString>;
283
+ /** Serialized PhaseBudget; null = runtime default (no CLI caps) */
284
+ defaultExecuteBudgetJson: z.ZodNullable<z.ZodString>;
193
285
  isBuiltin: z.ZodBoolean;
194
286
  createdAt: z.ZodString;
195
287
  updatedAt: z.ZodString;
@@ -219,6 +311,8 @@ export declare const AgentsSnapshot: z.ZodObject<{
219
311
  playbookId: string | null;
220
312
  defaultPlanModel: string | null;
221
313
  defaultExecuteModel: string | null;
314
+ defaultPlanBudgetJson: string | null;
315
+ defaultExecuteBudgetJson: string | null;
222
316
  isBuiltin: boolean;
223
317
  createdAt: string;
224
318
  updatedAt: string;
@@ -237,6 +331,8 @@ export declare const AgentsSnapshot: z.ZodObject<{
237
331
  playbookId: string | null;
238
332
  defaultPlanModel: string | null;
239
333
  defaultExecuteModel: string | null;
334
+ defaultPlanBudgetJson: string | null;
335
+ defaultExecuteBudgetJson: string | null;
240
336
  isBuiltin: boolean;
241
337
  createdAt: string;
242
338
  updatedAt: string;
@@ -258,6 +354,8 @@ export declare const AgentsSnapshot: z.ZodObject<{
258
354
  playbookId: string | null;
259
355
  defaultPlanModel: string | null;
260
356
  defaultExecuteModel: string | null;
357
+ defaultPlanBudgetJson: string | null;
358
+ defaultExecuteBudgetJson: string | null;
261
359
  isBuiltin: boolean;
262
360
  createdAt: string;
263
361
  updatedAt: string;
@@ -279,6 +377,8 @@ export declare const AgentsSnapshot: z.ZodObject<{
279
377
  playbookId: string | null;
280
378
  defaultPlanModel: string | null;
281
379
  defaultExecuteModel: string | null;
380
+ defaultPlanBudgetJson: string | null;
381
+ defaultExecuteBudgetJson: string | null;
282
382
  isBuiltin: boolean;
283
383
  createdAt: string;
284
384
  updatedAt: string;
@@ -1,4 +1,5 @@
1
1
  import { z } from "zod";
2
+ import { PhaseBudget } from "./budget.js";
2
3
  import { Runtime } from "./runtime.js";
3
4
  /** Built-in agent IDs — stable across installs. */
4
5
  export const BUILTIN_AGENT_CLAUDE_ID = "00000000-0000-4000-a000-000000000001";
@@ -23,6 +24,10 @@ export const AgentProfile = z.object({
23
24
  defaultPlanModel: z.string().nullable(),
24
25
  /** CLI model id for execution; null = runtime default */
25
26
  defaultExecuteModel: z.string().nullable(),
27
+ /** Serialized PhaseBudget; null = runtime default (no CLI caps) */
28
+ defaultPlanBudgetJson: z.string().nullable(),
29
+ /** Serialized PhaseBudget; null = runtime default (no CLI caps) */
30
+ defaultExecuteBudgetJson: z.string().nullable(),
26
31
  isBuiltin: z.boolean(),
27
32
  createdAt: z.string(),
28
33
  updatedAt: z.string(),
@@ -39,6 +44,8 @@ export const CreateAgentInput = z.object({
39
44
  playbookId: z.string().optional(),
40
45
  defaultPlanModel: z.string().nullable().optional(),
41
46
  defaultExecuteModel: z.string().nullable().optional(),
47
+ defaultPlanBudget: PhaseBudget.nullable().optional(),
48
+ defaultExecuteBudget: PhaseBudget.nullable().optional(),
42
49
  });
43
50
  export const UpdateAgentInput = z.object({
44
51
  name: z.string().min(1).optional(),
@@ -48,6 +55,8 @@ export const UpdateAgentInput = z.object({
48
55
  playbookId: z.string().nullable().optional(),
49
56
  defaultPlanModel: z.string().nullable().optional(),
50
57
  defaultExecuteModel: z.string().nullable().optional(),
58
+ defaultPlanBudget: PhaseBudget.nullable().optional(),
59
+ defaultExecuteBudget: PhaseBudget.nullable().optional(),
51
60
  });
52
61
  export const AgentsSnapshot = z.object({
53
62
  agents: z.array(AgentWithHealth),
@@ -0,0 +1,92 @@
1
+ import { z } from "zod";
2
+ /** Per-phase CLI caps. null field = omit flag (runtime default). */
3
+ export declare const PhaseBudget: z.ZodObject<{
4
+ maxTurns: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
5
+ maxBudgetUsd: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
6
+ }, "strip", z.ZodTypeAny, {
7
+ maxTurns?: number | null | undefined;
8
+ maxBudgetUsd?: number | null | undefined;
9
+ }, {
10
+ maxTurns?: number | null | undefined;
11
+ maxBudgetUsd?: number | null | undefined;
12
+ }>;
13
+ export type PhaseBudget = z.infer<typeof PhaseBudget>;
14
+ export declare const RunBudget: z.ZodObject<{
15
+ plan: z.ZodOptional<z.ZodObject<{
16
+ maxTurns: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
17
+ maxBudgetUsd: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
18
+ }, "strip", z.ZodTypeAny, {
19
+ maxTurns?: number | null | undefined;
20
+ maxBudgetUsd?: number | null | undefined;
21
+ }, {
22
+ maxTurns?: number | null | undefined;
23
+ maxBudgetUsd?: number | null | undefined;
24
+ }>>;
25
+ execute: z.ZodOptional<z.ZodObject<{
26
+ maxTurns: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
27
+ maxBudgetUsd: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
28
+ }, "strip", z.ZodTypeAny, {
29
+ maxTurns?: number | null | undefined;
30
+ maxBudgetUsd?: number | null | undefined;
31
+ }, {
32
+ maxTurns?: number | null | undefined;
33
+ maxBudgetUsd?: number | null | undefined;
34
+ }>>;
35
+ reflect: z.ZodOptional<z.ZodObject<{
36
+ maxTurns: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
37
+ maxBudgetUsd: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
38
+ }, "strip", z.ZodTypeAny, {
39
+ maxTurns?: number | null | undefined;
40
+ maxBudgetUsd?: number | null | undefined;
41
+ }, {
42
+ maxTurns?: number | null | undefined;
43
+ maxBudgetUsd?: number | null | undefined;
44
+ }>>;
45
+ }, "strip", z.ZodTypeAny, {
46
+ plan?: {
47
+ maxTurns?: number | null | undefined;
48
+ maxBudgetUsd?: number | null | undefined;
49
+ } | undefined;
50
+ execute?: {
51
+ maxTurns?: number | null | undefined;
52
+ maxBudgetUsd?: number | null | undefined;
53
+ } | undefined;
54
+ reflect?: {
55
+ maxTurns?: number | null | undefined;
56
+ maxBudgetUsd?: number | null | undefined;
57
+ } | undefined;
58
+ }, {
59
+ plan?: {
60
+ maxTurns?: number | null | undefined;
61
+ maxBudgetUsd?: number | null | undefined;
62
+ } | undefined;
63
+ execute?: {
64
+ maxTurns?: number | null | undefined;
65
+ maxBudgetUsd?: number | null | undefined;
66
+ } | undefined;
67
+ reflect?: {
68
+ maxTurns?: number | null | undefined;
69
+ maxBudgetUsd?: number | null | undefined;
70
+ } | undefined;
71
+ }>;
72
+ export type RunBudget = z.infer<typeof RunBudget>;
73
+ export type BudgetPhase = "plan" | "execute" | "reflect";
74
+ export type ResolvedPhaseBudget = {
75
+ maxTurns?: number;
76
+ maxBudgetUsd?: number;
77
+ };
78
+ /** Tight caps for flow:verify and other automated gates. */
79
+ export declare const TEST_PHASE_BUDGET: Record<BudgetPhase, Required<PhaseBudget>>;
80
+ export declare function parsePhaseBudget(json: string | null | undefined): PhaseBudget | null;
81
+ export declare function parseRunBudget(json: string | null | undefined): RunBudget;
82
+ export declare function serializePhaseBudget(budget: PhaseBudget | null | undefined): string | null;
83
+ export declare function serializeRunBudget(budget: RunBudget): string | null;
84
+ export declare function mergeRunBudget(existing: RunBudget, patch: Partial<RunBudget>): RunBudget;
85
+ export declare function resolvePhaseBudget(opts: {
86
+ phase: BudgetPhase;
87
+ runBudget: RunBudget;
88
+ agentPlanBudget?: PhaseBudget | null;
89
+ agentExecuteBudget?: PhaseBudget | null;
90
+ testMode?: boolean;
91
+ }): ResolvedPhaseBudget | null;
92
+ export declare function budgetCliArgs(budget: ResolvedPhaseBudget | null): string[];
@@ -0,0 +1,108 @@
1
+ import { z } from "zod";
2
+ /** Per-phase CLI caps. null field = omit flag (runtime default). */
3
+ export const PhaseBudget = z.object({
4
+ maxTurns: z.number().positive().nullable().optional(),
5
+ maxBudgetUsd: z.number().positive().nullable().optional(),
6
+ });
7
+ export const RunBudget = z.object({
8
+ plan: PhaseBudget.optional(),
9
+ execute: PhaseBudget.optional(),
10
+ reflect: PhaseBudget.optional(),
11
+ });
12
+ /** Tight caps for flow:verify and other automated gates. */
13
+ export const TEST_PHASE_BUDGET = {
14
+ plan: { maxTurns: 5, maxBudgetUsd: 0.5 },
15
+ execute: { maxTurns: 30, maxBudgetUsd: 5 },
16
+ reflect: { maxTurns: 3, maxBudgetUsd: 0.25 },
17
+ };
18
+ export function parsePhaseBudget(json) {
19
+ if (!json?.trim())
20
+ return null;
21
+ try {
22
+ const parsed = PhaseBudget.parse(JSON.parse(json));
23
+ if (parsed.maxTurns == null && parsed.maxBudgetUsd == null)
24
+ return null;
25
+ return parsed;
26
+ }
27
+ catch {
28
+ return null;
29
+ }
30
+ }
31
+ export function parseRunBudget(json) {
32
+ if (!json?.trim())
33
+ return {};
34
+ try {
35
+ const raw = JSON.parse(json);
36
+ if (raw &&
37
+ typeof raw === "object" &&
38
+ !("plan" in raw) &&
39
+ !("execute" in raw) &&
40
+ !("reflect" in raw) &&
41
+ ("maxTurns" in raw || "maxBudgetUsd" in raw)) {
42
+ return {
43
+ execute: PhaseBudget.parse({
44
+ maxTurns: raw.maxTurns ?? null,
45
+ maxBudgetUsd: raw.maxBudgetUsd ?? null,
46
+ }),
47
+ };
48
+ }
49
+ return RunBudget.parse(raw);
50
+ }
51
+ catch {
52
+ return {};
53
+ }
54
+ }
55
+ export function serializePhaseBudget(budget) {
56
+ if (!budget)
57
+ return null;
58
+ if (budget.maxTurns == null && budget.maxBudgetUsd == null)
59
+ return null;
60
+ return JSON.stringify(budget);
61
+ }
62
+ export function serializeRunBudget(budget) {
63
+ if (!budget.plan && !budget.execute && !budget.reflect)
64
+ return null;
65
+ return JSON.stringify(budget);
66
+ }
67
+ export function mergeRunBudget(existing, patch) {
68
+ return {
69
+ plan: patch.plan !== undefined ? patch.plan : existing.plan,
70
+ execute: patch.execute !== undefined ? patch.execute : existing.execute,
71
+ reflect: patch.reflect !== undefined ? patch.reflect : existing.reflect,
72
+ };
73
+ }
74
+ export function resolvePhaseBudget(opts) {
75
+ if (opts.testMode) {
76
+ const test = TEST_PHASE_BUDGET[opts.phase];
77
+ return {
78
+ maxTurns: test.maxTurns ?? undefined,
79
+ maxBudgetUsd: test.maxBudgetUsd ?? undefined,
80
+ };
81
+ }
82
+ const runPhase = opts.runBudget[opts.phase];
83
+ const agentPhase = opts.phase === "plan"
84
+ ? opts.agentPlanBudget
85
+ : opts.phase === "execute"
86
+ ? opts.agentExecuteBudget
87
+ : null;
88
+ const maxTurns = runPhase?.maxTurns ?? agentPhase?.maxTurns ?? null;
89
+ const maxBudgetUsd = runPhase?.maxBudgetUsd ?? agentPhase?.maxBudgetUsd ?? null;
90
+ if (maxTurns == null && maxBudgetUsd == null)
91
+ return null;
92
+ const resolved = {};
93
+ if (maxTurns != null)
94
+ resolved.maxTurns = maxTurns;
95
+ if (maxBudgetUsd != null)
96
+ resolved.maxBudgetUsd = maxBudgetUsd;
97
+ return resolved;
98
+ }
99
+ export function budgetCliArgs(budget) {
100
+ if (!budget)
101
+ return [];
102
+ const args = [];
103
+ if (budget.maxTurns != null)
104
+ args.push("--max-turns", String(budget.maxTurns));
105
+ if (budget.maxBudgetUsd != null)
106
+ args.push("--max-budget-usd", String(budget.maxBudgetUsd));
107
+ return args;
108
+ }