@econ-v1/rpc 6.6.0 → 6.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/client-device-pending-contract.d.ts +14 -0
  2. package/dist/client-device-pending-contract.d.ts.map +1 -0
  3. package/dist/client.d.ts +15 -13
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/device-boot-contract.d.ts +7 -0
  6. package/dist/device-boot-contract.d.ts.map +1 -0
  7. package/dist/device-cleanup-contract.d.ts +17 -0
  8. package/dist/device-cleanup-contract.d.ts.map +1 -0
  9. package/dist/dialog-contract.d.ts +26 -0
  10. package/dist/dialog-contract.d.ts.map +1 -0
  11. package/dist/errors.d.ts +33 -6
  12. package/dist/errors.d.ts.map +1 -1
  13. package/dist/index.d.ts +144 -14
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/message-port-client.d.ts +134 -16
  16. package/dist/message-port-client.d.ts.map +1 -1
  17. package/dist/node-app-memory-contract.d.ts +10 -0
  18. package/dist/node-app-memory-contract.d.ts.map +1 -0
  19. package/dist/onboarding/discovery-contract.d.ts +61 -34
  20. package/dist/onboarding/discovery-contract.d.ts.map +1 -1
  21. package/dist/onboarding/onboarding-contract.d.ts +119 -27
  22. package/dist/onboarding/onboarding-contract.d.ts.map +1 -1
  23. package/dist/onboarding/owner-claim-contract.d.ts +50 -0
  24. package/dist/onboarding/owner-claim-contract.d.ts.map +1 -0
  25. package/dist/pairing-status-contract.d.ts +40 -0
  26. package/dist/pairing-status-contract.d.ts.map +1 -0
  27. package/dist/protocol.d.ts +50 -12
  28. package/dist/protocol.d.ts.map +1 -1
  29. package/dist/stage-context.d.ts +31 -16
  30. package/dist/stage-context.d.ts.map +1 -1
  31. package/dist/sync-cursors-contract.d.ts +6 -0
  32. package/dist/sync-cursors-contract.d.ts.map +1 -0
  33. package/dist/system-notice-contract.d.ts +70 -0
  34. package/dist/system-notice-contract.d.ts.map +1 -0
  35. package/dist/transport-contract.d.ts +11 -0
  36. package/dist/transport-contract.d.ts.map +1 -0
  37. package/dist/transport.d.ts +2 -2
  38. package/dist/transport.d.ts.map +1 -1
  39. package/dist/trust-contract.d.ts +23 -0
  40. package/dist/trust-contract.d.ts.map +1 -0
  41. package/package.json +16 -12
  42. package/src/client-device-pending-contract.js +6 -0
  43. package/src/client.js +26 -0
  44. package/src/device-boot-contract.js +4 -0
  45. package/src/device-cleanup-contract.js +9 -0
  46. package/src/dialog-contract.js +6 -0
  47. package/src/errors.js +111 -0
  48. package/src/index.js +194 -0
  49. package/src/message-port-client.js +628 -0
  50. package/src/node-app-memory-contract.js +10 -0
  51. package/src/onboarding/discovery-contract.js +83 -0
  52. package/src/onboarding/onboarding-contract.js +106 -0
  53. package/src/onboarding/owner-claim-contract.js +59 -0
  54. package/src/pairing-status-contract.js +36 -0
  55. package/src/protocol.js +758 -0
  56. package/src/stage-context.js +27 -0
  57. package/src/sync-cursors-contract.js +3 -0
  58. package/src/system-notice-contract.js +64 -0
  59. package/src/transport-contract.js +11 -0
  60. package/src/transport.js +6 -0
  61. package/src/trust-contract.js +36 -0
  62. package/dist/client.js +0 -2
  63. package/dist/client.js.map +0 -1
  64. package/dist/errors.js +0 -57
  65. package/dist/errors.js.map +0 -1
  66. package/dist/index.js +0 -7
  67. package/dist/index.js.map +0 -1
  68. package/dist/message-port-client.js +0 -365
  69. package/dist/message-port-client.js.map +0 -1
  70. package/dist/onboarding/discovery-contract.js +0 -42
  71. package/dist/onboarding/discovery-contract.js.map +0 -1
  72. package/dist/onboarding/onboarding-contract.js +0 -37
  73. package/dist/onboarding/onboarding-contract.js.map +0 -1
  74. package/dist/protocol.js +0 -295
  75. package/dist/protocol.js.map +0 -1
  76. package/dist/stage-context.js +0 -2
  77. package/dist/stage-context.js.map +0 -1
  78. package/dist/transport.js +0 -2
  79. package/dist/transport.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"stage-context.d.ts","sourceRoot":"","sources":["../src/stage-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,SAAS,EACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;AAEzF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,QAAQ,CAAC,MAAM,EAAE;QACf,OAAO,CAAC,CAAC,SAAS,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3F,SAAS,CAAC,CAAC,SAAS,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,WAAW,CAAC;KAC7G,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QACvB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;KACnB,CAAC;IACF,gBAAgB,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtE,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,WAAW,CAAC;IACpG,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,gBAAgB,CAAA;KAAE,CAAC;CAC5C;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC"}
