@qontinui/shared-types 2.4.0 → 2.5.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.
Files changed (43) hide show
  1. package/dist/scheduler.d.cts +74 -1
  2. package/dist/scheduler.d.ts +74 -1
  3. package/package.json +1 -1
  4. package/src/generated/ChangeTimeline.d.ts +484 -0
  5. package/src/generated/CriterionVerification.d.ts +11 -0
  6. package/src/generated/DetectedAnimation.d.ts +32 -0
  7. package/src/generated/EarsPattern.d.ts +20 -0
  8. package/src/generated/EdgeTiming.d.ts +156 -0
  9. package/src/generated/ExternalRef.d.ts +22 -0
  10. package/src/generated/InterfaceMappingFrontmatter.d.ts +21 -0
  11. package/src/generated/JourneyArrivalDoubt.d.ts +26 -0
  12. package/src/generated/JourneyCoverage.d.ts +91 -0
  13. package/src/generated/JourneyDeadEnds.d.ts +109 -0
  14. package/src/generated/JourneyEdgeObservation.d.ts +3 -2
  15. package/src/generated/JourneyEdgeTimingAnswer.d.ts +88 -0
  16. package/src/generated/JourneyFilter.d.ts +35 -0
  17. package/src/generated/JourneyFrontier.d.ts +51 -0
  18. package/src/generated/JourneyGraph.d.ts +165 -0
  19. package/src/generated/JourneyGraphEdge.d.ts +45 -0
  20. package/src/generated/JourneyPriorKnowledge.d.ts +112 -0
  21. package/src/generated/JourneyReachable.d.ts +64 -0
  22. package/src/generated/JourneySearchFrontier.d.ts +59 -0
  23. package/src/generated/JourneySearchFrontierNode.d.ts +37 -0
  24. package/src/generated/JourneySteps.d.ts +65 -0
  25. package/src/generated/JourneyUnmeasuredDepartures.d.ts +84 -0
  26. package/src/generated/MappingRow.d.ts +23 -0
  27. package/src/generated/MetricDistribution.d.ts +54 -0
  28. package/src/generated/RequestFrontmatter.d.ts +30 -0
  29. package/src/generated/RequirementFrontmatter.d.ts +31 -0
  30. package/src/generated/ScheduledTask.d.ts +52 -0
  31. package/src/generated/ScheduledTaskType.d.ts +22 -1
  32. package/src/generated/SourceCitation.d.ts +25 -0
  33. package/src/generated/SourceCitationKind.d.ts +12 -0
  34. package/src/generated/SpecAcceptanceCriterion.d.ts +28 -0
  35. package/src/generated/SpecFrontmatter.d.ts +36 -0
  36. package/src/generated/SpecLanguage.d.ts +11 -0
  37. package/src/generated/StoryFrontmatter.d.ts +26 -0
  38. package/src/generated/TemplateRef.d.ts +17 -0
  39. package/src/generated/UnknownCode.d.ts +8 -1
  40. package/src/generated/index.ts +32 -3
  41. package/src/generated/CapabilityState.d.ts +0 -25
  42. package/src/generated/CliProfile.d.ts +0 -492
  43. package/src/generated/SessionFailure.d.ts +0 -129
