@archmax-ai/harness 1.0.1 → 2.0.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 +167 -165
- package/dist/agent.d.ts +2 -2
- package/dist/agent.js +2 -2
- package/dist/assembly/compose.js +5 -3
- package/dist/assembly/compose.js.map +1 -1
- package/dist/authoring-skill/archmax-harness/README.md +13 -15
- package/dist/authoring-skill/archmax-harness/SKILL.md +174 -261
- package/dist/authoring-skill/archmax-harness/references/backend-integration.md +244 -764
- package/dist/authoring-skill/archmax-harness/references/cases.md +178 -53
- package/dist/authoring-skill/archmax-harness/references/code-states-and-scripts.md +211 -100
- package/dist/authoring-skill/archmax-harness/references/diagnostics.md +57 -78
- package/dist/authoring-skill/archmax-harness/references/workflow-schema.md +614 -1977
- package/dist/core/attachments.d.ts +2 -0
- package/dist/core/attachments.js +2 -1
- package/dist/core/attachments.js.map +1 -1
- package/dist/core/deepagents.d.ts +1 -2
- package/dist/core/deepagents.js +1 -2
- package/dist/core/deepagents.js.map +1 -1
- package/dist/core/file-operations.d.ts +6 -0
- package/dist/core/file-operations.js +29 -0
- package/dist/core/file-operations.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/kernel/kernel.js +2 -2
- package/dist/kernel/kernel.js.map +1 -1
- package/dist/machine/lint-spec.js +6 -5
- package/dist/machine/lint-spec.js.map +1 -1
- package/dist/machine/machine.d.ts +8 -10
- package/dist/machine/machine.js +11 -12
- package/dist/machine/machine.js.map +1 -1
- package/dist/machine/signature-pattern.d.ts +24 -0
- package/dist/machine/signature-pattern.js +67 -0
- package/dist/machine/signature-pattern.js.map +1 -0
- package/dist/machine/signature.d.ts +137 -35
- package/dist/machine/signature.js +476 -25
- package/dist/machine/signature.js.map +1 -1
- package/dist/machine/spec-schema.d.ts +203 -5
- package/dist/machine/spec-schema.js +209 -51
- package/dist/machine/spec-schema.js.map +1 -1
- package/dist/machine/tool-names.d.ts +24 -34
- package/dist/machine/tool-names.js +43 -63
- package/dist/machine/tool-names.js.map +1 -1
- package/dist/machine/types.d.ts +11 -10
- package/dist/machine/types.js.map +1 -1
- package/dist/public/spec.d.ts +10 -6
- package/dist/public/spec.js +9 -5
- package/dist/public/spec.js.map +1 -1
- package/dist/validate/validate.js +3 -3
- package/dist/validate/validate.js.map +1 -1
- package/dist/workflow/automated.js +6 -1
- package/dist/workflow/automated.js.map +1 -1
- package/dist/workflow/control-tools.js +3 -3
- package/dist/workflow/control-tools.js.map +1 -1
- package/dist/workflow/file-values.d.ts +4 -1
- package/dist/workflow/file-values.js +2 -0
- package/dist/workflow/file-values.js.map +1 -1
- package/dist/workflow/grader-state.d.ts +2 -2
- package/dist/workflow/grader-state.js +5 -15
- package/dist/workflow/grader-state.js.map +1 -1
- package/dist/workflow/middleware.d.ts +2 -0
- package/dist/workflow/middleware.js +3 -26
- package/dist/workflow/middleware.js.map +1 -1
- package/dist/workflow/on-error.js +0 -1
- package/dist/workflow/on-error.js.map +1 -1
- package/dist/workflow/parks.js +0 -1
- package/dist/workflow/parks.js.map +1 -1
- package/dist/workflow/render-prompt.d.ts +4 -5
- package/dist/workflow/render-prompt.js +31 -29
- package/dist/workflow/render-prompt.js.map +1 -1
- package/dist/workflow/signature-checks.d.ts +8 -3
- package/dist/workflow/signature-checks.js +17 -4
- package/dist/workflow/signature-checks.js.map +1 -1
- package/dist/workflow/state.d.ts +0 -9
- package/dist/workflow/state.js +0 -3
- package/dist/workflow/state.js.map +1 -1
- package/dist/workflow/sub-workflow.js +4 -1
- package/dist/workflow/sub-workflow.js.map +1 -1
- package/dist/workflow/turn-boundary.js +0 -1
- package/dist/workflow/turn-boundary.js.map +1 -1
- package/package.json +2 -2
- package/skills/archmax-harness/README.md +13 -15
- package/skills/archmax-harness/SKILL.md +174 -261
- package/skills/archmax-harness/references/backend-integration.md +244 -764
- package/skills/archmax-harness/references/cases.md +178 -53
- package/skills/archmax-harness/references/code-states-and-scripts.md +211 -100
- package/skills/archmax-harness/references/diagnostics.md +57 -78
- package/skills/archmax-harness/references/workflow-schema.md +614 -1977
- package/dist/authoring-skill/archmax-harness/references/code-state-and-test-scripts.md +0 -1424
- package/dist/authoring-skill/archmax-harness/references/wiring.md +0 -119
- package/dist/authoring-skill/archmax-harness/references/workflow-yaml.md +0 -399
- package/skills/archmax-harness/references/code-state-and-test-scripts.md +0 -1424
- package/skills/archmax-harness/references/wiring.md +0 -119
- package/skills/archmax-harness/references/workflow-yaml.md +0 -399
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A trigger's signature, typed: what each `requires`/`returns` entry declares
|
|
3
|
+
* (its type and the rules its value must also meet), the one mapping from a
|
|
4
|
+
* signature to JSON Schema, and the one conformance rule.
|
|
5
|
+
*
|
|
6
|
+
* Pure and browser-safe — it depends on nothing but the spec's types and the
|
|
7
|
+
* linear-time pattern engine — so a host builds an MCP tool schema, a start
|
|
8
|
+
* form or request validation from exactly the mapping and rule the runtime
|
|
9
|
+
* enforces. Every runtime check (the turn boundary, `archmax_set_variables`, the
|
|
10
|
+
* completion check, a delegation and its settle) decides by
|
|
11
|
+
* {@link signatureValueIssues}; nothing else judges a value's type or rules.
|
|
12
|
+
*/
|
|
13
|
+
import { compilePattern } from "./signature-pattern.js";
|
|
1
14
|
/**
|
|
2
15
|
* The types a signature entry may declare: JSON Schema's own type words, plus its
|
|
3
16
|
* two string formats `date` and `date-time`, promoted because a host renders and
|
|
@@ -16,12 +29,38 @@ export const SIGNATURE_TYPES = [
|
|
|
16
29
|
"array",
|
|
17
30
|
"file",
|
|
18
31
|
];
|
|
32
|
+
/** The formats a `string` entry's `format` rule names. */
|
|
33
|
+
export const SIGNATURE_FORMATS = ["email", "url", "phone"];
|
|
34
|
+
/**
|
|
35
|
+
* The kinds of text a `string` entry's `content` rule declares. A declaration
|
|
36
|
+
* only: carried and mapped, never checked — what a kind permits is a host's call.
|
|
37
|
+
*/
|
|
38
|
+
export const SIGNATURE_CONTENTS = ["text", "markdown", "html"];
|
|
39
|
+
/** The types each rule applies to. A rule on any other type, or on an untyped entry, is a load error. */
|
|
40
|
+
export const RULE_TYPES = {
|
|
41
|
+
format: ["string"],
|
|
42
|
+
pattern: ["string"],
|
|
43
|
+
minLength: ["string"],
|
|
44
|
+
maxLength: ["string"],
|
|
45
|
+
enum: ["string"],
|
|
46
|
+
content: ["string"],
|
|
47
|
+
minimum: ["integer", "number", "date", "date-time"],
|
|
48
|
+
maximum: ["integer", "number", "date", "date-time"],
|
|
49
|
+
minItems: ["array"],
|
|
50
|
+
maxItems: ["array"],
|
|
51
|
+
accept: ["file"],
|
|
52
|
+
maxSize: ["file"],
|
|
53
|
+
};
|
|
54
|
+
/** Every rule name, in the order an entry's rules are read and listed. */
|
|
55
|
+
export const SIGNATURE_RULE_NAMES = Object.keys(RULE_TYPES);
|
|
19
56
|
// --- Normalizing -----------------------------------------------------------------
|
|
20
57
|
/**
|
|
21
|
-
* A `requires`/`returns` list as `{ name, type?, description
|
|
22
|
-
* declaration order: a bare name and `{ name }` are the same
|
|
23
|
-
*
|
|
24
|
-
*
|
|
58
|
+
* A `requires`/`returns` list as `{ name, type?, description?, …rules }`
|
|
59
|
+
* entries, in declaration order: a bare name and `{ name }` are the same
|
|
60
|
+
* untyped entry. A rule is carried as written, except `maxSize`, read as bytes;
|
|
61
|
+
* `today` and `now` stay symbolic. Total — a list the schema refused (a scalar,
|
|
62
|
+
* an entry naming nothing, a rule its type does not take) yields what it can
|
|
63
|
+
* read, so `validate` can read a spec whose shape failed.
|
|
25
64
|
*/
|
|
26
65
|
export function normalizeSignature(list) {
|
|
27
66
|
if (!Array.isArray(list))
|
|
@@ -42,6 +81,8 @@ export function normalizeSignature(list) {
|
|
|
42
81
|
entry.type = type;
|
|
43
82
|
if (typeof description === "string" && description.trim() !== "")
|
|
44
83
|
entry.description = description.trim();
|
|
84
|
+
if (entry.type)
|
|
85
|
+
Object.assign(entry, readRules(item, entry.type));
|
|
45
86
|
entries.push(entry);
|
|
46
87
|
}
|
|
47
88
|
return entries;
|
|
@@ -50,6 +91,98 @@ export function normalizeSignature(list) {
|
|
|
50
91
|
export function isSignatureType(value) {
|
|
51
92
|
return typeof value === "string" && SIGNATURE_TYPES.includes(value);
|
|
52
93
|
}
|
|
94
|
+
/** The rules of a declaration its type takes, each read only when it is well-shaped. */
|
|
95
|
+
function readRules(decl, type) {
|
|
96
|
+
const rules = {};
|
|
97
|
+
for (const rule of SIGNATURE_RULE_NAMES) {
|
|
98
|
+
if (!Object.hasOwn(decl, rule) || !RULE_TYPES[rule].includes(type))
|
|
99
|
+
continue;
|
|
100
|
+
const value = ruleValue(rule, type, decl[rule]);
|
|
101
|
+
if (value !== undefined)
|
|
102
|
+
rules[rule] = value;
|
|
103
|
+
}
|
|
104
|
+
return rules;
|
|
105
|
+
}
|
|
106
|
+
/** One rule's value as a normalized entry holds it, or `undefined` when it is malformed. */
|
|
107
|
+
function ruleValue(rule, type, value) {
|
|
108
|
+
switch (rule) {
|
|
109
|
+
case "format":
|
|
110
|
+
return SIGNATURE_FORMATS.includes(value) ? value : undefined;
|
|
111
|
+
case "content":
|
|
112
|
+
return SIGNATURE_CONTENTS.includes(value) ? value : undefined;
|
|
113
|
+
case "pattern":
|
|
114
|
+
return typeof value === "string" ? value : undefined;
|
|
115
|
+
case "minLength":
|
|
116
|
+
case "maxLength":
|
|
117
|
+
case "minItems":
|
|
118
|
+
case "maxItems":
|
|
119
|
+
return isCount(value) ? value : undefined;
|
|
120
|
+
case "enum":
|
|
121
|
+
case "accept":
|
|
122
|
+
return Array.isArray(value) && value.length > 0 && value.every((v) => typeof v === "string")
|
|
123
|
+
? [...value]
|
|
124
|
+
: undefined;
|
|
125
|
+
case "minimum":
|
|
126
|
+
case "maximum":
|
|
127
|
+
return isBound(type, value) ? value : undefined;
|
|
128
|
+
case "maxSize":
|
|
129
|
+
return parseSize(value);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/** A length or count: a non-negative integer. */
|
|
133
|
+
export function isCount(value) {
|
|
134
|
+
return typeof value === "number" && Number.isInteger(value) && value >= 0;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Whether `value` is a well-formed `minimum`/`maximum` for `type`: a finite
|
|
138
|
+
* number for `integer`/`number`, a real `YYYY-MM-DD` or `today` for `date`, an
|
|
139
|
+
* RFC 3339 date-time or `now` for `date-time`.
|
|
140
|
+
*/
|
|
141
|
+
export function isBound(type, value) {
|
|
142
|
+
switch (type) {
|
|
143
|
+
case "integer":
|
|
144
|
+
case "number":
|
|
145
|
+
return typeof value === "number" && Number.isFinite(value);
|
|
146
|
+
case "date":
|
|
147
|
+
return value === "today" || (typeof value === "string" && isFullDate(value));
|
|
148
|
+
case "date-time":
|
|
149
|
+
return value === "now" || (typeof value === "string" && isDateTime(value));
|
|
150
|
+
default:
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Whether a `minimum` and a `maximum` for `type` leave room for a value: `true`
|
|
156
|
+
* unless both are literal and the minimum is above the maximum. `today` and
|
|
157
|
+
* `now` move, so a bound naming one is never out of order here.
|
|
158
|
+
*/
|
|
159
|
+
export function boundsInOrder(type, minimum, maximum) {
|
|
160
|
+
if (!isBound(type, minimum) || !isBound(type, maximum))
|
|
161
|
+
return true;
|
|
162
|
+
if (typeof minimum === "number" && typeof maximum === "number")
|
|
163
|
+
return minimum <= maximum;
|
|
164
|
+
if (minimum === "today" || minimum === "now" || maximum === "today" || maximum === "now")
|
|
165
|
+
return true;
|
|
166
|
+
if (type === "date")
|
|
167
|
+
return minimum <= maximum;
|
|
168
|
+
return instantOf(minimum) <= instantOf(maximum);
|
|
169
|
+
}
|
|
170
|
+
const SIZE = /^(\d{1,15})(KB|MB)$/;
|
|
171
|
+
/**
|
|
172
|
+
* A `maxSize` in bytes: a non-negative integer as itself, `<n>KB` as n × 1,000,
|
|
173
|
+
* `<n>MB` as n × 1,000,000; `undefined` for anything else.
|
|
174
|
+
*/
|
|
175
|
+
export function parseSize(value) {
|
|
176
|
+
if (isCount(value))
|
|
177
|
+
return Number.isSafeInteger(value) ? value : undefined;
|
|
178
|
+
if (typeof value !== "string")
|
|
179
|
+
return undefined;
|
|
180
|
+
const match = SIZE.exec(value);
|
|
181
|
+
if (!match)
|
|
182
|
+
return undefined;
|
|
183
|
+
const bytes = Number(match[1]) * (match[2] === "KB" ? 1_000 : 1_000_000);
|
|
184
|
+
return Number.isSafeInteger(bytes) ? bytes : undefined;
|
|
185
|
+
}
|
|
53
186
|
/**
|
|
54
187
|
* A trigger's normalized signature read from a parsed spec, or `undefined` when no
|
|
55
188
|
* state declares the id. The same reading `WorkflowMachine.signatureForTrigger`
|
|
@@ -76,10 +209,12 @@ export function signatureForTrigger(spec, triggerId) {
|
|
|
76
209
|
* The one mapping from signature entries to a JSON Schema object: one property
|
|
77
210
|
* per entry in declaration order, the six JSON Schema type words as themselves,
|
|
78
211
|
* `date`/`date-time`/`file` as a string with that `format`, an untyped entry as `{}`,
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
212
|
+
* each rule JSON Schema can express as its keyword, and every name `required` —
|
|
213
|
+
* each `requires` entry is mandatory, and the completion check guarantees each
|
|
214
|
+
* `returns` entry is set. The delegation tool's input schema is built by it, so
|
|
215
|
+
* a host building an MCP tool, a form or an API body from the same signature
|
|
216
|
+
* describes what the runtime enforces. Date bounds, `accept` and `maxSize` have
|
|
217
|
+
* no JSON Schema keyword and are left out; the runtime still enforces them.
|
|
83
218
|
*/
|
|
84
219
|
export function signatureJsonSchema(entries) {
|
|
85
220
|
const properties = {};
|
|
@@ -89,44 +224,343 @@ export function signatureJsonSchema(entries) {
|
|
|
89
224
|
: entry.type
|
|
90
225
|
? { type: entry.type }
|
|
91
226
|
: {};
|
|
227
|
+
if (entry.type)
|
|
228
|
+
Object.assign(property, ruleKeywords(entry, entry.type));
|
|
92
229
|
if (entry.description)
|
|
93
230
|
property.description = entry.description;
|
|
94
231
|
properties[entry.name] = property;
|
|
95
232
|
}
|
|
96
233
|
return { type: "object", properties, required: entries.map((entry) => entry.name) };
|
|
97
234
|
}
|
|
235
|
+
/** The E.164 grammar, as the `phone` format's check and its mapped `pattern` both spell it. */
|
|
236
|
+
const E164 = "^\\+[1-9][0-9]{1,14}$";
|
|
237
|
+
const CONTENT_MEDIA_TYPES = {
|
|
238
|
+
text: "text/plain",
|
|
239
|
+
markdown: "text/markdown",
|
|
240
|
+
html: "text/html",
|
|
241
|
+
};
|
|
242
|
+
/** The JSON Schema keywords an entry's rules map to, for the rules its type takes. */
|
|
243
|
+
function ruleKeywords(entry, type) {
|
|
244
|
+
const out = {};
|
|
245
|
+
if (type === "string") {
|
|
246
|
+
if (entry.format === "email")
|
|
247
|
+
out.format = "email";
|
|
248
|
+
if (entry.format === "url")
|
|
249
|
+
Object.assign(out, { format: "uri", pattern: "^https?://" });
|
|
250
|
+
if (entry.format === "phone")
|
|
251
|
+
out.pattern = E164;
|
|
252
|
+
if (entry.pattern !== undefined)
|
|
253
|
+
out.pattern = entry.pattern;
|
|
254
|
+
if (entry.minLength !== undefined)
|
|
255
|
+
out.minLength = entry.minLength;
|
|
256
|
+
if (entry.maxLength !== undefined)
|
|
257
|
+
out.maxLength = entry.maxLength;
|
|
258
|
+
if (entry.enum !== undefined)
|
|
259
|
+
out.enum = [...entry.enum];
|
|
260
|
+
if (entry.content !== undefined)
|
|
261
|
+
out.contentMediaType = CONTENT_MEDIA_TYPES[entry.content];
|
|
262
|
+
}
|
|
263
|
+
if (type === "integer" || type === "number") {
|
|
264
|
+
if (typeof entry.minimum === "number")
|
|
265
|
+
out.minimum = entry.minimum;
|
|
266
|
+
if (typeof entry.maximum === "number")
|
|
267
|
+
out.maximum = entry.maximum;
|
|
268
|
+
}
|
|
269
|
+
if (type === "array") {
|
|
270
|
+
if (entry.minItems !== undefined)
|
|
271
|
+
out.minItems = entry.minItems;
|
|
272
|
+
if (entry.maxItems !== undefined)
|
|
273
|
+
out.maxItems = entry.maxItems;
|
|
274
|
+
}
|
|
275
|
+
return out;
|
|
276
|
+
}
|
|
98
277
|
// --- Conformance --------------------------------------------------------------------
|
|
99
278
|
/**
|
|
100
279
|
* The one conformance rule: one issue per entry whose name is not set in
|
|
101
|
-
* `values`, and one per typed entry whose value does not conform
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
* value
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
|
|
109
|
-
|
|
280
|
+
* `values`, and one per typed entry whose value does not conform to its type
|
|
281
|
+
* or, conforming, breaks one of its rules, in declaration order; an empty list
|
|
282
|
+
* when the map satisfies the signature. A name is set when `values` holds it
|
|
283
|
+
* with any value but `undefined`. An untyped entry takes any value, `null`
|
|
284
|
+
* included; a typed one never takes `null`. Nothing is coerced or trimmed —
|
|
285
|
+
* the string `"4"` is not an `integer`, and `" a@b.co"` is not an email address.
|
|
286
|
+
*
|
|
287
|
+
* Rules are checked only on a value of the right type, and an entry reports
|
|
288
|
+
* only the first rule it breaks, in this order: `format`/`pattern`, `enum`,
|
|
289
|
+
* `minLength`/`maxLength`, `minimum`/`maximum`, `minItems`/`maxItems`,
|
|
290
|
+
* `accept`. `today` and `now` read `options.now`, the current time by default.
|
|
291
|
+
* Every check is synchronous and linear in the value's length; an authored
|
|
292
|
+
* `pattern` runs in RE2, never in `RegExp`. A `file` value is judged by its
|
|
293
|
+
* path alone: whether a file is there, whether the session may read it and
|
|
294
|
+
* how large it is, is the runtime's check where the value crosses a boundary.
|
|
295
|
+
*/
|
|
296
|
+
export function signatureValueIssues(entries, values, options) {
|
|
110
297
|
const issues = [];
|
|
298
|
+
const clock = lazyClock(options?.now);
|
|
111
299
|
for (const entry of entries) {
|
|
112
300
|
const value = Object.hasOwn(values, entry.name) ? values[entry.name] : undefined;
|
|
113
301
|
if (value === undefined) {
|
|
114
302
|
issues.push({ kind: "missing", name: entry.name, message: `'${entry.name}' is not set` });
|
|
115
303
|
continue;
|
|
116
304
|
}
|
|
117
|
-
if (!entry.type
|
|
305
|
+
if (!entry.type)
|
|
118
306
|
continue;
|
|
119
307
|
const found = valueKind(value);
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
308
|
+
if (!conforms(entry.type, value)) {
|
|
309
|
+
issues.push({
|
|
310
|
+
kind: "invalid",
|
|
311
|
+
name: entry.name,
|
|
312
|
+
type: entry.type,
|
|
313
|
+
found,
|
|
314
|
+
message: `'${entry.name}' must be ${TYPE_PHRASES[entry.type]}, but ${arrived(found, value)} arrived`,
|
|
315
|
+
});
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
318
|
+
const broken = brokenRule(entry, entry.type, value, clock);
|
|
319
|
+
if (broken) {
|
|
320
|
+
issues.push({
|
|
321
|
+
kind: "invalid",
|
|
322
|
+
name: entry.name,
|
|
323
|
+
type: entry.type,
|
|
324
|
+
found,
|
|
325
|
+
rule: broken.rule,
|
|
326
|
+
message: `'${entry.name}' must ${broken.must}`,
|
|
327
|
+
});
|
|
328
|
+
}
|
|
127
329
|
}
|
|
128
330
|
return issues;
|
|
129
331
|
}
|
|
332
|
+
/** The check's clock, read at most once and only when a date bound needs it. */
|
|
333
|
+
function lazyClock(now) {
|
|
334
|
+
let at = now;
|
|
335
|
+
return () => (at ??= new Date());
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* The first rule a value of the entry's type breaks, in the documented order,
|
|
339
|
+
* or `undefined` when it breaks none. Only the rules the type takes are read.
|
|
340
|
+
*/
|
|
341
|
+
function brokenRule(entry, type, value, clock) {
|
|
342
|
+
const broken = (rule) => ({ rule, must: ruleWording(entry, type, rule).must });
|
|
343
|
+
switch (type) {
|
|
344
|
+
case "string": {
|
|
345
|
+
const text = value;
|
|
346
|
+
if (entry.format && !FORMAT_CHECKS[entry.format](text))
|
|
347
|
+
return broken("format");
|
|
348
|
+
if (entry.pattern !== undefined) {
|
|
349
|
+
const compiled = compilePattern(entry.pattern);
|
|
350
|
+
// A host-built entry can skip the parse; its pattern still fails closed.
|
|
351
|
+
if (!compiled.ok) {
|
|
352
|
+
return { rule: "pattern", must: `match ${entry.pattern}, which does not compile: ${compiled.error}` };
|
|
353
|
+
}
|
|
354
|
+
if (!compiled.test(text))
|
|
355
|
+
return broken("pattern");
|
|
356
|
+
}
|
|
357
|
+
if (entry.enum && !entry.enum.includes(text))
|
|
358
|
+
return broken("enum");
|
|
359
|
+
if (entry.minLength !== undefined || entry.maxLength !== undefined) {
|
|
360
|
+
const length = codePointsUpTo(text, Math.max(entry.minLength ?? 0, (entry.maxLength ?? -1) + 1));
|
|
361
|
+
if (entry.minLength !== undefined && length < entry.minLength)
|
|
362
|
+
return broken("minLength");
|
|
363
|
+
if (entry.maxLength !== undefined && length > entry.maxLength)
|
|
364
|
+
return broken("maxLength");
|
|
365
|
+
}
|
|
366
|
+
return undefined;
|
|
367
|
+
}
|
|
368
|
+
case "integer":
|
|
369
|
+
case "number": {
|
|
370
|
+
const number = value;
|
|
371
|
+
if (typeof entry.minimum === "number" && number < entry.minimum)
|
|
372
|
+
return broken("minimum");
|
|
373
|
+
if (typeof entry.maximum === "number" && number > entry.maximum)
|
|
374
|
+
return broken("maximum");
|
|
375
|
+
return undefined;
|
|
376
|
+
}
|
|
377
|
+
case "date": {
|
|
378
|
+
const day = value;
|
|
379
|
+
const bound = (b) => (b === "today" ? clock().toISOString().slice(0, 10) : b);
|
|
380
|
+
if (isBound(type, entry.minimum) && day < bound(entry.minimum))
|
|
381
|
+
return broken("minimum");
|
|
382
|
+
if (isBound(type, entry.maximum) && day > bound(entry.maximum))
|
|
383
|
+
return broken("maximum");
|
|
384
|
+
return undefined;
|
|
385
|
+
}
|
|
386
|
+
case "date-time": {
|
|
387
|
+
const at = instantOf(value);
|
|
388
|
+
const bound = (b) => (b === "now" ? clock().getTime() : instantOf(b));
|
|
389
|
+
if (isBound(type, entry.minimum) && at < bound(entry.minimum))
|
|
390
|
+
return broken("minimum");
|
|
391
|
+
if (isBound(type, entry.maximum) && at > bound(entry.maximum))
|
|
392
|
+
return broken("maximum");
|
|
393
|
+
return undefined;
|
|
394
|
+
}
|
|
395
|
+
case "array": {
|
|
396
|
+
const length = value.length;
|
|
397
|
+
if (entry.minItems !== undefined && length < entry.minItems)
|
|
398
|
+
return broken("minItems");
|
|
399
|
+
if (entry.maxItems !== undefined && length > entry.maxItems)
|
|
400
|
+
return broken("maxItems");
|
|
401
|
+
return undefined;
|
|
402
|
+
}
|
|
403
|
+
case "file": {
|
|
404
|
+
const extension = lastExtension(value);
|
|
405
|
+
if (entry.accept && !entry.accept.some((accepted) => accepted.toLowerCase() === extension)) {
|
|
406
|
+
return broken("accept");
|
|
407
|
+
}
|
|
408
|
+
return undefined;
|
|
409
|
+
}
|
|
410
|
+
default:
|
|
411
|
+
return undefined;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* How one declared rule reads: `must`, what a refusal says the value must do
|
|
416
|
+
* (after "'name' must "), and `phrase`, the same rule as the prompt lists it
|
|
417
|
+
* beside the entry's type. `undefined` when the entry declares no such rule
|
|
418
|
+
* its type takes.
|
|
419
|
+
*/
|
|
420
|
+
function ruleWording(entry, type, rule) {
|
|
421
|
+
if (entry[rule] === undefined || !RULE_TYPES[rule].includes(type))
|
|
422
|
+
return undefined;
|
|
423
|
+
const be = (phrase) => ({ must: `be ${phrase}`, phrase });
|
|
424
|
+
const dated = type === "date" || type === "date-time";
|
|
425
|
+
switch (rule) {
|
|
426
|
+
case "format":
|
|
427
|
+
return be(FORMAT_PHRASES[entry.format]);
|
|
428
|
+
case "pattern":
|
|
429
|
+
return { must: `match ${entry.pattern}`, phrase: `matching ${entry.pattern}` };
|
|
430
|
+
case "enum":
|
|
431
|
+
return be(`one of ${entry.enum.join(", ")}`);
|
|
432
|
+
case "minLength":
|
|
433
|
+
return be(`at least ${counted(entry.minLength, "character", "characters")}`);
|
|
434
|
+
case "maxLength":
|
|
435
|
+
return be(`at most ${counted(entry.maxLength, "character", "characters")}`);
|
|
436
|
+
case "content":
|
|
437
|
+
return be(CONTENT_PHRASES[entry.content]);
|
|
438
|
+
case "minimum":
|
|
439
|
+
return dated
|
|
440
|
+
? { must: `not be before ${entry.minimum}`, phrase: `not before ${entry.minimum}` }
|
|
441
|
+
: be(`at least ${entry.minimum}`);
|
|
442
|
+
case "maximum":
|
|
443
|
+
return dated
|
|
444
|
+
? { must: `not be after ${entry.maximum}`, phrase: `not after ${entry.maximum}` }
|
|
445
|
+
: be(`at most ${entry.maximum}`);
|
|
446
|
+
case "minItems": {
|
|
447
|
+
const phrase = `at least ${counted(entry.minItems, "entry", "entries")}`;
|
|
448
|
+
return { must: `hold ${phrase}`, phrase };
|
|
449
|
+
}
|
|
450
|
+
case "maxItems": {
|
|
451
|
+
const phrase = `at most ${counted(entry.maxItems, "entry", "entries")}`;
|
|
452
|
+
return { must: `hold ${phrase}`, phrase };
|
|
453
|
+
}
|
|
454
|
+
case "accept":
|
|
455
|
+
return be(`a ${oneOf(entry.accept)} file`);
|
|
456
|
+
case "maxSize":
|
|
457
|
+
return be(`at most ${formatSize(entry.maxSize)}`);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* The rules an entry declares, as short phrases in declaration-table order
|
|
462
|
+
* (`an email address`, `at most 80 characters`, `not before today`): what the
|
|
463
|
+
* prompt lists beside the entry's type, in the words a refusal of each uses.
|
|
464
|
+
*/
|
|
465
|
+
export function signatureRulePhrases(entry) {
|
|
466
|
+
if (!entry.type)
|
|
467
|
+
return [];
|
|
468
|
+
const type = entry.type;
|
|
469
|
+
return SIGNATURE_RULE_NAMES.flatMap((rule) => ruleWording(entry, type, rule)?.phrase ?? []);
|
|
470
|
+
}
|
|
471
|
+
/** What each format means, as a refusal and the prompt state it. */
|
|
472
|
+
const FORMAT_PHRASES = {
|
|
473
|
+
email: "an email address",
|
|
474
|
+
url: "an http(s) URL",
|
|
475
|
+
phone: "a phone number in international form, such as +4930123456",
|
|
476
|
+
};
|
|
477
|
+
/** What each declared kind of text reads as in the prompt. */
|
|
478
|
+
const CONTENT_PHRASES = {
|
|
479
|
+
text: "plain text",
|
|
480
|
+
markdown: "Markdown",
|
|
481
|
+
html: "HTML",
|
|
482
|
+
};
|
|
483
|
+
const FORMAT_CHECKS = {
|
|
484
|
+
email: isEmailAddress,
|
|
485
|
+
url: isHttpUrl,
|
|
486
|
+
phone: (value) => value.length <= 16 && PHONE.test(value),
|
|
487
|
+
};
|
|
488
|
+
const PHONE = new RegExp(E164);
|
|
489
|
+
/** WHATWG's `atext` and `.`: the characters a local part may hold. */
|
|
490
|
+
const LOCAL_PART = /^[A-Za-z0-9.!#$%&'*+/=?^_`{|}~-]+$/;
|
|
491
|
+
const DOMAIN_LABEL = /^[A-Za-z0-9-]{1,63}$/;
|
|
492
|
+
/**
|
|
493
|
+
* The WHATWG "valid email address" grammar, the one `<input type=email>` uses,
|
|
494
|
+
* by hand so it is plainly linear: one `@`, a local part of `atext` and `.`, and
|
|
495
|
+
* a domain of labels of 1–63 letters, digits and `-`, none starting or ending
|
|
496
|
+
* with `-` — with at least two labels, so an address with no TLD
|
|
497
|
+
* (`ann@localhost`) is refused. No quoted local part, no address literal.
|
|
498
|
+
*/
|
|
499
|
+
function isEmailAddress(value) {
|
|
500
|
+
const at = value.indexOf("@");
|
|
501
|
+
if (at <= 0 || at !== value.lastIndexOf("@"))
|
|
502
|
+
return false;
|
|
503
|
+
if (!LOCAL_PART.test(value.slice(0, at)))
|
|
504
|
+
return false;
|
|
505
|
+
const labels = value.slice(at + 1).split(".");
|
|
506
|
+
return (labels.length >= 2 &&
|
|
507
|
+
labels.every((label) => DOMAIN_LABEL.test(label) && !label.startsWith("-") && !label.endsWith("-")));
|
|
508
|
+
}
|
|
509
|
+
/**
|
|
510
|
+
* An absolute http(s) URL with no credentials, written as such: the scheme in
|
|
511
|
+
* lower case followed by `//` (the mapped schema's `^https?://` agrees), and no
|
|
512
|
+
* space or control character anywhere — the WHATWG parser would strip or
|
|
513
|
+
* encode those, and nothing is trimmed here.
|
|
514
|
+
*/
|
|
515
|
+
function isHttpUrl(value) {
|
|
516
|
+
if (!value.startsWith("http://") && !value.startsWith("https://"))
|
|
517
|
+
return false;
|
|
518
|
+
for (let i = 0; i < value.length; i++) {
|
|
519
|
+
const code = value.charCodeAt(i);
|
|
520
|
+
if (code <= 0x20 || code === 0x7f)
|
|
521
|
+
return false;
|
|
522
|
+
}
|
|
523
|
+
let url;
|
|
524
|
+
try {
|
|
525
|
+
url = new URL(value);
|
|
526
|
+
}
|
|
527
|
+
catch {
|
|
528
|
+
return false;
|
|
529
|
+
}
|
|
530
|
+
return (url.protocol === "http:" || url.protocol === "https:") && url.username === "" && url.password === "";
|
|
531
|
+
}
|
|
532
|
+
/** The code points in `text`, counted no further than one past `limit`. */
|
|
533
|
+
function codePointsUpTo(text, limit) {
|
|
534
|
+
let count = 0;
|
|
535
|
+
for (const _ of text)
|
|
536
|
+
if (++count > limit)
|
|
537
|
+
break;
|
|
538
|
+
return count;
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* A `file` path's last extension, lower-cased with its leading `.`, or `""`
|
|
542
|
+
* when its file name has none (`notes`, `.env`).
|
|
543
|
+
*/
|
|
544
|
+
export function lastExtension(path) {
|
|
545
|
+
const name = path.slice(path.lastIndexOf("/") + 1);
|
|
546
|
+
const dot = name.lastIndexOf(".");
|
|
547
|
+
return dot > 0 ? name.slice(dot).toLowerCase() : "";
|
|
548
|
+
}
|
|
549
|
+
/** A byte count as a refusal states it, 1,000-based: `10 MB`, `512 KB`, `1500 bytes`. */
|
|
550
|
+
export function formatSize(bytes) {
|
|
551
|
+
if (bytes >= 1_000_000 && bytes % 1_000_000 === 0)
|
|
552
|
+
return `${bytes / 1_000_000} MB`;
|
|
553
|
+
if (bytes >= 1_000 && bytes % 1_000 === 0)
|
|
554
|
+
return `${bytes / 1_000} KB`;
|
|
555
|
+
return counted(bytes, "byte", "bytes");
|
|
556
|
+
}
|
|
557
|
+
function counted(n, one, many) {
|
|
558
|
+
return `${n} ${n === 1 ? one : many}`;
|
|
559
|
+
}
|
|
560
|
+
/** `.pdf`, `.pdf or .png`, `.pdf, .png or .jpg`. */
|
|
561
|
+
function oneOf(items) {
|
|
562
|
+
return items.length === 1 ? items[0] : `${items.slice(0, -1).join(", ")} or ${items.at(-1)}`;
|
|
563
|
+
}
|
|
130
564
|
/** Whether one value conforms to one signature type. */
|
|
131
565
|
function conforms(type, value) {
|
|
132
566
|
switch (type) {
|
|
@@ -223,6 +657,23 @@ function isDateTime(value) {
|
|
|
223
657
|
return false;
|
|
224
658
|
return true;
|
|
225
659
|
}
|
|
660
|
+
const INSTANT = /^(\d{4})-(\d{2})-(\d{2})[Tt](\d{2}):(\d{2}):(\d{2})(\.\d+)?(?:[Zz]|([+-])(\d{2}):(\d{2}))$/;
|
|
661
|
+
/**
|
|
662
|
+
* An RFC 3339 date-time (one {@link isDateTime} accepts) as epoch milliseconds,
|
|
663
|
+
* its offset applied and its fraction kept — never `Date.parse`.
|
|
664
|
+
*/
|
|
665
|
+
function instantOf(value) {
|
|
666
|
+
const match = INSTANT.exec(value);
|
|
667
|
+
if (!match)
|
|
668
|
+
return Number.NaN;
|
|
669
|
+
const at = new Date(0);
|
|
670
|
+
// setUTCFullYear, not Date.UTC, which reads a year below 100 as 19xx.
|
|
671
|
+
at.setUTCFullYear(Number(match[1]), Number(match[2]) - 1, Number(match[3]));
|
|
672
|
+
at.setUTCHours(Number(match[4]), Number(match[5]), Number(match[6]), 0);
|
|
673
|
+
const fraction = match[7] ? Number(match[7]) * 1000 : 0;
|
|
674
|
+
const offset = match[8] ? (match[8] === "-" ? -1 : 1) * (Number(match[9]) * 60 + Number(match[10])) * 60_000 : 0;
|
|
675
|
+
return at.getTime() + fraction - offset;
|
|
676
|
+
}
|
|
226
677
|
function daysInMonth(year, month) {
|
|
227
678
|
if (month === 2)
|
|
228
679
|
return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0 ? 29 : 28;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/machine/signature.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/machine/signature.ts"],"names":[],"mappings":"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"}
|