@mark1russell7/harness 0.14.1 → 0.14.2
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/README.md +1 -0
- package/build/index.d.ts +73 -1
- package/build/index.js +79 -1
- package/build/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -27,6 +27,7 @@ A **cell** (`cell.ts`) is all that one measurement needs, as data:
|
|
|
27
27
|
- Each hop of the topology, on the network of each of its sides.
|
|
28
28
|
- An injector sidecar in the namespace of the target, with NET_ADMIN. Thus the image of the target stays stock.
|
|
29
29
|
- The manifest of each environment gives the HZ of its kernel, from /proc/config.gz. A host without that file (a hosted runner) gets HZ from two readings of /proc/timer_list, one second apart: its jiffies against the time of the kernel (`hzOf`). `hzFrom` tells which.
|
|
30
|
+
- The manifest of each environment holds a `substrate` block (`substrate.ts`). It gives the layer, the cloud, the vendor, the kernel, HZ, KVM and the image of the runner. GitHub can schedule one image on Azure or on AWS. Thus the cloud comes from the DMI vendor, not from the name of the kernel. No statistic pools two substrates (`comparable`). A record from before the block reads through `substrateOf`, and nothing rewrites it.
|
|
30
31
|
- The prober ([`@mark1russell7/prober`](https://www.npmjs.com/package/@mark1russell7/prober)): a privileged container that loads the kernel program. It watches the namespace of the client, of the target and of each hop. Each run keeps its records from its start to its end. A run whose records the prober lost is void.
|
|
31
32
|
|
|
32
33
|
Each command is an argv array.
|
package/build/index.d.ts
CHANGED
|
@@ -761,6 +761,76 @@ export declare const jitterOf: (cell: Cell, run: Run) => Jitter;
|
|
|
761
761
|
*/
|
|
762
762
|
export declare const requestOf: (events: readonly ProbeEvent[]) => RequestReading | null;
|
|
763
763
|
//#endregion
|
|
764
|
+
//#region src/substrate.d.ts
|
|
765
|
+
/**
|
|
766
|
+
* A layer is a rung of the laboratory (`docs/S7.md`). E1 is containers on one kernel, and E2 is a
|
|
767
|
+
* cluster of containers on one kernel. The other layers do not have a runner at this time.
|
|
768
|
+
*/
|
|
769
|
+
type Layer = "E0" | "E1" | "E2" | "E3" | "E4" | "E5" | "E6";
|
|
770
|
+
/** A cloud is where the runner operates. GitHub can schedule a standard Linux job on Azure or on AWS. */
|
|
771
|
+
type Cloud = "azure" | "aws" | "unknown";
|
|
772
|
+
/** A host is what a process reads about its own machine. */
|
|
773
|
+
interface Host {
|
|
774
|
+
/** This text is the kernel release. */
|
|
775
|
+
readonly kernel: string | null;
|
|
776
|
+
/** This number is `CONFIG_HZ` from the configuration of the kernel, or null without that file. */
|
|
777
|
+
readonly hz: number | null;
|
|
778
|
+
/** This text is the DMI system vendor, for example `Microsoft Corporation`, or null without that file. */
|
|
779
|
+
readonly vendor: string | null;
|
|
780
|
+
/** This value tells if `/dev/kvm` exists. A later VM layer needs it. */
|
|
781
|
+
readonly kvm: boolean;
|
|
782
|
+
/** This text is `$ImageOS $ImageVersion` of a hosted runner, or null elsewhere. */
|
|
783
|
+
readonly image: string | null;
|
|
784
|
+
}
|
|
785
|
+
/**
|
|
786
|
+
* A substrate tells where a record comes from. The rules of comparison in `docs/S7.md` read it: no
|
|
787
|
+
* statistic pools two layers, two kernels or two clouds. The digest of each image stays in the
|
|
788
|
+
* manifest. A value is null in a record from before this block.
|
|
789
|
+
*/
|
|
790
|
+
interface Substrate {
|
|
791
|
+
readonly layer: Layer;
|
|
792
|
+
readonly cloud: Cloud;
|
|
793
|
+
readonly vendor: string | null;
|
|
794
|
+
readonly kernel: string | null;
|
|
795
|
+
readonly hz: number | null;
|
|
796
|
+
readonly kvm: boolean | null;
|
|
797
|
+
readonly image: string | null;
|
|
798
|
+
}
|
|
799
|
+
/** GitHub announced Linux jobs on AWS on this date. Each earlier hosted job ran on Azure. */
|
|
800
|
+
export declare const AWS_FROM = "2026-10-28";
|
|
801
|
+
/** This function gives the cloud of a DMI vendor. A kernel name does not tell: one image can start on each cloud. */
|
|
802
|
+
export declare const cloudOf: (vendor: string | null) => Cloud;
|
|
803
|
+
/** This function reads the host. `root` and `env` are for tests. */
|
|
804
|
+
export declare const readHost: (root?: string, env?: Readonly<Record<string, string | undefined>>, kernel?: string) => Host;
|
|
805
|
+
/** This function gives the substrate of a layer on a host. */
|
|
806
|
+
export declare const substrateOn: (layer: Layer, host?: Host) => Substrate;
|
|
807
|
+
/** A part of a record that can hold a substrate: a manifest of the harness, or the fields of a kind manifest. */
|
|
808
|
+
interface SubstrateSource {
|
|
809
|
+
readonly substrate?: Substrate;
|
|
810
|
+
readonly kernel?: string;
|
|
811
|
+
readonly hz?: string | null;
|
|
812
|
+
}
|
|
813
|
+
/**
|
|
814
|
+
* This function reads the substrate of a record, the upgrade of a record from before this block.
|
|
815
|
+
* Nothing rewrites such a record. It reads as the given layer. Its cloud is Azure if the record is
|
|
816
|
+
* from before `AWS_FROM`, and unknown after that date, because its runner did not record the cloud.
|
|
817
|
+
*/
|
|
818
|
+
export declare const substrateOf: (source: SubstrateSource, at: string, layer?: Layer) => Substrate;
|
|
819
|
+
/**
|
|
820
|
+
* This function tells if a statistic can pool two substrates. They must have one layer, one kernel
|
|
821
|
+
* and one cloud. An unknown value does not refuse a pair, because an old record cannot tell. The
|
|
822
|
+
* reader of such a pair says so with `substrateKey`.
|
|
823
|
+
*/
|
|
824
|
+
export declare const comparable: (a: Substrate, b: Substrate) => boolean;
|
|
825
|
+
/** This function gives the one-line name of a substrate, for a summary. */
|
|
826
|
+
export declare const substrateKey: (substrate: Substrate) => string;
|
|
827
|
+
/**
|
|
828
|
+
* This function gives the first two substrates that a statistic cannot pool, or undefined. It
|
|
829
|
+
* examines each pair. An unknown value matches Azure and AWS, thus one comparison with the first
|
|
830
|
+
* substrate can miss a pair.
|
|
831
|
+
*/
|
|
832
|
+
export declare const unpoolable: (substrates: readonly Substrate[]) => readonly [Substrate, Substrate] | undefined;
|
|
833
|
+
//#endregion
|
|
764
834
|
//#region src/lab.d.ts
|
|
765
835
|
/**
|
|
766
836
|
* This time is the interval of the listing of a router, when its hop does not set one. A listing
|
|
@@ -829,6 +899,8 @@ interface Manifest {
|
|
|
829
899
|
readonly hzFrom?: "config" | "measured";
|
|
830
900
|
readonly boot_id: string;
|
|
831
901
|
readonly docker: string;
|
|
902
|
+
/** This block tells the layer, the cloud and the kernel of the record. A record from before it reads through `substrateOf`. */
|
|
903
|
+
readonly substrate?: Substrate;
|
|
832
904
|
/** This record is the target, and its settings as it read them back. */
|
|
833
905
|
readonly target: {
|
|
834
906
|
readonly image: string;
|
|
@@ -1715,5 +1787,5 @@ export declare const spread: (runs: number, environments: number) => number[];
|
|
|
1715
1787
|
*/
|
|
1716
1788
|
export declare const runCell: (cell: Cell, say?: (line: string) => void) => Promise<CellResult>;
|
|
1717
1789
|
//#endregion
|
|
1718
|
-
export { type Agent, type BuildImage, type CallReading, type Cell, type CellResult, type Client, type ClientImage, type Cluster, type ClusterClientAt, type ClusterLab, type ClusterStage, type Crossings, type Cut, type Decision, type DriverBand, type DriverSocket, type DriverStep, type DriverStepTime, type ErrorOnTheWay, type Fault, type FaultPlace, type FaultSide, type Group, type GroupClient, type GroupLab, type GroupMeasured, type GroupNetworkFault, type GroupPlace, type GroupPrediction, type GroupReading, type GroupRole, type GroupVerdict, type GroupView, type Hop, type HopEvent, type HopPlace, type HopSignal, type HopWrite, type HttpProbe, type ImagePlan, type ImageSource, type Interval, type Jitter, type KernelRecord, type Lab, type LineMatch, type Manifest, type ManifestHop, type Measured, type MemberLine, type MiddleboxEvent, type MiddleboxExpectation, type MiddleboxForm, type NetworkFault, type NodeLine, type Observer, type Outcome, type Pairing, type PinnedImage, type Prediction, type Probe, type ProbeEvent, type ProgramEvent, type ProxyHop, type ProxyTime, type ReconnectReading, type ReconnectVerdict, type Reconnects, type Recovers, type Reference, type Reordering, type ReplicaSet, type ReplicaSetLab, type ReplicaSetStage, type Replies, type RequestPrediction, type RequestReading, type RouterHop, type RttRange, type Run, type RunGroup, type RunPart, type RunTopology, type SentinelEvent, type SentinelStage, type Shipped, type ShippedImage, type SocketPlace, type Spread, type Stage, type StageBand, type StageVerdict, type Stamp, type Status, type StatusRow, type Subject, type Target, type Topology, type Toxic, type Verdict, type WallStamp, type Writes, type WsProbe, isHopPlace, latestEndOf };
|
|
1790
|
+
export { type Agent, type BuildImage, type CallReading, type Cell, type CellResult, type Client, type ClientImage, type Cloud, type Cluster, type ClusterClientAt, type ClusterLab, type ClusterStage, type Crossings, type Cut, type Decision, type DriverBand, type DriverSocket, type DriverStep, type DriverStepTime, type ErrorOnTheWay, type Fault, type FaultPlace, type FaultSide, type Group, type GroupClient, type GroupLab, type GroupMeasured, type GroupNetworkFault, type GroupPlace, type GroupPrediction, type GroupReading, type GroupRole, type GroupVerdict, type GroupView, type Hop, type HopEvent, type HopPlace, type HopSignal, type HopWrite, type Host, type HttpProbe, type ImagePlan, type ImageSource, type Interval, type Jitter, type KernelRecord, type Lab, type Layer, type LineMatch, type Manifest, type ManifestHop, type Measured, type MemberLine, type MiddleboxEvent, type MiddleboxExpectation, type MiddleboxForm, type NetworkFault, type NodeLine, type Observer, type Outcome, type Pairing, type PinnedImage, type Prediction, type Probe, type ProbeEvent, type ProgramEvent, type ProxyHop, type ProxyTime, type ReconnectReading, type ReconnectVerdict, type Reconnects, type Recovers, type Reference, type Reordering, type ReplicaSet, type ReplicaSetLab, type ReplicaSetStage, type Replies, type RequestPrediction, type RequestReading, type RouterHop, type RttRange, type Run, type RunGroup, type RunPart, type RunTopology, type SentinelEvent, type SentinelStage, type Shipped, type ShippedImage, type SocketPlace, type Spread, type Stage, type StageBand, type StageVerdict, type Stamp, type Status, type StatusRow, type Subject, type Substrate, type SubstrateSource, type Target, type Topology, type Toxic, type Verdict, type WallStamp, type Writes, type WsProbe, isHopPlace, latestEndOf };
|
|
1719
1791
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.js
CHANGED
|
@@ -2,6 +2,9 @@ import { C as targetImageOf, E as unpinnedBases, S as subjectProblems, T as unlo
|
|
|
2
2
|
import { quantity, valueIn } from "@mark1russell7/quantity";
|
|
3
3
|
import { median, medianInterval as medianInterval$1, quantileSorted } from "@mark1russell7/rigor-statistics";
|
|
4
4
|
import { createHash } from "node:crypto";
|
|
5
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
6
|
+
import { release } from "node:os";
|
|
7
|
+
import { join } from "node:path";
|
|
5
8
|
//#region src/cell.ts
|
|
6
9
|
/** This function tells if a fault place is a hop of a topology. */
|
|
7
10
|
const isHopPlace = (place) => typeof place === "object" && "hop" in place;
|
|
@@ -2166,6 +2169,78 @@ const measureSocket = (cell, run) => {
|
|
|
2166
2169
|
};
|
|
2167
2170
|
};
|
|
2168
2171
|
//#endregion
|
|
2172
|
+
//#region src/substrate.ts
|
|
2173
|
+
/** GitHub announced Linux jobs on AWS on this date. Each earlier hosted job ran on Azure. */
|
|
2174
|
+
const AWS_FROM = "2026-10-28";
|
|
2175
|
+
/** This function gives the cloud of a DMI vendor. A kernel name does not tell: one image can start on each cloud. */
|
|
2176
|
+
const cloudOf = (vendor) => {
|
|
2177
|
+
if (vendor === null) return "unknown";
|
|
2178
|
+
if (/microsoft/i.test(vendor)) return "azure";
|
|
2179
|
+
if (/amazon/i.test(vendor)) return "aws";
|
|
2180
|
+
return "unknown";
|
|
2181
|
+
};
|
|
2182
|
+
const textOf = (path) => {
|
|
2183
|
+
try {
|
|
2184
|
+
return readFileSync(path, "utf8").trim();
|
|
2185
|
+
} catch {
|
|
2186
|
+
return null;
|
|
2187
|
+
}
|
|
2188
|
+
};
|
|
2189
|
+
/** This function reads the host. `root` and `env` are for tests. */
|
|
2190
|
+
const readHost = (root = "/", env = process.env, kernel = release()) => {
|
|
2191
|
+
const config = textOf(join(root, "boot", `config-${kernel}`));
|
|
2192
|
+
const hz = config === null ? void 0 : /^CONFIG_HZ=(\d+)$/m.exec(config)?.[1];
|
|
2193
|
+
const os = env["ImageOS"];
|
|
2194
|
+
const version = env["ImageVersion"];
|
|
2195
|
+
return {
|
|
2196
|
+
kernel,
|
|
2197
|
+
hz: hz === void 0 ? null : Number(hz),
|
|
2198
|
+
vendor: textOf(join(root, "sys", "class", "dmi", "id", "sys_vendor")),
|
|
2199
|
+
kvm: existsSync(join(root, "dev", "kvm")),
|
|
2200
|
+
image: os === void 0 || version === void 0 ? null : `${os} ${version}`
|
|
2201
|
+
};
|
|
2202
|
+
};
|
|
2203
|
+
/** This function gives the substrate of a layer on a host. */
|
|
2204
|
+
const substrateOn = (layer, host = readHost()) => ({
|
|
2205
|
+
layer,
|
|
2206
|
+
cloud: cloudOf(host.vendor),
|
|
2207
|
+
...host
|
|
2208
|
+
});
|
|
2209
|
+
/**
|
|
2210
|
+
* This function reads the substrate of a record, the upgrade of a record from before this block.
|
|
2211
|
+
* Nothing rewrites such a record. It reads as the given layer. Its cloud is Azure if the record is
|
|
2212
|
+
* from before `AWS_FROM`, and unknown after that date, because its runner did not record the cloud.
|
|
2213
|
+
*/
|
|
2214
|
+
const substrateOf = (source, at, layer = "E1") => source.substrate ?? {
|
|
2215
|
+
layer,
|
|
2216
|
+
cloud: at.slice(0, 10) < "2026-10-28" ? "azure" : "unknown",
|
|
2217
|
+
vendor: null,
|
|
2218
|
+
kernel: source.kernel ?? null,
|
|
2219
|
+
hz: source.hz === void 0 || source.hz === null ? null : Number(source.hz),
|
|
2220
|
+
kvm: null,
|
|
2221
|
+
image: null
|
|
2222
|
+
};
|
|
2223
|
+
const differ = (a, b, unknown) => a !== null && b !== null && a !== unknown && b !== unknown && a !== b;
|
|
2224
|
+
/**
|
|
2225
|
+
* This function tells if a statistic can pool two substrates. They must have one layer, one kernel
|
|
2226
|
+
* and one cloud. An unknown value does not refuse a pair, because an old record cannot tell. The
|
|
2227
|
+
* reader of such a pair says so with `substrateKey`.
|
|
2228
|
+
*/
|
|
2229
|
+
const comparable = (a, b) => a.layer === b.layer && !differ(a.kernel, b.kernel) && !differ(a.cloud, b.cloud, "unknown");
|
|
2230
|
+
/** This function gives the one-line name of a substrate, for a summary. */
|
|
2231
|
+
const substrateKey = (substrate) => `${substrate.layer} ${substrate.cloud} ${substrate.kernel ?? "unknown"}`;
|
|
2232
|
+
/**
|
|
2233
|
+
* This function gives the first two substrates that a statistic cannot pool, or undefined. It
|
|
2234
|
+
* examines each pair. An unknown value matches Azure and AWS, thus one comparison with the first
|
|
2235
|
+
* substrate can miss a pair.
|
|
2236
|
+
*/
|
|
2237
|
+
const unpoolable = (substrates) => {
|
|
2238
|
+
for (const [index, a] of substrates.entries()) {
|
|
2239
|
+
const b = substrates.slice(index + 1).find((other) => !comparable(a, other));
|
|
2240
|
+
if (b !== void 0) return [a, b];
|
|
2241
|
+
}
|
|
2242
|
+
};
|
|
2243
|
+
//#endregion
|
|
2169
2244
|
//#region src/lab.ts
|
|
2170
2245
|
/** This function loads Testcontainers when a lab first opens. Code that only measures and judges does not load it. */
|
|
2171
2246
|
const containers = () => import("testcontainers");
|
|
@@ -3071,6 +3146,7 @@ const openLab = async (target, kind = "tcp", topology) => {
|
|
|
3071
3146
|
})(),
|
|
3072
3147
|
boot_id: await output(client, ["cat", "/proc/sys/kernel/random/boot_id"]),
|
|
3073
3148
|
docker: `${runtime.info.containerRuntime.serverVersion} on ${runtime.info.containerRuntime.operatingSystem}`,
|
|
3149
|
+
substrate: substrateOn("E1"),
|
|
3074
3150
|
target: {
|
|
3075
3151
|
image: targetImage,
|
|
3076
3152
|
...target.subject === void 0 ? {} : {
|
|
@@ -4215,6 +4291,7 @@ const openReplicaSetLab = async (set) => {
|
|
|
4215
4291
|
architecture: await output(holder, ["uname", "-m"]),
|
|
4216
4292
|
hz: /^CONFIG_HZ=(\d+)$/m.exec(config)?.[1] ?? null,
|
|
4217
4293
|
boot_id: await output(holder, ["cat", "/proc/sys/kernel/random/boot_id"]),
|
|
4294
|
+
substrate: substrateOn("E1"),
|
|
4218
4295
|
docker: `${runtime.info.containerRuntime.serverVersion} on ${runtime.info.containerRuntime.operatingSystem}`,
|
|
4219
4296
|
target: {
|
|
4220
4297
|
image: set.image,
|
|
@@ -4902,6 +4979,7 @@ const openClusterLab = async (cluster) => {
|
|
|
4902
4979
|
architecture: await output(holder, ["uname", "-m"]),
|
|
4903
4980
|
hz: /^CONFIG_HZ=(\d+)$/m.exec(config)?.[1] ?? null,
|
|
4904
4981
|
boot_id: await output(holder, ["cat", "/proc/sys/kernel/random/boot_id"]),
|
|
4982
|
+
substrate: substrateOn("E1"),
|
|
4905
4983
|
docker: `${runtime.info.containerRuntime.serverVersion} on ${runtime.info.containerRuntime.operatingSystem}`,
|
|
4906
4984
|
target: {
|
|
4907
4985
|
image: cluster.image,
|
|
@@ -5823,6 +5901,6 @@ const runCell = async (cell, say = () => {}) => {
|
|
|
5823
5901
|
}
|
|
5824
5902
|
};
|
|
5825
5903
|
//#endregion
|
|
5826
|
-
export { CLIENT_NAMES, CLUSTER_STAGES, CONVERGE_MS, DROP_HANDLING, GIVES_AWAY, INJECT, KEPT, LINGER_MS, LISTING, MEMBER_MARKS, MONITOR_DOWN, NODE_MARKS, NOISE, PINNED, PUMP, PUMP_SLACK, QUIET_MS, RELATIVE, REPLICA_SET_STAGES, REPOSITORY, SHIPPED_CLIENTS, SHIPPED_NAMES, STAGES, STATUS_SCRIPT, STEPS, STEP_DOWN, amqpClientImage, callOf, clockOffsetOf, closeOrExit, clusterArgs, clusterConf, clusterCutOf, clusterHostsOf, clusterOnce, clusterStagesOf, clusterViewOf, crossingsOf, cutOf, deadlineOf, delayVoids, deviceOf, dropFinding, dropOf, endpointAfter, errorsOf, exitOf, fieldOf, fieldsOf, firstUnanswered, goHttpImage, groupOnce, groupVerdictOf, grpcClientImage, harnessImage, hikariClientImage, hzOf, imageOf, imageProblems, inContext, infoOf, initiateScript, isHopPlace, jitterOf, jitterOfLines, judge, lagsOf, latestEndOf, leftAfter, logNameOf, matches, measure, measureDriver, measureGroup, medianInterval, memberCommand, memberConfig, memberLineOf, mongoClientImage, monotonicOf, nodeClientImage, nodeCommand, nodeHttpImage, nodeLineOf, nodeNameOf, nodesOnMonotonic, noiseOf, onMonotonic, openClusterLab, openGroupLab, openLab, openReplicaSetLab, pairingOf, pairingsOf, peersOf, pgClientImage, pingsOf, plainOf, planOf, programLines, programOf, quantileOf, reconnectFinding, reconnectOf, referenceOf, reorderingOf, replicaSetArgs, replicaSetOnce, replicaSetStagesOf, requestOf, requestWords, restamped, routerImage, routesOf, runCell, sentinelConfig, socketAt, socketOf, socketsOf, spread, spreadOf, stagesOf, statusViewOf, subjectClient, subjectProblems, subscriptionsOf, targetImageOf, targetSourceOf, templated, toolJsonOf, toxicBody, unlockedManifests, unpinnedBases, verdictOf, viewOf, writesOf };
|
|
5904
|
+
export { AWS_FROM, CLIENT_NAMES, CLUSTER_STAGES, CONVERGE_MS, DROP_HANDLING, GIVES_AWAY, INJECT, KEPT, LINGER_MS, LISTING, MEMBER_MARKS, MONITOR_DOWN, NODE_MARKS, NOISE, PINNED, PUMP, PUMP_SLACK, QUIET_MS, RELATIVE, REPLICA_SET_STAGES, REPOSITORY, SHIPPED_CLIENTS, SHIPPED_NAMES, STAGES, STATUS_SCRIPT, STEPS, STEP_DOWN, amqpClientImage, callOf, clockOffsetOf, closeOrExit, cloudOf, clusterArgs, clusterConf, clusterCutOf, clusterHostsOf, clusterOnce, clusterStagesOf, clusterViewOf, comparable, crossingsOf, cutOf, deadlineOf, delayVoids, deviceOf, dropFinding, dropOf, endpointAfter, errorsOf, exitOf, fieldOf, fieldsOf, firstUnanswered, goHttpImage, groupOnce, groupVerdictOf, grpcClientImage, harnessImage, hikariClientImage, hzOf, imageOf, imageProblems, inContext, infoOf, initiateScript, isHopPlace, jitterOf, jitterOfLines, judge, lagsOf, latestEndOf, leftAfter, logNameOf, matches, measure, measureDriver, measureGroup, medianInterval, memberCommand, memberConfig, memberLineOf, mongoClientImage, monotonicOf, nodeClientImage, nodeCommand, nodeHttpImage, nodeLineOf, nodeNameOf, nodesOnMonotonic, noiseOf, onMonotonic, openClusterLab, openGroupLab, openLab, openReplicaSetLab, pairingOf, pairingsOf, peersOf, pgClientImage, pingsOf, plainOf, planOf, programLines, programOf, quantileOf, readHost, reconnectFinding, reconnectOf, referenceOf, reorderingOf, replicaSetArgs, replicaSetOnce, replicaSetStagesOf, requestOf, requestWords, restamped, routerImage, routesOf, runCell, sentinelConfig, socketAt, socketOf, socketsOf, spread, spreadOf, stagesOf, statusViewOf, subjectClient, subjectProblems, subscriptionsOf, substrateKey, substrateOf, substrateOn, targetImageOf, targetSourceOf, templated, toolJsonOf, toxicBody, unlockedManifests, unpinnedBases, unpoolable, verdictOf, viewOf, writesOf };
|
|
5827
5905
|
|
|
5828
5906
|
//# sourceMappingURL=index.js.map
|