@opendatalabs/personal-server-ts-core 1.13.1 → 1.15.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/api/index.d.ts +8 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +8 -1
- package/dist/api/index.js.map +1 -1
- package/dist/derivatives/answer-shape.d.ts +83 -0
- package/dist/derivatives/answer-shape.d.ts.map +1 -0
- package/dist/derivatives/answer-shape.js +320 -0
- package/dist/derivatives/answer-shape.js.map +1 -0
- package/dist/derivatives/api.d.ts +11 -2
- package/dist/derivatives/api.d.ts.map +1 -1
- package/dist/derivatives/api.js +114 -1
- package/dist/derivatives/api.js.map +1 -1
- package/dist/derivatives/compute.d.ts +6 -0
- package/dist/derivatives/compute.d.ts.map +1 -1
- package/dist/derivatives/compute.js +106 -10
- package/dist/derivatives/compute.js.map +1 -1
- package/dist/derivatives/index.d.ts +3 -2
- package/dist/derivatives/index.d.ts.map +1 -1
- package/dist/derivatives/index.js +2 -1
- package/dist/derivatives/index.js.map +1 -1
- package/dist/derivatives/prompt.d.ts +35 -0
- package/dist/derivatives/prompt.d.ts.map +1 -1
- package/dist/derivatives/prompt.js +96 -8
- package/dist/derivatives/prompt.js.map +1 -1
- package/dist/derivatives/registration.d.ts +2 -0
- package/dist/derivatives/registration.d.ts.map +1 -1
- package/dist/derivatives/registration.js +8 -0
- package/dist/derivatives/registration.js.map +1 -1
- package/dist/derivatives/scheduler.d.ts +28 -2
- package/dist/derivatives/scheduler.d.ts.map +1 -1
- package/dist/derivatives/scheduler.js +106 -9
- package/dist/derivatives/scheduler.js.map +1 -1
- package/dist/derivatives/store.d.ts.map +1 -1
- package/dist/derivatives/store.js +4 -0
- package/dist/derivatives/store.js.map +1 -1
- package/dist/derivatives/types.d.ts +20 -1
- package/dist/derivatives/types.d.ts.map +1 -1
- package/dist/derivatives/types.js +3 -0
- package/dist/derivatives/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The declared shape of a question's answer.
|
|
3
|
+
*
|
|
4
|
+
* Without one an answer is free text, so a builder can ask for anything the
|
|
5
|
+
* prompt saw and get it back verbatim in a string field. A registration may
|
|
6
|
+
* instead declare, up front, the fields its answer is made of; the compute
|
|
7
|
+
* step then instructs the model to answer in that shape and validates the
|
|
8
|
+
* reply against it, so a 1-5 score is a number between 1 and 5 and not a
|
|
9
|
+
* field the raw conversations can be poured into. The declaration is part
|
|
10
|
+
* of what the owner approves, which is also what makes a later recompute
|
|
11
|
+
* the same promise: a new version matches the shape the old one did.
|
|
12
|
+
*
|
|
13
|
+
* The grammar is deliberately tiny and flat: a list of named fields with a
|
|
14
|
+
* primitive type and a couple of constraints, no nesting and no free-text
|
|
15
|
+
* keys. Everything a builder can put in it is bounded (see the limits
|
|
16
|
+
* below), so a shape cannot be used to smuggle a second prompt past the
|
|
17
|
+
* 8000-character cap on the question text.
|
|
18
|
+
*/
|
|
19
|
+
import { z } from "zod";
|
|
20
|
+
import { DerivativeQuestionInvalidError } from "../errors/catalog.js";
|
|
21
|
+
export const MAX_ANSWER_SHAPE_FIELDS = 16;
|
|
22
|
+
export const MAX_ANSWER_FIELD_NAME_CHARS = 64;
|
|
23
|
+
/** Also the cap on a declared `maxLength`, and the default when none is. */
|
|
24
|
+
export const MAX_ANSWER_STRING_CHARS = 4_000;
|
|
25
|
+
export const MAX_ANSWER_ENUM_VALUES = 32;
|
|
26
|
+
export const MAX_ANSWER_ENUM_VALUE_CHARS = 64;
|
|
27
|
+
/** Field names are identifiers: they go into the prompt verbatim. */
|
|
28
|
+
const FIELD_NAME = /^[A-Za-z][A-Za-z0-9_]*$/;
|
|
29
|
+
const FIELD_TYPES = [
|
|
30
|
+
"string",
|
|
31
|
+
"number",
|
|
32
|
+
"integer",
|
|
33
|
+
"boolean",
|
|
34
|
+
"enum",
|
|
35
|
+
];
|
|
36
|
+
/** Keys accepted on a field, by type. Anything else is refused. */
|
|
37
|
+
const KEYS_BY_TYPE = {
|
|
38
|
+
string: ["name", "type", "required", "maxLength"],
|
|
39
|
+
number: ["name", "type", "required", "min", "max"],
|
|
40
|
+
integer: ["name", "type", "required", "min", "max"],
|
|
41
|
+
boolean: ["name", "type", "required"],
|
|
42
|
+
enum: ["name", "type", "required", "values"],
|
|
43
|
+
};
|
|
44
|
+
function isRecord(value) {
|
|
45
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
46
|
+
}
|
|
47
|
+
function invalid(message, details) {
|
|
48
|
+
throw new DerivativeQuestionInvalidError(message, {
|
|
49
|
+
field: "answerShape",
|
|
50
|
+
...details,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function parseFieldName(value, index) {
|
|
54
|
+
if (typeof value !== "string" || value === "") {
|
|
55
|
+
invalid(`answerShape.fields[${index}].name must be a non-empty string`, {
|
|
56
|
+
index,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
if (value.length > MAX_ANSWER_FIELD_NAME_CHARS) {
|
|
60
|
+
invalid(`answerShape.fields[${index}].name is ${value.length} characters; the maximum is ${MAX_ANSWER_FIELD_NAME_CHARS}`, { index, max: MAX_ANSWER_FIELD_NAME_CHARS });
|
|
61
|
+
}
|
|
62
|
+
if (!FIELD_NAME.test(value)) {
|
|
63
|
+
invalid(`answerShape.fields[${index}].name must start with a letter and hold only letters, digits and underscores`, { index });
|
|
64
|
+
}
|
|
65
|
+
return value;
|
|
66
|
+
}
|
|
67
|
+
function parseBound(value, index, key, integer) {
|
|
68
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
69
|
+
invalid(`answerShape.fields[${index}].${key} must be a finite number`, {
|
|
70
|
+
index,
|
|
71
|
+
key,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
if (integer && !Number.isSafeInteger(value)) {
|
|
75
|
+
invalid(`answerShape.fields[${index}].${key} must be a safe integer for an integer field`, { index, key });
|
|
76
|
+
}
|
|
77
|
+
return value;
|
|
78
|
+
}
|
|
79
|
+
function parseEnumValues(value, index) {
|
|
80
|
+
if (!Array.isArray(value) || value.length === 0) {
|
|
81
|
+
invalid(`answerShape.fields[${index}].values must be a non-empty array of strings`, { index });
|
|
82
|
+
}
|
|
83
|
+
if (value.length > MAX_ANSWER_ENUM_VALUES) {
|
|
84
|
+
invalid(`answerShape.fields[${index}].values lists ${value.length} values; the maximum is ${MAX_ANSWER_ENUM_VALUES}`, { index, max: MAX_ANSWER_ENUM_VALUES });
|
|
85
|
+
}
|
|
86
|
+
const values = [];
|
|
87
|
+
for (const entry of value) {
|
|
88
|
+
if (typeof entry !== "string" || entry === "") {
|
|
89
|
+
invalid(`answerShape.fields[${index}].values must hold non-empty strings`, { index });
|
|
90
|
+
}
|
|
91
|
+
if (entry.length > MAX_ANSWER_ENUM_VALUE_CHARS) {
|
|
92
|
+
invalid(`answerShape.fields[${index}].values holds a ${entry.length} character value; the maximum is ${MAX_ANSWER_ENUM_VALUE_CHARS}`, { index, max: MAX_ANSWER_ENUM_VALUE_CHARS });
|
|
93
|
+
}
|
|
94
|
+
// Enum values are the one place a builder writes free text into the
|
|
95
|
+
// prompt. Line breaks would let a value pose as its own instruction
|
|
96
|
+
// line in the shape description, so they are refused outright.
|
|
97
|
+
if (/[\n\r\t]/.test(entry)) {
|
|
98
|
+
invalid(`answerShape.fields[${index}].values must not hold line breaks or tabs`, { index });
|
|
99
|
+
}
|
|
100
|
+
if (values.includes(entry)) {
|
|
101
|
+
invalid(`answerShape.fields[${index}].values lists the same value twice`, { index });
|
|
102
|
+
}
|
|
103
|
+
values.push(entry);
|
|
104
|
+
}
|
|
105
|
+
return values;
|
|
106
|
+
}
|
|
107
|
+
function parseField(value, index) {
|
|
108
|
+
if (!isRecord(value)) {
|
|
109
|
+
invalid(`answerShape.fields[${index}] must be an object`, { index });
|
|
110
|
+
}
|
|
111
|
+
const name = parseFieldName(value.name, index);
|
|
112
|
+
if (typeof value.type !== "string" ||
|
|
113
|
+
!FIELD_TYPES.includes(value.type)) {
|
|
114
|
+
invalid(`answerShape.fields[${index}].type must be one of ${FIELD_TYPES.join(", ")}`, { index });
|
|
115
|
+
}
|
|
116
|
+
const type = value.type;
|
|
117
|
+
const allowed = KEYS_BY_TYPE[type];
|
|
118
|
+
for (const key of Object.keys(value)) {
|
|
119
|
+
if (!allowed.includes(key)) {
|
|
120
|
+
invalid(`answerShape.fields[${index}] does not accept "${key}" on a ${type} field`, { index, key: key.slice(0, MAX_ANSWER_FIELD_NAME_CHARS) });
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// A declared field is part of the promise, so it is required unless the
|
|
124
|
+
// registration says otherwise.
|
|
125
|
+
let required = true;
|
|
126
|
+
if (value.required !== undefined && value.required !== null) {
|
|
127
|
+
if (typeof value.required !== "boolean") {
|
|
128
|
+
invalid(`answerShape.fields[${index}].required must be a boolean`, {
|
|
129
|
+
index,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
required = value.required;
|
|
133
|
+
}
|
|
134
|
+
const field = { name, type, required };
|
|
135
|
+
if (type === "string") {
|
|
136
|
+
let maxLength = MAX_ANSWER_STRING_CHARS;
|
|
137
|
+
if (value.maxLength !== undefined && value.maxLength !== null) {
|
|
138
|
+
if (typeof value.maxLength !== "number" ||
|
|
139
|
+
!Number.isSafeInteger(value.maxLength) ||
|
|
140
|
+
value.maxLength < 1 ||
|
|
141
|
+
value.maxLength > MAX_ANSWER_STRING_CHARS) {
|
|
142
|
+
invalid(`answerShape.fields[${index}].maxLength must be an integer between 1 and ${MAX_ANSWER_STRING_CHARS}`, { index, max: MAX_ANSWER_STRING_CHARS });
|
|
143
|
+
}
|
|
144
|
+
maxLength = value.maxLength;
|
|
145
|
+
}
|
|
146
|
+
field.maxLength = maxLength;
|
|
147
|
+
}
|
|
148
|
+
if (type === "number" || type === "integer") {
|
|
149
|
+
const integer = type === "integer";
|
|
150
|
+
if (value.min !== undefined && value.min !== null) {
|
|
151
|
+
field.min = parseBound(value.min, index, "min", integer);
|
|
152
|
+
}
|
|
153
|
+
if (value.max !== undefined && value.max !== null) {
|
|
154
|
+
field.max = parseBound(value.max, index, "max", integer);
|
|
155
|
+
}
|
|
156
|
+
if (field.min !== undefined &&
|
|
157
|
+
field.max !== undefined &&
|
|
158
|
+
field.min > field.max) {
|
|
159
|
+
invalid(`answerShape.fields[${index}].min is greater than its max`, {
|
|
160
|
+
index,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
if (type === "enum") {
|
|
165
|
+
field.values = parseEnumValues(value.values, index);
|
|
166
|
+
}
|
|
167
|
+
return field;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Validate the optional `answerShape` of a registration body. Absent (or
|
|
171
|
+
* null, like `model`) means free text, the original behavior.
|
|
172
|
+
*/
|
|
173
|
+
export function parseAnswerShapeInput(value) {
|
|
174
|
+
if (value === undefined || value === null)
|
|
175
|
+
return null;
|
|
176
|
+
if (!isRecord(value)) {
|
|
177
|
+
invalid("answerShape must be an object with a fields array", {});
|
|
178
|
+
}
|
|
179
|
+
for (const key of Object.keys(value)) {
|
|
180
|
+
if (key !== "fields") {
|
|
181
|
+
invalid(`answerShape does not accept "${key}"`, {
|
|
182
|
+
key: key.slice(0, MAX_ANSWER_FIELD_NAME_CHARS),
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (!Array.isArray(value.fields) || value.fields.length === 0) {
|
|
187
|
+
invalid("answerShape.fields must be a non-empty array", {});
|
|
188
|
+
}
|
|
189
|
+
if (value.fields.length > MAX_ANSWER_SHAPE_FIELDS) {
|
|
190
|
+
invalid(`answerShape.fields lists ${value.fields.length} fields; the maximum is ${MAX_ANSWER_SHAPE_FIELDS}`, { max: MAX_ANSWER_SHAPE_FIELDS });
|
|
191
|
+
}
|
|
192
|
+
const fields = [];
|
|
193
|
+
const names = new Set();
|
|
194
|
+
value.fields.forEach((entry, index) => {
|
|
195
|
+
const field = parseField(entry, index);
|
|
196
|
+
if (names.has(field.name)) {
|
|
197
|
+
invalid(`answerShape.fields names "${field.name}" twice`, { index });
|
|
198
|
+
}
|
|
199
|
+
names.add(field.name);
|
|
200
|
+
fields.push(field);
|
|
201
|
+
});
|
|
202
|
+
return { fields };
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Compile the declaration to the zod schema the reply is checked against.
|
|
206
|
+
* The object STRIPS unknown keys rather than refusing them: a model that
|
|
207
|
+
* adds chatter next to the declared fields still produces a valid answer,
|
|
208
|
+
* and the extra key never reaches the record.
|
|
209
|
+
*/
|
|
210
|
+
export function compileAnswerShape(shape) {
|
|
211
|
+
const entries = {};
|
|
212
|
+
for (const field of shape.fields) {
|
|
213
|
+
let schema;
|
|
214
|
+
switch (field.type) {
|
|
215
|
+
case "string":
|
|
216
|
+
schema = z.string().max(field.maxLength ?? MAX_ANSWER_STRING_CHARS);
|
|
217
|
+
break;
|
|
218
|
+
case "number":
|
|
219
|
+
case "integer": {
|
|
220
|
+
// zod rejects NaN and Infinity for `number` already, so the bounds
|
|
221
|
+
// are the only thing left to apply.
|
|
222
|
+
let numeric = field.type === "integer" ? z.int() : z.number();
|
|
223
|
+
if (field.min !== undefined)
|
|
224
|
+
numeric = numeric.min(field.min);
|
|
225
|
+
if (field.max !== undefined)
|
|
226
|
+
numeric = numeric.max(field.max);
|
|
227
|
+
schema = numeric;
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
case "boolean":
|
|
231
|
+
schema = z.boolean();
|
|
232
|
+
break;
|
|
233
|
+
case "enum":
|
|
234
|
+
schema = z.enum(field.values ?? []);
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
entries[field.name] = field.required ? schema : schema.nullish();
|
|
238
|
+
}
|
|
239
|
+
return z.object(entries);
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Check one candidate answer object against a compiled shape. On success
|
|
243
|
+
* the value is rebuilt in declaration order with the optional fields the
|
|
244
|
+
* model left out (or nulled) dropped, so the stored value has one form.
|
|
245
|
+
*/
|
|
246
|
+
export function validateAnswerShape(shape, compiled, candidate) {
|
|
247
|
+
const parsed = compiled.safeParse(candidate);
|
|
248
|
+
if (!parsed.success) {
|
|
249
|
+
return {
|
|
250
|
+
ok: false,
|
|
251
|
+
// zod's messages state the constraint ("expected int", "<=5") and
|
|
252
|
+
// never echo the received value, so they are safe to hand back to
|
|
253
|
+
// the model in the corrective turn.
|
|
254
|
+
issues: parsed.error.issues.map((issue) => {
|
|
255
|
+
const path = issue.path.join(".");
|
|
256
|
+
return path ? `${path}: ${issue.message}` : issue.message;
|
|
257
|
+
}),
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
const value = {};
|
|
261
|
+
for (const field of shape.fields) {
|
|
262
|
+
const entry = parsed.data[field.name];
|
|
263
|
+
if (entry === undefined || entry === null)
|
|
264
|
+
continue;
|
|
265
|
+
value[field.name] = entry;
|
|
266
|
+
}
|
|
267
|
+
return { ok: true, value };
|
|
268
|
+
}
|
|
269
|
+
function describeField(field) {
|
|
270
|
+
const requirement = field.required ? "required" : "optional";
|
|
271
|
+
switch (field.type) {
|
|
272
|
+
case "string":
|
|
273
|
+
return `"${field.name}": string, at most ${field.maxLength ?? MAX_ANSWER_STRING_CHARS} characters (${requirement})`;
|
|
274
|
+
case "number":
|
|
275
|
+
case "integer": {
|
|
276
|
+
const kind = field.type === "integer" ? "integer" : "number";
|
|
277
|
+
const range = field.min !== undefined && field.max !== undefined
|
|
278
|
+
? ` between ${field.min} and ${field.max}`
|
|
279
|
+
: field.min !== undefined
|
|
280
|
+
? ` of at least ${field.min}`
|
|
281
|
+
: field.max !== undefined
|
|
282
|
+
? ` of at most ${field.max}`
|
|
283
|
+
: "";
|
|
284
|
+
return `"${field.name}": ${kind}${range} (${requirement})`;
|
|
285
|
+
}
|
|
286
|
+
case "boolean":
|
|
287
|
+
return `"${field.name}": true or false (${requirement})`;
|
|
288
|
+
case "enum":
|
|
289
|
+
return `"${field.name}": exactly one of ${(field.values ?? [])
|
|
290
|
+
.map((entry) => JSON.stringify(entry))
|
|
291
|
+
.join(", ")} (${requirement})`;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/** The shape as prompt lines, one per field, in declaration order. */
|
|
295
|
+
export function describeAnswerShape(shape) {
|
|
296
|
+
return shape.fields.map((field) => ` ${describeField(field)}`);
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* The human-readable rendering kept in the record's `answer` string. The
|
|
300
|
+
* structured value next to it is authoritative; this is what a reader that
|
|
301
|
+
* only knows the old free-text field sees.
|
|
302
|
+
*/
|
|
303
|
+
export function renderShapedAnswer(shape, value) {
|
|
304
|
+
return shape.fields
|
|
305
|
+
.filter((field) => value[field.name] !== undefined)
|
|
306
|
+
.map((field) => `${field.name}: ${String(value[field.name])}`)
|
|
307
|
+
.join("\n");
|
|
308
|
+
}
|
|
309
|
+
/** Deep copy, so a stored shape is never aliased by a view or a caller. */
|
|
310
|
+
export function cloneAnswerShape(shape) {
|
|
311
|
+
if (!shape)
|
|
312
|
+
return null;
|
|
313
|
+
return {
|
|
314
|
+
fields: shape.fields.map((field) => ({
|
|
315
|
+
...field,
|
|
316
|
+
...(field.values ? { values: [...field.values] } : {}),
|
|
317
|
+
})),
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=answer-shape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer-shape.js","sourceRoot":"","sources":["../../src/derivatives/answer-shape.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,11 +23,20 @@ import { type QuestionStore } from "./types.js";
|
|
|
23
23
|
/** Registration bodies are small; anything larger is refused up front. */
|
|
24
24
|
export declare const MAX_QUESTION_BODY_BYTES: number;
|
|
25
25
|
export interface PersonalServerDerivativesApiDeps {
|
|
26
|
-
auth: Pick<PersonalServerApiAuthPort, "authorizeOwner" | "authorizeWrite" | "authorizeWriteSession">;
|
|
26
|
+
auth: Pick<PersonalServerApiAuthPort, "authorizeOwner" | "authorizeWrite" | "authorizeWriteSession" | "authorizeBuilderRead">;
|
|
27
27
|
/** Absent = the compute layer is not wired; every route answers 503. */
|
|
28
28
|
compute?: {
|
|
29
29
|
store: QuestionStore;
|
|
30
|
-
scheduler: Pick<RecomputeScheduler, "requestRecompute" | "markSourceChanged"
|
|
30
|
+
scheduler: Pick<RecomputeScheduler, "requestRecompute" | "markSourceChanged"> & {
|
|
31
|
+
/**
|
|
32
|
+
* Next scheduled automatic retry of a failed question (ISO time), or
|
|
33
|
+
* null. Optional so a minimal scheduler stays a valid dependency; the
|
|
34
|
+
* status route then reports no retry.
|
|
35
|
+
*/
|
|
36
|
+
nextRetryAt?(questionId: string): string | null;
|
|
37
|
+
/** True while a retry compute is running (timer fired, not settled). */
|
|
38
|
+
retryInFlight?(questionId: string): boolean;
|
|
39
|
+
};
|
|
31
40
|
} | null;
|
|
32
41
|
now?: () => Date;
|
|
33
42
|
createQuestionId?: () => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/derivatives/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/derivatives/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAaH,OAAO,KAAK,EACV,yBAAyB,EACzB,gCAAgC,EAGjC,MAAM,iBAAiB,CAAC;AAMzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAEpB,0EAA0E;AAC1E,eAAO,MAAM,uBAAuB,QAAY,CAAC;AAKjD,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,IAAI,CACR,yBAAyB,EACvB,gBAAgB,GAChB,gBAAgB,GAChB,uBAAuB,GACvB,sBAAsB,CACzB,CAAC;IACF,wEAAwE;IACxE,OAAO,CAAC,EAAE;QACR,KAAK,EAAE,aAAa,CAAC;QACrB,SAAS,EAAE,IAAI,CACb,kBAAkB,EAClB,kBAAkB,GAAG,mBAAmB,CACzC,GAAG;YACF;;;;eAIG;YACH,WAAW,CAAC,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;YAChD,wEAAwE;YACxE,aAAa,CAAC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;SAC7C,CAAC;KACH,GAAG,IAAI,CAAC;IACT,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;IAChC,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KAChE,CAAC;CACH;AAuOD,wBAAsB,sCAAsC,CAC1D,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,gCAAgC,EACtC,OAAO,GAAE,gCAAqC,GAC7C,OAAO,CAAC,QAAQ,CAAC,CAqMnB"}
|
package/dist/derivatives/api.js
CHANGED
|
@@ -19,10 +19,14 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import { ContentTooLargeError, DerivativeComputeUnavailableError, DerivativeDerivedScopeRequiredError, DerivativeQuestionNotFoundError, DerivativeSourceNotGrantedError, ProtocolError, } from "../errors/catalog.js";
|
|
21
21
|
import { parseJsonObjectBody } from "../contracts/http.js";
|
|
22
|
+
import { parseDataScopeContract } from "../contracts/data.js";
|
|
23
|
+
import { selectedGrantId } from "../api/index.js";
|
|
22
24
|
import { createQuestionRegistration, parseQuestionInput, uncoveredSourceScopes, } from "./registration.js";
|
|
23
25
|
import { questionRegistrationView, } from "./types.js";
|
|
24
26
|
/** Registration bodies are small; anything larger is refused up front. */
|
|
25
27
|
export const MAX_QUESTION_BODY_BYTES = 16 * 1024;
|
|
28
|
+
/** Poll hint served while a retry compute is in flight (no scheduled time). */
|
|
29
|
+
const RETRY_IN_FLIGHT_POLL_SECONDS = 5;
|
|
26
30
|
function jsonResponse(body, init) {
|
|
27
31
|
const headers = new Headers(init?.headers);
|
|
28
32
|
headers.set("Content-Type", "application/json");
|
|
@@ -97,12 +101,117 @@ async function loadForCaller(deps, request, store, questionId) {
|
|
|
97
101
|
}
|
|
98
102
|
return { registration, writer };
|
|
99
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* `GET /v1/derivatives/status?derivedScope=<scope>`: the lifecycle of the
|
|
106
|
+
* question behind a derived scope, for the party that will READ the answer.
|
|
107
|
+
*
|
|
108
|
+
* Authorization is the data read's (`authorizeBuilderRead`, i.e. a live
|
|
109
|
+
* grant covering the derived scope, or the owner) — deliberately NOT the
|
|
110
|
+
* write-session path, because a consent-flow reader holds only a bare read
|
|
111
|
+
* entry and can never open a write session. Nothing is served and nothing
|
|
112
|
+
* is charged: this is authorization only, no x402 challenge and no
|
|
113
|
+
* RECORD_DATA_ACCESS receipt, the same bar as the lineage read.
|
|
114
|
+
*
|
|
115
|
+
* The view is deliberately narrow: lifecycle only. The question text, the
|
|
116
|
+
* source scopes, the question id, the registrar and the raw error string
|
|
117
|
+
* stay owner-only — `errorCode` is a closed vocabulary precisely so a
|
|
118
|
+
* stored error like "source scope X is deleted" cannot leak a scope name.
|
|
119
|
+
* One class needs the same care as the raw string: `grant_invalid` arises
|
|
120
|
+
* only from a builder-registered question, so a third-party reader gets
|
|
121
|
+
* `internal` instead of learning who registered.
|
|
122
|
+
* Auth runs before the store lookup, so an uncovered caller cannot probe
|
|
123
|
+
* which scopes have questions behind them.
|
|
124
|
+
*
|
|
125
|
+
* Like every Web3Signed read (data, lineage), the signature covers the
|
|
126
|
+
* path, not the query; per-scope authorization is enforced live against
|
|
127
|
+
* the caller's grant on each request.
|
|
128
|
+
*/
|
|
129
|
+
async function handleStatusRoute(request, url, deps, store, scheduler, now) {
|
|
130
|
+
if (request.method !== "GET") {
|
|
131
|
+
return errorResponse(405, "METHOD_NOT_ALLOWED", "Method not allowed");
|
|
132
|
+
}
|
|
133
|
+
const derivedScopeParam = url.searchParams.get("derivedScope");
|
|
134
|
+
if (!derivedScopeParam) {
|
|
135
|
+
throw new DerivativeDerivedScopeRequiredError();
|
|
136
|
+
}
|
|
137
|
+
// Same grammar gate as every scope-taking route, before anything is
|
|
138
|
+
// authorized: an arbitrary string never reaches the grant policy.
|
|
139
|
+
const scopeResult = parseDataScopeContract(derivedScopeParam);
|
|
140
|
+
if (!scopeResult.ok) {
|
|
141
|
+
return errorResponse(scopeResult.status, scopeResult.body.error, scopeResult.body.message);
|
|
142
|
+
}
|
|
143
|
+
const derivedScope = scopeResult.scope;
|
|
144
|
+
const auth = (await deps.auth.authorizeBuilderRead({
|
|
145
|
+
request,
|
|
146
|
+
scope: derivedScope,
|
|
147
|
+
grantId: selectedGrantId(request, url),
|
|
148
|
+
})) ?? undefined;
|
|
149
|
+
const registrations = await store.list({ derivedScope });
|
|
150
|
+
if (registrations.length === 0) {
|
|
151
|
+
throw new DerivativeQuestionNotFoundError({ derivedScope });
|
|
152
|
+
}
|
|
153
|
+
// Several registrations may share a derived scope, and data serving is
|
|
154
|
+
// registration-agnostic: if ANY of them is ready, the scope has an answer
|
|
155
|
+
// and the reader must not be told "failed" by a duplicate that never
|
|
156
|
+
// wrote anything. Report the most optimistic true state — ready, then an
|
|
157
|
+
// in-flight recompute, then never-computed, then failed — and within a
|
|
158
|
+
// class let the most recently updated registration speak.
|
|
159
|
+
const STATUS_PRECEDENCE = {
|
|
160
|
+
ready: 0,
|
|
161
|
+
stale: 1,
|
|
162
|
+
pending: 2,
|
|
163
|
+
failed: 3,
|
|
164
|
+
};
|
|
165
|
+
const registration = registrations.reduce((best, candidate) => {
|
|
166
|
+
const byStatus = STATUS_PRECEDENCE[candidate.status] - STATUS_PRECEDENCE[best.status];
|
|
167
|
+
if (byStatus !== 0)
|
|
168
|
+
return byStatus < 0 ? candidate : best;
|
|
169
|
+
return candidate.updatedAt >= best.updatedAt ? candidate : best;
|
|
170
|
+
});
|
|
171
|
+
const nextRetryAt = scheduler.nextRetryAt?.(registration.questionId) ?? null;
|
|
172
|
+
// While the retry compute is RUNNING there is no scheduled time, but null
|
|
173
|
+
// would be the terminal "will never retry" signature; serve a short poll
|
|
174
|
+
// hint instead. 0 is never served — it invites a tight poll loop.
|
|
175
|
+
const retryAfterSeconds = nextRetryAt !== null
|
|
176
|
+
? Math.max(1, Math.ceil((Date.parse(nextRetryAt) - now().getTime()) / 1000))
|
|
177
|
+
: scheduler.retryInFlight?.(registration.questionId)
|
|
178
|
+
? RETRY_IN_FLIGHT_POLL_SECONDS
|
|
179
|
+
: null;
|
|
180
|
+
// `grant_invalid` can only come from the live re-check of a REGISTERING
|
|
181
|
+
// BUILDER's grant, which an owner-registered question never runs. Serving
|
|
182
|
+
// it to a third-party reader would therefore disclose the registrar class
|
|
183
|
+
// the rest of this view withholds. The owner and the registrar itself lose
|
|
184
|
+
// nothing — they are the two parties who can act on it — and everyone else
|
|
185
|
+
// reads the honest generic class: something is wrong server-side and no
|
|
186
|
+
// retry is coming.
|
|
187
|
+
const registrarView = auth === undefined ||
|
|
188
|
+
auth.grantId === "owner" ||
|
|
189
|
+
auth.grantId === "policy-bypass" ||
|
|
190
|
+
(registration.registeredBy.kind === "builder" &&
|
|
191
|
+
typeof auth.builder === "string" &&
|
|
192
|
+
sameBuilder(registration.registeredBy.builder, auth.builder));
|
|
193
|
+
const disclosedErrorCode = registration.errorCode === "grant_invalid" && !registrarView
|
|
194
|
+
? "internal"
|
|
195
|
+
: registration.errorCode;
|
|
196
|
+
return jsonResponse({
|
|
197
|
+
derivedScope: registration.derivedScope,
|
|
198
|
+
status: registration.status,
|
|
199
|
+
lastComputedAt: registration.lastComputedAt,
|
|
200
|
+
derivedVersion: registration.derivedVersion,
|
|
201
|
+
derivedCollectedAt: registration.derivedCollectedAt,
|
|
202
|
+
// Null unless failed, whatever an old store row holds: a stale question
|
|
203
|
+
// is a recompute in progress, not a terminal failure.
|
|
204
|
+
errorCode: registration.status === "failed" ? disclosedErrorCode : null,
|
|
205
|
+
retryAfterSeconds,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
100
208
|
export async function handlePersonalServerDerivativesRequest(request, deps, options = {}) {
|
|
101
209
|
try {
|
|
102
210
|
const url = new URL(request.url);
|
|
103
211
|
const pathname = stripBasePath(url.pathname, options.basePath);
|
|
104
212
|
const parts = pathname.split("/").filter(Boolean);
|
|
105
|
-
|
|
213
|
+
const isStatusRoute = parts[0] === "status" && parts.length === 1;
|
|
214
|
+
if (!isStatusRoute && (parts[0] !== "questions" || parts.length > 3)) {
|
|
106
215
|
return errorResponse(404, "NOT_FOUND", "Not found");
|
|
107
216
|
}
|
|
108
217
|
const compute = deps.compute;
|
|
@@ -110,6 +219,10 @@ export async function handlePersonalServerDerivativesRequest(request, deps, opti
|
|
|
110
219
|
throw new DerivativeComputeUnavailableError();
|
|
111
220
|
const { store, scheduler } = compute;
|
|
112
221
|
const now = deps.now ?? (() => new Date());
|
|
222
|
+
// /status — the reader-facing lifecycle view of a derived scope.
|
|
223
|
+
if (isStatusRoute) {
|
|
224
|
+
return await handleStatusRoute(request, url, deps, store, scheduler, now);
|
|
225
|
+
}
|
|
113
226
|
// /questions
|
|
114
227
|
if (parts.length === 1) {
|
|
115
228
|
if (request.method === "GET") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/derivatives/api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/derivatives/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -74,6 +74,12 @@ export interface DerivativeAnswerRecord {
|
|
|
74
74
|
questionId: string;
|
|
75
75
|
question: string;
|
|
76
76
|
answer: string;
|
|
77
|
+
/**
|
|
78
|
+
* The validated structured answer, present only when the question
|
|
79
|
+
* declared an answer shape. `answer` stays a string either way (readers
|
|
80
|
+
* depend on it), holding a rendering of this value.
|
|
81
|
+
*/
|
|
82
|
+
answerData?: Record<string, unknown>;
|
|
77
83
|
evidence: string | null;
|
|
78
84
|
model: string;
|
|
79
85
|
computedAt: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compute.d.ts","sourceRoot":"","sources":["../../src/derivatives/compute.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"compute.d.ts","sourceRoot":"","sources":["../../src/derivatives/compute.ts"],"names":[],"mappings":"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"}
|