reactor-effect-client 0.6.0 → 0.7.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.
@@ -1,6 +1,9 @@
1
1
  import type { ClipId } from "./request.js";
2
2
  import type { EngineState } from "./types.js";
3
- import type { ItemKey } from "./scheduler.js";
3
+ import type { AsRunStatus, ItemKey } from "./scheduler.js";
4
+ export type DropReason = Extract<AsRunStatus, {
5
+ readonly _tag: "Dropped";
6
+ }>["reason"];
4
7
  /** The actor's immutable projection of one caller item. */
5
8
  export interface PlannedItem {
6
9
  readonly key: ItemKey;
@@ -19,7 +22,75 @@ export interface PlannedItem {
19
22
  readonly late: "nextBoundary" | "drop" | {
20
23
  readonly skipIfLaterThanMs: number;
21
24
  };
25
+ /** The group this item is a part of, and its place in that group. */
26
+ readonly group?: {
27
+ readonly key: ItemKey;
28
+ readonly index: number;
29
+ };
30
+ /** Set once the item's start was observed. */
31
+ readonly startedAtMonoMs?: number;
32
+ /** The item this one replaces; it keeps that item's place and builds first in its lane. */
33
+ readonly replaces?: ItemKey;
34
+ /** How many replacements this item is in its place: the tiebreak behind the one it replaces. */
35
+ readonly generation?: number;
36
+ /** Inserted beside an anchor: it keeps its place in a group, but its fate never breaks one. */
37
+ readonly inserted?: boolean;
38
+ /** The requested length, in seconds; the provider's actual length follows once built. */
39
+ readonly seconds?: number;
40
+ /** When its build command was sent, until the clip is Ready. */
41
+ readonly dispatchedAtMs?: number;
42
+ /** A `Manual` item not yet released: it waits behind everything and is not runway. */
43
+ readonly held?: boolean;
44
+ /** An `Asap` or released item: it airs ahead of everything waiting in every lane. */
45
+ readonly asap?: boolean;
46
+ /** Built continuing from the clip that airs just before it. */
47
+ readonly continuity?: "previous";
48
+ }
49
+ /**
50
+ * The indexes of a playing clip's cues that fall due by `untilMs` and have not fired, in
51
+ * the order they fall: an offset from its start, or back from the end of its length.
52
+ */
53
+ export declare const dueCues: (cues: ReadonlyArray<{
54
+ readonly from: "start" | "end";
55
+ readonly offsetMs: number;
56
+ }>, fired: ReadonlySet<number>, startedAtMs: number, durationSeconds: number, untilMs: number) => ReadonlyArray<number>;
57
+ /**
58
+ * The requested length for the next filler clip. Before an anchor, equal clips that tile the
59
+ * uncovered gap within the provider's lengths, so filler ends on the anchor; otherwise the
60
+ * shortest clip, which keeps boundaries, and so reactions, frequent. `ratio` is a built
61
+ * clip's actual over requested length.
62
+ */
63
+ export declare const fillLength: (uncoveredSeconds: number, lengths: {
64
+ readonly min: number;
65
+ readonly max: number;
66
+ }, ratio: number) => number;
67
+ /** What the scheduler has measured of its provider, from its own builds. */
68
+ export interface Estimates {
69
+ /** Seconds of build per requested second of clip, once a few builds were measured. */
70
+ readonly build: {
71
+ readonly median: number;
72
+ readonly p95: number;
73
+ } | undefined;
74
+ /** A built clip's actual length over its requested length. */
75
+ readonly length: number;
76
+ }
77
+ /** Enough measured builds to act on. */
78
+ export declare const minimumSamples = 3;
79
+ /** Estimates from recent samples: build seconds per requested second, and actual over requested length. */
80
+ export declare const estimatesFrom: (build: ReadonlyArray<number>, length: ReadonlyArray<number>) => Estimates;
81
+ /**
82
+ * An edit batch that has not taken effect yet. Until it does, what it withdraws is only
83
+ * cover: it airs after everything else in its lane, so any clip the batch adds goes first.
84
+ */
85
+ export interface PendingBatch {
86
+ readonly id: number;
87
+ /** The batch takes effect once each of these is Ready, started or settled. */
88
+ readonly waitFor: ReadonlyArray<ItemKey>;
89
+ /** The items it withdraws once it takes effect, and why. */
90
+ readonly targets: ReadonlyArray<PolicyWithdrawal>;
22
91
  }
92
+ /** Items that pending batches withdraw. */
93
+ export declare const supersededBy: (batches: ReadonlyArray<PendingBatch>) => ReadonlySet<ItemKey>;
23
94
  export type OwnedClip = {
24
95
  readonly _tag: "Item";
25
96
  readonly key: ItemKey;
@@ -39,43 +110,113 @@ export interface PolicySnapshot {
39
110
  readonly targetSeconds: number;
40
111
  readonly refillActive: boolean;
41
112
  readonly maxBuildsInFlight: number;
113
+ /** New admissions are open: the scheduler is neither draining nor closed. */
42
114
  readonly accepting: boolean;
43
- readonly fillerEnabled: boolean;
115
+ /** How a requested drain finishes, once one is requested. */
116
+ readonly drain: "playing" | "accepted" | undefined;
44
117
  readonly fillerRetryAtMs: number;
45
118
  /** Uncertain filler reservations on the preferred source, including unfenced sends. */
46
119
  readonly unknownFillerCount: number;
47
120
  /** A refused move is retried only after the Ready snapshot changes. */
48
121
  readonly blockedMove: string | undefined;
122
+ /** Items with a withdrawal already requested. */
123
+ readonly withdrawing: ReadonlySet<ItemKey>;
124
+ /** Items whose build command has been sent and has not returned. */
125
+ readonly dispatched: ReadonlySet<ItemKey>;
126
+ /** The first failed or dropped part of each broken group. */
127
+ readonly brokenGroups: ReadonlyMap<ItemKey, number>;
128
+ readonly batches: ReadonlyArray<PendingBatch>;
129
+ readonly estimates: Estimates;
130
+ /** When the filler build in flight on the preferred source was sent, if one is. */
131
+ readonly fillerDispatchedAtMs: number | undefined;
132
+ /** The requested length of the next filler clip, if known. */
133
+ readonly fillerSeconds: number | undefined;
134
+ /** Lanes whose Ready items cut a playing clip that ranks below them. */
135
+ readonly cutLanes: ReadonlySet<string>;
136
+ /** The requested clip lengths filler may take, in seconds. */
137
+ readonly fillLengths: {
138
+ readonly min: number;
139
+ readonly max: number;
140
+ };
141
+ /** A playing clip whose cut was refused is not cut again. */
142
+ readonly blockedCut: ClipId | undefined;
49
143
  }
50
144
  export type PolicyAction = {
51
- readonly _tag: "Withdraw";
52
- readonly key: ItemKey;
53
- readonly reason: "late";
54
- } | {
55
145
  readonly _tag: "DeferAt";
56
146
  readonly key: ItemKey;
57
147
  readonly clipId: ClipId;
58
- } | {
59
- readonly _tag: "WithdrawFiller";
60
- readonly clipIds: ReadonlyArray<ClipId>;
61
148
  } | {
62
149
  readonly _tag: "Build";
63
150
  readonly key: ItemKey;
151
+ /** The generated clip it continues from, for an item that asks for continuity. */
152
+ readonly continueFrom?: ClipId;
153
+ } | {
154
+ readonly _tag: "Cut";
155
+ readonly clipId: ClipId;
64
156
  } | {
65
157
  readonly _tag: "BuildFiller";
66
158
  readonly targetSeconds: number;
159
+ /** The requested length suggested for this filler clip. */
160
+ readonly durationSeconds: number;
67
161
  } | {
68
162
  readonly _tag: "Order";
69
163
  readonly clipId: ClipId;
70
164
  readonly position: number;
71
165
  };
166
+ export interface PolicyWithdrawal {
167
+ readonly key: ItemKey;
168
+ readonly reason: DropReason;
169
+ }
72
170
  export interface PolicyDecision {
73
171
  readonly runwaySeconds: number;
74
172
  readonly refillActive: boolean;
173
+ /** Every item the plan no longer wants, with the reason as-run records; the first reason wins. */
174
+ readonly withdraw: ReadonlyArray<PolicyWithdrawal>;
175
+ /** Filler clips the plan no longer wants. */
176
+ readonly withdrawFiller: ReadonlyArray<ClipId>;
177
+ /** Edit batches to take effect now; the plan is read again once they have. */
178
+ readonly commit: ReadonlyArray<number>;
179
+ /** The one provider command to send when none is in flight. */
75
180
  readonly action?: PolicyAction;
76
181
  }
77
182
  /** Ready material on a retiring source is not runway for the replacement. */
78
183
  export declare const runwaySeconds: (state: EngineState, nowMs: number, playingStartedMs: ReadonlyMap<ClipId, number>, owned: ReadonlyMap<ClipId, OwnedClip>, items: ReadonlyArray<PlannedItem>) => number;
79
- /** A pure, single-action policy. The actor re-reads Engine after each applied action. */
184
+ /** Lexicographic place in a session's Ready order; lower airs first. */
185
+ export type Rank = readonly [number, number, number, number];
186
+ export interface ProjectionView {
187
+ readonly engine: EngineState;
188
+ readonly items: ReadonlyArray<PlannedItem>;
189
+ readonly owned: ReadonlyMap<ClipId, OwnedClip>;
190
+ readonly lanes: ReadonlyArray<string>;
191
+ readonly playingStartedMs: ReadonlyMap<ClipId, number>;
192
+ readonly nowMs: number;
193
+ readonly batches: ReadonlyArray<PendingBatch>;
194
+ readonly estimates: Estimates;
195
+ readonly fillerDispatchedAtMs: number | undefined;
196
+ readonly fillerSeconds: number | undefined;
197
+ /** Items being withdrawn, which count for nothing ahead. */
198
+ readonly withdrawing?: ReadonlySet<ItemKey>;
199
+ }
200
+ /** The place a projection is for: a new submission's is the end of its lane. */
201
+ export type ProjectedPlace = Pick<PlannedItem, "lane" | "admission" | "group"> & {
202
+ readonly key?: ItemKey;
203
+ readonly seconds?: number;
204
+ readonly startByMs?: number;
205
+ readonly asap?: boolean;
206
+ readonly held?: boolean;
207
+ readonly replaces?: ItemKey;
208
+ };
209
+ /**
210
+ * When a clip could start at the earliest if it took `place`, optimistically, so a refusal
211
+ * means it cannot make it: after the rest of the playing clip and every Ready clip on the
212
+ * preferred source ranked ahead, and after its own build, once builds have been measured.
213
+ * The build waits for the one in flight and for every build that must go first: higher
214
+ * lanes, a replacement or a group already under way in its lane, and earlier deadlines.
215
+ */
216
+ export declare const projectedStartMs: (view: ProjectionView, place: ProjectedPlace) => number;
217
+ /**
218
+ * The pure policy: every withdrawal the plan wants now, and at most one serialized provider
219
+ * command. The actor re-reads Engine after each applied command.
220
+ */
80
221
  export declare const plan: (snapshot: PolicySnapshot) => PolicyDecision;
81
222
  //# sourceMappingURL=scheduler-policy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler-policy.d.ts","sourceRoot":"","sources":["../../src/orchestration/scheduler-policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduler-policy.d.ts","sourceRoot":"","sources":["../../src/orchestration/scheduler-policy.ts"],"names":[],"mappings":"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"}