1
+ {"version":3,"file":"stage-context.d.ts","sourceRoot":"","sources":["../src/stage-context.js"],"names":[],"mappings":"8BAEc,OAAO,iBAAiB,EAAE,eAAe;wBACzC,OAAO,iBAAiB,EAAE,SAAS;0BACnC,OAAO,aAAa,EAAE,WAAW;2BACjC,OAAO,sBAAsB,EAAE,YAAY;iCAC3C,OAAO,6BAA6B,EAAE,kBAAkB;2BACxD;IAAE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE;+BAC5B,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC;iCACzD;IACb,QAAY,CAAC,GAAG,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,QAAY,CAAC,MAAM,EAAE;QACf,OAAO,CAAC,CAAC,SAAS,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACrH,SAAS,CAAC,CAAC,SAAS,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,WAAW,CAAA;KACtI,CAAC;IACF,gBAAgB,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtE,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,WAAW,CAAC;IAC9H,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3D,QAAY,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,gBAAgB,CAAA;KAAE,CAAA;CAC3C;8BACU;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE;6BACxD,kBAAkB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG;QAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;KAAE,CAAA;CAAE;6BAC/E,kBAAkB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG;QAAE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;QAAC,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;KAAE,CAAA;CAAE;2BAC3J,cAAc,GAAG,cAAc;0BAC/B;IAAE,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,OAAO,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE"}
@@ -0,0 +1,6 @@
1
+ export const SYNC_CURSORS_QUERY: "sync.cursors.v1";
2
+ export type SyncCursorView = {
3
+ readonly domain: string;
4
+ readonly updatedAt: string;
5
+ };
6
+ //# sourceMappingURL=sync-cursors-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-cursors-contract.d.ts","sourceRoot":"","sources":["../src/sync-cursors-contract.js"],"names":[],"mappings":"AACA,iCAAkC,iBAAiB,CAAC;6BACtC;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE"}
@@ -0,0 +1,70 @@
1
+ export type SystemNoticeSeverity = "error" | "info" | "security" | "success" | "warning";
2
+ export type SystemNoticeActionKind = "primary" | "secondary";
3
+ export type SystemNoticeBlockScope = "shell" | "stage";
4
+ export type SystemNoticeState = "busy" | "failed" | "idle" | "resolved";
5
+ export type SystemNotice = SystemNoticeInput;
6
+ export type SystemNoticeListener = (notices: readonly SystemNotice[]) => void;
7
+ export type SystemNoticeAction = {
8
+ /**
9
+ * Stable action identity, rendered as `data-action` on the button.
10
+ * `kind` only says how an action LOOKS ("primary"/"secondary"), so two actions of the same
11
+ * kind on one notice are otherwise distinguishable only by slot position — publishers that
12
+ * need to style or target one specific action set an `id` instead of relying on order.
13
+ */
14
+ id?: string;
15
+ kind: SystemNoticeActionKind;
16
+ label: string;
17
+ onSelect: () => void | Promise<void>;
18
+ };
19
+ export type SystemNoticeDetail = {
20
+ readonly label: string;
21
+ readonly value: string;
22
+ };
23
+ export type SystemNoticeDisclosure = {
24
+ readonly body: string;
25
+ readonly summary: string;
26
+ };
27
+ export type SystemNoticeBody = {
28
+ readonly details?: readonly SystemNoticeDetail[];
29
+ readonly disclosure?: SystemNoticeDisclosure;
30
+ readonly steps?: readonly string[];
31
+ };
32
+ export type SystemNoticeInput = {
33
+ actions?: readonly SystemNoticeAction[];
34
+ blocking?: SystemNoticeBlockScope;
35
+ body?: SystemNoticeBody;
36
+ dismissible: boolean;
37
+ id: string;
38
+ message: string;
39
+ persistent: boolean;
40
+ priority?: number;
41
+ severity: SystemNoticeSeverity;
42
+ source: string;
43
+ state?: SystemNoticeState;
44
+ title: string;
45
+ };
46
+ export type SystemNoticePatch = {
47
+ actions?: readonly SystemNoticeAction[] | undefined;
48
+ blocking?: SystemNoticeBlockScope | undefined;
49
+ body?: SystemNoticeBody | undefined;
50
+ dismissible?: boolean | undefined;
51
+ message?: string | undefined;
52
+ persistent?: boolean | undefined;
53
+ priority?: number | undefined;
54
+ severity?: SystemNoticeSeverity | undefined;
55
+ source?: string | undefined;
56
+ state?: SystemNoticeState | undefined;
57
+ title?: string | undefined;
58
+ };
59
+ export type SystemNoticeHandle = {
60
+ dismiss: () => void;
61
+ update: (patch: SystemNoticePatch) => void;
62
+ };
63
+ export type SystemNoticeCenter = {
64
+ dismiss: (id: string) => void;
65
+ getAll: () => readonly SystemNotice[];
66
+ publish: (input: SystemNoticeInput) => SystemNoticeHandle;
67
+ subscribe: (listener: SystemNoticeListener) => () => void;
68
+ update: (id: string, patch: SystemNoticePatch) => void;
69
+ };
70
+ //# sourceMappingURL=system-notice-contract.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Query names for the kernel's transport state.
3
+ *
4
+ * `v1` is a compatibility shim: it collapses the transitional `connecting` and
5
+ * `reconnecting` states down to plain `offline` so pre-state-machine consumers
6
+ * keep seeing the binary connected/offline world they were written against.
7
+ * `v2` serves the state verbatim. Delete `v1` with its last consumer.
8
+ */
9
+ export const TRANSPORT_STATE_QUERY: "transport.state.v1";
10
+ export const TRANSPORT_STATE_QUERY_V2: "transport.state.v2";
11
+ //# sourceMappingURL=transport-contract.d.ts.map
@@ -0,0 +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,9 +1,9 @@
1
1
  export type RpcTransportState = "closed" | "open";
