@xema/omni-protocol 0.1.118 → 0.1.119
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/testing.d.ts +0 -2
- package/dist/testing.js +0 -2
- package/guide.md +6 -1
- package/package.json +1 -1
package/dist/testing.d.ts
CHANGED
|
@@ -215,8 +215,6 @@ export declare class TeamStream {
|
|
|
215
215
|
private static ids;
|
|
216
216
|
/** A snapshot carrying a team is the team whole; one carrying none leaves the lead with none. */
|
|
217
217
|
seed(snapshot: unknown): void;
|
|
218
|
-
/** Whether the team currently carries this member, as the events left it. */
|
|
219
|
-
has(id: string): boolean;
|
|
220
218
|
apply(envelope: unknown, path?: string): ProtocolViolation[];
|
|
221
219
|
}
|
|
222
220
|
export declare class BreakStream {
|
package/dist/testing.js
CHANGED
|
@@ -2235,8 +2235,6 @@ export class TeamStream {
|
|
|
2235
2235
|
seed(snapshot) {
|
|
2236
2236
|
this.members = TeamStream.ids(isRecord(snapshot) ? snapshot.team : undefined);
|
|
2237
2237
|
}
|
|
2238
|
-
/** Whether the team currently carries this member, as the events left it. */
|
|
2239
|
-
has(id) { return this.members?.has(id) === true; }
|
|
2240
2238
|
apply(envelope, path = "event") {
|
|
2241
2239
|
const event = isRecord(envelope) ? envelope.event : undefined;
|
|
2242
2240
|
if (!isRecord(event))
|
package/guide.md
CHANGED
|
@@ -2548,7 +2548,9 @@ a backend that does not know the session yet — yields no snapshot, and the ada
|
|
|
2548
2548
|
|
|
2549
2549
|
A snapshot must account for **everything the adapter has emitted before it resolves**, not merely
|
|
2550
2550
|
everything emitted when it was requested. Omni drops the state-replacing events held during the
|
|
2551
|
-
read on that promise, and applies the rest after it (see **`Connection.snapshot()`**)
|
|
2551
|
+
read on that promise, and applies the rest after it (see **`Connection.snapshot()`**). Which kinds a
|
|
2552
|
+
snapshot restates, and so supersedes, is exported from the testing module as
|
|
2553
|
+
`SUPERSEDED_BY_A_SNAPSHOT`, so an agent application and the harness drop the same ones; an adapter
|
|
2552
2554
|
that serves a stale snapshot and then lets an earlier event through will have Omni apply state the
|
|
2553
2555
|
snapshot already superseded. The harness reads its connect snapshot the same way, and holds the
|
|
2554
2556
|
snapshot to accounting for every task event it superseded: a task published during the read and
|
|
@@ -2935,6 +2937,9 @@ same exported checks are used by Omni and adapter tests so their interpretations
|
|
|
2935
2937
|
| `validateProviderTimeEstimate(estimate, scope)` | Optional agent application estimate shape and provider/login scope; no accuracy guarantee. |
|
|
2936
2938
|
| `validateHistoryReport(report, path?, manifest?, task?)` | What the agent application reports of a leg it performed, for an adapter to check before forwarding: a task, a step, when it began, a positive `seconds` where stated, and an explicit `ended` that carries the final duration. Given the manifest, a running report is refused unless it declares `runningStepReports`. Given the task, the agent application's own mute beginning on a `paused` task is refused (`historyReport.muted.held`): the Mute waits for resume. |
|
|
2937
2939
|
| `validateHostReport(report)` | The agent application's own report as published to an adapter: `online`, and where there is audio, an input that is `available` with the microphone and `flowing`, or `unavailable` with a reason and the failure that says why, and an output that is `available` or `unavailable` with its failure. The harness validates whatever agent application a test hands the adapter; `stillHost(report)` builds one that never changes. |
|
|
2940
|
+
| `validateNextCall(value)` | The agent's standing ask for the next call, on its own as `next-call` and `Snapshot.nextCall` carry it: since when, and nothing else (`nextCall.since`, `nextCall.field`). |
|
|
2941
|
+
| `validateLinedUp(value, path?, levels?)` | A call lined up in the agent's own queue, on its own as `lined-up` and `Snapshot.linedUp` carry it: the caller under the same contact rules as a task's party, the queue's label, the waits, and `release` by presence (`linedUp.*`). |
|
|
2942
|
+
| `validatePhoneState(value, path?, context?)` | The phone as the platform sees it, on its own as `phone-updated` and `Snapshot.phone` carry it: its status, its one active channel, its mute where a hardphone's is observed (`phone.*`). |
|
|
2938
2943
|
| `validateHostMute(mute, softphone)` | What the agent application's Mute does, stated on a softphone login and nowhere else: `stream` or `station` (`host.mute`), required where the agent application holds a microphone (`host.mute.required`) and refused where it does not (`host.mute.unexpected`). The harness holds `ConnectContext.host.mute` to it. |
|
|
2939
2944
|
| `validateLoginStore(store)` | The login's store the agent application hands every connection: an object with `get`, `set` and `delete` (`store.shape`, `store.get`, `.set`, `.delete`). The harness holds `ConnectContext.store` to it. |
|
|
2940
2945
|
| `validateCapacity(capacity)` | What the agent application states as capacity: a whole number of zero or more (`capacity.count`), zero being agent application-stopped. The harness states one on connect and two, one and zero after the test, each answered `applied`, and holds any offer to the count in force (`stream.taskOffered.overCapacity`). |
|