@econ-v1/rpc 6.12.2 → 6.13.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.
package/dist/index.d.ts CHANGED
@@ -19,6 +19,7 @@ export type SyncErrorCode = import("@econ-v1/domain").SyncErrorCode;
19
19
  export type TransportState = import("@econ-v1/domain").TransportState;
20
20
  export type TransportOfflineReason = import("@econ-v1/domain").TransportOfflineReason;
21
21
  export type TransportErrorCode = import("@econ-v1/domain").TransportErrorCode;
22
+ export type NodeReachability = import("./transport-contract.js").NodeReachability;
22
23
  export type EncryptedStorageDiagnostic = import("@econ-v1/ports").EncryptedStorageDiagnostic;
23
24
  export type AppDataManifest = import("@econ-v1/ports").AppDataManifest;
24
25
  export type AppDataOfflinePolicy = import("@econ-v1/ports").AppDataOfflinePolicy;
@@ -115,7 +116,9 @@ export type SystemNoticeActionKind = import("./system-notice-contract.js").Syste
115
116
  export type SystemNoticeBlockScope = import("./system-notice-contract.js").SystemNoticeBlockScope;
116
117
  export type SystemNoticeBody = import("./system-notice-contract.js").SystemNoticeBody;
117
118
  export type SystemNoticeCenter = import("./system-notice-contract.js").SystemNoticeCenter;
119
+ export type SystemNoticeDedupBy = import("./system-notice-contract.js").SystemNoticeDedupBy;
118
120
  export type SystemNoticeDetail = import("./system-notice-contract.js").SystemNoticeDetail;
121
+ export type SystemNoticeDismissalListener = import("./system-notice-contract.js").SystemNoticeDismissalListener;
119
122
  export type SystemNoticeDisclosure = import("./system-notice-contract.js").SystemNoticeDisclosure;
120
123
  export type SystemNoticeHandle = import("./system-notice-contract.js").SystemNoticeHandle;
121
124
  export type SystemNoticeInput = import("./system-notice-contract.js").SystemNoticeInput;
@@ -137,7 +140,7 @@ export { KernelRpcTimeoutError, MessagePortKernelRpcClient } from "./message-por
137
140
  export { NODE_APP_MEMORY_CAPTURE_COMMAND, NODE_APP_MEMORY_DETAIL_QUERY, NODE_APP_MEMORY_DOWNLOAD_COMMAND, NODE_APP_MEMORY_LIST_QUERY, NODE_APP_MEMORY_OVERVIEW_QUERY, NODE_APP_MEMORY_STATUS_COMMAND } from "./node-app-memory-contract.js";
138
141
  export { CLIENT_DEVICE_PAIRING_STATUS_QUERY, CLIENT_DEVICE_WIRE_ERROR_DEVICE_NOT_REGISTERED, CLIENT_DEVICE_WIRE_ERROR_LAST_DEVICE, CLIENT_DEVICE_WIRE_ERROR_LAST_DEVICE_PROTECTED, CLIENT_DEVICE_WIRE_ERROR_NAME_TAKEN } from "./pairing-status-contract.js";
139
142
  export { DEVICE_CLEANUP_CANCEL_COMMAND, DEVICE_CLEANUP_QUERY, DEVICE_CLEANUP_REQUEST_COMMAND, DEVICE_CLEANUP_STATUS_COMMAND } from "./device-cleanup-contract.js";
140
- export { TRANSPORT_STATE_QUERY, TRANSPORT_STATE_QUERY_V2 } from "./transport-contract.js";
143
+ export { CONNECTIVITY_STATE_QUERY, TRANSPORT_STATE_QUERY, TRANSPORT_STATE_QUERY_V2 } from "./transport-contract.js";
141
144
  export { DISCOVER_NODE_COMMAND, DISCOVERY_PROBE_COMMAND, DISCOVERY_PROMOTE_COMMAND, DISCOVERY_QUERY, isDiscoverNodePayload, isProbeCandidatesPayload, isPromoteCandidatePayload } from "./onboarding/discovery-contract.js";
142
145
  export { isOnboardingCommand, ONBOARDING_COMMAND, ONBOARDING_EVENTS, ONBOARDING_FLOW_QUERY, ONBOARDING_LCD_SCREEN_QUERY, ONBOARDING_STATUS_QUERY, ONBOARDING_STEP_IDS } from "./onboarding/onboarding-contract.js";
