@spotpatch/shared 1.12.0 → 1.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.
- package/dist/annotation-C0Me9mN2.d.cts +102 -0
- package/dist/annotation-C0Me9mN2.d.ts +102 -0
- package/dist/chunk-C2PJ4UUU.js +195 -0
- package/dist/chunk-C2PJ4UUU.js.map +1 -0
- package/dist/chunk-DYTWEIES.js +89 -0
- package/dist/chunk-DYTWEIES.js.map +1 -0
- package/dist/{chunk-JGOIBOFI.js → chunk-FPDSZDP2.js} +16 -2
- package/dist/chunk-FPDSZDP2.js.map +1 -0
- package/dist/chunk-IUTOVI5G.js +584 -0
- package/dist/chunk-IUTOVI5G.js.map +1 -0
- package/dist/{chunk-JU5HIWX7.js → chunk-YQ5GL523.js} +8 -173
- package/dist/chunk-YQ5GL523.js.map +1 -0
- package/dist/contextual-ask-B0mCFn92.d.cts +1451 -0
- package/dist/contextual-ask-B0mCFn92.d.ts +1451 -0
- package/dist/contextual-ask-browser.cjs +200 -0
- package/dist/contextual-ask-browser.cjs.map +1 -0
- package/dist/contextual-ask-browser.d.cts +31 -0
- package/dist/contextual-ask-browser.d.ts +31 -0
- package/dist/contextual-ask-browser.js +66 -0
- package/dist/contextual-ask-browser.js.map +1 -0
- package/dist/contextual-ask-node.cjs +968 -0
- package/dist/contextual-ask-node.cjs.map +1 -0
- package/dist/contextual-ask-node.d.cts +14 -0
- package/dist/contextual-ask-node.d.ts +14 -0
- package/dist/contextual-ask-node.js +122 -0
- package/dist/contextual-ask-node.js.map +1 -0
- package/dist/{data-flow-runtime-oq9m21IP.d.cts → data-flow-runtime-D8HPSb2i.d.cts} +13 -13
- package/dist/{data-flow-runtime-BelOgo8s.d.ts → data-flow-runtime-vKeEaJgT.d.ts} +13 -13
- package/dist/data-flow-runtime.cjs +2 -0
- package/dist/data-flow-runtime.cjs.map +1 -1
- package/dist/data-flow-runtime.d.cts +2 -2
- package/dist/data-flow-runtime.d.ts +2 -2
- package/dist/data-flow-runtime.js +1 -1
- package/dist/{endpoints-GedF44M2.d.cts → endpoints-O3ohYyAo.d.cts} +7 -1
- package/dist/{endpoints-GedF44M2.d.ts → endpoints-O3ohYyAo.d.ts} +7 -1
- package/dist/error-code-DRz2eqcB.d.cts +63 -0
- package/dist/error-code-DRz2eqcB.d.ts +63 -0
- package/dist/external-agent-node.cjs +142 -121
- package/dist/external-agent-node.cjs.map +1 -1
- package/dist/external-agent-node.d.cts +27 -26
- package/dist/external-agent-node.d.ts +27 -26
- package/dist/external-agent-node.js +4 -2
- package/dist/external-agent-node.js.map +1 -1
- package/dist/{external-handoff-BNUyMfNb.d.ts → external-handoff-DighrWn8.d.ts} +30 -130
- package/dist/{external-handoff-BNUyMfNb.d.cts → external-handoff-DwtFFR6F.d.cts} +30 -130
- package/dist/external-handoff-browser.cjs +2 -0
- package/dist/external-handoff-browser.cjs.map +1 -1
- package/dist/external-handoff-browser.d.cts +4 -3
- package/dist/external-handoff-browser.d.ts +4 -3
- package/dist/external-handoff-browser.js +1 -1
- package/dist/index.cjs +1144 -422
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +126 -178
- package/dist/index.d.ts +126 -178
- package/dist/index.js +97 -16
- package/dist/index.js.map +1 -1
- package/package.json +29 -2
- package/dist/chunk-JGOIBOFI.js.map +0 -1
- package/dist/chunk-JU5HIWX7.js.map +0 -1
- package/dist/{external-agent-control-BMoSq_xI.d.cts → external-agent-control-CRBbjDDk.d.cts} +46 -46
- package/dist/{external-agent-control-BMoSq_xI.d.ts → external-agent-control-CRBbjDDk.d.ts} +46 -46
|
@@ -0,0 +1,584 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ASK_ANSWER_WARNING_CODES,
|
|
3
|
+
ASK_EXECUTOR_ANSWER_WARNING_CODES,
|
|
4
|
+
ASK_FILE_COUNT_BUCKETS,
|
|
5
|
+
ASK_JOB_STATUSES,
|
|
6
|
+
ASK_READ_ACTIVITY_STATES,
|
|
7
|
+
ASK_SOURCE_CONFIDENCES,
|
|
8
|
+
CONTEXTUAL_ASK_EXECUTOR_KINDS,
|
|
9
|
+
CONTEXTUAL_ASK_EXECUTOR_STATES,
|
|
10
|
+
CONTEXTUAL_ASK_LIMITS,
|
|
11
|
+
CONTEXTUAL_ASK_SCHEMA_VERSION
|
|
12
|
+
} from "./chunk-DYTWEIES.js";
|
|
13
|
+
import {
|
|
14
|
+
CONTEXTUAL_ASK_ERROR_CODES,
|
|
15
|
+
MAX_ANNOTATION_INSTRUCTION_CHARACTERS,
|
|
16
|
+
MAX_TARGET_INSTRUCTION_CHARACTERS,
|
|
17
|
+
SPOTPATCH_LOCALES,
|
|
18
|
+
pageContextSchema,
|
|
19
|
+
spotTargetContextSchema
|
|
20
|
+
} from "./chunk-C2PJ4UUU.js";
|
|
21
|
+
|
|
22
|
+
// src/model/contextual-ask.ts
|
|
23
|
+
import { z } from "zod";
|
|
24
|
+
var limits = CONTEXTUAL_ASK_LIMITS;
|
|
25
|
+
var contextualAskBoundedText = (maximum) => z.string().trim().min(1).max(maximum);
|
|
26
|
+
var contextualAskOpaqueIdSchema = z.string().min(1).max(limits.maximumIdCharacters).regex(/^[A-Za-z0-9_-]+$/u);
|
|
27
|
+
var profileIdSchema = z.string().min(1).max(limits.maximumProfileIdCharacters).regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/u);
|
|
28
|
+
var contentHashSchema = z.string().length(limits.contentHashHexCharacters).regex(/^[a-f0-9]+$/u);
|
|
29
|
+
var contextualAskRelativePathSchema = z.string().min(1).max(limits.maximumRelativePathCharacters).refine(
|
|
30
|
+
(value) => !value.startsWith("/") && !value.includes("\\") && !Array.from(value).some((character) => {
|
|
31
|
+
const codePoint = character.codePointAt(0);
|
|
32
|
+
return codePoint !== void 0 && (codePoint <= 31 || codePoint === 127);
|
|
33
|
+
}) && !/^[A-Za-z]:/u.test(value) && value.split("/").every((segment) => segment !== "" && segment !== "." && segment !== ".."),
|
|
34
|
+
{ message: "Expected a safe project-relative POSIX path." }
|
|
35
|
+
);
|
|
36
|
+
var contextualAskExecutorPreferenceSchema = z.discriminatedUnion("kind", [
|
|
37
|
+
z.strictObject({
|
|
38
|
+
kind: z.literal("configured-key"),
|
|
39
|
+
providerProfileId: profileIdSchema,
|
|
40
|
+
modelProfileId: profileIdSchema
|
|
41
|
+
}),
|
|
42
|
+
z.strictObject({ kind: z.literal("managed-codex") })
|
|
43
|
+
]);
|
|
44
|
+
var contextualAskOptionsSchema = z.union([
|
|
45
|
+
z.boolean(),
|
|
46
|
+
z.strictObject({
|
|
47
|
+
defaultExecutor: contextualAskExecutorPreferenceSchema.optional()
|
|
48
|
+
})
|
|
49
|
+
]);
|
|
50
|
+
var spotSelectionTargetSchema = spotTargetContextSchema.omit({ instruction: true, page: true }).extend({
|
|
51
|
+
targetId: contextualAskOpaqueIdSchema,
|
|
52
|
+
page: pageContextSchema
|
|
53
|
+
}).strict();
|
|
54
|
+
var spotSelectionContextSchema = z.strictObject({
|
|
55
|
+
schemaVersion: z.literal(CONTEXTUAL_ASK_SCHEMA_VERSION),
|
|
56
|
+
selectionId: contextualAskOpaqueIdSchema,
|
|
57
|
+
locale: z.enum(SPOTPATCH_LOCALES),
|
|
58
|
+
targets: z.array(spotSelectionTargetSchema).min(1).max(limits.maximumTargets),
|
|
59
|
+
createdAt: z.iso.datetime()
|
|
60
|
+
}).superRefine((selection, context) => {
|
|
61
|
+
const targetIds = selection.targets.map((target) => target.targetId);
|
|
62
|
+
if (new Set(targetIds).size !== targetIds.length) {
|
|
63
|
+
context.addIssue({
|
|
64
|
+
code: "custom",
|
|
65
|
+
message: "Selection target IDs must be unique.",
|
|
66
|
+
path: ["targets"]
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
var askDraftOriginSchema = z.strictObject({
|
|
71
|
+
kind: z.literal("contextual-ask"),
|
|
72
|
+
askJobId: contextualAskOpaqueIdSchema,
|
|
73
|
+
question: contextualAskBoundedText(limits.maximumQuestionCharacters),
|
|
74
|
+
answerDigest: contextualAskBoundedText(limits.maximumQuestionCharacters),
|
|
75
|
+
sourceIds: z.array(contextualAskOpaqueIdSchema).max(limits.maximumSources)
|
|
76
|
+
}).superRefine((origin, context) => {
|
|
77
|
+
if (new Set(origin.sourceIds).size !== origin.sourceIds.length) {
|
|
78
|
+
context.addIssue({
|
|
79
|
+
code: "custom",
|
|
80
|
+
message: "Ask origin source IDs must be unique.",
|
|
81
|
+
path: ["sourceIds"]
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
var askTaskSchema = z.strictObject({
|
|
86
|
+
kind: z.literal("ask"),
|
|
87
|
+
question: contextualAskBoundedText(limits.maximumQuestionCharacters)
|
|
88
|
+
});
|
|
89
|
+
var changeInstructionSchema = z.strictObject({
|
|
90
|
+
targetId: contextualAskOpaqueIdSchema,
|
|
91
|
+
instruction: contextualAskBoundedText(MAX_TARGET_INSTRUCTION_CHARACTERS)
|
|
92
|
+
});
|
|
93
|
+
var changeTaskSchema = z.strictObject({
|
|
94
|
+
kind: z.literal("change"),
|
|
95
|
+
instructions: z.array(changeInstructionSchema).min(1).max(limits.maximumTargets),
|
|
96
|
+
origin: askDraftOriginSchema.optional()
|
|
97
|
+
});
|
|
98
|
+
var envelopeBaseShape = {
|
|
99
|
+
schemaVersion: z.literal(CONTEXTUAL_ASK_SCHEMA_VERSION),
|
|
100
|
+
taskId: contextualAskOpaqueIdSchema,
|
|
101
|
+
selection: spotSelectionContextSchema,
|
|
102
|
+
createdAt: z.iso.datetime()
|
|
103
|
+
};
|
|
104
|
+
var spotAskTaskEnvelopeSchema = z.strictObject({
|
|
105
|
+
...envelopeBaseShape,
|
|
106
|
+
task: askTaskSchema
|
|
107
|
+
});
|
|
108
|
+
var spotChangeTaskEnvelopeSchema = z.strictObject({
|
|
109
|
+
...envelopeBaseShape,
|
|
110
|
+
task: changeTaskSchema
|
|
111
|
+
}).superRefine((envelope, context) => {
|
|
112
|
+
const targetIds = envelope.selection.targets.map((target) => target.targetId);
|
|
113
|
+
const instructionIds = envelope.task.instructions.map(
|
|
114
|
+
(instruction) => instruction.targetId
|
|
115
|
+
);
|
|
116
|
+
if (new Set(instructionIds).size !== instructionIds.length || instructionIds.length !== targetIds.length || targetIds.some((targetId) => !instructionIds.includes(targetId))) {
|
|
117
|
+
context.addIssue({
|
|
118
|
+
code: "custom",
|
|
119
|
+
message: "Change instructions must map one-to-one to selection targets.",
|
|
120
|
+
path: ["task", "instructions"]
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
const total = envelope.task.instructions.reduce(
|
|
124
|
+
(characters, instruction) => characters + instruction.instruction.length,
|
|
125
|
+
0
|
|
126
|
+
);
|
|
127
|
+
if (total > MAX_ANNOTATION_INSTRUCTION_CHARACTERS) {
|
|
128
|
+
context.addIssue({
|
|
129
|
+
code: "custom",
|
|
130
|
+
message: "Combined change instructions exceed the task limit.",
|
|
131
|
+
path: ["task", "instructions"]
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
var spotTaskEnvelopeSchema = z.union([
|
|
136
|
+
spotAskTaskEnvelopeSchema,
|
|
137
|
+
spotChangeTaskEnvelopeSchema
|
|
138
|
+
]);
|
|
139
|
+
var askAnswerWarningSchema = z.strictObject({
|
|
140
|
+
code: z.enum(ASK_ANSWER_WARNING_CODES)
|
|
141
|
+
});
|
|
142
|
+
var askExecutorAnswerWarningSchema = z.strictObject({
|
|
143
|
+
code: z.enum(ASK_EXECUTOR_ANSWER_WARNING_CODES)
|
|
144
|
+
});
|
|
145
|
+
var askDraftCitationSchema = z.strictObject({
|
|
146
|
+
handleId: contextualAskOpaqueIdSchema,
|
|
147
|
+
startLine: z.number().int().positive(),
|
|
148
|
+
endLine: z.number().int().positive()
|
|
149
|
+
}).refine((citation) => citation.endLine >= citation.startLine, {
|
|
150
|
+
message: "Citation endLine must not precede startLine."
|
|
151
|
+
});
|
|
152
|
+
var draftCitationListSchema = z.array(askDraftCitationSchema).max(limits.maximumSources);
|
|
153
|
+
var draftParagraphBlockSchema = z.strictObject({
|
|
154
|
+
kind: z.literal("paragraph"),
|
|
155
|
+
text: contextualAskBoundedText(limits.maximumAnswerCharacters),
|
|
156
|
+
citations: draftCitationListSchema
|
|
157
|
+
});
|
|
158
|
+
var draftListBlockSchema = z.strictObject({
|
|
159
|
+
kind: z.literal("list"),
|
|
160
|
+
items: z.array(
|
|
161
|
+
z.strictObject({
|
|
162
|
+
text: contextualAskBoundedText(limits.maximumAnswerCharacters),
|
|
163
|
+
citations: draftCitationListSchema
|
|
164
|
+
})
|
|
165
|
+
).min(1).max(limits.maximumAnswerBlocks)
|
|
166
|
+
});
|
|
167
|
+
var draftCodeBlockSchema = z.strictObject({
|
|
168
|
+
kind: z.literal("code"),
|
|
169
|
+
code: z.string().min(1).max(limits.maximumAnswerCharacters),
|
|
170
|
+
language: contextualAskBoundedText(limits.maximumLanguageCharacters).optional(),
|
|
171
|
+
citations: draftCitationListSchema
|
|
172
|
+
});
|
|
173
|
+
var askAnswerDraftBlockSchema = z.discriminatedUnion("kind", [
|
|
174
|
+
draftParagraphBlockSchema,
|
|
175
|
+
draftListBlockSchema,
|
|
176
|
+
draftCodeBlockSchema
|
|
177
|
+
]);
|
|
178
|
+
function draftCharacters(blocks) {
|
|
179
|
+
return blocks.reduce((total, block) => {
|
|
180
|
+
if (block.kind === "paragraph") return total + block.text.length;
|
|
181
|
+
if (block.kind === "code") return total + block.code.length;
|
|
182
|
+
return total + block.items.reduce((itemTotal, item) => itemTotal + item.text.length, 0);
|
|
183
|
+
}, 0);
|
|
184
|
+
}
|
|
185
|
+
var askAnswerDraftSchema = z.strictObject({
|
|
186
|
+
blocks: z.array(askAnswerDraftBlockSchema).min(1).max(limits.maximumAnswerBlocks),
|
|
187
|
+
warnings: z.array(askExecutorAnswerWarningSchema).max(limits.maximumAnswerBlocks)
|
|
188
|
+
}).superRefine((answer, context) => {
|
|
189
|
+
if (draftCharacters(answer.blocks) > limits.maximumAnswerCharacters) {
|
|
190
|
+
context.addIssue({
|
|
191
|
+
code: "custom",
|
|
192
|
+
message: "Combined answer text exceeds the answer limit.",
|
|
193
|
+
path: ["blocks"]
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
const citations = answer.blocks.flatMap(
|
|
197
|
+
(block) => block.kind === "list" ? block.items.flatMap((item) => item.citations) : block.citations
|
|
198
|
+
);
|
|
199
|
+
if (citations.length === 0 && !answer.warnings.some((warning) => warning.code === "insufficient-evidence")) {
|
|
200
|
+
context.addIssue({
|
|
201
|
+
code: "custom",
|
|
202
|
+
message: "An uncited answer draft must declare insufficient evidence.",
|
|
203
|
+
path: ["warnings"]
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
const distinct = new Set(
|
|
207
|
+
citations.map(
|
|
208
|
+
(citation) => `${citation.handleId}:${String(citation.startLine)}:${String(citation.endLine)}`
|
|
209
|
+
)
|
|
210
|
+
);
|
|
211
|
+
if (distinct.size > limits.maximumSources) {
|
|
212
|
+
context.addIssue({
|
|
213
|
+
code: "custom",
|
|
214
|
+
message: "Answer references exceed the source limit.",
|
|
215
|
+
path: ["blocks"]
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
var sourceIdListSchema = z.array(contextualAskOpaqueIdSchema).max(limits.maximumSources);
|
|
220
|
+
var paragraphBlockSchema = z.strictObject({
|
|
221
|
+
kind: z.literal("paragraph"),
|
|
222
|
+
text: contextualAskBoundedText(limits.maximumAnswerCharacters),
|
|
223
|
+
sourceIds: sourceIdListSchema
|
|
224
|
+
});
|
|
225
|
+
var listBlockSchema = z.strictObject({
|
|
226
|
+
kind: z.literal("list"),
|
|
227
|
+
items: z.array(
|
|
228
|
+
z.strictObject({
|
|
229
|
+
text: contextualAskBoundedText(limits.maximumAnswerCharacters),
|
|
230
|
+
sourceIds: sourceIdListSchema
|
|
231
|
+
})
|
|
232
|
+
).min(1).max(limits.maximumAnswerBlocks)
|
|
233
|
+
});
|
|
234
|
+
var codeBlockSchema = z.strictObject({
|
|
235
|
+
kind: z.literal("code"),
|
|
236
|
+
code: z.string().min(1).max(limits.maximumAnswerCharacters),
|
|
237
|
+
language: contextualAskBoundedText(limits.maximumLanguageCharacters).optional(),
|
|
238
|
+
sourceIds: sourceIdListSchema
|
|
239
|
+
});
|
|
240
|
+
var askAnswerBlockSchema = z.discriminatedUnion("kind", [
|
|
241
|
+
paragraphBlockSchema,
|
|
242
|
+
listBlockSchema,
|
|
243
|
+
codeBlockSchema
|
|
244
|
+
]);
|
|
245
|
+
var askSourceReferenceSchema = z.strictObject({
|
|
246
|
+
sourceId: contextualAskOpaqueIdSchema,
|
|
247
|
+
label: contextualAskBoundedText(limits.maximumLabelCharacters),
|
|
248
|
+
relativePath: contextualAskRelativePathSchema,
|
|
249
|
+
fileId: contextualAskOpaqueIdSchema,
|
|
250
|
+
startLine: z.number().int().positive(),
|
|
251
|
+
endLine: z.number().int().positive(),
|
|
252
|
+
confidence: z.enum(ASK_SOURCE_CONFIDENCES),
|
|
253
|
+
targetIds: z.array(contextualAskOpaqueIdSchema).min(1).max(limits.maximumTargets),
|
|
254
|
+
sourceVersion: contextualAskBoundedText(limits.maximumIdCharacters).optional(),
|
|
255
|
+
contentHash: contentHashSchema
|
|
256
|
+
}).superRefine((source, context) => {
|
|
257
|
+
if (source.endLine < source.startLine) {
|
|
258
|
+
context.addIssue({
|
|
259
|
+
code: "custom",
|
|
260
|
+
message: "Source endLine must not precede startLine.",
|
|
261
|
+
path: ["endLine"]
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
if (new Set(source.targetIds).size !== source.targetIds.length) {
|
|
265
|
+
context.addIssue({
|
|
266
|
+
code: "custom",
|
|
267
|
+
message: "Source target IDs must be unique.",
|
|
268
|
+
path: ["targetIds"]
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
function resultBlockCharacters(blocks) {
|
|
273
|
+
return blocks.reduce((total, block) => {
|
|
274
|
+
if (block.kind === "paragraph") return total + block.text.length;
|
|
275
|
+
if (block.kind === "code") return total + block.code.length;
|
|
276
|
+
return total + block.items.reduce((itemTotal, item) => itemTotal + item.text.length, 0);
|
|
277
|
+
}, 0);
|
|
278
|
+
}
|
|
279
|
+
var askAnswerResultSchema = z.strictObject({
|
|
280
|
+
schemaVersion: z.literal(CONTEXTUAL_ASK_SCHEMA_VERSION),
|
|
281
|
+
jobId: contextualAskOpaqueIdSchema,
|
|
282
|
+
selectionId: contextualAskOpaqueIdSchema,
|
|
283
|
+
contextHash: contentHashSchema,
|
|
284
|
+
executor: z.strictObject({
|
|
285
|
+
executorId: contextualAskOpaqueIdSchema,
|
|
286
|
+
kind: z.enum(CONTEXTUAL_ASK_EXECUTOR_KINDS),
|
|
287
|
+
label: contextualAskBoundedText(limits.maximumLabelCharacters),
|
|
288
|
+
modelLabel: contextualAskBoundedText(limits.maximumLabelCharacters)
|
|
289
|
+
}),
|
|
290
|
+
blocks: z.array(askAnswerBlockSchema).min(1).max(limits.maximumAnswerBlocks),
|
|
291
|
+
sources: z.array(askSourceReferenceSchema).max(limits.maximumSources),
|
|
292
|
+
warnings: z.array(askAnswerWarningSchema).max(limits.maximumAnswerBlocks),
|
|
293
|
+
createdAt: z.iso.datetime(),
|
|
294
|
+
expiresAt: z.iso.datetime()
|
|
295
|
+
}).superRefine((answer, context) => {
|
|
296
|
+
if (Date.parse(answer.expiresAt) <= Date.parse(answer.createdAt)) {
|
|
297
|
+
context.addIssue({
|
|
298
|
+
code: "custom",
|
|
299
|
+
message: "Answer expiry must follow creation.",
|
|
300
|
+
path: ["expiresAt"]
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
if (resultBlockCharacters(answer.blocks) > limits.maximumAnswerCharacters) {
|
|
304
|
+
context.addIssue({
|
|
305
|
+
code: "custom",
|
|
306
|
+
message: "Combined answer text exceeds the answer limit.",
|
|
307
|
+
path: ["blocks"]
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
const sourceIds = answer.sources.map((source) => source.sourceId);
|
|
311
|
+
if (new Set(sourceIds).size !== sourceIds.length) {
|
|
312
|
+
context.addIssue({
|
|
313
|
+
code: "custom",
|
|
314
|
+
message: "Answer source IDs must be unique.",
|
|
315
|
+
path: ["sources"]
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
const available = new Set(sourceIds);
|
|
319
|
+
const references = answer.blocks.flatMap(
|
|
320
|
+
(block) => block.kind === "list" ? block.items.flatMap((item) => item.sourceIds) : block.sourceIds
|
|
321
|
+
);
|
|
322
|
+
if (references.length === 0 && !answer.warnings.some((warning) => warning.code === "insufficient-evidence")) {
|
|
323
|
+
context.addIssue({
|
|
324
|
+
code: "custom",
|
|
325
|
+
message: "An uncited answer must declare insufficient evidence.",
|
|
326
|
+
path: ["warnings"]
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
if (references.some((sourceId) => !available.has(sourceId))) {
|
|
330
|
+
context.addIssue({
|
|
331
|
+
code: "custom",
|
|
332
|
+
message: "Answer blocks reference an unknown source ID.",
|
|
333
|
+
path: ["blocks"]
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
if (sourceIds.some((sourceId) => !references.includes(sourceId))) {
|
|
337
|
+
context.addIssue({
|
|
338
|
+
code: "custom",
|
|
339
|
+
message: "Answer sources must be referenced by at least one block.",
|
|
340
|
+
path: ["sources"]
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
});
|
|
344
|
+
var contextualAskExecutorCapabilitySchema = z.strictObject({
|
|
345
|
+
executorId: contextualAskOpaqueIdSchema,
|
|
346
|
+
kind: z.enum(CONTEXTUAL_ASK_EXECUTOR_KINDS),
|
|
347
|
+
label: contextualAskBoundedText(limits.maximumLabelCharacters),
|
|
348
|
+
requestedModelLabel: contextualAskBoundedText(limits.maximumLabelCharacters),
|
|
349
|
+
effectiveModelLabel: contextualAskBoundedText(limits.maximumLabelCharacters),
|
|
350
|
+
state: z.enum(CONTEXTUAL_ASK_EXECUTOR_STATES),
|
|
351
|
+
providerDataConsentRequired: z.boolean(),
|
|
352
|
+
readOnlyProven: z.boolean(),
|
|
353
|
+
errorCode: z.enum(CONTEXTUAL_ASK_ERROR_CODES).optional()
|
|
354
|
+
}).superRefine((executor, context) => {
|
|
355
|
+
if (executor.state === "ready" && (!executor.readOnlyProven || executor.errorCode !== void 0) || executor.state !== "ready" && executor.errorCode === void 0) {
|
|
356
|
+
context.addIssue({
|
|
357
|
+
code: "custom",
|
|
358
|
+
message: "Executor capability fields are inconsistent."
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
var contextualAskCapabilitySchema = z.strictObject({
|
|
363
|
+
schemaVersion: z.literal(CONTEXTUAL_ASK_SCHEMA_VERSION),
|
|
364
|
+
enabled: z.boolean(),
|
|
365
|
+
executors: z.array(contextualAskExecutorCapabilitySchema).max(limits.maximumExecutors),
|
|
366
|
+
safety: z.strictObject({
|
|
367
|
+
selectionRequired: z.literal(true),
|
|
368
|
+
singleTurn: z.literal(true),
|
|
369
|
+
writesAllowed: z.literal(false),
|
|
370
|
+
historyStored: z.literal(false)
|
|
371
|
+
}),
|
|
372
|
+
checkedAt: z.iso.datetime()
|
|
373
|
+
}).superRefine((capability, context) => {
|
|
374
|
+
if (!capability.enabled && capability.executors.length > 0 || new Set(capability.executors.map((executor) => executor.executorId)).size !== capability.executors.length) {
|
|
375
|
+
context.addIssue({
|
|
376
|
+
code: "custom",
|
|
377
|
+
message: "Contextual Ask capability fields are inconsistent.",
|
|
378
|
+
path: ["executors"]
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
|
|
383
|
+
// src/protocol/contextual-ask.ts
|
|
384
|
+
import { z as z2 } from "zod";
|
|
385
|
+
var limits2 = CONTEXTUAL_ASK_LIMITS;
|
|
386
|
+
var timestampSchema = z2.iso.datetime();
|
|
387
|
+
var contextualAskCapabilityRequestSchema = z2.strictObject({});
|
|
388
|
+
var askJobCreateRequestSchema = z2.strictObject({
|
|
389
|
+
schemaVersion: z2.literal(CONTEXTUAL_ASK_SCHEMA_VERSION),
|
|
390
|
+
requestId: contextualAskOpaqueIdSchema,
|
|
391
|
+
envelope: spotAskTaskEnvelopeSchema,
|
|
392
|
+
executorId: contextualAskOpaqueIdSchema,
|
|
393
|
+
providerDataConsent: z2.literal(true)
|
|
394
|
+
});
|
|
395
|
+
var askJobActionRequestSchema = z2.strictObject({});
|
|
396
|
+
var askJobEventsRequestSchema = z2.strictObject({
|
|
397
|
+
afterSequence: z2.number().int().nonnegative().optional()
|
|
398
|
+
});
|
|
399
|
+
var askJobExecutorSnapshotSchema = z2.strictObject({
|
|
400
|
+
executorId: contextualAskOpaqueIdSchema,
|
|
401
|
+
kind: z2.enum(CONTEXTUAL_ASK_EXECUTOR_KINDS),
|
|
402
|
+
label: contextualAskBoundedText(limits2.maximumLabelCharacters),
|
|
403
|
+
modelLabel: contextualAskBoundedText(limits2.maximumLabelCharacters)
|
|
404
|
+
});
|
|
405
|
+
var askJobSnapshotSchema = z2.strictObject({
|
|
406
|
+
schemaVersion: z2.literal(CONTEXTUAL_ASK_SCHEMA_VERSION),
|
|
407
|
+
jobId: contextualAskOpaqueIdSchema,
|
|
408
|
+
selectionId: contextualAskOpaqueIdSchema,
|
|
409
|
+
status: z2.enum(ASK_JOB_STATUSES),
|
|
410
|
+
executor: askJobExecutorSnapshotSchema,
|
|
411
|
+
phaseMessage: contextualAskBoundedText(
|
|
412
|
+
limits2.maximumPhaseMessageCharacters
|
|
413
|
+
).optional(),
|
|
414
|
+
createdAt: timestampSchema,
|
|
415
|
+
updatedAt: timestampSchema,
|
|
416
|
+
canCancel: z2.boolean(),
|
|
417
|
+
errorCode: z2.enum(CONTEXTUAL_ASK_ERROR_CODES).optional()
|
|
418
|
+
}).superRefine((snapshot, context) => {
|
|
419
|
+
if (Date.parse(snapshot.updatedAt) < Date.parse(snapshot.createdAt)) {
|
|
420
|
+
context.addIssue({
|
|
421
|
+
code: "custom",
|
|
422
|
+
message: "Job updatedAt must not precede createdAt.",
|
|
423
|
+
path: ["updatedAt"]
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
const cancellable = ["queued", "authorizing", "running"].includes(snapshot.status);
|
|
427
|
+
if (snapshot.canCancel !== cancellable) {
|
|
428
|
+
context.addIssue({
|
|
429
|
+
code: "custom",
|
|
430
|
+
message: "Job canCancel does not match its status.",
|
|
431
|
+
path: ["canCancel"]
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
if (snapshot.status === "failed" && snapshot.errorCode === void 0 || snapshot.status === "failed" && snapshot.errorCode === "ASK_CANCELLED" || snapshot.status === "cancelled" && snapshot.errorCode !== "ASK_CANCELLED" || snapshot.status !== "failed" && snapshot.status !== "cancelled" && snapshot.errorCode !== void 0) {
|
|
435
|
+
context.addIssue({
|
|
436
|
+
code: "custom",
|
|
437
|
+
message: "Job errorCode does not match its terminal status.",
|
|
438
|
+
path: ["errorCode"]
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
});
|
|
442
|
+
var askJobResultResponseSchema = z2.strictObject({
|
|
443
|
+
snapshot: askJobSnapshotSchema,
|
|
444
|
+
result: askAnswerResultSchema.optional()
|
|
445
|
+
}).superRefine((response, context) => {
|
|
446
|
+
const answered = response.snapshot.status === "answered";
|
|
447
|
+
if (answered !== (response.result !== void 0)) {
|
|
448
|
+
context.addIssue({
|
|
449
|
+
code: "custom",
|
|
450
|
+
message: "Only an answered job must contain an answer result.",
|
|
451
|
+
path: ["result"]
|
|
452
|
+
});
|
|
453
|
+
return;
|
|
454
|
+
}
|
|
455
|
+
if (response.result !== void 0 && (response.result.jobId !== response.snapshot.jobId || response.result.selectionId !== response.snapshot.selectionId || response.result.executor.executorId !== response.snapshot.executor.executorId)) {
|
|
456
|
+
context.addIssue({
|
|
457
|
+
code: "custom",
|
|
458
|
+
message: "Answer result identity does not match the job snapshot.",
|
|
459
|
+
path: ["result"]
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
});
|
|
463
|
+
var askJobEventBaseShape = {
|
|
464
|
+
schemaVersion: z2.literal(CONTEXTUAL_ASK_SCHEMA_VERSION),
|
|
465
|
+
sequence: z2.number().int().positive(),
|
|
466
|
+
jobId: contextualAskOpaqueIdSchema,
|
|
467
|
+
status: z2.enum(ASK_JOB_STATUSES),
|
|
468
|
+
timestamp: timestampSchema
|
|
469
|
+
};
|
|
470
|
+
var askJobSnapshotEventSchema = z2.strictObject({
|
|
471
|
+
...askJobEventBaseShape,
|
|
472
|
+
type: z2.literal("snapshot"),
|
|
473
|
+
snapshot: askJobSnapshotSchema
|
|
474
|
+
});
|
|
475
|
+
var askJobPhaseEventSchema = z2.strictObject({
|
|
476
|
+
...askJobEventBaseShape,
|
|
477
|
+
type: z2.literal("phase"),
|
|
478
|
+
message: contextualAskBoundedText(limits2.maximumPhaseMessageCharacters)
|
|
479
|
+
});
|
|
480
|
+
var askReadSourceActivitySchema = z2.strictObject({
|
|
481
|
+
kind: z2.literal("source"),
|
|
482
|
+
sourceId: contextualAskOpaqueIdSchema,
|
|
483
|
+
relativePath: contextualAskRelativePathSchema
|
|
484
|
+
});
|
|
485
|
+
var askReadFileCountActivitySchema = z2.strictObject({
|
|
486
|
+
kind: z2.literal("file-count"),
|
|
487
|
+
bucket: z2.enum(ASK_FILE_COUNT_BUCKETS)
|
|
488
|
+
});
|
|
489
|
+
var askJobReadActivityEventSchema = z2.strictObject({
|
|
490
|
+
...askJobEventBaseShape,
|
|
491
|
+
type: z2.literal("read-activity"),
|
|
492
|
+
activity: z2.discriminatedUnion("kind", [
|
|
493
|
+
askReadSourceActivitySchema,
|
|
494
|
+
askReadFileCountActivitySchema
|
|
495
|
+
]),
|
|
496
|
+
state: z2.enum(ASK_READ_ACTIVITY_STATES)
|
|
497
|
+
});
|
|
498
|
+
var askJobAnswerReadyEventSchema = z2.strictObject({
|
|
499
|
+
...askJobEventBaseShape,
|
|
500
|
+
type: z2.literal("answer-ready")
|
|
501
|
+
});
|
|
502
|
+
var askJobErrorEventSchema = z2.strictObject({
|
|
503
|
+
...askJobEventBaseShape,
|
|
504
|
+
type: z2.literal("error"),
|
|
505
|
+
errorCode: z2.enum(CONTEXTUAL_ASK_ERROR_CODES)
|
|
506
|
+
});
|
|
507
|
+
var askJobEventSchema = z2.discriminatedUnion("type", [
|
|
508
|
+
askJobSnapshotEventSchema,
|
|
509
|
+
askJobPhaseEventSchema,
|
|
510
|
+
askJobReadActivityEventSchema,
|
|
511
|
+
askJobAnswerReadyEventSchema,
|
|
512
|
+
askJobErrorEventSchema
|
|
513
|
+
]).superRefine((event, context) => {
|
|
514
|
+
if (event.type === "snapshot" && (event.snapshot.jobId !== event.jobId || event.snapshot.status !== event.status)) {
|
|
515
|
+
context.addIssue({
|
|
516
|
+
code: "custom",
|
|
517
|
+
message: "Snapshot event identity does not match its envelope.",
|
|
518
|
+
path: ["snapshot"]
|
|
519
|
+
});
|
|
520
|
+
}
|
|
521
|
+
if (event.type === "read-activity" && event.status !== "running") {
|
|
522
|
+
context.addIssue({
|
|
523
|
+
code: "custom",
|
|
524
|
+
message: "Read activity is only valid while a job is running.",
|
|
525
|
+
path: ["status"]
|
|
526
|
+
});
|
|
527
|
+
}
|
|
528
|
+
if (event.type === "phase" && ["answered", "cancelled", "failed"].includes(event.status)) {
|
|
529
|
+
context.addIssue({
|
|
530
|
+
code: "custom",
|
|
531
|
+
message: "Phase events cannot report a terminal state.",
|
|
532
|
+
path: ["status"]
|
|
533
|
+
});
|
|
534
|
+
}
|
|
535
|
+
if (event.type === "answer-ready" && event.status !== "answered") {
|
|
536
|
+
context.addIssue({
|
|
537
|
+
code: "custom",
|
|
538
|
+
message: "Answer-ready must report the answered state.",
|
|
539
|
+
path: ["status"]
|
|
540
|
+
});
|
|
541
|
+
}
|
|
542
|
+
if (event.type === "error" && !["failed", "cancelled"].includes(event.status)) {
|
|
543
|
+
context.addIssue({
|
|
544
|
+
code: "custom",
|
|
545
|
+
message: "Error events must report a terminal error state.",
|
|
546
|
+
path: ["status"]
|
|
547
|
+
});
|
|
548
|
+
}
|
|
549
|
+
if (event.type === "error" && (event.status === "cancelled" && event.errorCode !== "ASK_CANCELLED" || event.status === "failed" && event.errorCode === "ASK_CANCELLED")) {
|
|
550
|
+
context.addIssue({
|
|
551
|
+
code: "custom",
|
|
552
|
+
message: "Error event code does not match its status.",
|
|
553
|
+
path: ["errorCode"]
|
|
554
|
+
});
|
|
555
|
+
}
|
|
556
|
+
});
|
|
557
|
+
|
|
558
|
+
export {
|
|
559
|
+
contextualAskExecutorPreferenceSchema,
|
|
560
|
+
contextualAskOptionsSchema,
|
|
561
|
+
spotSelectionTargetSchema,
|
|
562
|
+
spotSelectionContextSchema,
|
|
563
|
+
askDraftOriginSchema,
|
|
564
|
+
spotAskTaskEnvelopeSchema,
|
|
565
|
+
spotChangeTaskEnvelopeSchema,
|
|
566
|
+
spotTaskEnvelopeSchema,
|
|
567
|
+
askAnswerWarningSchema,
|
|
568
|
+
askDraftCitationSchema,
|
|
569
|
+
askAnswerDraftBlockSchema,
|
|
570
|
+
askAnswerDraftSchema,
|
|
571
|
+
askAnswerBlockSchema,
|
|
572
|
+
askSourceReferenceSchema,
|
|
573
|
+
askAnswerResultSchema,
|
|
574
|
+
contextualAskExecutorCapabilitySchema,
|
|
575
|
+
contextualAskCapabilitySchema,
|
|
576
|
+
contextualAskCapabilityRequestSchema,
|
|
577
|
+
askJobCreateRequestSchema,
|
|
578
|
+
askJobActionRequestSchema,
|
|
579
|
+
askJobEventsRequestSchema,
|
|
580
|
+
askJobSnapshotSchema,
|
|
581
|
+
askJobResultResponseSchema,
|
|
582
|
+
askJobEventSchema
|
|
583
|
+
};
|
|
584
|
+
//# sourceMappingURL=chunk-IUTOVI5G.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/model/contextual-ask.ts","../src/protocol/contextual-ask.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { CONTEXTUAL_ASK_ERROR_CODES } from \"../errors/error-code.js\";\nimport {\n ASK_ANSWER_WARNING_CODES,\n ASK_EXECUTOR_ANSWER_WARNING_CODES,\n ASK_SOURCE_CONFIDENCES,\n CONTEXTUAL_ASK_EXECUTOR_KINDS,\n CONTEXTUAL_ASK_EXECUTOR_STATES,\n CONTEXTUAL_ASK_LIMITS,\n CONTEXTUAL_ASK_SCHEMA_VERSION,\n} from \"../protocol/contextual-ask-constants.js\";\nimport {\n MAX_ANNOTATION_INSTRUCTION_CHARACTERS,\n MAX_TARGET_INSTRUCTION_CHARACTERS,\n SPOTPATCH_LOCALES,\n} from \"./annotation.js\";\nimport { pageContextSchema, spotTargetContextSchema } from \"./context-schema.js\";\n\nconst limits = CONTEXTUAL_ASK_LIMITS;\nexport const contextualAskBoundedText = (maximum: number): z.ZodString =>\n z.string().trim().min(1).max(maximum);\nexport const contextualAskOpaqueIdSchema = z\n .string()\n .min(1)\n .max(limits.maximumIdCharacters)\n .regex(/^[A-Za-z0-9_-]+$/u);\nconst profileIdSchema = z\n .string()\n .min(1)\n .max(limits.maximumProfileIdCharacters)\n .regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/u);\nconst contentHashSchema = z\n .string()\n .length(limits.contentHashHexCharacters)\n .regex(/^[a-f0-9]+$/u);\nexport const contextualAskRelativePathSchema = z\n .string()\n .min(1)\n .max(limits.maximumRelativePathCharacters)\n .refine(\n (value) =>\n !value.startsWith(\"/\") &&\n !value.includes(\"\\\\\") &&\n !Array.from(value).some((character) => {\n const codePoint = character.codePointAt(0);\n return codePoint !== undefined && (codePoint <= 31 || codePoint === 127);\n }) &&\n !/^[A-Za-z]:/u.test(value) &&\n value\n .split(\"/\")\n .every((segment) => segment !== \"\" && segment !== \".\" && segment !== \"..\"),\n { message: \"Expected a safe project-relative POSIX path.\" },\n );\n\nexport const contextualAskExecutorPreferenceSchema = z.discriminatedUnion(\"kind\", [\n z.strictObject({\n kind: z.literal(\"configured-key\"),\n providerProfileId: profileIdSchema,\n modelProfileId: profileIdSchema,\n }),\n z.strictObject({ kind: z.literal(\"managed-codex\") }),\n]);\n\nexport const contextualAskOptionsSchema = z.union([\n z.boolean(),\n z.strictObject({\n defaultExecutor: contextualAskExecutorPreferenceSchema.optional(),\n }),\n]);\n\nexport const spotSelectionTargetSchema = spotTargetContextSchema\n .omit({ instruction: true, page: true })\n .extend({\n targetId: contextualAskOpaqueIdSchema,\n page: pageContextSchema,\n })\n .strict();\n\nexport const spotSelectionContextSchema = z\n .strictObject({\n schemaVersion: z.literal(CONTEXTUAL_ASK_SCHEMA_VERSION),\n selectionId: contextualAskOpaqueIdSchema,\n locale: z.enum(SPOTPATCH_LOCALES),\n targets: z.array(spotSelectionTargetSchema).min(1).max(limits.maximumTargets),\n createdAt: z.iso.datetime(),\n })\n .superRefine((selection, context) => {\n const targetIds = selection.targets.map((target) => target.targetId);\n if (new Set(targetIds).size !== targetIds.length) {\n context.addIssue({\n code: \"custom\",\n message: \"Selection target IDs must be unique.\",\n path: [\"targets\"],\n });\n }\n });\n\nexport const askDraftOriginSchema = z\n .strictObject({\n kind: z.literal(\"contextual-ask\"),\n askJobId: contextualAskOpaqueIdSchema,\n question: contextualAskBoundedText(limits.maximumQuestionCharacters),\n answerDigest: contextualAskBoundedText(limits.maximumQuestionCharacters),\n sourceIds: z.array(contextualAskOpaqueIdSchema).max(limits.maximumSources),\n })\n .superRefine((origin, context) => {\n if (new Set(origin.sourceIds).size !== origin.sourceIds.length) {\n context.addIssue({\n code: \"custom\",\n message: \"Ask origin source IDs must be unique.\",\n path: [\"sourceIds\"],\n });\n }\n });\n\nconst askTaskSchema = z.strictObject({\n kind: z.literal(\"ask\"),\n question: contextualAskBoundedText(limits.maximumQuestionCharacters),\n});\nconst changeInstructionSchema = z.strictObject({\n targetId: contextualAskOpaqueIdSchema,\n instruction: contextualAskBoundedText(MAX_TARGET_INSTRUCTION_CHARACTERS),\n});\nconst changeTaskSchema = z.strictObject({\n kind: z.literal(\"change\"),\n instructions: z.array(changeInstructionSchema).min(1).max(limits.maximumTargets),\n origin: askDraftOriginSchema.optional(),\n});\nconst envelopeBaseShape = {\n schemaVersion: z.literal(CONTEXTUAL_ASK_SCHEMA_VERSION),\n taskId: contextualAskOpaqueIdSchema,\n selection: spotSelectionContextSchema,\n createdAt: z.iso.datetime(),\n} as const;\n\nexport const spotAskTaskEnvelopeSchema = z.strictObject({\n ...envelopeBaseShape,\n task: askTaskSchema,\n});\n\nexport const spotChangeTaskEnvelopeSchema = z\n .strictObject({\n ...envelopeBaseShape,\n task: changeTaskSchema,\n })\n .superRefine((envelope, context) => {\n const targetIds = envelope.selection.targets.map((target) => target.targetId);\n const instructionIds = envelope.task.instructions.map(\n (instruction) => instruction.targetId,\n );\n if (\n new Set(instructionIds).size !== instructionIds.length ||\n instructionIds.length !== targetIds.length ||\n targetIds.some((targetId) => !instructionIds.includes(targetId))\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"Change instructions must map one-to-one to selection targets.\",\n path: [\"task\", \"instructions\"],\n });\n }\n const total = envelope.task.instructions.reduce(\n (characters, instruction) => characters + instruction.instruction.length,\n 0,\n );\n if (total > MAX_ANNOTATION_INSTRUCTION_CHARACTERS) {\n context.addIssue({\n code: \"custom\",\n message: \"Combined change instructions exceed the task limit.\",\n path: [\"task\", \"instructions\"],\n });\n }\n });\n\nexport const spotTaskEnvelopeSchema = z.union([\n spotAskTaskEnvelopeSchema,\n spotChangeTaskEnvelopeSchema,\n]);\n\nexport const askAnswerWarningSchema = z.strictObject({\n code: z.enum(ASK_ANSWER_WARNING_CODES),\n});\n\nconst askExecutorAnswerWarningSchema = z.strictObject({\n code: z.enum(ASK_EXECUTOR_ANSWER_WARNING_CODES),\n});\n\nexport const askDraftCitationSchema = z\n .strictObject({\n handleId: contextualAskOpaqueIdSchema,\n startLine: z.number().int().positive(),\n endLine: z.number().int().positive(),\n })\n .refine((citation) => citation.endLine >= citation.startLine, {\n message: \"Citation endLine must not precede startLine.\",\n });\n\nconst draftCitationListSchema = z\n .array(askDraftCitationSchema)\n .max(limits.maximumSources);\nconst draftParagraphBlockSchema = z.strictObject({\n kind: z.literal(\"paragraph\"),\n text: contextualAskBoundedText(limits.maximumAnswerCharacters),\n citations: draftCitationListSchema,\n});\nconst draftListBlockSchema = z.strictObject({\n kind: z.literal(\"list\"),\n items: z\n .array(\n z.strictObject({\n text: contextualAskBoundedText(limits.maximumAnswerCharacters),\n citations: draftCitationListSchema,\n }),\n )\n .min(1)\n .max(limits.maximumAnswerBlocks),\n});\nconst draftCodeBlockSchema = z.strictObject({\n kind: z.literal(\"code\"),\n code: z.string().min(1).max(limits.maximumAnswerCharacters),\n language: contextualAskBoundedText(limits.maximumLanguageCharacters).optional(),\n citations: draftCitationListSchema,\n});\nexport const askAnswerDraftBlockSchema = z.discriminatedUnion(\"kind\", [\n draftParagraphBlockSchema,\n draftListBlockSchema,\n draftCodeBlockSchema,\n]);\n\nfunction draftCharacters(\n blocks: readonly z.infer<typeof askAnswerDraftBlockSchema>[],\n): number {\n return blocks.reduce((total, block) => {\n if (block.kind === \"paragraph\") return total + block.text.length;\n if (block.kind === \"code\") return total + block.code.length;\n return (\n total + block.items.reduce((itemTotal, item) => itemTotal + item.text.length, 0)\n );\n }, 0);\n}\n\nexport const askAnswerDraftSchema = z\n .strictObject({\n blocks: z.array(askAnswerDraftBlockSchema).min(1).max(limits.maximumAnswerBlocks),\n warnings: z.array(askExecutorAnswerWarningSchema).max(limits.maximumAnswerBlocks),\n })\n .superRefine((answer, context) => {\n if (draftCharacters(answer.blocks) > limits.maximumAnswerCharacters) {\n context.addIssue({\n code: \"custom\",\n message: \"Combined answer text exceeds the answer limit.\",\n path: [\"blocks\"],\n });\n }\n const citations = answer.blocks.flatMap((block) =>\n block.kind === \"list\"\n ? block.items.flatMap((item) => item.citations)\n : block.citations,\n );\n if (\n citations.length === 0 &&\n !answer.warnings.some((warning) => warning.code === \"insufficient-evidence\")\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"An uncited answer draft must declare insufficient evidence.\",\n path: [\"warnings\"],\n });\n }\n const distinct = new Set(\n citations.map(\n (citation) =>\n `${citation.handleId}:${String(citation.startLine)}:${String(citation.endLine)}`,\n ),\n );\n if (distinct.size > limits.maximumSources) {\n context.addIssue({\n code: \"custom\",\n message: \"Answer references exceed the source limit.\",\n path: [\"blocks\"],\n });\n }\n });\n\nconst sourceIdListSchema = z\n .array(contextualAskOpaqueIdSchema)\n .max(limits.maximumSources);\nconst paragraphBlockSchema = z.strictObject({\n kind: z.literal(\"paragraph\"),\n text: contextualAskBoundedText(limits.maximumAnswerCharacters),\n sourceIds: sourceIdListSchema,\n});\nconst listBlockSchema = z.strictObject({\n kind: z.literal(\"list\"),\n items: z\n .array(\n z.strictObject({\n text: contextualAskBoundedText(limits.maximumAnswerCharacters),\n sourceIds: sourceIdListSchema,\n }),\n )\n .min(1)\n .max(limits.maximumAnswerBlocks),\n});\nconst codeBlockSchema = z.strictObject({\n kind: z.literal(\"code\"),\n code: z.string().min(1).max(limits.maximumAnswerCharacters),\n language: contextualAskBoundedText(limits.maximumLanguageCharacters).optional(),\n sourceIds: sourceIdListSchema,\n});\nexport const askAnswerBlockSchema = z.discriminatedUnion(\"kind\", [\n paragraphBlockSchema,\n listBlockSchema,\n codeBlockSchema,\n]);\n\nexport const askSourceReferenceSchema = z\n .strictObject({\n sourceId: contextualAskOpaqueIdSchema,\n label: contextualAskBoundedText(limits.maximumLabelCharacters),\n relativePath: contextualAskRelativePathSchema,\n fileId: contextualAskOpaqueIdSchema,\n startLine: z.number().int().positive(),\n endLine: z.number().int().positive(),\n confidence: z.enum(ASK_SOURCE_CONFIDENCES),\n targetIds: z.array(contextualAskOpaqueIdSchema).min(1).max(limits.maximumTargets),\n sourceVersion: contextualAskBoundedText(limits.maximumIdCharacters).optional(),\n contentHash: contentHashSchema,\n })\n .superRefine((source, context) => {\n if (source.endLine < source.startLine) {\n context.addIssue({\n code: \"custom\",\n message: \"Source endLine must not precede startLine.\",\n path: [\"endLine\"],\n });\n }\n if (new Set(source.targetIds).size !== source.targetIds.length) {\n context.addIssue({\n code: \"custom\",\n message: \"Source target IDs must be unique.\",\n path: [\"targetIds\"],\n });\n }\n });\n\nfunction resultBlockCharacters(\n blocks: readonly z.infer<typeof askAnswerBlockSchema>[],\n): number {\n return blocks.reduce((total, block) => {\n if (block.kind === \"paragraph\") return total + block.text.length;\n if (block.kind === \"code\") return total + block.code.length;\n return (\n total + block.items.reduce((itemTotal, item) => itemTotal + item.text.length, 0)\n );\n }, 0);\n}\n\nexport const askAnswerResultSchema = z\n .strictObject({\n schemaVersion: z.literal(CONTEXTUAL_ASK_SCHEMA_VERSION),\n jobId: contextualAskOpaqueIdSchema,\n selectionId: contextualAskOpaqueIdSchema,\n contextHash: contentHashSchema,\n executor: z.strictObject({\n executorId: contextualAskOpaqueIdSchema,\n kind: z.enum(CONTEXTUAL_ASK_EXECUTOR_KINDS),\n label: contextualAskBoundedText(limits.maximumLabelCharacters),\n modelLabel: contextualAskBoundedText(limits.maximumLabelCharacters),\n }),\n blocks: z.array(askAnswerBlockSchema).min(1).max(limits.maximumAnswerBlocks),\n sources: z.array(askSourceReferenceSchema).max(limits.maximumSources),\n warnings: z.array(askAnswerWarningSchema).max(limits.maximumAnswerBlocks),\n createdAt: z.iso.datetime(),\n expiresAt: z.iso.datetime(),\n })\n .superRefine((answer, context) => {\n if (Date.parse(answer.expiresAt) <= Date.parse(answer.createdAt)) {\n context.addIssue({\n code: \"custom\",\n message: \"Answer expiry must follow creation.\",\n path: [\"expiresAt\"],\n });\n }\n if (resultBlockCharacters(answer.blocks) > limits.maximumAnswerCharacters) {\n context.addIssue({\n code: \"custom\",\n message: \"Combined answer text exceeds the answer limit.\",\n path: [\"blocks\"],\n });\n }\n const sourceIds = answer.sources.map((source) => source.sourceId);\n if (new Set(sourceIds).size !== sourceIds.length) {\n context.addIssue({\n code: \"custom\",\n message: \"Answer source IDs must be unique.\",\n path: [\"sources\"],\n });\n }\n const available = new Set(sourceIds);\n const references = answer.blocks.flatMap((block) =>\n block.kind === \"list\"\n ? block.items.flatMap((item) => item.sourceIds)\n : block.sourceIds,\n );\n if (\n references.length === 0 &&\n !answer.warnings.some((warning) => warning.code === \"insufficient-evidence\")\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"An uncited answer must declare insufficient evidence.\",\n path: [\"warnings\"],\n });\n }\n if (references.some((sourceId) => !available.has(sourceId))) {\n context.addIssue({\n code: \"custom\",\n message: \"Answer blocks reference an unknown source ID.\",\n path: [\"blocks\"],\n });\n }\n if (sourceIds.some((sourceId) => !references.includes(sourceId))) {\n context.addIssue({\n code: \"custom\",\n message: \"Answer sources must be referenced by at least one block.\",\n path: [\"sources\"],\n });\n }\n });\n\nexport const contextualAskExecutorCapabilitySchema = z\n .strictObject({\n executorId: contextualAskOpaqueIdSchema,\n kind: z.enum(CONTEXTUAL_ASK_EXECUTOR_KINDS),\n label: contextualAskBoundedText(limits.maximumLabelCharacters),\n requestedModelLabel: contextualAskBoundedText(limits.maximumLabelCharacters),\n effectiveModelLabel: contextualAskBoundedText(limits.maximumLabelCharacters),\n state: z.enum(CONTEXTUAL_ASK_EXECUTOR_STATES),\n providerDataConsentRequired: z.boolean(),\n readOnlyProven: z.boolean(),\n errorCode: z.enum(CONTEXTUAL_ASK_ERROR_CODES).optional(),\n })\n .superRefine((executor, context) => {\n if (\n (executor.state === \"ready\" &&\n (!executor.readOnlyProven || executor.errorCode !== undefined)) ||\n (executor.state !== \"ready\" && executor.errorCode === undefined)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"Executor capability fields are inconsistent.\",\n });\n }\n });\n\nexport const contextualAskCapabilitySchema = z\n .strictObject({\n schemaVersion: z.literal(CONTEXTUAL_ASK_SCHEMA_VERSION),\n enabled: z.boolean(),\n executors: z\n .array(contextualAskExecutorCapabilitySchema)\n .max(limits.maximumExecutors),\n safety: z.strictObject({\n selectionRequired: z.literal(true),\n singleTurn: z.literal(true),\n writesAllowed: z.literal(false),\n historyStored: z.literal(false),\n }),\n checkedAt: z.iso.datetime(),\n })\n .superRefine((capability, context) => {\n if (\n (!capability.enabled && capability.executors.length > 0) ||\n new Set(capability.executors.map((executor) => executor.executorId)).size !==\n capability.executors.length\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"Contextual Ask capability fields are inconsistent.\",\n path: [\"executors\"],\n });\n }\n });\n\nexport type ContextualAskExecutorPreference = z.infer<\n typeof contextualAskExecutorPreferenceSchema\n>;\nexport type ContextualAskOptions = z.infer<typeof contextualAskOptionsSchema>;\nexport type SpotSelectionTarget = z.infer<typeof spotSelectionTargetSchema>;\nexport type SpotSelectionContext = z.infer<typeof spotSelectionContextSchema>;\nexport type AskDraftOrigin = z.infer<typeof askDraftOriginSchema>;\nexport type SpotAskTaskEnvelope = z.infer<typeof spotAskTaskEnvelopeSchema>;\nexport type SpotChangeTaskEnvelope = z.infer<typeof spotChangeTaskEnvelopeSchema>;\nexport type SpotTaskEnvelope = z.infer<typeof spotTaskEnvelopeSchema>;\nexport type AskAnswerWarning = z.infer<typeof askAnswerWarningSchema>;\nexport type AskDraftCitation = z.infer<typeof askDraftCitationSchema>;\nexport type AskAnswerDraftBlock = z.infer<typeof askAnswerDraftBlockSchema>;\nexport type AskAnswerDraft = z.infer<typeof askAnswerDraftSchema>;\nexport type AskAnswerBlock = z.infer<typeof askAnswerBlockSchema>;\nexport type AskSourceReference = z.infer<typeof askSourceReferenceSchema>;\nexport type AskAnswerResult = z.infer<typeof askAnswerResultSchema>;\nexport type ContextualAskExecutorCapability = z.infer<\n typeof contextualAskExecutorCapabilitySchema\n>;\nexport type ContextualAskCapability = z.infer<typeof contextualAskCapabilitySchema>;\n","import { z } from \"zod\";\n\nimport { CONTEXTUAL_ASK_ERROR_CODES } from \"../errors/error-code.js\";\nimport {\n askAnswerResultSchema,\n contextualAskBoundedText,\n contextualAskOpaqueIdSchema,\n contextualAskRelativePathSchema,\n spotAskTaskEnvelopeSchema,\n} from \"../model/contextual-ask.js\";\nimport {\n ASK_FILE_COUNT_BUCKETS,\n ASK_JOB_STATUSES,\n ASK_READ_ACTIVITY_STATES,\n CONTEXTUAL_ASK_EXECUTOR_KINDS,\n CONTEXTUAL_ASK_LIMITS,\n CONTEXTUAL_ASK_SCHEMA_VERSION,\n} from \"./contextual-ask-constants.js\";\n\nconst limits = CONTEXTUAL_ASK_LIMITS;\nconst timestampSchema = z.iso.datetime();\n\nexport const contextualAskCapabilityRequestSchema = z.strictObject({});\n\nexport const askJobCreateRequestSchema = z.strictObject({\n schemaVersion: z.literal(CONTEXTUAL_ASK_SCHEMA_VERSION),\n requestId: contextualAskOpaqueIdSchema,\n envelope: spotAskTaskEnvelopeSchema,\n executorId: contextualAskOpaqueIdSchema,\n providerDataConsent: z.literal(true),\n});\n\nexport const askJobActionRequestSchema = z.strictObject({});\n\nexport const askJobEventsRequestSchema = z.strictObject({\n afterSequence: z.number().int().nonnegative().optional(),\n});\n\nconst askJobExecutorSnapshotSchema = z.strictObject({\n executorId: contextualAskOpaqueIdSchema,\n kind: z.enum(CONTEXTUAL_ASK_EXECUTOR_KINDS),\n label: contextualAskBoundedText(limits.maximumLabelCharacters),\n modelLabel: contextualAskBoundedText(limits.maximumLabelCharacters),\n});\n\nexport const askJobSnapshotSchema = z\n .strictObject({\n schemaVersion: z.literal(CONTEXTUAL_ASK_SCHEMA_VERSION),\n jobId: contextualAskOpaqueIdSchema,\n selectionId: contextualAskOpaqueIdSchema,\n status: z.enum(ASK_JOB_STATUSES),\n executor: askJobExecutorSnapshotSchema,\n phaseMessage: contextualAskBoundedText(\n limits.maximumPhaseMessageCharacters,\n ).optional(),\n createdAt: timestampSchema,\n updatedAt: timestampSchema,\n canCancel: z.boolean(),\n errorCode: z.enum(CONTEXTUAL_ASK_ERROR_CODES).optional(),\n })\n .superRefine((snapshot, context) => {\n if (Date.parse(snapshot.updatedAt) < Date.parse(snapshot.createdAt)) {\n context.addIssue({\n code: \"custom\",\n message: \"Job updatedAt must not precede createdAt.\",\n path: [\"updatedAt\"],\n });\n }\n\n const cancellable = [\"queued\", \"authorizing\", \"running\"].includes(snapshot.status);\n if (snapshot.canCancel !== cancellable) {\n context.addIssue({\n code: \"custom\",\n message: \"Job canCancel does not match its status.\",\n path: [\"canCancel\"],\n });\n }\n\n if (\n (snapshot.status === \"failed\" && snapshot.errorCode === undefined) ||\n (snapshot.status === \"failed\" && snapshot.errorCode === \"ASK_CANCELLED\") ||\n (snapshot.status === \"cancelled\" && snapshot.errorCode !== \"ASK_CANCELLED\") ||\n (snapshot.status !== \"failed\" &&\n snapshot.status !== \"cancelled\" &&\n snapshot.errorCode !== undefined)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"Job errorCode does not match its terminal status.\",\n path: [\"errorCode\"],\n });\n }\n });\n\nexport const askJobResultResponseSchema = z\n .strictObject({\n snapshot: askJobSnapshotSchema,\n result: askAnswerResultSchema.optional(),\n })\n .superRefine((response, context) => {\n const answered = response.snapshot.status === \"answered\";\n if (answered !== (response.result !== undefined)) {\n context.addIssue({\n code: \"custom\",\n message: \"Only an answered job must contain an answer result.\",\n path: [\"result\"],\n });\n return;\n }\n if (\n response.result !== undefined &&\n (response.result.jobId !== response.snapshot.jobId ||\n response.result.selectionId !== response.snapshot.selectionId ||\n response.result.executor.executorId !== response.snapshot.executor.executorId)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"Answer result identity does not match the job snapshot.\",\n path: [\"result\"],\n });\n }\n });\n\nconst askJobEventBaseShape = {\n schemaVersion: z.literal(CONTEXTUAL_ASK_SCHEMA_VERSION),\n sequence: z.number().int().positive(),\n jobId: contextualAskOpaqueIdSchema,\n status: z.enum(ASK_JOB_STATUSES),\n timestamp: timestampSchema,\n} as const;\n\nconst askJobSnapshotEventSchema = z.strictObject({\n ...askJobEventBaseShape,\n type: z.literal(\"snapshot\"),\n snapshot: askJobSnapshotSchema,\n});\n\nconst askJobPhaseEventSchema = z.strictObject({\n ...askJobEventBaseShape,\n type: z.literal(\"phase\"),\n message: contextualAskBoundedText(limits.maximumPhaseMessageCharacters),\n});\n\nconst askReadSourceActivitySchema = z.strictObject({\n kind: z.literal(\"source\"),\n sourceId: contextualAskOpaqueIdSchema,\n relativePath: contextualAskRelativePathSchema,\n});\n\nconst askReadFileCountActivitySchema = z.strictObject({\n kind: z.literal(\"file-count\"),\n bucket: z.enum(ASK_FILE_COUNT_BUCKETS),\n});\n\nconst askJobReadActivityEventSchema = z.strictObject({\n ...askJobEventBaseShape,\n type: z.literal(\"read-activity\"),\n activity: z.discriminatedUnion(\"kind\", [\n askReadSourceActivitySchema,\n askReadFileCountActivitySchema,\n ]),\n state: z.enum(ASK_READ_ACTIVITY_STATES),\n});\n\nconst askJobAnswerReadyEventSchema = z.strictObject({\n ...askJobEventBaseShape,\n type: z.literal(\"answer-ready\"),\n});\n\nconst askJobErrorEventSchema = z.strictObject({\n ...askJobEventBaseShape,\n type: z.literal(\"error\"),\n errorCode: z.enum(CONTEXTUAL_ASK_ERROR_CODES),\n});\n\nexport const askJobEventSchema = z\n .discriminatedUnion(\"type\", [\n askJobSnapshotEventSchema,\n askJobPhaseEventSchema,\n askJobReadActivityEventSchema,\n askJobAnswerReadyEventSchema,\n askJobErrorEventSchema,\n ])\n .superRefine((event, context) => {\n if (\n event.type === \"snapshot\" &&\n (event.snapshot.jobId !== event.jobId || event.snapshot.status !== event.status)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"Snapshot event identity does not match its envelope.\",\n path: [\"snapshot\"],\n });\n }\n if (event.type === \"read-activity\" && event.status !== \"running\") {\n context.addIssue({\n code: \"custom\",\n message: \"Read activity is only valid while a job is running.\",\n path: [\"status\"],\n });\n }\n if (\n event.type === \"phase\" &&\n [\"answered\", \"cancelled\", \"failed\"].includes(event.status)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"Phase events cannot report a terminal state.\",\n path: [\"status\"],\n });\n }\n if (event.type === \"answer-ready\" && event.status !== \"answered\") {\n context.addIssue({\n code: \"custom\",\n message: \"Answer-ready must report the answered state.\",\n path: [\"status\"],\n });\n }\n if (event.type === \"error\" && ![\"failed\", \"cancelled\"].includes(event.status)) {\n context.addIssue({\n code: \"custom\",\n message: \"Error events must report a terminal error state.\",\n path: [\"status\"],\n });\n }\n if (\n event.type === \"error\" &&\n ((event.status === \"cancelled\" && event.errorCode !== \"ASK_CANCELLED\") ||\n (event.status === \"failed\" && event.errorCode === \"ASK_CANCELLED\"))\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"Error event code does not match its status.\",\n path: [\"errorCode\"],\n });\n }\n });\n\nexport type ContextualAskCapabilityRequest = z.infer<\n typeof contextualAskCapabilityRequestSchema\n>;\nexport type AskJobCreateRequest = z.infer<typeof askJobCreateRequestSchema>;\nexport type AskJobActionRequest = z.infer<typeof askJobActionRequestSchema>;\nexport type AskJobEventsRequest = z.infer<typeof askJobEventsRequestSchema>;\nexport type AskJobSnapshot = z.infer<typeof askJobSnapshotSchema>;\nexport type AskJobResultResponse = z.infer<typeof askJobResultResponseSchema>;\nexport type AskJobEvent = z.infer<typeof askJobEventSchema>;\n"],"mappings":"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","names":["z","limits","z"]}
|