@spotpatch/shared 1.3.0 → 1.5.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.
package/dist/index.js CHANGED
@@ -36,6 +36,8 @@ var ERROR_CODES = {
36
36
  WORKTREE_LOCAL_CHANGES_UNSUPPORTED: "WORKTREE_LOCAL_CHANGES_UNSUPPORTED",
37
37
  TOOL_DENIED: "TOOL_DENIED",
38
38
  TOOL_INPUT_INVALID: "TOOL_INPUT_INVALID",
39
+ TOOL_ARGUMENTS_INVALID: "TOOL_ARGUMENTS_INVALID",
40
+ TOOL_CALL_ID_CONFLICT: "TOOL_CALL_ID_CONFLICT",
39
41
  TOOL_PATH_DENIED: "TOOL_PATH_DENIED",
40
42
  PATCH_REJECTED: "PATCH_REJECTED",
41
43
  VALIDATION_FAILED: "VALIDATION_FAILED",
@@ -122,9 +124,97 @@ var SPOTPATCH_LOCALE_PREFERENCES = Object.freeze([
122
124
  ...SPOTPATCH_LOCALES
123
125
  ]);
124
126
 
127
+ // src/model/runtime-config.ts
128
+ import { z } from "zod";
129
+
130
+ // src/protocol/endpoints.ts
131
+ var SPOTPATCH_API_BASE = "/__spotpatch/v1";
132
+ var SPOTPATCH_TOKEN_HEADER = "X-SpotPatch-Token";
133
+ var SPOTPATCH_ENDPOINTS = Object.freeze({
134
+ bootstrap: `${SPOTPATCH_API_BASE}/bootstrap`,
135
+ sourceContext: `${SPOTPATCH_API_BASE}/source-context`,
136
+ openEditor: `${SPOTPATCH_API_BASE}/open-editor`,
137
+ agentCapability: `${SPOTPATCH_API_BASE}/agent/capability`,
138
+ agentWorkspaceHealth: `${SPOTPATCH_API_BASE}/agent/workspace-health`,
139
+ agentJobs: `${SPOTPATCH_API_BASE}/agent/jobs`
140
+ });
141
+ function getAgentJobEndpoint(jobId, action) {
142
+ return `${SPOTPATCH_ENDPOINTS.agentJobs}/${encodeURIComponent(jobId)}/${action}`;
143
+ }
144
+
125
145
  // src/model/editor.ts
126
146
  var SPOTPATCH_EDITOR_PREFERENCES = ["auto", "vscode", "cursor"];
127
147
 
148
+ // src/model/runtime-config.ts
149
+ var SPOTPATCH_NEXT_BUNDLERS = Object.freeze(["turbopack", "webpack"]);
150
+ var SPOTPATCH_NEXT_ROUTER_KINDS = Object.freeze([
151
+ "app",
152
+ "pages",
153
+ "hybrid"
154
+ ]);
155
+ var boundedText = (maximum) => z.string().trim().min(1).max(maximum);
156
+ var profileIdSchema = z.string().min(1).max(64).regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/u);
157
+ var runtimeAiModelSchema = z.strictObject({
158
+ id: profileIdSchema,
159
+ label: boundedText(100)
160
+ });
161
+ var runtimeAiProviderSchema = z.strictObject({
162
+ id: profileIdSchema,
163
+ label: boundedText(100),
164
+ protocol: z.enum(["responses", "chat-completions"]),
165
+ models: z.array(runtimeAiModelSchema).min(1).max(64),
166
+ defaultModel: profileIdSchema
167
+ }).refine(
168
+ ({ defaultModel, models }) => models.some(({ id }) => id === defaultModel) && new Set(models.map(({ id }) => id)).size === models.length,
169
+ { message: "Runtime AI model profiles are inconsistent." }
170
+ );
171
+ var runtimeAiConfigSchema = z.discriminatedUnion("enabled", [
172
+ z.strictObject({ enabled: z.literal(false) }),
173
+ z.strictObject({
174
+ enabled: z.literal(true),
175
+ providers: z.array(runtimeAiProviderSchema).min(1).max(32),
176
+ defaultProvider: profileIdSchema,
177
+ applyMode: z.enum(["review", "auto"])
178
+ }).refine(
179
+ ({ defaultProvider, providers }) => providers.some(({ id }) => id === defaultProvider) && new Set(providers.map(({ id }) => id)).size === providers.length,
180
+ { message: "Runtime AI provider profiles are inconsistent." }
181
+ )
182
+ ]);
183
+ var positiveInteger = z.number().int().positive();
184
+ var runtimeConfigBaseShape = {
185
+ apiBase: z.literal(SPOTPATCH_API_BASE),
186
+ ai: runtimeAiConfigSchema,
187
+ budget: z.strictObject({
188
+ totalCharacters: positiveInteger,
189
+ domCharacters: positiveInteger,
190
+ cssCharacters: positiveInteger,
191
+ codeCharacters: positiveInteger,
192
+ maxCodeLines: positiveInteger,
193
+ maxComponentDepth: positiveInteger
194
+ }),
195
+ debug: z.boolean(),
196
+ editor: z.enum(SPOTPATCH_EDITOR_PREFERENCES),
197
+ frameworkVersion: boundedText(64),
198
+ locale: z.enum(SPOTPATCH_LOCALE_PREFERENCES),
199
+ maxTargets: z.number().int().min(1).max(MAX_ANNOTATION_TARGETS),
200
+ redact: z.boolean(),
201
+ sessionToken: z.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/u),
202
+ shortcut: boundedText(128),
203
+ spotPatchVersion: boundedText(64)
204
+ };
205
+ var runtimeConfigSchema = z.discriminatedUnion("framework", [
206
+ z.strictObject({
207
+ ...runtimeConfigBaseShape,
208
+ framework: z.literal("vite")
209
+ }),
210
+ z.strictObject({
211
+ ...runtimeConfigBaseShape,
212
+ bundler: z.enum(SPOTPATCH_NEXT_BUNDLERS),
213
+ framework: z.literal("next"),
214
+ routerKind: z.enum(SPOTPATCH_NEXT_ROUTER_KINDS)
215
+ })
216
+ ]);
217
+
128
218
  // src/model/agent.ts
