@framers/agentos 0.13.74 → 0.13.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/io/channels/meetings/MeetingManager.d.ts +257 -0
  2. package/dist/io/channels/meetings/MeetingManager.d.ts.map +1 -0
  3. package/dist/io/channels/meetings/MeetingManager.js +1173 -0
  4. package/dist/io/channels/meetings/MeetingManager.js.map +1 -0
  5. package/dist/io/channels/meetings/MeetingRoom.d.ts +86 -0
  6. package/dist/io/channels/meetings/MeetingRoom.d.ts.map +1 -0
  7. package/dist/io/channels/meetings/MeetingRoom.js +51 -0
  8. package/dist/io/channels/meetings/MeetingRoom.js.map +1 -0
  9. package/dist/io/channels/meetings/MeetingTranscriptSink.d.ts +29 -0
  10. package/dist/io/channels/meetings/MeetingTranscriptSink.d.ts.map +1 -0
  11. package/dist/io/channels/meetings/MeetingTranscriptSink.js +47 -0
  12. package/dist/io/channels/meetings/MeetingTranscriptSink.js.map +1 -0
  13. package/dist/io/channels/meetings/signing.d.ts +7 -4
  14. package/dist/io/channels/meetings/signing.d.ts.map +1 -1
  15. package/dist/io/channels/meetings/signing.js +18 -6
  16. package/dist/io/channels/meetings/signing.js.map +1 -1
  17. package/dist/io/channels/meetings/stores/memory.d.ts +31 -2
  18. package/dist/io/channels/meetings/stores/memory.d.ts.map +1 -1
  19. package/dist/io/channels/meetings/stores/memory.js +102 -9
  20. package/dist/io/channels/meetings/stores/memory.js.map +1 -1
  21. package/dist/io/channels/meetings/stores/types.d.ts +29 -10
  22. package/dist/io/channels/meetings/stores/types.d.ts.map +1 -1
  23. package/dist/io/channels/meetings/stores/types.js.map +1 -1
  24. package/dist/io/channels/meetings/types.d.ts +10 -0
  25. package/dist/io/channels/meetings/types.d.ts.map +1 -1
  26. package/dist/io/channels/meetings/types.js.map +1 -1
  27. package/dist/io/media/images/providers/ReplicateImageProvider.d.ts +45 -1
  28. package/dist/io/media/images/providers/ReplicateImageProvider.d.ts.map +1 -1
  29. package/dist/io/media/images/providers/ReplicateImageProvider.js +141 -38
  30. package/dist/io/media/images/providers/ReplicateImageProvider.js.map +1 -1
  31. package/dist/io/voice-pipeline/types.d.ts +13 -8
  32. package/dist/io/voice-pipeline/types.d.ts.map +1 -1
  33. package/package.json +1 -1