2
- export interface RpcTransport {
2
+ export type RpcTransport = {
3
3
  close(): void;
4
4
  send(message: string): void;
5
5
  subscribe(listener: (message: string) => void): () => void;
6
6
  subscribeClose(listener: () => void): () => void;
7
7
  readonly state: RpcTransportState;
8
- }
8
+ };
9
9
  //# sourceMappingURL=transport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC3D,cAAc,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;CACnC"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.js"],"names":[],"mappings":"gCAEc,QAAQ,GAAG,MAAM;2BACjB;IAAE,KAAK,IAAI,IAAI,CAAC;IAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @param {unknown} value
3
+ * @returns {value is Record<string, never>}
4
+ */
5
+ export function isTrustInstallRestartPayload(value: unknown): value is Record<string, never>;
6
+ /**
7
+ * @param {unknown} value
8
+ * @returns {value is Record<string, never>}
9
+ */
10
+ export function isTrustVerifyPayload(value: unknown): value is Record<string, never>;
11
+ /**
12
+ * @param {unknown} value
13
+ * @returns {value is Record<string, never>}
14
+ */
15
+ export function isTrustSkipPayload(value: unknown): value is Record<string, never>;
16
+ /** @typedef {import("@econ-v1/domain").CertificateTrustSnapshot} CertificateTrustSnapshot */
17
+ export const TRUST_STATUS_QUERY: "trust.status.v1";
18
+ export const TRUST_INSTALL_RESTART_COMMAND: "trust.install.restart.v1";
19
+ export const TRUST_VERIFY_COMMAND: "trust.verify.v1";
20
+ export const TRUST_SKIP_COMMAND: "trust.skip.v1";
21
+ export type CertificateTrustSnapshot = import("@econ-v1/domain").CertificateTrustSnapshot;
22
+ export type TrustStatusView = CertificateTrustSnapshot;
23
+ //# sourceMappingURL=trust-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-contract.d.ts","sourceRoot":"","sources":["../src/trust-contract.js"],"names":[],"mappings":"AAOA;;;GAGG;AACH,oDAHW,OAAO,GACL,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAI1C;AACD;;;GAGG;AACH,4CAHW,OAAO,GACL,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAI1C;AACD;;;GAGG;AACH,0CAHW,OAAO,GACL,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAI1C;AAzBD,6FAA6F;AAC7F,iCAAkC,iBAAiB,CAAC;AACpD,4CAA6C,0BAA0B,CAAC;AACxE,mCAAoC,iBAAiB,CAAC;AACtD,iCAAkC,eAAe,CAAC;uCAJpC,OAAO,iBAAiB,EAAE,wBAAwB;8BAiClD,wBAAwB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@econ-v1/rpc",
3
- "version": "6.6.0",
3
+ "version": "6.10.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",
@@ -21,28 +21,32 @@
21
21
  "typescript"
22
22
  ],
23
23
  "type": "module",
24
- "main": "./dist/index.js",
24
+ "main": "./src/index.js",
25
25
  "types": "./dist/index.d.ts",
26
26
  "scripts": {
27
- "build": "rm -rf dist && tsc -b --pretty false",
27
+ "build": "rm -rf dist && tsc -p tsconfig.publish.json --pretty false",
28
+ "check": "tsc -p jsconfig.json --pretty false",
28
29
  "lint": "eslint src",
29
- "prepack": "npm run build",
30
+ "prepack": "npm run build && node ../scripts/check-public-package.mjs .",
30
31
  "test": "vitest run --passWithNoTests",
31
- "type-check": "tsc -b --pretty false"
32
+ "check:consumer": "node ../scripts/check-negative-type-contracts.mjs --config jsconfig.consumer.json",
33
+ "type-check": "yarn run check && yarn check:consumer"
34
+ },
35
+ "devDependencies": {
36
+ "typescript": "~5.8.3"
32
37
  },
33
38
  "exports": {
34
39
  ".": {
35
40
  "types": "./dist/index.d.ts",
36
- "import": "./dist/index.js",
37
- "default": "./dist/index.js"
41
+ "import": "./src/index.js",
42
+ "default": "./src/index.js"
38
43
  }
39
44
  },
40
45
  "files": [
46
+ "src/**/*.js",
41
47
  "dist/**/*.d.ts",
42
48
  "dist/**/*.d.ts.map",
43
- "dist/**/*.js",
44
- "dist/**/*.js.map",
45
- "!dist/**/*.test.*"
49
+ "!src/**/*.test.js"
46
50
  ],
47
51
  "sideEffects": false,
48
52
  "engines": {
@@ -52,7 +56,7 @@
52
56
  "access": "public"
53
57
  },
54
58
  "dependencies": {
55
- "@econ-v1/domain": "6.6.0",
56
- "@econ-v1/ports": "6.6.0"
59
+ "@econ-v1/domain": "6.10.0",
60
+ "@econ-v1/ports": "6.10.0"
57
61
  }
58
62
  }
