@qontinui/shared-types 2.4.1 → 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.
- package/dist/scheduler.d.cts +73 -0
- package/dist/scheduler.d.ts +73 -0
- package/package.json +1 -1
- package/src/generated/ChangeTimeline.d.ts +484 -0
- package/src/generated/CriterionVerification.d.ts +11 -0
- package/src/generated/DetectedAnimation.d.ts +32 -0
- package/src/generated/EarsPattern.d.ts +20 -0
- package/src/generated/EdgeTiming.d.ts +156 -0
- package/src/generated/ExternalRef.d.ts +22 -0
- package/src/generated/InterfaceMappingFrontmatter.d.ts +21 -0
- package/src/generated/JourneyArrivalDoubt.d.ts +26 -0
- package/src/generated/JourneyCoverage.d.ts +91 -0
- package/src/generated/JourneyDeadEnds.d.ts +109 -0
- package/src/generated/JourneyEdgeObservation.d.ts +3 -2
- package/src/generated/JourneyEdgeTimingAnswer.d.ts +88 -0
- package/src/generated/JourneyFilter.d.ts +35 -0
- package/src/generated/JourneyFrontier.d.ts +51 -0
- package/src/generated/JourneyGraph.d.ts +165 -0
- package/src/generated/JourneyGraphEdge.d.ts +45 -0
- package/src/generated/JourneyPriorKnowledge.d.ts +112 -0
- package/src/generated/JourneyReachable.d.ts +64 -0
- package/src/generated/JourneySearchFrontier.d.ts +59 -0
- package/src/generated/JourneySearchFrontierNode.d.ts +37 -0
- package/src/generated/JourneySteps.d.ts +65 -0
- package/src/generated/JourneyUnmeasuredDepartures.d.ts +84 -0
- package/src/generated/MappingRow.d.ts +23 -0
- package/src/generated/MetricDistribution.d.ts +54 -0
- package/src/generated/RequestFrontmatter.d.ts +30 -0
- package/src/generated/RequirementFrontmatter.d.ts +31 -0
- package/src/generated/ScheduledTask.d.ts +52 -0
- package/src/generated/ScheduledTaskType.d.ts +21 -0
- package/src/generated/SourceCitation.d.ts +25 -0
- package/src/generated/SourceCitationKind.d.ts +12 -0
- package/src/generated/SpecAcceptanceCriterion.d.ts +28 -0
- package/src/generated/SpecFrontmatter.d.ts +36 -0
- package/src/generated/SpecLanguage.d.ts +11 -0
- package/src/generated/StoryFrontmatter.d.ts +26 -0
- package/src/generated/TemplateRef.d.ts +17 -0
- package/src/generated/UnknownCode.d.ts +8 -1
- package/src/generated/index.ts +32 -3
- package/src/generated/CapabilityState.d.ts +0 -25
- package/src/generated/CliProfile.d.ts +0 -492
- package/src/generated/SessionFailure.d.ts +0 -129
package/dist/scheduler.d.cts
CHANGED
|
@@ -390,6 +390,21 @@ type ScheduledTaskType =
|
|
|
390
390
|
* Empty = use the runner's default tool allow-list.
|
|
391
391
|
*/
|
|
392
392
|
allowed_tools?: string[];
|
|
393
|
+
/**
|
|
394
|
+
* Optional reasoning-effort level for the spawned session: one of
|
|
395
|
+
* `low`, `medium`, `high`, `xhigh` or `max`. `None` leaves the level
|
|
396
|
+
* to the runner. A plain string rather than an enum, so a stored
|
|
397
|
+
* task carrying a level this crate does not list still loads; the
|
|
398
|
+
* consumer validates it.
|
|
399
|
+
*/
|
|
400
|
+
effort?: string | null;
|
|
401
|
+
/**
|
|
402
|
+
* Optional kebab-case name of a spawn-effort profile (e.g.
|
|
403
|
+
* `research`, `implementation`) that the runner resolves to an
|
|
404
|
+
* effort level and an ultracode setting. `None` leaves the choice
|
|
405
|
+
* to the runner.
|
|
406
|
+
*/
|
|
407
|
+
effort_profile?: string | null;
|
|
393
408
|
/**
|
|
394
409
|
* Hard cap on Claude turns per run (safety bound). `None` =
|
|
395
410
|
* runner's default cap (typically 50).
|
|
@@ -416,6 +431,12 @@ type ScheduledTaskType =
|
|
|
416
431
|
* (typically 600s = 10 min).
|
|
417
432
|
*/
|
|
418
433
|
timeout_seconds?: number | null;
|
|
434
|
+
/**
|
|
435
|
+
* Optional ultracode switch (standing dynamic-workflow orchestration)
|
|
436
|
+
* for the spawned session. `Some(true)` turns it on, `Some(false)`
|
|
437
|
+
* keeps it off, and `None` leaves the choice to the runner.
|
|
438
|
+
*/
|
|
439
|
+
ultracode?: boolean | null;
|
|
419
440
|
/**
|
|
420
441
|
* Working directory for the spawned session. `None` means the
|
|
421
442
|
* runner's project root. Stored as a string (not `PathBuf`) to keep
|
|
@@ -579,6 +600,12 @@ interface ScheduledTask {
|
|
|
579
600
|
* Default 60s.
|
|
580
601
|
*/
|
|
581
602
|
launchFailureBackoffSeconds: number;
|
|
603
|
+
/**
|
|
604
|
+
* Set when the task was created by the runner's reconciler from a
|
|
605
|
+
* fleet-wide recurring-agent declaration rather than by a user. `None` =
|
|
606
|
+
* an unmanaged, user-created task, which the reconciler never touches.
|
|
607
|
+
*/
|
|
608
|
+
managed?: ManagedBy | null;
|
|
582
609
|
/**
|
|
583
610
|
* ISO 8601 timestamp of last modification.
|
|
584
611
|
*/
|
|
@@ -607,6 +634,52 @@ interface ScheduledTask {
|
|
|
607
634
|
* Task type and its per-type configuration.
|
|
608
635
|
*/
|
|
609
636
|
task: ScheduledTaskType;
|
|
637
|
+
/**
|
|
638
|
+
* IANA time zone this task's schedule is interpreted in (e.g.
|
|
639
|
+
* `Europe/Berlin`). Takes precedence over the global
|
|
640
|
+
* [`SchedulerSettings::timezone`]; `None` = the scheduler's zone. Lets one
|
|
641
|
+
* fleet-wide declaration mean either "local night on every device" or a
|
|
642
|
+
* fixed instant.
|
|
643
|
+
*/
|
|
644
|
+
timezone?: string | null;
|
|
645
|
+
}
|
|
646
|
+
/**
|
|
647
|
+
* Provenance of a [`ScheduledTask`] that the runner reconciles from a
|
|
648
|
+
* fleet-wide declaration (plan
|
|
649
|
+
* `2026-10-29-recurring-agents-declared-in-coord-reconciled-by-runner`, D5).
|
|
650
|
+
*
|
|
651
|
+
* `(source, tenant_id, agent)` is the managed key: the runner holds at most
|
|
652
|
+
* one task per key. What the reconciler compares to decide whether a task is
|
|
653
|
+
* current is `digest`, never `version` — a catalog fix in coord's code moves
|
|
654
|
+
* no row version, and a deleted-and-recreated agent restarts its version at 1.
|
|
655
|
+
*/
|
|
656
|
+
interface ManagedBy {
|
|
657
|
+
/**
|
|
658
|
+
* The recurring agent's name — its join key across coord's status, run
|
|
659
|
+
* requests and this managed task (coord forbids renames).
|
|
660
|
+
*/
|
|
661
|
+
agent: string;
|
|
662
|
+
/**
|
|
663
|
+
* sha256 (64 lowercase hex) of the resolved spec coord served when this
|
|
664
|
+
* task was applied. `None` = applied from a declaration that carried no
|
|
665
|
+
* digest.
|
|
666
|
+
*/
|
|
667
|
+
digest?: string | null;
|
|
668
|
+
/**
|
|
669
|
+
* Which declaration store the task came from — [`MANAGED_SOURCE_COORD`].
|
|
670
|
+
* A plain string rather than an enum, so a stored task from a newer
|
|
671
|
+
* source still loads; the consumer decides what it recognises.
|
|
672
|
+
*/
|
|
673
|
+
source: string;
|
|
674
|
+
/**
|
|
675
|
+
* The coord tenant (UUID) whose declaration this task applies. A device
|
|
676
|
+
* bound to several tenants holds one managed task per tenant and agent.
|
|
677
|
+
*/
|
|
678
|
+
tenantId: string;
|
|
679
|
+
/**
|
|
680
|
+
* The declaration's row version when applied. History and display only.
|
|
681
|
+
*/
|
|
682
|
+
version: number;
|
|
610
683
|
}
|
|
611
684
|
|
|
612
685
|
/* eslint-disable */
|
package/dist/scheduler.d.ts
CHANGED
|
@@ -390,6 +390,21 @@ type ScheduledTaskType =
|
|
|
390
390
|
* Empty = use the runner's default tool allow-list.
|
|
391
391
|
*/
|
|
392
392
|
allowed_tools?: string[];
|
|
393
|
+
/**
|
|
394
|
+
* Optional reasoning-effort level for the spawned session: one of
|
|
395
|
+
* `low`, `medium`, `high`, `xhigh` or `max`. `None` leaves the level
|
|
396
|
+
* to the runner. A plain string rather than an enum, so a stored
|
|
397
|
+
* task carrying a level this crate does not list still loads; the
|
|
398
|
+
* consumer validates it.
|
|
399
|
+
*/
|
|
400
|
+
effort?: string | null;
|
|
401
|
+
/**
|
|
402
|
+
* Optional kebab-case name of a spawn-effort profile (e.g.
|
|
403
|
+
* `research`, `implementation`) that the runner resolves to an
|
|
404
|
+
* effort level and an ultracode setting. `None` leaves the choice
|
|
405
|
+
* to the runner.
|
|
406
|
+
*/
|
|
407
|
+
effort_profile?: string | null;
|
|
393
408
|
/**
|
|
394
409
|
* Hard cap on Claude turns per run (safety bound). `None` =
|
|
395
410
|
* runner's default cap (typically 50).
|
|
@@ -416,6 +431,12 @@ type ScheduledTaskType =
|
|
|
416
431
|
* (typically 600s = 10 min).
|
|
417
432
|
*/
|
|
418
433
|
timeout_seconds?: number | null;
|
|
434
|
+
/**
|
|
435
|
+
* Optional ultracode switch (standing dynamic-workflow orchestration)
|
|
436
|
+
* for the spawned session. `Some(true)` turns it on, `Some(false)`
|
|
437
|
+
* keeps it off, and `None` leaves the choice to the runner.
|
|
438
|
+
*/
|
|
439
|
+
ultracode?: boolean | null;
|
|
419
440
|
/**
|
|
420
441
|
* Working directory for the spawned session. `None` means the
|
|
421
442
|
* runner's project root. Stored as a string (not `PathBuf`) to keep
|
|
@@ -579,6 +600,12 @@ interface ScheduledTask {
|
|
|
579
600
|
* Default 60s.
|
|
580
601
|
*/
|
|
581
602
|
launchFailureBackoffSeconds: number;
|
|
603
|
+
/**
|
|
604
|
+
* Set when the task was created by the runner's reconciler from a
|
|
605
|
+
* fleet-wide recurring-agent declaration rather than by a user. `None` =
|
|
606
|
+
* an unmanaged, user-created task, which the reconciler never touches.
|
|
607
|
+
*/
|
|
608
|
+
managed?: ManagedBy | null;
|
|
582
609
|
/**
|
|
583
610
|
* ISO 8601 timestamp of last modification.
|
|
584
611
|
*/
|
|
@@ -607,6 +634,52 @@ interface ScheduledTask {
|
|
|
607
634
|
* Task type and its per-type configuration.
|
|
608
635
|
*/
|
|
609
636
|
task: ScheduledTaskType;
|
|
637
|
+
/**
|
|
638
|
+
* IANA time zone this task's schedule is interpreted in (e.g.
|
|
639
|
+
* `Europe/Berlin`). Takes precedence over the global
|
|
640
|
+
* [`SchedulerSettings::timezone`]; `None` = the scheduler's zone. Lets one
|
|
641
|
+
* fleet-wide declaration mean either "local night on every device" or a
|
|
642
|
+
* fixed instant.
|
|
643
|
+
*/
|
|
644
|
+
timezone?: string | null;
|
|
645
|
+
}
|
|
646
|
+
/**
|
|
647
|
+
* Provenance of a [`ScheduledTask`] that the runner reconciles from a
|
|
648
|
+
* fleet-wide declaration (plan
|
|
649
|
+
* `2026-10-29-recurring-agents-declared-in-coord-reconciled-by-runner`, D5).
|
|
650
|
+
*
|
|
651
|
+
* `(source, tenant_id, agent)` is the managed key: the runner holds at most
|
|
652
|
+
* one task per key. What the reconciler compares to decide whether a task is
|
|
653
|
+
* current is `digest`, never `version` — a catalog fix in coord's code moves
|
|
654
|
+
* no row version, and a deleted-and-recreated agent restarts its version at 1.
|
|
655
|
+
*/
|
|
656
|
+
interface ManagedBy {
|
|
657
|
+
/**
|
|
658
|
+
* The recurring agent's name — its join key across coord's status, run
|
|
659
|
+
* requests and this managed task (coord forbids renames).
|
|
660
|
+
*/
|
|
661
|
+
agent: string;
|
|
662
|
+
/**
|
|
663
|
+
* sha256 (64 lowercase hex) of the resolved spec coord served when this
|
|
664
|
+
* task was applied. `None` = applied from a declaration that carried no
|
|
665
|
+
* digest.
|
|
666
|
+
*/
|
|
667
|
+
digest?: string | null;
|
|
668
|
+
/**
|
|
669
|
+
* Which declaration store the task came from — [`MANAGED_SOURCE_COORD`].
|
|
670
|
+
* A plain string rather than an enum, so a stored task from a newer
|
|
671
|
+
* source still loads; the consumer decides what it recognises.
|
|
672
|
+
*/
|
|
673
|
+
source: string;
|
|
674
|
+
/**
|
|
675
|
+
* The coord tenant (UUID) whose declaration this task applies. A device
|
|
676
|
+
* bound to several tenants holds one managed task per tenant and agent.
|
|
677
|
+
*/
|
|
678
|
+
tenantId: string;
|
|
679
|
+
/**
|
|
680
|
+
* The declaration's row version when applied. History and display only.
|
|
681
|
+
*/
|
|
682
|
+
version: number;
|
|
610
683
|
}
|
|
611
684
|
|
|
612
685
|
/* eslint-disable */
|
package/package.json
CHANGED
|
@@ -0,0 +1,484 @@
|
|
|
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 { DetectedAnimation } from "./DetectedAnimation";
|
|
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
|
+
* A single event in the interaction timeline, discriminated on `type`.
|
|
20
|
+
*/
|
|
21
|
+
export type TimelineEvent =
|
|
22
|
+
| {
|
|
23
|
+
/**
|
|
24
|
+
* Time offset from action start (ms).
|
|
25
|
+
*/
|
|
26
|
+
offsetMs: number;
|
|
27
|
+
/**
|
|
28
|
+
* Human-readable summary (SDK prose — see the module's PRIVACY note).
|
|
29
|
+
*/
|
|
30
|
+
summary: string;
|
|
31
|
+
type: "action";
|
|
32
|
+
[k: string]: unknown;
|
|
33
|
+
}
|
|
34
|
+
| {
|
|
35
|
+
/**
|
|
36
|
+
* Number of elements affected.
|
|
37
|
+
*/
|
|
38
|
+
count: number;
|
|
39
|
+
/**
|
|
40
|
+
* Element IDs involved.
|
|
41
|
+
*/
|
|
42
|
+
elementIds: string[];
|
|
43
|
+
/**
|
|
44
|
+
* Time offset from action start (ms).
|
|
45
|
+
*/
|
|
46
|
+
offsetMs: number;
|
|
47
|
+
/**
|
|
48
|
+
* Human-readable summary (SDK prose — see the module's PRIVACY note).
|
|
49
|
+
*/
|
|
50
|
+
summary: string;
|
|
51
|
+
type: "elements-appeared";
|
|
52
|
+
[k: string]: unknown;
|
|
53
|
+
}
|
|
54
|
+
| {
|
|
55
|
+
/**
|
|
56
|
+
* Number of elements affected.
|
|
57
|
+
*/
|
|
58
|
+
count: number;
|
|
59
|
+
/**
|
|
60
|
+
* Element IDs involved.
|
|
61
|
+
*/
|
|
62
|
+
elementIds: string[];
|
|
63
|
+
/**
|
|
64
|
+
* Time offset from action start (ms).
|
|
65
|
+
*/
|
|
66
|
+
offsetMs: number;
|
|
67
|
+
/**
|
|
68
|
+
* Human-readable summary (SDK prose — see the module's PRIVACY note).
|
|
69
|
+
*/
|
|
70
|
+
summary: string;
|
|
71
|
+
type: "elements-disappeared";
|
|
72
|
+
[k: string]: unknown;
|
|
73
|
+
}
|
|
74
|
+
| {
|
|
75
|
+
/**
|
|
76
|
+
* Number of elements affected.
|
|
77
|
+
*/
|
|
78
|
+
count: number;
|
|
79
|
+
/**
|
|
80
|
+
* Element IDs involved.
|
|
81
|
+
*/
|
|
82
|
+
elementIds: string[];
|
|
83
|
+
/**
|
|
84
|
+
* Time offset from action start (ms).
|
|
85
|
+
*/
|
|
86
|
+
offsetMs: number;
|
|
87
|
+
/**
|
|
88
|
+
* Human-readable summary (SDK prose — see the module's PRIVACY note).
|
|
89
|
+
*/
|
|
90
|
+
summary: string;
|
|
91
|
+
type: "elements-modified";
|
|
92
|
+
[k: string]: unknown;
|
|
93
|
+
}
|
|
94
|
+
| {
|
|
95
|
+
/**
|
|
96
|
+
* Time offset from action start (ms).
|
|
97
|
+
*/
|
|
98
|
+
offsetMs: number;
|
|
99
|
+
/**
|
|
100
|
+
* Human-readable summary (SDK prose — see the module's PRIVACY note).
|
|
101
|
+
*/
|
|
102
|
+
summary: string;
|
|
103
|
+
type: "page-changed";
|
|
104
|
+
/**
|
|
105
|
+
* The new URL, or `null` when the diff did not carry one.
|
|
106
|
+
*/
|
|
107
|
+
url?: string | null;
|
|
108
|
+
[k: string]: unknown;
|
|
109
|
+
}
|
|
110
|
+
| {
|
|
111
|
+
/**
|
|
112
|
+
* Time offset from action start (ms).
|
|
113
|
+
*/
|
|
114
|
+
offsetMs: number;
|
|
115
|
+
/**
|
|
116
|
+
* Human-readable summary (SDK prose — see the module's PRIVACY note).
|
|
117
|
+
*/
|
|
118
|
+
summary: string;
|
|
119
|
+
type: "settled";
|
|
120
|
+
[k: string]: unknown;
|
|
121
|
+
}
|
|
122
|
+
| {
|
|
123
|
+
/**
|
|
124
|
+
* The browser's `hadRecentInput` flag for this shift.
|
|
125
|
+
*/
|
|
126
|
+
hadRecentInput: boolean;
|
|
127
|
+
/**
|
|
128
|
+
* Time offset from action start (ms).
|
|
129
|
+
*/
|
|
130
|
+
offsetMs: number;
|
|
131
|
+
/**
|
|
132
|
+
* How many shifted elements `shiftedFingerprints` named. NOT sent by
|
|
133
|
+
* the SDK: [`ChangeTimeline::for_ledger`] sets it when it empties
|
|
134
|
+
* `shiftedFingerprints`, so a stored timeline keeps the count and
|
|
135
|
+
* not the hashes. Absent on the wire from the SDK.
|
|
136
|
+
*/
|
|
137
|
+
shiftedElementCount?: number | null;
|
|
138
|
+
/**
|
|
139
|
+
* `ElementFingerprintData.hash` of each shifted element still in the
|
|
140
|
+
* document.
|
|
141
|
+
*/
|
|
142
|
+
shiftedFingerprints: string[];
|
|
143
|
+
/**
|
|
144
|
+
* Human-readable summary (SDK prose — see the module's PRIVACY note).
|
|
145
|
+
*/
|
|
146
|
+
summary: string;
|
|
147
|
+
type: "layout-shift";
|
|
148
|
+
/**
|
|
149
|
+
* Shift sources whose node was gone (or not an element) when the
|
|
150
|
+
* entry was read.
|
|
151
|
+
*/
|
|
152
|
+
unattributedSourceCount: number;
|
|
153
|
+
/**
|
|
154
|
+
* The shift score (Layout Instability API `value`).
|
|
155
|
+
*/
|
|
156
|
+
value: number;
|
|
157
|
+
[k: string]: unknown;
|
|
158
|
+
}
|
|
159
|
+
| {
|
|
160
|
+
/**
|
|
161
|
+
* The animation.
|
|
162
|
+
*/
|
|
163
|
+
animation: DetectedAnimation;
|
|
164
|
+
/**
|
|
165
|
+
* Time offset from action start (ms).
|
|
166
|
+
*/
|
|
167
|
+
offsetMs: number;
|
|
168
|
+
/**
|
|
169
|
+
* Human-readable summary (SDK prose — see the module's PRIVACY note).
|
|
170
|
+
*/
|
|
171
|
+
summary: string;
|
|
172
|
+
type: "animation-started";
|
|
173
|
+
[k: string]: unknown;
|
|
174
|
+
}
|
|
175
|
+
| {
|
|
176
|
+
/**
|
|
177
|
+
* The animation.
|
|
178
|
+
*/
|
|
179
|
+
animation: DetectedAnimation;
|
|
180
|
+
/**
|
|
181
|
+
* Finished or cancelled.
|
|
182
|
+
*/
|
|
183
|
+
endReason: "finished" | "cancelled";
|
|
184
|
+
/**
|
|
185
|
+
* Time offset from action start (ms).
|
|
186
|
+
*/
|
|
187
|
+
offsetMs: number;
|
|
188
|
+
/**
|
|
189
|
+
* Human-readable summary (SDK prose — see the module's PRIVACY note).
|
|
190
|
+
*/
|
|
191
|
+
summary: string;
|
|
192
|
+
type: "animation-ended";
|
|
193
|
+
[k: string]: unknown;
|
|
194
|
+
}
|
|
195
|
+
| {
|
|
196
|
+
/**
|
|
197
|
+
* Task duration (ms).
|
|
198
|
+
*/
|
|
199
|
+
durationMs: number;
|
|
200
|
+
/**
|
|
201
|
+
* Time offset from action start (ms).
|
|
202
|
+
*/
|
|
203
|
+
offsetMs: number;
|
|
204
|
+
/**
|
|
205
|
+
* Human-readable summary (SDK prose — see the module's PRIVACY note).
|
|
206
|
+
*/
|
|
207
|
+
summary: string;
|
|
208
|
+
type: "long-task";
|
|
209
|
+
[k: string]: unknown;
|
|
210
|
+
}
|
|
211
|
+
| {
|
|
212
|
+
/**
|
|
213
|
+
* The request URL carried a query string (not reported).
|
|
214
|
+
*/
|
|
215
|
+
hasQuery: boolean;
|
|
216
|
+
/**
|
|
217
|
+
* HTTP method.
|
|
218
|
+
*/
|
|
219
|
+
method: string;
|
|
220
|
+
/**
|
|
221
|
+
* Time offset from action start (ms).
|
|
222
|
+
*/
|
|
223
|
+
offsetMs: number;
|
|
224
|
+
/**
|
|
225
|
+
* The tracker's request id, or `null` when the source supplies none.
|
|
226
|
+
*/
|
|
227
|
+
requestId?: string | null;
|
|
228
|
+
/**
|
|
229
|
+
* Human-readable summary (SDK prose — see the module's PRIVACY note).
|
|
230
|
+
*/
|
|
231
|
+
summary: string;
|
|
232
|
+
type: "network-request-started";
|
|
233
|
+
/**
|
|
234
|
+
* Origin + pathname — never the query or fragment. Always a string
|
|
235
|
+
* from the SDK; `null` only in [`ChangeTimeline::for_ledger`]'s
|
|
236
|
+
* projection, when the URL had no valid `scheme://host` origin.
|
|
237
|
+
*/
|
|
238
|
+
url?: string | null;
|
|
239
|
+
[k: string]: unknown;
|
|
240
|
+
}
|
|
241
|
+
| {
|
|
242
|
+
/**
|
|
243
|
+
* Request duration as the tracker measured it, or `null` without a
|
|
244
|
+
* response.
|
|
245
|
+
*/
|
|
246
|
+
durationMs?: number | null;
|
|
247
|
+
/**
|
|
248
|
+
* The request threw (no HTTP response). An HTTP error status is NOT
|
|
249
|
+
* `errored` — read `statusCode`.
|
|
250
|
+
*/
|
|
251
|
+
errored: boolean;
|
|
252
|
+
/**
|
|
253
|
+
* The request URL carried a query string (not reported).
|
|
254
|
+
*/
|
|
255
|
+
hasQuery: boolean;
|
|
256
|
+
/**
|
|
257
|
+
* HTTP method.
|
|
258
|
+
*/
|
|
259
|
+
method: string;
|
|
260
|
+
/**
|
|
261
|
+
* Time offset from action start (ms).
|
|
262
|
+
*/
|
|
263
|
+
offsetMs: number;
|
|
264
|
+
/**
|
|
265
|
+
* The tracker's request id, or `null` when the source supplies none.
|
|
266
|
+
*/
|
|
267
|
+
requestId?: string | null;
|
|
268
|
+
/**
|
|
269
|
+
* HTTP status, or `null` when no response arrived.
|
|
270
|
+
*/
|
|
271
|
+
statusCode?: number | null;
|
|
272
|
+
/**
|
|
273
|
+
* Human-readable summary (SDK prose — see the module's PRIVACY note).
|
|
274
|
+
*/
|
|
275
|
+
summary: string;
|
|
276
|
+
type: "network-request-finished";
|
|
277
|
+
/**
|
|
278
|
+
* Origin + pathname — never the query or fragment. Always a string
|
|
279
|
+
* from the SDK; `null` only in [`ChangeTimeline::for_ledger`]'s
|
|
280
|
+
* projection, when the URL had no valid `scheme://host` origin.
|
|
281
|
+
*/
|
|
282
|
+
url?: string | null;
|
|
283
|
+
[k: string]: unknown;
|
|
284
|
+
}
|
|
285
|
+
| {
|
|
286
|
+
/**
|
|
287
|
+
* Time offset from action start (ms).
|
|
288
|
+
*/
|
|
289
|
+
offsetMs: number;
|
|
290
|
+
/**
|
|
291
|
+
* The declared state id.
|
|
292
|
+
*/
|
|
293
|
+
stateId: string;
|
|
294
|
+
/**
|
|
295
|
+
* Human-readable summary (SDK prose — see the module's PRIVACY note).
|
|
296
|
+
*/
|
|
297
|
+
summary: string;
|
|
298
|
+
type: "state-entered";
|
|
299
|
+
[k: string]: unknown;
|
|
300
|
+
}
|
|
301
|
+
| {
|
|
302
|
+
/**
|
|
303
|
+
* Time offset from action start (ms).
|
|
304
|
+
*/
|
|
305
|
+
offsetMs: number;
|
|
306
|
+
/**
|
|
307
|
+
* The declared state id.
|
|
308
|
+
*/
|
|
309
|
+
stateId: string;
|
|
310
|
+
/**
|
|
311
|
+
* Human-readable summary (SDK prose — see the module's PRIVACY note).
|
|
312
|
+
*/
|
|
313
|
+
summary: string;
|
|
314
|
+
type: "state-exited";
|
|
315
|
+
[k: string]: unknown;
|
|
316
|
+
};
|
|
317
|
+
/**
|
|
318
|
+
* A source of timeline events. A source NOT listed in
|
|
319
|
+
* [`ChangeTimeline::observed_sources`] was not looked at, so the absence of
|
|
320
|
+
* its events means "unknown", never "none".
|
|
321
|
+
*/
|
|
322
|
+
export type TimelineSource =
|
|
323
|
+
| "snapshot-poll"
|
|
324
|
+
| "idle-detector"
|
|
325
|
+
| "layout-shift"
|
|
326
|
+
| "long-task"
|
|
327
|
+
| "animation-events"
|
|
328
|
+
| "get-animations"
|
|
329
|
+
| "network"
|
|
330
|
+
| "states";
|
|
331
|
+
/**
|
|
332
|
+
* How an expected state fared inside the caller's `withinMs` window. Exactly
|
|
333
|
+
* one key on the wire.
|
|
334
|
+
*/
|
|
335
|
+
export type ExpectedStateOutcome =
|
|
336
|
+
| {
|
|
337
|
+
enteredAtMs: number;
|
|
338
|
+
}
|
|
339
|
+
| {
|
|
340
|
+
notEnteredWithinMs: number;
|
|
341
|
+
}
|
|
342
|
+
| {
|
|
343
|
+
activeThroughoutWithinMs: number;
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* The interaction timeline: action → every observed event → settled, each
|
|
348
|
+
* with its offset from the action, plus a derived [`TimelineSummary`].
|
|
349
|
+
*/
|
|
350
|
+
export interface ChangeTimeline {
|
|
351
|
+
/**
|
|
352
|
+
* Timestamped events, ordered by `offsetMs` (ties keep arrival order).
|
|
353
|
+
*/
|
|
354
|
+
events: TimelineEvent[];
|
|
355
|
+
/**
|
|
356
|
+
* The sources this recording could observe.
|
|
357
|
+
*/
|
|
358
|
+
observedSources: TimelineSource[];
|
|
359
|
+
/**
|
|
360
|
+
* How long the timeline was recorded, from action start (ms): the settle
|
|
361
|
+
* window, extended by any `withinMs` window. Not the settle time.
|
|
362
|
+
*/
|
|
363
|
+
recordedMs: number;
|
|
364
|
+
/**
|
|
365
|
+
* Whether the UI reached a stable state within `settleTimeout`.
|
|
366
|
+
*/
|
|
367
|
+
settled: boolean;
|
|
368
|
+
summary: TimelineSummary;
|
|
369
|
+
[k: string]: unknown;
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Values derived from `events`.
|
|
373
|
+
*/
|
|
374
|
+
export interface TimelineSummary {
|
|
375
|
+
/**
|
|
376
|
+
* Animations/transitions running when recording ended. Degraded
|
|
377
|
+
* (`coverage.unmeasured`) where `document.getAnimations` is missing.
|
|
378
|
+
*/
|
|
379
|
+
animationsUnsettledAtEnd:
|
|
380
|
+
| {
|
|
381
|
+
provenance: Provenance;
|
|
382
|
+
status: "measured";
|
|
383
|
+
value: DetectedAnimation[];
|
|
384
|
+
[k: string]: unknown;
|
|
385
|
+
}
|
|
386
|
+
| {
|
|
387
|
+
provenance: Provenance;
|
|
388
|
+
status: "absent";
|
|
389
|
+
[k: string]: unknown;
|
|
390
|
+
}
|
|
391
|
+
| {
|
|
392
|
+
provenance: Provenance;
|
|
393
|
+
status: "unknown";
|
|
394
|
+
unknown: UnknownInfo;
|
|
395
|
+
[k: string]: unknown;
|
|
396
|
+
};
|
|
397
|
+
/**
|
|
398
|
+
* One entry per requested `expectStates` id, in request order; `[]` when
|
|
399
|
+
* none were requested.
|
|
400
|
+
*/
|
|
401
|
+
expectedStates: ExpectedStateResult[];
|
|
402
|
+
/**
|
|
403
|
+
* Offset of the first RESPONSE event (elements-*, page-changed,
|
|
404
|
+
* layout-shift, animation-*, state-*). `unknown{no_event_before_timeout}`
|
|
405
|
+
* when nothing responded in the window.
|
|
406
|
+
*/
|
|
407
|
+
firstResponseMs: Observation;
|
|
408
|
+
/**
|
|
409
|
+
* Offset of the LAST layout shift minus `firstResponseMs`. `absent` when
|
|
410
|
+
* no shift occurred.
|
|
411
|
+
*/
|
|
412
|
+
layoutShiftAfterFirstResponseMs: Observation;
|
|
413
|
+
/**
|
|
414
|
+
* Number of `layout-shift` events. Same unknown rule.
|
|
415
|
+
*/
|
|
416
|
+
layoutShiftCount:
|
|
417
|
+
| {
|
|
418
|
+
provenance: Provenance;
|
|
419
|
+
status: "measured";
|
|
420
|
+
value: number;
|
|
421
|
+
[k: string]: unknown;
|
|
422
|
+
}
|
|
423
|
+
| {
|
|
424
|
+
provenance: Provenance;
|
|
425
|
+
status: "absent";
|
|
426
|
+
[k: string]: unknown;
|
|
427
|
+
}
|
|
428
|
+
| {
|
|
429
|
+
provenance: Provenance;
|
|
430
|
+
status: "unknown";
|
|
431
|
+
unknown: UnknownInfo;
|
|
432
|
+
[k: string]: unknown;
|
|
433
|
+
};
|
|
434
|
+
/**
|
|
435
|
+
* Sum of `layout-shift` values in the window.
|
|
436
|
+
* `unknown{performance_observer_unsupported}` where the entry type is
|
|
437
|
+
* missing.
|
|
438
|
+
*/
|
|
439
|
+
layoutShiftTotal: Observation;
|
|
440
|
+
/**
|
|
441
|
+
* Sum of `long-task` durations (ms).
|
|
442
|
+
* `unknown{performance_observer_unsupported}` where `longtask` is
|
|
443
|
+
* missing.
|
|
444
|
+
*/
|
|
445
|
+
longTaskTotalMs: Observation;
|
|
446
|
+
/**
|
|
447
|
+
* Offset of the `settled` event. `unknown{no_event_before_timeout}` when
|
|
448
|
+
* the UI did not settle within `settleTimeout`.
|
|
449
|
+
*/
|
|
450
|
+
settleMs: Observation;
|
|
451
|
+
[k: string]: unknown;
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* One `expectStates` entry and its answer.
|
|
455
|
+
*/
|
|
456
|
+
export interface ExpectedStateResult {
|
|
457
|
+
/**
|
|
458
|
+
* The answer — `unknown{input_missing}` for an undeclared state or no
|
|
459
|
+
* state registry.
|
|
460
|
+
*/
|
|
461
|
+
outcome:
|
|
462
|
+
| {
|
|
463
|
+
provenance: Provenance;
|
|
464
|
+
status: "measured";
|
|
465
|
+
value: ExpectedStateOutcome;
|
|
466
|
+
[k: string]: unknown;
|
|
467
|
+
}
|
|
468
|
+
| {
|
|
469
|
+
provenance: Provenance;
|
|
470
|
+
status: "absent";
|
|
471
|
+
[k: string]: unknown;
|
|
472
|
+
}
|
|
473
|
+
| {
|
|
474
|
+
provenance: Provenance;
|
|
475
|
+
status: "unknown";
|
|
476
|
+
unknown: UnknownInfo;
|
|
477
|
+
[k: string]: unknown;
|
|
478
|
+
};
|
|
479
|
+
/**
|
|
480
|
+
* The declared state id the caller asked about.
|
|
481
|
+
*/
|
|
482
|
+
stateId: string;
|
|
483
|
+
[k: string]: unknown;
|
|
484
|
+
}
|
|
@@ -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";
|