@@ -0,0 +1,257 @@
1
+ import type { ITranscriptInputSink, TranscriptTurn } from '../../voice-pipeline/types.js';
2
+ import type { IMeetingBotProvider, ProviderEventContext } from './IMeetingBotProvider.js';
3
+ import type { MeetingRoom } from './MeetingRoom.js';
4
+ import { type IClock, type IEntitlementHook, type IEventStore, type IJobStore, type IOutbox, type IRunStore, type ITranscriptStore } from './stores/types.js';
5
+ import { type MeetingEventType, type MeetingLeaveReason, type MeetingPlatform, type MeetingRunRecord, type MeetingRunState, type SendBotRequest, type SendBotResult } from './types.js';
6
+ /** The stores and hooks a manager keeps its runs in. */
7
+ export interface MeetingManagerStores {
8
+ /** The runs' rows. */
9
+ runs: IRunStore;
10
+ /** The dispatch jobs and their leases. */
11
+ jobs: IJobStore;
12
+ /** The runs' transcript turns. */
13
+ transcript: ITranscriptStore;
14
+ /** The runs' events, numbered per run. */
15
+ events: IEventStore;
16
+ /** The events' deliveries to the product's destinations. */
17
+ outbox: IOutbox;
18
+ /** The product's billing: reserve, meter, settle, release. */
19
+ entitlement: IEntitlementHook;
20
+ /** The clock the manager measures every limit on. */
21
+ clock: IClock;
22
+ }
23
+ /** How a host builds a {@link MeetingManager}: its stores, its room helper, its routes and its limits. */
24
+ export interface MeetingManagerConfig {
25
+ /** This process, as the holder of dispatch leases. */
26
+ managerId?: string;
27
+ /** Where every run's rows, jobs, turns, events and deliveries are kept. */
28
+ stores: MeetingManagerStores;
29
+ /** Makes each run's room at dispatch and deletes it at the end. */
30
+ room: MeetingRoom;
31
+ /** The product's events route for a provider's reports about a run. */
32
+ reportUrlFor: (runId: string, providerName: string) => string;
33
+ /** The product's destinations (webhook registrations) for an owner; absent, nothing is enqueued. */
34
+ destinationsFor?: (ownerRef: string) => Promise<string[]>;
35
+ /** The product's steps of the purge sequence: the agent's history, the kept session, the page. Each is retried until it resolves. */
36
+ purgeHooks?: Array<(runId: string) => Promise<void>>;
37
+ /** How long a dispatch lease lasts; renewed every third of it while a dispatch is in flight. Default 60000. */
38
+ leaseTtlMs?: number;
39
+ /** How long after `in_call` the notice may go unconfirmed before the run leaves with `notice_failed`. Default 30000. */
40
+ noticeConfirmMs?: number;
41
+ /** How often the stop monitor reports. Default 10000. */
42
+ monitorHeartbeatMs?: number;
43
+ /** How many heartbeats the stop monitor may miss before it counts as unhealthy: it does once this many heartbeat intervals pass without one (30 seconds with the defaults). Default 3. */
44
+ monitorMissedBeats?: number;
45
+ /** How long a suspended capture waits for the stop monitor to recover before the run leaves with `stop_monitor_failed`. Default 30000. */
46
+ monitorRecoverMs?: number;
47
+ /** How long after its due time a dispatch keeps being retried before the run fails. Default 300000. */
48
+ dispatchRetryMs?: number;
49
+ /** The pause before a failed dispatch is tried again. Default 15000. */
50
+ dispatchRetryDelayMs?: number;
51
+ /** How long after a leave command the bot is killed. Default 30000. */
52
+ killAfterMs?: number;
53
+ /** In-memory terminal records live for this grace; default two days, beyond the outbox retry window. */
54
+ forgetAfterMs?: number;
55
+ /** The least a reservation may cover for a run to be sent, in seconds; a send under it is refused with `allowance`. Default 600. */
56
+ minReservationSeconds?: number;
57
+ /** Where the manager writes its warnings and errors. */
58
+ logger?: {
59
+ info(msg: string): void;
60
+ warn(msg: string): void;
61
+ error(msg: string): void;
62
+ };
63
+ }
64
+ /** An event the manager emitted, as its handlers receive it once it is stored. */
65
+ export interface MeetingManagerEvent {
66
+ /** The event's type. */
67
+ type: MeetingEventType;
68
+ /** The run the event belongs to. */
69
+ runId: string;
70
+ /** The run's row as the manager held it when it emitted the event. */
71
+ run: MeetingRunRecord;
72
+ /** The event's number in its run. */
73
+ seq: number;
74
+ /** The event's payload; a content event carries what a person said or did. */
75
+ data?: Record<string, unknown>;
76
+ }
77
+ /** Receives each event once; a handler that throws or rejects is logged and the others still run. */
78
+ export type MeetingManagerEventHandler = (event: MeetingManagerEvent) => void | Promise<void>;
79
+ /** Thrown by a provider's `dispatch` when no worker has a slot. */
80
+ export declare class NoCapacityError extends Error {
81
+ /** @param message - Why no worker took the run. */
82
+ constructor(message?: string);
83
+ }
84
+ /**
85
+ * The meeting-participant channel's manager: sends bots, dispatches them under
86
+ * a lease, applies the providers' reports and enforces each run's lifecycle
87
+ * over the injected stores. Several managers may share one database; each
88
+ * takes dispatch leases under its own `managerId`.
89
+ */
90
+ export declare class MeetingManager {
91
+ private readonly config;
92
+ private readonly providers;
93
+ private readonly handlers;
94
+ private readonly paused;
95
+ private readonly id;
96
+ private readonly leaseTtlMs;
97
+ private readonly noticeConfirmMs;
98
+ private readonly monitorHeartbeatMs;
99
+ private readonly monitorMissedBeats;
100
+ private readonly monitorRecoverMs;
101
+ private readonly dispatchRetryMs;
102
+ private readonly dispatchRetryDelayMs;
103
+ private readonly killAfterMs;
104
+ private readonly minReservationSeconds;
105
+ private readonly purgeHooks;
106
+ private lastReconcileAt;
107
+ private timer;
108
+ constructor(config: MeetingManagerConfig);
109
+ private get stores();
110
+ private now;
111
+ /** Registers a provider under its name; a later provider with the same name replaces it. */
112
+ registerProvider(provider: IMeetingBotProvider): void;
113
+ /** The provider registered under `name`, if there is one. */
114
+ getProvider(name: string): IMeetingBotProvider | undefined;
115
+ /** The provider a send uses: the one named, or else the first registered provider that declares the platform. */
116
+ providerFor(platform: MeetingPlatform, name?: string): IMeetingBotProvider | undefined;
117
+ /** Refuses new sends to the platform with `platform_paused`; runs already sent go on. */
118
+ pausePlatform(platform: MeetingPlatform): void;
119
+ /** Takes new sends to the platform again. */
120
+ resumePlatform(platform: MeetingPlatform): void;
121
+ /** Whether new sends to the platform are refused. */
122
+ isPaused(platform: MeetingPlatform): boolean;
123
+ /** Adds a handler for every event the manager emits; the function returned removes it. */
124
+ on(handler: MeetingManagerEventHandler): () => void;
125
+ private emit;
126
+ /** Stores the event in its run's sequence; undefined when an event with its id is stored already, which is then delivered no second time. */
127
+ private storeEvent;
128
+ /** Delivers a stored event, with the run as it stands: a delivery to each of the owner's destinations, then every handler. */
129
+ private deliver;
130
+ /**
131
+ * Sends a bot: answers the run an earlier send by the same owner with the same idempotency key made, checks the link
132
+ * against the platform, reserves the run's time, stores the run and schedules its dispatch (now, or at `joinAt`). A
133
+ * reservation that covers less than `minReservationSeconds` is released and the send refused. A limit the request
134
+ * leaves out, or gives as `undefined`, takes its default. A send whose job store fails after the run is stored rejects
135
+ * with that error; {@link MeetingManager.reconcile} then gives the run its job, so a send repeated with the same key
136
+ * answers a run that is dispatched.
137
+ *
138
+ * @throws RangeError when `joinAt` or a limit the request gives is not a finite number (a limit must also be zero or more); nothing is reserved.
139
+ */
140
+ sendBot(request: SendBotRequest): Promise<SendBotResult>;
141
+ /** Runs `tick()` every second until `stop()`. A host with its own scheduler calls `tick()` itself. */
142
+ start(intervalMs?: number): void;
143
+ /** Stops the loop `start()` began; a pass already running finishes. */
144
+ stop(): void;
145
+ /**
146
+ * One pass: due jobs dispatched, limits enforced, kills issued, purges resumed, a reconcile every minute. Each step runs
147
+ * even when an earlier one throws, so a dispatch that fails on one run never holds back the limits of the others (the
148
+ * stop monitor's suspension among them); the first error is thrown once the pass is over.
149
+ */
150
+ tick(): Promise<void>;
151
+ private dispatchDue;
152
+ /** A run left in `dispatching` by a lease that expired: the bot is out (the provider knows the run) or it is not (dispatch again). */
153
+ private recoverDispatch;
154
+ private dispatch;
155
+ /**
156
+ * A dispatch that failed before the bot was out, while this manager still holds the job: the room goes, then the run
157
+ * ends (no capacity, a cancel that landed meanwhile, or the retry window past its due time) or its job is released to
158
+ * be tried again after the pause.
159
+ */
160
+ private dispatchFailed;
161
+ /**
162
+ * A cancel learned at `markDispatched`: the bot is out, so it is told to leave with the cancel's reason. The run is read
163
+ * again first, since the bot's own first report (`joining`) may have moved it on while the dispatch was in flight.
164
+ */
165
+ private leaveCancelled;
166
+ /** A provider's report, from the product's events route. Verified by the provider, parsed, deduplicated, applied. */
167
+ processProviderEvent(providerName: string, ctx: ProviderEventContext): Promise<{
168
+ accepted: boolean;
169
+ error?: string;
170
+ applied: number;
171
+ }>;
172
+ /**
173
+ * The event a report is, whatever the run's state, for a report that is one: stored before the report is applied, it
174
+ * is the report's record. A state report has none (the move it makes emits its event), and a heartbeat,
175
+ * capture_started, done and crashed emit nothing of their own.
176
+ */
177
+ private ownEvent;
178
+ private apply;
179
+ private isStopPhrase;
180
+ /** The alone timer's patch for a report of `count` participants besides the bot: started by the first report of none, kept while there is none, cleared when one is reported. */
181
+ private aloneTimer;
182
+ /** Moves the run forward when the transition is allowed; a repeated state does nothing; a disallowed one is logged and dropped. */
183
+ private move;
184
+ private emitFrom;
185
+ private captureReady;
186
+ /** The capture interlock: `in_call`, the notice confirmed, and the stop monitor's own observation reported after the notice, no fence. */
187
+ private startCaptureIfReady;
188
+ /** The bot leaves; the run's data stays under its Keep. Before dispatch the run ends; during a dispatch the cancel becomes a leave. */
189
+ leaveBot(runId: string, reason?: MeetingLeaveReason): Promise<boolean>;
190
+ /** The bot leaves and everything it took is deleted (the purge sequence). On a run that is already done, the kept content is deleted (a session's deletion). */
191
+ purgeRun(runId: string, reason?: MeetingLeaveReason): Promise<boolean>;
192
+ /** A kept run's content removed after `done`: the fences, the stores, the hooks, the provider's copies, the content-free row, `bot:purged`. A step that throws is the caller's to retry (the product's one purge path retries). */
193
+ private purgeKept;
194
+ /** Posts to the meeting's chat through the run's bot; false unless the run is in the call and its provider posts to chat. */
195
+ postChat(runId: string, text: string): Promise<boolean>;
196
+ /** A run sent from a page: the page is still there. */
197
+ pageSeen(runId: string): Promise<void>;
198
+ /** Adds a step to the purge sequence, as {@link MeetingManagerConfig.purgeHooks} does. */
199
+ addPurgeHook(hook: (runId: string) => Promise<void>): void;
200
+ /** The run's row, or undefined when there is none. */
201
+ getRun(runId: string): Promise<MeetingRunRecord | undefined>;
202
+ /** The runs the filter selects, newest first, as the run store's {@link IRunStore.list} answers them. */
203
+ listRuns(filter: {
204
+ ownerRef?: string;
205
+ states?: readonly MeetingRunState[];
206
+ since?: number;
207
+ limit?: number;
208
+ }): Promise<MeetingRunRecord[]>;
209
+ /**
210
+ * Moves the run to `leaving` (a run behind the fence stays `purging`), arms the kill and tells the bot to leave. The
211
+ * kill's deadline is armed on the run before the command goes, so a leave the bot never receives still ends in the
212
+ * kill, and whichever manager runs the limits, after a restart too, sends it.
213
+ */
214
+ private leave;
215
+ /**
216
+ * Sends a command on the way out (suspend, leave, kill) to the run's bot. A command that fails, its worker unreachable
217
+ * for a moment, is logged and not thrown: the kill armed before it, and the end recorded after the kill, cover a bot
218
+ * that never received it.
219
+ */
220
+ private sendCommand;
221
+ /** A run that ends before it joined (a failed revalidation, no capacity, a cancel): never billed. */
222
+ private fail;
223
+ /**
224
+ * After `left` (no purge): settle or release, drop what is not kept, delete the room, remove the job, and only then
225
+ * `done`. A step that throws leaves the run in `left` with `cleanupPending`, and the next tick calls this again; the
226
+ * entitlement hook's `settle` and `release` are idempotent, so a retry after a half-done cleanup changes nothing twice.
227
+ */
228
+ private complete;
229
+ private crash;
230
+ /** (a) the fence; (b) the purge, each step retried until it resolves; (c) the content-free record. */
231
+ private purge;
232
+ /** The steps after the fence, in order; a step that throws is retried on the next tick, and a restart resumes here through `reconcile`. */
233
+ private continuePurge;
234
+ /**
235
+ * Each run's limits, kills, resumed purges and retried cleanups, in turn. A run whose step throws (a cleanup, a settle,
236
+ * a command) holds back no other run's, the stop monitor's suspension among them: it is tried again on the next pass,
237
+ * and the first error is thrown once every run has had its turn.
238
+ */
239
+ private enforceLimits;
240
+ /** Whether a dispatcher still holds the run's job under a lease that has not run out. */
241
+ private dispatchLeaseLive;
242
+ /** Evicts completed in-memory runs after the grace. Durable stores omit forget and keep their terminal records. */
243
+ private cleanupExpired;
244
+ /**
245
+ * Compares dispatched jobs with the providers' usage: a run whose container is gone is ended as crashed; an unfinished
246
+ * purge is resumed. A run still waiting for its dispatch whose job is missing (a send whose job could not be stored)
247
+ * is given its job again, and one a cancel left without its job (the cancel's reason is on the run) is ended, so
248
+ * neither waits for ever holding its reservation. As in the limits, a run whose step throws holds back no other, and
249
+ * the first error is thrown at the end.
250
+ */
251
+ reconcile(): Promise<void>;
252
+ /** A turn the listen session wrote: a `bot:transcript` event, stored and forwarded, unless the run is behind the fence or over. */
253
+ recordTranscript(turn: TranscriptTurn): Promise<boolean>;
254
+ /** The sink a listen session writes to for one run: the transcript store behind the fence, then the event above. */
255
+ transcriptSink(runId: string): ITranscriptInputSink;
256
+ }
257
+ //# sourceMappingURL=MeetingManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeetingManager.d.ts","sourceRoot":"","sources":["../../../../src/io/channels/meetings/MeetingManager.ts"],"names":[],"mappings":"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"}