@qontinui/shared-types 0.6.0 → 0.8.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/ui-bridge-ir.d.cts +47 -1
- package/dist/ui-bridge-ir.d.ts +47 -1
- package/package.json +1 -1
- package/src/generated/ActionResponse.d.ts +19 -0
- package/src/generated/ApiStyle.d.ts +11 -0
- package/src/generated/ArchitectureProfile.d.ts +25 -0
- package/src/generated/AssumptionEntry.d.ts +32 -0
- package/src/generated/AuthModel.d.ts +24 -0
- package/src/generated/AuthRole.d.ts +20 -0
- package/src/generated/BackendProfile.d.ts +33 -0
- package/src/generated/CompletenessVerdict.d.ts +85 -0
- package/src/generated/CoverageGap.d.ts +30 -0
- package/src/generated/EnforcementProfile.d.ts +23 -0
- package/src/generated/Entity.d.ts +30 -0
- package/src/generated/EntityField.d.ts +29 -0
- package/src/generated/FunctionalSpec.d.ts +76 -0
- package/src/generated/GapReason.d.ts +12 -0
- package/src/generated/IrPageSpec.d.ts +6 -0
- package/src/generated/LoopPhase.d.ts +3 -0
- package/src/generated/Operation.d.ts +37 -0
- package/src/generated/OperationEffect.d.ts +24 -0
- package/src/generated/OperationInput.d.ts +25 -0
- package/src/generated/Profile.d.ts +37 -0
- package/src/generated/ProvenanceMix.d.ts +18 -0
- package/src/generated/Relationship.d.ts +26 -0
- package/src/generated/SectionVerdict.d.ts +35 -0
- package/src/generated/SpecProvenance.d.ts +21 -0
- package/src/generated/SpecSection.d.ts +11 -0
- package/src/generated/SpecTarget.d.ts +21 -0
- package/src/generated/UiBridgeHttpErrorEnvelope.d.ts +47 -0
- package/src/generated/UiBridgeHttpHealthAppInfo.d.ts +36 -0
- package/src/generated/UiBridgeHttpHealthData.d.ts +30 -0
- package/src/generated/UiBridgeHttpHealthEnvelope.d.ts +44 -0
- package/src/generated/ValidationRule.d.ts +22 -0
- package/src/generated/index.ts +28 -0
- package/src/ui-bridge-ir/document.ts +35 -0
package/dist/ui-bridge-ir.d.cts
CHANGED
|
@@ -477,7 +477,53 @@ interface IRDocument {
|
|
|
477
477
|
synthesizedGroups?: IRGroup[];
|
|
478
478
|
/** ID of the initial/starting state, if applicable. */
|
|
479
479
|
initialState?: string;
|
|
480
|
+
/** Per-page API-contract assertions evaluated by the Spec CI harness. */
|
|
481
|
+
apiAssertions?: IRApiCheck[];
|
|
480
482
|
}
|
|
483
|
+
/**
|
|
484
|
+
* A single API-contract check: issue a request, validate the response.
|
|
485
|
+
*/
|
|
486
|
+
interface IRApiCheck {
|
|
487
|
+
id: string;
|
|
488
|
+
description?: string;
|
|
489
|
+
request: {
|
|
490
|
+
method: string;
|
|
491
|
+
path: string;
|
|
492
|
+
headers?: Record<string, string>;
|
|
493
|
+
body?: unknown;
|
|
494
|
+
};
|
|
495
|
+
effect?: "read" | "write" | "destructive";
|
|
496
|
+
assertions: IRApiAssertion[];
|
|
497
|
+
}
|
|
498
|
+
/**
|
|
499
|
+
* API assertion: either a value-level assertion (status_code, json_path, etc.)
|
|
500
|
+
* or a schema-conformance assertion (conforms_to -- Phase 2 placeholder).
|
|
501
|
+
*/
|
|
502
|
+
type IRApiAssertion = {
|
|
503
|
+
type: "status_code";
|
|
504
|
+
expected: unknown;
|
|
505
|
+
operator?: string;
|
|
506
|
+
} | {
|
|
507
|
+
type: "json_path";
|
|
508
|
+
jsonPath: string;
|
|
509
|
+
expected: unknown;
|
|
510
|
+
operator?: string;
|
|
511
|
+
} | {
|
|
512
|
+
type: "header";
|
|
513
|
+
headerName: string;
|
|
514
|
+
expected: unknown;
|
|
515
|
+
operator?: string;
|
|
516
|
+
} | {
|
|
517
|
+
type: "body_contains";
|
|
518
|
+
expected: unknown;
|
|
519
|
+
} | {
|
|
520
|
+
type: "response_time";
|
|
521
|
+
expected: unknown;
|
|
522
|
+
operator?: string;
|
|
523
|
+
} | {
|
|
524
|
+
type: "conforms_to";
|
|
525
|
+
schema: string;
|
|
526
|
+
};
|
|
481
527
|
|
|
482
528
|
/**
|
|
483
529
|
* IR -> WorkflowConfig adapter.
|
|
@@ -978,4 +1024,4 @@ interface ProjectLegacyToIROptions {
|
|
|
978
1024
|
*/
|
|
979
1025
|
declare function projectLegacyToIR(legacy: LegacySpec, opts?: ProjectLegacyToIROptions): IRDocument;
|
|
980
1026
|
|
|
981
|
-
export { type AdaptedState, type AdaptedTransition, type AdaptedTransitionAction, type AdaptedWaitAfter, type AdaptedWorkflowConfig, type IRAcceptDriftPolicy, type IRAssertion, type IRAssertionTarget, type IRCrossRef, type IRDocument, type IREffect, type IRElementCriteria, type IRGroup, type IRMetadata, type IRPairingAxis, type IRPairingPolicy, type IRProvenance, type IRState, type IRStateCondition, type IRTransition, type IRTransitionAction, type IRVersion, type IRVisualRef, type IRWaitSpec, type LegacyAssertion, type LegacyAssertionTarget, type LegacyCriteria, type LegacyGroup, type LegacyMetadata, type LegacyProcessStep, type LegacySpec, type LegacyStateMachine, type LegacyStateMachineState, type LegacyTransition, type ProjectLegacyToIROptions, adaptIRDocumentToWorkflowConfig, adaptIRState, adaptIRTransition, adaptIRTransitionAction, projectIRToBundledPage, projectLegacyToIR, projectionVersion };
|
|
1027
|
+
export { type AdaptedState, type AdaptedTransition, type AdaptedTransitionAction, type AdaptedWaitAfter, type AdaptedWorkflowConfig, type IRAcceptDriftPolicy, type IRApiAssertion, type IRApiCheck, type IRAssertion, type IRAssertionTarget, type IRCrossRef, type IRDocument, type IREffect, type IRElementCriteria, type IRGroup, type IRMetadata, type IRPairingAxis, type IRPairingPolicy, type IRProvenance, type IRState, type IRStateCondition, type IRTransition, type IRTransitionAction, type IRVersion, type IRVisualRef, type IRWaitSpec, type LegacyAssertion, type LegacyAssertionTarget, type LegacyCriteria, type LegacyGroup, type LegacyMetadata, type LegacyProcessStep, type LegacySpec, type LegacyStateMachine, type LegacyStateMachineState, type LegacyTransition, type ProjectLegacyToIROptions, adaptIRDocumentToWorkflowConfig, adaptIRState, adaptIRTransition, adaptIRTransitionAction, projectIRToBundledPage, projectLegacyToIR, projectionVersion };
|
package/dist/ui-bridge-ir.d.ts
CHANGED
|
@@ -477,7 +477,53 @@ interface IRDocument {
|
|
|
477
477
|
synthesizedGroups?: IRGroup[];
|
|
478
478
|
/** ID of the initial/starting state, if applicable. */
|
|
479
479
|
initialState?: string;
|
|
480
|
+
/** Per-page API-contract assertions evaluated by the Spec CI harness. */
|
|
481
|
+
apiAssertions?: IRApiCheck[];
|
|
480
482
|
}
|
|
483
|
+
/**
|
|
484
|
+
* A single API-contract check: issue a request, validate the response.
|
|
485
|
+
*/
|
|
486
|
+
interface IRApiCheck {
|
|
487
|
+
id: string;
|
|
488
|
+
description?: string;
|
|
489
|
+
request: {
|
|
490
|
+
method: string;
|
|
491
|
+
path: string;
|
|
492
|
+
headers?: Record<string, string>;
|
|
493
|
+
body?: unknown;
|
|
494
|
+
};
|
|
495
|
+
effect?: "read" | "write" | "destructive";
|
|
496
|
+
assertions: IRApiAssertion[];
|
|
497
|
+
}
|
|
498
|
+
/**
|
|
499
|
+
* API assertion: either a value-level assertion (status_code, json_path, etc.)
|
|
500
|
+
* or a schema-conformance assertion (conforms_to -- Phase 2 placeholder).
|
|
501
|
+
*/
|
|
502
|
+
type IRApiAssertion = {
|
|
503
|
+
type: "status_code";
|
|
504
|
+
expected: unknown;
|
|
505
|
+
operator?: string;
|
|
506
|
+
} | {
|
|
507
|
+
type: "json_path";
|
|
508
|
+
jsonPath: string;
|
|
509
|
+
expected: unknown;
|
|
510
|
+
operator?: string;
|
|
511
|
+
} | {
|
|
512
|
+
type: "header";
|
|
513
|
+
headerName: string;
|
|
514
|
+
expected: unknown;
|
|
515
|
+
operator?: string;
|
|
516
|
+
} | {
|
|
517
|
+
type: "body_contains";
|
|
518
|
+
expected: unknown;
|
|
519
|
+
} | {
|
|
520
|
+
type: "response_time";
|
|
521
|
+
expected: unknown;
|
|
522
|
+
operator?: string;
|
|
523
|
+
} | {
|
|
524
|
+
type: "conforms_to";
|
|
525
|
+
schema: string;
|
|
526
|
+
};
|
|
481
527
|
|
|
482
528
|
/**
|
|
483
529
|
* IR -> WorkflowConfig adapter.
|
|
@@ -978,4 +1024,4 @@ interface ProjectLegacyToIROptions {
|
|
|
978
1024
|
*/
|
|
979
1025
|
declare function projectLegacyToIR(legacy: LegacySpec, opts?: ProjectLegacyToIROptions): IRDocument;
|
|
980
1026
|
|
|
981
|
-
export { type AdaptedState, type AdaptedTransition, type AdaptedTransitionAction, type AdaptedWaitAfter, type AdaptedWorkflowConfig, type IRAcceptDriftPolicy, type IRAssertion, type IRAssertionTarget, type IRCrossRef, type IRDocument, type IREffect, type IRElementCriteria, type IRGroup, type IRMetadata, type IRPairingAxis, type IRPairingPolicy, type IRProvenance, type IRState, type IRStateCondition, type IRTransition, type IRTransitionAction, type IRVersion, type IRVisualRef, type IRWaitSpec, type LegacyAssertion, type LegacyAssertionTarget, type LegacyCriteria, type LegacyGroup, type LegacyMetadata, type LegacyProcessStep, type LegacySpec, type LegacyStateMachine, type LegacyStateMachineState, type LegacyTransition, type ProjectLegacyToIROptions, adaptIRDocumentToWorkflowConfig, adaptIRState, adaptIRTransition, adaptIRTransitionAction, projectIRToBundledPage, projectLegacyToIR, projectionVersion };
|
|
1027
|
+
export { type AdaptedState, type AdaptedTransition, type AdaptedTransitionAction, type AdaptedWaitAfter, type AdaptedWorkflowConfig, type IRAcceptDriftPolicy, type IRApiAssertion, type IRApiCheck, type IRAssertion, type IRAssertionTarget, type IRCrossRef, type IRDocument, type IREffect, type IRElementCriteria, type IRGroup, type IRMetadata, type IRPairingAxis, type IRPairingPolicy, type IRProvenance, type IRState, type IRStateCondition, type IRTransition, type IRTransitionAction, type IRVersion, type IRVisualRef, type IRWaitSpec, type LegacyAssertion, type LegacyAssertionTarget, type LegacyCriteria, type LegacyGroup, type LegacyMetadata, type LegacyProcessStep, type LegacySpec, type LegacyStateMachine, type LegacyStateMachineState, type LegacyTransition, type ProjectLegacyToIROptions, adaptIRDocumentToWorkflowConfig, adaptIRState, adaptIRTransition, adaptIRTransitionAction, projectIRToBundledPage, projectLegacyToIR, projectionVersion };
|
package/package.json
CHANGED
|
@@ -16,6 +16,25 @@ export interface ActionResponse {
|
|
|
16
16
|
* Time taken to execute the action in milliseconds.
|
|
17
17
|
*/
|
|
18
18
|
durationMs: number;
|
|
19
|
+
/**
|
|
20
|
+
* D3 effect-calculus verification: the predicted-vs-observed outcome for
|
|
21
|
+
* this action, present only when a handler effect signature resolved for
|
|
22
|
+
* the `(action, element)` (opt-in; absent otherwise).
|
|
23
|
+
*
|
|
24
|
+
* Carried as an opaque JSON object on the wire, deliberately matching the
|
|
25
|
+
* established lean-wire / rich-SDK split (the SDK's `EffectVerification`
|
|
26
|
+
* has a richer shape than any consumer needs to type). The runner
|
|
27
|
+
* deserializes the sub-shape it asserts on (`outcome` / `cause` /
|
|
28
|
+
* `containment` / `durationMs`) with its own local struct in the
|
|
29
|
+
* `effect_check` step handler, and relays the rest into `result_json`. See
|
|
30
|
+
* `ui-bridge/.../control/effect-types.ts` for the SDK-side producer. Kept
|
|
31
|
+
* opaque here so the nested effect types need no top-level codegen
|
|
32
|
+
* registration (which would couple this crate's bindings to a runner
|
|
33
|
+
* `schema_export.rs` change).
|
|
34
|
+
*/
|
|
35
|
+
effectVerification?: {
|
|
36
|
+
[k: string]: unknown;
|
|
37
|
+
};
|
|
19
38
|
/**
|
|
20
39
|
* Updated element state after the action (if applicable).
|
|
21
40
|
*/
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* API style the generated backend exposes.
|
|
10
|
+
*/
|
|
11
|
+
export type ApiStyle = "rest" | "graphql";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Architectural shape + testing bar the generators must hold to.
|
|
10
|
+
*/
|
|
11
|
+
export interface ArchitectureProfile {
|
|
12
|
+
/**
|
|
13
|
+
* Minimum line/branch coverage percentage the generated tests must reach.
|
|
14
|
+
*/
|
|
15
|
+
minCoveragePct?: number | null;
|
|
16
|
+
/**
|
|
17
|
+
* e.g. `"layered"`, `"hexagonal"`, `"mvc"`.
|
|
18
|
+
*/
|
|
19
|
+
pattern: string;
|
|
20
|
+
/**
|
|
21
|
+
* e.g. `"unit"`, `"unit+integration"`, `"unit+integration+e2e"`.
|
|
22
|
+
*/
|
|
23
|
+
testingBar?: string | null;
|
|
24
|
+
[k: string]: unknown;
|
|
25
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* One collated assumption — a node whose provenance is `Assumed`. The operator
|
|
10
|
+
* reviews/overrides these directly (v0 override surface = a file edit of this
|
|
11
|
+
* ledger).
|
|
12
|
+
*/
|
|
13
|
+
export interface AssumptionEntry {
|
|
14
|
+
/**
|
|
15
|
+
* The best-practice default the generator applied.
|
|
16
|
+
*/
|
|
17
|
+
defaultApplied: string;
|
|
18
|
+
/**
|
|
19
|
+
* Optional free-form operator note (e.g. an override rationale).
|
|
20
|
+
*/
|
|
21
|
+
note?: string | null;
|
|
22
|
+
/**
|
|
23
|
+
* Whether the operator may override this fill. Defaults to `true`.
|
|
24
|
+
*/
|
|
25
|
+
overridable: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Dotted ref into the spec the assumption belongs to, e.g.
|
|
28
|
+
* `"operations.createInvoice.effect"`.
|
|
29
|
+
*/
|
|
30
|
+
ref: string;
|
|
31
|
+
[k: string]: unknown;
|
|
32
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { AuthRole } from './AuthRole';
|
|
9
|
+
import type { SpecProvenance } from './SpecProvenance';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The auth / permission model inferred from login flows + gated routes.
|
|
13
|
+
*/
|
|
14
|
+
export interface AuthModel {
|
|
15
|
+
confidence: SpecProvenance;
|
|
16
|
+
credibility?: number | null;
|
|
17
|
+
/**
|
|
18
|
+
* `"none"`, `"session"`, `"jwt"`, `"oauth"`, `"basic"`, …
|
|
19
|
+
*/
|
|
20
|
+
model: string;
|
|
21
|
+
provenance?: string | null;
|
|
22
|
+
roles?: AuthRole[];
|
|
23
|
+
[k: string]: unknown;
|
|
24
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { SpecProvenance } from './SpecProvenance';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* A role surfaced by the auth model (e.g. inferred from nav items only some
|
|
12
|
+
* sessions see).
|
|
13
|
+
*/
|
|
14
|
+
export interface AuthRole {
|
|
15
|
+
confidence: SpecProvenance;
|
|
16
|
+
credibility?: number | null;
|
|
17
|
+
name: string;
|
|
18
|
+
provenance?: string | null;
|
|
19
|
+
[k: string]: unknown;
|
|
20
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { ApiStyle } from './ApiStyle';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Target backend stack.
|
|
12
|
+
*/
|
|
13
|
+
export interface BackendProfile {
|
|
14
|
+
apiStyle: ApiStyle;
|
|
15
|
+
/**
|
|
16
|
+
* Backend auth strategy (e.g. `"jwt"`, `"session"`). Free-form; `None` lets
|
|
17
|
+
* the generator default from the spec's observed [`crate::functional_spec::AuthModel`].
|
|
18
|
+
*/
|
|
19
|
+
auth?: string | null;
|
|
20
|
+
/**
|
|
21
|
+
* e.g. `"postgres"`, `"sqlite"`, `"mongodb"`.
|
|
22
|
+
*/
|
|
23
|
+
datastore: string;
|
|
24
|
+
/**
|
|
25
|
+
* e.g. `"fastapi"`, `"express"`, `"axum"`.
|
|
26
|
+
*/
|
|
27
|
+
framework: string;
|
|
28
|
+
/**
|
|
29
|
+
* e.g. `"python"`, `"typescript"`, `"rust"`, `"go"`.
|
|
30
|
+
*/
|
|
31
|
+
language: string;
|
|
32
|
+
[k: string]: unknown;
|
|
33
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { AssertionMiss } from './AssertionMiss';
|
|
9
|
+
import type { AssertionOutcome } from './AssertionOutcome';
|
|
10
|
+
import type { AssertionResult } from './AssertionResult';
|
|
11
|
+
import type { AssertionSeverityCounts } from './AssertionSeverityCounts';
|
|
12
|
+
import type { BridgeFingerprint } from './BridgeFingerprint';
|
|
13
|
+
import type { CandidateMiss } from './CandidateMiss';
|
|
14
|
+
import type { CoverageGap } from './CoverageGap';
|
|
15
|
+
import type { FieldDiff } from './FieldDiff';
|
|
16
|
+
import type { GapReason } from './GapReason';
|
|
17
|
+
import type { MatchOutcome } from './MatchOutcome';
|
|
18
|
+
import type { MatchedElement } from './MatchedElement';
|
|
19
|
+
import type { MissReason } from './MissReason';
|
|
20
|
+
import type { ProvenanceMix } from './ProvenanceMix';
|
|
21
|
+
import type { RecommendedState } from './RecommendedState';
|
|
22
|
+
import type { SectionVerdict } from './SectionVerdict';
|
|
23
|
+
import type { SpecCheckConfidence } from './SpecCheckConfidence';
|
|
24
|
+
import type { SpecCheckResult } from './SpecCheckResult';
|
|
25
|
+
import type { SpecCheckSummary } from './SpecCheckSummary';
|
|
26
|
+
import type { SpecProvenance } from './SpecProvenance';
|
|
27
|
+
import type { SpecSection } from './SpecSection';
|
|
28
|
+
import type { StateMatchResult } from './StateMatchResult';
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* The output of the test-phase verify subtask: how completely a generated
|
|
32
|
+
* app+backend covers the source-observed Functional Spec.
|
|
33
|
+
*
|
|
34
|
+
* Serializes as an A2A `DataPart` in `completion_reports.artifacts`. Durable,
|
|
35
|
+
* fully re-derivable — the reconciler re-reads it each tick.
|
|
36
|
+
*
|
|
37
|
+
* Does not derive `PartialEq`: the embedded [`crate::spec_check::SpecCheckResult`]
|
|
38
|
+
* does not implement it. Compare verdicts by their serialized JSON when needed.
|
|
39
|
+
*/
|
|
40
|
+
export interface CompletenessVerdict {
|
|
41
|
+
/**
|
|
42
|
+
* Fraction of `Assumed` nodes the generator filled ∈ [0,1] — reported
|
|
43
|
+
* **separately**, never folded into `coverage`.
|
|
44
|
+
*/
|
|
45
|
+
assumedFillRate: number;
|
|
46
|
+
/**
|
|
47
|
+
* Overall coverage ∈ [0,1] of `Observed` + `Inferred` nodes confirmed
|
|
48
|
+
* present-and-behaving. The headline number. (Shared `DriftVerdict` key.)
|
|
49
|
+
*/
|
|
50
|
+
coverage: number;
|
|
51
|
+
/**
|
|
52
|
+
* Mean credibility of `Inferred` nodes ∈ [0,1]. (Shared `DriftVerdict` key.)
|
|
53
|
+
*/
|
|
54
|
+
credibility: number;
|
|
55
|
+
/**
|
|
56
|
+
* ISO-8601 UTC timestamp the verdict was computed.
|
|
57
|
+
*/
|
|
58
|
+
evaluatedAt: string;
|
|
59
|
+
/**
|
|
60
|
+
* The gap work-list — uncovered `Observed`/`Inferred` nodes the reconciler
|
|
61
|
+
* re-dispatches generation for.
|
|
62
|
+
*/
|
|
63
|
+
gaps?: CoverageGap[];
|
|
64
|
+
provenanceMix: ProvenanceMix;
|
|
65
|
+
/**
|
|
66
|
+
* Per-section breakdown.
|
|
67
|
+
*/
|
|
68
|
+
sections?: SectionVerdict[];
|
|
69
|
+
/**
|
|
70
|
+
* The `spec_version` of the [`crate::functional_spec::FunctionalSpec`] this
|
|
71
|
+
* verdict scores.
|
|
72
|
+
*/
|
|
73
|
+
specVersion: string;
|
|
74
|
+
/**
|
|
75
|
+
* Freshness of the binding observation when answered from a cached fallback;
|
|
76
|
+
* `None` on a fresh live answer. (Shared `DriftVerdict` key.)
|
|
77
|
+
*/
|
|
78
|
+
stalenessSeconds?: number | null;
|
|
79
|
+
/**
|
|
80
|
+
* Embedded Spec-Check result for the `ui_states` / `navigation` dimension —
|
|
81
|
+
* reused, not recomputed. `None` when the UI dimension was not evaluated.
|
|
82
|
+
*/
|
|
83
|
+
uiStatesSpecCheck?: SpecCheckResult | null;
|
|
84
|
+
[k: string]: unknown;
|
|
85
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { GapReason } from './GapReason';
|
|
9
|
+
import type { SpecProvenance } from './SpecProvenance';
|
|
10
|
+
import type { SpecSection } from './SpecSection';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* One uncovered `Observed`/`Inferred` node — a work-list item the orchestration
|
|
14
|
+
* reconciler re-dispatches generation for.
|
|
15
|
+
*/
|
|
16
|
+
export interface CoverageGap {
|
|
17
|
+
/**
|
|
18
|
+
* Free-form diagnostic detail (e.g. the verifier's near-miss explanation).
|
|
19
|
+
*/
|
|
20
|
+
detail?: string | null;
|
|
21
|
+
nodeProvenance: SpecProvenance;
|
|
22
|
+
reason: GapReason;
|
|
23
|
+
/**
|
|
24
|
+
* Dotted ref into the spec, e.g. `"entities.Invoice.fields.amount"` or
|
|
25
|
+
* `"operations.createInvoice"`.
|
|
26
|
+
*/
|
|
27
|
+
ref: string;
|
|
28
|
+
section: SpecSection;
|
|
29
|
+
[k: string]: unknown;
|
|
30
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* How the generation loop enforces quality — names existing claude-config skills
|
|
10
|
+
* to run and which of them are hard blockers.
|
|
11
|
+
*/
|
|
12
|
+
export interface EnforcementProfile {
|
|
13
|
+
/**
|
|
14
|
+
* Which categories block the loop on failure (e.g. `["security"]`). A skill
|
|
15
|
+
* in `run` but not `block_on` is advisory.
|
|
16
|
+
*/
|
|
17
|
+
blockOn?: string[];
|
|
18
|
+
/**
|
|
19
|
+
* Skills to run on generated code (e.g. `["code-reviewer", "security-scan"]`).
|
|
20
|
+
*/
|
|
21
|
+
run?: string[];
|
|
22
|
+
[k: string]: unknown;
|
|
23
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { EntityField } from './EntityField';
|
|
9
|
+
import type { Relationship } from './Relationship';
|
|
10
|
+
import type { SpecProvenance } from './SpecProvenance';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* A domain entity inferred from rendered data shapes.
|
|
14
|
+
*/
|
|
15
|
+
export interface Entity {
|
|
16
|
+
confidence: SpecProvenance;
|
|
17
|
+
/**
|
|
18
|
+
* Optional deduction strength ∈ [0,1]. Present only on `Inferred` nodes;
|
|
19
|
+
* meaningless (and omitted) on `Observed` / `Assumed`.
|
|
20
|
+
*/
|
|
21
|
+
credibility?: number | null;
|
|
22
|
+
fields?: EntityField[];
|
|
23
|
+
name: string;
|
|
24
|
+
/**
|
|
25
|
+
* Free-form evidence string (e.g. `"detail view + list view both render it"`).
|
|
26
|
+
*/
|
|
27
|
+
provenance?: string | null;
|
|
28
|
+
relationships?: Relationship[];
|
|
29
|
+
[k: string]: unknown;
|
|
30
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { SpecProvenance } from './SpecProvenance';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* A field of an [`Entity`].
|
|
12
|
+
*/
|
|
13
|
+
export interface EntityField {
|
|
14
|
+
confidence: SpecProvenance;
|
|
15
|
+
credibility?: number | null;
|
|
16
|
+
name: string;
|
|
17
|
+
provenance?: string | null;
|
|
18
|
+
/**
|
|
19
|
+
* Coarse semantic type: `"string"`, `"money"`, `"enum"`, `"date"`,
|
|
20
|
+
* `"bool"`, `"number"`, `"reference"`, … Free-form so comprehension can
|
|
21
|
+
* introduce new types without a schema bump.
|
|
22
|
+
*/
|
|
23
|
+
type: string;
|
|
24
|
+
/**
|
|
25
|
+
* Enumerated values when `field_type == "enum"`.
|
|
26
|
+
*/
|
|
27
|
+
values?: string[];
|
|
28
|
+
[k: string]: unknown;
|
|
29
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { AssumptionEntry } from './AssumptionEntry';
|
|
9
|
+
import type { AuthModel } from './AuthModel';
|
|
10
|
+
import type { AuthRole } from './AuthRole';
|
|
11
|
+
import type { Entity } from './Entity';
|
|
12
|
+
import type { EntityField } from './EntityField';
|
|
13
|
+
import type { IrAssertion } from './IrAssertion';
|
|
14
|
+
import type { IrAssertionTarget } from './IrAssertionTarget';
|
|
15
|
+
import type { IrCrossRef } from './IrCrossRef';
|
|
16
|
+
import type { IrElementCriteria } from './IrElementCriteria';
|
|
17
|
+
import type { IrMetadata } from './IrMetadata';
|
|
18
|
+
import type { IrProvenance } from './IrProvenance';
|
|
19
|
+
import type { IrState } from './IrState';
|
|
20
|
+
import type { IrStateCondition } from './IrStateCondition';
|
|
21
|
+
import type { IrTransition } from './IrTransition';
|
|
22
|
+
import type { IrTransitionAction } from './IrTransitionAction';
|
|
23
|
+
import type { IrWaitSpec } from './IrWaitSpec';
|
|
24
|
+
import type { Operation } from './Operation';
|
|
25
|
+
import type { OperationEffect } from './OperationEffect';
|
|
26
|
+
import type { OperationInput } from './OperationInput';
|
|
27
|
+
import type { ProposalStatus } from './ProposalStatus';
|
|
28
|
+
import type { Relationship } from './Relationship';
|
|
29
|
+
import type { SpecProvenance } from './SpecProvenance';
|
|
30
|
+
import type { SpecTarget } from './SpecTarget';
|
|
31
|
+
import type { ValidationRule } from './ValidationRule';
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The v0 Functional Spec. Five sections, each node confidence- and
|
|
35
|
+
* provenance-tagged. Serializes as an A2A `DataPart` inside a worker's
|
|
36
|
+
* `completion_reports.artifacts`; it is the durable, fully re-derivable
|
|
37
|
+
* hand-off artifact between conductor ticks (orchestration handoff contract §6).
|
|
38
|
+
*/
|
|
39
|
+
export interface FunctionalSpec {
|
|
40
|
+
/**
|
|
41
|
+
* Section (5) ASSUMPTIONS LEDGER — every node with provenance `Assumed`, collated so
|
|
42
|
+
* the operator can review/override the generator's best-practice fills. For
|
|
43
|
+
* v0 the override surface is a direct edit of this ledger (`overridable`).
|
|
44
|
+
*/
|
|
45
|
+
assumptions?: AssumptionEntry[];
|
|
46
|
+
/**
|
|
47
|
+
* Section (4) AUTH / PERMISSION MODEL — from login flows + gated routes.
|
|
48
|
+
*/
|
|
49
|
+
auth?: AuthModel | null;
|
|
50
|
+
/**
|
|
51
|
+
* Section (1) DOMAIN — entities + relationships inferred from rendered data shapes.
|
|
52
|
+
*/
|
|
53
|
+
entities?: Entity[];
|
|
54
|
+
/**
|
|
55
|
+
* Section (3b) NAVIGATION — the exact `crate::ir::IrTransition` values
|
|
56
|
+
* `IrPageSpec.transitions` carries. Reused (not re-declared) so app-gen's
|
|
57
|
+
* emitted IR re-parses to the identical spec subset.
|
|
58
|
+
*/
|
|
59
|
+
navigation?: IrTransition[];
|
|
60
|
+
/**
|
|
61
|
+
* Section (2) CAPABILITIES — operations the frontend exposes. Existence is
|
|
62
|
+
* high-confidence; server-side effect is low-confidence by construction.
|
|
63
|
+
*/
|
|
64
|
+
operations?: Operation[];
|
|
65
|
+
/**
|
|
66
|
+
* Schema version. Currently always `"0"`. Additive-only until `"1"`.
|
|
67
|
+
*/
|
|
68
|
+
specVersion: string;
|
|
69
|
+
target: SpecTarget;
|
|
70
|
+
/**
|
|
71
|
+
* Section (3a) UI STATES — a literal superset of the UI Bridge IR. These are the
|
|
72
|
+
* exact `crate::ir::IrState` values `IrPageSpec.states` carries.
|
|
73
|
+
*/
|
|
74
|
+
uiStates?: IrState[];
|
|
75
|
+
[k: string]: unknown;
|
|
76
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Why an `Observed`/`Inferred` node is not covered in the generated app.
|
|
10
|
+
* (`Assumed` nodes never produce a gap — they are reported via the fill rate.)
|
|
11
|
+
*/
|
|
12
|
+
export type GapReason = "not_generated" | "behavior_mismatch" | "unverifiable";
|
|
@@ -27,6 +27,12 @@ import type { ProposalStatus } from './ProposalStatus';
|
|
|
27
27
|
* surface — the projection layer derives the runtime `LegacySpec` from this.
|
|
28
28
|
*/
|
|
29
29
|
export interface IrPageSpec {
|
|
30
|
+
/**
|
|
31
|
+
* Per-page API-contract assertions evaluated by the Spec CI harness.
|
|
32
|
+
* Phase 1: value-level assertions (status_code, json_path, header,
|
|
33
|
+
* body_contains, response_time). Phase 2 will add schema conformance.
|
|
34
|
+
*/
|
|
35
|
+
apiAssertions?: IrApiCheck[] | null;
|
|
30
36
|
description?: string | null;
|
|
31
37
|
id: string;
|
|
32
38
|
initialState?: string | null;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { OperationEffect } from './OperationEffect';
|
|
9
|
+
import type { OperationInput } from './OperationInput';
|
|
10
|
+
import type { SpecProvenance } from './SpecProvenance';
|
|
11
|
+
import type { ValidationRule } from './ValidationRule';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* An operation the frontend exposes. Existence (`confidence`) is typically
|
|
15
|
+
* `Observed`; the server-side [`OperationEffect`] is `Assumed` by construction
|
|
16
|
+
* (the frontend cannot reveal what persists server-side).
|
|
17
|
+
*/
|
|
18
|
+
export interface Operation {
|
|
19
|
+
confidence: SpecProvenance;
|
|
20
|
+
credibility?: number | null;
|
|
21
|
+
/**
|
|
22
|
+
* The (largely assumed) server-side effect.
|
|
23
|
+
*/
|
|
24
|
+
effect?: OperationEffect | null;
|
|
25
|
+
/**
|
|
26
|
+
* Target entity, when the operation acts on one.
|
|
27
|
+
*/
|
|
28
|
+
entity?: string | null;
|
|
29
|
+
inputs?: OperationInput[];
|
|
30
|
+
name: string;
|
|
31
|
+
provenance?: string | null;
|
|
32
|
+
/**
|
|
33
|
+
* `"create"`, `"read"`, `"update"`, `"delete"`, `"custom"`.
|
|
34
|
+
*/
|
|
35
|
+
verb: string;
|
|
36
|
+
[k: string]: unknown;
|
|
37
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { SpecProvenance } from './SpecProvenance';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The server-side effect of an [`Operation`]. `Assumed` by construction; the
|
|
12
|
+
* `assumption` field records the best-practice default the generator applied.
|
|
13
|
+
*/
|
|
14
|
+
export interface OperationEffect {
|
|
15
|
+
/**
|
|
16
|
+
* The best-practice default applied when `confidence == Assumed`
|
|
17
|
+
* (e.g. `"persists + returns created row (REST 201 default)"`).
|
|
18
|
+
*/
|
|
19
|
+
assumption?: string | null;
|
|
20
|
+
confidence: SpecProvenance;
|
|
21
|
+
credibility?: number | null;
|
|
22
|
+
provenance?: string | null;
|
|
23
|
+
[k: string]: unknown;
|
|
24
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { SpecProvenance } from './SpecProvenance';
|
|
9
|
+
import type { ValidationRule } from './ValidationRule';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* One input of an [`Operation`].
|
|
13
|
+
*/
|
|
14
|
+
export interface OperationInput {
|
|
15
|
+
/**
|
|
16
|
+
* Field name (usually maps to an [`EntityField::name`]).
|
|
17
|
+
*/
|
|
18
|
+
field: string;
|
|
19
|
+
required: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Client-side validation rule observed on the input, when any.
|
|
22
|
+
*/
|
|
23
|
+
validation?: ValidationRule | null;
|
|
24
|
+
[k: string]: unknown;
|
|
25
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { ApiStyle } from './ApiStyle';
|
|
9
|
+
import type { ArchitectureProfile } from './ArchitectureProfile';
|
|
10
|
+
import type { BackendProfile } from './BackendProfile';
|
|
11
|
+
import type { EnforcementProfile } from './EnforcementProfile';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The top-level Priorities Profile.
|
|
15
|
+
*/
|
|
16
|
+
export interface Profile {
|
|
17
|
+
architecture: ArchitectureProfile;
|
|
18
|
+
backend: BackendProfile;
|
|
19
|
+
/**
|
|
20
|
+
* Naming / mapping conventions, as free-form `key -> value` pairs (e.g.
|
|
21
|
+
* `"naming" -> "snake_case"`, `"entityToTable" -> "pluralize"`). A `BTreeMap`
|
|
22
|
+
* so JSON serialization is deterministic. Open-ended by design so a profile
|
|
23
|
+
* can express conventions the schema didn't anticipate.
|
|
24
|
+
*/
|
|
25
|
+
conventions?: {
|
|
26
|
+
[k: string]: string;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* How the generation loop enforces quality.
|
|
30
|
+
*/
|
|
31
|
+
enforcement?: EnforcementProfile | null;
|
|
32
|
+
/**
|
|
33
|
+
* Schema version. Currently always `"0"`. Additive-only until `"1"`.
|
|
34
|
+
*/
|
|
35
|
+
profileVersion: string;
|
|
36
|
+
[k: string]: unknown;
|
|
37
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Count of nodes by provenance, within a section or overall. The
|
|
10
|
+
* `observed + inferred` sum is the coverage denominator; `assumed` is tracked
|
|
11
|
+
* separately for the assumption-fill rate.
|
|
12
|
+
*/
|
|
13
|
+
export interface ProvenanceMix {
|
|
14
|
+
assumed: number;
|
|
15
|
+
inferred: number;
|
|
16
|
+
observed: number;
|
|
17
|
+
[k: string]: unknown;
|
|
18
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { SpecProvenance } from './SpecProvenance';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* A relationship from one entity to another.
|
|
12
|
+
*/
|
|
13
|
+
export interface Relationship {
|
|
14
|
+
confidence: SpecProvenance;
|
|
15
|
+
credibility?: number | null;
|
|
16
|
+
/**
|
|
17
|
+
* `"one-to-one"`, `"one-to-many"`, `"many-to-one"`, `"many-to-many"`.
|
|
18
|
+
*/
|
|
19
|
+
kind: string;
|
|
20
|
+
provenance?: string | null;
|
|
21
|
+
/**
|
|
22
|
+
* Target entity name.
|
|
23
|
+
*/
|
|
24
|
+
to: string;
|
|
25
|
+
[k: string]: unknown;
|
|
26
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { ProvenanceMix } from './ProvenanceMix';
|
|
9
|
+
import type { SpecSection } from './SpecSection';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Per-section coverage breakdown. Mirrors the overall-verdict shape so a consumer
|
|
13
|
+
* can render the same widget at either granularity.
|
|
14
|
+
*/
|
|
15
|
+
export interface SectionVerdict {
|
|
16
|
+
/**
|
|
17
|
+
* Fraction of this section's `assumed` nodes the generator filled.
|
|
18
|
+
*/
|
|
19
|
+
assumedFillRate: number;
|
|
20
|
+
/**
|
|
21
|
+
* `numerator / denominator` for this section (`1.0` when denominator is 0).
|
|
22
|
+
*/
|
|
23
|
+
coverage: number;
|
|
24
|
+
/**
|
|
25
|
+
* Mean credibility of this section's `inferred` nodes (∈ [0,1]).
|
|
26
|
+
*/
|
|
27
|
+
credibility: number;
|
|
28
|
+
provenanceMix: ProvenanceMix;
|
|
29
|
+
section: SpecSection;
|
|
30
|
+
/**
|
|
31
|
+
* Freshness of the binding observation, when answered from a cached fallback.
|
|
32
|
+
*/
|
|
33
|
+
stalenessSeconds?: number | null;
|
|
34
|
+
[k: string]: unknown;
|
|
35
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* How a spec node was established, relative to what the frontend *reveals*.
|
|
10
|
+
*
|
|
11
|
+
* Named `SpecProvenance` (not `Confidence`) to stay distinct from the
|
|
12
|
+
* match-confidence axis `crate::spec_check::Confidence`
|
|
13
|
+
* (`high`/`medium`/`low`), which is orthogonal: that one scores how well an
|
|
14
|
+
* observed element matched an assertion; this one scores how the spec node
|
|
15
|
+
* itself was derived from observation.
|
|
16
|
+
*
|
|
17
|
+
* The three buckets keep the coverage accounting split crisp: the rubric's
|
|
18
|
+
* denominator is `Observed + Inferred`; `Assumed` is reported separately as
|
|
19
|
+
* an assumption-fill rate and never folded into the headline coverage number.
|
|
20
|
+
*/
|
|
21
|
+
export type SpecProvenance = "observed" | "inferred" | "assumed";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The five scorable sections of a [`crate::functional_spec::FunctionalSpec`].
|
|
10
|
+
*/
|
|
11
|
+
export type SpecSection = "entities" | "operations" | "uiStates" | "navigation" | "auth";
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* What was observed and when.
|
|
10
|
+
*/
|
|
11
|
+
export interface SpecTarget {
|
|
12
|
+
/**
|
|
13
|
+
* ISO-8601 UTC timestamp; stamped post-run when the observation completed.
|
|
14
|
+
*/
|
|
15
|
+
observedAt?: string | null;
|
|
16
|
+
/**
|
|
17
|
+
* The source website URL the spec was synthesized from.
|
|
18
|
+
*/
|
|
19
|
+
sourceUrl: string;
|
|
20
|
+
[k: string]: unknown;
|
|
21
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Canonical error envelope for the qontinui-web Next.js UI-Bridge proxy.
|
|
10
|
+
*
|
|
11
|
+
* The catch-all route at
|
|
12
|
+
* `qontinui-web/frontend/src/app/api/ui-bridge/[...path]/route.ts`
|
|
13
|
+
* short-circuits requests the SDK would otherwise 404 on — and the
|
|
14
|
+
* browser-required routes that can't respond without a live SDK client —
|
|
15
|
+
* to a structured HTTP 503 with this body
|
|
16
|
+
* (`route.ts::noBrowserResponse`):
|
|
17
|
+
*
|
|
18
|
+
* ```json
|
|
19
|
+
* { "success": false, "code": "NO_BROWSER_CONNECTED",
|
|
20
|
+
* "message": "<path> requires a browser SDK client" }
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* Modeled as a *generic* error envelope rather than a one-off
|
|
24
|
+
* `NoBrowserConnected` type: the `{success:false, code, message}` shape is
|
|
25
|
+
* the canonical structured-error contract for the whole proxy surface (not
|
|
26
|
+
* just the no-browser path), so a single reusable type is the more
|
|
27
|
+
* scalable and cleaner home. `code` stays a free-form `String` — the
|
|
28
|
+
* discriminator set (currently just `NO_BROWSER_CONNECTED`) is expected to
|
|
29
|
+
* grow, and pinning it to an enum here would force a schemas release on every
|
|
30
|
+
* new proxy error code. `success` is always `false` on this envelope (the
|
|
31
|
+
* success path uses [`UiBridgeHttpHealthEnvelope`] / the SDK's own envelopes).
|
|
32
|
+
*/
|
|
33
|
+
export interface UiBridgeHttpErrorEnvelope {
|
|
34
|
+
/**
|
|
35
|
+
* Machine-readable error discriminator (e.g. `"NO_BROWSER_CONNECTED"`).
|
|
36
|
+
*/
|
|
37
|
+
code: string;
|
|
38
|
+
/**
|
|
39
|
+
* Human-readable explanation (e.g. `"<path> requires a browser SDK client"`).
|
|
40
|
+
*/
|
|
41
|
+
message: string;
|
|
42
|
+
/**
|
|
43
|
+
* Always `false` — this envelope is only emitted on the error path.
|
|
44
|
+
*/
|
|
45
|
+
success: boolean;
|
|
46
|
+
[k: string]: unknown;
|
|
47
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* UI-Bridge metadata block included in the health envelope for the app
|
|
10
|
+
* discovery scanner. Spread of `config.appInfo` plus a fixed `capabilities`
|
|
11
|
+
* list. Present only when the server is configured with `appInfo` (the
|
|
12
|
+
* qontinui-web proxy always is — `route.ts` sets `appId: "qontinui-web"`).
|
|
13
|
+
*/
|
|
14
|
+
export interface UiBridgeHttpHealthAppInfo {
|
|
15
|
+
/**
|
|
16
|
+
* Stable app identifier (e.g. `"qontinui-web"`).
|
|
17
|
+
*/
|
|
18
|
+
appId: string;
|
|
19
|
+
/**
|
|
20
|
+
* Human-readable app name.
|
|
21
|
+
*/
|
|
22
|
+
appName: string;
|
|
23
|
+
/**
|
|
24
|
+
* App surface type (e.g. `"web"`).
|
|
25
|
+
*/
|
|
26
|
+
appType: string;
|
|
27
|
+
/**
|
|
28
|
+
* Advertised UI-Bridge capabilities (e.g. `["control","renderLog","debug"]`).
|
|
29
|
+
*/
|
|
30
|
+
capabilities: string[];
|
|
31
|
+
/**
|
|
32
|
+
* UI framework (e.g. `"nextjs"`).
|
|
33
|
+
*/
|
|
34
|
+
framework: string;
|
|
35
|
+
[k: string]: unknown;
|
|
36
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Inner `data` payload of the UI-Bridge SDK HTTP health envelope.
|
|
10
|
+
*
|
|
11
|
+
* Emitted by the SDK's relay-transport handler for `GET /health`
|
|
12
|
+
* (`@qontinui/ui-bridge/server` `handleRelayRoute`, `nextjs.ts`): the
|
|
13
|
+
* `responsive` + `lastHeartbeat` fields plus a spread of the relay's
|
|
14
|
+
* `TransportDiagnostics`. Only `responsive` and `lastHeartbeat` are modeled
|
|
15
|
+
* explicitly here — the diagnostics spread (pendingCommandCount, connectedTabs,
|
|
16
|
+
* buildId, …) is intentionally left open (no `additionalProperties: false`,
|
|
17
|
+
* which schemars omits by default) so the diagnostics surface can evolve
|
|
18
|
+
* without a schemas release while the two stable health signals stay typed.
|
|
19
|
+
*/
|
|
20
|
+
export interface UiBridgeHttpHealthData {
|
|
21
|
+
/**
|
|
22
|
+
* Max heartbeat timestamp (ms since epoch) across all tabs; `0` when none.
|
|
23
|
+
*/
|
|
24
|
+
lastHeartbeat: number;
|
|
25
|
+
/**
|
|
26
|
+
* True when at least one connected tab has a fresh heartbeat.
|
|
27
|
+
*/
|
|
28
|
+
responsive: boolean;
|
|
29
|
+
[k: string]: unknown;
|
|
30
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { UiBridgeHttpHealthAppInfo } from './UiBridgeHttpHealthAppInfo';
|
|
9
|
+
import type { UiBridgeHttpHealthData } from './UiBridgeHttpHealthData';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Canonical success envelope for `GET /api/ui-bridge/health`.
|
|
13
|
+
*
|
|
14
|
+
* Distinct from [`UiBridgeResponseEnvelope`]: the HTTP health envelope has
|
|
15
|
+
* no `requestId` / `type`, and carries an app-discovery `uiBridge` block.
|
|
16
|
+
* Wire shape (`nextjs.ts::handleRelayRoute`):
|
|
17
|
+
*
|
|
18
|
+
* ```json
|
|
19
|
+
* { "success": true,
|
|
20
|
+
* "data": { "responsive": false, "lastHeartbeat": 0, ...diagnostics },
|
|
21
|
+
* "timestamp": 1713200000000,
|
|
22
|
+
* "uiBridge": { "appId": "qontinui-web", ..., "capabilities": [...] } }
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* `uiBridge` is optional (omitted when the server has no `appInfo`); the
|
|
26
|
+
* other three fields are always present.
|
|
27
|
+
*/
|
|
28
|
+
export interface UiBridgeHttpHealthEnvelope {
|
|
29
|
+
data: UiBridgeHttpHealthData;
|
|
30
|
+
/**
|
|
31
|
+
* Always `true` on the health path.
|
|
32
|
+
*/
|
|
33
|
+
success: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Server-side timestamp (ms since epoch) of when the response was produced.
|
|
36
|
+
*/
|
|
37
|
+
timestamp: number;
|
|
38
|
+
/**
|
|
39
|
+
* App-discovery metadata; present only when the server is configured
|
|
40
|
+
* with `appInfo`.
|
|
41
|
+
*/
|
|
42
|
+
uiBridge?: UiBridgeHttpHealthAppInfo | null;
|
|
43
|
+
[k: string]: unknown;
|
|
44
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { SpecProvenance } from './SpecProvenance';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* A client-side validation rule observed on an input.
|
|
12
|
+
*/
|
|
13
|
+
export interface ValidationRule {
|
|
14
|
+
confidence: SpecProvenance;
|
|
15
|
+
credibility?: number | null;
|
|
16
|
+
provenance?: string | null;
|
|
17
|
+
/**
|
|
18
|
+
* The rule expression as observed (e.g. `"> 0"`, `"email"`, `"maxLength 80"`).
|
|
19
|
+
*/
|
|
20
|
+
rule: string;
|
|
21
|
+
[k: string]: unknown;
|
|
22
|
+
}
|
package/src/generated/index.ts
CHANGED
|
@@ -25,17 +25,23 @@ export type { ApiAssertion } from './ApiAssertion';
|
|
|
25
25
|
export type { ApiAssertionOperator } from './ApiAssertionOperator';
|
|
26
26
|
export type { ApiAssertionType } from './ApiAssertionType';
|
|
27
27
|
export type { ApiContentType } from './ApiContentType';
|
|
28
|
+
export type { ApiStyle } from './ApiStyle';
|
|
28
29
|
export type { ApiVariableExtraction } from './ApiVariableExtraction';
|
|
29
30
|
export type { App } from './App';
|
|
30
31
|
export type { AppError } from './AppError';
|
|
31
32
|
export type { AppEvent } from './AppEvent';
|
|
32
33
|
export type { AppListResponse } from './AppListResponse';
|
|
34
|
+
export type { ArchitectureProfile } from './ArchitectureProfile';
|
|
33
35
|
export type { AssertionMiss } from './AssertionMiss';
|
|
34
36
|
export type { AssertionOutcome } from './AssertionOutcome';
|
|
35
37
|
export type { AssertionResult } from './AssertionResult';
|
|
36
38
|
export type { AssertionScope } from './AssertionScope';
|
|
37
39
|
export type { AssertionSeverityCounts } from './AssertionSeverityCounts';
|
|
40
|
+
export type { AssumptionEntry } from './AssumptionEntry';
|
|
41
|
+
export type { AuthModel } from './AuthModel';
|
|
42
|
+
export type { AuthRole } from './AuthRole';
|
|
38
43
|
export type { AvailableTransitionsResult } from './AvailableTransitionsResult';
|
|
44
|
+
export type { BackendProfile } from './BackendProfile';
|
|
39
45
|
export type { BaseStepFields } from './BaseStepFields';
|
|
40
46
|
export type { BatchComputeEmbeddingRequest } from './BatchComputeEmbeddingRequest';
|
|
41
47
|
export type { BatchComputeEmbeddingResponse } from './BatchComputeEmbeddingResponse';
|
|
@@ -56,6 +62,7 @@ export type { CodeExecutionStep } from './CodeExecutionStep';
|
|
|
56
62
|
export type { CommandMode } from './CommandMode';
|
|
57
63
|
export type { CommandStep } from './CommandStep';
|
|
58
64
|
export type { CommandStepPhase } from './CommandStepPhase';
|
|
65
|
+
export type { CompletenessVerdict } from './CompletenessVerdict';
|
|
59
66
|
export type { ComponentActionInfo } from './ComponentActionInfo';
|
|
60
67
|
export type { ComponentActionRequest } from './ComponentActionRequest';
|
|
61
68
|
export type { ComputeEmbeddingRequest } from './ComputeEmbeddingRequest';
|
|
@@ -81,6 +88,7 @@ export type { Coordinates } from './Coordinates';
|
|
|
81
88
|
export type { CostTrendDataPoint } from './CostTrendDataPoint';
|
|
82
89
|
export type { CostTrendResponse } from './CostTrendResponse';
|
|
83
90
|
export type { CoverageData } from './CoverageData';
|
|
91
|
+
export type { CoverageGap } from './CoverageGap';
|
|
84
92
|
export type { CreateMcpCallInput } from './CreateMcpCallInput';
|
|
85
93
|
export type { CreateMcpServerInput } from './CreateMcpServerInput';
|
|
86
94
|
export type { CreateOlConfigRequest } from './CreateOlConfigRequest';
|
|
@@ -122,6 +130,9 @@ export type { EmbeddingListResponse } from './EmbeddingListResponse';
|
|
|
122
130
|
export type { EmbeddingResultItem } from './EmbeddingResultItem';
|
|
123
131
|
export type { EmbeddingResultsRequest } from './EmbeddingResultsRequest';
|
|
124
132
|
export type { EmbeddingResultsResponse } from './EmbeddingResultsResponse';
|
|
133
|
+
export type { EnforcementProfile } from './EnforcementProfile';
|
|
134
|
+
export type { Entity } from './Entity';
|
|
135
|
+
export type { EntityField } from './EntityField';
|
|
125
136
|
export type { ErrorType } from './ErrorType';
|
|
126
137
|
export type { ExecutePlaybookStep } from './ExecutePlaybookStep';
|
|
127
138
|
export type { ExecutionActionType } from './ExecutionActionType';
|
|
@@ -169,7 +180,9 @@ export type { FindingUserInput } from './FindingUserInput';
|
|
|
169
180
|
export type { FindingsSummary } from './FindingsSummary';
|
|
170
181
|
export type { FlowEvent } from './FlowEvent';
|
|
171
182
|
export type { FullRunnerStep } from './FullRunnerStep';
|
|
183
|
+
export type { FunctionalSpec } from './FunctionalSpec';
|
|
172
184
|
export type { GUIElementChunk } from './GUIElementChunk';
|
|
185
|
+
export type { GapReason } from './GapReason';
|
|
173
186
|
export type { GateEvaluationResult } from './GateEvaluationResult';
|
|
174
187
|
export type { GitOpListResponse } from './GitOpListResponse';
|
|
175
188
|
export type { GitOpRecord } from './GitOpRecord';
|
|
@@ -259,6 +272,9 @@ export type { NodeStatus } from './NodeStatus';
|
|
|
259
272
|
export type { NodeType } from './NodeType';
|
|
260
273
|
export type { OcrEngine } from './OcrEngine';
|
|
261
274
|
export type { OlConfig } from './OlConfig';
|
|
275
|
+
export type { Operation } from './Operation';
|
|
276
|
+
export type { OperationEffect } from './OperationEffect';
|
|
277
|
+
export type { OperationInput } from './OperationInput';
|
|
262
278
|
export type { OrchestrationLoopConfig } from './OrchestrationLoopConfig';
|
|
263
279
|
export type { OrchestrationLoopStatus } from './OrchestrationLoopStatus';
|
|
264
280
|
export type { Outcome } from './Outcome';
|
|
@@ -283,9 +299,11 @@ export type { PollingConfig } from './PollingConfig';
|
|
|
283
299
|
export type { ProcessConfig } from './ProcessConfig';
|
|
284
300
|
export type { ProcessState } from './ProcessState';
|
|
285
301
|
export type { ProcessStatus } from './ProcessStatus';
|
|
302
|
+
export type { Profile } from './Profile';
|
|
286
303
|
export type { PromptStep } from './PromptStep';
|
|
287
304
|
export type { PromptStepPhase } from './PromptStepPhase';
|
|
288
305
|
export type { ProposalStatus } from './ProposalStatus';
|
|
306
|
+
export type { ProvenanceMix } from './ProvenanceMix';
|
|
289
307
|
export type { RAGDashboardStats } from './RAGDashboardStats';
|
|
290
308
|
export type { RagCompletionEvent } from './RagCompletionEvent';
|
|
291
309
|
export type { RagProcessingStatus } from './RagProcessingStatus';
|
|
@@ -297,6 +315,7 @@ export type { RecordGitOpRequest } from './RecordGitOpRequest';
|
|
|
297
315
|
export type { ReflectionFixOutput } from './ReflectionFixOutput';
|
|
298
316
|
export type { Region } from './Region';
|
|
299
317
|
export type { RegisterAppRequest } from './RegisterAppRequest';
|
|
318
|
+
export type { Relationship } from './Relationship';
|
|
300
319
|
export type { RepositoryInactiveCondition } from './RepositoryInactiveCondition';
|
|
301
320
|
export type { RepositoryWatch } from './RepositoryWatch';
|
|
302
321
|
export type { ResolvedInitialStates } from './ResolvedInitialStates';
|
|
@@ -340,6 +359,7 @@ export type { ScrollDirection } from './ScrollDirection';
|
|
|
340
359
|
export type { SearchOptions } from './SearchOptions';
|
|
341
360
|
export type { SearchResultItem } from './SearchResultItem';
|
|
342
361
|
export type { SearchStrategy } from './SearchStrategy';
|
|
362
|
+
export type { SectionVerdict } from './SectionVerdict';
|
|
343
363
|
export type { SemanticSearchRequest } from './SemanticSearchRequest';
|
|
344
364
|
export type { SemanticSearchResponse } from './SemanticSearchResponse';
|
|
345
365
|
export type { SpecApiEvent } from './SpecApiEvent';
|
|
@@ -348,6 +368,9 @@ export type { SpecCheckPolicy } from './SpecCheckPolicy';
|
|
|
348
368
|
export type { SpecCheckResult } from './SpecCheckResult';
|
|
349
369
|
export type { SpecCheckStepConfig } from './SpecCheckStepConfig';
|
|
350
370
|
export type { SpecCheckSummary } from './SpecCheckSummary';
|
|
371
|
+
export type { SpecProvenance } from './SpecProvenance';
|
|
372
|
+
export type { SpecSection } from './SpecSection';
|
|
373
|
+
export type { SpecTarget } from './SpecTarget';
|
|
351
374
|
export type { SpecValidation } from './SpecValidation';
|
|
352
375
|
export type { StageCondition } from './StageCondition';
|
|
353
376
|
export type { StageInput } from './StageInput';
|
|
@@ -445,6 +468,10 @@ export type { UiBridgeAction } from './UiBridgeAction';
|
|
|
445
468
|
export type { UiBridgeAssertType } from './UiBridgeAssertType';
|
|
446
469
|
export type { UiBridgeComparisonMode } from './UiBridgeComparisonMode';
|
|
447
470
|
export type { UiBridgeDesignAuditStep } from './UiBridgeDesignAuditStep';
|
|
471
|
+
export type { UiBridgeHttpErrorEnvelope } from './UiBridgeHttpErrorEnvelope';
|
|
472
|
+
export type { UiBridgeHttpHealthAppInfo } from './UiBridgeHttpHealthAppInfo';
|
|
473
|
+
export type { UiBridgeHttpHealthData } from './UiBridgeHttpHealthData';
|
|
474
|
+
export type { UiBridgeHttpHealthEnvelope } from './UiBridgeHttpHealthEnvelope';
|
|
448
475
|
export type { UiBridgeRequestEnvelope } from './UiBridgeRequestEnvelope';
|
|
449
476
|
export type { UiBridgeResponseEnvelope } from './UiBridgeResponseEnvelope';
|
|
450
477
|
export type { UiBridgeSeverity } from './UiBridgeSeverity';
|
|
@@ -459,6 +486,7 @@ export type { UpdateOlConfigRequest } from './UpdateOlConfigRequest';
|
|
|
459
486
|
export type { UpdateScheduledTaskRequest } from './UpdateScheduledTaskRequest';
|
|
460
487
|
export type { ValidateConfigRequest } from './ValidateConfigRequest';
|
|
461
488
|
export type { ValidateConfigResponse } from './ValidateConfigResponse';
|
|
489
|
+
export type { ValidationRule } from './ValidationRule';
|
|
462
490
|
export type { VectorSearchResult } from './VectorSearchResult';
|
|
463
491
|
export type { VerificationAgentContext } from './VerificationAgentContext';
|
|
464
492
|
export type { VerificationCategoryKind } from './VerificationCategoryKind';
|
|
@@ -111,4 +111,39 @@ export interface IRDocument {
|
|
|
111
111
|
|
|
112
112
|
/** ID of the initial/starting state, if applicable. */
|
|
113
113
|
initialState?: string;
|
|
114
|
+
|
|
115
|
+
/** Per-page API-contract assertions evaluated by the Spec CI harness. */
|
|
116
|
+
apiAssertions?: IRApiCheck[];
|
|
114
117
|
}
|
|
118
|
+
|
|
119
|
+
// ---------------------------------------------------------------------------
|
|
120
|
+
// API-contract checks (Spec CI harness)
|
|
121
|
+
// ---------------------------------------------------------------------------
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* A single API-contract check: issue a request, validate the response.
|
|
125
|
+
*/
|
|
126
|
+
export interface IRApiCheck {
|
|
127
|
+
id: string;
|
|
128
|
+
description?: string;
|
|
129
|
+
request: {
|
|
130
|
+
method: string;
|
|
131
|
+
path: string;
|
|
132
|
+
headers?: Record<string, string>;
|
|
133
|
+
body?: unknown;
|
|
134
|
+
};
|
|
135
|
+
effect?: "read" | "write" | "destructive";
|
|
136
|
+
assertions: IRApiAssertion[];
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* API assertion: either a value-level assertion (status_code, json_path, etc.)
|
|
141
|
+
* or a schema-conformance assertion (conforms_to -- Phase 2 placeholder).
|
|
142
|
+
*/
|
|
143
|
+
export type IRApiAssertion =
|
|
144
|
+
| { type: "status_code"; expected: unknown; operator?: string }
|
|
145
|
+
| { type: "json_path"; jsonPath: string; expected: unknown; operator?: string }
|
|
146
|
+
| { type: "header"; headerName: string; expected: unknown; operator?: string }
|
|
147
|
+
| { type: "body_contains"; expected: unknown }
|
|
148
|
+
| { type: "response_time"; expected: unknown; operator?: string }
|
|
149
|
+
| { type: "conforms_to"; schema: string };
|