@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/README.md +24 -8
- package/dist/index.cjs +221 -138
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +43 -13
- package/dist/index.d.ts +43 -13
- package/dist/index.js +217 -138
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
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:
|
|
308
|
+
maxLines: z2.number().int().positive()
|
|
234
309
|
}).strict();
|
|
235
310
|
var openEditorRequestSchema = sourceCoordinatesSchema.strict();
|
|
236
|
-
var
|
|
237
|
-
var boundedString = (maximum) =>
|
|
238
|
-
var sourceRefSchema =
|
|
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:
|
|
242
|
-
column:
|
|
243
|
-
origin:
|
|
244
|
-
confidence:
|
|
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 =
|
|
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 =
|
|
327
|
+
var codeContextSchema = z2.strictObject({
|
|
253
328
|
relativePath: boundedString(1024),
|
|
254
|
-
language:
|
|
255
|
-
startLine:
|
|
256
|
-
endLine:
|
|
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:
|
|
333
|
+
boundary: z2.enum(["component", "nearby-lines"])
|
|
259
334
|
});
|
|
260
|
-
var spotTargetContextRequestSchema =
|
|
261
|
-
instruction:
|
|
335
|
+
var spotTargetContextRequestSchema = z2.strictObject({
|
|
336
|
+
instruction: z2.string().trim().min(1).max(MAX_TARGET_INSTRUCTION_CHARACTERS),
|
|
262
337
|
source: sourceRefSchema,
|
|
263
|
-
react:
|
|
264
|
-
supported:
|
|
338
|
+
react: z2.strictObject({
|
|
339
|
+
supported: z2.boolean(),
|
|
265
340
|
version: boundedString(64).optional(),
|
|
266
341
|
componentName: boundedString(256).optional(),
|
|
267
|
-
componentStack:
|
|
342
|
+
componentStack: z2.array(boundedString(256)).max(64),
|
|
268
343
|
source: sourceRefSchema.optional()
|
|
269
344
|
}),
|
|
270
|
-
element:
|
|
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:
|
|
277
|
-
x:
|
|
278
|
-
y:
|
|
279
|
-
width:
|
|
280
|
-
height:
|
|
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:
|
|
284
|
-
classNames:
|
|
358
|
+
styles: z2.strictObject({
|
|
359
|
+
classNames: z2.array(boundedString(512)).max(256),
|
|
285
360
|
inlineStyle: boundedString(8192).optional(),
|
|
286
|
-
matchedRules:
|
|
287
|
-
computed:
|
|
288
|
-
warnings:
|
|
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:
|
|
366
|
+
warnings: z2.array(boundedString(1024)).max(64)
|
|
292
367
|
});
|
|
293
|
-
var spotAnnotationRequestSchema =
|
|
294
|
-
schemaVersion:
|
|
368
|
+
var spotAnnotationRequestSchema = z2.strictObject({
|
|
369
|
+
schemaVersion: z2.literal(3),
|
|
295
370
|
id: boundedString(128),
|
|
296
|
-
locale:
|
|
297
|
-
page:
|
|
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:
|
|
302
|
-
viewportHeight:
|
|
303
|
-
devicePixelRatio:
|
|
376
|
+
viewportWidth: z2.number().nonnegative(),
|
|
377
|
+
viewportHeight: z2.number().nonnegative(),
|
|
378
|
+
devicePixelRatio: z2.number().positive()
|
|
304
379
|
}),
|
|
305
|
-
targets:
|
|
306
|
-
createdAt:
|
|
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 =
|
|
321
|
-
providerProfileId:
|
|
322
|
-
modelProfileId:
|
|
395
|
+
var agentCapabilityRequestSchema = z2.strictObject({
|
|
396
|
+
providerProfileId: profileIdSchema2,
|
|
397
|
+
modelProfileId: profileIdSchema2
|
|
323
398
|
});
|
|
324
|
-
var agentWorkspaceHealthRequestSchema =
|
|
325
|
-
var agentJobCreateRequestSchema =
|
|
399
|
+
var agentWorkspaceHealthRequestSchema = z2.strictObject({});
|
|
400
|
+
var agentJobCreateRequestSchema = z2.strictObject({
|
|
326
401
|
annotation: spotAnnotationRequestSchema,
|
|
327
|
-
providerProfileId:
|
|
328
|
-
modelProfileId:
|
|
329
|
-
providerDataConsent:
|
|
330
|
-
workingTreeMode:
|
|
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 =
|
|
407
|
+
var agentJobActionRequestSchema = z2.strictObject({});
|
|
333
408
|
|
|
334
409
|
// src/protocol/agent-schemas.ts
|
|
335
|
-
import { z as
|
|
336
|
-
var
|
|
337
|
-
var boundedString2 = (maximum) =>
|
|
338
|
-
var errorCodeSchema =
|
|
339
|
-
var agentCapabilitySnapshotSchema =
|
|
340
|
-
providerProfileId:
|
|
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:
|
|
417
|
+
modelProfileId: profileIdSchema3,
|
|
343
418
|
modelLabel: boundedString2(100),
|
|
344
|
-
protocol:
|
|
345
|
-
state:
|
|
346
|
-
authenticated:
|
|
347
|
-
modelAvailable:
|
|
348
|
-
toolCalling:
|
|
349
|
-
toolResultContinuation:
|
|
350
|
-
streaming:
|
|
351
|
-
checkedAt:
|
|
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 =
|
|
355
|
-
state:
|
|
356
|
-
checkedAt:
|
|
357
|
-
changes:
|
|
358
|
-
staged:
|
|
359
|
-
unstaged:
|
|
360
|
-
untracked:
|
|
361
|
-
conflicted:
|
|
362
|
-
total:
|
|
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:
|
|
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 =
|
|
457
|
+
var agentChangedFileSchema = z3.strictObject({
|
|
383
458
|
relativePath: boundedString2(1024),
|
|
384
|
-
kind:
|
|
385
|
-
additions:
|
|
386
|
-
deletions:
|
|
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 =
|
|
389
|
-
checkId:
|
|
463
|
+
var agentCheckResultSchema = z3.strictObject({
|
|
464
|
+
checkId: profileIdSchema3,
|
|
390
465
|
label: boundedString2(100),
|
|
391
|
-
status:
|
|
392
|
-
durationMs:
|
|
466
|
+
status: z3.enum(AGENT_CHECK_STATUSES),
|
|
467
|
+
durationMs: z3.number().int().nonnegative(),
|
|
393
468
|
output: boundedString2(8e4)
|
|
394
469
|
});
|
|
395
|
-
var agentJobSnapshotSchema =
|
|
396
|
-
jobId:
|
|
397
|
-
status:
|
|
398
|
-
providerProfileId:
|
|
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:
|
|
475
|
+
modelProfileId: profileIdSchema3,
|
|
401
476
|
modelLabel: boundedString2(100),
|
|
402
477
|
phaseMessage: boundedString2(1024),
|
|
403
|
-
createdAt:
|
|
404
|
-
updatedAt:
|
|
405
|
-
canCancel:
|
|
406
|
-
canApply:
|
|
407
|
-
canRevert:
|
|
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 =
|
|
411
|
-
jobId:
|
|
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:
|
|
415
|
-
checks:
|
|
489
|
+
files: z3.array(agentChangedFileSchema).max(100),
|
|
490
|
+
checks: z3.array(agentCheckResultSchema).max(100)
|
|
416
491
|
});
|
|
417
|
-
var agentJobResultResponseSchema =
|
|
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 =
|
|
430
|
-
schemaVersion:
|
|
431
|
-
sequence:
|
|
432
|
-
jobId:
|
|
433
|
-
status:
|
|
434
|
-
timestamp:
|
|
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 =
|
|
511
|
+
var agentJobEventSchema = z3.discriminatedUnion("type", [
|
|
437
512
|
agentJobEventBaseSchema.extend({
|
|
438
|
-
type:
|
|
439
|
-
data:
|
|
513
|
+
type: z3.literal("snapshot"),
|
|
514
|
+
data: z3.strictObject({ snapshot: agentJobSnapshotSchema })
|
|
440
515
|
}),
|
|
441
516
|
agentJobEventBaseSchema.extend({
|
|
442
|
-
type:
|
|
443
|
-
data:
|
|
517
|
+
type: z3.literal("phase"),
|
|
518
|
+
data: z3.strictObject({ message: boundedString2(1024) })
|
|
444
519
|
}),
|
|
445
520
|
agentJobEventBaseSchema.extend({
|
|
446
|
-
type:
|
|
447
|
-
data:
|
|
448
|
-
turn:
|
|
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:
|
|
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:
|
|
458
|
-
data:
|
|
532
|
+
type: z3.literal("check"),
|
|
533
|
+
data: z3.strictObject({ result: agentCheckResultSchema })
|
|
459
534
|
}),
|
|
460
535
|
agentJobEventBaseSchema.extend({
|
|
461
|
-
type:
|
|
462
|
-
data:
|
|
536
|
+
type: z3.literal("result-ready"),
|
|
537
|
+
data: z3.strictObject({ hasResult: z3.literal(true) })
|
|
463
538
|
}),
|
|
464
539
|
agentJobEventBaseSchema.extend({
|
|
465
|
-
type:
|
|
466
|
-
data:
|
|
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,
|