@@ -0,0 +1,11 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * This file was automatically generated.
4
+ * DO NOT MODIFY IT BY HAND. Regenerate with
5
+ * `qontinui-runner/src-tauri/scripts/generate_types.sh`.
6
+ */
7
+
8
+ /**
9
+ * How an acceptance criterion is verified.
10
+ */
11
+ export type CriterionVerification = "command" | "ui_bridge" | "test" | "manual";
@@ -0,0 +1,32 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * This file was automatically generated.
4
+ * DO NOT MODIFY IT BY HAND. Regenerate with
5
+ * `qontinui-runner/src-tauri/scripts/generate_types.sh`.
6
+ */
7
+
8
+ /**
9
+ * One CSS animation or transition, as the SDK's idle signals and the
10
+ * timeline report it (`idle/detected-animation.ts`).
11
+ */
12
+ export interface DetectedAnimation {
13
+ /**
14
+ * Duration (ms) when known — the elapsed time at end, or the effect's
15
+ * timing.
16
+ */
17
+ durationMs?: number | null;
18
+ /**
19
+ * Whether the animation repeats forever.
20
+ */
21
+ isInfinite: boolean;
22
+ /**
23
+ * `animationName`, or `transition:<property>` for a CSS transition.
24
+ */
25
+ name: string;
26
+ /**
27
+ * `ElementFingerprintData.hash` of the animated element, when it could
28
+ * be computed.
29
+ */
30
+ targetElement?: string | null;
31
+ [k: string]: unknown;
32
+ }
@@ -0,0 +1,20 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * This file was automatically generated.
4
+ * DO NOT MODIFY IT BY HAND. Regenerate with
5
+ * `qontinui-runner/src-tauri/scripts/generate_types.sh`.
6
+ */
7
+
8
+ /**
9
+ * EARS requirement pattern (Easy Approach to Requirements Syntax).
10
+ * Categorizes criteria by their trigger/condition pattern for better
11
+ * verification step generation.
12
+ */
13
+ export type EarsPattern =
14
+ | "ubiquitous"
15
+ | "event_driven"
16
+ | "state_driven"
17
+ | "optional"
18
+ | "complex"
19
+ | "unwanted_behavior"
20
+ | "not_applicable";
@@ -0,0 +1,156 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * This file was automatically generated.
4
+ * DO NOT MODIFY IT BY HAND. Regenerate with
5
+ * `qontinui-runner/src-tauri/scripts/generate_types.sh`.
6
+ */
7
+
8
+ import type { CacheProvenance } from "./CacheProvenance";
9
+ import type { MetricDistribution } from "./MetricDistribution";
10
+ import type { Observation } from "./Observation";
11
+ import type { ObservationCoverage } from "./ObservationCoverage";
12
+ import type { Producer } from "./Producer";
13
+ import type { Provenance } from "./Provenance";
14
+ import type { UnknownCode } from "./UnknownCode";
15
+ import type { UnknownInfo } from "./UnknownInfo";
16
+ import type { UnmeasuredDimension } from "./UnmeasuredDimension";
17
+
18
+ /**
19
+ * One UI Bridge observation: `measured` (with `value`), `absent` (the
20
+ * producer considered at least one item, measured all of it, and found
21
+ * nothing), or `unknown` (the producer could not answer; `unknown.code` says
22
+ * why). `provenance` is always present and every one of its keys is always
23
+ * present.
24
+ *
25
+ * This type describes the wire SHAPE only; it is not a validator. It
26
+ * accepts envelopes the canonical parser refuses: `absent` carrying `value`
27
+ * or `unknown`, a present `"unknown": null`, and `absent` over non-empty
28
+ * `provenance.coverage.unmeasured` or over `provenance.coverage.considered`
29
+ * of 0. Parse an envelope you did not build with
30
+ * `qontinui_vision_core::Observation` (Rust) or a parser enforcing the same
31
+ * rules.
32
+ */
33
+ export type Observation2 =
34
+ | {
35
+ provenance: Provenance;
36
+ status: "measured";
37
+ value: number;
38
+ [k: string]: unknown;
39
+ }
40
+ | {
41
+ provenance: Provenance;
42
+ status: "absent";
43
+ [k: string]: unknown;
44
+ }
45
+ | {
46
+ provenance: Provenance;
47
+ status: "unknown";
48
+ unknown: UnknownInfo;
49
+ [k: string]: unknown;
50
+ };
51
+
52
+ /**
53
+ * The answer of [`edge_timing`].
54
+ */
55
+ export interface EdgeTiming {
56
+ /**
57
+ * Distinct reported app versions, sorted, `null` (= not reported) first.
58
+ */
59
+ appVersions: (string | null)[];
60
+ /**
61
+ * `summary.firstResponseMs`.
62
+ */
63
+ firstResponseMs: MetricDistribution;
64
+ /**
65
+ * `summary.layoutShiftAfterFirstResponseMs`.
66
+ */
67
+ layoutShiftAfterFirstResponseMs: MetricDistribution;
68
+ /**
69
+ * `summary.layoutShiftCount`.
70
+ */
71
+ layoutShiftCount: MetricDistribution;
72
+ /**
73
+ * `summary.layoutShiftTotal`.
74
+ */
75
+ layoutShiftTotal: MetricDistribution;
76
+ /**
77
+ * `summary.longTaskTotalMs`.
78
+ */
79
+ longTaskTotalMs: MetricDistribution;
80
+ /**
81
+ * Samples (ledger rows) the answer is over.
82
+ */
83
+ n: number;
84
+ /**
85
+ * Latest `observedAt`; `null` when `n` is 0.
86
+ */
87
+ newestObservedAt?: string | null;
88
+ /**
89
+ * Every observation's raw values, ordered by `(observedAt,
90
+ * observationId)`, ties broken by the serialized `(appVersion,
91
+ * timeline)`.
92
+ */
93
+ observations: EdgeTimingRow[];
94
+ /**
95
+ * Earliest `observedAt`; `null` when `n` is 0.
96
+ */
97
+ oldestObservedAt?: string | null;
98
+ /**
99
+ * `summary.settleMs`.
100
+ */
101
+ settleMs: MetricDistribution;
102
+ /**
103
+ * Of those, rows with no timeline.
104
+ */
105
+ withoutTimeline: number;
106
+ [k: string]: unknown;
107
+ }
108
+ /**
109
+ * One observation's values as its timeline summary stated them,
110
+ * ledger-projected (status, value, coverage and unknown code kept; unknown
111
+ * detail replaced by its code; source and cache keys redacted). `null` (for
112
+ * every metric) = the row has no timeline.
113
+ */
114
+ export interface EdgeTimingRow {
115
+ /**
116
+ * `null` = not reported.
117
+ */
118
+ appVersion?: string | null;
119
+ /**
120
+ * `summary.firstResponseMs`.
121
+ */
122
+ firstResponseMs?: Observation | null;
123
+ /**
124
+ * Whether the row carried a timeline.
125
+ */
126
+ hasTimeline: boolean;
127
+ /**
128
+ * `summary.layoutShiftAfterFirstResponseMs`.
129
+ */
130
+ layoutShiftAfterFirstResponseMs?: Observation | null;
131
+ /**
132
+ * `summary.layoutShiftCount`.
133
+ */
134
+ layoutShiftCount?: Observation2 | null;
135
+ /**
136
+ * `summary.layoutShiftTotal`.
137
+ */
138
+ layoutShiftTotal?: Observation | null;
139
+ /**
140
+ * `summary.longTaskTotalMs`.
141
+ */
142
+ longTaskTotalMs?: Observation | null;
143
+ /**
144
+ * The ledger row id — a `/vision/assert` `timeline_ref`.
145
+ */
146
+ observationId: string;
147
+ /**
148
+ * RFC 3339 UTC.
149
+ */
150
+ observedAt: string;
151
+ /**
152
+ * `summary.settleMs`.
153
+ */
154
+ settleMs?: Observation | null;
155
+ [k: string]: unknown;
156
+ }
@@ -0,0 +1,22 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * This file was automatically generated.
4
+ * DO NOT MODIFY IT BY HAND. Regenerate with
5
+ * `qontinui-runner/src-tauri/scripts/generate_types.sh`.
6
+ */
7
+
8
+ /**
9
+ * The same item in an external system (a Jira issue, say).
10
+ */
11
+ export interface ExternalRef {
12
+ /**
13
+ * The item's key in that system, e.g. `PAY-123`.
14
+ */
15
+ key: string;
16
+ /**
17
+ * The external system, e.g. `jira`.
18
+ */
19
+ system: string;
20
+ url?: string | null;
21
+ [k: string]: unknown;
22
+ }
@@ -0,0 +1,21 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * This file was automatically generated.
4
+ * DO NOT MODIFY IT BY HAND. Regenerate with
5
+ * `qontinui-runner/src-tauri/scripts/generate_types.sh`.
6
+ */
7
+
8
+ import type { MappingRow } from "./MappingRow";
9
+ import type { TemplateRef } from "./TemplateRef";
10
+
11
+ /**
12
+ * A field-level mapping between two systems.
13
+ */
14
+ export interface InterfaceMappingFrontmatter {
15
+ id: string;
16
+ rows?: MappingRow[];
17
+ source_system: string;
18
+ target_system: string;
19
+ template?: TemplateRef | null;
20
+ [k: string]: unknown;
21
+ }
@@ -0,0 +1,26 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * This file was automatically generated.
4
+ * DO NOT MODIFY IT BY HAND. Regenerate with
5
+ * `qontinui-runner/src-tauri/scripts/generate_types.sh`.
6
+ */
7
+
8
+ /**
9
+ * Trusted affordance or `pop` rows, excluded from the graph, that ARRIVE at
10
+ * a node from a different node with outcome `changed`. Any of them may be a
11
+ * way in that the user did not need a URL for, so
12
+ * [`requires_prior_knowledge`] cannot list the node as settled. An excluded
13
+ * row that closed `error` or `settle_timeout` (or has no `toNode`) is not
14
+ * here: its recorded destination may be an intermediate state, so it routes
15
+ * to the graph-wide [`JourneyGraph::unknown_destination_arrivals`].
16
+ */
17
+ export interface JourneyArrivalDoubt {
18
+ /**
19
+ * Arrivals the request's filter excluded.
20
+ */
21
+ filtered: number;
22
+ /**
23
+ * Withdrawn arrivals.
24
+ */
25
+ withdrawn: number;
26
+ }
@@ -0,0 +1,91 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * This file was automatically generated.
4
+ * DO NOT MODIFY IT BY HAND. Regenerate with
5
+ * `qontinui-runner/src-tauri/scripts/generate_types.sh`.
6
+ */
7
+
8
+ import type { JourneyLedgerHealth } from "./JourneyLedgerHealth";
9
+
10
+ /**
11
+ * What a graph was built over — the resolution and freshness of every answer
12
+ * read from it. Rides inside the runner's `provenance.coverage`.
13
+ */
14
+ export interface JourneyCoverage {
15
+ /**
16
+ * Distinct `appVersion`s among the edges observed, sorted, `null`
17
+ * (= not reported) first.
18
+ */
19
+ appVersions: (string | null)[];
20
+ /**
21
+ * Valid, live edge rows the filter excluded.
22
+ */
23
+ edgesFilteredOut: number;
24
+ /**
25
+ * Withdrawn edge rows (`invalidatedAt` set), excluded.
26
+ */
27
+ edgesInvalidated: number;
28
+ /**
29
+ * Edge rows the graph was built from (after exclusions), INCLUDING
30
+ * `to_node_unobserved` rows.
31
+ */
32
+ edgesObserved: number;
33
+ /**
34
+ * How many of `edgesObserved` closed as `to_node_unobserved`.
35
+ */
36
+ edgesToNodeUnobserved: number;
37
+ /**
38
+ * Edges observed that reported no `runId`.
39
+ */
40
+ edgesWithoutRunId: number;
41
+ /**
42
+ * Open frontier entries per reason — every reason present, zeros
43
+ * included.
44
+ */
45
+ frontierByReason: {
46
+ [k: string]: number;
47
+ };
48
+ /**
49
+ * Nodes with at least one open frontier entry.
50
+ */
51
+ frontierNodes: number;
52
+ /**
53
+ * Open frontier entries across the graph.
54
+ */
55
+ frontierOpen: number;
56
+ /**
57
+ * Whether the ledger these rows were read from is being written — the
58
+ * runner's `/journey/health` block, repeated here so a graph that
59
+ * stopped growing (`schemaAbsent` / `writeFailing`) can never read as a
60
+ * finished one in any query response.
61
+ */
62
+ ledger: JourneyLedgerHealth;
63
+ /**
64
+ * Latest `observedAt` among the edges observed; `null` = no edges.
65
+ */
66
+ newestEdgeAt?: string | null;
67
+ /**
68
+ * Distinct nodes (by key) seen as an edge endpoint, as the from-node of
69
+ * an unobserved departure, or as a frontier node.
70
+ */
71
+ nodesObserved: number;
72
+ /**
73
+ * How many of those are unmodelled (`modelled: false`) — the graph's
74
+ * resolution, as a number.
75
+ */
76
+ nodesUnmodelled: number;
77
+ /**
78
+ * Earliest `observedAt` among the edges observed; `null` = no edges.
79
+ */
80
+ oldestEdgeAt?: string | null;
81
+ /**
82
+ * ENTRIES in [`JourneyGraph::rejected`] — one per `(kind, row,
83
+ * reason)`. The sum of their `rows` gives the number of distinct
84
+ * rejected rows (by full content).
85
+ */
86
+ rowsRejected: number;
87
+ /**
88
+ * Distinct reported `runId`s among the edges observed.
89
+ */
90
+ runs: number;
91
+ }
@@ -0,0 +1,109 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * This file was automatically generated.
4
+ * DO NOT MODIFY IT BY HAND. Regenerate with
5
+ * `qontinui-runner/src-tauri/scripts/generate_types.sh`.
6
+ */
7
+
8
+ import type { FrontierEntry } from "./FrontierEntry";
9
+ import type { JourneyCoverage } from "./JourneyCoverage";
10
+ import type { JourneyFilter } from "./JourneyFilter";
11
+ import type { JourneyLedgerHealth } from "./JourneyLedgerHealth";
12
+ import type { JourneyNode } from "./JourneyNode";
13
+ import type { JourneySearchFrontier } from "./JourneySearchFrontier";
14
+ import type { JourneySearchFrontierNode } from "./JourneySearchFrontierNode";
15
+ import type { JourneyUnmeasuredDepartures } from "./JourneyUnmeasuredDepartures";
16
+
17
+ /**
18
+ * The answer of [`dead_ends`].
19
+ */
20
+ export interface JourneyDeadEnds {
21
+ /**
22
+ * The graph's coverage.
23
+ */
24
+ coverage: JourneyCoverage;
25
+ /**
26
+ * Nodes with no navigation edge to a DIFFERENT node, an empty frontier,
27
+ * no unobserved departure and no unmeasured NAVIGATION departure (an
28
+ * excluded back arrival only makes `backOnly` unknown), sorted by key.
29
+ */
30
+ deadEnds: JourneyDeadEnd[];
31
+ /**
32
+ * The graph's filter.
33
+ */
34
+ filterEcho: JourneyFilter;
35
+ /**
36
+ * What the whole graph did not look at.
37
+ */
38
+ frontier: JourneySearchFrontier;
39
+ /**
40
+ * Nodes with no navigation edge to a different node that still have an
41
+ * open frontier, an unobserved departure or an unmeasured navigation
42
+ * departure — or whose arrival is unconfirmed (`unconfirmedDestination`:
43
+ * no arrival from another node closed `changed` / `no_change`, so it may
44
+ * be an intermediate state), or that the graph as a whole cannot settle
45
+ * (`unsettledByGraph`) — never dead ends. Sorted.
46
+ */
47
+ unexplored: JourneyUnexploredNode[];
48
+ }
49
+ /**
50
+ * A node a user cannot leave by any affordance.
51
+ */
52
+ export interface JourneyDeadEnd {
53
+ /**
54
+ * `true` when a kept `pop` edge with outcome `changed` leaves this node
55
+ * for a different node — the only way out is the browser's back button,
56
+ * a journey finding rather than an exit. `null` = unknown: no such edge
57
+ * was kept, but a `pop` row from this node was filtered or withdrawn, a
58
+ * kept `pop` edge to another node ended `error` / `settle_timeout`, or a
59
+ * kept `pop` self-loop ended `settle_timeout`
60
+ * (`unmeasuredDepartures.excludedBackArrivals > 0`). `false` otherwise.
61
+ * (A rejected `pop`-claiming row is untrusted and counts in
62
+ * `JourneyGraph::unplaced_rejected_rows`, which lists no node as a dead
63
+ * end at all.)
64
+ */
65
+ backOnly?: boolean | null;
66
+ /**
67
+ * The node.
68
+ */
69
+ nodeKey: string;
70
+ }
71
+ /**
72
+ * A node with no observed affordance exit that was NOT fully looked at, so
73
+ * it cannot be called a dead end.
74
+ */
75
+ export interface JourneyUnexploredNode {
76
+ /**
77
+ * The node.
78
+ */
79
+ nodeKey: string;
80
+ /**
81
+ * Its open frontier entries per reason (only reasons present).
82
+ */
83
+ openByReason: {
84
+ [k: string]: number;
85
+ };
86
+ /**
87
+ * `true` when no observed arrival at the node closed `changed` or
88
+ * `no_change` (they were all `settle_timeout` / `error`), so nothing
89
+ * confirms it is a real destination rather than an intermediate state
90
+ * ([`JourneyGraphNode::unconfirmed_destination`]).
91
+ */
92
+ unconfirmedDestination: boolean;
93
+ /**
94
+ * Departures from it the navigation edge set left out (filtered,
95
+ * withdrawn, `settle_timeout` / `error` to another node, `settle_timeout`
96
+ * self-loops, rejected frontier rows with a valid node).
97
+ */
98
+ unmeasuredDepartures: JourneyUnmeasuredDepartures;
99
+ /**
100
+ * Departures from it whose destination was never observed.
101
+ */
102
+ unobservedDepartures: number;
103
+ /**
104
+ * `true` when the node itself was fully explored but the GRAPH cannot
105
+ * support a dead-end verdict: an unplaced untrusted row (edge or
106
+ * frontier) may belong to it, or the ledger is not `writing`.
107
+ */
108
+ unsettledByGraph: boolean;
109
+ }
@@ -17,8 +17,9 @@ import type { JourneyTrigger } from "./JourneyTrigger";
17
17
  * [`EdgeOutcome::ToNodeUnobserved`]; `no_change` joins nodes with equal
