@spotpatch/shared 1.4.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
@@ -124,9 +124,97 @@ var SPOTPATCH_LOCALE_PREFERENCES = Object.freeze([
124
124
  ...SPOTPATCH_LOCALES
125
125
  ]);
126
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
+
127
145
  // src/model/editor.ts
128
146
  var SPOTPATCH_EDITOR_PREFERENCES = ["auto", "vscode", "cursor"];
129
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
+
130
218
  // src/model/agent.ts
131
219
  var DEFAULT_AGENT_LIMITS = Object.freeze({
132
220
  maxTurns: 20,
@@ -208,102 +296,89 @@ function parseSourceMarker(value) {
208
296
  return Object.freeze({ fileId, line, column });
209
297
  }
210
298
 
211
- // src/protocol/endpoints.ts
212
- var SPOTPATCH_API_BASE = "/__spotpatch/v1";
213
- var SPOTPATCH_TOKEN_HEADER = "X-SpotPatch-Token";
214
- var SPOTPATCH_ENDPOINTS = Object.freeze({
215
- sourceContext: `${SPOTPATCH_API_BASE}/source-context`,
216
- openEditor: `${SPOTPATCH_API_BASE}/open-editor`,
217
- agentCapability: `${SPOTPATCH_API_BASE}/agent/capability`,
218
- agentWorkspaceHealth: `${SPOTPATCH_API_BASE}/agent/workspace-health`,
219
- agentJobs: `${SPOTPATCH_API_BASE}/agent/jobs`
220
- });
221
- function getAgentJobEndpoint(jobId, action) {
222
- return `${SPOTPATCH_ENDPOINTS.agentJobs}/${encodeURIComponent(jobId)}/${action}`;
223
- }
224
-
225
299
  // src/protocol/requests.ts
226
- import { z } from "zod";
227
- var sourceCoordinatesSchema = z.strictObject({
228
- fileId: z.string().min(1).max(128),
229
- line: z.number().int().positive(),
230
- 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()
231
306
  });
232
307
  var sourceContextRequestSchema = sourceCoordinatesSchema.extend({
233
- maxLines: z.number().int().positive()
308
+ maxLines: z2.number().int().positive()
234
309
  }).strict();
235
310
  var openEditorRequestSchema = sourceCoordinatesSchema.strict();
236
- var profileIdSchema = z.string().min(1).max(64).regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/);
237
- var boundedString = (maximum) => z.string().max(maximum);
238
- 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({
239
314
  fileId: boundedString(128).optional(),
240
315
  relativePath: boundedString(1024).optional(),
241
- line: z.number().int().positive().optional(),
242
- column: z.number().int().positive().optional(),
243
- origin: z.enum(["jsx-host", "react-fiber", "dom-ancestor", "none"]),
244
- 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"])
245
320
  });
246
- var matchedStyleRuleSchema = z.strictObject({
321
+ var matchedStyleRuleSchema = z2.strictObject({
247
322
  selector: boundedString(2048),
248
323
  declarations: boundedString(8192),
249
324
  source: boundedString(1024).optional(),
250
325
  media: boundedString(1024).optional()
251
326
  });
252
- var codeContextSchema = z.strictObject({
327
+ var codeContextSchema = z2.strictObject({
253
328
  relativePath: boundedString(1024),
254
- language: z.enum(["tsx", "jsx"]),
255
- startLine: z.number().int().positive(),
256
- endLine: z.number().int().positive(),
329
+ language: z2.enum(["tsx", "jsx"]),
330
+ startLine: z2.number().int().positive(),
331
+ endLine: z2.number().int().positive(),
257
332
  excerpt: boundedString(16e3),
258
- boundary: z.enum(["component", "nearby-lines"])
333
+ boundary: z2.enum(["component", "nearby-lines"])
259
334
  });
260
- var spotTargetContextRequestSchema = z.strictObject({
261
- 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),
262
337
  source: sourceRefSchema,
263
- react: z.strictObject({
264
- supported: z.boolean(),
338
+ react: z2.strictObject({
339
+ supported: z2.boolean(),
265
340
  version: boundedString(64).optional(),
266
341
  componentName: boundedString(256).optional(),
267
- componentStack: z.array(boundedString(256)).max(64),
342
+ componentStack: z2.array(boundedString(256)).max(64),
268
343
  source: sourceRefSchema.optional()
269
344
  }),
270
- element: z.strictObject({
345
+ element: z2.strictObject({
271
346
  tagName: boundedString(128),
272
347
  selector: boundedString(2048),
273
348
  sanitizedHtml: boundedString(8192),
274
349
  textPreview: boundedString(2048).optional(),
275
350
  role: boundedString(256).optional(),
276
- rect: z.strictObject({
277
- x: z.number(),
278
- y: z.number(),
279
- width: z.number().nonnegative(),
280
- 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()
281
356
  })
282
357
  }),
283
- styles: z.strictObject({
284
- classNames: z.array(boundedString(512)).max(256),
358
+ styles: z2.strictObject({
359
+ classNames: z2.array(boundedString(512)).max(256),
285
360
  inlineStyle: boundedString(8192).optional(),
286
- matchedRules: z.array(matchedStyleRuleSchema).max(256),
287
- computed: z.record(boundedString(256), boundedString(2048)),
288
- 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)
289
364
  }),
290
365
  code: codeContextSchema.optional(),
291
- warnings: z.array(boundedString(1024)).max(64)
366
+ warnings: z2.array(boundedString(1024)).max(64)
292
367
  });
293
- var spotAnnotationRequestSchema = z.strictObject({
294
- schemaVersion: z.literal(3),
368
+ var spotAnnotationRequestSchema = z2.strictObject({
369
+ schemaVersion: z2.literal(3),
295
370
  id: boundedString(128),
296
- locale: z.enum(SPOTPATCH_LOCALES),
297
- page: z.strictObject({
371
+ locale: z2.enum(SPOTPATCH_LOCALES),
372
+ page: z2.strictObject({
298
373
  url: boundedString(2048),
299
374
  pathname: boundedString(2048),
300
375
  title: boundedString(1024),
301
- viewportWidth: z.number().nonnegative(),
302
- viewportHeight: z.number().nonnegative(),
303
- devicePixelRatio: z.number().positive()
376
+ viewportWidth: z2.number().nonnegative(),
377
+ viewportHeight: z2.number().nonnegative(),
378
+ devicePixelRatio: z2.number().positive()
304
379
  }),
305
- targets: z.array(spotTargetContextRequestSchema).min(1).max(MAX_ANNOTATION_TARGETS),
306
- createdAt: z.iso.datetime()
380
+ targets: z2.array(spotTargetContextRequestSchema).min(1).max(MAX_ANNOTATION_TARGETS),
381
+ createdAt: z2.iso.datetime()
307
382
  }).superRefine((annotation, context) => {
308
383
  const total = annotation.targets.reduce(
309
384
  (characters, target) => characters + target.instruction.length,
@@ -317,51 +392,51 @@ var spotAnnotationRequestSchema = z.strictObject({
317
392
  });
318
393
  }
319
394
  });
320
- var agentCapabilityRequestSchema = z.strictObject({
321
- providerProfileId: profileIdSchema,
322
- modelProfileId: profileIdSchema
395
+ var agentCapabilityRequestSchema = z2.strictObject({
396
+ providerProfileId: profileIdSchema2,
397
+ modelProfileId: profileIdSchema2
323
398
  });
324
- var agentWorkspaceHealthRequestSchema = z.strictObject({});
325
- var agentJobCreateRequestSchema = z.strictObject({
399
+ var agentWorkspaceHealthRequestSchema = z2.strictObject({});
400
+ var agentJobCreateRequestSchema = z2.strictObject({
326
401
  annotation: spotAnnotationRequestSchema,
327
- providerProfileId: profileIdSchema,
328
- modelProfileId: profileIdSchema,
329
- providerDataConsent: z.literal(true),
330
- 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")
331
406
  });
332
- var agentJobActionRequestSchema = z.strictObject({});
407
+ var agentJobActionRequestSchema = z2.strictObject({});
333
408
 
334
409
  // src/protocol/agent-schemas.ts
335
- import { z as z2 } from "zod";
336
- var profileIdSchema2 = z2.string().min(1).max(64).regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/);
337
- var boundedString2 = (maximum) => z2.string().max(maximum);
338
- var errorCodeSchema = z2.enum(ERROR_CODES);
339
- var agentCapabilitySnapshotSchema = z2.strictObject({
340
- 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,
341
416
  providerLabel: boundedString2(100),
342
- modelProfileId: profileIdSchema2,
417
+ modelProfileId: profileIdSchema3,
343
418
  modelLabel: boundedString2(100),
344
- protocol: z2.enum(["responses", "chat-completions"]),
345
- state: z2.enum(AGENT_CAPABILITY_STATES),
346
- authenticated: z2.boolean(),
347
- modelAvailable: z2.boolean(),
348
- toolCalling: z2.boolean(),
349
- toolResultContinuation: z2.boolean(),
350
- streaming: z2.boolean(),
351
- 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(),
352
427
  errorCode: errorCodeSchema.optional()
353
428
  });
354
- var agentWorkspaceHealthSnapshotSchema = z2.strictObject({
355
- state: z2.enum(AGENT_WORKSPACE_STATES),
356
- checkedAt: z2.iso.datetime(),
357
- changes: z2.strictObject({
358
- staged: z2.number().int().nonnegative(),
359
- unstaged: z2.number().int().nonnegative(),
360
- untracked: z2.number().int().nonnegative(),
361
- conflicted: z2.number().int().nonnegative(),
362
- 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()
363
438
  }),
364
- canIncludeLocalChanges: z2.boolean(),
439
+ canIncludeLocalChanges: z3.boolean(),
365
440
  errorCode: errorCodeSchema.optional()
366
441
  }).refine(
367
442
  ({ state, changes, canIncludeLocalChanges, errorCode }) => {
@@ -379,42 +454,42 @@ var agentWorkspaceHealthSnapshotSchema = z2.strictObject({
379
454
  },
380
455
  { message: "Agent workspace health fields are inconsistent." }
381
456
  );
382
- var agentChangedFileSchema = z2.strictObject({
457
+ var agentChangedFileSchema = z3.strictObject({
383
458
  relativePath: boundedString2(1024),
384
- kind: z2.enum(AGENT_FILE_CHANGE_KINDS),
385
- additions: z2.number().int().nonnegative(),
386
- 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()
387
462
  });
388
- var agentCheckResultSchema = z2.strictObject({
389
- checkId: profileIdSchema2,
463
+ var agentCheckResultSchema = z3.strictObject({
464
+ checkId: profileIdSchema3,
390
465
  label: boundedString2(100),
391
- status: z2.enum(AGENT_CHECK_STATUSES),
392
- durationMs: z2.number().int().nonnegative(),
466
+ status: z3.enum(AGENT_CHECK_STATUSES),
467
+ durationMs: z3.number().int().nonnegative(),
393
468
  output: boundedString2(8e4)
394
469
  });
395
- var agentJobSnapshotSchema = z2.strictObject({
396
- jobId: z2.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/),
397
- status: z2.enum(AGENT_JOB_STATUSES),
398
- 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,
399
474
  providerLabel: boundedString2(100),
400
- modelProfileId: profileIdSchema2,
475
+ modelProfileId: profileIdSchema3,
401
476
  modelLabel: boundedString2(100),
402
477
  phaseMessage: boundedString2(1024),
403
- createdAt: z2.iso.datetime(),
404
- updatedAt: z2.iso.datetime(),
405
- canCancel: z2.boolean(),
406
- canApply: z2.boolean(),
407
- 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(),
408
483
  errorCode: errorCodeSchema.optional()
409
484
  });
410
- var agentJobResultSchema = z2.strictObject({
411
- 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_-]+$/),
412
487
  summary: boundedString2(8e4),
413
488
  diff: boundedString2(1e6),
414
- files: z2.array(agentChangedFileSchema).max(100),
415
- checks: z2.array(agentCheckResultSchema).max(100)
489
+ files: z3.array(agentChangedFileSchema).max(100),
490
+ checks: z3.array(agentCheckResultSchema).max(100)
416
491
  });
417
- var agentJobResultResponseSchema = z2.strictObject({
492
+ var agentJobResultResponseSchema = z3.strictObject({
418
493
  snapshot: agentJobSnapshotSchema,
419
494
  result: agentJobResultSchema.optional()
420
495
  }).superRefine((value, context) => {
@@ -426,44 +501,44 @@ var agentJobResultResponseSchema = z2.strictObject({
426
501
  });
427
502
  }
428
503
  });
429
- var agentJobEventBaseSchema = z2.strictObject({
430
- schemaVersion: z2.literal(2),
431
- sequence: z2.number().int().positive(),
432
- jobId: z2.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/),
433
- status: z2.enum(AGENT_JOB_STATUSES),
434
- 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()
435
510
  });
436
- var agentJobEventSchema = z2.discriminatedUnion("type", [
511
+ var agentJobEventSchema = z3.discriminatedUnion("type", [
437
512
  agentJobEventBaseSchema.extend({
438
- type: z2.literal("snapshot"),
439
- data: z2.strictObject({ snapshot: agentJobSnapshotSchema })
513
+ type: z3.literal("snapshot"),
514
+ data: z3.strictObject({ snapshot: agentJobSnapshotSchema })
440
515
  }),
441
516
  agentJobEventBaseSchema.extend({
442
- type: z2.literal("phase"),
443
- data: z2.strictObject({ message: boundedString2(1024) })
517
+ type: z3.literal("phase"),
518
+ data: z3.strictObject({ message: boundedString2(1024) })
444
519
  }),
445
520
  agentJobEventBaseSchema.extend({
446
- type: z2.literal("tool"),
447
- data: z2.strictObject({
448
- turn: z2.number().int().positive(),
521
+ type: z3.literal("tool"),
522
+ data: z3.strictObject({
523
+ turn: z3.number().int().positive(),
449
524
  toolCallId: boundedString2(256),
450
525
  toolName: boundedString2(100),
451
- state: z2.enum(["started", "succeeded", "failed"]),
526
+ state: z3.enum(["started", "succeeded", "failed"]),
452
527
  relativePath: boundedString2(1024).optional(),
453
528
  checkLabel: boundedString2(100).optional()
454
529
  })
455
530
  }),
456
531
  agentJobEventBaseSchema.extend({
457
- type: z2.literal("check"),
458
- data: z2.strictObject({ result: agentCheckResultSchema })
532
+ type: z3.literal("check"),
533
+ data: z3.strictObject({ result: agentCheckResultSchema })
459
534
  }),
460
535
  agentJobEventBaseSchema.extend({
461
- type: z2.literal("result-ready"),
462
- data: z2.strictObject({ hasResult: z2.literal(true) })
536
+ type: z3.literal("result-ready"),
537
+ data: z3.strictObject({ hasResult: z3.literal(true) })
463
538
  }),
464
539
  agentJobEventBaseSchema.extend({
465
- type: z2.literal("error"),
466
- data: z2.strictObject({
540
+ type: z3.literal("error"),
541
+ data: z3.strictObject({
467
542
  code: errorCodeSchema,
468
543
  message: boundedString2(1024)
469
544
  })
@@ -508,6 +583,8 @@ export {
508
583
  SPOTPATCH_ENDPOINTS,
509
584
  SPOTPATCH_LOCALES,
510
585
  SPOTPATCH_LOCALE_PREFERENCES,
586
+ SPOTPATCH_NEXT_BUNDLERS,
587
+ SPOTPATCH_NEXT_ROUTER_KINDS,
511
588
  SPOTPATCH_REPOSITORY_URL,
512
589
  SPOTPATCH_TOKEN_HEADER,
513
590
  SpotPatchError,
@@ -529,6 +606,8 @@ export {
529
606
  openEditorRequestSchema,
530
607
  parseSourceMarker,
531
608
  redactSensitiveText,
609
+ runtimeBootstrapRequestSchema,
610
+ runtimeConfigSchema,
532
611
  sanitizeUrl,
533
612
  sourceContextRequestSchema,
534
613
  spotAnnotationRequestSchema,