@@ -0,0 +1,6 @@
1
+ // @ts-check
2
+ export const CLIENT_DEVICE_PENDING_QUERY = "client-device.pending.v2";
3
+ /**
4
+ * One row per live pending pairing request, keyed by operationHash.
5
+ * @typedef {{ readonly id: string, readonly operationHash: string, readonly action: string, readonly deviceName: string, readonly requestedAt: string, readonly remainingSeconds: number, readonly targetDevice: string }} ClientDevicePendingRow
6
+ */
package/src/client.js ADDED
@@ -0,0 +1,26 @@
1
+ // @ts-check
2
+
3
+ /** @typedef {import("@econ-v1/domain").DomainEvent} DomainEvent */
4
+ /** @typedef {import("@econ-v1/domain").KernelEventType} KernelEventType */
5
+ /** @typedef {import("@econ-v1/domain").QueryName} QueryName */
6
+ /** @typedef {() => void} Unsubscribe */
7
+ /** @typedef {{ readonly appName: string, readonly entryUrl: string, readonly manifestSha256: string, readonly version: string }} PreparedStage */
8
+ /** @typedef {{
9
+ * command<T>(name: string, payload: unknown): Promise<T>,
10
+ * liveQuery<T>(name: QueryName, params: unknown, listener: (diff: import("@econ-v1/domain").QueryDiff<T>) => void): Unsubscribe,
11
+ * openStageSession(appName: string, manifestSha256: string): Promise<StageRpcSession>,
12
+ * prepareStage(appName: string): Promise<PreparedStage>,
13
+ * publish<T extends KernelEventType>(type: T, payload: import("@econ-v1/domain").KernelEventPayload<T>): Promise<void>,
14
+ * query<T>(name: QueryName, params: unknown): Promise<T>,
15
+ * subscribe<T extends KernelEventType>(type: T, listener: (event: import("@econ-v1/domain").KernelEventByType<T>) => void): Unsubscribe
16
+ * }} KernelRpcClient */
17
+ /** @typedef {{
18
+ * close(): void,
19
+ * invokeCapability<T>(capability: string, payload: unknown): Promise<T>,
20
+ * liveQuery<T>(name: QueryName, params: unknown, listener: (diff: import("@econ-v1/domain").QueryDiff<T>) => void): Unsubscribe,
21
+ * publish<T extends KernelEventType>(type: T, payload: import("@econ-v1/domain").KernelEventPayload<T>): Promise<void>,
22
+ * query<T>(name: QueryName, params: unknown): Promise<T>,
23
+ * subscribe<T extends KernelEventType>(type: T, listener: (event: import("@econ-v1/domain").KernelEventByType<T>) => void): Unsubscribe
24
+ * }} StageRpcSession */
25
+
26
+ export {};
@@ -0,0 +1,4 @@
1
+ // @ts-check
2
+ /** @typedef {{ readonly id: "boot-state"; readonly kind: "unpaired" | "paired" | "paired-expired" | "revoked"; readonly delegationExpiresAt?: string; }} DeviceBootStateRow */
3
+ export {};
4
+ export const DEVICE_BOOT_STATE_QUERY = /** @type {const} */ ("device.boot-state.v1");
@@ -0,0 +1,9 @@
1
+ // @ts-check
2
+ export const DEVICE_CLEANUP_REQUEST_COMMAND = "client-device.cleanup-request.v1";
3
+ export const DEVICE_CLEANUP_STATUS_COMMAND = "client-device.cleanup-status.v1";
4
+ export const DEVICE_CLEANUP_CANCEL_COMMAND = "client-device.cleanup-cancel.v1";
5
+ export const DEVICE_CLEANUP_QUERY = "client-device.cleanup.v1";
6
+ /** @typedef {"pending" | "approved" | "declined" | "expired" | "no_candidate" | "not_needed" | "failed"} CleanupState */
7
+ /** @typedef {{ readonly sessionId: string, readonly state: CleanupState }} DeviceCleanupRequestResult */
8
+ /** @typedef {{ readonly state: CleanupState }} DeviceCleanupStatusResult */
9
+ /** @typedef {{ readonly id: "device-cleanup", readonly state: CleanupState }} DeviceCleanupRow */
@@ -0,0 +1,6 @@
1
+ // @ts-check
2
+ /** @typedef {{ readonly cancel?: boolean, readonly href?: string, readonly id: string, readonly label: string, readonly onSelect?: (handle: DialogHandle) => void | Promise<void>, readonly variant?: "neutral" | "primary" }} DialogAction */
3
+ /** @typedef {{ readonly body: readonly string[], readonly emphasis?: string, readonly initialFocus?: string, readonly actions: readonly DialogAction[], readonly title: string }} DialogRequest */
4
+ /** @typedef {{ readonly closed: Promise<string | undefined>, close(): void, setActionBusy(id: string, busy: boolean): void, setError(message: string | undefined): void, update(patch: Partial<DialogRequest>): void }} DialogHandle */
5
+ /** @typedef {{ open(request: DialogRequest): DialogHandle }} DialogCenter */
6
+ export {};
package/src/errors.js ADDED
@@ -0,0 +1,111 @@
1
+ // @ts-check
2
+ import {
3
+ DOMAIN_ERROR_CODES,
4
+ DomainError,
5
+ SYNC_ERROR_CODES,
6
+ SyncError,
7
+ TRANSPORT_ERROR_CODES,
8
+ TransportError,
9
+ } from "@econ-v1/domain";
10
+
11
+ /** @typedef {import("@econ-v1/domain").ClientError} ClientError */
12
+ /** @typedef {import("@econ-v1/domain").JsonObject} JsonObject */
13
+ /** @typedef {import("@econ-v1/domain").JsonValue} JsonValue */
14
+ /** @typedef {import("@econ-v1/domain").SerializableClientError} SerializableClientError */
15
+
16
+ /**
17
+ * @param {ClientError} error
18
+ * @returns {SerializableClientError}
19
+ */
20
+ export function serializeClientError(error) {
21
+ return error.toJSON();
22
+ }
23
+
24
+ /**
25
+ * @param {unknown} value
26
+ * @returns {ClientError}
27
+ */
28
+ export function deserializeClientError(value) {
29
+ if (!isSerializableClientError(value)) throw new TypeError("Invalid RPC error");
30
+
31
+ switch (value.kind) {
32
+ case "domain":
33
+ return new DomainError(errorOptions(value));
34
+ case "sync":
35
+ return new SyncError(errorOptions(value));
36
+ case "transport":
37
+ return new TransportError(errorOptions(value));
38
+ }
39
+ }
40
+
41
+ /**
42
+ * @param {unknown} value
43
+ * @returns {value is SerializableClientError}
44
+ */
45
+ export function isSerializableClientError(value) {
46
+ if (!isJsonObject(value) || typeof value.code !== "string" || typeof value.kind !== "string" || typeof value.message !== "string") {
47
+ return false;
48
+ }
49
+
50
+ if (value.details !== undefined && !isJsonObject(value.details)) return false;
51
+
52
+ switch (value.kind) {
53
+ case "domain":
54
+ return includesCode(DOMAIN_ERROR_CODES, value.code);
55
+ case "sync":
56
+ return includesCode(SYNC_ERROR_CODES, value.code);
57
+ case "transport":
58
+ return includesCode(TRANSPORT_ERROR_CODES, value.code);
59
+ default:
60
+ return false;
61
+ }
62
+ }
63
+
64
+ /**
65
+ * @param {unknown} value
66
+ * @returns {value is JsonValue}
67
+ */
68
+ export function isJsonValue(value) {
69
+ if (value === null || typeof value === "boolean" || typeof value === "string") return true;
70
+ if (typeof value === "number") return Number.isFinite(value);
71
+ if (Array.isArray(value)) return value.every(isJsonValue);
72
+ return isJsonObject(value);
73
+ }
74
+
75
+ /**
76
+ * @param {unknown} value
77
+ * @returns {value is JsonObject}
78
+ */
79
+ export function isJsonObject(value) {
80
+ return isPlainObject(value) && Object.values(value).every(isJsonValue);
81
+ }
82
+
83
+ /**
84
+ * @template {string} TKind
85
+ * @template {string} TCode
86
+ * @param {import("@econ-v1/domain").SerializableError<TKind, TCode>} value
87
+ * @returns {import("@econ-v1/domain").ErrorOptions<TCode>}
88
+ */
89
+ function errorOptions(value) {
90
+ return value.details === undefined
91
+ ? { code: value.code, message: value.message }
92
+ : { code: value.code, details: value.details, message: value.message };
93
+ }
94
+
95
+ /**
96
+ * @template {readonly string[]} TCodes
97
+ * @param {TCodes} codes
98
+ * @param {string} value
99
+ * @returns {value is TCodes[number]}
100
+ */
101
+ function includesCode(codes, value) {
102
+ return /** @type {readonly string[]} */ (codes).includes(value);
103
+ }
104
+
105
+ /**
106
+ * @param {unknown} value
107
+ * @returns {value is Record<string, unknown>}
108
+ */
109
+ function isPlainObject(value) {
110
+ return typeof value === "object" && value !== null && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype;
111
+ }
package/src/index.js ADDED
@@ -0,0 +1,194 @@
1
+ // @ts-check
2
+
3
+ /** @typedef {import("./client.js").KernelRpcClient} KernelRpcClient */
4
+ /** @typedef {import("./client.js").PreparedStage} PreparedStage */
5
+ /** @typedef {import("./client.js").StageRpcSession} StageRpcSession */
6
+ /** @typedef {import("./client.js").Unsubscribe} Unsubscribe */
7
+ /** @typedef {import("@econ-v1/domain").ClientError} ClientError */
8
+ /** @typedef {import("@econ-v1/domain").DomainEvent} DomainEvent */
9
+ /** @typedef {import("@econ-v1/domain").DomainErrorCode} DomainErrorCode */
10
+ /** @template {KernelEventType} T @typedef {import("@econ-v1/domain").KernelEventByType<T>} KernelEventByType */
11
+ /** @template {KernelEventType} T @typedef {import("@econ-v1/domain").KernelEventPayload<T>} KernelEventPayload */
12
+ /** @typedef {import("@econ-v1/domain").KernelEventType} KernelEventType */
13
+ /** @typedef {import("@econ-v1/domain").OutboxIntent} OutboxIntent */
14
+ /** @template T @typedef {import("@econ-v1/domain").QueryDiff<T>} QueryDiff */
15
+ /** @typedef {import("@econ-v1/domain").QueryName} QueryName */
16
+ /** @typedef {import("@econ-v1/domain").SerializableClientError} SerializableClientError */
17
+ /** @typedef {import("@econ-v1/domain").SyncErrorCode} SyncErrorCode */
18
+ /** @typedef {import("@econ-v1/domain").TransportState} TransportState */
19
+ /** @typedef {import("@econ-v1/domain").TransportOfflineReason} TransportOfflineReason */
20
+ /** @typedef {import("@econ-v1/domain").TransportErrorCode} TransportErrorCode */
21
+ /** @typedef {import("@econ-v1/ports").EncryptedStorageDiagnostic} EncryptedStorageDiagnostic */
22
+ /** @typedef {import("@econ-v1/ports").AppDataManifest} AppDataManifest */
23
+ /** @typedef {import("@econ-v1/ports").AppDataOfflinePolicy} AppDataOfflinePolicy */
24
+ /** @typedef {import("@econ-v1/ports").AppDataQueryDeclaration} AppDataQueryDeclaration */
25
+ /** @typedef {import("@econ-v1/ports").AppDataQueryKind} AppDataQueryKind */
26
+ /** @typedef {import("@econ-v1/ports").AppDataStreamDeclaration} AppDataStreamDeclaration */
27
+ /** @typedef {import("@econ-v1/ports").AppDataStreamKind} AppDataStreamKind */
28
+ /** @typedef {import("@econ-v1/ports").AppDataSyncKind} AppDataSyncKind */
29
+ /** @typedef {import("@econ-v1/ports").AppDataSyncPolicy} AppDataSyncPolicy */
30
+ /** @typedef {import("@econ-v1/ports").ClientUiChoice} ClientUiChoice */
31
+ /** @typedef {import("@econ-v1/ports").ClientUiPreferencePort} ClientUiPreferencePort */
32
+ /** @typedef {import("@econ-v1/ports").ClipboardPort} ClipboardPort */
33
+ /** @typedef {import("@econ-v1/ports").CredentialHandoffCancellationReason} CredentialHandoffCancellationReason */
34
+ /** @typedef {import("@econ-v1/ports").CredentialHandoffConnection} CredentialHandoffConnection */
35
+ /** @typedef {import("@econ-v1/ports").CredentialHandoffMessage} CredentialHandoffMessage */
36
+ /** @typedef {import("@econ-v1/ports").CredentialHandoffOpenResult} CredentialHandoffOpenResult */
37
+ /** @typedef {import("@econ-v1/ports").CredentialHandoffPort} CredentialHandoffPort */
38
+ /** @typedef {import("@econ-v1/ports").LegacyCredentialProbePort} LegacyCredentialProbePort */
39
+ /** @typedef {import("@econ-v1/ports").LegacyCredentialStatus} LegacyCredentialStatus */
40
+ /** @typedef {import("@econ-v1/ports").NodeAppMemoryApp} NodeAppMemoryApp */
41
+ /** @typedef {import("@econ-v1/ports").NodeAppMemoryReading} NodeAppMemoryReading */
42
+ /** @typedef {import("@econ-v1/ports").NodeAppBudgetVerdict} NodeAppBudgetVerdict */
43
+ /** @typedef {import("@econ-v1/ports").NodeAppDeviceMemory} NodeAppDeviceMemory */
44
+ /** @typedef {import("@econ-v1/ports").NodeAppGovernorRow} NodeAppGovernorRow */
45
+ /** @typedef {import("@econ-v1/ports").NodeAppHeapSnapshot} NodeAppHeapSnapshot */
46
+ /** @typedef {import("@econ-v1/ports").NodeAppLaneKind} NodeAppLaneKind */
47
+ /** @typedef {import("@econ-v1/ports").NodeAppMemoryOverview} NodeAppMemoryOverview */
48
+ /** @typedef {import("@econ-v1/ports").NodeAppMemoryOverviewApp} NodeAppMemoryOverviewApp */
49
+ /** @typedef {import("@econ-v1/ports").ShellCacheResetPort} ShellCacheResetPort */
50
+ /** @typedef {import("@econ-v1/ports").ShellVersionPort} ShellVersionPort */
51
+ /** @typedef {import("@econ-v1/ports").ShellVersionReport} ShellVersionReport */
52
+ /** @typedef {import("@econ-v1/ports").InstallEnvironmentPort} InstallEnvironmentPort */
53
+ /** @typedef {import("@econ-v1/ports").InstallInstructionMode} InstallInstructionMode */
54
+ /** @typedef {import("@econ-v1/ports").MediaPreferencesPort} MediaPreferencesPort */
55
+ /** @typedef {import("@econ-v1/ports").StageCatalogEntry} StageCatalogEntry */
56
+ /** @typedef {import("@econ-v1/ports").StorageRecoveryCode} StorageRecoveryCode */
57
+ /** @typedef {import("@econ-v1/ports").StorageRecoveryState} StorageRecoveryState */
58
+ /** @typedef {import("@econ-v1/ports").ThemeEnvironmentPort} ThemeEnvironmentPort */
59
+ /** @typedef {import("@econ-v1/ports").ThemePreference} ThemePreference */
60
+ /** @typedef {import("./message-port-client.js").MessagePortKernelRpcClientOptions} MessagePortKernelRpcClientOptions */
61
+ /** @typedef {import("./onboarding/discovery-contract.js").DiscoveryCandidateStatus} DiscoveryCandidateStatus */
62
+ /** @typedef {import("./onboarding/discovery-contract.js").DiscoveryCandidateView} DiscoveryCandidateView */
63
+ /** @typedef {import("./onboarding/discovery-contract.js").DiscoveryFoundNode} DiscoveryFoundNode */
64
+ /** @typedef {import("./onboarding/discovery-contract.js").DiscoverNodePayload} DiscoverNodePayload */
65
+ /** @typedef {import("./onboarding/discovery-contract.js").NodeDiscoveryCandidate} NodeDiscoveryCandidate */
66
+ /** @typedef {import("./onboarding/discovery-contract.js").NodeDiscoveryResult} NodeDiscoveryResult */
67
+ /** @typedef {import("./onboarding/discovery-contract.js").ProbeCandidatesPayload} ProbeCandidatesPayload */
68
+ /** @typedef {import("./onboarding/discovery-contract.js").PromoteCandidatePayload} PromoteCandidatePayload */
69
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingApprovalState} OnboardingApprovalState */
70
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingCommand} OnboardingCommand */
71
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingDiscoveryCandidate} OnboardingDiscoveryCandidate */
72
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingEvent} OnboardingEvent */
73
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingLifecycleState} OnboardingLifecycleState */
74
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingLifecycleStatus} OnboardingLifecycleStatus */
75
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingPhase} OnboardingPhase */
76
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingScenario} OnboardingScenario */
77
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingScreen} OnboardingScreen */
78
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingView} OnboardingView */
79
+ /** @typedef {import("./node-app-memory-contract.js").NodeAppMemoryDetailQueryParams} NodeAppMemoryDetailQueryParams */
80
+ /** @typedef {import("./dialog-contract.js").DialogAction} DialogAction */
81
+ /** @typedef {import("./dialog-contract.js").DialogCenter} DialogCenter */
82
+ /** @typedef {import("./dialog-contract.js").DialogHandle} DialogHandle */
83
+ /** @typedef {import("./dialog-contract.js").DialogRequest} DialogRequest */
84
+ /** @typedef {import("./client-device-pending-contract.js").ClientDevicePendingRow} ClientDevicePendingRow */
85
+ /** @typedef {import("./pairing-status-contract.js").ClientDevicePairingStatusRow} ClientDevicePairingStatusRow */
86
+ /** @typedef {import("./device-boot-contract.js").DeviceBootStateRow} DeviceBootStateRow */
87
+ /** @typedef {import("./device-cleanup-contract.js").CleanupState} CleanupState */
88
+ /** @typedef {import("./device-cleanup-contract.js").DeviceCleanupRequestResult} DeviceCleanupRequestResult */
89
+ /** @typedef {import("./device-cleanup-contract.js").DeviceCleanupRow} DeviceCleanupRow */
90
+ /** @typedef {import("./device-cleanup-contract.js").DeviceCleanupStatusResult} DeviceCleanupStatusResult */
91
+ /** @typedef {import("./sync-cursors-contract.js").SyncCursorView} SyncCursorView */
92
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingFlowBase} OnboardingFlowBase */
93
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingFlowView} OnboardingFlowView */
94
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingLcdScreenBase} OnboardingLcdScreenBase */
95
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingLcdScreenId} OnboardingLcdScreenId */
96
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingLcdScreenState} OnboardingLcdScreenState */
97
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingLcdScreenTree} OnboardingLcdScreenTree */
98
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingLcdScreenView} OnboardingLcdScreenView */
99
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingLcdUnavailableReason} OnboardingLcdUnavailableReason */
100
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingNetwork} OnboardingNetwork */
101
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingReasonCode} OnboardingReasonCode */
102
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingStepId} OnboardingStepId */
103
+ /** @typedef {import("./onboarding/onboarding-contract.js").OnboardingWifiSecurity} OnboardingWifiSecurity */
104
+ /** @typedef {import("./onboarding/owner-claim-contract.js").OwnerClaimCompleteOutcome} OwnerClaimCompleteOutcome */
105
+ /** @typedef {import("./onboarding/owner-claim-contract.js").OwnerClaimCompletePayload} OwnerClaimCompletePayload */
106
+ /** @typedef {import("./onboarding/owner-claim-contract.js").OwnerClaimCompleteResult} OwnerClaimCompleteResult */
107
+ /** @typedef {import("./onboarding/owner-claim-contract.js").OwnerClaimPrepareResult} OwnerClaimPrepareResult */
108
+ /** @typedef {import("./trust-contract.js").TrustStatusView} TrustStatusView */
109
+ /** @typedef {import("./stage-context.js").StageContextV1} StageContextV1 */
110
+ /** @typedef {import("./stage-context.js").StageContextV2} StageContextV2 */
111
+ /** @typedef {import("./system-notice-contract.js").SystemNotice} SystemNotice */
112
+ /** @typedef {import("./system-notice-contract.js").SystemNoticeAction} SystemNoticeAction */
113
+ /** @typedef {import("./system-notice-contract.js").SystemNoticeActionKind} SystemNoticeActionKind */
114
+ /** @typedef {import("./system-notice-contract.js").SystemNoticeBlockScope} SystemNoticeBlockScope */
115
+ /** @typedef {import("./system-notice-contract.js").SystemNoticeBody} SystemNoticeBody */
116
+ /** @typedef {import("./system-notice-contract.js").SystemNoticeCenter} SystemNoticeCenter */
117
+ /** @typedef {import("./system-notice-contract.js").SystemNoticeDetail} SystemNoticeDetail */
118
+ /** @typedef {import("./system-notice-contract.js").SystemNoticeDisclosure} SystemNoticeDisclosure */
119
+ /** @typedef {import("./system-notice-contract.js").SystemNoticeHandle} SystemNoticeHandle */
120
+ /** @typedef {import("./system-notice-contract.js").SystemNoticeInput} SystemNoticeInput */
121
+ /** @typedef {import("./system-notice-contract.js").SystemNoticeListener} SystemNoticeListener */
122
+ /** @typedef {import("./system-notice-contract.js").SystemNoticePatch} SystemNoticePatch */
123
+ /** @typedef {import("./system-notice-contract.js").SystemNoticeSeverity} SystemNoticeSeverity */
124
+ /** @typedef {import("./system-notice-contract.js").SystemNoticeState} SystemNoticeState */
125
+ /** @typedef {import("./protocol.js").RpcEvent} RpcEvent */
126
+ /** @typedef {import("./protocol.js").RpcRequest} RpcRequest */
127
+ /** @typedef {import("./protocol.js").RpcResponse} RpcResponse */
128
+ /** @typedef {import("./stage-context.js").MountedStage} MountedStage */
129
+ /** @typedef {import("./stage-context.js").StageContext} StageContext */
130
+ /** @typedef {import("./stage-context.js").StageModule} StageModule */
131
+ /** @typedef {import("./transport.js").RpcTransport} RpcTransport */
132
+ /** @typedef {import("./transport.js").RpcTransportState} RpcTransportState */
133
+
134
+ export {
135
+ DOMAIN_ERROR_CODES,
136
+ DomainError,
137
+ SYNC_ERROR_CODES,
138
+ SyncError,
139
+ TRANSPORT_ERROR_CODES,
140
+ TransportError,
141
+ } from "@econ-v1/domain";
142
+ export {
143
+ deserializeClientError,
144
+ isJsonValue,
145
+ isSerializableClientError,
146
+ serializeClientError,
147
+ } from "./errors.js";
148
+ export { KernelRpcTimeoutError, MessagePortKernelRpcClient } from "./message-port-client.js";
149
+ 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";
150
+ export { DEVICE_BOOT_STATE_QUERY } from "./device-boot-contract.js";
151
+ export { CLIENT_DEVICE_PENDING_QUERY } from "./client-device-pending-contract.js";
152
+ export {
153
+ CLIENT_DEVICE_PAIRING_STATUS_QUERY,
154
+ CLIENT_DEVICE_WIRE_ERROR_DEVICE_NOT_REGISTERED,
155
+ CLIENT_DEVICE_WIRE_ERROR_LAST_DEVICE,
156
+ CLIENT_DEVICE_WIRE_ERROR_LAST_DEVICE_PROTECTED,
157
+ CLIENT_DEVICE_WIRE_ERROR_NAME_TAKEN,
158
+ } from "./pairing-status-contract.js";
159
+ export {
160
+ DEVICE_CLEANUP_CANCEL_COMMAND,
161
+ DEVICE_CLEANUP_QUERY,
162
+ DEVICE_CLEANUP_REQUEST_COMMAND,
163
+ DEVICE_CLEANUP_STATUS_COMMAND,
164
+ } from "./device-cleanup-contract.js";
165
+ export { SYNC_CURSORS_QUERY } from "./sync-cursors-contract.js";
166
+ export { TRANSPORT_STATE_QUERY, TRANSPORT_STATE_QUERY_V2 } from "./transport-contract.js";
167
+ export {
168
+ DISCOVER_NODE_COMMAND,
169
+ DISCOVERY_PROBE_COMMAND,
170
+ DISCOVERY_PROMOTE_COMMAND,
171
+ DISCOVERY_QUERY,
172
+ isDiscoverNodePayload,
173
+ isProbeCandidatesPayload,
174
+ isPromoteCandidatePayload,
175
+ } from "./onboarding/discovery-contract.js";
176
+ export {
177
+ isOnboardingCommand,
178
+ ONBOARDING_COMMAND,
179
+ ONBOARDING_EVENTS,
180
+ ONBOARDING_FLOW_QUERY,
181
+ ONBOARDING_LCD_SCREEN_QUERY,
182
+ ONBOARDING_STATUS_QUERY,
183
+ ONBOARDING_STEP_IDS,
184
+ } from "./onboarding/onboarding-contract.js";
185
+ export { TRUST_INSTALL_RESTART_COMMAND, TRUST_SKIP_COMMAND, TRUST_STATUS_QUERY, TRUST_VERIFY_COMMAND, isTrustInstallRestartPayload, isTrustSkipPayload, isTrustVerifyPayload } from "./trust-contract.js";
186
+ export { isOwnerClaimCompletePayload, OWNER_CLAIM_COMPLETE_COMMAND, OWNER_CLAIM_PREPARE_COMMAND } from "./onboarding/owner-claim-contract.js";
187
+ export {
188
+ deserializeRpcEvent,
189
+ deserializeRpcRequest,
190
+ deserializeRpcResponse,
191
+ serializeRpcEvent,
192
+ serializeRpcRequest,
193
+ serializeRpcResponse,
194
+ } from "./protocol.js";