@hydranium/data-server 1.0.0-next.8 → 1.0.0-next.85

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 CHANGED
@@ -22,7 +22,11 @@ Installed by the server process that already composes
22
22
  - **Push notifications instead of polling:** `onDocumentUpdated` when a
23
23
  subscribed document reaches the configured build phase
24
24
  (`DataServerOptions.subscriptionPhase`, `DocumentState.Validated` by default),
25
- `onDocumentSaved` on a separate channel, and `onProjectsChanged` from the
25
+ `onDocumentSaved` on a separate channel, `onDocumentDeleted` on a third (a
26
+ deleted document has no built state to carry, and the build-phase path never
27
+ runs for one), `onDocumentsBuilt` once per build for the documents nobody
28
+ watches — chiefly those rebuilt as a cascade, which no filesystem watcher can
29
+ see because their own files did not change — and `onProjectsChanged` from the
26
30
  project registry.
27
31
  - **Projects as first-class:** `getProjects` and `getProjectForUri`, answered from
28
32
  the framework's `ProjectManager`.
@@ -6,10 +6,25 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
- import { DisposableCollection, ReferenceSource, type CloseModelArgs, type Disposable, type ElementSource, type FindNextNameArgs, type LatencyCollector, type LatencyReport, type OpenModelArgs, type Project, type ReferenceCandidate, type ReferenceContext, type ReferenceRequest, type ReferenceTarget, type Tracer, type TransferDiagnostic, type TransferDocument, type TransferElement } from '@hydranium/protocol';
9
+ import { DisposableCollection, ReferenceSource, type CloseModelArgs, type HydraniumResponseError, type Disposable, type ElementSource, type FindNextNameArgs, type LatencyCollector, type LatencyReport, type OpenModelArgs, type Project, type ReferenceCandidate, type ReferenceContext, type ReferenceRequest, type ReferenceTarget, type Tracer, type TransferDiagnostic, TransferDocument, type TransferElement } from '@hydranium/protocol';
10
10
  import { type DataClientProtocol, type DataServerDiagnosticsProtocol, type DataServerProtocol, type DumpServerStateArgs, type StartProfilingArgs, type StopProfilingArgs, type WriteServerHeapSnapshotArgs, type GetModelDocumentArgs, type GetProjectForUriArgs, type TransferSaveDocumentArgs, type WatchModelDocumentArgs, type TransferDocumentUpdatedEvent, type TransferUpdateDocumentArgs } from '@hydranium/protocol/data';
11
+ /**
12
+ * Raised when a profiling command arrives with no capture running.
13
+ *
14
+ * A `ResponseError` rather than a plain `Error` so the identity survives to the
15
+ * response boundary, which is where the message is rendered. An unwrapped throw
16
+ * reaches the client as a generic internal error instead: no code for a caller
17
+ * to switch on, and nothing for the boundary to render from.
18
+ */
19
+ export declare const NO_ACTIVE_PROFILE: import("@hydranium/protocol").MessageDefinition<"No profiling capture is active; call startProfiling first.">;
20
+ /**
21
+ * The JSON-RPC code, unrelated to the catalogue code above: this one is numeric,
22
+ * survives reconstruction and is what a caller switches on.
23
+ */
24
+ export declare const NO_ACTIVE_PROFILE_CODE = 1002;
25
+ export declare const noActiveProfileError: () => HydraniumResponseError;
11
26
  import type { DataServerDiagnosticsProvider, DataServerProfileCapture } from './diagnostics-provider.js';
12
- import type { ClientTextDocumentChangeEvent, HydraniumLanguageServices, LogNameOptions, ModelService, ProjectChangeEvent, ServerSharedServices, TransferEncoder } from '@hydranium/core';
27
+ import type { ClientTextDocumentChangeEvent, HydraniumLanguageServices, LogNameOptions, AstDiagnostic, ModelService, ProjectChangeEvent, ServerSharedServices, TransferEncoder } from '@hydranium/core';
13
28
  import type { TextDocument } from 'vscode-languageserver-textdocument';
14
29
  import { type AstNode, DocumentState, type LangiumDocument, type URI } from '@hydranium/langium';
15
30
  import type { CancellationToken, MessageConnection } from 'vscode-jsonrpc';
@@ -136,9 +151,9 @@ export interface DataServerOptions extends LogNameOptions {
136
151
  * When supplied, every inbound data-server RPC is timed into this collector
137
152
  * (via the `createRpcProxy` binding) and exposed through
138
153
  * {@link DataServerDiagnosticsProtocol.getLatency}. A head that also runs an
139
- * LSP connection can pass the SAME collector to
140
- * `instrumentLspConnection(connection, latency)` so one report covers both
141
- * heads. Absent by default (no timing overhead).
154
+ * LSP connection can pass the SAME collector through `lspLatencyOptions` to
155
+ * that connection, so one report covers both heads. Absent by default (no
156
+ * timing overhead).
142
157
  */
143
158
  readonly latency?: LatencyCollector;
144
159
  }
@@ -177,9 +192,11 @@ interface ResolvedDataServerOptions {
177
192
  * any names supplied via {@link DataServerOptions.additionalMethods}) and
178
193
  * builds the {@link DataClientProtocol} notification proxy on the same
179
194
  * connection in one {@link createRpcProxy} call (binding `this` as its
180
- * `localTarget`) under the configured namespace, and subscribes one
181
- * `DocumentBuilder.onDocumentPhase` listener per configured phase that
182
- * dispatches subscription events via `clientProxy.onDocumentUpdated`.
195
+ * `localTarget`) under the configured namespace, and subscribes two listeners
196
+ * at the configured phase: a `DocumentBuilder.onDocumentPhase` one dispatching
197
+ * per-document `clientProxy.onDocumentUpdated` for watched URIs, and a
198
+ * `DocumentBuilder.onBuildPhase` one dispatching a single
199
+ * `clientProxy.onDocumentsBuilt` naming the batch's unwatched documents.
183
200
  *
184
201
  * The data-server requires the full {@link ServerSharedServices}
185
202
  * shape — `HydraniumTextDocuments` for client-attributed updates,
@@ -225,10 +242,12 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
225
242
  /**
226
243
  * Snapshot of the most recent `DocumentBuilder.onUpdate` event. Drives
227
244
  * `reason` discrimination on outbound `onDocumentUpdated` notifications:
228
- * a URI in the `changed` list emits `'changed'`, in `deleted` emits
229
- * `'deleted'`, otherwise `'rebuilt'` (cascade rebuild from a dependent
230
- * URI's change). The same mechanism `AstDocumentManager.onUpdate` uses on
231
- * the LSP side, so reason fidelity stays consistent between heads.
245
+ * a URI in the `changed` list emits `'changed'`, otherwise `'rebuilt'`
246
+ * (cascade rebuild from a dependent URI's change). The same mechanism
247
+ * `AstDocumentManager.onUpdate` uses on the LSP side, so reason fidelity
248
+ * stays consistent between heads. The `deleted` half is read by
249
+ * {@link dispatchDeleteEvents} rather than by the reason discrimination,
250
+ * a deletion travelling on its own channel.
232
251
  */
