@unotest/protocol 0.32.0 → 0.35.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/CHANGELOG.md +336 -0
- package/dist/index.d.ts +483 -50
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -159,6 +159,30 @@ declare const ARTIFACTS_ROOT_ENV = "UNOTEST_ARTIFACTS_ROOT";
|
|
|
159
159
|
* back to the source root. Blank is treated as unset — an exported but
|
|
160
160
|
* empty variable must not relocate anything. */
|
|
161
161
|
declare function artifactsRootFrom(env: Record<string, string | undefined>, projectRoot: string): string;
|
|
162
|
+
/** Where failure bundles live, as path SEGMENTS — the one spelling of
|
|
163
|
+
* `.unotest/failures` in the monorepo. Segments rather than a string
|
|
164
|
+
* because two kinds of caller need it: one joins it onto a native
|
|
165
|
+
* filesystem path (web, on Windows too), the other builds a posix path
|
|
166
|
+
* for a container or compares an artifact-relative one (box-runner,
|
|
167
|
+
* boxd, the viewer's asset allowlist). */
|
|
168
|
+
declare const FAILURES_DIR_SEGMENTS: readonly [".unotest", "failures"];
|
|
169
|
+
/** Posix `<root>/.unotest/failures`. For container and artifact-relative
|
|
170
|
+
* paths; a native filesystem path joins `FAILURES_DIR_SEGMENTS` instead. */
|
|
171
|
+
declare function failuresRootUnder(root: string): string;
|
|
172
|
+
/** Where THIS process writes and reads failure bundles.
|
|
173
|
+
*
|
|
174
|
+
* Hung off the artifact root by default, which is the project root on
|
|
175
|
+
* every local run. A box overrides it, and has to: the run executes in a
|
|
176
|
+
* container with exactly two mounts, and the default sits outside both —
|
|
177
|
+
* the bundle directory could not be created at all, so a failed run
|
|
178
|
+
* showed no screenshot, no trace and no page.html. The override puts the
|
|
179
|
+
* bundles inside the environment's artifact tree, which both the run and
|
|
180
|
+
* the viewer already have. */
|
|
181
|
+
declare const FAILURES_ROOT_ENV = "UNOTEST_FAILURES_ROOT";
|
|
182
|
+
/** Resolve the failures root from a process-env-like record, falling back
|
|
183
|
+
* to what the caller derives from the artifact root. Blank is treated as
|
|
184
|
+
* unset, like every other root here. */
|
|
185
|
+
declare function failuresRootFrom(env: Record<string, string | undefined>, defaultRoot: string): string;
|
|
162
186
|
/** Read an environment name from a process-env-like record (`UNOTEST_ENV`),
|
|
163
187
|
* normalising empty/blank to `undefined` (= base only). */
|
|
164
188
|
declare function activeEnvName(env: Record<string, string | undefined>): string | undefined;
|
|
@@ -225,6 +249,13 @@ declare function requireRunDirFor(runsRoot: string, runId: string): string;
|
|
|
225
249
|
/** Project-relative runs root for a target + environment:
|
|
226
250
|
* `unotest/.runs<suffix>[.<env>]`. */
|
|
227
251
|
declare function projectRunsRoot(suffix?: string, envName?: string): string;
|
|
252
|
+
/** Where an environment's failure bundles live, under an artifact root.
|
|
253
|
+
* Inside the runs tree rather than beside it, because that tree is the
|
|
254
|
+
* one directory both sides of a box already have: a run's container
|
|
255
|
+
* mounts it, and so does the viewer that serves the screenshots. Every
|
|
256
|
+
* spawner (`box-runner` for containers, `boxd` for host processes) hands
|
|
257
|
+
* this to `UNOTEST_FAILURES_ROOT` in its own coordinates. */
|
|
258
|
+
declare function failuresRootIn(artifactsRoot: string, envName?: string): string;
|
|
228
259
|
/** Project-relative directory of one run, shard included. The single
|
|
229
260
|
* place that knows how a run id becomes a path — every writer and reader
|
|
230
261
|
* goes through here, so the layout cannot drift between them. */
|
|
@@ -931,6 +962,21 @@ type CiRunErrorCode =
|
|
|
931
962
|
| "no-collections"
|
|
932
963
|
/** Not a readable request. */
|
|
933
964
|
| "malformed"
|
|
965
|
+
/** A cloud-minted token whose `exp` has passed, with nothing else wrong
|
|
966
|
+
* with it: this box's operator key signed it, for the right kind, for
|
|
967
|
+
* this box. Its own code because the answer differs from every other
|
|
968
|
+
* refusal — ask the cloud for another pair and retry, rather than "this
|
|
969
|
+
* credential is wrong". Only the holder of a genuinely signed token for
|
|
970
|
+
* THIS box ever sees it, so it tells a guesser nothing. */
|
|
971
|
+
| "expired"
|
|
972
|
+
/** This box has never read the operator's revocation list, so it cannot
|
|
973
|
+
* tell a live cloud-minted token from a withdrawn one and takes
|
|
974
|
+
* neither. A state of the BOX: send the SAME token again after
|
|
975
|
+
* `retryAfterSeconds`, never mint a new one. */
|
|
976
|
+
| "revocation-list-unavailable"
|
|
977
|
+
/** A cloud-minted token that names no project, on a box that serves
|
|
978
|
+
* several. The message lists them; the token has to name one. */
|
|
979
|
+
| "ambiguous-project"
|
|
934
980
|
/** The bundle could not be installed on the box. Retryable. */
|
|
935
981
|
| "storage";
|
|
936
982
|
interface CiRunError {
|
|
@@ -1215,6 +1261,17 @@ declare const BUNDLE_UPLOAD_PATH = "/api/box/bundles";
|
|
|
1215
1261
|
* credential — `BOX_READ_TOKEN_ENV` in `box-read.ts`. */
|
|
1216
1262
|
declare const BOX_URL_ENV = "UNOTEST_BOX_URL";
|
|
1217
1263
|
declare const BOX_TOKEN_ENV = "UNOTEST_BOX_TOKEN";
|
|
1264
|
+
/** What a hand-minted project token starts with. Cloud-signed tokens
|
|
1265
|
+
* carry no such prefix; the one thing the prefix is good for on the
|
|
1266
|
+
* client is recognising a push token pasted where a read token goes. */
|
|
1267
|
+
declare const BOX_PUSH_TOKEN_PREFIX = "unob_";
|
|
1268
|
+
/** What a CLOUD-signed box token starts with — push, read and picker
|
|
1269
|
+
* alike; the kind is inside the signed claims. Minted by `box create`
|
|
1270
|
+
* and `box access`, never by hand. */
|
|
1271
|
+
declare const BOX_SIGNED_TOKEN_PREFIX = "unos_";
|
|
1272
|
+
/** The whole shape of a cloud-signed token, checked before any network
|
|
1273
|
+
* call — box-kit's `encodeSignedToken` output. */
|
|
1274
|
+
declare const BOX_SIGNED_TOKEN: RegExp;
|
|
1218
1275
|
/** Set by a box on every run it starts: which bundle the sources came
|
|
1219
1276
|
* from. The runner stamps it into the run's manifest, so history keeps
|
|
1220
1277
|
* the answer to "which code produced this" after the environment has
|
|
@@ -1341,6 +1398,21 @@ type BundleUploadErrorCode =
|
|
|
1341
1398
|
| "min-version"
|
|
1342
1399
|
/** The token's scope does not match where the bundle says it is from. */
|
|
1343
1400
|
| "scope-mismatch"
|
|
1401
|
+
/** A cloud-minted token whose `exp` has passed, with nothing else wrong
|
|
1402
|
+
* with it: this box's operator key signed it, for the right kind, for
|
|
1403
|
+
* this box. Its own code because the answer differs from every other
|
|
1404
|
+
* refusal — ask the cloud for another pair and retry, rather than "this
|
|
1405
|
+
* credential is wrong". Only the holder of a genuinely signed token for
|
|
1406
|
+
* THIS box ever sees it, so it tells a guesser nothing. */
|
|
1407
|
+
| "expired"
|
|
1408
|
+
/** This box has never read the operator's revocation list, so it cannot
|
|
1409
|
+
* tell a live cloud-minted token from a withdrawn one and takes
|
|
1410
|
+
* neither. A state of the BOX: send the SAME token again after
|
|
1411
|
+
* `retryAfterSeconds`, never mint a new one. */
|
|
1412
|
+
| "revocation-list-unavailable"
|
|
1413
|
+
/** A cloud-minted token that names no project, on a box that serves
|
|
1414
|
+
* several. The message lists them; the token has to name one. */
|
|
1415
|
+
| "ambiguous-project"
|
|
1344
1416
|
/** The box could not store it (disk, permissions). Retryable. */
|
|
1345
1417
|
| "storage";
|
|
1346
1418
|
interface BundleUploadError {
|
|
@@ -1522,6 +1594,21 @@ type BoxValuesErrorCode =
|
|
|
1522
1594
|
| "reserved"
|
|
1523
1595
|
/** Not a readable request. */
|
|
1524
1596
|
| "malformed"
|
|
1597
|
+
/** A cloud-minted token whose `exp` has passed, with nothing else wrong
|
|
1598
|
+
* with it: this box's operator key signed it, for the right kind, for
|
|
1599
|
+
* this box. Its own code because the answer differs from every other
|
|
1600
|
+
* refusal — ask the cloud for another pair and retry, rather than "this
|
|
1601
|
+
* credential is wrong". Only the holder of a genuinely signed token for
|
|
1602
|
+
* THIS box ever sees it, so it tells a guesser nothing. */
|
|
1603
|
+
| "expired"
|
|
1604
|
+
/** This box has never read the operator's revocation list, so it cannot
|
|
1605
|
+
* tell a live cloud-minted token from a withdrawn one and takes
|
|
1606
|
+
* neither. A state of the BOX: send the SAME token again after
|
|
1607
|
+
* `retryAfterSeconds`, never mint a new one. */
|
|
1608
|
+
| "revocation-list-unavailable"
|
|
1609
|
+
/** A cloud-minted token that names no project, on a box that serves
|
|
1610
|
+
* several. The message lists them; the token has to name one. */
|
|
1611
|
+
| "ambiguous-project"
|
|
1525
1612
|
/** The box could not write its state. Retryable. */
|
|
1526
1613
|
| "storage";
|
|
1527
1614
|
interface BoxValuesError {
|
|
@@ -1562,6 +1649,315 @@ interface BoxEnvValuesView {
|
|
|
1562
1649
|
secrets: string[];
|
|
1563
1650
|
}
|
|
1564
1651
|
|
|
1652
|
+
declare const RUN_MANIFEST_FILE = "manifest.json";
|
|
1653
|
+
interface RunManifest {
|
|
1654
|
+
/** Format-version of this manifest. Bump only on breaking schema
|
|
1655
|
+
* changes — additive optional fields don't require it. Starts at 1. */
|
|
1656
|
+
schemaVersion: 1;
|
|
1657
|
+
/** Identifies which RunRequest variant produced this run. */
|
|
1658
|
+
kind: RunKind;
|
|
1659
|
+
/** Original (un-sanitized) `ref` from the request — scenario `name`
|
|
1660
|
+
* for `kind:"scenario"`, collection `name` for `kind:"collection"`.
|
|
1661
|
+
* The `runId` directory uses a sanitized form; this carries the
|
|
1662
|
+
* human-readable original. */
|
|
1663
|
+
ref: string;
|
|
1664
|
+
/** Run-id of the parent collection-run when this is a child scenario
|
|
1665
|
+
* spawned inside a collection. Absent for top-level scenario-runs
|
|
1666
|
+
* and for collection-runs themselves. */
|
|
1667
|
+
parentRunId?: string;
|
|
1668
|
+
/** Adapter `name` that produced this run (`"@unotest/web"`,
|
|
1669
|
+
* `"@unotest/mobile"`). Lets the viewer pick rendering details for
|
|
1670
|
+
* runner-specific bundle contents without runner branches in core
|
|
1671
|
+
* logic. */
|
|
1672
|
+
adapter: string;
|
|
1673
|
+
/** Wallclock at runner start. Distinct from the first event's `t`
|
|
1674
|
+
* (which may have leading delay for adapter setup). */
|
|
1675
|
+
startedAt: number;
|
|
1676
|
+
/** Environment name the run resolved (`UNOTEST_ENV` / `--env`), absent
|
|
1677
|
+
* for base. Self-description only — placement already encodes it (the
|
|
1678
|
+
* run lives under `.runs<suffix>.<env>`), so nothing filters on this. */
|
|
1679
|
+
env?: string;
|
|
1680
|
+
/** Opt-in artifact-capture flags as resolved from the runner's env at
|
|
1681
|
+
* start (`UNOTEST_CONSOLE` / `UNOTEST_NETWORK`). Recorded here so the
|
|
1682
|
+
* viewer can tell "capture was disabled" apart from "capture was on but
|
|
1683
|
+
* the run aborted before writing console.json / network.json" — a
|
|
1684
|
+
* distinction the mere presence of those files can't make. Optional: runs
|
|
1685
|
+
* produced before this field existed simply omit it, and the viewer falls
|
|
1686
|
+
* back to a file-presence heuristic. */
|
|
1687
|
+
capture?: {
|
|
1688
|
+
console: boolean;
|
|
1689
|
+
network: boolean;
|
|
1690
|
+
};
|
|
1691
|
+
/** Which test bundle produced this run, when the sources came from one
|
|
1692
|
+
* (`UNOTEST_BUNDLE_ID`, set by a box). Absent for every local run,
|
|
1693
|
+
* where the sources are simply the working directory.
|
|
1694
|
+
*
|
|
1695
|
+
* Recorded so history stays readable after the fact: a box runs many
|
|
1696
|
+
* bundles into one environment, and "which code produced this red
|
|
1697
|
+
* run" is otherwise unanswerable once the environment moved on. */
|
|
1698
|
+
bundleId?: string;
|
|
1699
|
+
/** What set the run off. Absent on a manifest written before the field
|
|
1700
|
+
* existed, and on every run nobody described — both read as `cli`
|
|
1701
|
+
* (see {@link manifestTrigger}). */
|
|
1702
|
+
trigger?: RunTrigger;
|
|
1703
|
+
}
|
|
1704
|
+
/** Who or what started a run. `schedule` — a box's own timer; `ci` — a
|
|
1705
|
+
* provider's push or pull request through the box; `manual` — a person
|
|
1706
|
+
* (or their agent) pressing Run in the viewer; `cli` — a terminal, which
|
|
1707
|
+
* is also the answer for a run that said nothing. */
|
|
1708
|
+
type RunTriggerKind = "schedule" | "ci" | "manual" | "cli";
|
|
1709
|
+
interface RunTrigger {
|
|
1710
|
+
kind: RunTriggerKind;
|
|
1711
|
+
/** Who, or which change: a login, `push a1b2c3d (feature/x)`. Absent when
|
|
1712
|
+
* the trigger has nobody to name (a schedule). */
|
|
1713
|
+
by?: string;
|
|
1714
|
+
}
|
|
1715
|
+
/** `UNOTEST_RUN_TRIGGER` — a {@link RunTriggerKind}, set by whoever spawns
|
|
1716
|
+
* the runner: a box for its scheduled and CI runs, the viewer for a run
|
|
1717
|
+
* ordered from its UI. A terminal sets nothing. */
|
|
1718
|
+
declare const RUN_TRIGGER_ENV = "UNOTEST_RUN_TRIGGER";
|
|
1719
|
+
/** `UNOTEST_RUN_ACTOR` — the trigger's `by`, optional. */
|
|
1720
|
+
declare const RUN_ACTOR_ENV = "UNOTEST_RUN_ACTOR";
|
|
1721
|
+
/** The trigger the environment describes, or undefined when it describes
|
|
1722
|
+
* none — a value that is not a trigger kind is a caller's mistake and is
|
|
1723
|
+
* treated as silence rather than guessed at. */
|
|
1724
|
+
declare function runTriggerFromEnv(env: Readonly<Record<string, string | undefined>>): RunTrigger | undefined;
|
|
1725
|
+
/** The variables that hand a trigger to a runner — the inverse of
|
|
1726
|
+
* {@link runTriggerFromEnv}, so a box and the viewer spell them the same
|
|
1727
|
+
* way. */
|
|
1728
|
+
declare function runTriggerEnv(trigger: RunTrigger): Record<string, string>;
|
|
1729
|
+
/** A manifest's trigger, with the default spelled out: no field = `cli`. */
|
|
1730
|
+
declare function manifestTrigger(manifest: Pick<RunManifest, "trigger">): RunTrigger;
|
|
1731
|
+
|
|
1732
|
+
/** Session-door root:
|
|
1733
|
+
*
|
|
1734
|
+
* GET /api/box/notify every project
|
|
1735
|
+
* GET /api/box/notify/<project> one project, secrets as set:true
|
|
1736
|
+
* PUT /api/box/notify/<project>/channels/<id> create or update
|
|
1737
|
+
* PATCH /api/box/notify/<project>/channels/<id> {"enabled": …}
|
|
1738
|
+
* DELETE /api/box/notify/<project>/channels/<id>
|
|
1739
|
+
* POST /api/box/notify/<project>/channels/<id>/test
|
|
1740
|
+
* PUT/PATCH/DELETE /api/box/notify/<project>/rules/<id>
|
|
1741
|
+
* PUT/DELETE /api/box/notify/<project>/quiet-hours
|
|
1742
|
+
* GET /api/box/notify/<project>/series the ledger
|
|
1743
|
+
* POST /api/box/notify/<project>/series/<key>/reset
|
|
1744
|
+
* PUT/DELETE /api/box/notify/<project>/mutes/<id>
|
|
1745
|
+
* GET /api/box/notify/<project>/preview?rule=<id>&state=<state>
|
|
1746
|
+
*/
|
|
1747
|
+
declare const BOX_NOTIFY_PATH = "/api/box/notify";
|
|
1748
|
+
declare function boxNotifyProjectPath(project: string): string;
|
|
1749
|
+
declare function boxNotifyChannelPath(project: string, channelId: string): string;
|
|
1750
|
+
declare function boxNotifyTestPath(project: string, channelId: string): string;
|
|
1751
|
+
declare function boxNotifyRulePath(project: string, ruleId: string): string;
|
|
1752
|
+
declare function boxNotifyQuietHoursPath(project: string): string;
|
|
1753
|
+
declare function boxNotifySeriesPath(project: string): string;
|
|
1754
|
+
/** The key (`project/env/kind:name`) travels as ONE segment. */
|
|
1755
|
+
declare function boxNotifySeriesResetPath(project: string, seriesKey: string): string;
|
|
1756
|
+
declare function boxNotifyMutePath(project: string, muteId: string): string;
|
|
1757
|
+
declare function boxNotifyPreviewPath(project: string, ruleId: string, state: BoxNotifyState): string;
|
|
1758
|
+
type BoxNotifyChannelKind = "slack" | "telegram" | "webhook";
|
|
1759
|
+
declare const BOX_NOTIFY_CHANNEL_KINDS: readonly BoxNotifyChannelKind[];
|
|
1760
|
+
type BoxNotifyTriggerKind = RunTriggerKind;
|
|
1761
|
+
declare const BOX_NOTIFY_TRIGGER_KINDS: readonly BoxNotifyTriggerKind[];
|
|
1762
|
+
/** What a rule subscribes to. `passed` is said only about runs that are
|
|
1763
|
+
* not scheduled ticks; a schedule says `recovered`. */
|
|
1764
|
+
type BoxNotifyEvent = "failed" | "recovered" | "not-run" | "passed";
|
|
1765
|
+
declare const BOX_NOTIFY_EVENTS: readonly BoxNotifyEvent[];
|
|
1766
|
+
/** What a message can be about — the events plus the reminder. */
|
|
1767
|
+
type BoxNotifyState = BoxNotifyEvent | "still-failing";
|
|
1768
|
+
declare const BOX_NOTIFY_STATES: readonly BoxNotifyState[];
|
|
1769
|
+
/** A credential as a page sees it: whether there is one. */
|
|
1770
|
+
interface BoxNotifySecret {
|
|
1771
|
+
set: boolean;
|
|
1772
|
+
}
|
|
1773
|
+
interface BoxNotifyLastDelivery {
|
|
1774
|
+
at: number;
|
|
1775
|
+
outcome: "sent" | "failed";
|
|
1776
|
+
error?: string;
|
|
1777
|
+
}
|
|
1778
|
+
interface BoxNotifyChannelCommon {
|
|
1779
|
+
id: string;
|
|
1780
|
+
name: string;
|
|
1781
|
+
enabled: boolean;
|
|
1782
|
+
lastDelivery?: BoxNotifyLastDelivery;
|
|
1783
|
+
}
|
|
1784
|
+
type BoxNotifyChannelView = BoxNotifyChannelCommon & ({
|
|
1785
|
+
kind: "slack";
|
|
1786
|
+
webhookUrl: BoxNotifySecret;
|
|
1787
|
+
} | {
|
|
1788
|
+
kind: "telegram";
|
|
1789
|
+
botToken: BoxNotifySecret;
|
|
1790
|
+
chatId: string;
|
|
1791
|
+
threadId?: string;
|
|
1792
|
+
}
|
|
1793
|
+
/** Header VALUES are credentials (the receiver's `Authorization`,
|
|
1794
|
+
* most of the time): the view keeps the names and says `{ set }`. */
|
|
1795
|
+
| {
|
|
1796
|
+
kind: "webhook";
|
|
1797
|
+
url: string;
|
|
1798
|
+
secret: BoxNotifySecret;
|
|
1799
|
+
headers?: Record<string, BoxNotifySecret>;
|
|
1800
|
+
});
|
|
1801
|
+
interface BoxNotifyRule {
|
|
1802
|
+
id: string;
|
|
1803
|
+
name?: string;
|
|
1804
|
+
enabled: boolean;
|
|
1805
|
+
/** Absent = every environment of the project. */
|
|
1806
|
+
environments?: string[];
|
|
1807
|
+
triggers: BoxNotifyTriggerKind[];
|
|
1808
|
+
events: BoxNotifyEvent[];
|
|
1809
|
+
/** Channel ids. */
|
|
1810
|
+
channels: string[];
|
|
1811
|
+
afterFailures: number;
|
|
1812
|
+
/** Milliseconds. */
|
|
1813
|
+
repeatEvery?: number;
|
|
1814
|
+
}
|
|
1815
|
+
type BoxNotifyMuteScope = {
|
|
1816
|
+
series: string;
|
|
1817
|
+
} | {
|
|
1818
|
+
project: true;
|
|
1819
|
+
};
|
|
1820
|
+
interface BoxNotifyMute {
|
|
1821
|
+
id: string;
|
|
1822
|
+
scope: BoxNotifyMuteScope;
|
|
1823
|
+
/** Unix milliseconds; absent = until unmuted. */
|
|
1824
|
+
until?: number;
|
|
1825
|
+
by: string;
|
|
1826
|
+
reason?: string;
|
|
1827
|
+
at: number;
|
|
1828
|
+
}
|
|
1829
|
+
interface BoxNotifyQuietHours {
|
|
1830
|
+
from: string;
|
|
1831
|
+
to: string;
|
|
1832
|
+
/** IANA zone. */
|
|
1833
|
+
tz: string;
|
|
1834
|
+
}
|
|
1835
|
+
interface BoxNotifyProjectView {
|
|
1836
|
+
project: string;
|
|
1837
|
+
channels: BoxNotifyChannelView[];
|
|
1838
|
+
rules: BoxNotifyRule[];
|
|
1839
|
+
mutes: BoxNotifyMute[];
|
|
1840
|
+
quietHours?: BoxNotifyQuietHours;
|
|
1841
|
+
}
|
|
1842
|
+
interface BoxNotifyView {
|
|
1843
|
+
projects: BoxNotifyProjectView[];
|
|
1844
|
+
}
|
|
1845
|
+
/** One series of the ledger, as the page's table shows it. */
|
|
1846
|
+
interface BoxNotifySeriesEntry {
|
|
1847
|
+
/** `<project>/<environment>/<kind>:<name>`. */
|
|
1848
|
+
key: string;
|
|
1849
|
+
environment: string;
|
|
1850
|
+
target: {
|
|
1851
|
+
kind: "collection" | "scenario";
|
|
1852
|
+
name: string;
|
|
1853
|
+
};
|
|
1854
|
+
state: "ok" | "failed";
|
|
1855
|
+
/** The daemon's word for why (`tests-failed`, `not-arrived`, …). */
|
|
1856
|
+
reason: string;
|
|
1857
|
+
since: number;
|
|
1858
|
+
failures: number;
|
|
1859
|
+
lastNotifiedAt?: number;
|
|
1860
|
+
/** The mute covering it now, if any. */
|
|
1861
|
+
mute?: BoxNotifyMute;
|
|
1862
|
+
}
|
|
1863
|
+
interface BoxNotifySeriesView {
|
|
1864
|
+
project: string;
|
|
1865
|
+
series: BoxNotifySeriesEntry[];
|
|
1866
|
+
}
|
|
1867
|
+
/** The text a rule would send for one state — the daemon renders it from
|
|
1868
|
+
* a made-up run so the page can show it next to the rule. */
|
|
1869
|
+
interface BoxNotifyPreview {
|
|
1870
|
+
state: BoxNotifyState;
|
|
1871
|
+
title: string;
|
|
1872
|
+
lines: string[];
|
|
1873
|
+
url?: string;
|
|
1874
|
+
}
|
|
1875
|
+
/** `POST …/test` — what happened to the test event. */
|
|
1876
|
+
type BoxNotifyTestResult =
|
|
1877
|
+
/** `note` — a caveat on a delivery that went through: the channel is
|
|
1878
|
+
* switched off, so real events will not follow yet. */
|
|
1879
|
+
{
|
|
1880
|
+
status: "sent";
|
|
1881
|
+
channel: string;
|
|
1882
|
+
note?: string;
|
|
1883
|
+
} | {
|
|
1884
|
+
status: "failed";
|
|
1885
|
+
channel: string;
|
|
1886
|
+
message: string;
|
|
1887
|
+
};
|
|
1888
|
+
/** What a write answers with: which record, and what became of it. */
|
|
1889
|
+
interface BoxNotifyChanged {
|
|
1890
|
+
status: "created" | "updated" | "removed";
|
|
1891
|
+
id: string;
|
|
1892
|
+
}
|
|
1893
|
+
/** `PUT …/channels/<id>`. On an update a secret left out is KEPT — the
|
|
1894
|
+
* page never has the value to send back; on a create it is required. */
|
|
1895
|
+
type BoxNotifyChannelWrite = {
|
|
1896
|
+
name: string;
|
|
1897
|
+
enabled?: boolean;
|
|
1898
|
+
} & ({
|
|
1899
|
+
kind: "slack";
|
|
1900
|
+
webhookUrl?: string;
|
|
1901
|
+
} | {
|
|
1902
|
+
kind: "telegram";
|
|
1903
|
+
botToken?: string;
|
|
1904
|
+
chatId: string;
|
|
1905
|
+
threadId?: string;
|
|
1906
|
+
} | {
|
|
1907
|
+
kind: "webhook";
|
|
1908
|
+
url: string;
|
|
1909
|
+
secret?: string;
|
|
1910
|
+
headers?: Record<string, string>;
|
|
1911
|
+
});
|
|
1912
|
+
interface BoxNotifyEnabledPatch {
|
|
1913
|
+
enabled: boolean;
|
|
1914
|
+
}
|
|
1915
|
+
/** `PUT …/rules/<id>`. `enabled` absent keeps the rule's switch as it is
|
|
1916
|
+
* (a new rule is on). */
|
|
1917
|
+
interface BoxNotifyRuleWrite {
|
|
1918
|
+
name?: string;
|
|
1919
|
+
enabled?: boolean;
|
|
1920
|
+
environments?: string[];
|
|
1921
|
+
triggers?: BoxNotifyTriggerKind[];
|
|
1922
|
+
events?: BoxNotifyEvent[];
|
|
1923
|
+
channels: string[];
|
|
1924
|
+
afterFailures?: number;
|
|
1925
|
+
repeatEvery?: number;
|
|
1926
|
+
}
|
|
1927
|
+
interface BoxNotifyMuteWrite {
|
|
1928
|
+
scope: BoxNotifyMuteScope;
|
|
1929
|
+
until?: number;
|
|
1930
|
+
reason?: string;
|
|
1931
|
+
}
|
|
1932
|
+
type BoxNotifyQuietHoursWrite = BoxNotifyQuietHours;
|
|
1933
|
+
/** Why a notify request was refused. A code, not a message — the CLI and
|
|
1934
|
+
* the page turn each into their own advice. */
|
|
1935
|
+
type BoxNotifyErrorCode =
|
|
1936
|
+
/** No actor on the session door. */
|
|
1937
|
+
"unauthorized" | "unknown-project" | "unknown-channel" | "unknown-rule" | "unknown-mute" | "unknown-series"
|
|
1938
|
+
/** The body is not what the route takes, or the daemon's schema refused
|
|
1939
|
+
* it (a rule naming no channel, a duplicate name, a bad zone). */
|
|
1940
|
+
| "malformed" | "storage";
|
|
1941
|
+
interface BoxNotifyError {
|
|
1942
|
+
error: {
|
|
1943
|
+
code: BoxNotifyErrorCode;
|
|
1944
|
+
message: string;
|
|
1945
|
+
};
|
|
1946
|
+
}
|
|
1947
|
+
declare function parseBoxNotifyView(value: unknown): BoxNotifyView | null;
|
|
1948
|
+
declare function parseBoxNotifyProjectView(value: unknown): BoxNotifyProjectView | null;
|
|
1949
|
+
declare function parseBoxNotifySeriesView(value: unknown): BoxNotifySeriesView | null;
|
|
1950
|
+
declare function parseBoxNotifyPreview(value: unknown): BoxNotifyPreview | null;
|
|
1951
|
+
declare function parseBoxNotifyTestResult(value: unknown): BoxNotifyTestResult | null;
|
|
1952
|
+
declare function parseBoxNotifyChanged(value: unknown): BoxNotifyChanged | null;
|
|
1953
|
+
/** The daemon's refusal, or null when the body is not one of ours. */
|
|
1954
|
+
declare function parseBoxNotifyError(value: unknown): BoxNotifyError | null;
|
|
1955
|
+
declare function isBoxNotifyState(value: unknown): value is BoxNotifyState;
|
|
1956
|
+
/** The trigger a preview is rendered with, from a rule's first trigger —
|
|
1957
|
+
* kept here so the daemon and the page name the same sample actor. */
|
|
1958
|
+
declare function boxNotifyPreviewTrigger(kind: BoxNotifyTriggerKind): RunTrigger;
|
|
1959
|
+
declare function parseBoxNotifyMuteScope(value: unknown): BoxNotifyMuteScope | null;
|
|
1960
|
+
|
|
1565
1961
|
/** The personal read token, for people and agents that would rather not
|
|
1566
1962
|
* repeat it on every command line. Deliberately NOT `UNOTEST_BOX_TOKEN`
|
|
1567
1963
|
* (see {@link BOX_TOKEN_ENV}): one is the project's push credential, the
|
|
@@ -1645,14 +2041,40 @@ type BoxReadErrorCode =
|
|
|
1645
2041
|
* and the right response is to wait — which is why it is not folded
|
|
1646
2042
|
* into "could not reach the box", whose advice is to check the URL. */
|
|
1647
2043
|
| "unavailable"
|
|
2044
|
+
/** A cloud-minted token whose `exp` has passed, with nothing else wrong
|
|
2045
|
+
* with it: this box's operator key signed it, for the right kind, for
|
|
2046
|
+
* this box. Its own code because the answer differs from every other
|
|
2047
|
+
* refusal — ask the cloud for another pair and retry, rather than "this
|
|
2048
|
+
* credential is wrong". Only the holder of a genuinely signed token for
|
|
2049
|
+
* THIS box ever sees it, so it tells a guesser nothing. */
|
|
2050
|
+
| "expired"
|
|
2051
|
+
/** The box cannot judge a cloud-minted token yet: it has never read the
|
|
2052
|
+
* operator's revocation list, and a token that cannot be checked against
|
|
2053
|
+
* it is refused rather than trusted. A state of the BOX, not of the
|
|
2054
|
+
* token — which is why it is not folded into `unauthorized`: the answer
|
|
2055
|
+
* is to send the same token again shortly ({@link
|
|
2056
|
+
* BoxReadErrorBody.error.retryAfterSeconds}, and a `Retry-After`
|
|
2057
|
+
* header), never to mint a new one. */
|
|
2058
|
+
| "revocation-list-unavailable"
|
|
1648
2059
|
/** Not a readable request. */
|
|
1649
2060
|
| "malformed";
|
|
2061
|
+
/** How long a box asks a caller to wait before presenting the same token
|
|
2062
|
+
* again after {@link BoxReadErrorCode} `revocation-list-unavailable`. One
|
|
2063
|
+
* number for both doors of a box — the guard's read door and the daemon's
|
|
2064
|
+
* push door — because a client that meets one meets the other on the same
|
|
2065
|
+
* box in the same state. Roughly a tick of the updater, which is what has
|
|
2066
|
+
* to happen for the answer to change. */
|
|
2067
|
+
declare const BOX_REVOCATIONS_RETRY_AFTER_SECONDS = 60;
|
|
1650
2068
|
/** The body of a refusal. Named `…Body` because the CLIENT's exception
|
|
1651
2069
|
* class is `BoxReadError` — this is the JSON it was built from. */
|
|
1652
2070
|
interface BoxReadErrorBody {
|
|
1653
2071
|
error: {
|
|
1654
2072
|
code: BoxReadErrorCode;
|
|
1655
2073
|
message: string;
|
|
2074
|
+
/** How long to wait before sending the SAME request again. Only on the
|
|
2075
|
+
* refusals that are worth retrying unchanged — today
|
|
2076
|
+
* `revocation-list-unavailable`; the header carries the same number. */
|
|
2077
|
+
retryAfterSeconds?: number;
|
|
1656
2078
|
};
|
|
1657
2079
|
}
|
|
1658
2080
|
/** Parse a refusal. Null when the body is not one of ours — an HTML
|
|
@@ -1665,6 +2087,55 @@ declare function parseBoxReadError(value: unknown): BoxReadErrorBody | null;
|
|
|
1665
2087
|
* not recognise is not a box answering. */
|
|
1666
2088
|
declare function parseBoxReadEnvironments(value: unknown): BoxReadEnvironment[] | null;
|
|
1667
2089
|
|
|
2090
|
+
declare const BOX_RUNS_SEGMENT = "runs";
|
|
2091
|
+
/** Set by the guard, forwarded by the viewer verbatim, verified by the
|
|
2092
|
+
* daemon: WHO clicked, in a form the thing in between cannot write.
|
|
2093
|
+
* Named here because three packages have to spell it identically and
|
|
2094
|
+
* this is the one they all already depend on — the signing and the
|
|
2095
|
+
* verification live on the box side (`@unotest/box-kit`), which is
|
|
2096
|
+
* where the secret is. */
|
|
2097
|
+
declare const ACTOR_TICKET_HEADER = "x-unotest-actor-ticket";
|
|
2098
|
+
/** Set by the guard on its own requests to the daemon. The daemon reads
|
|
2099
|
+
* the actor label only next to a valid one. */
|
|
2100
|
+
declare const GUARD_SECRET_HEADER = "x-unotest-guard-secret";
|
|
2101
|
+
/** `/api/box/envs/<project>/<env>/runs`. */
|
|
2102
|
+
declare function boxRunsPath(project: string, environment: string): string;
|
|
2103
|
+
/** `/api/box/envs/<project>/<env>/runs/<runId>`. */
|
|
2104
|
+
declare function boxRunPath(project: string, environment: string, runId: string): string;
|
|
2105
|
+
/** What the viewer asks for. Deliberately not the viewer's own
|
|
2106
|
+
* `RunRequest`: that one carries local concerns (worker counts, debug
|
|
2107
|
+
* flags) the box decides for itself, and a box route that accepted them
|
|
2108
|
+
* would be a second way to configure a run. */
|
|
2109
|
+
interface BoxRunRequest {
|
|
2110
|
+
kind: "collection" | "scenario";
|
|
2111
|
+
/** Collection name, or a scenario ref (`folder/test`). */
|
|
2112
|
+
ref: string;
|
|
2113
|
+
}
|
|
2114
|
+
/** The daemon accepted the ticket. The run has NOT started — on a busy
|
|
2115
|
+
* box it may wait behind a suite for a while, which is the whole point
|
|
2116
|
+
* of there being one queue.
|
|
2117
|
+
*
|
|
2118
|
+
* No ticket name: the queue's file names are the box's own business,
|
|
2119
|
+
* and stopping a run goes back through `DELETE …/runs/<runId>` rather
|
|
2120
|
+
* than through the queue directly. The run id is the only handle a
|
|
2121
|
+
* caller needs, and the only one it is given. */
|
|
2122
|
+
interface BoxRunAccepted {
|
|
2123
|
+
runId: string;
|
|
2124
|
+
acceptedAt: number;
|
|
2125
|
+
}
|
|
2126
|
+
type BoxRunState = "queued" | "running" | "finished";
|
|
2127
|
+
interface BoxRunStatus {
|
|
2128
|
+
runId: string;
|
|
2129
|
+
state: BoxRunState;
|
|
2130
|
+
/** Present once the run ended. `null` when it died on a signal. */
|
|
2131
|
+
exitCode?: number | null;
|
|
2132
|
+
startedAt?: number;
|
|
2133
|
+
finishedAt?: number;
|
|
2134
|
+
}
|
|
2135
|
+
declare function parseBoxRunRequest(value: unknown): BoxRunRequest | null;
|
|
2136
|
+
declare function parseBoxRunAccepted(value: unknown): BoxRunAccepted | null;
|
|
2137
|
+
declare function parseBoxRunStatus(value: unknown): BoxRunStatus | null;
|
|
2138
|
+
|
|
1668
2139
|
declare const WORKSPACE_SCHEMA_VERSION = 1;
|
|
1669
2140
|
/** Written by the host beside the artifacts it manages:
|
|
1670
2141
|
* `<artifactsRoot>/unotest/.workspace.json`. In the artifact tree and
|
|
@@ -1927,55 +2398,6 @@ interface CollectionMeta {
|
|
|
1927
2398
|
prepare: string | null;
|
|
1928
2399
|
}
|
|
1929
2400
|
|
|
1930
|
-
declare const RUN_MANIFEST_FILE = "manifest.json";
|
|
1931
|
-
interface RunManifest {
|
|
1932
|
-
/** Format-version of this manifest. Bump only on breaking schema
|
|
1933
|
-
* changes — additive optional fields don't require it. Starts at 1. */
|
|
1934
|
-
schemaVersion: 1;
|
|
1935
|
-
/** Identifies which RunRequest variant produced this run. */
|
|
1936
|
-
kind: RunKind;
|
|
1937
|
-
/** Original (un-sanitized) `ref` from the request — scenario `name`
|
|
1938
|
-
* for `kind:"scenario"`, collection `name` for `kind:"collection"`.
|
|
1939
|
-
* The `runId` directory uses a sanitized form; this carries the
|
|
1940
|
-
* human-readable original. */
|
|
1941
|
-
ref: string;
|
|
1942
|
-
/** Run-id of the parent collection-run when this is a child scenario
|
|
1943
|
-
* spawned inside a collection. Absent for top-level scenario-runs
|
|
1944
|
-
* and for collection-runs themselves. */
|
|
1945
|
-
parentRunId?: string;
|
|
1946
|
-
/** Adapter `name` that produced this run (`"@unotest/web"`,
|
|
1947
|
-
* `"@unotest/mobile"`). Lets the viewer pick rendering details for
|
|
1948
|
-
* runner-specific bundle contents without runner branches in core
|
|
1949
|
-
* logic. */
|
|
1950
|
-
adapter: string;
|
|
1951
|
-
/** Wallclock at runner start. Distinct from the first event's `t`
|
|
1952
|
-
* (which may have leading delay for adapter setup). */
|
|
1953
|
-
startedAt: number;
|
|
1954
|
-
/** Environment name the run resolved (`UNOTEST_ENV` / `--env`), absent
|
|
1955
|
-
* for base. Self-description only — placement already encodes it (the
|
|
1956
|
-
* run lives under `.runs<suffix>.<env>`), so nothing filters on this. */
|
|
1957
|
-
env?: string;
|
|
1958
|
-
/** Opt-in artifact-capture flags as resolved from the runner's env at
|
|
1959
|
-
* start (`UNOTEST_CONSOLE` / `UNOTEST_NETWORK`). Recorded here so the
|
|
1960
|
-
* viewer can tell "capture was disabled" apart from "capture was on but
|
|
1961
|
-
* the run aborted before writing console.json / network.json" — a
|
|
1962
|
-
* distinction the mere presence of those files can't make. Optional: runs
|
|
1963
|
-
* produced before this field existed simply omit it, and the viewer falls
|
|
1964
|
-
* back to a file-presence heuristic. */
|
|
1965
|
-
capture?: {
|
|
1966
|
-
console: boolean;
|
|
1967
|
-
network: boolean;
|
|
1968
|
-
};
|
|
1969
|
-
/** Which test bundle produced this run, when the sources came from one
|
|
1970
|
-
* (`UNOTEST_BUNDLE_ID`, set by a box). Absent for every local run,
|
|
1971
|
-
* where the sources are simply the working directory.
|
|
1972
|
-
*
|
|
1973
|
-
* Recorded so history stays readable after the fact: a box runs many
|
|
1974
|
-
* bundles into one environment, and "which code produced this red
|
|
1975
|
-
* run" is otherwise unanswerable once the environment moved on. */
|
|
1976
|
-
bundleId?: string;
|
|
1977
|
-
}
|
|
1978
|
-
|
|
1979
2401
|
/** Snapshot file holding entry + every helper source that was loaded. */
|
|
1980
2402
|
declare const RUN_SOURCES_FILE = "sources.json";
|
|
1981
2403
|
interface RunSources {
|
|
@@ -2346,6 +2768,17 @@ declare function removeEnvVar(content: string, key: string): {
|
|
|
2346
2768
|
content: string;
|
|
2347
2769
|
removed: boolean;
|
|
2348
2770
|
};
|
|
2771
|
+
/**
|
|
2772
|
+
* Replace the value of an existing `KEY=…` line in place — same line,
|
|
2773
|
+
* same neighbours, same comments. Returns `replaced: false` and the
|
|
2774
|
+
* content untouched when no assignment for `key` exists; the caller then
|
|
2775
|
+
* inserts (see `insertEnvVar`). Together they are an upsert that never
|
|
2776
|
+
* moves a variable a person placed deliberately.
|
|
2777
|
+
*/
|
|
2778
|
+
declare function replaceEnvVar(content: string, key: string, value: string): {
|
|
2779
|
+
content: string;
|
|
2780
|
+
replaced: boolean;
|
|
2781
|
+
};
|
|
2349
2782
|
|
|
2350
2783
|
/** Which group the user is adding into. App/runner → `.env`, secret →
|
|
2351
2784
|
* `.secrets`. Mirrors VariableCategory as an INPUT (the user's choice). */
|
|
@@ -2894,4 +3327,4 @@ declare const JUDGE_ENV: {
|
|
|
2894
3327
|
readonly skipPreflight: "UNOTEST_JUDGE_SKIP_PREFLIGHT";
|
|
2895
3328
|
};
|
|
2896
3329
|
|
|
2897
|
-
export { ARTIFACTS_ROOT_ENV, type AddVariablePlan, type AddVariablePlanInput, type AppPathPickerSpec, type AppServerEvent, type AuthoringRunRequest, BLOBS_DIR, BOX_ENV_VALUES_SEGMENT, BOX_READ_ENVIRONMENTS_PATH, BOX_READ_ENVIRONMENT_HEADER, BOX_READ_TOKEN_ENV, BOX_READ_TOKEN_PREFIX, BOX_REVEAL_SEGMENT, BOX_SECRET_NAMES_ENV, BOX_TOKEN_ENV, BOX_URL_ENV, BOX_VALUES_PATH, BOX_VARIABLE_NAMES_ENV, BROWSER_CHANNEL_ENV, BROWSER_ENV, BUNDLED_BROWSER_CHANNEL, BUNDLE_ID_ENV, BUNDLE_MANIFEST_FILE, BUNDLE_SCHEMA_VERSION, BUNDLE_UPLOAD_PATH, type BoxEnvValuesReplaceRequest, type BoxEnvValuesView, type BoxReadEnvironment, type BoxReadErrorBody, type BoxReadErrorCode, type BoxSecretRevealResponse, type BoxSecretsRevealResponse, type BoxValueChanged, type BoxValueKind, type BoxValueSetRequest, type BoxValuesError, type BoxValuesErrorCode, type BoxValuesReplaceRequest, type BoxValuesReplaced, type BoxValuesResponse, type BreakpointEntry, type BreakpointsFile, type BundleGitInfo, type BundleManifest, type BundleUploadError, type BundleUploadErrorCode, type BundleUploadOk, type BundleUploadResponse, type BundleUploadStatus, type BundleVariableGap, CI_RUN_PATH, COLLECTIONS_SUBDIR, COLLECTION_NAME_FORBIDDEN_RE, COMMANDS_FILE, type CheckSeverity, type CiProviderId, type CiQueuedRun, type CiRunAccepted, type CiRunError, type CiRunErrorCode, type CiRunRequest, type CiRunResponse, type CollectionMeta, type CollectionRunArtifact, type CollectionRunFinishedEvent, type CollectionRunRequest, type CollectionRunStartedEvent, type CollectionRunTab, type CollectionScenarioFinishedEvent, type CollectionScenarioStartedEvent, type CollectionScheduleEntry, type CollectionTab, DAY_INDEX_FILE, DAY_SHORT, type DbgCommand, type DbgCommandAbort, type DbgCommandClearBp, type DbgCommandContinue, type DbgCommandKind, type DbgCommandPause, type DbgCommandPickerStart, type DbgCommandPickerStop, type DbgCommandProbe, type DbgCommandRecord, type DbgCommandSetBp, type DbgCommandSnapshot, type DbgCommandStep, type DbgCommandWheel, type DebugCapabilities, type DoctorCheck, type DoctorContext, type DslDiagnostic, type DslValidateContext, type DslVocabArg, type DslVocabCategory, type DslVocabEntry, E2E_SUBDIR, ENV_FILE, EXPECT_FAIL_ANNOTATION, type EnqueueRunInput, type EnvChangedMessage, type EnvFile, type EnvUpdate, type EnvVar, type ErrorMessage, FREQ_FIELDS, type FailureBundleWrittenEvent, type FsBreakpointsChangedMessage, type FsCollectionRunStepMessage, type FsCollectionsChangedMessage, type FsHelpersChangedMessage, type FsRunFinishedMessage, type FsRunStartedMessage, type FsRunStepMessage, type FsScenariosChangedMessage, HEARTBEAT_FILE, HELPERS_SUBDIR, type HelperMeta, type HelperTab, type HostRequirement, type IDslLanguageService, type ILaunchedProcess, type IProcessLauncher, type IRunQueue, type IRunnerAdapter, InvalidBlobHashError, JUDGE_ENV, JUDGE_ROUTES, type JudgeErrorResponse, type JudgeHealthResponse, type JudgeRequest, type JudgeVerdict, type JudgeVerdictEvent, LOCK_FILE, LOG_FILE, type LaunchSpec, type LocatorPickedEvent, type LockFile, type LogEvent, type LogLineMessage, type LoopIterationEvent, type Matcher, type NoteEvent, type OverviewTab, PICKER_SNAPSHOT_FILE, type ParsedTicketName, type PausedEvent, type PickerMode, type ProbeMatch, type ProbePinned, type ProbeResult, type ProbeResultEvent, QUEUE_DISABLED_ENV, QUEUE_GLOBAL_DIR_ENV, QUEUE_GLOBAL_SLOTS_ENV, QUEUE_LEASE_ENV, QUEUE_MUTEX_FILE, QUEUE_PRIORITIES, QUEUE_RUNNING_DIR, QUEUE_SCHEMA_VERSION, QUEUE_SLOTS_DIR, QUEUE_SUBDIR, QUEUE_TICKETS_DIR, type QueueChangedMessage, type QueueEntry, type QueuePoolState, type QueuePriority, type QueueProducer, type QueueProducerKind, type QueueSnapshot, type QueueTicket, type QueueTicketCi, type QueueTicketKind, type QueueTicketSource, RUNNER_CONFIG_KEYS, RUNNER_SETTING_PREFIX, RUNS_SUBDIR, RUNTIME_FILE, RUN_INDEX_SCHEMA_VERSION, RUN_MANIFEST_FILE, RUN_SOURCES_FILE, type RecordedActionKind, type RegexLiteral, type ResumedEvent, type RunArtifact, type RunFinishedEvent, type RunId, type RunIndexEntry, type RunIndexHeader, type RunKind, type RunManifest, type RunMeta, type RunOutcome, type RunQueueLease, type RunQueueTicketHandle, type RunRequest, type RunSources, type RunStartedEvent, type RunStatus, RunnerAdapterNotFoundError, RunnerNotConfiguredError, type RuntimeState, type RuntimeStateFile, SCENARIOS_INDEX_DIR, SCENARIOS_LATEST_FILE, SCENARIO_RECENT_WINDOW, SCHEDULES_FILE, SCHEDULES_FINGERPRINT_ENV, SECRETS_FILE, SEGMENT_NAME_FORBIDDEN_RE, SNAPSHOTS_SUBDIR, STDERR_FILE, STDOUT_FILE, STEPS_FILE, type ScenarioAnnotations, type ScenarioLatestEntry, type ScenarioMeta, type ScenarioRunRequest, type ScenarioRunTab, type ScenarioScheduleEntry, type ScenarioTab, type ScenariosLatest, type ScenariosPayload, type ScheduleEntry, type ScheduleFreq, type ScheduleSpec, type ScreenshotEvent, type SnapshotTab, type SoftFailureRecord, type StepBlockFinishedEvent, type StepBlockStartedEvent, type StepFailEvent, type StepOkEvent, type StepPosition, type StepStartedEvent, TARGET_ENV_VAR, TERMINAL_RUNTIME_STATES, TERMINAL_WS_EVENT, type TabKind, type TabKindName, type TerminalClientMessage, type TerminalCloseMessage, type TerminalDataMessage, type TerminalErrorMessage, type TerminalExitMessage, type TerminalKind, type TerminalOutputMessage, type TerminalResizeMessage, type TerminalServerMessage, type TerminalSpawnMessage, type ToolCallEvent, type ToolResultEvent, UNOTEST_DIR, UnplaceableRunIdError, UnsupportedRunKindError, type VariableCategory, type VariableKind, type VariablePlanError, WEEK_CHIP_ORDER, WORKSPACE_FILE, WORKSPACE_SCHEMA_VERSION, type WheelChangedEvent, type WorkspaceBundle, type WorkspaceFile, type WsMessage, type WsMessageKind, activeEnvName, artifactsRootFrom, blobPathFor, blobRelPathFor, blobRelSegmentsFor, blobsRootFor, boxEnvSecretRevealPath, boxEnvSecretsRevealPath, boxEnvValuePath, boxEnvValuesPath, boxValueKindOfSegment, boxValuePath, boxValuesPath, canonicalScheduleSet, categorizeVariable, compareQueueTicketNames, cronFromSpec, debugDirFor, debuggerFileFor, declaredEnvKeys, decodeNameList, deleteShadowWarning, describeBundle, describeCron, describeSpec, describeTicketCi, encodeNameList, envFileFor, envKeys, envLayerFilesFor, envNamesFromDirListing, foldScenarioRun, formatNextTick, insertEnvVar, isAnnotationLine, isEnvVarName, isExternalVarName, isFailingStatus, isQueueDirName, isRecord, isRegexLiteral, isRunnerConfigKey, isRunnerSetting, isRunsDirName, isTerminalRuntimeState, makeQueueTicketName, makeRunId, mergeSchedules, nextTickFromSpec, parseAppServerEvent, parseBoxEnvValuesReplaceRequest, parseBoxReadEnvironments, parseBoxReadError, parseBoxSecretRevealResponse, parseBoxSecretsRevealResponse, parseBoxValueSetRequest, parseBoxValuesReplaceRequest, parseBoxValuesResponse, parseBundleManifest, parseBundleUploadResponse, parseCiProvider, parseCiRunRequest, parseCiRunResponse, parseEnvContent, parseQueueTicket, parseQueueTicketName, parseScenarioAnnotations, parseScheduleEntry, parseSchedulesDoc, parseSchedulesJson, parseWorkspaceFile, planAddVariable, projectQueueRoot, projectRunDirFor, projectRunsRoot, queueDirFor, queuePriorityFromRank, queuePriorityRank, regexLiteral, removeEnvVar, requireRunDirFor, reservedBoxValueNames, runDirFor, runIdStartedAt, runsDirFor, sanitizeRunIdSegment, scenarioIndexFileName, scenarioRefFromFileName, scheduleTarget, secretsFileFor, secretsLayerFilesFor, serializeEnvValue, shardDaysDescending, shardDirFor, shardPathForRunId, shardPathForTimestamp, specFromCron, testDirFor, validateCollectionName, validateSegmentName };
|
|
3330
|
+
export { ACTOR_TICKET_HEADER, ARTIFACTS_ROOT_ENV, type AddVariablePlan, type AddVariablePlanInput, type AppPathPickerSpec, type AppServerEvent, type AuthoringRunRequest, BLOBS_DIR, BOX_ENV_VALUES_SEGMENT, BOX_NOTIFY_CHANNEL_KINDS, BOX_NOTIFY_EVENTS, BOX_NOTIFY_PATH, BOX_NOTIFY_STATES, BOX_NOTIFY_TRIGGER_KINDS, BOX_PUSH_TOKEN_PREFIX, BOX_READ_ENVIRONMENTS_PATH, BOX_READ_ENVIRONMENT_HEADER, BOX_READ_TOKEN_ENV, BOX_READ_TOKEN_PREFIX, BOX_REVEAL_SEGMENT, BOX_REVOCATIONS_RETRY_AFTER_SECONDS, BOX_RUNS_SEGMENT, BOX_SECRET_NAMES_ENV, BOX_SIGNED_TOKEN, BOX_SIGNED_TOKEN_PREFIX, BOX_TOKEN_ENV, BOX_URL_ENV, BOX_VALUES_PATH, BOX_VARIABLE_NAMES_ENV, BROWSER_CHANNEL_ENV, BROWSER_ENV, BUNDLED_BROWSER_CHANNEL, BUNDLE_ID_ENV, BUNDLE_MANIFEST_FILE, BUNDLE_SCHEMA_VERSION, BUNDLE_UPLOAD_PATH, type BoxEnvValuesReplaceRequest, type BoxEnvValuesView, type BoxNotifyChanged, type BoxNotifyChannelKind, type BoxNotifyChannelView, type BoxNotifyChannelWrite, type BoxNotifyEnabledPatch, type BoxNotifyError, type BoxNotifyErrorCode, type BoxNotifyEvent, type BoxNotifyLastDelivery, type BoxNotifyMute, type BoxNotifyMuteScope, type BoxNotifyMuteWrite, type BoxNotifyPreview, type BoxNotifyProjectView, type BoxNotifyQuietHours, type BoxNotifyQuietHoursWrite, type BoxNotifyRule, type BoxNotifyRuleWrite, type BoxNotifySecret, type BoxNotifySeriesEntry, type BoxNotifySeriesView, type BoxNotifyState, type BoxNotifyTestResult, type BoxNotifyTriggerKind, type BoxNotifyView, type BoxReadEnvironment, type BoxReadErrorBody, type BoxReadErrorCode, type BoxRunAccepted, type BoxRunRequest, type BoxRunState, type BoxRunStatus, type BoxSecretRevealResponse, type BoxSecretsRevealResponse, type BoxValueChanged, type BoxValueKind, type BoxValueSetRequest, type BoxValuesError, type BoxValuesErrorCode, type BoxValuesReplaceRequest, type BoxValuesReplaced, type BoxValuesResponse, type BreakpointEntry, type BreakpointsFile, type BundleGitInfo, type BundleManifest, type BundleUploadError, type BundleUploadErrorCode, type BundleUploadOk, type BundleUploadResponse, type BundleUploadStatus, type BundleVariableGap, CI_RUN_PATH, COLLECTIONS_SUBDIR, COLLECTION_NAME_FORBIDDEN_RE, COMMANDS_FILE, type CheckSeverity, type CiProviderId, type CiQueuedRun, type CiRunAccepted, type CiRunError, type CiRunErrorCode, type CiRunRequest, type CiRunResponse, type CollectionMeta, type CollectionRunArtifact, type CollectionRunFinishedEvent, type CollectionRunRequest, type CollectionRunStartedEvent, type CollectionRunTab, type CollectionScenarioFinishedEvent, type CollectionScenarioStartedEvent, type CollectionScheduleEntry, type CollectionTab, DAY_INDEX_FILE, DAY_SHORT, type DbgCommand, type DbgCommandAbort, type DbgCommandClearBp, type DbgCommandContinue, type DbgCommandKind, type DbgCommandPause, type DbgCommandPickerStart, type DbgCommandPickerStop, type DbgCommandProbe, type DbgCommandRecord, type DbgCommandSetBp, type DbgCommandSnapshot, type DbgCommandStep, type DbgCommandWheel, type DebugCapabilities, type DoctorCheck, type DoctorContext, type DslDiagnostic, type DslValidateContext, type DslVocabArg, type DslVocabCategory, type DslVocabEntry, E2E_SUBDIR, ENV_FILE, EXPECT_FAIL_ANNOTATION, type EnqueueRunInput, type EnvChangedMessage, type EnvFile, type EnvUpdate, type EnvVar, type ErrorMessage, FAILURES_DIR_SEGMENTS, FAILURES_ROOT_ENV, FREQ_FIELDS, type FailureBundleWrittenEvent, type FsBreakpointsChangedMessage, type FsCollectionRunStepMessage, type FsCollectionsChangedMessage, type FsHelpersChangedMessage, type FsRunFinishedMessage, type FsRunStartedMessage, type FsRunStepMessage, type FsScenariosChangedMessage, GUARD_SECRET_HEADER, HEARTBEAT_FILE, HELPERS_SUBDIR, type HelperMeta, type HelperTab, type HostRequirement, type IDslLanguageService, type ILaunchedProcess, type IProcessLauncher, type IRunQueue, type IRunnerAdapter, InvalidBlobHashError, JUDGE_ENV, JUDGE_ROUTES, type JudgeErrorResponse, type JudgeHealthResponse, type JudgeRequest, type JudgeVerdict, type JudgeVerdictEvent, LOCK_FILE, LOG_FILE, type LaunchSpec, type LocatorPickedEvent, type LockFile, type LogEvent, type LogLineMessage, type LoopIterationEvent, type Matcher, type NoteEvent, type OverviewTab, PICKER_SNAPSHOT_FILE, type ParsedTicketName, type PausedEvent, type PickerMode, type ProbeMatch, type ProbePinned, type ProbeResult, type ProbeResultEvent, QUEUE_DISABLED_ENV, QUEUE_GLOBAL_DIR_ENV, QUEUE_GLOBAL_SLOTS_ENV, QUEUE_LEASE_ENV, QUEUE_MUTEX_FILE, QUEUE_PRIORITIES, QUEUE_RUNNING_DIR, QUEUE_SCHEMA_VERSION, QUEUE_SLOTS_DIR, QUEUE_SUBDIR, QUEUE_TICKETS_DIR, type QueueChangedMessage, type QueueEntry, type QueuePoolState, type QueuePriority, type QueueProducer, type QueueProducerKind, type QueueSnapshot, type QueueTicket, type QueueTicketCi, type QueueTicketKind, type QueueTicketSource, RUNNER_CONFIG_KEYS, RUNNER_SETTING_PREFIX, RUNS_SUBDIR, RUNTIME_FILE, RUN_ACTOR_ENV, RUN_INDEX_SCHEMA_VERSION, RUN_MANIFEST_FILE, RUN_SOURCES_FILE, RUN_TRIGGER_ENV, type RecordedActionKind, type RegexLiteral, type ResumedEvent, type RunArtifact, type RunFinishedEvent, type RunId, type RunIndexEntry, type RunIndexHeader, type RunKind, type RunManifest, type RunMeta, type RunOutcome, type RunQueueLease, type RunQueueTicketHandle, type RunRequest, type RunSources, type RunStartedEvent, type RunStatus, type RunTrigger, type RunTriggerKind, RunnerAdapterNotFoundError, RunnerNotConfiguredError, type RuntimeState, type RuntimeStateFile, SCENARIOS_INDEX_DIR, SCENARIOS_LATEST_FILE, SCENARIO_RECENT_WINDOW, SCHEDULES_FILE, SCHEDULES_FINGERPRINT_ENV, SECRETS_FILE, SEGMENT_NAME_FORBIDDEN_RE, SNAPSHOTS_SUBDIR, STDERR_FILE, STDOUT_FILE, STEPS_FILE, type ScenarioAnnotations, type ScenarioLatestEntry, type ScenarioMeta, type ScenarioRunRequest, type ScenarioRunTab, type ScenarioScheduleEntry, type ScenarioTab, type ScenariosLatest, type ScenariosPayload, type ScheduleEntry, type ScheduleFreq, type ScheduleSpec, type ScreenshotEvent, type SnapshotTab, type SoftFailureRecord, type StepBlockFinishedEvent, type StepBlockStartedEvent, type StepFailEvent, type StepOkEvent, type StepPosition, type StepStartedEvent, TARGET_ENV_VAR, TERMINAL_RUNTIME_STATES, TERMINAL_WS_EVENT, type TabKind, type TabKindName, type TerminalClientMessage, type TerminalCloseMessage, type TerminalDataMessage, type TerminalErrorMessage, type TerminalExitMessage, type TerminalKind, type TerminalOutputMessage, type TerminalResizeMessage, type TerminalServerMessage, type TerminalSpawnMessage, type ToolCallEvent, type ToolResultEvent, UNOTEST_DIR, UnplaceableRunIdError, UnsupportedRunKindError, type VariableCategory, type VariableKind, type VariablePlanError, WEEK_CHIP_ORDER, WORKSPACE_FILE, WORKSPACE_SCHEMA_VERSION, type WheelChangedEvent, type WorkspaceBundle, type WorkspaceFile, type WsMessage, type WsMessageKind, activeEnvName, artifactsRootFrom, blobPathFor, blobRelPathFor, blobRelSegmentsFor, blobsRootFor, boxEnvSecretRevealPath, boxEnvSecretsRevealPath, boxEnvValuePath, boxEnvValuesPath, boxNotifyChannelPath, boxNotifyMutePath, boxNotifyPreviewPath, boxNotifyPreviewTrigger, boxNotifyProjectPath, boxNotifyQuietHoursPath, boxNotifyRulePath, boxNotifySeriesPath, boxNotifySeriesResetPath, boxNotifyTestPath, boxRunPath, boxRunsPath, boxValueKindOfSegment, boxValuePath, boxValuesPath, canonicalScheduleSet, categorizeVariable, compareQueueTicketNames, cronFromSpec, debugDirFor, debuggerFileFor, declaredEnvKeys, decodeNameList, deleteShadowWarning, describeBundle, describeCron, describeSpec, describeTicketCi, encodeNameList, envFileFor, envKeys, envLayerFilesFor, envNamesFromDirListing, failuresRootFrom, failuresRootIn, failuresRootUnder, foldScenarioRun, formatNextTick, insertEnvVar, isAnnotationLine, isBoxNotifyState, isEnvVarName, isExternalVarName, isFailingStatus, isQueueDirName, isRecord, isRegexLiteral, isRunnerConfigKey, isRunnerSetting, isRunsDirName, isTerminalRuntimeState, makeQueueTicketName, makeRunId, manifestTrigger, mergeSchedules, nextTickFromSpec, parseAppServerEvent, parseBoxEnvValuesReplaceRequest, parseBoxNotifyChanged, parseBoxNotifyError, parseBoxNotifyMuteScope, parseBoxNotifyPreview, parseBoxNotifyProjectView, parseBoxNotifySeriesView, parseBoxNotifyTestResult, parseBoxNotifyView, parseBoxReadEnvironments, parseBoxReadError, parseBoxRunAccepted, parseBoxRunRequest, parseBoxRunStatus, parseBoxSecretRevealResponse, parseBoxSecretsRevealResponse, parseBoxValueSetRequest, parseBoxValuesReplaceRequest, parseBoxValuesResponse, parseBundleManifest, parseBundleUploadResponse, parseCiProvider, parseCiRunRequest, parseCiRunResponse, parseEnvContent, parseQueueTicket, parseQueueTicketName, parseScenarioAnnotations, parseScheduleEntry, parseSchedulesDoc, parseSchedulesJson, parseWorkspaceFile, planAddVariable, projectQueueRoot, projectRunDirFor, projectRunsRoot, queueDirFor, queuePriorityFromRank, queuePriorityRank, regexLiteral, removeEnvVar, replaceEnvVar, requireRunDirFor, reservedBoxValueNames, runDirFor, runIdStartedAt, runTriggerEnv, runTriggerFromEnv, runsDirFor, sanitizeRunIdSegment, scenarioIndexFileName, scenarioRefFromFileName, scheduleTarget, secretsFileFor, secretsLayerFilesFor, serializeEnvValue, shardDaysDescending, shardDirFor, shardPathForRunId, shardPathForTimestamp, specFromCron, testDirFor, validateCollectionName, validateSegmentName };
|