statewire 0.21.0 → 0.22.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.
Files changed (134) hide show
  1. package/dist/client/changes.d.ts +3 -6
  2. package/dist/client/changes.d.ts.map +1 -1
  3. package/dist/client/changes.js +1 -2
  4. package/dist/client/connection.d.ts +80 -83
  5. package/dist/client/connection.d.ts.map +1 -1
  6. package/dist/client/connection.js +2 -3
  7. package/dist/client/connection.js.map +1 -1
  8. package/dist/client/core.d.ts +39 -41
  9. package/dist/client/core.d.ts.map +1 -1
  10. package/dist/client/core.js +2 -3
  11. package/dist/client/session.d.ts +93 -95
  12. package/dist/client/session.d.ts.map +1 -1
  13. package/dist/client/session.js +6 -7
  14. package/dist/client/session.js.map +1 -1
  15. package/dist/client/sessionStore.d.ts +11 -14
  16. package/dist/client/sessionStore.d.ts.map +1 -1
  17. package/dist/client/sessionStore.js +1 -2
  18. package/dist/client/storageError.d.ts +2 -5
  19. package/dist/client/storageError.d.ts.map +1 -1
  20. package/dist/client/storageError.js +1 -2
  21. package/dist/client/timing.d.ts +11 -14
  22. package/dist/client/timing.d.ts.map +1 -1
  23. package/dist/client/timing.js +1 -2
  24. package/dist/document.d.ts +17 -20
  25. package/dist/document.d.ts.map +1 -1
  26. package/dist/document.js +1 -2
  27. package/dist/host/adapter.d.ts +4 -7
  28. package/dist/host/adapter.d.ts.map +1 -1
  29. package/dist/host/adapter.js +1 -2
  30. package/dist/host/draft.d.ts +13 -16
  31. package/dist/host/draft.d.ts.map +1 -1
  32. package/dist/host/draft.js +1 -2
  33. package/dist/host/engine.d.ts +7 -10
  34. package/dist/host/engine.d.ts.map +1 -1
  35. package/dist/host/engine.js +1 -2
  36. package/dist/host/host.d.ts +42 -45
  37. package/dist/host/host.d.ts.map +1 -1
  38. package/dist/host/host.js +1 -2
  39. package/dist/host/http.d.ts +4 -7
  40. package/dist/host/http.d.ts.map +1 -1
  41. package/dist/host/http.js +2 -3
  42. package/dist/host/socket.d.ts +144 -145
  43. package/dist/host/socket.d.ts.map +1 -1
  44. package/dist/host/socket.js +19 -9
  45. package/dist/host/socket.js.map +1 -1
  46. package/dist/host/synced.d.ts +3 -6
  47. package/dist/host/synced.d.ts.map +1 -1
  48. package/dist/host/synced.js +1 -2
  49. package/dist/host/work.d.ts +2 -5
  50. package/dist/host/work.d.ts.map +1 -1
  51. package/dist/host/work.js +1 -2
  52. package/dist/host-internal.d.ts +99 -93
  53. package/dist/host-internal.d.ts.map +1 -1
  54. package/dist/host.d.ts +90 -91
  55. package/dist/host.d.ts.map +1 -1
  56. package/dist/index.d.ts +11 -8
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +1 -1
  59. package/dist/statewire.d.ts +265 -268
  60. package/dist/statewire.d.ts.map +1 -1
  61. package/dist/statewire.js +1 -2
  62. package/dist/storage.d.ts +23 -26
  63. package/dist/storage.d.ts.map +1 -1
  64. package/dist/storage.js +1 -2
  65. package/dist/transports/fake-sse.d.ts +7 -10
  66. package/dist/transports/fake-sse.d.ts.map +1 -1
  67. package/dist/transports/fake-sse.js +1 -2
  68. package/dist/transports/fixtures.d.ts +19 -25
  69. package/dist/transports/fixtures.d.ts.map +1 -1
  70. package/dist/transports/fixtures.js +1 -2
  71. package/dist/transports/remote.d.ts +8 -11
  72. package/dist/transports/remote.d.ts.map +1 -1
  73. package/dist/transports/remote.js +1 -2
  74. package/dist/transports/sse-parser.d.ts +1 -4
  75. package/dist/transports/sse-parser.d.ts.map +1 -1
  76. package/dist/transports/sse-parser.js +1 -2
  77. package/dist/transports/sse.d.ts +50 -53
  78. package/dist/transports/sse.d.ts.map +1 -1
  79. package/dist/transports/sse.js +2 -3
  80. package/dist/transports/testing.d.ts +31 -34
  81. package/dist/transports/testing.d.ts.map +1 -1
  82. package/dist/transports/testing.js +1 -2
  83. package/dist/transports/ws.d.ts +5 -7
  84. package/dist/transports/ws.d.ts.map +1 -1
  85. package/dist/transports/ws.js +3 -4
  86. package/dist/transports/ws.js.map +1 -1
  87. package/dist/types.d.ts +81 -78
  88. package/dist/types.d.ts.map +1 -1
  89. package/dist/types.js +1 -2
  90. package/dist/util/draftTraps.d.ts +2 -4
  91. package/dist/util/draftTraps.d.ts.map +1 -1
  92. package/dist/util/draftTraps.js +1 -2
  93. package/dist/util/macrotask.d.ts +1 -4
  94. package/dist/util/macrotask.d.ts.map +1 -1
  95. package/dist/util/macrotask.js +1 -2
  96. package/dist/util/methodProxy.d.ts +1 -4
  97. package/dist/util/methodProxy.d.ts.map +1 -1
  98. package/dist/util/methodProxy.js +1 -2
  99. package/dist/util/randomId.d.ts +1 -4
  100. package/dist/util/randomId.d.ts.map +1 -1
  101. package/dist/util/randomId.js +1 -2
  102. package/dist/util/recordMutations.d.ts +5 -7
  103. package/dist/util/recordMutations.d.ts.map +1 -1
  104. package/dist/util/recordMutations.js +1 -2
  105. package/dist/util/statePath.d.ts +9 -12
  106. package/dist/util/statePath.d.ts.map +1 -1
  107. package/dist/util/statePath.js +1 -2
  108. package/dist/wire/context.d.ts +7 -12
  109. package/dist/wire/context.d.ts.map +1 -1
  110. package/dist/wire/context.js +2 -3
  111. package/dist/wire/documents.d.ts +36 -39
  112. package/dist/wire/documents.d.ts.map +1 -1
  113. package/dist/wire/documents.js +2 -3
  114. package/dist/wire/documents.js.map +1 -1
  115. package/dist/wire/limits.d.ts +7 -10
  116. package/dist/wire/limits.d.ts.map +1 -1
  117. package/dist/wire/limits.js +1 -2
  118. package/dist/wire/meta.d.ts +9 -11
  119. package/dist/wire/meta.d.ts.map +1 -1
  120. package/dist/wire/meta.js +1 -2
  121. package/dist/wire/meta.js.map +1 -1
  122. package/dist/wire/ops.d.ts +9 -12
  123. package/dist/wire/ops.d.ts.map +1 -1
  124. package/dist/wire/ops.js +1 -2
  125. package/dist/wire/protocol.d.ts +53 -56
  126. package/dist/wire/protocol.d.ts.map +1 -1
  127. package/dist/wire/protocol.js +1 -2
  128. package/dist/wire/version.d.ts +1 -4
  129. package/dist/wire/version.d.ts.map +1 -1
  130. package/dist/wire/version.js +1 -2
  131. package/package.json +6 -6
  132. package/src/client/connection.ts +13 -15
  133. package/src/host/socket.ts +47 -3
  134. package/src/host-internal.ts +10 -0
