@specverse/engines 6.21.4 → 6.27.10
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/ai/analyse-runner.d.ts +16 -0
- package/dist/ai/analyse-runner.d.ts.map +1 -1
- package/dist/ai/analyse-runner.js +417 -53
- package/dist/ai/analyse-runner.js.map +1 -1
- package/dist/ai/microcall-orchestrator.d.ts +187 -0
- package/dist/ai/microcall-orchestrator.d.ts.map +1 -0
- package/dist/ai/microcall-orchestrator.js +673 -0
- package/dist/ai/microcall-orchestrator.js.map +1 -0
- package/dist/ai/skeleton-emitter.d.ts +94 -0
- package/dist/ai/skeleton-emitter.d.ts.map +1 -0
- package/dist/ai/skeleton-emitter.js +752 -0
- package/dist/ai/skeleton-emitter.js.map +1 -0
- package/dist/analyse-prepass/adapters/express-routes.d.ts +71 -0
- package/dist/analyse-prepass/adapters/express-routes.d.ts.map +1 -0
- package/dist/analyse-prepass/adapters/express-routes.js +329 -0
- package/dist/analyse-prepass/adapters/express-routes.js.map +1 -0
- package/dist/analyse-prepass/adapters/typescript-interfaces.d.ts +91 -0
- package/dist/analyse-prepass/adapters/typescript-interfaces.d.ts.map +1 -0
- package/dist/analyse-prepass/adapters/typescript-interfaces.js +411 -0
- package/dist/analyse-prepass/adapters/typescript-interfaces.js.map +1 -0
- package/dist/analyse-prepass/backends/gitnexus.d.ts.map +1 -1
- package/dist/analyse-prepass/backends/gitnexus.js +36 -8
- package/dist/analyse-prepass/backends/gitnexus.js.map +1 -1
- package/dist/analyse-prepass/backends/index.d.ts.map +1 -1
- package/dist/analyse-prepass/backends/index.js +3 -5
- package/dist/analyse-prepass/backends/index.js.map +1 -1
- package/dist/analyse-prepass/behavior-step-classifier.d.ts +3 -0
- package/dist/analyse-prepass/behavior-step-classifier.d.ts.map +1 -1
- package/dist/analyse-prepass/behavior-step-classifier.js +1 -0
- package/dist/analyse-prepass/behavior-step-classifier.js.map +1 -1
- package/dist/analyse-prepass/index.d.ts +69 -0
- package/dist/analyse-prepass/index.d.ts.map +1 -1
- package/dist/analyse-prepass/index.js +319 -37
- package/dist/analyse-prepass/index.js.map +1 -1
- package/dist/analyse-prepass/method-body-walker.d.ts +4 -0
- package/dist/analyse-prepass/method-body-walker.d.ts.map +1 -1
- package/dist/analyse-prepass/method-body-walker.js +14 -0
- package/dist/analyse-prepass/method-body-walker.js.map +1 -1
- package/dist/audit/realize-recorder.d.ts +164 -0
- package/dist/audit/realize-recorder.d.ts.map +1 -0
- package/dist/audit/realize-recorder.js +153 -0
- package/dist/audit/realize-recorder.js.map +1 -0
- package/dist/audit/verify-checks.d.ts +32 -0
- package/dist/audit/verify-checks.d.ts.map +1 -0
- package/dist/audit/verify-checks.js +202 -0
- package/dist/audit/verify-checks.js.map +1 -0
- package/dist/audit/verify-recorder.d.ts +84 -0
- package/dist/audit/verify-recorder.d.ts.map +1 -0
- package/dist/audit/verify-recorder.js +90 -0
- package/dist/audit/verify-recorder.js.map +1 -0
- package/dist/inference/core/specly-converter.d.ts.map +1 -1
- package/dist/inference/core/specly-converter.js +67 -36
- package/dist/inference/core/specly-converter.js.map +1 -1
- package/dist/libs/instance-factories/services/templates/_shared/step-matching.js +39 -15
- package/dist/realize/index.d.ts.map +1 -1
- package/dist/realize/index.js +63 -0
- package/dist/realize/index.js.map +1 -1
- package/libs/instance-factories/services/templates/_shared/step-matching.ts +61 -16
- package/package.json +1 -1
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural-check library for the verify stage. Each check is a
|
|
3
|
+
* (parsedSpec) -> StructuralCheckResult function. Checks are SpecVerse-
|
|
4
|
+
* semantic invariants that go beyond schema validation: things that
|
|
5
|
+
* are syntactically valid YAML matching the JSON schema, but
|
|
6
|
+
* semantically odd (e.g. an action with no steps and no cured shorthand).
|
|
7
|
+
*
|
|
8
|
+
* Design: each check is pure, fast, and reads only the parsed spec.
|
|
9
|
+
* No filesystem I/O, no LLM calls.
|
|
10
|
+
*
|
|
11
|
+
* Adding a new check:
|
|
12
|
+
* 1. Define the check function below
|
|
13
|
+
* 2. Add it to ALL_CHECKS at the bottom
|
|
14
|
+
* 3. Add a unit test in __tests__/verify-checks.test.ts
|
|
15
|
+
*/
|
|
16
|
+
function* iterateActions(spec) {
|
|
17
|
+
const components = spec.components || {};
|
|
18
|
+
for (const [componentName, comp] of Object.entries(components)) {
|
|
19
|
+
for (const ownerKind of ['controllers', 'services']) {
|
|
20
|
+
const owners = comp[ownerKind] || {};
|
|
21
|
+
for (const [ownerName, owner] of Object.entries(owners)) {
|
|
22
|
+
const actions = owner.actions || {};
|
|
23
|
+
for (const [actionName, action] of Object.entries(actions)) {
|
|
24
|
+
yield {
|
|
25
|
+
componentName,
|
|
26
|
+
ownerName,
|
|
27
|
+
ownerKind: ownerKind === 'controllers' ? 'controller' : 'service',
|
|
28
|
+
actionName,
|
|
29
|
+
action,
|
|
30
|
+
path: `components.${componentName}.${ownerKind}.${ownerName}.actions.${actionName}`,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function* iterateModels(spec) {
|
|
38
|
+
const components = spec.components || {};
|
|
39
|
+
for (const [componentName, comp] of Object.entries(components)) {
|
|
40
|
+
const models = comp.models || {};
|
|
41
|
+
for (const [modelName, model] of Object.entries(models)) {
|
|
42
|
+
yield {
|
|
43
|
+
componentName,
|
|
44
|
+
modelName,
|
|
45
|
+
model,
|
|
46
|
+
path: `components.${componentName}.models.${modelName}`,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/** Each action either declares step bullets or is shorthand-mapped via cured. */
|
|
52
|
+
export function checkActionsHaveStepsOrCured(spec) {
|
|
53
|
+
const violations = [];
|
|
54
|
+
for (const { action, path } of iterateActions(spec)) {
|
|
55
|
+
const hasSteps = Array.isArray(action.steps) && action.steps.length > 0;
|
|
56
|
+
const hasCured = action.cured && typeof action.cured === 'object';
|
|
57
|
+
const hasInline = typeof action.implementation === 'string' || action.body;
|
|
58
|
+
if (!hasSteps && !hasCured && !hasInline) {
|
|
59
|
+
violations.push({ path, issue: 'action declares no steps, cured shorthand, or inline body' });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
name: 'every-action-has-steps-or-cured',
|
|
64
|
+
description: 'Each action declares either an explicit steps list or a cured shorthand or an inline body.',
|
|
65
|
+
ok: violations.length === 0,
|
|
66
|
+
violations,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/** Every model has at least one attribute marked as primary key (id, isPrimary, or auto). */
|
|
70
|
+
export function checkModelsHavePrimaryKey(spec) {
|
|
71
|
+
const violations = [];
|
|
72
|
+
for (const { model, path, modelName } of iterateModels(spec)) {
|
|
73
|
+
const attrs = model.attributes || {};
|
|
74
|
+
let hasPk = false;
|
|
75
|
+
for (const [attrName, attrSpec] of Object.entries(attrs)) {
|
|
76
|
+
// Primary if name is 'id' OR attrSpec contains 'isPrimary' OR 'auto=' modifier.
|
|
77
|
+
const text = typeof attrSpec === 'string' ? attrSpec : (attrSpec?.modifiers?.join?.(' ') ?? '');
|
|
78
|
+
if (attrName === 'id') {
|
|
79
|
+
hasPk = true;
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
if (/\bisPrimary\b/.test(text)) {
|
|
83
|
+
hasPk = true;
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
if (/\bauto\s*=\s*(uuid|nanoid|cuid|increment)/.test(text)) {
|
|
87
|
+
hasPk = true;
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// Composite-key shape (`keys: [a, b]` on the model itself).
|
|
92
|
+
if (!hasPk && Array.isArray(model.keys) && model.keys.length > 0)
|
|
93
|
+
hasPk = true;
|
|
94
|
+
if (!hasPk) {
|
|
95
|
+
violations.push({ path, issue: `model ${modelName} has no detectable primary key` });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
name: 'every-model-has-primary-key',
|
|
100
|
+
description: 'Every model declares a primary key (id attribute, isPrimary modifier, auto-id, or composite keys).',
|
|
101
|
+
ok: violations.length === 0,
|
|
102
|
+
violations,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/** Every emit references a declared event. */
|
|
106
|
+
export function checkEmitsReferenceDeclaredEvents(spec) {
|
|
107
|
+
const violations = [];
|
|
108
|
+
// Build the set of declared event names from `events:` blocks across components.
|
|
109
|
+
const declaredEvents = new Set();
|
|
110
|
+
const components = spec.components || {};
|
|
111
|
+
for (const comp of Object.values(components)) {
|
|
112
|
+
const events = comp.events || {};
|
|
113
|
+
for (const eventName of Object.keys(events))
|
|
114
|
+
declaredEvents.add(eventName);
|
|
115
|
+
}
|
|
116
|
+
// Top-level events: block too (some specs declare globally).
|
|
117
|
+
for (const eventName of Object.keys(spec.events || {}))
|
|
118
|
+
declaredEvents.add(eventName);
|
|
119
|
+
for (const { action, path } of iterateActions(spec)) {
|
|
120
|
+
const emits = action.emits || action.publishes || [];
|
|
121
|
+
if (!Array.isArray(emits))
|
|
122
|
+
continue;
|
|
123
|
+
for (const emit of emits) {
|
|
124
|
+
const eventName = typeof emit === 'string' ? emit : emit?.event ?? emit?.name;
|
|
125
|
+
if (!eventName)
|
|
126
|
+
continue;
|
|
127
|
+
// Strip any qualifier prefix (e.g. 'on.UserCreated' -> 'UserCreated').
|
|
128
|
+
const cleanName = eventName.replace(/^[a-z]+\./, '');
|
|
129
|
+
if (!declaredEvents.has(cleanName)) {
|
|
130
|
+
violations.push({
|
|
131
|
+
path: `${path}.emits`,
|
|
132
|
+
issue: `event '${cleanName}' is emitted but not declared in any events: block`,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
name: 'every-emit-references-declared-event',
|
|
139
|
+
description: 'Every action that emits an event references a declared event in events: blocks.',
|
|
140
|
+
ok: violations.length === 0,
|
|
141
|
+
violations,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/** No two model declarations with the same name across components (collision risk at realize). */
|
|
145
|
+
export function checkNoDuplicateModelNames(spec) {
|
|
146
|
+
const violations = [];
|
|
147
|
+
const seen = new Map();
|
|
148
|
+
for (const { componentName, modelName, path } of iterateModels(spec)) {
|
|
149
|
+
if (!seen.has(modelName))
|
|
150
|
+
seen.set(modelName, []);
|
|
151
|
+
seen.get(modelName).push(componentName);
|
|
152
|
+
}
|
|
153
|
+
for (const [modelName, components] of seen.entries()) {
|
|
154
|
+
if (components.length > 1) {
|
|
155
|
+
violations.push({
|
|
156
|
+
path: `models.${modelName}`,
|
|
157
|
+
issue: `model '${modelName}' declared in multiple components: ${components.join(', ')}`,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
name: 'no-duplicate-model-names',
|
|
163
|
+
description: 'No model name is declared in more than one component.',
|
|
164
|
+
ok: violations.length === 0,
|
|
165
|
+
violations,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
/** Every action has at least one step bullet OR explicit cured shorthand. Also checks step bullets are non-empty strings. */
|
|
169
|
+
export function checkStepBulletsWellFormed(spec) {
|
|
170
|
+
const violations = [];
|
|
171
|
+
for (const { action, path } of iterateActions(spec)) {
|
|
172
|
+
const steps = Array.isArray(action.steps) ? action.steps : [];
|
|
173
|
+
for (let i = 0; i < steps.length; i++) {
|
|
174
|
+
const s = steps[i];
|
|
175
|
+
const text = typeof s === 'string' ? s : s?.step;
|
|
176
|
+
if (typeof text !== 'string' || text.trim() === '') {
|
|
177
|
+
violations.push({ path: `${path}.steps[${i}]`, issue: 'step bullet is empty or non-string' });
|
|
178
|
+
}
|
|
179
|
+
else if (text.length > 250) {
|
|
180
|
+
violations.push({ path: `${path}.steps[${i}]`, issue: `step bullet is unusually long (${text.length} chars) — likely should be split into multiple steps` });
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
name: 'step-bullets-well-formed',
|
|
186
|
+
description: 'Each step bullet is a non-empty string of reasonable length (<250 chars).',
|
|
187
|
+
ok: violations.length === 0,
|
|
188
|
+
violations,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
export const ALL_CHECKS = [
|
|
192
|
+
checkActionsHaveStepsOrCured,
|
|
193
|
+
checkModelsHavePrimaryKey,
|
|
194
|
+
checkEmitsReferenceDeclaredEvents,
|
|
195
|
+
checkNoDuplicateModelNames,
|
|
196
|
+
checkStepBulletsWellFormed,
|
|
197
|
+
];
|
|
198
|
+
/** Run every check against the parsed spec and return all results. */
|
|
199
|
+
export function runAllChecks(spec) {
|
|
200
|
+
return ALL_CHECKS.map((check) => check(spec));
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=verify-checks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-checks.js","sourceRoot":"","sources":["../../src/audit/verify-checks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verify-phase audit recorder. Captures schema-validation passes,
|
|
3
|
+
* structural-check results, and retry events at the moments they happen
|
|
4
|
+
* during analyse-runner execution.
|
|
5
|
+
*
|
|
6
|
+
* Forward-logging discipline (engines 6.22.x+): validation results are
|
|
7
|
+
* recorded by the runValidate wrapper at the moment of validation;
|
|
8
|
+
* structural-check results are recorded by the check pass after each
|
|
9
|
+
* successful schema validation; retry events are recorded by the retry
|
|
10
|
+
* loop when it triggers. No backward inference.
|
|
11
|
+
*
|
|
12
|
+
* Sidecars produced (by analyse-runner at end of run):
|
|
13
|
+
* - verify/invariants.json: each check + result + items requiring review
|
|
14
|
+
* - verify/retries.json: retry events with error categories and deltas
|
|
15
|
+
*/
|
|
16
|
+
export interface ValidationPass {
|
|
17
|
+
/** Sequence ordinal across validate calls in this run. */
|
|
18
|
+
ordinal: number;
|
|
19
|
+
/** What kind of validation. schema-validation = spv-validate; infer = spv infer; structural = invariant library. */
|
|
20
|
+
kind: 'schema-validation' | 'infer' | 'structural';
|
|
21
|
+
ok: boolean;
|
|
22
|
+
errorCount: number;
|
|
23
|
+
errors: string[];
|
|
24
|
+
/** Optional: timing in ms. */
|
|
25
|
+
durationMs?: number;
|
|
26
|
+
}
|
|
27
|
+
export interface StructuralCheckResult {
|
|
28
|
+
name: string;
|
|
29
|
+
description: string;
|
|
30
|
+
ok: boolean;
|
|
31
|
+
violations: Array<{
|
|
32
|
+
path: string;
|
|
33
|
+
issue: string;
|
|
34
|
+
}>;
|
|
35
|
+
}
|
|
36
|
+
export interface HumanReviewItem {
|
|
37
|
+
severity: 'error' | 'warning' | 'info';
|
|
38
|
+
kind: string;
|
|
39
|
+
path?: string;
|
|
40
|
+
message: string;
|
|
41
|
+
}
|
|
42
|
+
export interface RetryEvent {
|
|
43
|
+
ordinal: number;
|
|
44
|
+
trigger: string;
|
|
45
|
+
errorCount: number;
|
|
46
|
+
errorCategories: Record<string, number>;
|
|
47
|
+
tokenCountIn?: number;
|
|
48
|
+
tokenCountOut?: number;
|
|
49
|
+
latencyMs?: number;
|
|
50
|
+
/** A short summary of the diff between before/after. Full diff lives in
|
|
51
|
+
* the retry's prompt + draft files, not in this sidecar. */
|
|
52
|
+
itemsChangedSummary?: string;
|
|
53
|
+
ok: boolean;
|
|
54
|
+
}
|
|
55
|
+
export interface VerifyInvariantsDocument {
|
|
56
|
+
schemaVersion: '1.0';
|
|
57
|
+
stage: 'verify';
|
|
58
|
+
passes: ValidationPass[];
|
|
59
|
+
structuralChecks: StructuralCheckResult[];
|
|
60
|
+
humanReviewItems: HumanReviewItem[];
|
|
61
|
+
}
|
|
62
|
+
export interface VerifyRetriesDocument {
|
|
63
|
+
schemaVersion: '1.0';
|
|
64
|
+
stage: 'verify';
|
|
65
|
+
retries: RetryEvent[];
|
|
66
|
+
}
|
|
67
|
+
export declare class InMemoryVerifyRecorder {
|
|
68
|
+
private passes;
|
|
69
|
+
private structuralChecks;
|
|
70
|
+
private humanReviewItems;
|
|
71
|
+
private retries;
|
|
72
|
+
private nextPassOrdinal;
|
|
73
|
+
private nextRetryOrdinal;
|
|
74
|
+
recordPass(args: Omit<ValidationPass, 'ordinal'>): ValidationPass;
|
|
75
|
+
recordStructuralCheck(check: StructuralCheckResult): void;
|
|
76
|
+
recordHumanReviewItem(item: HumanReviewItem): void;
|
|
77
|
+
recordRetry(args: Omit<RetryEvent, 'ordinal'>): RetryEvent;
|
|
78
|
+
buildInvariants(): VerifyInvariantsDocument;
|
|
79
|
+
buildRetries(): VerifyRetriesDocument;
|
|
80
|
+
}
|
|
81
|
+
/** Categorise a validation error string by pattern match. Used for
|
|
82
|
+
* retry-event analytics. */
|
|
83
|
+
export declare function categoriseValidationError(errorText: string): Record<string, number>;
|
|
84
|
+
//# sourceMappingURL=verify-recorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-recorder.d.ts","sourceRoot":"","sources":["../../src/audit/verify-recorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,oHAAoH;IACpH,IAAI,EAAE,mBAAmB,GAAG,OAAO,GAAG,YAAY,CAAC;IACnD,EAAE,EAAE,OAAO,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,8BAA8B;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;iEAC6D;IAC7D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,EAAE,EAAE,OAAO,CAAC;CACb;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,KAAK,CAAC;IACrB,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,gBAAgB,EAAE,qBAAqB,EAAE,CAAC;IAC1C,gBAAgB,EAAE,eAAe,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,KAAK,CAAC;IACrB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,gBAAgB,CAAK;IAE7B,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,GAAG,cAAc;IAMjE,qBAAqB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI;IAazD,qBAAqB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAIlD,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,UAAU;IAM1D,eAAe,IAAI,wBAAwB;IAU3C,YAAY,IAAI,qBAAqB;CAOtC;AAED;6BAC6B;AAC7B,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAenF"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verify-phase audit recorder. Captures schema-validation passes,
|
|
3
|
+
* structural-check results, and retry events at the moments they happen
|
|
4
|
+
* during analyse-runner execution.
|
|
5
|
+
*
|
|
6
|
+
* Forward-logging discipline (engines 6.22.x+): validation results are
|
|
7
|
+
* recorded by the runValidate wrapper at the moment of validation;
|
|
8
|
+
* structural-check results are recorded by the check pass after each
|
|
9
|
+
* successful schema validation; retry events are recorded by the retry
|
|
10
|
+
* loop when it triggers. No backward inference.
|
|
11
|
+
*
|
|
12
|
+
* Sidecars produced (by analyse-runner at end of run):
|
|
13
|
+
* - verify/invariants.json: each check + result + items requiring review
|
|
14
|
+
* - verify/retries.json: retry events with error categories and deltas
|
|
15
|
+
*/
|
|
16
|
+
export class InMemoryVerifyRecorder {
|
|
17
|
+
passes = [];
|
|
18
|
+
structuralChecks = [];
|
|
19
|
+
humanReviewItems = [];
|
|
20
|
+
retries = [];
|
|
21
|
+
nextPassOrdinal = 1;
|
|
22
|
+
nextRetryOrdinal = 1;
|
|
23
|
+
recordPass(args) {
|
|
24
|
+
const pass = { ordinal: this.nextPassOrdinal++, ...args };
|
|
25
|
+
this.passes.push(pass);
|
|
26
|
+
return pass;
|
|
27
|
+
}
|
|
28
|
+
recordStructuralCheck(check) {
|
|
29
|
+
this.structuralChecks.push(check);
|
|
30
|
+
// Promote violations to human-review items for visibility.
|
|
31
|
+
for (const v of check.violations) {
|
|
32
|
+
this.humanReviewItems.push({
|
|
33
|
+
severity: check.ok ? 'info' : 'warning',
|
|
34
|
+
kind: check.name,
|
|
35
|
+
path: v.path,
|
|
36
|
+
message: v.issue,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
recordHumanReviewItem(item) {
|
|
41
|
+
this.humanReviewItems.push(item);
|
|
42
|
+
}
|
|
43
|
+
recordRetry(args) {
|
|
44
|
+
const r = { ordinal: this.nextRetryOrdinal++, ...args };
|
|
45
|
+
this.retries.push(r);
|
|
46
|
+
return r;
|
|
47
|
+
}
|
|
48
|
+
buildInvariants() {
|
|
49
|
+
return {
|
|
50
|
+
schemaVersion: '1.0',
|
|
51
|
+
stage: 'verify',
|
|
52
|
+
passes: this.passes,
|
|
53
|
+
structuralChecks: this.structuralChecks,
|
|
54
|
+
humanReviewItems: this.humanReviewItems,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
buildRetries() {
|
|
58
|
+
return {
|
|
59
|
+
schemaVersion: '1.0',
|
|
60
|
+
stage: 'verify',
|
|
61
|
+
retries: this.retries,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** Categorise a validation error string by pattern match. Used for
|
|
66
|
+
* retry-event analytics. */
|
|
67
|
+
export function categoriseValidationError(errorText) {
|
|
68
|
+
const categories = {};
|
|
69
|
+
const lines = errorText.split('\n').filter((l) => l.trim());
|
|
70
|
+
for (const line of lines) {
|
|
71
|
+
let cat = 'other';
|
|
72
|
+
if (/Unknown property/i.test(line))
|
|
73
|
+
cat = 'unknown-property';
|
|
74
|
+
else if (/must have required property/i.test(line))
|
|
75
|
+
cat = 'missing-required';
|
|
76
|
+
else if (/must be string|must be number|must be boolean/i.test(line))
|
|
77
|
+
cat = 'wrong-type';
|
|
78
|
+
else if (/must match pattern/i.test(line))
|
|
79
|
+
cat = 'pattern-mismatch';
|
|
80
|
+
else if (/must match a schema in anyOf|must match exactly one schema in oneOf/i.test(line))
|
|
81
|
+
cat = 'schema-shape-mismatch';
|
|
82
|
+
else if (/must be equal to one of/i.test(line))
|
|
83
|
+
cat = 'enum-violation';
|
|
84
|
+
else if (/realize:|name collision/i.test(line))
|
|
85
|
+
cat = 'realize-collision';
|
|
86
|
+
categories[cat] = (categories[cat] ?? 0) + 1;
|
|
87
|
+
}
|
|
88
|
+
return categories;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=verify-recorder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-recorder.js","sourceRoot":"","sources":["../../src/audit/verify-recorder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specly-converter.d.ts","sourceRoot":"","sources":["../../../src/inference/core/specly-converter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"specly-converter.d.ts","sourceRoot":"","sources":["../../../src/inference/core/specly-converter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAmDlD,qBAAa,eAAe;IAE1B;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM;IA2G3E;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAkB7B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAuBjC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAuBpC,OAAO,CAAC,MAAM,CAAC,YAAY;IAyK3B,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAgChC,OAAO,CAAC,MAAM,CAAC,aAAa;IAyF5B,OAAO,CAAC,MAAM,CAAC,cAAc;IA4B7B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAwC/B,OAAO,CAAC,MAAM,CAAC,YAAY;IAoB3B,OAAO,CAAC,MAAM,CAAC,WAAW;IAmL1B,OAAO,CAAC,MAAM,CAAC,WAAW;IAgC1B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAkBjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAgB9B,OAAO,CAAC,MAAM,CAAC,cAAc;IAgD7B,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAkBlC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAyCpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;CAiC/B"}
|