129
219
  var DEFAULT_AGENT_LIMITS = Object.freeze({
130
220
  maxTurns: 20,
@@ -206,102 +296,89 @@ function parseSourceMarker(value) {
206
296
  return Object.freeze({ fileId, line, column });
207
297
  }
208
298
 
209
- // src/protocol/endpoints.ts
210
- var SPOTPATCH_API_BASE = "/__spotpatch/v1";
211
- var SPOTPATCH_TOKEN_HEADER = "X-SpotPatch-Token";
212
- var SPOTPATCH_ENDPOINTS = Object.freeze({
213
- sourceContext: `${SPOTPATCH_API_BASE}/source-context`,
214
- openEditor: `${SPOTPATCH_API_BASE}/open-editor`,
215
- agentCapability: `${SPOTPATCH_API_BASE}/agent/capability`,
216
- agentWorkspaceHealth: `${SPOTPATCH_API_BASE}/agent/workspace-health`,
217
- agentJobs: `${SPOTPATCH_API_BASE}/agent/jobs`
218
- });
219
- function getAgentJobEndpoint(jobId, action) {
220
- return `${SPOTPATCH_ENDPOINTS.agentJobs}/${encodeURIComponent(jobId)}/${action}`;
221
- }
222
-
223
299
  // src/protocol/requests.ts
224
- import { z } from "zod";
225
- var sourceCoordinatesSchema = z.strictObject({
226
- fileId: z.string().min(1).max(128),
227
- line: z.number().int().positive(),
228
- column: z.number().int().positive()
300
+ import { z as z2 } from "zod";
301
+ var runtimeBootstrapRequestSchema = z2.strictObject({});
302
+ var sourceCoordinatesSchema = z2.strictObject({
303
+ fileId: z2.string().min(1).max(128),
304
+ line: z2.number().int().positive(),
305
+ column: z2.number().int().positive()
229
306
  });
230
307
  var sourceContextRequestSchema = sourceCoordinatesSchema.extend({
231
- maxLines: z.number().int().positive()
308
+ maxLines: z2.number().int().positive()
232
309
  }).strict();
233
310
  var openEditorRequestSchema = sourceCoordinatesSchema.strict();
234
- var profileIdSchema = z.string().min(1).max(64).regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/);
235
- var boundedString = (maximum) => z.string().max(maximum);
236
- var sourceRefSchema = z.strictObject({
311
+ var profileIdSchema2 = z2.string().min(1).max(64).regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/);
312
+ var boundedString = (maximum) => z2.string().max(maximum);
313
+ var sourceRefSchema = z2.strictObject({
237
314
  fileId: boundedString(128).optional(),
238
315
  relativePath: boundedString(1024).optional(),
239
- line: z.number().int().positive().optional(),
240
- column: z.number().int().positive().optional(),
241
- origin: z.enum(["jsx-host", "react-fiber", "dom-ancestor", "none"]),
242
- confidence: z.enum(["exact", "probable", "approximate", "unknown"])
316
+ line: z2.number().int().positive().optional(),
317
+ column: z2.number().int().positive().optional(),
318
+ origin: z2.enum(["jsx-host", "react-fiber", "dom-ancestor", "none"]),
319
+ confidence: z2.enum(["exact", "probable", "approximate", "unknown"])
243
320
  });
244
- var matchedStyleRuleSchema = z.strictObject({
321
+ var matchedStyleRuleSchema = z2.strictObject({
245
322
  selector: boundedString(2048),
246
323
  declarations: boundedString(8192),
247
324
  source: boundedString(1024).optional(),
248
325
  media: boundedString(1024).optional()
249
326
  });
250
- var codeContextSchema = z.strictObject({
327
+ var codeContextSchema = z2.strictObject({
251
328
  relativePath: boundedString(1024),
252
- language: z.enum(["tsx", "jsx"]),
253
- startLine: z.number().int().positive(),
254
- endLine: z.number().int().positive(),
329
+ language: z2.enum(["tsx", "jsx"]),
330
+ startLine: z2.number().int().positive(),
331
+ endLine: z2.number().int().positive(),
255
332
  excerpt: boundedString(16e3),
256
- boundary: z.enum(["component", "nearby-lines"])
333
+ boundary: z2.enum(["component", "nearby-lines"])
257
334
  });
258
- var spotTargetContextRequestSchema = z.strictObject({
259
- instruction: z.string().trim().min(1).max(MAX_TARGET_INSTRUCTION_CHARACTERS),
335
+ var spotTargetContextRequestSchema = z2.strictObject({
336
+ instruction: z2.string().trim().min(1).max(MAX_TARGET_INSTRUCTION_CHARACTERS),
260
337
  source: sourceRefSchema,
261
- react: z.strictObject({
262
- supported: z.boolean(),
338
+ react: z2.strictObject({
339
+ supported: z2.boolean(),
263
340
  version: boundedString(64).optional(),
264
341
  componentName: boundedString(256).optional(),
265
- componentStack: z.array(boundedString(256)).max(64),
342
+ componentStack: z2.array(boundedString(256)).max(64),
266
343
  source: sourceRefSchema.optional()
267
344
  }),
268
- element: z.strictObject({
345
+ element: z2.strictObject({
269
346
  tagName: boundedString(128),
270
347
  selector: boundedString(2048),
271
348
  sanitizedHtml: boundedString(8192),
272
349
  textPreview: boundedString(2048).optional(),
273
350
  role: boundedString(256).optional(),
274
- rect: z.strictObject({
275
- x: z.number(),
276
- y: z.number(),
277
- width: z.number().nonnegative(),
278
- height: z.number().nonnegative()
351
+ rect: z2.strictObject({
352
+ x: z2.number(),
353
+ y: z2.number(),
354
+ width: z2.number().nonnegative(),
355
+ height: z2.number().nonnegative()
279
356
  })
280
357
  }),
281
- styles: z.strictObject({
282
- classNames: z.array(boundedString(512)).max(256),
358
+ styles: z2.strictObject({
359
+ classNames: z2.array(boundedString(512)).max(256),
283
360
  inlineStyle: boundedString(8192).optional(),
284
- matchedRules: z.array(matchedStyleRuleSchema).max(256),
285
- computed: z.record(boundedString(256), boundedString(2048)),
286
- warnings: z.array(boundedString(1024)).max(64)
361
+ matchedRules: z2.array(matchedStyleRuleSchema).max(256),
362
+ computed: z2.record(boundedString(256), boundedString(2048)),
363
+ warnings: z2.array(boundedString(1024)).max(64)
287
364
  }),
288
365
  code: codeContextSchema.optional(),
289
- warnings: z.array(boundedString(1024)).max(64)
366
+ warnings: z2.array(boundedString(1024)).max(64)
290
367
  });
291
- var spotAnnotationRequestSchema = z.strictObject({
292
- schemaVersion: z.literal(3),
368
+ var spotAnnotationRequestSchema = z2.strictObject({
369
+ schemaVersion: z2.literal(3),
293
370
  id: boundedString(128),
294
- locale: z.enum(SPOTPATCH_LOCALES),
295
- page: z.strictObject({
371
+ locale: z2.enum(SPOTPATCH_LOCALES),
372
+ page: z2.strictObject({
296
373
  url: boundedString(2048),
297
374
  pathname: boundedString(2048),
298
375
  title: boundedString(1024),
299
- viewportWidth: z.number().nonnegative(),
300
- viewportHeight: z.number().nonnegative(),
301
- devicePixelRatio: z.number().positive()
376
+ viewportWidth: z2.number().nonnegative(),
377
+ viewportHeight: z2.number().nonnegative(),
378
+ devicePixelRatio: z2.number().positive()
302
379
  }),
303
- targets: z.array(spotTargetContextRequestSchema).min(1).max(MAX_ANNOTATION_TARGETS),
304
- createdAt: z.iso.datetime()
380
+ targets: z2.array(spotTargetContextRequestSchema).min(1).max(MAX_ANNOTATION_TARGETS),
381
+ createdAt: z2.iso.datetime()
305
382
  }).superRefine((annotation, context) => {
306
383
  const total = annotation.targets.reduce(
307
384
  (characters, target) => characters + target.instruction.length,
@@ -315,51 +392,51 @@ var spotAnnotationRequestSchema = z.strictObject({
315
392
  });
316
393
  }
317
394
  });
318
- var agentCapabilityRequestSchema = z.strictObject({
319
- providerProfileId: profileIdSchema,
320
- modelProfileId: profileIdSchema
395
+ var agentCapabilityRequestSchema = z2.strictObject({
396
+ providerProfileId: profileIdSchema2,
397
+ modelProfileId: profileIdSchema2
321
398
  });
322
- var agentWorkspaceHealthRequestSchema = z.strictObject({});
323
- var agentJobCreateRequestSchema = z.strictObject({
399
+ var agentWorkspaceHealthRequestSchema = z2.strictObject({});
400
+ var agentJobCreateRequestSchema = z2.strictObject({
324
401
  annotation: spotAnnotationRequestSchema,
325
- providerProfileId: profileIdSchema,
326
- modelProfileId: profileIdSchema,
327
- providerDataConsent: z.literal(true),
328
- workingTreeMode: z.enum(["require-clean", "include-local-changes"]).default("require-clean")
402
+ providerProfileId: profileIdSchema2,
403
+ modelProfileId: profileIdSchema2,
404
+ providerDataConsent: z2.literal(true),
405
+ workingTreeMode: z2.enum(["require-clean", "include-local-changes"]).default("require-clean")
329
406
  });
330
- var agentJobActionRequestSchema = z.strictObject({});
407
+ var agentJobActionRequestSchema = z2.strictObject({});
331
408
 
332
409
  // src/protocol/agent-schemas.ts
333
- import { z as z2 } from "zod";
334
- var profileIdSchema2 = z2.string().min(1).max(64).regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/);
335
- var boundedString2 = (maximum) => z2.string().max(maximum);
336
- var errorCodeSchema = z2.enum(ERROR_CODES);
337
- var agentCapabilitySnapshotSchema = z2.strictObject({
338
- providerProfileId: profileIdSchema2,
410
+ import { z as z3 } from "zod";
411
+ var profileIdSchema3 = z3.string().min(1).max(64).regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/);
412
+ var boundedString2 = (maximum) => z3.string().max(maximum);
413
+ var errorCodeSchema = z3.enum(ERROR_CODES);
414
+ var agentCapabilitySnapshotSchema = z3.strictObject({
415
+ providerProfileId: profileIdSchema3,
339
416
  providerLabel: boundedString2(100),
340
- modelProfileId: profileIdSchema2,
417
+ modelProfileId: profileIdSchema3,
341
418
  modelLabel: boundedString2(100),
342
- protocol: z2.enum(["responses", "chat-completions"]),
343
- state: z2.enum(AGENT_CAPABILITY_STATES),
344
- authenticated: z2.boolean(),
345
- modelAvailable: z2.boolean(),
346
- toolCalling: z2.boolean(),
347
- toolResultContinuation: z2.boolean(),
348
- streaming: z2.boolean(),
349
- checkedAt: z2.iso.datetime().optional(),
419
+ protocol: z3.enum(["responses", "chat-completions"]),
420
+ state: z3.enum(AGENT_CAPABILITY_STATES),
421
+ authenticated: z3.boolean(),
422
+ modelAvailable: z3.boolean(),
423
+ toolCalling: z3.boolean(),
424
+ toolResultContinuation: z3.boolean(),
425
+ streaming: z3.boolean(),
426
+ checkedAt: z3.iso.datetime().optional(),
350
427
  errorCode: errorCodeSchema.optional()
351
428
  });
352
- var agentWorkspaceHealthSnapshotSchema = z2.strictObject({
353
- state: z2.enum(AGENT_WORKSPACE_STATES),
354
- checkedAt: z2.iso.datetime(),
355
- changes: z2.strictObject({
356
- staged: z2.number().int().nonnegative(),
357
- unstaged: z2.number().int().nonnegative(),
358
- untracked: z2.number().int().nonnegative(),
359
- conflicted: z2.number().int().nonnegative(),
360
- total: z2.number().int().nonnegative()
429
+ var agentWorkspaceHealthSnapshotSchema = z3.strictObject({
430
+ state: z3.enum(AGENT_WORKSPACE_STATES),
431
+ checkedAt: z3.iso.datetime(),
432
+ changes: z3.strictObject({
433
+ staged: z3.number().int().nonnegative(),
434
+ unstaged: z3.number().int().nonnegative(),
435
+ untracked: z3.number().int().nonnegative(),
436
+ conflicted: z3.number().int().nonnegative(),
437
+ total: z3.number().int().nonnegative()
361
438
  }),
362
- canIncludeLocalChanges: z2.boolean(),
439
+ canIncludeLocalChanges: z3.boolean(),
363
440
  errorCode: errorCodeSchema.optional()
364
441
  }).refine(
365
442
  ({ state, changes, canIncludeLocalChanges, errorCode }) => {
@@ -377,42 +454,42 @@ var agentWorkspaceHealthSnapshotSchema = z2.strictObject({
377
454
  },
378
455
  { message: "Agent workspace health fields are inconsistent." }
379
456
  );
380
- var agentChangedFileSchema = z2.strictObject({
457
+ var agentChangedFileSchema = z3.strictObject({
381
458
  relativePath: boundedString2(1024),
382
- kind: z2.enum(AGENT_FILE_CHANGE_KINDS),
383
- additions: z2.number().int().nonnegative(),
384
- deletions: z2.number().int().nonnegative()
459
+ kind: z3.enum(AGENT_FILE_CHANGE_KINDS),
460
+ additions: z3.number().int().nonnegative(),
461
+ deletions: z3.number().int().nonnegative()
385
462
  });
386
- var agentCheckResultSchema = z2.strictObject({
387
- checkId: profileIdSchema2,
463
+ var agentCheckResultSchema = z3.strictObject({
464
+ checkId: profileIdSchema3,
388
465
  label: boundedString2(100),
389
- status: z2.enum(AGENT_CHECK_STATUSES),
390
- durationMs: z2.number().int().nonnegative(),
466
+ status: z3.enum(AGENT_CHECK_STATUSES),
467
+ durationMs: z3.number().int().nonnegative(),
391
468
  output: boundedString2(8e4)
392
469
  });
393
- var agentJobSnapshotSchema = z2.strictObject({
394
- jobId: z2.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/),
395
- status: z2.enum(AGENT_JOB_STATUSES),
396
- providerProfileId: profileIdSchema2,
470
+ var agentJobSnapshotSchema = z3.strictObject({
471
+ jobId: z3.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/),
472
+ status: z3.enum(AGENT_JOB_STATUSES),
473
+ providerProfileId: profileIdSchema3,
397
474
  providerLabel: boundedString2(100),
398
- modelProfileId: profileIdSchema2,
475
+ modelProfileId: profileIdSchema3,
399
476
  modelLabel: boundedString2(100),
400
477
  phaseMessage: boundedString2(1024),
401
- createdAt: z2.iso.datetime(),
402
- updatedAt: z2.iso.datetime(),
403
- canCancel: z2.boolean(),
404
- canApply: z2.boolean(),
405
- canRevert: z2.boolean(),
478
+ createdAt: z3.iso.datetime(),
479
+ updatedAt: z3.iso.datetime(),
480
+ canCancel: z3.boolean(),
481
+ canApply: z3.boolean(),
482
+ canRevert: z3.boolean(),
406
483
  errorCode: errorCodeSchema.optional()
407
484
  });
408
- var agentJobResultSchema = z2.strictObject({
409
- jobId: z2.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/),
485
+ var agentJobResultSchema = z3.strictObject({
486
+ jobId: z3.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/),
410
487
  summary: boundedString2(8e4),
411
488
  diff: boundedString2(1e6),
412
- files: z2.array(agentChangedFileSchema).max(100),
413
- checks: z2.array(agentCheckResultSchema).max(100)
489
+ files: z3.array(agentChangedFileSchema).max(100),
490
+ checks: z3.array(agentCheckResultSchema).max(100)
414
491
  });
415
- var agentJobResultResponseSchema = z2.strictObject({
492
+ var agentJobResultResponseSchema = z3.strictObject({
416
493
  snapshot: agentJobSnapshotSchema,
417
494
  result: agentJobResultSchema.optional()
418
495
  }).superRefine((value, context) => {
@@ -424,43 +501,44 @@ var agentJobResultResponseSchema = z2.strictObject({
424
501
  });
425
502
  }
426
503
  });
427
- var agentJobEventBaseSchema = z2.strictObject({
428
- schemaVersion: z2.literal(1),
429
- sequence: z2.number().int().positive(),
430
- jobId: z2.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/),
431
- status: z2.enum(AGENT_JOB_STATUSES),
432
- timestamp: z2.iso.datetime()
504
+ var agentJobEventBaseSchema = z3.strictObject({
505
+ schemaVersion: z3.literal(2),
506
+ sequence: z3.number().int().positive(),
507
+ jobId: z3.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/),
508
+ status: z3.enum(AGENT_JOB_STATUSES),
509
+ timestamp: z3.iso.datetime()
433
510
  });
434
- var agentJobEventSchema = z2.discriminatedUnion("type", [
511
+ var agentJobEventSchema = z3.discriminatedUnion("type", [
435
512
  agentJobEventBaseSchema.extend({
436
- type: z2.literal("snapshot"),
437
- data: z2.strictObject({ snapshot: agentJobSnapshotSchema })
513
+ type: z3.literal("snapshot"),
514
+ data: z3.strictObject({ snapshot: agentJobSnapshotSchema })
438
515
  }),
439
516
  agentJobEventBaseSchema.extend({
440
- type: z2.literal("phase"),
441
- data: z2.strictObject({ message: boundedString2(1024) })
517
+ type: z3.literal("phase"),
518
+ data: z3.strictObject({ message: boundedString2(1024) })
442
519
  }),
443
520
  agentJobEventBaseSchema.extend({
444
- type: z2.literal("tool"),
445
- data: z2.strictObject({
521
+ type: z3.literal("tool"),
522
+ data: z3.strictObject({
523
+ turn: z3.number().int().positive(),
446
524
  toolCallId: boundedString2(256),
447
525
  toolName: boundedString2(100),
448
- state: z2.enum(["started", "succeeded", "failed"]),
526
+ state: z3.enum(["started", "succeeded", "failed"]),
449
527
  relativePath: boundedString2(1024).optional(),
450
528
  checkLabel: boundedString2(100).optional()
451
529
  })
452
530
  }),
453
531
  agentJobEventBaseSchema.extend({
454
- type: z2.literal("check"),
455
- data: z2.strictObject({ result: agentCheckResultSchema })
532
+ type: z3.literal("check"),
533
+ data: z3.strictObject({ result: agentCheckResultSchema })
456
534
  }),
457
535
  agentJobEventBaseSchema.extend({
458
- type: z2.literal("result-ready"),
459
- data: z2.strictObject({ hasResult: z2.literal(true) })
536
+ type: z3.literal("result-ready"),
537
+ data: z3.strictObject({ hasResult: z3.literal(true) })
460
538
  }),
461
539
  agentJobEventBaseSchema.extend({
462
- type: z2.literal("error"),
463
- data: z2.strictObject({
540
+ type: z3.literal("error"),
541
+ data: z3.strictObject({
464
542
  code: errorCodeSchema,
465
543
  message: boundedString2(1024)
466
544
  })
@@ -505,6 +583,8 @@ export {
505
583
  SPOTPATCH_ENDPOINTS,
506
584
  SPOTPATCH_LOCALES,
507
585
  SPOTPATCH_LOCALE_PREFERENCES,
586
+ SPOTPATCH_NEXT_BUNDLERS,
587
+ SPOTPATCH_NEXT_ROUTER_KINDS,
508
588
  SPOTPATCH_REPOSITORY_URL,
509
589
  SPOTPATCH_TOKEN_HEADER,
510
590
  SpotPatchError,
@@ -526,6 +606,8 @@ export {
526
606
  openEditorRequestSchema,
527
607
  parseSourceMarker,
528
608
  redactSensitiveText,
609
+ runtimeBootstrapRequestSchema,
610
+ runtimeConfigSchema,
529
611
  sanitizeUrl,
530
612
  sourceContextRequestSchema,
531
613
  spotAnnotationRequestSchema,