233
252
  protected lastBuildUpdate?: {
234
253
  changed: readonly URI[];
@@ -292,7 +311,7 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
292
311
  /** Per-method RPC latency collector, when the head opted in via {@link DataServerOptions.latency}. */
293
312
  protected readonly latency?: LatencyCollector;
294
313
  /** Encoder pulled from DI. Adopters rebind `services.model.TransferEncoder` to a typed-overlay subclass. */
295
- protected readonly encoder: TransferEncoder<unknown, TDiagnostic>;
314
+ protected readonly encoder: TransferEncoder<TDiagnostic>;
296
315
  /**
297
316
  * In-process workspace facade — the lifecycle delegate `get` / `update` / `save` go through.
298
317
  * The facade's AstDocument diagnostic shape is intentionally typed `unknown` here: adopters
@@ -301,7 +320,7 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
301
320
  * `astDocumentToTransferDocument` accepts both shapes (wire-shape or LSP-shape) and projects
302
321
  * to wire shape on the return — see `TransferEncoder.astDocumentToTransferDocument`.
303
322
  */
304
- protected readonly modelService: ModelService<AstNode, unknown, TTransfer>;
323
+ protected readonly modelService: ModelService<AstNode, AstDiagnostic, TTransfer>;
305
324
  constructor(connection: MessageConnection, services: ServerSharedServices<TProject>, options?: DataServerOptions);
306
325
  /**
307
326
  * Release everything the constructor wired up — the bound protocol
@@ -489,6 +508,42 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
489
508
  * regardless of subscriber count.
490
509
  */
491
510
  protected subscribeToDocumentBuilder(): void;
511
+ /**
512
+ * Report the documents that reached {@link DataServerOptions.subscriptionPhase}
513
+ * and that NOBODY on this
514
+ * connection is watching — the ones a client was not told about through
515
+ * {@link dispatchPhaseEvent}, which is gated per URI.
516
+ *
517
+ * **The gap this closes is the one no other source can observe.** A document
518
+ * the client watches, it hears about already. A file changed on disk, the
519
+ * host's own filesystem watcher reports — and on a browser host, where the
520
+ * workspace lives behind this head, an external change cannot happen at all.
521
+ * What is left, and what nothing outside the server can see, is a document
522
+ * rebuilt because something it DEPENDS ON changed: its file never changed, so
523
+ * a filesystem watcher is silent by construction, and it has no subscriber, so
524
+ * the update channel is silent by design. A consumer displaying data derived
525
+ * from that document — a tree label, a decorator — otherwise goes stale with
526
+ * no signal from any source, and repairs itself the moment someone opens the
527
+ * file to investigate, which is what makes it expensive to diagnose later.
528
+ *
529
+ * Payload-free on purpose: URIs only, so a client re-reads what it displays
530
+ * rather than being handed transfer documents it did not ask for. That is the
531
+ * property the subscription map protects, and it is preserved here by
532
+ * carrying no document rather than by gating the message.
533
+ *
534
+ * Quiet in the common case. Editing a document that an editor has open leaves
535
+ * that URI watched and therefore out of this set, so a build with no
536
+ * dependents produces nothing at all, and workspace initialisation produces
537
+ * nothing because it does not build to this phase. The ceiling is a
538
+ * whole-workspace rebuild at the subscription phase: one message, URIs only.
539
+ *
540
+ * The URI is canonicalised for the same reason the subscription map is keyed
541
+ * that way, and is untested for the same reason as its twin in
542
+ * {@link dispatchDeleteEvents}: the builder reports URIs out of its own
543
+ * store, so a non-canonical one cannot be produced without a fixture
544
+ * asserting a shape the real system never emits.
545
+ */
546
+ protected dispatchBuiltEvent(built: readonly LangiumDocument[]): void;
492
547
  /**
493
548
  * Subscribe to the universal save event on `HydraniumTextDocuments` so a
494
549
  * single `onDocumentSaved` wire notification fires for ANY save of a
@@ -511,6 +566,48 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
511
566
  * hold, so a `false` answer means this close was the last one.
512
567
  */
513
568
  protected subscribeToTextDocumentCloses(): void;
569
+ /**
570
+ * Fan out a deletion for each removed URI, to EVERY client on the connection
571
+ * rather than only to the ones watching that URI.
572
+ *
573
+ * **Deliberately ungated, where {@link dispatchPhaseEvent} and
574
+ * {@link dispatchSaveEvent} are gated.** Those two carry a built document and
575
+ * fire on every build, so the subscription map is what keeps bandwidth
576
+ * proportional to what a client asked for. A deletion is neither: it is one
577
+ * URI, it is rare, and it reports the workspace's STRUCTURE rather than a
578
+ * document's content. Gating it forces any consumer that displays the
579
+ * workspace — a model tree, a file decorator — to learn about disappearances
580
+ * from a filesystem watcher instead, which a client hosted in a browser has
581
+ * no way to run: its workspace lives behind the head. A client that does not
582
+ * care filters on the URI, which costs it a comparison.
583
+ *
584
+ * The precedent is the last-close revert broadcast (see
585
+ * {@link pendingRevertBroadcasts}), where the same judgement was already made
586
+ * in the other direction: a transition that matters enough is delivered
587
+ * without a subscription.
588
+ *
589
+ * Runs from the `DocumentBuilder.onUpdate` listener rather than from a phase
590
+ * listener, which is the only place a deletion is observable: `update`
591
+ * removes the document before deriving the rebuild set, so it is never built.
592
+ * That ordering also puts this notification ahead of the `'rebuilt'` events
593
+ * for the dependents whose references the deletion just broke.
594
+ *
595
+ * The `deleted` list arrives already expanded to concrete document URIs —
596
+ * `deleteDocuments` resolves a directory URI to the documents beneath it — so
597
+ * no caller has to handle a directory here.
598
+ *
599
+ * Per-URI derived state is dropped for the same reason it is dropped
600
+ * anywhere: it describes a document that no longer exists.
601
+ * {@link lastEmittedFingerprint} in particular can outlive its subscriptions
602
+ * through the last-close revert path — left behind, it is adopted as the
603
+ * baseline by the next {@link watchModelDocument} and suppresses the first
604
+ * emit after the file returns with its previous content.
605
+ *
606
+ * The subscription itself SURVIVES: a recreated file resumes delivering to
607
+ * the same watchers with no re-subscription, and a client that answers the
608
+ * deletion by closing releases the watch through `closeModelDocument` anyway.
609
+ */
610
+ protected dispatchDeleteEvents(deleted: readonly URI[]): void;
514
611
  /** Fan out a save event for the document's URI, gated by the subscription map. */
515
612
  protected dispatchSaveEvent(event: ClientTextDocumentChangeEvent<TextDocument>): void;
516
613
  /**
@@ -556,16 +653,16 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
556
653
  /**
557
654
  * Discriminate the reason for a phase-event-driven update notification.
558
655
  * Uses the most recent `DocumentBuilder.onUpdate` snapshot:
559
- * - URI in the `deleted` list → `'deleted'`
560
656
  * - URI in the `changed` list → `'changed'` (the URI was passed to
561
657
  * `documentBuilder.update(changed, deleted)`, which spans `didChange`
562
658
  * text-document events and programmatic `update([uri], [])` calls).
563
659
  * - Otherwise → `'rebuilt'` (cascade re-derivation: this URI was rebuilt
564
660
  * because something it depends on changed; its own text wasn't flagged).
565
661
  *
566
- * `'saved'` is NOT emitted from this code path — saves take the dedicated
567
- * `DataClientProtocol.onDocumentSaved` channel; adopters that want a
568
- * unified update stream synthesise `'saved'` in their bridge layer.
662
+ * `'saved'` is NOT emitted here — saves take the dedicated
663
+ * `DataClientProtocol.onDocumentSaved` channel, and adopters wanting a
664
+ * unified stream synthesise it in their bridge layer. A deletion is not a
665
+ * reason at all; see {@link dispatchDeleteEvents}.
569
666
  */
570
667
  protected resolveUpdateReason(uri: URI): TransferDocumentUpdatedEvent<TTransfer, TDiagnostic>['reason'];
571
668
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"data-server.d.ts","sourceRoot":"","sources":["../src/data-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-server.d.ts","sourceRoot":"","sources":["../src/data-server.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,25 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
- import { createRpcProxy, DisposableCollection, isDocumentSource, isElementSource, isSyntheticSource, ReferenceSource } from '@hydranium/protocol';
9
+ import { createRpcProxy, defineMessage, DisposableCollection, isDocumentSource, isElementSource, isSyntheticSource, messageError, ReferenceSource, TransferDocument, asSnapshotVersion } from '@hydranium/protocol';
10
10
  import { DATA_SERVER_DIAGNOSTICS_METHODS, DATA_SERVER_PROTOCOL_METHODS, DATA_SERVER_WIRE_PREFIX } from '@hydranium/protocol/data';
11
11
  import { REVERT_ON_CLOSE_CLIENT_ID, UNKNOWN_CLIENT_ID } from '@hydranium/core';
12
12
  import { defaultDataServerDiagnostics } from './default-diagnostics.js';
13
+ /**
14
+ * Raised when a profiling command arrives with no capture running.
15
+ *
16
+ * A `ResponseError` rather than a plain `Error` so the identity survives to the
17
+ * response boundary, which is where the message is rendered. An unwrapped throw
18
+ * reaches the client as a generic internal error instead: no code for a caller
19
+ * to switch on, and nothing for the boundary to render from.
20
+ */
21
+ export const NO_ACTIVE_PROFILE = defineMessage('hydranium/data-server/no-active-profile', 'No profiling capture is active; call startProfiling first.');
22
+ /**
23
+ * The JSON-RPC code, unrelated to the catalogue code above: this one is numeric,
24
+ * survives reconstruction and is what a caller switches on.
25
+ */
26
+ export const NO_ACTIVE_PROFILE_CODE = 1002;
27
+ export const noActiveProfileError = () => messageError(NO_ACTIVE_PROFILE_CODE, NO_ACTIVE_PROFILE);
13
28
  import { DocumentState, UriUtils } from '@hydranium/langium';
14
29
  /**
15
30
  * Domain separator between text and diagnostics inputs of
@@ -94,9 +109,11 @@ const FINGERPRINT_LOG_AFTER_MS = 5;
94
109
  * any names supplied via {@link DataServerOptions.additionalMethods}) and
95
110
  * builds the {@link DataClientProtocol} notification proxy on the same
96
111
  * connection in one {@link createRpcProxy} call (binding `this` as its
97
- * `localTarget`) under the configured namespace, and subscribes one
98
- * `DocumentBuilder.onDocumentPhase` listener per configured phase that
99
- * dispatches subscription events via `clientProxy.onDocumentUpdated`.
112
+ * `localTarget`) under the configured namespace, and subscribes two listeners
113
+ * at the configured phase: a `DocumentBuilder.onDocumentPhase` one dispatching
114
+ * per-document `clientProxy.onDocumentUpdated` for watched URIs, and a
115
+ * `DocumentBuilder.onBuildPhase` one dispatching a single
116
+ * `clientProxy.onDocumentsBuilt` naming the batch's unwatched documents.
100
117
  *
101
118
  * The data-server requires the full {@link ServerSharedServices}
102
119
  * shape — `HydraniumTextDocuments` for client-attributed updates,
@@ -144,10 +161,12 @@ export class DataServer {
144
161
  /**
145
162
  * Snapshot of the most recent `DocumentBuilder.onUpdate` event. Drives
146
163
  * `reason` discrimination on outbound `onDocumentUpdated` notifications:
147
- * a URI in the `changed` list emits `'changed'`, in `deleted` emits
148
- * `'deleted'`, otherwise `'rebuilt'` (cascade rebuild from a dependent
149
- * URI's change). The same mechanism `AstDocumentManager.onUpdate` uses on
150
- * the LSP side, so reason fidelity stays consistent between heads.
164
+ * a URI in the `changed` list emits `'changed'`, otherwise `'rebuilt'`
165
+ * (cascade rebuild from a dependent URI's change). The same mechanism
166
+ * `AstDocumentManager.onUpdate` uses on the LSP side, so reason fidelity
167
+ * stays consistent between heads. The `deleted` half is read by
168
+ * {@link dispatchDeleteEvents} rather than by the reason discrimination,
169
+ * a deletion travelling on its own channel.
151
170
  */
152
171
  lastBuildUpdate;
153
172
  /**
@@ -248,10 +267,15 @@ export class DataServer {
248
267
  methodNamespace: this.options.methodNamespace,
249
268
  localTarget: this,
250
269
  localMethods: registeredMethods,
251
- latency: this.latency
270
+ latency: this.latency,
271
+ // Bound at the chokepoint rather than per handler, so an adopter's
272
+ // `additionalMethods` are rendered on the same terms as the
273
+ // framework's own rejections.
274
+ renderErrorMessage: error => this.services.MessageRenderer.renderError(error)
252
275
  });
253
276
  this.disposables.push(this.services.workspace.DocumentBuilder.onUpdate((changed, deleted) => {
254
277
  this.lastBuildUpdate = { changed, deleted };
278
+ this.dispatchDeleteEvents(deleted);
255
279
  }));
256
280
  this.subscribeToDocumentBuilder();
257
281
  this.subscribeToTextDocumentSaves();
@@ -325,11 +349,11 @@ export class DataServer {
325
349
  // multi-client synced version whenever the open seeded the synced document
326
350
  // with a caller-supplied version id — and the synced version is what
327
351
  // `ModelService.update`'s optimistic-concurrency gate compares
328
- // `baseVersion` against, so reporting the snapshot's would make the
352
+ // `basedOn` against, so reporting the snapshot's would make the
329
353
  // caller's first tagged write self-conflict. A genuine concurrent edit
330
354
  // still trips the gate and is reconciled by the caller's replay rather
331
355
  // than predicted here.
332
- return { ...document, version: this.services.workspace.TextDocuments.version(args.uri) };
356
+ return { ...document, version: asSnapshotVersion(this.services.workspace.TextDocuments.version(args.uri)) };
333
357
  }
334
358
  async closeModelDocument(args) {
335
359
  // Closing a session also releases its watch for (uri, clientId) — a
@@ -698,12 +722,7 @@ export class DataServer {
698
722
  // decides policy at its own layer; `root` is optional on the envelope
699
723
  // so the compiler forces that decision. Adopters preferring to throw
700
724
  // override `envelope`.
701
- return {
702
- uri: uri.toString(),
703
- version: 0,
704
- root: undefined,
705
- diagnostics: []
706
- };
725
+ return TransferDocument.absent(uri.toString());
707
726
  }
708
727
  return this.encoder.toTransferDocument(document);
709
728
  }
@@ -715,6 +734,54 @@ export class DataServer {
715
734
  */
716
735
  subscribeToDocumentBuilder() {
717
736
  this.disposables.push(this.services.workspace.DocumentBuilder.onDocumentPhase(this.options.subscriptionPhase, (document, cancelToken) => this.dispatchPhaseEvent(document, cancelToken)));
737
+ // The BUILD-phase hook, not the per-document one: this notification is one
738
+ // message per build rather than one per document, and Langium hands the
739
+ // whole batch over here. It also does not fire for a cancelled build,
740
+ // which is what the per-document dispatch has to check by hand.
741
+ this.disposables.push(this.services.workspace.DocumentBuilder.onBuildPhase(this.options.subscriptionPhase, built => this.dispatchBuiltEvent(built)));
742
+ }
743
+ /**
744
+ * Report the documents that reached {@link DataServerOptions.subscriptionPhase}
745
+ * and that NOBODY on this
746
+ * connection is watching — the ones a client was not told about through
747
+ * {@link dispatchPhaseEvent}, which is gated per URI.
748
+ *
749
+ * **The gap this closes is the one no other source can observe.** A document
750
+ * the client watches, it hears about already. A file changed on disk, the
751
+ * host's own filesystem watcher reports — and on a browser host, where the
752
+ * workspace lives behind this head, an external change cannot happen at all.
753
+ * What is left, and what nothing outside the server can see, is a document
754
+ * rebuilt because something it DEPENDS ON changed: its file never changed, so
755
+ * a filesystem watcher is silent by construction, and it has no subscriber, so
756
+ * the update channel is silent by design. A consumer displaying data derived
757
+ * from that document — a tree label, a decorator — otherwise goes stale with
758
+ * no signal from any source, and repairs itself the moment someone opens the
759
+ * file to investigate, which is what makes it expensive to diagnose later.
760
+ *
761
+ * Payload-free on purpose: URIs only, so a client re-reads what it displays
762
+ * rather than being handed transfer documents it did not ask for. That is the
763
+ * property the subscription map protects, and it is preserved here by
764
+ * carrying no document rather than by gating the message.
765
+ *
766
+ * Quiet in the common case. Editing a document that an editor has open leaves
767
+ * that URI watched and therefore out of this set, so a build with no
768
+ * dependents produces nothing at all, and workspace initialisation produces
769
+ * nothing because it does not build to this phase. The ceiling is a
770
+ * whole-workspace rebuild at the subscription phase: one message, URIs only.
771
+ *
772
+ * The URI is canonicalised for the same reason the subscription map is keyed
773
+ * that way, and is untested for the same reason as its twin in
774
+ * {@link dispatchDeleteEvents}: the builder reports URIs out of its own
775
+ * store, so a non-canonical one cannot be produced without a fixture
776
+ * asserting a shape the real system never emits.
777
+ */
778
+ dispatchBuiltEvent(built) {
779
+ const uris = built.map(document => this.canonicalKey(document.uri.toString())).filter(uri => !this.subscriptions.has(uri));
780
+ if (uris.length === 0) {
781
+ return;
782
+ }
783
+ this.tracer.debug(`Emit onDocumentsBuilt: ${uris.length} unwatched document(s)`);
784
+ this.clientProxy.onDocumentsBuilt({ uris });
718
785
  }
719
786
  /**
720
787
  * Subscribe to the universal save event on `HydraniumTextDocuments` so a
@@ -747,6 +814,55 @@ export class DataServer {
747
814
  }
748
815
  }));
749
816
  }
817
+ /**
818
+ * Fan out a deletion for each removed URI, to EVERY client on the connection
819
+ * rather than only to the ones watching that URI.
820
+ *
821
+ * **Deliberately ungated, where {@link dispatchPhaseEvent} and
822
+ * {@link dispatchSaveEvent} are gated.** Those two carry a built document and
823
+ * fire on every build, so the subscription map is what keeps bandwidth
824
+ * proportional to what a client asked for. A deletion is neither: it is one
825
+ * URI, it is rare, and it reports the workspace's STRUCTURE rather than a
826
+ * document's content. Gating it forces any consumer that displays the
827
+ * workspace — a model tree, a file decorator — to learn about disappearances
828
+ * from a filesystem watcher instead, which a client hosted in a browser has
829
+ * no way to run: its workspace lives behind the head. A client that does not
830
+ * care filters on the URI, which costs it a comparison.
831
+ *
832
+ * The precedent is the last-close revert broadcast (see
833
+ * {@link pendingRevertBroadcasts}), where the same judgement was already made
834
+ * in the other direction: a transition that matters enough is delivered
835
+ * without a subscription.
836
+ *
837
+ * Runs from the `DocumentBuilder.onUpdate` listener rather than from a phase
838
+ * listener, which is the only place a deletion is observable: `update`
839
+ * removes the document before deriving the rebuild set, so it is never built.
840
+ * That ordering also puts this notification ahead of the `'rebuilt'` events
841
+ * for the dependents whose references the deletion just broke.
842
+ *
843
+ * The `deleted` list arrives already expanded to concrete document URIs —
844
+ * `deleteDocuments` resolves a directory URI to the documents beneath it — so
845
+ * no caller has to handle a directory here.
846
+ *
847
+ * Per-URI derived state is dropped for the same reason it is dropped
848
+ * anywhere: it describes a document that no longer exists.
849
+ * {@link lastEmittedFingerprint} in particular can outlive its subscriptions
850
+ * through the last-close revert path — left behind, it is adopted as the
851
+ * baseline by the next {@link watchModelDocument} and suppresses the first
852
+ * emit after the file returns with its previous content.
853
+ *
854
+ * The subscription itself SURVIVES: a recreated file resumes delivering to
855
+ * the same watchers with no re-subscription, and a client that answers the
856
+ * deletion by closing releases the watch through `closeModelDocument` anyway.
857
+ */
858
+ dispatchDeleteEvents(deleted) {
859
+ for (const removed of deleted) {
860
+ const uri = this.canonicalKey(removed.toString());
861
+ this.lastEmittedFingerprint.delete(uri);
862
+ this.pendingRevertBroadcasts.delete(uri);
863
+ this.clientProxy.onDocumentDeleted({ uri });
864
+ }
865
+ }
750
866
  /** Fan out a save event for the document's URI, gated by the subscription map. */
751
867
  dispatchSaveEvent(event) {
752
868
  // The save event arrives under the CLIENT URI the text store keys by (e.g. a
@@ -855,26 +971,19 @@ export class DataServer {
855
971
  /**
856
972
  * Discriminate the reason for a phase-event-driven update notification.
857
973
  * Uses the most recent `DocumentBuilder.onUpdate` snapshot:
858
- * - URI in the `deleted` list → `'deleted'`
859
974
  * - URI in the `changed` list → `'changed'` (the URI was passed to
860
975
  * `documentBuilder.update(changed, deleted)`, which spans `didChange`
861
976
  * text-document events and programmatic `update([uri], [])` calls).
862
977
  * - Otherwise → `'rebuilt'` (cascade re-derivation: this URI was rebuilt
863
978
  * because something it depends on changed; its own text wasn't flagged).
864
979
  *
865
- * `'saved'` is NOT emitted from this code path — saves take the dedicated
866
- * `DataClientProtocol.onDocumentSaved` channel; adopters that want a
867
- * unified update stream synthesise `'saved'` in their bridge layer.
980
+ * `'saved'` is NOT emitted here — saves take the dedicated
981
+ * `DataClientProtocol.onDocumentSaved` channel, and adopters wanting a
982
+ * unified stream synthesise it in their bridge layer. A deletion is not a
983
+ * reason at all; see {@link dispatchDeleteEvents}.
868
984
  */
869
985
  resolveUpdateReason(uri) {
870
- const last = this.lastBuildUpdate;
871
- if (last?.deleted.some(deleted => UriUtils.equals(deleted, uri))) {
872
- return 'deleted';
873
- }
874
- if (last?.changed.some(changed => UriUtils.equals(changed, uri))) {
875
- return 'changed';
876
- }
877
- return 'rebuilt';
986
+ return this.lastBuildUpdate?.changed.some(changed => UriUtils.equals(changed, uri)) ? 'changed' : 'rebuilt';
878
987
  }
879
988
  /**
880
989
  * Subscribe to the project tier's change channel and re-fan registry
@@ -967,7 +1076,7 @@ export class DataServer {
967
1076
  }
968
1077
  async stopProfiling(args) {
969
1078
  if (!this.activeProfile) {
970
- throw new Error('No profiling capture is active; call startProfiling first.');
1079
+ throw noActiveProfileError();
971
1080
  }
972
1081
  const capture = this.activeProfile;
973
1082
  this.activeProfile = undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"data-server.js","sourceRoot":"","sources":["../src/data-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-server.js","sourceRoot":"","sources":["../src/data-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 CrossBreeze, EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the MIT License which is available in the project root.
6
+ *
7
+ * SPDX-License-Identifier: MIT
8
+ ********************************************************************************/
9
+ /**
10
+ * Every user-facing message `@hydranium/data-server` raises.
11
+ *
12
+ * Declarations stay beside their call sites and are re-exported here, so this is
13
+ * enumeration rather than centralization: a code's package segment has to name
14
+ * the package that raises it. The English is a fallback, not a contract; the
15
+ * code is the contract, and renaming one is a breaking change.
16
+ */
17
+ export { NO_ACTIVE_PROFILE, NO_ACTIVE_PROFILE_CODE, noActiveProfileError } from '../data-server.js';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messages/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;GAOG;AAEH,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 CrossBreeze, EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the MIT License which is available in the project root.
6
+ *
7
+ * SPDX-License-Identifier: MIT
8
+ ********************************************************************************/
9
+ /**
10
+ * Every user-facing message `@hydranium/data-server` raises.
11
+ *
12
+ * Declarations stay beside their call sites and are re-exported here, so this is
13
+ * enumeration rather than centralization: a code's package segment has to name
14
+ * the package that raises it. The English is a fallback, not a contract; the
15
+ * code is the contract, and renaming one is a breaking change.
16
+ */
17
+ export { NO_ACTIVE_PROFILE, NO_ACTIVE_PROFILE_CODE, noActiveProfileError } from '../data-server.js';
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/messages/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;GAOG;AAEH,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -7,7 +7,7 @@
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
9
  import { type Project, type TransferDiagnostic, type TransferElement } from '@hydranium/protocol';
10
- import { type DataClientProtocol, type DataServerProtocol, type ProjectsChangedEvent, type TransferDocumentSavedEvent, type TransferDocumentUpdatedEvent } from '@hydranium/protocol/data';
10
+ import { type DataClientProtocol, type DataServerProtocol, type ProjectsChangedEvent, type TransferDocumentDeletedEvent, type TransferDocumentSavedEvent, type TransferDocumentsBuiltEvent, type TransferDocumentUpdatedEvent } from '@hydranium/protocol/data';
11
11
  import { type Harness } from '@hydranium/protocol/testing';
12
12
  import { type DuplexConnectionPair } from '@hydranium/protocol/testing/node';
13
13
  import type { MessageConnection } from 'vscode-jsonrpc/node';
@@ -66,6 +66,10 @@ export interface DataServerHarness<TServer, TTransfer extends TransferElement, T
66
66
  readonly events: ReadonlyArray<TransferDocumentUpdatedEvent<TTransfer, TDiagnostic>>;
67
67
  /** Captured `onDocumentSaved` events. */
68
68
  readonly saves: ReadonlyArray<TransferDocumentSavedEvent<TTransfer, TDiagnostic>>;
69
+ /** Captured `onDocumentDeleted` events. */
70
+ readonly deletions: ReadonlyArray<TransferDocumentDeletedEvent>;
71
+ /** Captured `onDocumentsBuilt` events, one per build that had unwatched documents. */
72
+ readonly builds: ReadonlyArray<TransferDocumentsBuiltEvent>;
69
73
  /** Captured `onProjectsChanged` events. */
70
74
  readonly projectsChanges: ReadonlyArray<ProjectsChangedEvent<TProject>>;
71
75
  /** Dispose the underlying duplex pair. Idempotent. */
@@ -1 +1 @@
1
- {"version":3,"file":"data-server-harness.d.ts","sourceRoot":"","sources":["../../src/testing/data-server-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAkB,KAAK,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAClH,OAAO,EAGJ,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACnC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,OAAO,EAA2B,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAA4B,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACvG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,4BAA4B,CAC1C,OAAO,EACP,SAAS,SAAS,eAAe,EACjC,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,EAC3D,QAAQ,SAAS,OAAO,GAAG,OAAO;IAElC;;;;OAIG;IACH,MAAM,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC;IAChD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvE;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB,CAC/B,OAAO,EACP,SAAS,SAAS,eAAe,EACjC,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,EAC3D,QAAQ,SAAS,OAAO,GAAG,OAAO,CACnC,SAAQ,OAAO;IACd,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACrE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,wFAAwF;IACxF,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,4BAA4B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IACrF,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAClF,2CAA2C;IAC3C,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxE,sDAAsD;IACtD,OAAO,IAAI,IAAI,CAAC;CAClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAClC,OAAO,EACP,SAAS,SAAS,eAAe,EACjC,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,EAC3D,QAAQ,SAAS,OAAO,GAAG,OAAO,EAElC,OAAO,EAAE,4BAA4B,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,GAChF,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAkC9D"}
1
+ {"version":3,"file":"data-server-harness.d.ts","sourceRoot":"","sources":["../../src/testing/data-server-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAkB,KAAK,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAClH,OAAO,EAGJ,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACnC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,OAAO,EAA2B,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAA4B,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACvG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,4BAA4B,CAC1C,OAAO,EACP,SAAS,SAAS,eAAe,EACjC,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,EAC3D,QAAQ,SAAS,OAAO,GAAG,OAAO;IAElC;;;;OAIG;IACH,MAAM,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC;IAChD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvE;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB,CAC/B,OAAO,EACP,SAAS,SAAS,eAAe,EACjC,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,EAC3D,QAAQ,SAAS,OAAO,GAAG,OAAO,CACnC,SAAQ,OAAO;IACd,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACrE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,wFAAwF;IACxF,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,4BAA4B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IACrF,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAClF,2CAA2C;IAC3C,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,4BAA4B,CAAC,CAAC;IAChE,sFAAsF;IACtF,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAC;IAC5D,2CAA2C;IAC3C,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxE,sDAAsD;IACtD,OAAO,IAAI,IAAI,CAAC;CAClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAClC,OAAO,EACP,SAAS,SAAS,eAAe,EACjC,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,EAC3D,QAAQ,SAAS,OAAO,GAAG,OAAO,EAElC,OAAO,EAAE,4BAA4B,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,GAChF,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAsC9D"}
@@ -24,11 +24,11 @@ export function makeDataServerHarness(options) {
24
24
  const pair = makeDuplexConnectionPair();
25
25
  const server = options.server(pair.left);
26
26
  // The capture half is the shared client double, not a local copy: the same
27
- // recording semantics (all three channels, an override replacing rather than
27
+ // recording semantics (every channel, an override replacing rather than
28
28
  // supplementing) then hold for a client-side suite that stands the double up
29
29
  // without a server, so an assertion learnt against one reads the same in the
30
30
  // other.
31
- const { client: localClient, updates: events, saves, projectsChanges } = makeCapturingDataClient(options.client);
31
+ const { client: localClient, updates: events, saves, deletions, builds, projectsChanges } = makeCapturingDataClient(options.client);
32
32
  const proxy = createRpcProxy(pair.right, {
33
33
  methodNamespace: options.methodNamespace ?? DATA_SERVER_WIRE_PREFIX,
34
34
  localTarget: localClient,
@@ -40,6 +40,8 @@ export function makeDataServerHarness(options) {
40
40
  pair,
41
41
  events,
42
42
  saves,
43
+ deletions,
44
+ builds,
43
45
  projectsChanges,
44
46
  dispose: () => pair.dispose()
45
47
  };
@@ -1 +1 @@
1
- {"version":3,"file":"data-server-harness.js","sourceRoot":"","sources":["../../src/testing/data-server-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,cAAc,EAA+D,MAAM,qBAAqB,CAAC;AAClH,OAAO,EACJ,4BAA4B,EAC5B,uBAAuB,EAMzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAgB,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAA6B,MAAM,kCAAkC,CAAC;AA2EvG;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAMlC,OAAgF;IAEhF,MAAM,IAAI,GAAG,wBAAwB,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEzC,2EAA2E;IAC3E,6EAA6E;IAC7E,6EAA6E;IAC7E,6EAA6E;IAC7E,SAAS;IACT,MAAM,EACH,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,EACL,eAAe,EACjB,GAAG,uBAAuB,CAAmC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9E,MAAM,KAAK,GAAG,cAAc,CACzB,IAAI,CAAC,KAAK,EACV;QACG,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,uBAAuB;QACnE,WAAW,EAAE,WAAW;QACxB,YAAY,EAAE,4BAA4B;KAC5C,CACH,CAAC;IAEF,OAAO;QACJ,MAAM;QACN,KAAK;QACL,IAAI;QACJ,MAAM;QACN,KAAK;QACL,eAAe;QACf,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE;KAC/B,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"data-server-harness.js","sourceRoot":"","sources":["../../src/testing/data-server-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,cAAc,EAA+D,MAAM,qBAAqB,CAAC;AAClH,OAAO,EACJ,4BAA4B,EAC5B,uBAAuB,EAQzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAgB,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAA6B,MAAM,kCAAkC,CAAC;AA+EvG;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAMlC,OAAgF;IAEhF,MAAM,IAAI,GAAG,wBAAwB,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEzC,2EAA2E;IAC3E,wEAAwE;IACxE,6EAA6E;IAC7E,6EAA6E;IAC7E,SAAS;IACT,MAAM,EACH,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,EACL,SAAS,EACT,MAAM,EACN,eAAe,EACjB,GAAG,uBAAuB,CAAmC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9E,MAAM,KAAK,GAAG,cAAc,CACzB,IAAI,CAAC,KAAK,EACV;QACG,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,uBAAuB;QACnE,WAAW,EAAE,WAAW;QACxB,YAAY,EAAE,4BAA4B;KAC5C,CACH,CAAC;IAEF,OAAO;QACJ,MAAM;QACN,KAAK;QACL,IAAI;QACJ,MAAM;QACN,KAAK;QACL,SAAS;QACT,MAAM;QACN,eAAe;QACf,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE;KAC/B,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hydranium/data-server",
3
- "version": "1.0.0-next.8",
3
+ "version": "1.0.0-next.85",
4
4
  "description": "Typed-RPC protocol head for the hydranium framework. Peer of @hydranium/core/lsp and @hydranium/glsp-server; built on @hydranium/core.",
5
5
  "keywords": [
6
6
  "hydranium",
@@ -38,6 +38,14 @@
38
38
  "types": "./lib/node/index.d.ts",
39
39
  "default": "./lib/node/index.js"
40
40
  },
41
+ "./messages": {
42
+ "types": "./lib/messages/index.d.ts",
43
+ "default": "./lib/messages/index.js"
44
+ },
45
+ "./lib/messages": {
46
+ "types": "./lib/messages/index.d.ts",
47
+ "default": "./lib/messages/index.js"
48
+ },
41
49
  "./testing": {
42
50
  "types": "./lib/testing/index.d.ts",
43
51
  "default": "./lib/testing/index.js"
@@ -67,19 +75,19 @@
67
75
  "watch": "tsc -b -w --preserveWatchOutput"
68
76
  },
69
77
  "devDependencies": {
70
- "@hydranium/core": "1.0.0-next.8",
71
- "@hydranium/langium": "1.0.0-next.8",
72
- "@hydranium/protocol": "1.0.0-next.8",
78
+ "@hydranium/core": "1.0.0-next.85",
79
+ "@hydranium/langium": "1.0.0-next.85",
80
+ "@hydranium/protocol": "1.0.0-next.85",
73
81
  "rimraf": "^5.0.0",
74
82
  "typescript": "^5.8.0",
75
83
  "vscode-jsonrpc": "9.0.1",
76
84
  "vscode-languageserver-textdocument": "^1.0.12"
77
85
  },
78
86
  "peerDependencies": {
79
- "@hydranium/core": "1.0.0-next.8",
80
- "@hydranium/langium": "1.0.0-next.8",
81
- "@hydranium/protocol": "1.0.0-next.8",
82
- "vscode-jsonrpc": "^8.0.0 || ^9.0.0",
87
+ "@hydranium/core": "1.0.0-next.85",
88
+ "@hydranium/langium": "1.0.0-next.85",
89
+ "@hydranium/protocol": "1.0.0-next.85",
90
+ "vscode-jsonrpc": "9.0.1",
83
91
  "vscode-languageserver-textdocument": "^1.0.12"
84
92
  },
85
93
  "engines": {
@@ -89,5 +97,6 @@
89
97
  "access": "public"
90
98
  },
91
99
  "//browser": "Selects the diagnostics default per platform, the same mechanism @eclipse-glsp/server uses to swap its node build for its browser one. The Node module imports @hydranium/core/node; a browser bundler resolves the twin instead and therefore never follows that import, which is what keeps this package's `.` entry bundleable. Node ignores this field, so a Node host keeps the real implementation with no configuration. `check:neutral` is the proof it still applies — it bundles `.` for the browser and would fail on node:fs the moment the mapping stops matching.",
100
+ "//peerDependencies": "`vscode-jsonrpc` is EXACT rather than a range, because it is one link of an atomic chain with no independently movable link: `vscode-languageserver-protocol` depends on it at exactly 9.0.1, so any other value an adopter supplies is a SECOND physical copy rather than an upgrade. This wire stack breaks on copy identity rather than on structure — `ParameterStructures.auto` is a singleton compared by `===` in connection.js, so a request type built by one copy and sent over a connection owned by the other throws `Unknown parameter structure auto`. A caret or union range was rejected because npm then resolves a `vscode-jsonrpc@8.2.0` tree SILENTLY, with no diagnostic at all, and the failure surfaces only later at server init. Exact does not fail the install either — npm downgrades an unsatisfiable peer to a warning — but it is a NAMED ERESOLVE warning printing the required version beside the found one, and a hard error for anyone installing with `--strict-peer-deps`. It does NOT prevent a NESTED copy — `@eclipse-glsp/*` carries its own exact `vscode-jsonrpc@8.2.0` dependency and root `overrides` do not ship — so a consumer of the GLSP head must pin the chain in its own manifest, and docs/adopting/requirements.md carries the block to paste.",
92
101
  "//prepack": "The publish guard, and it deliberately is NOT a `prepare`: npm runs a workspace `prepare` BEFORE the root `postinstall` that applies patches/vscode-jsonrpc+9.0.1.patch, so building there fails on a cold clone and npm rolls the entire install back. `prepack` runs only when a tarball is made (`npm pack`, `npm publish`) and never on install, so it cannot break the install it has no business touching. It FAILS rather than rebuilds, because the rebuild is exactly the part that ordering defeats. What it defends against: `files` lists `lib`, `lib` is gitignored, and a `files` entry matching nothing is skipped SILENTLY — so `npm publish` from an unbuilt tree emits a tarball of `src` and nothing else, with no error."
93
102
  }
@@ -9,12 +9,15 @@
9
9
 
10
10
  import {
11
11
  createRpcProxy,
12
+ defineMessage,
12
13
  DisposableCollection,
13
14
  isDocumentSource,
14
15
  isElementSource,
15
16
  isSyntheticSource,
17
+ messageError,
16
18
  ReferenceSource,
17
19
  type CloseModelArgs,
20
+ type HydraniumResponseError,
18
21
  type Disposable,
19
22
  type ElementSource,
20
23
  type FindNextNameArgs,
@@ -28,8 +31,9 @@ import {
28
31
  type ReferenceTarget,
29
32
  type Tracer,
30
33
  type TransferDiagnostic,
31
- type TransferDocument,
32
- type TransferElement
34
+ TransferDocument,
35
+ type TransferElement,
36
+ asSnapshotVersion
33
37
  } from '@hydranium/protocol';
34
38
  import {
35
39
  DATA_SERVER_DIAGNOSTICS_METHODS,
@@ -52,11 +56,34 @@ import {
52
56
  } from '@hydranium/protocol/data';
53
57
  import { REVERT_ON_CLOSE_CLIENT_ID, UNKNOWN_CLIENT_ID } from '@hydranium/core';
54
58
  import { defaultDataServerDiagnostics } from './default-diagnostics.js';
59
+
60
+ /**
61
+ * Raised when a profiling command arrives with no capture running.
62
+ *
63
+ * A `ResponseError` rather than a plain `Error` so the identity survives to the
64
+ * response boundary, which is where the message is rendered. An unwrapped throw
65
+ * reaches the client as a generic internal error instead: no code for a caller
66
+ * to switch on, and nothing for the boundary to render from.
67
+ */
68
+ export const NO_ACTIVE_PROFILE = defineMessage(
69
+ 'hydranium/data-server/no-active-profile',
70
+ 'No profiling capture is active; call startProfiling first.'
71
+ );
72
+
73
+ /**
74
+ * The JSON-RPC code, unrelated to the catalogue code above: this one is numeric,
75
+ * survives reconstruction and is what a caller switches on.
76
+ */
77
+ export const NO_ACTIVE_PROFILE_CODE = 1002;
78
+
79
+ export const noActiveProfileError = (): HydraniumResponseError => messageError(NO_ACTIVE_PROFILE_CODE, NO_ACTIVE_PROFILE);
80
+
55
81
  import type { DataServerDiagnosticsProvider, DataServerProfileCapture } from './diagnostics-provider.js';
56
82
  import type {
57
83
  ClientTextDocumentChangeEvent,
58
84
  HydraniumLanguageServices,
59
85
  LogNameOptions,
86
+ AstDiagnostic,
60
87
  ModelService,
61
88
  ProjectChangeEvent,
62
89
  ServerSharedServices,
@@ -258,9 +285,9 @@ export interface DataServerOptions extends LogNameOptions {
258
285
  * When supplied, every inbound data-server RPC is timed into this collector
259
286
  * (via the `createRpcProxy` binding) and exposed through
260
287
  * {@link DataServerDiagnosticsProtocol.getLatency}. A head that also runs an
261
- * LSP connection can pass the SAME collector to
262
- * `instrumentLspConnection(connection, latency)` so one report covers both
263
- * heads. Absent by default (no timing overhead).
288
+ * LSP connection can pass the SAME collector through `lspLatencyOptions` to
289
+ * that connection, so one report covers both heads. Absent by default (no
290
+ * timing overhead).
264
291
  */
265
292
  readonly latency?: LatencyCollector;
266
293
  }
@@ -301,9 +328,11 @@ interface ResolvedDataServerOptions {
301
328
  * any names supplied via {@link DataServerOptions.additionalMethods}) and
302
329
  * builds the {@link DataClientProtocol} notification proxy on the same
303
330
  * connection in one {@link createRpcProxy} call (binding `this` as its
304
- * `localTarget`) under the configured namespace, and subscribes one
305
- * `DocumentBuilder.onDocumentPhase` listener per configured phase that
306
- * dispatches subscription events via `clientProxy.onDocumentUpdated`.
331
+ * `localTarget`) under the configured namespace, and subscribes two listeners
332
+ * at the configured phase: a `DocumentBuilder.onDocumentPhase` one dispatching
333
+ * per-document `clientProxy.onDocumentUpdated` for watched URIs, and a
334
+ * `DocumentBuilder.onBuildPhase` one dispatching a single
335
+ * `clientProxy.onDocumentsBuilt` naming the batch's unwatched documents.
307
336
  *
308
337
  * The data-server requires the full {@link ServerSharedServices}
309
338
  * shape — `HydraniumTextDocuments` for client-attributed updates,
@@ -356,10 +385,12 @@ export class DataServer<
356
385
  /**
357
386
  * Snapshot of the most recent `DocumentBuilder.onUpdate` event. Drives
358
387
  * `reason` discrimination on outbound `onDocumentUpdated` notifications:
359
- * a URI in the `changed` list emits `'changed'`, in `deleted` emits
360
- * `'deleted'`, otherwise `'rebuilt'` (cascade rebuild from a dependent
361
- * URI's change). The same mechanism `AstDocumentManager.onUpdate` uses on
362
- * the LSP side, so reason fidelity stays consistent between heads.
388
+ * a URI in the `changed` list emits `'changed'`, otherwise `'rebuilt'`
389
+ * (cascade rebuild from a dependent URI's change). The same mechanism
390
+ * `AstDocumentManager.onUpdate` uses on the LSP side, so reason fidelity
391
+ * stays consistent between heads. The `deleted` half is read by
392
+ * {@link dispatchDeleteEvents} rather than by the reason discrimination,
393
+ * a deletion travelling on its own channel.
363
394
  */
364
395
  protected lastBuildUpdate?: { changed: readonly URI[]; deleted: readonly URI[] };
365
396
  /**
@@ -420,7 +451,7 @@ export class DataServer<
420
451
  /** Per-method RPC latency collector, when the head opted in via {@link DataServerOptions.latency}. */
421
452
  protected readonly latency?: LatencyCollector;
422
453
  /** Encoder pulled from DI. Adopters rebind `services.model.TransferEncoder` to a typed-overlay subclass. */
423
- protected readonly encoder: TransferEncoder<unknown, TDiagnostic>;
454
+ protected readonly encoder: TransferEncoder<TDiagnostic>;
424
455
  /**
425
456
  * In-process workspace facade — the lifecycle delegate `get` / `update` / `save` go through.
426
457
  * The facade's AstDocument diagnostic shape is intentionally typed `unknown` here: adopters
@@ -429,7 +460,7 @@ export class DataServer<
429
460
  * `astDocumentToTransferDocument` accepts both shapes (wire-shape or LSP-shape) and projects
430
461
  * to wire shape on the return — see `TransferEncoder.astDocumentToTransferDocument`.
431
462
  */
432
- protected readonly modelService: ModelService<AstNode, unknown, TTransfer>;
463
+ protected readonly modelService: ModelService<AstNode, AstDiagnostic, TTransfer>;
433
464
 
434
465
  constructor(
435
466
  protected readonly connection: MessageConnection,
@@ -448,8 +479,8 @@ export class DataServer<
448
479
  'Did you compose `createServerSharedModule(ctx)` into your shared module?'
449
480
  );
450
481
  }
451
- this.encoder = encoder as TransferEncoder<unknown, TDiagnostic>;
452
- this.modelService = modelService as ModelService<AstNode, unknown, TTransfer>;
482
+ this.encoder = encoder as TransferEncoder<TDiagnostic>;
483
+ this.modelService = modelService as ModelService<AstNode, AstDiagnostic, TTransfer>;
453
484
  const excluded = new Set<string>(this.options.excludedMethods);
454
485
  const registeredMethods = [
455
486
  ...DATA_SERVER_PROTOCOL_METHODS,
@@ -465,11 +496,16 @@ export class DataServer<
465
496
  methodNamespace: this.options.methodNamespace,
466
497
  localTarget: this,
467
498
  localMethods: registeredMethods as readonly (keyof this & string)[],
468
- latency: this.latency
499
+ latency: this.latency,
500
+ // Bound at the chokepoint rather than per handler, so an adopter's
501
+ // `additionalMethods` are rendered on the same terms as the
502
+ // framework's own rejections.
503
+ renderErrorMessage: error => this.services.MessageRenderer.renderError(error)
469
504
  });
470
505
  this.disposables.push(
471
506
  this.services.workspace.DocumentBuilder.onUpdate((changed, deleted) => {
472
507
  this.lastBuildUpdate = { changed, deleted };
508
+ this.dispatchDeleteEvents(deleted);
473
509
  })
474
510
  );
475
511
  this.subscribeToDocumentBuilder();
@@ -547,11 +583,11 @@ export class DataServer<
547
583
  // multi-client synced version whenever the open seeded the synced document
548
584
  // with a caller-supplied version id — and the synced version is what
549
585
  // `ModelService.update`'s optimistic-concurrency gate compares
550
- // `baseVersion` against, so reporting the snapshot's would make the
586
+ // `basedOn` against, so reporting the snapshot's would make the
551
587
  // caller's first tagged write self-conflict. A genuine concurrent edit
552
588
  // still trips the gate and is reconciled by the caller's replay rather
553
589
  // than predicted here.
554
- return { ...document, version: this.services.workspace.TextDocuments.version(args.uri) };
590
+ return { ...document, version: asSnapshotVersion(this.services.workspace.TextDocuments.version(args.uri)) };
555
591
  }
556
592
 
557
593
  async closeModelDocument(args: CloseModelArgs): Promise<void> {
@@ -945,14 +981,9 @@ export class DataServer<
945
981
  // decides policy at its own layer; `root` is optional on the envelope
946
982
  // so the compiler forces that decision. Adopters preferring to throw
947
983
  // override `envelope`.
948
- return {
949
- uri: uri.toString(),
950
- version: 0,
951
- root: undefined,
952
- diagnostics: [] as TDiagnostic[]
953
- };
984
+ return TransferDocument.absent<TTransfer, TDiagnostic>(uri.toString());
954
985
  }
955
- return this.encoder.toTransferDocument<AstNode>(document) as unknown as TransferDocument<TTransfer, TDiagnostic>;
986
+ return this.encoder.toTransferDocument(document) as unknown as TransferDocument<TTransfer, TDiagnostic>;
956
987
  }
957
988
 
958
989
  /**
@@ -967,6 +998,57 @@ export class DataServer<
967
998
  this.dispatchPhaseEvent(document, cancelToken)
968
999
  )
969
1000
  );
1001
+ // The BUILD-phase hook, not the per-document one: this notification is one
1002
+ // message per build rather than one per document, and Langium hands the
1003
+ // whole batch over here. It also does not fire for a cancelled build,
1004
+ // which is what the per-document dispatch has to check by hand.
1005
+ this.disposables.push(
1006
+ this.services.workspace.DocumentBuilder.onBuildPhase(this.options.subscriptionPhase, built => this.dispatchBuiltEvent(built))
1007
+ );
1008
+ }
1009
+
1010
+ /**
1011
+ * Report the documents that reached {@link DataServerOptions.subscriptionPhase}
1012
+ * and that NOBODY on this
1013
+ * connection is watching — the ones a client was not told about through
1014
+ * {@link dispatchPhaseEvent}, which is gated per URI.
1015
+ *
1016
+ * **The gap this closes is the one no other source can observe.** A document
1017
+ * the client watches, it hears about already. A file changed on disk, the
1018
+ * host's own filesystem watcher reports — and on a browser host, where the
1019
+ * workspace lives behind this head, an external change cannot happen at all.
1020
+ * What is left, and what nothing outside the server can see, is a document
1021
+ * rebuilt because something it DEPENDS ON changed: its file never changed, so
1022
+ * a filesystem watcher is silent by construction, and it has no subscriber, so
1023
+ * the update channel is silent by design. A consumer displaying data derived
1024
+ * from that document — a tree label, a decorator — otherwise goes stale with
1025
+ * no signal from any source, and repairs itself the moment someone opens the
1026
+ * file to investigate, which is what makes it expensive to diagnose later.
1027
+ *
1028
+ * Payload-free on purpose: URIs only, so a client re-reads what it displays
1029
+ * rather than being handed transfer documents it did not ask for. That is the
1030
+ * property the subscription map protects, and it is preserved here by
1031
+ * carrying no document rather than by gating the message.
1032
+ *
1033
+ * Quiet in the common case. Editing a document that an editor has open leaves
1034
+ * that URI watched and therefore out of this set, so a build with no
1035
+ * dependents produces nothing at all, and workspace initialisation produces
1036
+ * nothing because it does not build to this phase. The ceiling is a
1037
+ * whole-workspace rebuild at the subscription phase: one message, URIs only.
1038
+ *
1039
+ * The URI is canonicalised for the same reason the subscription map is keyed
1040
+ * that way, and is untested for the same reason as its twin in
1041
+ * {@link dispatchDeleteEvents}: the builder reports URIs out of its own
1042
+ * store, so a non-canonical one cannot be produced without a fixture
1043
+ * asserting a shape the real system never emits.
1044
+ */
1045
+ protected dispatchBuiltEvent(built: readonly LangiumDocument[]): void {
1046
+ const uris = built.map(document => this.canonicalKey(document.uri.toString())).filter(uri => !this.subscriptions.has(uri));
1047
+ if (uris.length === 0) {
1048
+ return;
1049
+ }
1050
+ this.tracer.debug(`Emit onDocumentsBuilt: ${uris.length} unwatched document(s)`);
1051
+ this.clientProxy.onDocumentsBuilt({ uris });
970
1052
  }
971
1053
 
972
1054
  /**
@@ -1004,6 +1086,56 @@ export class DataServer<
1004
1086
  );
1005
1087
  }
1006
1088
 
1089
+ /**
1090
+ * Fan out a deletion for each removed URI, to EVERY client on the connection
1091
+ * rather than only to the ones watching that URI.
1092
+ *
1093
+ * **Deliberately ungated, where {@link dispatchPhaseEvent} and
1094
+ * {@link dispatchSaveEvent} are gated.** Those two carry a built document and
1095
+ * fire on every build, so the subscription map is what keeps bandwidth
1096
+ * proportional to what a client asked for. A deletion is neither: it is one
1097
+ * URI, it is rare, and it reports the workspace's STRUCTURE rather than a
1098
+ * document's content. Gating it forces any consumer that displays the
1099
+ * workspace — a model tree, a file decorator — to learn about disappearances
1100
+ * from a filesystem watcher instead, which a client hosted in a browser has
1101
+ * no way to run: its workspace lives behind the head. A client that does not
1102
+ * care filters on the URI, which costs it a comparison.
1103
+ *
1104
+ * The precedent is the last-close revert broadcast (see
1105
+ * {@link pendingRevertBroadcasts}), where the same judgement was already made
1106
+ * in the other direction: a transition that matters enough is delivered
1107
+ * without a subscription.
1108
+ *
1109
+ * Runs from the `DocumentBuilder.onUpdate` listener rather than from a phase
1110
+ * listener, which is the only place a deletion is observable: `update`
1111
+ * removes the document before deriving the rebuild set, so it is never built.
1112
+ * That ordering also puts this notification ahead of the `'rebuilt'` events
1113
+ * for the dependents whose references the deletion just broke.
1114
+ *
1115
+ * The `deleted` list arrives already expanded to concrete document URIs —
1116
+ * `deleteDocuments` resolves a directory URI to the documents beneath it — so
1117
+ * no caller has to handle a directory here.
1118
+ *
1119
+ * Per-URI derived state is dropped for the same reason it is dropped
1120
+ * anywhere: it describes a document that no longer exists.
1121
+ * {@link lastEmittedFingerprint} in particular can outlive its subscriptions
1122
+ * through the last-close revert path — left behind, it is adopted as the
1123
+ * baseline by the next {@link watchModelDocument} and suppresses the first
1124
+ * emit after the file returns with its previous content.
1125
+ *
1126
+ * The subscription itself SURVIVES: a recreated file resumes delivering to
1127
+ * the same watchers with no re-subscription, and a client that answers the
1128
+ * deletion by closing releases the watch through `closeModelDocument` anyway.
1129
+ */
1130
+ protected dispatchDeleteEvents(deleted: readonly URI[]): void {
1131
+ for (const removed of deleted) {
1132
+ const uri = this.canonicalKey(removed.toString());
1133
+ this.lastEmittedFingerprint.delete(uri);
1134
+ this.pendingRevertBroadcasts.delete(uri);
1135
+ this.clientProxy.onDocumentDeleted({ uri });
1136
+ }
1137
+ }
1138
+
1007
1139
  /** Fan out a save event for the document's URI, gated by the subscription map. */
1008
1140
  protected dispatchSaveEvent(event: ClientTextDocumentChangeEvent<TextDocument>): void {
1009
1141
  // The save event arrives under the CLIENT URI the text store keys by (e.g. a
@@ -1122,26 +1254,19 @@ export class DataServer<
1122
1254
  /**
1123
1255
  * Discriminate the reason for a phase-event-driven update notification.
1124
1256
  * Uses the most recent `DocumentBuilder.onUpdate` snapshot:
1125
- * - URI in the `deleted` list → `'deleted'`
1126
1257
  * - URI in the `changed` list → `'changed'` (the URI was passed to
1127
1258
  * `documentBuilder.update(changed, deleted)`, which spans `didChange`
1128
1259
  * text-document events and programmatic `update([uri], [])` calls).
1129
1260
  * - Otherwise → `'rebuilt'` (cascade re-derivation: this URI was rebuilt
1130
1261
  * because something it depends on changed; its own text wasn't flagged).
1131
1262
  *
1132
- * `'saved'` is NOT emitted from this code path — saves take the dedicated
1133
- * `DataClientProtocol.onDocumentSaved` channel; adopters that want a
1134
- * unified update stream synthesise `'saved'` in their bridge layer.
1263
+ * `'saved'` is NOT emitted here — saves take the dedicated
1264
+ * `DataClientProtocol.onDocumentSaved` channel, and adopters wanting a
1265
+ * unified stream synthesise it in their bridge layer. A deletion is not a
1266
+ * reason at all; see {@link dispatchDeleteEvents}.
1135
1267
  */
1136
1268
  protected resolveUpdateReason(uri: URI): TransferDocumentUpdatedEvent<TTransfer, TDiagnostic>['reason'] {
1137
- const last = this.lastBuildUpdate;
1138
- if (last?.deleted.some(deleted => UriUtils.equals(deleted, uri))) {
1139
- return 'deleted';
1140
- }
1141
- if (last?.changed.some(changed => UriUtils.equals(changed, uri))) {
1142
- return 'changed';
1143
- }
1144
- return 'rebuilt';
1269
+ return this.lastBuildUpdate?.changed.some(changed => UriUtils.equals(changed, uri)) ? 'changed' : 'rebuilt';
1145
1270
  }
1146
1271
 
1147
1272
  /**
@@ -1243,7 +1368,7 @@ export class DataServer<
1243
1368
 
1244
1369
  async stopProfiling(args: StopProfilingArgs): Promise<string> {
1245
1370
  if (!this.activeProfile) {
1246
- throw new Error('No profiling capture is active; call startProfiling first.');
1371
+ throw noActiveProfileError();
1247
1372
  }
1248
1373
  const capture = this.activeProfile;
1249
1374
  this.activeProfile = undefined;
@@ -0,0 +1,19 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2026 CrossBreeze, EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the MIT License which is available in the project root.
6
+ *
7
+ * SPDX-License-Identifier: MIT
8
+ ********************************************************************************/
9
+
10
+ /**
11
+ * Every user-facing message `@hydranium/data-server` raises.
12
+ *
13
+ * Declarations stay beside their call sites and are re-exported here, so this is
14
+ * enumeration rather than centralization: a code's package segment has to name
15
+ * the package that raises it. The English is a fallback, not a contract; the
16
+ * code is the contract, and renaming one is a breaking change.
17
+ */
18
+
19
+ export { NO_ACTIVE_PROFILE, NO_ACTIVE_PROFILE_CODE, noActiveProfileError } from '../data-server.js';
@@ -14,7 +14,9 @@ import {
14
14
  type DataClientProtocol,
15
15
  type DataServerProtocol,
16
16
  type ProjectsChangedEvent,
17
+ type TransferDocumentDeletedEvent,
17
18
  type TransferDocumentSavedEvent,
19
+ type TransferDocumentsBuiltEvent,
18
20
  type TransferDocumentUpdatedEvent
19
21
  } from '@hydranium/protocol/data';
20
22
  import { type Harness, makeCapturingDataClient } from '@hydranium/protocol/testing';
@@ -87,6 +89,10 @@ export interface DataServerHarness<
87
89
  readonly events: ReadonlyArray<TransferDocumentUpdatedEvent<TTransfer, TDiagnostic>>;
88
90
  /** Captured `onDocumentSaved` events. */
89
91
  readonly saves: ReadonlyArray<TransferDocumentSavedEvent<TTransfer, TDiagnostic>>;
92
+ /** Captured `onDocumentDeleted` events. */
93
+ readonly deletions: ReadonlyArray<TransferDocumentDeletedEvent>;
94
+ /** Captured `onDocumentsBuilt` events, one per build that had unwatched documents. */
95
+ readonly builds: ReadonlyArray<TransferDocumentsBuiltEvent>;
90
96
  /** Captured `onProjectsChanged` events. */
91
97
  readonly projectsChanges: ReadonlyArray<ProjectsChangedEvent<TProject>>;
92
98
  /** Dispose the underlying duplex pair. Idempotent. */
@@ -115,7 +121,7 @@ export function makeDataServerHarness<
115
121
  const server = options.server(pair.left);
116
122
 
117
123
  // The capture half is the shared client double, not a local copy: the same
118
- // recording semantics (all three channels, an override replacing rather than
124
+ // recording semantics (every channel, an override replacing rather than
119
125
  // supplementing) then hold for a client-side suite that stands the double up
120
126
  // without a server, so an assertion learnt against one reads the same in the
121
127
  // other.
@@ -123,6 +129,8 @@ export function makeDataServerHarness<
123
129
  client: localClient,
124
130
  updates: events,
125
131
  saves,
132
+ deletions,
133
+ builds,
126
134
  projectsChanges
127
135
  } = makeCapturingDataClient<TTransfer, TDiagnostic, TProject>(options.client);
128
136
 
@@ -141,6 +149,8 @@ export function makeDataServerHarness<
141
149
  pair,
142
150
  events,
143
151
  saves,
152
+ deletions,
153
+ builds,
144
154
  projectsChanges,
145
155
  dispose: () => pair.dispose()
146
156
  };