143
146
  export { TRUST_INSTALL_RESTART_COMMAND, TRUST_SKIP_COMMAND, TRUST_STATUS_QUERY, TRUST_VERIFY_COMMAND, isTrustInstallRestartPayload, isTrustSkipPayload, isTrustVerifyPayload } from "./trust-contract.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.js"],"names":[],"mappings":"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"}
@@ -2,8 +2,10 @@ export type SystemNoticeSeverity = "error" | "info" | "security" | "success" | "
2
2
  export type SystemNoticeActionKind = "primary" | "secondary";
3
3
  export type SystemNoticeBlockScope = "shell" | "stage";
4
4
  export type SystemNoticeState = "busy" | "failed" | "idle" | "resolved";
5
+ export type SystemNoticeDedupBy = "content" | "id";
5
6
  export type SystemNotice = SystemNoticeInput;
6
7
  export type SystemNoticeListener = (notices: readonly SystemNotice[]) => void;
8
+ export type SystemNoticeDismissalListener = (id: string) => void;
7
9
  export type SystemNoticeAction = {
8
10
  /**
9
11
  * Stable action identity, rendered as `data-action` on the button.
@@ -33,6 +35,20 @@ export type SystemNoticeInput = {
33
35
  actions?: readonly SystemNoticeAction[];
34
36
  blocking?: SystemNoticeBlockScope;
35
37
  body?: SystemNoticeBody;
38
+ /**
39
+ * How the notice CENTRE's presentation layer decides
40
+ * this notice's history identity — see `noticeDedupKey` in
41
+ * `client/ui/src/shell/notice-presentation.js`. Defaults to `"content"`, which is right for
42
+ * the ordinary case: a notice states one fact, and a different sentence is a different
43
+ * notice. An AGGREGATE notice — one durable row standing for a changing SET, like
44
+ * `offline-readiness` or `memory-budget` — states the same fact with different numbers in it,
45
+ * and its actions turn over as the set does. Under `"content"` every such turnover mints a
46
+ * fresh history row, so the centre fills with near-identical entries. `"id"` says "this
47
+ * publisher's id IS the identity": the row updates in place as its counts change. A publisher
48
+ * choosing it takes on what content identity gave it for free — re-raising deliberately when
49
+ * something genuinely new happens, rather than relying on the text having changed.
50
+ */
51
+ dedupBy?: SystemNoticeDedupBy;
36
52
  dismissible: boolean;
37
53
  id: string;
38
54
  message: string;
@@ -65,6 +81,16 @@ export type SystemNoticeCenter = {
65
81
  getAll: () => readonly SystemNotice[];
66
82
  publish: (input: SystemNoticeInput) => SystemNoticeHandle;
67
83
  subscribe: (listener: SystemNoticeListener) => () => void;
84
+ /**
85
+ * Notifies OWNERS that one of their notices was actually removed by a `dismiss(id)` — the
86
+ * dismiss button on the notice bar calls `center.dismiss(notice.id)` directly, so without this
87
+ * a publisher has no way to learn that the user dismissed its notice and simply republishes it
88
+ * on its next render (see `offline-readiness.js`'s `notifyDismissed`). Fires only for a
89
+ * dismissal that removed a notice, never for one the center refused. OPTIONAL so wrappers that
90
+ * only narrow authority (`stage-notice-center.js`) and test doubles are not forced to grow a
91
+ * method they have no dismissals to report.
92
+ */
93
+ subscribeDismissals?: (listener: SystemNoticeDismissalListener) => () => void;
68
94
  update: (id: string, patch: SystemNoticePatch) => void;
69
95
  };
70
96
  //# sourceMappingURL=system-notice-contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"system-notice-contract.d.ts","sourceRoot":"","sources":["../src/system-notice-contract.js"],"names":[],"mappings":"mCAGc,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS;qCACrD,SAAS,GAAG,WAAW;qCACvB,OAAO,GAAG,OAAO;gCACjB,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU;2BACvC,iBAAiB;mCACjB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,KAAK,IAAI;;;;;;;;SAG1C,MAAM;UAIN,sBAAsB;WACtB,MAAM;cACN,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;;iCAE1B;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE;qCAClD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE;+BACnD;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE;;cAGtI,SAAS,kBAAkB,EAAE;eAC7B,sBAAsB;WACtB,gBAAgB;iBAChB,OAAO;QACP,MAAM;aACN,MAAM;gBACN,OAAO;eACP,MAAM;cACN,oBAAoB;YACpB,MAAM;YACN,iBAAiB;WACjB,MAAM;;;cAIN,SAAS,kBAAkB,EAAE,GAAG,SAAS;eACzC,sBAAsB,GAAG,SAAS;WAClC,gBAAgB,GAAG,SAAS;kBAC5B,OAAO,GAAG,SAAS;cACnB,MAAM,GAAG,SAAS;iBAClB,OAAO,GAAG,SAAS;eACnB,MAAM,GAAG,SAAS;eAClB,oBAAoB,GAAG,SAAS;aAChC,MAAM,GAAG,SAAS;YAClB,iBAAiB,GAAG,SAAS;YAC7B,MAAM,GAAG,SAAS;;;aAIlB,MAAM,IAAI;YACV,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI;;;aAIlC,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI;YACpB,MAAM,SAAS,YAAY,EAAE;aAC7B,CAAC,KAAK,EAAE,iBAAiB,KAAK,kBAAkB;eAChD,CAAC,QAAQ,EAAE,oBAAoB,KAAK,MAAM,IAAI;YAC9C,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,KAAK,IAAI"}
1
+ {"version":3,"file":"system-notice-contract.d.ts","sourceRoot":"","sources":["../src/system-notice-contract.js"],"names":[],"mappings":"mCAGc,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS;qCACrD,SAAS,GAAG,WAAW;qCACvB,OAAO,GAAG,OAAO;gCACjB,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU;kCACvC,SAAS,GAAG,IAAI;2BAChB,iBAAiB;mCACjB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,KAAK,IAAI;4CAC1C,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI;;;;;;;;SAGpB,MAAM;UAIN,sBAAsB;WACtB,MAAM;cACN,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;;iCAE1B;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE;qCAClD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE;+BACnD;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE;;cAGtI,SAAS,kBAAkB,EAAE;eAC7B,sBAAsB;WACtB,gBAAgB;;;;;;;;;;;;;;cAChB,mBAAmB;iBAWnB,OAAO;QACP,MAAM;aACN,MAAM;gBACN,OAAO;eACP,MAAM;cACN,oBAAoB;YACpB,MAAM;YACN,iBAAiB;WACjB,MAAM;;;cAIN,SAAS,kBAAkB,EAAE,GAAG,SAAS;eACzC,sBAAsB,GAAG,SAAS;WAClC,gBAAgB,GAAG,SAAS;kBAC5B,OAAO,GAAG,SAAS;cACnB,MAAM,GAAG,SAAS;iBAClB,OAAO,GAAG,SAAS;eACnB,MAAM,GAAG,SAAS;eAClB,oBAAoB,GAAG,SAAS;aAChC,MAAM,GAAG,SAAS;YAClB,iBAAiB,GAAG,SAAS;YAC7B,MAAM,GAAG,SAAS;;;aAIlB,MAAM,IAAI;YACV,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI;;;aAIlC,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI;YACpB,MAAM,SAAS,YAAY,EAAE;aAC7B,CAAC,KAAK,EAAE,iBAAiB,KAAK,kBAAkB;eAChD,CAAC,QAAQ,EAAE,oBAAoB,KAAK,MAAM,IAAI;;;;;;;;;;0BAC9C,CAAC,QAAQ,EAAE,6BAA6B,KAAK,MAAM,IAAI;YAQvD,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,KAAK,IAAI"}
@@ -8,4 +8,22 @@
8
8
  */
9
9
  export const TRANSPORT_STATE_QUERY: "transport.state.v1";
10
10
  export const TRANSPORT_STATE_QUERY_V2: "transport.state.v2";
11
+ /**
12
+ * Query name for the kernel's damped, user-facing reachability projection.
13
+ *
14
+ * Distinct from the two transport queries above on purpose: `transport.state.v2` is the
15
+ * supervisor's raw dial/probe truth and stays that way for the diagnostics panel and telemetry,
16
+ * while this one answers the only question a user-facing surface should ask — "can this app reach
17
+ * its node right now". It lives beside them here, in `@econ-v1/rpc`, because `client/ui` is
18
+ * allowed to import ONLY this package (`docs/development/CLIENT_NODE_CONVENTIONS.md` rule B2) and
19
+ * both the shell and the kernel need the same name and the same state union.
20
+ */
21
+ export const CONNECTIVITY_STATE_QUERY: "connectivity.state.v1";
22
+ /**
23
+ * The four states `CONNECTIVITY_STATE_QUERY` can report. The shared shape for the kernel's
24
+ * projection (`client/kernel/src/connectivity/node-reachability.js`) and every shell surface that
25
+ * reads it; see the design doc `docs/superpowers/specs/2026-08-19-connectivity-projection-design.md`
26
+ * for the rule that produces them.
27
+ */
28
+ export type NodeReachability = "online" | "unreachable" | "session-required" | "unknown";
11
29
  //# sourceMappingURL=transport-contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transport-contract.d.ts","sourceRoot":"","sources":["../src/transport-contract.js"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,oCAA2D,oBAAoB,CAAE;AACjF,uCAA8D,oBAAoB,CAAE"}
1
+ {"version":3,"file":"transport-contract.d.ts","sourceRoot":"","sources":["../src/transport-contract.js"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,oCAA2D,oBAAoB,CAAE;AACjF,uCAA8D,oBAAoB,CAAE;AAEpF;;;;;;;;;GASG;AACH,uCAA8D,uBAAuB,CAAE;;;;;;;+BAO1E,QAAQ,GAAG,aAAa,GAAG,kBAAkB,GAAG,SAAS"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@econ-v1/rpc",
3
- "version": "6.12.2",
3
+ "version": "6.13.0",
4
4
  "description": "Typed runtime and contracts for Node client stage-to-kernel RPC",
5
5
  "license": "MIT OR Apache-2.0",
6
6
  "author": "Node contributors",
@@ -56,7 +56,7 @@
56
56
  "access": "public"
57
57
  },
58
58
  "dependencies": {
59
- "@econ-v1/domain": "6.12.2",
60
- "@econ-v1/ports": "6.12.2"
59
+ "@econ-v1/domain": "6.13.0",
60
+ "@econ-v1/ports": "6.13.0"
61
61
  }
62
62
  }
package/src/index.js CHANGED
@@ -18,6 +18,7 @@
18
18
  /** @typedef {import("@econ-v1/domain").TransportState} TransportState */
19
19
  /** @typedef {import("@econ-v1/domain").TransportOfflineReason} TransportOfflineReason */
20
20
  /** @typedef {import("@econ-v1/domain").TransportErrorCode} TransportErrorCode */
21
+ /** @typedef {import("./transport-contract.js").NodeReachability} NodeReachability */
21
22
  /** @typedef {import("@econ-v1/ports").EncryptedStorageDiagnostic} EncryptedStorageDiagnostic */
22
23
  /** @typedef {import("@econ-v1/ports").AppDataManifest} AppDataManifest */
23
24
  /** @typedef {import("@econ-v1/ports").AppDataOfflinePolicy} AppDataOfflinePolicy */
@@ -114,7 +115,9 @@
114
115
  /** @typedef {import("./system-notice-contract.js").SystemNoticeBlockScope} SystemNoticeBlockScope */
115
116
  /** @typedef {import("./system-notice-contract.js").SystemNoticeBody} SystemNoticeBody */
116
117
  /** @typedef {import("./system-notice-contract.js").SystemNoticeCenter} SystemNoticeCenter */
118
+ /** @typedef {import("./system-notice-contract.js").SystemNoticeDedupBy} SystemNoticeDedupBy */
117
119
  /** @typedef {import("./system-notice-contract.js").SystemNoticeDetail} SystemNoticeDetail */
120
+ /** @typedef {import("./system-notice-contract.js").SystemNoticeDismissalListener} SystemNoticeDismissalListener */
118
121
  /** @typedef {import("./system-notice-contract.js").SystemNoticeDisclosure} SystemNoticeDisclosure */
119
122
  /** @typedef {import("./system-notice-contract.js").SystemNoticeHandle} SystemNoticeHandle */
120
123
  /** @typedef {import("./system-notice-contract.js").SystemNoticeInput} SystemNoticeInput */
@@ -163,7 +166,7 @@ export {
163
166
  DEVICE_CLEANUP_STATUS_COMMAND,
164
167
  } from "./device-cleanup-contract.js";
165
168
  export { SYNC_CURSORS_QUERY } from "./sync-cursors-contract.js";
166
- export { TRANSPORT_STATE_QUERY, TRANSPORT_STATE_QUERY_V2 } from "./transport-contract.js";
169
+ export { CONNECTIVITY_STATE_QUERY, TRANSPORT_STATE_QUERY, TRANSPORT_STATE_QUERY_V2 } from "./transport-contract.js";
167
170
  export {
168
171
  DISCOVER_NODE_COMMAND,
169
172
  DISCOVERY_PROBE_COMMAND,
package/src/protocol.js CHANGED
@@ -1,6 +1,7 @@
1
1
  // @ts-check
2
2
 
3
3
  /** @import { AppEventPayload, AppEventType, ClientError, CoreKernelEventType, DomainEvent, JsonObject, JsonValue, KernelEventPayload, QueryDiff, QueryName } from '@econ-v1/domain' */
4
+ /** @import { NodeReachability } from './transport-contract.js' */
4
5
  /** @typedef {{ readonly occurredAt: string; readonly payload: { readonly state?: string }; readonly type: "device-cleanup.changed" }} DeviceCleanupDomainEvent */
5
6
  /** @typedef {DomainEvent | DeviceCleanupDomainEvent} ProtocolDomainEvent */
6
7
  /** @typedef {CoreKernelEventType | "device-cleanup.changed"} ProtocolCoreKernelEventType */
@@ -246,6 +247,8 @@ function domainEventField(value) {
246
247
  return { occurredAt, payload: roomTurnStreamPayload(event), type: coreType };
247
248
  case "room.job-stream":
248
249
  return { occurredAt, payload: roomJobStreamPayload(event), type: coreType };
250
+ case "connectivity.changed":
251
+ return { occurredAt, payload: connectivityChangedPayload(event), type: coreType };
249
252
  }
250
253
  }
251
254
  /**
@@ -434,7 +437,8 @@ function offlineStageReadinessChangedPayload(event) {
434
437
  }
435
438
  const failureCode = optionalStringField(readiness, "failureCode");
436
439
  if (failureCode !== undefined && failureCode !== "asset-fetch-failed" &&
437
- failureCode !== "asset-integrity-failed" && failureCode !== "projection-seed-failed" &&
440
+ failureCode !== "asset-integrity-failed" && failureCode !== "node-unreachable" &&
441
+ failureCode !== "projection-seed-failed" &&
438
442
  failureCode !== "schema-incompatible" && failureCode !== "quota-exceeded" &&
439
443
  failureCode !== "identity-mismatch" && failureCode !== "active-resource-corrupt") {
440
444
  throw new TypeError("Expected a known offline readiness failure code");
@@ -508,6 +512,27 @@ function stageCatalogInvalidatedPayload(event) {
508
512
  const payload = objectField(event, "payload");
509
513
  return { reason: stringField(payload, "reason") };
510
514
  }
515
+ /**
516
+ * Decode the damped reachability projection's payload.
517
+ *
518
+ * Validated against the closed set rather than passed through as a string: the shell drives
519
+ * user-visible connectivity and the stage-availability gate off this value, so an unrecognised
520
+ * one must be rejected at the boundary instead of quietly reaching a switch that has no case
521
+ * for it.
522
+ * @param {JsonObject} event
523
+ * @returns {{ readonly reachability: NodeReachability }}
524
+ */
525
+ function connectivityChangedPayload(event) {
526
+ const payload = objectField(event, "payload");
527
+ const reachability = stringField(payload, "reachability");
528
+ if (reachability !== "online"
529
+ && reachability !== "unreachable"
530
+ && reachability !== "session-required"
531
+ && reachability !== "unknown") {
532
+ throw new TypeError("Expected a known reachability value");
533
+ }
534
+ return { reachability };
535
+ }
511
536
  /**
512
537
  * @param {JsonObject} value
513
538
  * @returns {QueryDiff<JsonValue>}
@@ -5,8 +5,10 @@ export {};
5
5
  /** @typedef {"primary" | "secondary"} SystemNoticeActionKind */
6
6
  /** @typedef {"shell" | "stage"} SystemNoticeBlockScope */
7
7
  /** @typedef {"busy" | "failed" | "idle" | "resolved"} SystemNoticeState */
8
+ /** @typedef {"content" | "id"} SystemNoticeDedupBy */
8
9
  /** @typedef {SystemNoticeInput} SystemNotice */
9
10
  /** @typedef {(notices: readonly SystemNotice[]) => void} SystemNoticeListener */
11
+ /** @typedef {(id: string) => void} SystemNoticeDismissalListener */
10
12
  /**
11
13
  * @typedef {object} SystemNoticeAction
12
14
  * @property {string} [id] Stable action identity, rendered as `data-action` on the button.
@@ -25,6 +27,17 @@ export {};
25
27
  * @property {readonly SystemNoticeAction[]} [actions]
26
28
  * @property {SystemNoticeBlockScope} [blocking]
27
29
  * @property {SystemNoticeBody} [body]
30
+ * @property {SystemNoticeDedupBy} [dedupBy] How the notice CENTRE's presentation layer decides
31
+ * this notice's history identity — see `noticeDedupKey` in
32
+ * `client/ui/src/shell/notice-presentation.js`. Defaults to `"content"`, which is right for
33
+ * the ordinary case: a notice states one fact, and a different sentence is a different
34
+ * notice. An AGGREGATE notice — one durable row standing for a changing SET, like
35
+ * `offline-readiness` or `memory-budget` — states the same fact with different numbers in it,
36
+ * and its actions turn over as the set does. Under `"content"` every such turnover mints a
37
+ * fresh history row, so the centre fills with near-identical entries. `"id"` says "this
38
+ * publisher's id IS the identity": the row updates in place as its counts change. A publisher
39
+ * choosing it takes on what content identity gave it for free — re-raising deliberately when
40
+ * something genuinely new happens, rather than relying on the text having changed.
28
41
  * @property {boolean} dismissible
29
42
  * @property {string} id
30
43
  * @property {string} message
@@ -60,5 +73,13 @@ export {};
60
73
  * @property {() => readonly SystemNotice[]} getAll
61
74
  * @property {(input: SystemNoticeInput) => SystemNoticeHandle} publish
62
75
  * @property {(listener: SystemNoticeListener) => () => void} subscribe
76
+ * @property {(listener: SystemNoticeDismissalListener) => () => void} [subscribeDismissals]
77
+ * Notifies OWNERS that one of their notices was actually removed by a `dismiss(id)` — the
78
+ * dismiss button on the notice bar calls `center.dismiss(notice.id)` directly, so without this
79
+ * a publisher has no way to learn that the user dismissed its notice and simply republishes it
80
+ * on its next render (see `offline-readiness.js`'s `notifyDismissed`). Fires only for a
81
+ * dismissal that removed a notice, never for one the center refused. OPTIONAL so wrappers that
82
+ * only narrow authority (`stage-notice-center.js`) and test doubles are not forced to grow a
83
+ * method they have no dismissals to report.
63
84
  * @property {(id: string, patch: SystemNoticePatch) => void} update
64
85
  */
@@ -9,3 +9,23 @@
9
9
  */
10
10
  export const TRANSPORT_STATE_QUERY = /** @type {const} */ ("transport.state.v1");
11
11
  export const TRANSPORT_STATE_QUERY_V2 = /** @type {const} */ ("transport.state.v2");
12
+
13
+ /**
14
+ * Query name for the kernel's damped, user-facing reachability projection.
15
+ *
16
+ * Distinct from the two transport queries above on purpose: `transport.state.v2` is the
17
+ * supervisor's raw dial/probe truth and stays that way for the diagnostics panel and telemetry,
18
+ * while this one answers the only question a user-facing surface should ask — "can this app reach
19
+ * its node right now". It lives beside them here, in `@econ-v1/rpc`, because `client/ui` is
20
+ * allowed to import ONLY this package (`docs/development/CLIENT_NODE_CONVENTIONS.md` rule B2) and
21
+ * both the shell and the kernel need the same name and the same state union.
22
+ */
23
+ export const CONNECTIVITY_STATE_QUERY = /** @type {const} */ ("connectivity.state.v1");
24
+
25
+ /**
26
+ * The four states `CONNECTIVITY_STATE_QUERY` can report. The shared shape for the kernel's
27
+ * projection (`client/kernel/src/connectivity/node-reachability.js`) and every shell surface that
28
+ * reads it; see the design doc `docs/superpowers/specs/2026-08-19-connectivity-projection-design.md`
29
+ * for the rule that produces them.
30
+ * @typedef {"online" | "unreachable" | "session-required" | "unknown"} NodeReachability
31
+ */