blueprint-runtime 0.0.0-stage → 0.3.1

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.
Files changed (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +224 -3
  3. package/dist/src/blueprint/load.js +83 -0
  4. package/dist/src/blueprint/load.js.map +1 -0
  5. package/dist/src/blueprint/plan.js +202 -0
  6. package/dist/src/blueprint/plan.js.map +1 -0
  7. package/dist/src/cli.js +182 -0
  8. package/dist/src/cli.js.map +1 -0
  9. package/dist/src/expr/dates.js +152 -0
  10. package/dist/src/expr/dates.js.map +1 -0
  11. package/dist/src/expr/decimal.js +66 -0
  12. package/dist/src/expr/decimal.js.map +1 -0
  13. package/dist/src/expr/errors.js +31 -0
  14. package/dist/src/expr/errors.js.map +1 -0
  15. package/dist/src/expr/evaluate.js +250 -0
  16. package/dist/src/expr/evaluate.js.map +1 -0
  17. package/dist/src/expr/functions.js +460 -0
  18. package/dist/src/expr/functions.js.map +1 -0
  19. package/dist/src/expr/parser.js +228 -0
  20. package/dist/src/expr/parser.js.map +1 -0
  21. package/dist/src/expr/scan.js +101 -0
  22. package/dist/src/expr/scan.js.map +1 -0
  23. package/dist/src/expr/values.js +118 -0
  24. package/dist/src/expr/values.js.map +1 -0
  25. package/dist/src/findings.js +10 -0
  26. package/dist/src/findings.js.map +1 -0
  27. package/dist/src/inspect.js +313 -0
  28. package/dist/src/inspect.js.map +1 -0
  29. package/dist/src/json/parse.js +225 -0
  30. package/dist/src/json/parse.js.map +1 -0
  31. package/dist/src/registry.js +39 -0
  32. package/dist/src/registry.js.map +1 -0
  33. package/dist/src/run/case.js +122 -0
  34. package/dist/src/run/case.js.map +1 -0
  35. package/dist/src/run/compare.js +94 -0
  36. package/dist/src/run/compare.js.map +1 -0
  37. package/dist/src/run/fixtures.js +122 -0
  38. package/dist/src/run/fixtures.js.map +1 -0
  39. package/dist/src/run/modules.js +380 -0
  40. package/dist/src/run/modules.js.map +1 -0
  41. package/dist/src/run/operators.js +151 -0
  42. package/dist/src/run/operators.js.map +1 -0
  43. package/dist/src/run/scheduler.js +306 -0
  44. package/dist/src/run/scheduler.js.map +1 -0
  45. package/dist/src/run/trace.js +2 -0
  46. package/dist/src/run/trace.js.map +1 -0
  47. package/package.json +60 -6
@@ -0,0 +1,313 @@
1
+ import { EXIT } from './findings.js';
2
+ import { loadBlueprint, DEFAULT_LIMITS } from './blueprint/load.js';
3
+ import { ExprSyntaxError, UnsupportedError } from './expr/errors.js';
4
+ import { parseExpression } from './expr/parser.js';
5
+ import { scanTemplate } from './expr/scan.js';
6
+ import { escapePointerToken, isObject } from './json/parse.js';
7
+ import { FILTER_OPERATORS, FUNCTIONS, KEYWORDS, MODULES } from './registry.js';
8
+ import { handlerFor, isOpaqueModule } from './run/modules.js';
9
+ function describeWhere(m, byId) {
10
+ if (m.branch.length === 0)
11
+ return 'main';
12
+ return m.branch
13
+ .map((b) => {
14
+ if (b.kind === 'onerror')
15
+ return `error handler of ${b.owner}`;
16
+ const router = byId.get(b.owner);
17
+ const fallback = router?.elseRoute === b.index ? ' (fallback)' : '';
18
+ return `router ${b.owner} › route ${b.index + 1}${fallback}`;
19
+ })
20
+ .join(' › ');
21
+ }
22
+ /** Every string under a value, with its JSON pointer. */
23
+ function* strings(v, pointer) {
24
+ if (typeof v === 'string')
25
+ yield [v, pointer];
26
+ else if (Array.isArray(v))
27
+ for (let i = 0; i < v.length; i++)
28
+ yield* strings(v[i], `${pointer}/${i}`);
29
+ else if (isObject(v))
30
+ for (const k of Object.keys(v))
31
+ yield* strings(v[k], `${pointer}/${escapePointerToken(k)}`);
32
+ }
33
+ export function inspectBytes(file, bytes, limits = DEFAULT_LIMITS) {
34
+ const loaded = loadBlueprint(bytes, limits);
35
+ const findings = [...loaded.findings];
36
+ const report = {
37
+ schemaVersion: 1,
38
+ tool: 'blueprint-runtime',
39
+ command: 'inspect',
40
+ file,
41
+ sha256: loaded.sha256,
42
+ bytes: loaded.bytes,
43
+ format: loaded.format,
44
+ name: loaded.plan?.name ?? (typeof loaded.doc?.['name'] === 'string' ? loaded.doc['name'] : null),
45
+ semanticHash: loaded.plan?.semanticHash ?? null,
46
+ modules: [],
47
+ expressions: [],
48
+ functions: [],
49
+ filterOperators: [],
50
+ needsClock: false,
51
+ fixtures: [],
52
+ findings,
53
+ verdict: 'eligible',
54
+ exitCode: EXIT.ok,
55
+ };
56
+ const plan = loaded.plan;
57
+ if (plan) {
58
+ const byId = new Map(plan.modules.map((m) => [m.id, m]));
59
+ const locate = (pointer) => loaded.json?.locatePointer(pointer);
60
+ const add = (f) => {
61
+ const loc = f.pointer === undefined ? undefined : locate(f.pointer);
62
+ findings.push(loc ? { ...f, loc } : f);
63
+ };
64
+ const fnCounts = new Map();
65
+ const opCounts = new Map();
66
+ const trigger = plan.modules[0];
67
+ const appTrigger = trigger !== undefined && isOpaqueModule(trigger.module);
68
+ if (appTrigger) {
69
+ report.fixtures.push({ moduleId: trigger.id, module: trigger.module, mode: 'trigger' });
70
+ add({ code: 'TRIGGER_FROM_INPUT', severity: 'warning', message: `The scenario starts with ${trigger.module}: a case's input is the list of bundles this trigger emitted (the connector itself is not verified)`, pointer: `${trigger.pointer}/module` });
71
+ }
72
+ else if (trigger && trigger.module !== 'gateway:CustomWebHook' && trigger.module !== 'util:BasicTrigger') {
73
+ add({ code: 'TRIGGER_UNSUPPORTED', severity: 'unsupported', message: `The scenario starts with ${trigger.module}; only a Custom webhook, the Basic trigger or a third-party app trigger can start a run yet`, pointer: `${trigger.pointer}/module` });
74
+ }
75
+ for (const m of plan.modules) {
76
+ const support = MODULES[m.module];
77
+ const versionOk = support?.versions.includes(m.version) ?? false;
78
+ const opaque = !support && isOpaqueModule(m.module);
79
+ if ((opaque && m !== trigger) || support?.fixture) {
80
+ const mode = opaque ? 'module' : support.fixture;
81
+ report.fixtures.push({ moduleId: m.id, module: m.module, mode });
82
+ add({ code: 'FIXTURE_REQUIRED', severity: 'warning', message: `Module ${m.id} (${m.module}) runs offline only from ${mode === 'http' ? 'an HTTP fixture (the request it builds is checked)' : 'a module fixture (its mapped input is checked; the connector itself is not verified)'}`, pointer: `${m.pointer}/module` });
83
+ }
84
+ if (m.module === 'placeholder:Placeholder') {
85
+ add({ code: 'MODULE_PLACEHOLDER', severity: 'unsupported', message: `Module ${m.id} is an empty module slot (placeholder:Placeholder): the scenario cannot run until it is filled in`, pointer: `${m.pointer}/module` });
86
+ }
87
+ else if (!support && !opaque) {
88
+ add({ code: 'MODULE_UNSUPPORTED', severity: 'unsupported', message: `Module ${m.id} uses ${m.module}, which has no recorded Make behavior in this runtime yet`, pointer: `${m.pointer}/module` });
89
+ }
90
+ else if (support && !versionOk) {
91
+ add({ code: 'MODULE_VERSION_UNSUPPORTED', severity: 'unsupported', message: `Module ${m.id}: ${m.module} version ${m.version} is not covered (known: ${support.versions.join(', ')})`, pointer: `${m.pointer}/version` });
92
+ }
93
+ try {
94
+ handlerFor(m.module)?.check?.(m);
95
+ }
96
+ catch (e) {
97
+ if (!(e instanceof UnsupportedError))
98
+ throw e;
99
+ add({ code: 'MODULE_CONFIG_UNSUPPORTED', severity: 'unsupported', message: e.message, pointer: m.pointer });
100
+ }
101
+ // Filter and router shapes the scheduler refuses (src/run/scheduler.ts).
102
+ const fallbackStart = m.branch.length > 0 && (() => {
103
+ const b = m.branch[m.branch.length - 1];
104
+ const router = byId.get(b.owner);
105
+ return router?.elseRoute === b.index && plan.modules.find((x) => JSON.stringify(x.branch) === JSON.stringify(m.branch)) === m;
106
+ })();
107
+ if (m.filter && !fallbackStart && (m.filter.conditions.length === 0 || m.filter.conditions.some((g) => g.length === 0))) {
108
+ add({ code: 'FILTER_SHAPE_UNSUPPORTED', severity: 'unsupported', message: `Module ${m.id}: a filter with an empty condition group has not been observed in Make`, pointer: `${m.pointer}/filter` });
109
+ }
110
+ if (fallbackStart && m.filter?.conditions.some((g) => g.length > 0)) {
111
+ add({ code: 'FILTER_SHAPE_UNSUPPORTED', severity: 'unsupported', message: `Module ${m.id}: a fallback route with its own conditions has not been observed in Make`, pointer: `${m.pointer}/filter` });
112
+ }
113
+ if (m.module === 'builtin:BasicRouter') {
114
+ const count = m.routeCount ?? 0;
115
+ if (count === 0)
116
+ add({ code: 'ROUTER_SHAPE_UNSUPPORTED', severity: 'unsupported', message: `Router ${m.id} has no routes; a router with nothing attached has not been observed in Make`, pointer: m.pointer });
117
+ if (m.elseRoute !== undefined && m.elseRoute !== count - 1)
118
+ add({ code: 'ROUTER_SHAPE_UNSUPPORTED', severity: 'unsupported', message: `Router ${m.id}: a fallback that is not the last route has not been observed in Make`, pointer: `${m.pointer}/parameters` });
119
+ for (let r = 0; r < count; r++) {
120
+ if (!plan.modules.some((x) => x.branch.length === m.branch.length + 1 && x.branch.at(-1)?.owner === m.id && x.branch.at(-1)?.index === r)) {
121
+ add({ code: 'ROUTER_SHAPE_UNSUPPORTED', severity: 'unsupported', message: `Router ${m.id}: route ${r + 1} is empty; an empty route has not been observed in Make`, pointer: `${m.pointer}/routes/${r}` });
122
+ }
123
+ }
124
+ }
125
+ if (m.hasErrorHandler) {
126
+ add({ code: 'ERROR_HANDLER_UNSUPPORTED', severity: 'unsupported', message: `Module ${m.id} has an error-handler route; error handlers are not supported yet`, pointer: `${m.pointer}/onerror` });
127
+ }
128
+ // Iterator structure the scheduler can run (src/run/scheduler.ts runIteration, corpus C):
129
+ // iterator → Set variable modules → optional Text aggregator, all in the same flow.
130
+ const sameFlow = (x) => JSON.stringify(x.branch) === JSON.stringify(m.branch);
131
+ if (m.module === 'util:TextAggregator') {
132
+ const feeder = m.parameters['feeder'];
133
+ const source = typeof feeder === 'number' ? byId.get(feeder) : undefined;
134
+ const fromTrigger = source !== undefined && source === trigger && m.branch.length === 0; // T-04
135
+ if (!source || (!fromTrigger && (!m.upstream.includes(source.id) || source.module !== 'builtin:BasicFeeder' || !sameFlow(source)))) {
136
+ add({ code: 'AGGREGATOR_SOURCE_UNSUPPORTED', severity: 'unsupported', message: `Aggregator ${m.id}: only an iterator earlier in the same flow, or the trigger, as the source is supported, got ${JSON.stringify(feeder ?? null)}`, pointer: `${m.pointer}/parameters/feeder` });
137
+ }
138
+ if (fromTrigger) {
139
+ for (const x of plan.modules) {
140
+ if (x.order > trigger.order && x.order < m.order && x.branch.length === 0 && x.module !== 'util:SetVariable2') {
141
+ add({ code: 'ITERATOR_SCOPE_UNSUPPORTED', severity: 'unsupported', message: `Module ${x.id} (${x.module}) runs once per trigger bundle before aggregator ${m.id}: only Set variable has recorded Make behavior there`, pointer: x.pointer });
142
+ }
143
+ }
144
+ }
145
+ if (!['other', '\n', '\t'].includes(m.parameters['rowSeparator'])) {
146
+ add({ code: 'AGGREGATOR_SEPARATOR_UNSUPPORTED', severity: 'unsupported', message: `Aggregator ${m.id}: row separator ${JSON.stringify(m.parameters['rowSeparator'] ?? null)} has no recorded Make behavior yet`, pointer: `${m.pointer}/parameters/rowSeparator` });
147
+ }
148
+ }
149
+ if (m.module === 'builtin:BasicFeeder') {
150
+ const aggregator = plan.modules.find((x) => x.module === 'util:TextAggregator' && x.parameters['feeder'] === m.id && x.order > m.order && sameFlow(x));
151
+ // Without an aggregator, the rest of the flow runs once per bundle (C2-noagg).
152
+ const end = aggregator?.order ?? Infinity;
153
+ for (const x of plan.modules) {
154
+ if (x.order > m.order && x.order < end && sameFlow(x) && x.module !== 'util:SetVariable2') {
155
+ add({ code: 'ITERATOR_SCOPE_UNSUPPORTED', severity: 'unsupported', message: `Module ${x.id} (${x.module}) runs once per bundle of iterator ${m.id}: only Set variable has recorded Make behavior there`, pointer: x.pointer });
156
+ }
157
+ }
158
+ }
159
+ const operators = [];
160
+ m.filter?.conditions.forEach((group, gi) => group.forEach((c, ci) => {
161
+ operators.push(c.o);
162
+ opCounts.set(c.o, (opCounts.get(c.o) ?? 0) + 1);
163
+ if (!(c.o in FILTER_OPERATORS)) {
164
+ add({ code: 'FILTER_OPERATOR_UNSUPPORTED', severity: 'unsupported', message: `Module ${m.id}: filter operator "${c.o}" has no recorded Make behavior yet`, pointer: `${m.pointer}/filter/conditions/${gi}/${ci}/o` });
165
+ }
166
+ }));
167
+ const im = {
168
+ order: m.order,
169
+ id: m.id,
170
+ module: m.module,
171
+ version: m.version,
172
+ where: describeWhere(m, byId),
173
+ pointer: m.pointer,
174
+ supported: (Boolean(support) && versionOk) || opaque,
175
+ evidence: support?.evidence ?? null,
176
+ filter: m.filter ? { label: m.filter.label, operators } : null,
177
+ };
178
+ if (m.routeCount !== undefined)
179
+ im.routeCount = m.routeCount;
180
+ if (m.elseRoute !== undefined)
181
+ im.elseRoute = m.elseRoute;
182
+ report.modules.push(im);
183
+ // Expressions: mapper, parameters and filter operands.
184
+ const sources = [
185
+ [m.mapper, `${m.pointer}/mapper`],
186
+ [m.parameters, `${m.pointer}/parameters`],
187
+ ];
188
+ m.filter?.conditions.forEach((g, gi) => g.forEach((c, ci) => {
189
+ sources.push([c.a, `${m.pointer}/filter/conditions/${gi}/${ci}/a`]);
190
+ if (c.b !== undefined)
191
+ sources.push([c.b, `${m.pointer}/filter/conditions/${gi}/${ci}/b`]);
192
+ }));
193
+ for (const [value, base] of sources) {
194
+ for (const [s, pointer] of strings(value, base)) {
195
+ if (!s.includes('{{'))
196
+ continue;
197
+ const scanned = scanTemplate(s);
198
+ for (const e of scanned.errors) {
199
+ add({ code: 'EXPRESSION_UNTERMINATED', severity: 'unsupported', message: `Module ${m.id}: ${e.message} (Make's handling of this is unknown)`, pointer });
200
+ }
201
+ for (const x of scanned.exprs) {
202
+ try {
203
+ parseExpression(x.text, x.start + 2);
204
+ }
205
+ catch (e) {
206
+ // Not "invalid": Make accepts a scenario with an expression it cannot read and
207
+ // only fails when it runs (corpus NOTES, D2 safety), so the file is still valid.
208
+ if (e instanceof ExprSyntaxError)
209
+ add({ code: 'EXPRESSION_SYNTAX', severity: 'unsupported', message: `Module ${m.id}: {{${x.text.length > 120 ? `${x.text.slice(0, 120)}…` : x.text}}}: bpr cannot read this (${e.message} at character ${e.offset + 1}); how Make reads it has not been recorded`, pointer });
210
+ else if (e instanceof UnsupportedError)
211
+ add({ code: 'EXPRESSION_UNSUPPORTED', severity: 'unsupported', message: `Module ${m.id}: {{${x.text}}}: ${e.message}`, pointer });
212
+ else
213
+ throw e;
214
+ }
215
+ report.expressions.push({ moduleId: m.id, pointer, text: x.text, refs: x.refs, functions: x.functions, keywords: x.keywords, bareWords: x.bareWords });
216
+ for (const f of x.functions)
217
+ fnCounts.set(f, (fnCounts.get(f) ?? 0) + 1);
218
+ for (const k of x.keywords) {
219
+ if (!(k in KEYWORDS))
220
+ add({ code: 'KEYWORD_UNSUPPORTED', severity: 'unsupported', message: `Module ${m.id}: keyword "${k}" has no recorded Make behavior yet`, pointer });
221
+ else if (k === 'now') {
222
+ // Recorded only in a module's mapping, where it is the time the module starts (N-01).
223
+ if (pointer.includes('/filter/') || m.module === 'util:TextAggregator') {
224
+ add({ code: 'KEYWORD_UNSUPPORTED', severity: 'unsupported', message: `Module ${m.id}: "now" in a ${m.module === 'util:TextAggregator' ? 'Text aggregator' : 'filter'} has not been observed in Make (only in a module's mapping)`, pointer });
225
+ }
226
+ else
227
+ report.needsClock = true;
228
+ }
229
+ }
230
+ for (const r of x.refs) {
231
+ if (!byId.has(r.moduleId)) {
232
+ add({ code: 'REF_UNKNOWN_MODULE', severity: 'unsupported', message: `Module ${m.id} references {{${r.moduleId}.${r.path}}}, but there is no module ${r.moduleId} (left over from a deleted module?); what Make reads there has not been recorded`, pointer });
233
+ }
234
+ else if (!m.upstream.includes(r.moduleId)) {
235
+ add({ code: 'REF_NOT_UPSTREAM', severity: 'unsupported', message: `Module ${m.id} references module ${r.moduleId}, which does not run before it on this path; what Make reads there has not been recorded`, pointer });
236
+ }
237
+ }
238
+ }
239
+ }
240
+ }
241
+ }
242
+ report.functions = [...fnCounts].sort().map(([name, count]) => ({ name, count, supported: name in FUNCTIONS }));
243
+ for (const f of report.functions) {
244
+ if (!f.supported)
245
+ add({ code: 'FUNCTION_UNSUPPORTED', severity: 'unsupported', message: `Function ${f.name}() is used ${f.count}× and has no recorded Make behavior yet` });
246
+ }
247
+ report.filterOperators = [...opCounts].sort().map(([operator, count]) => ({ operator, count, supported: operator in FILTER_OPERATORS }));
248
+ }
249
+ if (findings.some((f) => f.severity === 'error')) {
250
+ report.verdict = 'invalid';
251
+ report.exitCode = EXIT.invalidInput;
252
+ }
253
+ else if (findings.some((f) => f.severity === 'unsupported')) {
254
+ report.verdict = 'unsupported';
255
+ report.exitCode = EXIT.unsupported;
256
+ }
257
+ return report;
258
+ }
259
+ export function renderInspect(r) {
260
+ const out = [];
261
+ const short = (h) => (h ? h.slice(0, 12) : '-');
262
+ out.push(`${r.file}`);
263
+ out.push(` format ${r.format} ${r.bytes} bytes sha256 ${short(r.sha256)} semantic ${short(r.semanticHash)}`);
264
+ if (r.name)
265
+ out.push(` name ${r.name}`);
266
+ if (r.modules.length) {
267
+ out.push('', ` modules (${r.modules.length})`);
268
+ const w = Math.max(...r.modules.map((m) => `${m.module} v${m.version}`.length));
269
+ for (const m of r.modules) {
270
+ const mod = `${m.module} v${m.version}`.padEnd(w);
271
+ const extra = [
272
+ m.routeCount !== undefined ? `${m.routeCount} routes${m.elseRoute !== undefined ? `, fallback = route ${m.elseRoute + 1}` : ''}` : '',
273
+ m.filter ? `filter${m.filter.label ? ` "${m.filter.label}"` : ''}: ${m.filter.operators.join(', ') || 'none'}` : '',
274
+ ].filter(Boolean);
275
+ out.push(` ${m.supported ? 'ok ' : 'NO '} ${String(m.id).padStart(3)} ${mod} ${m.where}${extra.length ? ` [${extra.join('; ')}]` : ''}`);
276
+ }
277
+ }
278
+ if (r.expressions.length) {
279
+ out.push('', ` expressions (${r.expressions.length})`);
280
+ const shown = r.expressions.slice(0, 25);
281
+ for (const e of shown) {
282
+ const text = e.text.length > 70 ? `${e.text.slice(0, 67)}...` : e.text;
283
+ out.push(` ${String(e.moduleId).padStart(3)} {{${text}}}`);
284
+ }
285
+ if (r.expressions.length > shown.length)
286
+ out.push(` ... ${r.expressions.length - shown.length} more (use --json for all)`);
287
+ const bare = [...new Set(r.expressions.flatMap((e) => e.bareWords))];
288
+ if (bare.length)
289
+ out.push(` bare words (not strings in Make; check these): ${bare.join(', ')}`);
290
+ }
291
+ if (r.functions.length)
292
+ out.push('', ` functions ${r.functions.map((f) => `${f.supported ? '' : '!'}${f.name}×${f.count}`).join(' ')}`);
293
+ if (r.filterOperators.length)
294
+ out.push(` operators ${r.filterOperators.map((o) => `${o.supported ? '' : '!'}${o.operator}×${o.count}`).join(' ')}`);
295
+ if (r.findings.length) {
296
+ out.push('', ` findings (${r.findings.length})`);
297
+ for (const f of r.findings) {
298
+ const where = f.loc ? ` (line ${f.loc.line}:${f.loc.column})` : '';
299
+ out.push(` ${f.severity.padEnd(11)} ${f.code}${where}`);
300
+ out.push(` ${f.message}`);
301
+ }
302
+ }
303
+ const verdictText = {
304
+ eligible: r.fixtures.length
305
+ ? `ELIGIBLE WITH FIXTURES: runs offline once ${r.fixtures.length} module${r.fixtures.length > 1 ? 's get fixtures' : ' gets a fixture'} (${r.fixtures.map((f) => `${f.moduleId} ${f.mode}`).join(', ')}); everything else has recorded Make behavior`
306
+ : 'ELIGIBLE: every module, operator and function here has recorded Make behavior',
307
+ unsupported: 'NOT YET SUPPORTED: uses things without recorded Make behavior (see findings)',
308
+ invalid: 'INVALID: the file has errors (see findings)',
309
+ }[r.verdict];
310
+ out.push('', ` ${verdictText}`);
311
+ return out.join('\n');
312
+ }
313
+ //# sourceMappingURL=inspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/inspect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,225 @@
1
+ export class JsonParseError extends Error {
2
+ code;
3
+ loc;
4
+ pointer;
5
+ constructor(code, message, loc, pointer) {
6
+ super(message);
7
+ this.name = 'JsonParseError';
8
+ this.code = code;
9
+ this.loc = loc;
10
+ this.pointer = pointer;
11
+ }
12
+ }
13
+ export function escapePointerToken(token) {
14
+ return String(token).replaceAll('~', '~0').replaceAll('/', '~1');
15
+ }
16
+ /**
17
+ * Strict RFC 8259 JSON parser. Unlike JSON.parse it rejects duplicate object keys
18
+ * (JSON.parse silently keeps the last one), enforces a nesting limit, and records
19
+ * where each value starts so findings can point at a line and column.
20
+ *
21
+ * Numbers become IEEE-754 doubles, which matches what Make's webhook parser was
22
+ * observed to do (corpus C-16: 9007199254740993 arrived as 9007199254740992).
23
+ */
24
+ export function parseJson(text, maxDepth) {
25
+ const lineStarts = [0];
26
+ for (let i = 0; i < text.length; i++)
27
+ if (text.charCodeAt(i) === 10)
28
+ lineStarts.push(i + 1);
29
+ const locate = (offset) => {
30
+ let lo = 0;
31
+ let hi = lineStarts.length - 1;
32
+ while (lo < hi) {
33
+ const mid = (lo + hi + 1) >> 1;
34
+ if (lineStarts[mid] <= offset)
35
+ lo = mid;
36
+ else
37
+ hi = mid - 1;
38
+ }
39
+ return { line: lo + 1, column: offset - lineStarts[lo] + 1, offset };
40
+ };
41
+ const offsets = new Map();
42
+ let pos = text.charCodeAt(0) === 0xfeff ? 1 : 0;
43
+ const fail = (code, message, at = pos, pointer) => {
44
+ throw new JsonParseError(code, message, locate(at), pointer);
45
+ };
46
+ const skipWs = () => {
47
+ while (pos < text.length) {
48
+ const c = text.charCodeAt(pos);
49
+ if (c === 32 || c === 9 || c === 10 || c === 13)
50
+ pos++;
51
+ else
52
+ break;
53
+ }
54
+ };
55
+ const describe = (at) => (at >= text.length ? 'end of input' : JSON.stringify(text[at]));
56
+ const parseString = () => {
57
+ const start = pos;
58
+ pos++; // opening quote
59
+ let out = '';
60
+ let chunk = pos;
61
+ while (true) {
62
+ if (pos >= text.length)
63
+ fail('JSON_UNTERMINATED_STRING', 'Unterminated string', start);
64
+ const c = text.charCodeAt(pos);
65
+ if (c === 34) {
66
+ out += text.slice(chunk, pos);
67
+ pos++;
68
+ return out;
69
+ }
70
+ if (c < 0x20)
71
+ fail('JSON_CONTROL_CHAR', 'Unescaped control character in string');
72
+ if (c === 92) {
73
+ out += text.slice(chunk, pos);
74
+ const e = text[pos + 1];
75
+ switch (e) {
76
+ case '"':
77
+ out += '"';
78
+ break;
79
+ case '\\':
80
+ out += '\\';
81
+ break;
82
+ case '/':
83
+ out += '/';
84
+ break;
85
+ case 'b':
86
+ out += '\b';
87
+ break;
88
+ case 'f':
89
+ out += '\f';
90
+ break;
91
+ case 'n':
92
+ out += '\n';
93
+ break;
94
+ case 'r':
95
+ out += '\r';
96
+ break;
97
+ case 't':
98
+ out += '\t';
99
+ break;
100
+ case 'u': {
101
+ const hex = text.slice(pos + 2, pos + 6);
102
+ if (!/^[0-9a-fA-F]{4}$/.test(hex))
103
+ fail('JSON_BAD_ESCAPE', 'Invalid \\u escape');
104
+ out += String.fromCharCode(parseInt(hex, 16));
105
+ pos += 4;
106
+ break;
107
+ }
108
+ default:
109
+ fail('JSON_BAD_ESCAPE', `Invalid escape \\${e ?? ''}`);
110
+ }
111
+ pos += 2;
112
+ chunk = pos;
113
+ continue;
114
+ }
115
+ pos++;
116
+ }
117
+ };
118
+ const NUMBER = /-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/y;
119
+ const parseValue = (pointer, depth) => {
120
+ skipWs();
121
+ offsets.set(pointer, pos);
122
+ const c = text[pos];
123
+ if (c === '{' || c === '[') {
124
+ if (depth >= maxDepth)
125
+ fail('JSON_TOO_DEEP', `Nesting deeper than ${maxDepth} levels`, pos, pointer);
126
+ }
127
+ if (c === '{') {
128
+ pos++;
129
+ const obj = Object.create(null);
130
+ const seen = new Set();
131
+ skipWs();
132
+ if (text[pos] === '}') {
133
+ pos++;
134
+ return obj;
135
+ }
136
+ while (true) {
137
+ skipWs();
138
+ if (text[pos] !== '"')
139
+ fail('JSON_SYNTAX', `Expected a property name, found ${describe(pos)}`);
140
+ const keyAt = pos;
141
+ const key = parseString();
142
+ const child = `${pointer}/${escapePointerToken(key)}`;
143
+ if (seen.has(key)) {
144
+ fail('JSON_DUPLICATE_KEY', `Duplicate key ${JSON.stringify(key)}; JSON.parse would silently keep the last one`, keyAt, child);
145
+ }
146
+ seen.add(key);
147
+ skipWs();
148
+ if (text[pos] !== ':')
149
+ fail('JSON_SYNTAX', `Expected ":" after property name, found ${describe(pos)}`);
150
+ pos++;
151
+ obj[key] = parseValue(child, depth + 1);
152
+ skipWs();
153
+ if (text[pos] === ',') {
154
+ pos++;
155
+ continue;
156
+ }
157
+ if (text[pos] === '}') {
158
+ pos++;
159
+ return obj;
160
+ }
161
+ fail('JSON_SYNTAX', `Expected "," or "}", found ${describe(pos)}`);
162
+ }
163
+ }
164
+ if (c === '[') {
165
+ pos++;
166
+ const arr = [];
167
+ skipWs();
168
+ if (text[pos] === ']') {
169
+ pos++;
170
+ return arr;
171
+ }
172
+ while (true) {
173
+ arr.push(parseValue(`${pointer}/${arr.length}`, depth + 1));
174
+ skipWs();
175
+ if (text[pos] === ',') {
176
+ pos++;
177
+ continue;
178
+ }
179
+ if (text[pos] === ']') {
180
+ pos++;
181
+ return arr;
182
+ }
183
+ fail('JSON_SYNTAX', `Expected "," or "]", found ${describe(pos)}`);
184
+ }
185
+ }
186
+ if (c === '"')
187
+ return parseString();
188
+ if (text.startsWith('true', pos)) {
189
+ pos += 4;
190
+ return true;
191
+ }
192
+ if (text.startsWith('false', pos)) {
193
+ pos += 5;
194
+ return false;
195
+ }
196
+ if (text.startsWith('null', pos)) {
197
+ pos += 4;
198
+ return null;
199
+ }
200
+ NUMBER.lastIndex = pos;
201
+ const m = NUMBER.exec(text);
202
+ if (m) {
203
+ pos += m[0].length;
204
+ return Number(m[0]);
205
+ }
206
+ return fail('JSON_SYNTAX', `Unexpected ${describe(pos)}`);
207
+ };
208
+ const value = parseValue('', 0);
209
+ skipWs();
210
+ if (pos < text.length)
211
+ fail('JSON_SYNTAX', `Unexpected ${describe(pos)} after the document`);
212
+ return {
213
+ value,
214
+ offsets,
215
+ locate,
216
+ locatePointer(pointer) {
217
+ const at = offsets.get(pointer);
218
+ return at === undefined ? undefined : locate(at);
219
+ },
220
+ };
221
+ }
222
+ export function isObject(v) {
223
+ return typeof v === 'object' && v !== null && !Array.isArray(v);
224
+ }
225
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/json/parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * What this runtime has real Make evidence for. An entry exists only when the
3
+ * behavior was observed in a real Make run captured in corpus/ (see
4
+ * corpus/NOTES.md). Anything else is reported as unsupported; there is no
5
+ * best-effort fallback (spec BR-010).
6
+ *
7
+ * "evidence" names the corpus cases that exercised the item.
8
+ */
9
+ import { FUNCTIONS as ENGINE_FUNCTIONS } from './expr/functions.js';
10
+ import { OPERATORS as ENGINE_OPERATORS } from './run/operators.js';
11
+ export const MODULES = {
12
+ 'gateway:CustomWebHook': { versions: [1], role: 'trigger', evidence: 'A-001, B-*, C-*, D-*' },
13
+ 'gateway:WebhookRespond': { versions: [1], role: 'responder', evidence: 'A-001, C-*, D-*' },
14
+ 'util:SetVariable2': { versions: [1], role: 'action', evidence: 'A-001, B-*, C-*' },
15
+ 'builtin:BasicRouter': { versions: [1], role: 'router', evidence: 'B-01..B-16' },
16
+ 'builtin:BasicFeeder': { versions: [1], role: 'iterator', evidence: 'C-01..C-16' },
17
+ 'util:TextAggregator': { versions: [1], role: 'aggregator', evidence: 'C-01..C-16, C2-*' },
18
+ 'http:ActionSendData': { versions: [3], role: 'http', fixture: 'http', evidence: 'E-*' },
19
+ 'util:BasicTrigger': { versions: [1], role: 'trigger', evidence: 'T-01..T-08' },
20
+ 'util:FunctionSleep': { versions: [1], role: 'action', evidence: 'N-01' },
21
+ };
22
+ /** Filter operators the scheduler implements (src/run/operators.ts), each matched against recorded Make runs. */
23
+ export const FILTER_OPERATORS = Object.fromEntries(Object.keys(ENGINE_OPERATORS).map((o) => [o, 'corpus B, C, F']));
24
+ /**
25
+ * Functions the expression engine implements. Each one was replayed against real Make
26
+ * output by the scenario D conformance tests (test/conformance-d.test.ts).
27
+ */
28
+ export const FUNCTIONS = Object.fromEntries(Object.keys(ENGINE_FUNCTIONS).map((f) => [f, 'D-01..D-06 replay']));
29
+ /** Bare keywords whose value was observed in a real Make run. */
30
+ export const KEYWORDS = {
31
+ true: 'D-01..D-06',
32
+ false: 'D-01..D-06',
33
+ emptystring: 'D-01..D-06',
34
+ space: 'D-01..D-06',
35
+ now: 'D3, N-01 (needs a clock: environment.now)',
36
+ };
37
+ /** Keys a module object may carry in an exported blueprint. Others are reported. */
38
+ export const KNOWN_MODULE_KEYS = new Set(['id', 'module', 'version', 'parameters', 'mapper', 'metadata', 'filter', 'routes', 'onerror']);
39
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAUnE,MAAM,CAAC,MAAM,OAAO,GAA4C;IAC9D,uBAAuB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,sBAAsB,EAAE;IAC7F,wBAAwB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE;IAC3F,mBAAmB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE;IACnF,qBAAqB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE;IAChF,qBAAqB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE;IAClF,qBAAqB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE;IAC1F,qBAAqB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IACxF,mBAAmB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE;IAC/E,oBAAoB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE;CAC1E,CAAC;AAEF,iHAAiH;AACjH,MAAM,CAAC,MAAM,gBAAgB,GAAqC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAEtJ;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAqC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAElJ,iEAAiE;AACjE,MAAM,CAAC,MAAM,QAAQ,GAAqC;IACxD,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,YAAY;IACzB,KAAK,EAAE,YAAY;IACnB,GAAG,EAAE,2CAA2C;CACjD,CAAC;AAEF,oFAAoF;AACpF,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC"}