@econ-v1/rpc 6.12.1 → 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 +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/protocol.d.ts.map +1 -1
- package/dist/system-notice-contract.d.ts +26 -0
- package/dist/system-notice-contract.d.ts.map +1 -1
- package/dist/transport-contract.d.ts +18 -0
- package/dist/transport-contract.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/index.js +4 -1
- package/src/protocol.js +26 -1
- package/src/system-notice-contract.js +21 -0
- package/src/transport-contract.js +20 -0
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";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";;;8BAEc,OAAO,aAAa,EAAE,eAAe;4BACrC,OAAO,aAAa,EAAE,aAAa;8BACnC,OAAO,aAAa,EAAE,eAAe;0BACrC,OAAO,aAAa,EAAE,WAAW;0BACjC,OAAO,iBAAiB,EAAE,WAAW;0BACrC,OAAO,iBAAiB,EAAE,WAAW;8BACrC,OAAO,iBAAiB,EAAE,eAAe;8BACvB,CAAC,SAAlB,eAAgB,IAAa,OAAO,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;+BAC1D,CAAC,SAAlB,eAAgB,IAAa,OAAO,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,CAAC;8BAC7E,OAAO,iBAAiB,EAAE,eAAe;2BACzC,OAAO,iBAAiB,EAAE,YAAY;sBACtC,CAAC,IAAW,OAAO,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC;wBAClD,OAAO,iBAAiB,EAAE,SAAS;sCACnC,OAAO,iBAAiB,EAAE,uBAAuB;4BACjD,OAAO,iBAAiB,EAAE,aAAa;6BACvC,OAAO,iBAAiB,EAAE,cAAc;qCACxC,OAAO,iBAAiB,EAAE,sBAAsB;iCAChD,OAAO,iBAAiB,EAAE,kBAAkB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"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"}
|
package/dist/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.js"],"names":[],"mappings":"
|
|
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;
|
|
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.
|
|
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.
|
|
60
|
-
"@econ-v1/ports": "6.
|
|
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 !== "
|
|
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
|
+
*/
|