@@ -1,272 +1,269 @@
1
- import { StatewireDocuments } from "./wire/documents.js";
2
- import { StatewireHost } from "./host.js";
3
- import { StatewireProtocol } from "./wire/protocol.js";
4
- import { TERMINAL } from "./client/connection.js";
5
- import { Statewire } from "./types.js";
6
- import { ResourceElement } from "@assistant-ui/tap";
7
- //#region src/statewire.d.ts
8
- declare const useStatewire: <TState, TCommands extends Statewire.Commands = Statewire.Commands>(options: StatewireClient.Options<TState, TCommands>) => StatewireClient.Helpers<TState, TCommands>;
9
- declare const StatewireResource: <TState, TCommands extends Statewire.Commands = Statewire.Commands>(options: StatewireClient.Options<TState, TCommands>) => ResourceElement<StatewireClient.Helpers<TState, TCommands>>;
10
- declare class StatewireClient<TState, TCommands extends Statewire.Commands = Statewire.Commands> {
11
- private readonly root;
12
- private disposed;
13
- constructor(options: StatewireClient.Options<TState, TCommands>);
14
- get state(): TState;
15
- get connection(): StatewireClient.Connection;
16
- get commands(): Statewire.CommandsProxy<TCommands>;
17
- get documents(): StatewireDocuments.Source | undefined;
18
- get selection(): StatewireProtocol.Selection | undefined;
19
- invoke(protocol: string, method: string, params: readonly unknown[]): Promise<unknown>;
20
- setContext(protocol: string, value: Statewire.Context): void;
21
- get isBusy(): boolean;
22
- get failed(): readonly StatewireClient.FailedCommand[];
23
- retryFailed(entry: StatewireClient.FailedCommand): Promise<unknown>;
24
- discardFailed(entry: StatewireClient.FailedCommand): void;
25
- subscribe(listener: () => void): () => void;
26
- dispose(): void;
1
+ import type { StatewireDocuments } from "./wire/documents.js";
2
+ import type { StatewireProtocol } from "./wire/protocol.js";
3
+ import type { StatewireHost } from "./host.js";
4
+ import type { ResourceElement } from "@assistant-ui/tap";
5
+ import type { Statewire } from "./types.js";
6
+ import type { TERMINAL } from "./client/connection.js";
7
+ export declare const useStatewire: <TState, TCommands extends Statewire.Commands = Statewire.Commands>(options: StatewireClient.Options<TState, TCommands>) => StatewireClient.Helpers<TState, TCommands>;
8
+ export declare const StatewireResource: <TState, TCommands extends Statewire.Commands = Statewire.Commands>(options: StatewireClient.Options<TState, TCommands>) => ResourceElement<StatewireClient.Helpers<TState, TCommands>>;
9
+ export declare class StatewireClient<TState, TCommands extends Statewire.Commands = Statewire.Commands> {
10
+ private readonly root;
11
+ private disposed;
12
+ constructor(options: StatewireClient.Options<TState, TCommands>);
13
+ get state(): TState;
14
+ get connection(): StatewireClient.Connection;
15
+ get commands(): Statewire.CommandsProxy<TCommands>;
16
+ get documents(): StatewireDocuments.Source | undefined;
17
+ get selection(): StatewireProtocol.Selection | undefined;
18
+ invoke(protocol: string, method: string, params: readonly unknown[]): Promise<unknown>;
19
+ setContext(protocol: string, value: Statewire.Context): void;
20
+ get isBusy(): boolean;
21
+ get failed(): readonly StatewireClient.FailedCommand[];
22
+ retryFailed(entry: StatewireClient.FailedCommand): Promise<unknown>;
23
+ discardFailed(entry: StatewireClient.FailedCommand): void;
24
+ subscribe(listener: () => void): () => void;
25
+ dispose(): void;
27
26
  }
28
- declare namespace StatewireClient {
29
- type Options<TState, TCommands extends Statewire.Commands = Statewire.Commands> = {
30
- protocol?: string;
31
- context?: Readonly<Record<string, Statewire.Context>>;
32
- keyPrefixes?: Readonly<Record<string, readonly string[]>>;
33
- wireVersion?: StatewireProtocol.Range;
34
- applicationProtocols?: readonly StatewireProtocol.Offer[] | "*";
35
- transport: ResourceElement<Statewire<TState, TCommands>>;
36
- /** The session does not exist on the server yet: the transport's first attach waits for the first command send; the transport's own `isNew` wins. */
37
- isNew?: boolean;
38
- /** Durable session: the mounted storage holds this client's lane identity and its un-durable commands, which resend on the next attach. */
39
- storage?: {
40
- session?: ResourceElement<SessionStorage> | undefined;
41
- documents?: ResourceElement<StatewireDocuments.Storage> | undefined;
42
- } | undefined;
43
- /** Served as the canonical state until the attach snapshot; own commands fold over it. */
44
- initialState?: TState;
45
- optimistic?: Optimistic<NonNullable<TState>, TCommands>;
46
- materialize?: Materialize<NonNullable<TState>>;
47
- /** Republishes through `materialize` when it changes (`Object.is`); `materialize` itself is read fresh on every publish. */
48
- materializeKey?: unknown;
49
- onStateChange?: (state: NonNullable<TState>, ctx: {
50
- changes: Statewire.Changes;
51
- }) => void;
52
- onCommandChange?: (update: Statewire.CommandUpdate<TCommands>, ctx: {
53
- state: NonNullable<TState>;
54
- }) => void;
55
- onConnectionChange?: (connection: Connection) => void;
56
- onError?: (error: ConnectionError) => void;
57
- /** Drops a retained failed entry once a canonical snapshot shows its effect landed; checked against each new snapshot. */
58
- failureCovered?: (state: NonNullable<TState>, entry: FailedCommand) => boolean;
59
- };
60
- type Helpers<TState, TCommands extends Statewire.Commands = Statewire.Commands> = {
61
- /** The statewire's state type — remote statewires include `undefined` until the first attach snapshot applies. */
62
- state: TState;
63
- documents: StatewireDocuments.Source | undefined;
64
- selection: StatewireProtocol.Selection | undefined;
65
- setContext: (protocol: string, value: Statewire.Context) => void;
66
- invoke: (protocol: string, method: string, params: readonly unknown[]) => Promise<unknown>;
67
- /** Identity-stable across renders; reads the current canonical state without subscribing the caller. */
68
- getState: () => TState;
69
- connection: Connection;
70
- commands: Statewire.CommandsProxy<TCommands>;
71
- /** Negation of the server's broadcast idle level (a transport without idle is always busy). */
72
- isBusy: boolean;
73
- /** Non-accepted sends retained in the session record; reload with it. */
74
- failed: readonly FailedCommand[];
75
- /** Re-enqueues the entry's command on fresh clocks and removes the entry. */
76
- retryFailed: (entry: FailedCommand) => Promise<unknown>;
77
- /** Removes the entry. */
78
- discardFailed: (entry: FailedCommand) => void;
79
- };
80
- /** Connection lifecycle and whether its current state warrants a problem indicator. */
81
- type ConnectionState = {
82
- status: "standby";
83
- reason: "deferred" | "idle";
84
- degraded: false;
85
- } | {
86
- status: "connecting";
87
- degraded: false;
88
- } | {
89
- status: "connected";
90
- degraded: false;
91
- } | {
92
- status: "retrying";
93
- degraded: true;
94
- attempt: number;
95
- /** Backoff details are absent while the retry dial is in flight. */
96
- cause?: "dropped" | "reconnect" | "error" | "unauthorized";
97
- code?: string;
98
- nextRetryAt?: number;
99
- lastError?: string;
100
- message?: string;
101
- } | {
102
- status: "stopped";
103
- degraded: true;
104
- reason: "gone" | "forbidden" | "protocol-error" | "unauthorized" | "storage-error";
105
- message?: string;
106
- payload?: unknown;
107
- };
108
- type Connection = ConnectionState & {
109
- error?: ConnectionError;
110
- reconnect: () => void;
111
- };
112
- type ConnectionStatus = Connection["status"];
113
- /**
114
- * Mutate the draft in place; the client records the next state plus the exact
115
- * changed paths. Re-run against the new base on every rebase.
116
- */
117
- type Optimistic<TState, TCommands extends Statewire.Commands = Statewire.Commands> = (draft: TState, command: Statewire.Command<TCommands>, ctx: OptimisticContext) => void;
118
- type OptimisticContext = {
119
- ts: number;
120
- seq: number;
121
- clientId?: string;
122
- };
123
- /**
124
- * Mutate the draft to fold client-known facts into the state: server-accepted,
125
- * still-uncommitted intents (e.g. dispatch records into messages) or the live
126
- * state of a sibling statewire. Runs after the optimistic folds on every
127
- * published state; `materializeKey` republishes when the facts change.
128
- */
129
- type Materialize<TState> = (draft: TState) => void;
130
- /**
131
- * fate: "aborted" = never sent, "rejected" = the server refused it
132
- * (`code` "unknown-command" | "invalid-params" for the static rejects,
133
- * code-less for handler rejects), "lost" = sent but no verdict will ever
134
- * arrive — the record is gone (a proven seq gap) or the channel died: it
135
- * may or may not have run, "failed" = the handler ran and threw,
136
- * "crashed" = the handler died involuntarily, "expired" = settled —
137
- * result, rejected, failed, or crashed — but the verdict outlived the
138
- * server's retention.
139
- * cause is which channel settled it: "server" = the server's answer;
140
- * the rest are channel deaths the client settled locally.
141
- */
142
- type SendFailure = {
143
- fate: "rejected";
144
- cause: "server";
145
- code?: string;
146
- message?: string;
147
- payload?: unknown;
148
- } | {
149
- fate: "failed";
150
- cause: "server";
151
- message?: string;
152
- } | {
153
- fate: "crashed";
154
- cause: "server";
155
- } | {
156
- fate: "expired";
157
- cause: "server";
158
- } | {
159
- fate: "aborted";
160
- cause: "unmount" | "stream-gone" | "session-lost";
161
- predecessorLost?: true;
162
- } | {
163
- fate: "lost";
164
- cause: "unmount" | "stream-gone" | "session-lost";
165
- };
166
- /** Held commands a proven record gap settled `{fate: "lost", cause: "session-lost"}`; return "requeue" to re-enqueue them on the reset clocks. */
167
- type OnSessionLost = (pending: ReadonlyArray<{
168
- method: string;
169
- params: readonly unknown[];
170
- ts: number;
171
- seq: number;
172
- clientId?: string;
173
- }>) => "requeue" | "drop";
174
- /** A non-accepted send retained for the user: the wire statement, its failure, and its original clocks. */
175
- type FailedCommand = {
176
- readonly protocol: string;
177
- readonly produced?: SessionCommand["produced"];
178
- readonly command: string;
179
- readonly params: readonly unknown[];
180
- readonly meta?: unknown;
181
- readonly failure: SendFailure;
182
- readonly ts: number;
183
- readonly seq: number;
184
- };
185
- /** A command as persisted while un-durable: its lane seq plus the wire statement. */
186
- type SessionCommand = {
187
- seq: number;
188
- produced?: {
189
- wire: StatewireProtocol.Range;
190
- protocols: readonly StatewireProtocol.Offer[] | "*";
27
+ export declare namespace StatewireClient {
28
+ type Options<TState, TCommands extends Statewire.Commands = Statewire.Commands> = {
29
+ protocol?: string;
30
+ context?: Readonly<Record<string, Statewire.Context>>;
31
+ keyPrefixes?: Readonly<Record<string, readonly string[]>>;
32
+ wireVersion?: StatewireProtocol.Range;
33
+ applicationProtocols?: readonly StatewireProtocol.Offer[] | "*";
34
+ transport: ResourceElement<Statewire<TState, TCommands>>;
35
+ /** The session does not exist on the server yet: the transport's first attach waits for the first command send; the transport's own `isNew` wins. */
36
+ isNew?: boolean;
37
+ /** Durable session: the mounted storage holds this client's lane identity and its un-durable commands, which resend on the next attach. */
38
+ storage?: {
39
+ session?: ResourceElement<SessionStorage> | undefined;
40
+ documents?: ResourceElement<StatewireDocuments.Storage> | undefined;
41
+ } | undefined;
42
+ /** Served as the canonical state until the attach snapshot; own commands fold over it. */
43
+ initialState?: TState;
44
+ optimistic?: Optimistic<NonNullable<TState>, TCommands>;
45
+ materialize?: Materialize<NonNullable<TState>>;
46
+ /** Republishes through `materialize` when it changes (`Object.is`); `materialize` itself is read fresh on every publish. */
47
+ materializeKey?: unknown;
48
+ onStateChange?: (state: NonNullable<TState>, ctx: {
49
+ changes: Statewire.Changes;
50
+ }) => void;
51
+ onCommandChange?: (update: Statewire.CommandUpdate<TCommands>, ctx: {
52
+ state: NonNullable<TState>;
53
+ }) => void;
54
+ onConnectionChange?: (connection: Connection) => void;
55
+ onError?: (error: ConnectionError) => void;
56
+ /** Drops a retained failed entry once a canonical snapshot shows its effect landed; checked against each new snapshot. */
57
+ failureCovered?: (state: NonNullable<TState>, entry: FailedCommand) => boolean;
58
+ };
59
+ type Helpers<TState, TCommands extends Statewire.Commands = Statewire.Commands> = {
60
+ /** The statewire's state type — remote statewires include `undefined` until the first attach snapshot applies. */
61
+ state: TState;
62
+ documents: StatewireDocuments.Source | undefined;
63
+ selection: StatewireProtocol.Selection | undefined;
64
+ setContext: (protocol: string, value: Statewire.Context) => void;
65
+ invoke: (protocol: string, method: string, params: readonly unknown[]) => Promise<unknown>;
66
+ /** Identity-stable across renders; reads the current canonical state without subscribing the caller. */
67
+ getState: () => TState;
68
+ connection: Connection;
69
+ commands: Statewire.CommandsProxy<TCommands>;
70
+ /** Negation of the server's broadcast idle level (a transport without idle is always busy). */
71
+ isBusy: boolean;
72
+ /** Non-accepted sends retained in the session record; reload with it. */
73
+ failed: readonly FailedCommand[];
74
+ /** Re-enqueues the entry's command on fresh clocks and removes the entry. */
75
+ retryFailed: (entry: FailedCommand) => Promise<unknown>;
76
+ /** Removes the entry. */
77
+ discardFailed: (entry: FailedCommand) => void;
78
+ };
79
+ /** Connection lifecycle and whether its current state warrants a problem indicator. */
80
+ type ConnectionState = {
81
+ status: "standby";
82
+ reason: "deferred" | "idle";
83
+ degraded: false;
84
+ } | {
85
+ status: "connecting";
86
+ degraded: false;
87
+ } | {
88
+ status: "connected";
89
+ degraded: false;
90
+ } | {
91
+ status: "retrying";
92
+ degraded: true;
93
+ attempt: number;
94
+ /** Backoff details are absent while the retry dial is in flight. */
95
+ cause?: "dropped" | "reconnect" | "error" | "unauthorized";
96
+ code?: string;
97
+ nextRetryAt?: number;
98
+ lastError?: string;
99
+ message?: string;
100
+ } | {
101
+ status: "stopped";
102
+ degraded: true;
103
+ reason: "gone" | "forbidden" | "protocol-error" | "unauthorized" | "storage-error";
104
+ message?: string;
105
+ payload?: unknown;
106
+ };
107
+ type Connection = ConnectionState & {
108
+ error?: ConnectionError;
109
+ reconnect: () => void;
110
+ };
111
+ type ConnectionStatus = Connection["status"];
112
+ /**
113
+ * Mutate the draft in place; the client records the next state plus the exact
114
+ * changed paths. Re-run against the new base on every rebase.
115
+ */
116
+ type Optimistic<TState, TCommands extends Statewire.Commands = Statewire.Commands> = (draft: TState, command: Statewire.Command<TCommands>, ctx: OptimisticContext) => void;
117
+ type OptimisticContext = {
118
+ ts: number;
119
+ seq: number;
120
+ clientId?: string;
121
+ };
122
+ /**
123
+ * Mutate the draft to fold client-known facts into the state: server-accepted,
124
+ * still-uncommitted intents (e.g. dispatch records into messages) or the live
125
+ * state of a sibling statewire. Runs after the optimistic folds on every
126
+ * published state; `materializeKey` republishes when the facts change.
127
+ */
128
+ type Materialize<TState> = (draft: TState) => void;
129
+ /**
130
+ * fate: "aborted" = never sent, "rejected" = the server refused it
131
+ * (`code` "unknown-command" | "invalid-params" for the static rejects,
132
+ * code-less for handler rejects), "lost" = sent but no verdict will ever
133
+ * arrive — the record is gone (a proven seq gap) or the channel died: it
134
+ * may or may not have run, "failed" = the handler ran and threw,
135
+ * "crashed" = the handler died involuntarily, "expired" = settled —
136
+ * result, rejected, failed, or crashed — but the verdict outlived the
137
+ * server's retention.
138
+ * cause is which channel settled it: "server" = the server's answer;
139
+ * the rest are channel deaths the client settled locally.
140
+ */
141
+ type SendFailure = {
142
+ fate: "rejected";
143
+ cause: "server";
144
+ code?: string;
145
+ message?: string;
146
+ payload?: unknown;
147
+ } | {
148
+ fate: "failed";
149
+ cause: "server";
150
+ message?: string;
151
+ } | {
152
+ fate: "crashed";
153
+ cause: "server";
154
+ } | {
155
+ fate: "expired";
156
+ cause: "server";
157
+ } | {
158
+ fate: "aborted";
159
+ cause: "unmount" | "stream-gone" | "session-lost";
160
+ predecessorLost?: true;
161
+ } | {
162
+ fate: "lost";
163
+ cause: "unmount" | "stream-gone" | "session-lost";
164
+ };
165
+ /** Held commands a proven record gap settled `{fate: "lost", cause: "session-lost"}`; return "requeue" to re-enqueue them on the reset clocks. */
166
+ type OnSessionLost = (pending: ReadonlyArray<{
167
+ method: string;
168
+ params: readonly unknown[];
169
+ ts: number;
170
+ seq: number;
171
+ clientId?: string;
172
+ }>) => "requeue" | "drop";
173
+ /** A non-accepted send retained for the user: the wire statement, its failure, and its original clocks. */
174
+ type FailedCommand = {
175
+ readonly protocol: string;
176
+ readonly produced?: SessionCommand["produced"];
177
+ readonly command: string;
178
+ readonly params: readonly unknown[];
179
+ readonly meta?: unknown;
180
+ readonly failure: SendFailure;
181
+ readonly ts: number;
182
+ readonly seq: number;
183
+ };
184
+ /** A command as persisted while un-durable: its lane seq plus the wire statement. */
185
+ type SessionCommand = {
186
+ seq: number;
187
+ produced?: {
188
+ wire: StatewireProtocol.Range;
189
+ protocols: readonly StatewireProtocol.Offer[] | "*";
190
+ };
191
+ method: string;
192
+ params: unknown[];
193
+ meta?: unknown;
194
+ };
195
+ /** A durable lane: its cmd clock and the commands the server has not marked durable. */
196
+ type SessionLane = {
197
+ nextSeq: number;
198
+ commands: readonly SessionCommand[];
199
+ /** Terminal verdicts parked for the sharer that minted the seq (shared storage only). */
200
+ verdicts?: readonly SessionVerdict[];
201
+ /** Non-accepted sends retained for the user; survive record rebases and resets. */
202
+ failed?: readonly FailedCommand[];
203
+ };
204
+ /** The persisted session: the client identity plus one lane per durable protocol. */
205
+ type SessionRecord = {
206
+ clientId: string;
207
+ lanes: Readonly<Record<string, SessionLane>>;
208
+ };
209
+ /** A terminal verdict one sharer's connection carried, parked for the sharer awaiting the seq. */
210
+ type SessionVerdict = {
211
+ seq: number;
212
+ type: (typeof TERMINAL)[number];
213
+ code?: string;
214
+ message?: string;
215
+ payload?: unknown;
216
+ meta?: unknown;
217
+ };
218
+ /** Session storage seam with optional asynchronous hydration and persistence. */
219
+ type SessionStorage = {
220
+ /** Resolves when a synchronous load can return the hydrated record. */
221
+ ready?: Promise<void>;
222
+ /** Resolves after all queued saves are persisted; awaited before sending statements. */
223
+ flush?: () => void | Promise<void>;
224
+ load: () => SessionRecord | null;
225
+ save: (record: SessionRecord) => void;
226
+ /** Upgrade incompatible stored commands; null discards the old record and starts a new client identity. */
227
+ migrate?: (record: SessionRecord, current: NonNullable<SessionCommand["produced"]>) => SessionRecord | null;
228
+ /** Serializes record mutations across sharers; presence marks the storage shared. */
229
+ lock?: <T>(fn: () => T | Promise<T>) => Promise<T>;
230
+ /** Notifies of record saves by other sharers; returns unsubscribe. Required alongside `lock`. */
231
+ subscribe?: (listener: () => void) => () => void;
232
+ };
233
+ /** Static headers, or a resolver invoked per request/attach; `staleAuth` is true right after an auth rejection. */
234
+ type ConnectionError = Error & {
235
+ fin?: StatewireHost.Fin;
236
+ };
237
+ type HeadersOption = HeadersInit | ((ctx: {
238
+ staleAuth: boolean;
239
+ }) => HeadersInit | Promise<HeadersInit>);
240
+ type HttpOptions = StatewireProtocol.Options & {
241
+ sessionStore?: SessionStorage | undefined;
242
+ url: string;
243
+ /** The session does not exist on the server yet: the first attach waits for the first command send (or an explicit `reconnect()`). */
244
+ isNew?: boolean;
245
+ headers?: HeadersOption;
246
+ fetch?: typeof globalThis.fetch;
247
+ onSessionLost?: OnSessionLost;
248
+ onChange?: (connection: Connection) => void;
249
+ onError?: (error: ConnectionError) => void;
250
+ /** The broadcast idle flag's rising edge: the instance went quiet. */
251
+ onDone?: () => void;
252
+ };
253
+ type WebsocketOptions = StatewireProtocol.Options & {
254
+ sessionStore?: SessionStorage | undefined;
255
+ url: string;
256
+ /** The session does not exist on the server yet: the first attach waits for the first command send (or an explicit `reconnect()`). */
257
+ isNew?: boolean;
258
+ headers?: HeadersOption;
259
+ protocols?: string | string[];
260
+ query?: Record<string, string> | (() => Record<string, string> | Promise<Record<string, string>>);
261
+ webSocket?: new (url: string, protocols?: string | string[]) => WebSocket;
262
+ onSessionLost?: OnSessionLost;
263
+ onChange?: (connection: Connection) => void;
264
+ onError?: (error: ConnectionError) => void;
265
+ /** The broadcast idle flag's rising edge: the instance went quiet. */
266
+ onDone?: () => void;
191
267
  };
192
- method: string;
193
- params: unknown[];
194
- meta?: unknown;
195
- };
196
- /** A durable lane: its cmd clock and the commands the server has not marked durable. */
197
- type SessionLane = {
198
- nextSeq: number;
199
- commands: readonly SessionCommand[];
200
- /** Terminal verdicts parked for the sharer that minted the seq (shared storage only). */
201
- verdicts?: readonly SessionVerdict[];
202
- /** Non-accepted sends retained for the user; survive record rebases and resets. */
203
- failed?: readonly FailedCommand[];
204
- };
205
- /** The persisted session: the client identity plus one lane per durable protocol. */
206
- type SessionRecord = {
207
- clientId: string;
208
- lanes: Readonly<Record<string, SessionLane>>;
209
- };
210
- /** A terminal verdict one sharer's connection carried, parked for the sharer awaiting the seq. */
211
- type SessionVerdict = {
212
- seq: number;
213
- type: (typeof TERMINAL)[number];
214
- code?: string;
215
- message?: string;
216
- payload?: unknown;
217
- meta?: unknown;
218
- };
219
- /** Session storage seam with optional asynchronous hydration and persistence. */
220
- type SessionStorage = {
221
- /** Resolves when a synchronous load can return the hydrated record. */
222
- ready?: Promise<void>;
223
- /** Resolves after all queued saves are persisted; awaited before sending statements. */
224
- flush?: () => void | Promise<void>;
225
- load: () => SessionRecord | null;
226
- save: (record: SessionRecord) => void;
227
- /** Upgrade incompatible stored commands; null discards the old record and starts a new client identity. */
228
- migrate?: (record: SessionRecord, current: NonNullable<SessionCommand["produced"]>) => SessionRecord | null;
229
- /** Serializes record mutations across sharers; presence marks the storage shared. */
230
- lock?: <T>(fn: () => T | Promise<T>) => Promise<T>;
231
- /** Notifies of record saves by other sharers; returns unsubscribe. Required alongside `lock`. */
232
- subscribe?: (listener: () => void) => () => void;
233
- };
234
- /** Static headers, or a resolver invoked per request/attach; `staleAuth` is true right after an auth rejection. */
235
- type ConnectionError = Error & {
236
- fin?: StatewireHost.Fin;
237
- };
238
- type HeadersOption = HeadersInit | ((ctx: {
239
- staleAuth: boolean;
240
- }) => HeadersInit | Promise<HeadersInit>);
241
- type HttpOptions = StatewireProtocol.Options & {
242
- sessionStore?: SessionStorage | undefined;
243
- url: string;
244
- /** The session does not exist on the server yet: the first attach waits for the first command send (or an explicit `reconnect()`). */
245
- isNew?: boolean;
246
- headers?: HeadersOption;
247
- fetch?: typeof globalThis.fetch;
248
- onSessionLost?: OnSessionLost;
249
- onChange?: (connection: Connection) => void;
250
- onError?: (error: ConnectionError) => void;
251
- /** The broadcast idle flag's rising edge: the instance went quiet. */
252
- onDone?: () => void;
253
- };
254
- type WebsocketOptions = StatewireProtocol.Options & {
255
- sessionStore?: SessionStorage | undefined;
256
- url: string;
257
- /** The session does not exist on the server yet: the first attach waits for the first command send (or an explicit `reconnect()`). */
258
- isNew?: boolean;
259
- headers?: HeadersOption;
260
- protocols?: string | string[];
261
- query?: Record<string, string> | (() => Record<string, string> | Promise<Record<string, string>>);
262
- webSocket?: new (url: string, protocols?: string | string[]) => WebSocket;
263
- onSessionLost?: OnSessionLost;
264
- onChange?: (connection: Connection) => void;
265
- onError?: (error: ConnectionError) => void;
266
- /** The broadcast idle flag's rising edge: the instance went quiet. */
267
- onDone?: () => void;
268
- };
269
268
  }
270
- //#endregion
271
- export { StatewireClient, StatewireResource, useStatewire };
272
269
  //# sourceMappingURL=statewire.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"statewire.d.ts","names":[],"sources":["../src/statewire.ts"],"mappings":"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"}
1
+ {"version":3,"file":"statewire.d.ts","sourceRoot":"","sources":["../src/statewire.ts"],"names":[],"mappings":"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"}
package/dist/statewire.js CHANGED
@@ -2,7 +2,7 @@ import { CONNECTED_CONNECTION, useStatewireCore } from "./client/core.js";
2
2
  import { DocumentStorageContext, LinkContext, ProtocolContext, SessionStorageContext } from "./client/sessionStore.js";
3
3
  import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "@assistant-ui/tap/react-shim";
4
4
  import { createTapRoot, flushTapSync, resource, useContextProvider, useResource, useResources, withKey } from "@assistant-ui/tap";
5
- //#region src/statewire.ts
5
+ // src/statewire.ts
6
6
  const useSessionTransport = ({ transport, session, documents, protocol, link }) => useContextProvider(SessionStorageContext, session, () => useContextProvider(DocumentStorageContext, documents, () => useContextProvider(ProtocolContext, protocol, () => useContextProvider(LinkContext, link, () => useResource(transport)))));
7
7
  const SessionTransport = resource(useSessionTransport);
8
8
  const useStatewire = (options) => {
@@ -131,7 +131,6 @@ var StatewireClient = class {
131
131
  this.root.unmount();
132
132
  }
133
133
  };
134
- //#endregion
135
134
  export { StatewireClient, StatewireResource, useStatewire };
136
135
 
137
136
  //# sourceMappingURL=statewire.js.map