18
18
  * keys (a `changed` edge may also join equal keys).
19
19
  *
20
- * The ledger's `timeline` column is deliberately unrepresented until
21
- * Phase 4; readers select explicit columns rather than `*`.
20
+ * The ledger's `timeline` column is not a field here: it holds a
21
+ * `qontinui-vision-core` `ChangeTimeline::for_ledger()` projection (see the
22
+ * module's PRIVACY note); readers select explicit columns rather than `*`.
22
23
  */
23
24
  export interface JourneyEdgeObservation {
24
25
  /**
@@ -0,0 +1,88 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * This file was automatically generated.
4
+ * DO NOT MODIFY IT BY HAND. Regenerate with
5
+ * `qontinui-runner/src-tauri/scripts/generate_types.sh`.
6
+ */
7
+
8
+ import type { CacheProvenance } from "./CacheProvenance";
9
+ import type { EdgeTiming } from "./EdgeTiming";
10
+ import type { JourneyFilter } from "./JourneyFilter";
11
+ import type { JourneyLedgerHealth } from "./JourneyLedgerHealth";
12
+ import type { MetricDistribution } from "./MetricDistribution";
13
+ import type { Observation } from "./Observation";
14
+ import type { ObservationCoverage } from "./ObservationCoverage";
15
+ import type { Producer } from "./Producer";
16
+ import type { Provenance } from "./Provenance";
17
+ import type { UnknownCode } from "./UnknownCode";
18
+ import type { UnknownInfo } from "./UnknownInfo";
19
+ import type { UnmeasuredDimension } from "./UnmeasuredDimension";
20
+
21
+ /**
22
+ * The answer value of `GET /apps/{app_id}/journey/edge-timing`.
23
+ *
24
+ * **Samples POOL every trigger and outcome of the `(from, to)` pair**:
25
+ * affordance clicks and typed URLs alike, and `changed`, `settle_timeout`
26
+ * and `error` closes alike. Keeping only `affordance` + `changed` would drop
27
+ * exactly the slow and failing interactions (a `settle_timeout` close is the
28
+ * slowest sample there is) and bias every percentile fast. The pooled
29
+ * composition is reported in `samplesByOutcome` / `samplesByTrigger`, so a
30
+ * reader who wants one slice can see whether the pool is dominated by
31
+ * another.
32
+ */
33
+ export interface JourneyEdgeTimingAnswer {
34
+ /**
35
+ * Live (not withdrawn) observations of this edge the filter removed.
36
+ */
37
+ edgesFilteredOut: number;
38
+ /**
39
+ * Withdrawn observations of this edge, excluded.
40
+ */
41
+ edgesInvalidated: number;
42
+ /**
43
+ * The filter the observations were narrowed by.
44
+ */
45
+ filterEcho: JourneyFilter;
46
+ /**
47
+ * The from-node key asked about.
48
+ */
49
+ fromKey: string;
50
+ /**
51
+ * The ledger the rows were read from.
52
+ */
53
+ ledger: JourneyLedgerHealth;
54
+ /**
55
+ * Untrusted EDGE rows anywhere in the read (an edge row that fails
56
+ * `validate()` or whose `observedAt` is not RFC 3339) — the edge rows
57
+ * the graph routes list as `rejected` (that list also holds frontier
58
+ * rows; this count does not). Their node keys cannot be trusted, so none is matched
59
+ * to this edge, and any of them may be one of its observations; never
60
+ * samples, never "filtered out".
61
+ */
62
+ rowsRejected: number;
63
+ /**
64
+ * Samples per edge outcome (wire string), pooled into `timing`.
65
+ */
66
+ samplesByOutcome: {
67
+ [k: string]: number;
68
+ };
69
+ /**
70
+ * Samples per navigation trigger (wire string), pooled into `timing`.
71
+ */
72
+ samplesByTrigger: {
73
+ [k: string]: number;
74
+ };
75
+ /**
76
+ * Observations whose stored timeline did not parse (counted in `timing`
77
+ * as without a timeline).
78
+ */
79
+ timelinesUnparseable: number;
80
+ /**
81
+ * The distribution, with its sample size.
82
+ */
83
+ timing: EdgeTiming;
84
+ /**
85
+ * The to-node key asked about.
86
+ */
87
+ toKey: string;
88
+ }
@@ -0,0 +1,35 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * This file was automatically generated.
4
+ * DO NOT MODIFY IT BY HAND. Regenerate with
5
+ * `qontinui-runner/src-tauri/scripts/generate_types.sh`.
6
+ */
7
+
8
+ /**
9
+ * Narrows the EDGE set a graph is built from. Staleness is a filter, not a
10
+ * verdict: the caller decides what window to ask about, and every result
11
+ * echoes the filter it was computed under (`filterEcho`).
12
+ *
13
+ * The frontier is never filtered: an open frontier entry is current state,
14
+ * and hiding one behind an edge filter would turn "not looked at" into
15
+ * "nothing there".
16
+ *
17
+ * `since` is a `chrono::DateTime<Utc>` (serialized RFC 3339), an exception
18
+ * to the crate's string-timestamp convention for the same reason as
19
+ * `page::KeysetPosition`: it is compared, not merely carried.
20
+ */
21
+ export interface JourneyFilter {
22
+ /**
23
+ * Keep edges whose `appVersion` equals this; `None` = every version.
24
+ * An edge that reported no version never matches a set filter.
25
+ */
26
+ appVersion: string | null;
27
+ /**
28
+ * Keep edges of this run kind; `None` = every kind.
29
+ */
30
+ runKind: ("agent_action" | "explorer" | "passive_session") | null;
31
+ /**
32
+ * Keep edges with `observedAt >= since`; `None` = no lower bound.
33
+ */
34
+ since: string | null;
35
+ }
@@ -0,0 +1,51 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * This file was automatically generated.
4
+ * DO NOT MODIFY IT BY HAND. Regenerate with
5
+ * `qontinui-runner/src-tauri/scripts/generate_types.sh`.
6
+ */
7
+
8
+ import type { FrontierEntry } from "./FrontierEntry";
9
+ import type { JourneyCoverage } from "./JourneyCoverage";
10
+ import type { JourneyFilter } from "./JourneyFilter";
11
+ import type { JourneyLedgerHealth } from "./JourneyLedgerHealth";
12
+ import type { JourneyNode } from "./JourneyNode";
13
+ import type { JourneySearchFrontier } from "./JourneySearchFrontier";
14
+ import type { JourneySearchFrontierNode } from "./JourneySearchFrontierNode";
15
+ import type { JourneyUnmeasuredDepartures } from "./JourneyUnmeasuredDepartures";
16
+
17
+ /**
18
+ * The answer of [`frontier`] — the open frontier of one node, or of the
19
+ * whole graph.
20
+ */
21
+ export interface JourneyFrontier {
22
+ /**
23
+ * The graph's coverage.
24
+ */
25
+ coverage: JourneyCoverage;
26
+ /**
27
+ * The open, listable frontier entries, sorted by `(nodeKey,
28
+ * affordanceFingerprint)`.
29
+ */
30
+ entries: FrontierEntry[];
31
+ /**
32
+ * The graph's filter.
33
+ */
34
+ filterEcho: JourneyFilter;
35
+ /**
36
+ * Everything not looked at in the part asked about — including rows
37
+ * that could not be listed (`rejected_frontier`). An EMPTY `entries` is
38
+ * a real "nothing left to explore" only when this is settled and
39
+ * [`JourneySearchFrontier::unsettled_because`] returns `None`.
40
+ */
41
+ frontier: JourneySearchFrontier;
42
+ /**
43
+ * The node asked about; `null` = the whole graph.
44
+ */
45
+ nodeKey?: string | null;
46
+ /**
47
+ * Whether that node was observed (always `true` for the whole graph).
48
+ * `false` means "never seen", never "nothing open there".
49
+ */
50
+ nodeObserved: boolean;
51
+ }