@econ-v1/domain 7.0.0 → 7.0.1

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.
@@ -25,8 +25,8 @@
25
25
  /**
26
26
  * @typedef {| SerializableError<"domain", DomainErrorCode> | SerializableError<"sync", SyncErrorCode> | SerializableError<"transport", TransportErrorCode>} SerializableClientError
27
27
  */
28
- /** @type {readonly ["access-code-invalid", "capability_not_declared", "code-already-bound", "conflict", "invalid_request", "not_found", "stage_composition_not_enabled", "unauthorized", "unsupported_query", "validation_failed"]} */
29
- export const DOMAIN_ERROR_CODES: readonly ["access-code-invalid", "capability_not_declared", "code-already-bound", "conflict", "invalid_request", "not_found", "stage_composition_not_enabled", "unauthorized", "unsupported_query", "validation_failed"];
28
+ /** @type {readonly ["access-code-invalid", "capability_not_declared", "capability_unavailable", "code-already-bound", "conflict", "invalid_request", "not_found", "stage_composition_not_enabled", "unauthorized", "unsupported_query", "validation_failed"]} */
29
+ export const DOMAIN_ERROR_CODES: readonly ["access-code-invalid", "capability_not_declared", "capability_unavailable", "code-already-bound", "conflict", "invalid_request", "not_found", "stage_composition_not_enabled", "unauthorized", "unsupported_query", "validation_failed"];
30
30
  /** @type {readonly ["outbox_delivery_failed", "sync_conflict", "sync_terminal_failure"]} */
31
31
  export const SYNC_ERROR_CODES: readonly ["outbox_delivery_failed", "sync_conflict", "sync_terminal_failure"];
32
32
  /** @type {readonly ["connection_lost", "offline", "unavailable"]} */
@@ -34,7 +34,7 @@ export const TRANSPORT_ERROR_CODES: readonly ["connection_lost", "offline", "una
34
34
  /**
35
35
  * @extends {SerializableClientErrorBase<"domain", DomainErrorCode>}
36
36
  */
37
- export class DomainError extends SerializableClientErrorBase<"domain", "conflict" | "access-code-invalid" | "capability_not_declared" | "code-already-bound" | "invalid_request" | "not_found" | "stage_composition_not_enabled" | "unauthorized" | "unsupported_query" | "validation_failed"> {
37
+ export class DomainError extends SerializableClientErrorBase<"domain", "conflict" | "access-code-invalid" | "capability_not_declared" | "capability_unavailable" | "code-already-bound" | "invalid_request" | "not_found" | "stage_composition_not_enabled" | "unauthorized" | "unsupported_query" | "validation_failed"> {
38
38
  /**
39
39
  * @param {ErrorOptions<DomainErrorCode>} options
40
40
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.js"],"names":[],"mappings":"AAEA;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;;;GAGG;AACH;;;;GAIG;AACH;;GAEG;AACH;;GAEG;AACH,uOAAuO;AACvO,iCADW,SAAS,CAAC,qBAAqB,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,+BAA+B,EAAE,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CAiBjO;AACF,4FAA4F;AAC5F,+BADW,SAAS,CAAC,wBAAwB,EAAE,eAAe,EAAE,uBAAuB,CAAC,CACa;AACrG,qEAAqE;AACrE,oCADW,SAAS,CAAC,iBAAiB,EAAE,SAAS,EAAE,aAAa,CAAC,CACkB;AA2CnF;;GAEG;AACH;IACI;;KAEC;IACD,qBAFS,YAAY,CAAC,eAAe,CAAC,EAIrC;CACJ;AACD;;GAEG;AACH;IACI;;KAEC;IACD,qBAFS,YAAY,CAAC,aAAa,CAAC,EAInC;CACJ;AACD;;GAEG;AACH;IACI;;KAEC;IACD,qBAFS,YAAY,CAAC,kBAAkB,CAAC,EAIxC;CACJ;yBA1HY,OAAO,oBAAoB,EAAE,UAAU;8BAGvC,CAAC,OAAO,kBAAkB,EAAE,MAAM,CAAC;4BAGnC,CAAC,OAAO,gBAAgB,EAAE,MAAM,CAAC;iCAGjC,CAAC,OAAO,qBAAqB,EAAE,MAAM,CAAC;yBAG7B,KAAK,SAAd,MAAQ,IACR;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAAE;8BAGzE,KAAK,SAAd,MAAQ,EACC,KAAK,SAAd,MAAQ,IACR;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAAE;0BAGxG,WAAW,GAAG,SAAS,GAAG,cAAc;sCAGtC,iBAAiB,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,iBAAiB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAwB3J;;;;;GAKG;AACH,0CAJsB,KAAK,SAAd,MAAQ,EACC,KAAK,SAAd,MAAQ;IAmBjB;;;;KAIC;IACD,wBAKC;IAzBD;;;KAGC;IACD,eAFQ,KAAK,CAER;IACL;;;KAGC;IACD,eAFQ,KAAK,CAER;IACL;;;KAGC;IACD,kBAFQ,UAAU,GAAG,SAAS,CAEtB;IAYR;;KAEC;IACD,UAFW,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAMzC;CACJ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.js"],"names":[],"mappings":"AAEA;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;;;GAGG;AACH;;;;GAIG;AACH;;GAEG;AACH;;GAEG;AACH,iQAAiQ;AACjQ,iCADW,SAAS,CAAC,qBAAqB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,+BAA+B,EAAE,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CA4B3P;AACF,4FAA4F;AAC5F,+BADW,SAAS,CAAC,wBAAwB,EAAE,eAAe,EAAE,uBAAuB,CAAC,CACa;AACrG,qEAAqE;AACrE,oCADW,SAAS,CAAC,iBAAiB,EAAE,SAAS,EAAE,aAAa,CAAC,CACkB;AA2CnF;;GAEG;AACH;IACI;;KAEC;IACD,qBAFS,YAAY,CAAC,eAAe,CAAC,EAIrC;CACJ;AACD;;GAEG;AACH;IACI;;KAEC;IACD,qBAFS,YAAY,CAAC,aAAa,CAAC,EAInC;CACJ;AACD;;GAEG;AACH;IACI;;KAEC;IACD,qBAFS,YAAY,CAAC,kBAAkB,CAAC,EAIxC;CACJ;yBArIY,OAAO,oBAAoB,EAAE,UAAU;8BAGvC,CAAC,OAAO,kBAAkB,EAAE,MAAM,CAAC;4BAGnC,CAAC,OAAO,gBAAgB,EAAE,MAAM,CAAC;iCAGjC,CAAC,OAAO,qBAAqB,EAAE,MAAM,CAAC;yBAG7B,KAAK,SAAd,MAAQ,IACR;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAAE;8BAGzE,KAAK,SAAd,MAAQ,EACC,KAAK,SAAd,MAAQ,IACR;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAAE;0BAGxG,WAAW,GAAG,SAAS,GAAG,cAAc;sCAGtC,iBAAiB,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,iBAAiB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAmC3J;;;;;GAKG;AACH,0CAJsB,KAAK,SAAd,MAAQ,EACC,KAAK,SAAd,MAAQ;IAmBjB;;;;KAIC;IACD,wBAKC;IAzBD;;;KAGC;IACD,eAFQ,KAAK,CAER;IACL;;;KAGC;IACD,eAFQ,KAAK,CAER;IACL;;;KAGC;IACD,kBAFQ,UAAU,GAAG,SAAS,CAEtB;IAYR;;KAEC;IACD,UAFW,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAMzC;CACJ"}
@@ -1,6 +1,6 @@
1
1
  /** @typedef {(typeof KERNEL_EVENT_TYPES)[number]} CoreKernelEventType */
2
2
  /** @typedef {AppEventType | CoreKernelEventType} KernelEventType */
3
- /** @typedef {{ readonly "client-storage.state-changed": { readonly code?: string, readonly message?: string, readonly status: "ready" | "recovery-required" | "starting" }, readonly "offline.stage-readiness-changed": { readonly readiness: OfflineStageReadiness }, readonly "offline.identity-invalidated": { readonly scope: OfflineIdentityScope }, readonly "app.data.changed": { readonly appName: string, readonly cursor: string, readonly revision: string, readonly stream: string }, readonly "app.data.committed": { readonly appName: string, readonly cursor: string, readonly revision: string, readonly stream: string }, readonly "device-cleanup.changed": { readonly state?: string }, readonly "domain.entity-changed": { readonly action: "created" | "deleted" | "updated", readonly entityId: string, readonly entityType: string }, readonly "onboarding.flow-changed": { readonly stepId: string }, readonly "outbox.state-changed": { readonly intent: OutboxIntent }, readonly "room.job-stream": RoomJobStreamPayload, readonly "room.turn-stream": RoomTurnStreamPayload, readonly "stage.catalog-invalidated": { readonly reason: string }, readonly "query.invalidated": { readonly name: QueryName }, readonly "stage.registry-changed": { readonly appNames: readonly string[] }, readonly "sync.delta-applied": { readonly domain: string, readonly cursor: string }, readonly "transport.state-changed": { readonly state: TransportState }, readonly "connectivity.changed": { readonly reachability: "online" | "unreachable" | "session-required" | "unknown" } }} KernelEventPayloads */
3
+ /** @typedef {{ readonly "client-storage.state-changed": { readonly code?: string, readonly message?: string, readonly status: "ready" | "recovery-required" | "starting" }, readonly "offline.stage-readiness-changed": { readonly readiness: OfflineStageReadiness }, readonly "offline.identity-invalidated": { readonly scope: OfflineIdentityScope }, readonly "app.data.changed": { readonly appName: string, readonly cursor: string, readonly revision: string, readonly stream: string }, readonly "app.data.committed": { readonly appName: string, readonly cursor: string, readonly revision: string, readonly stream: string }, readonly "device-cleanup.changed": { readonly state?: string }, readonly "domain.entity-changed": { readonly action: "created" | "deleted" | "updated", readonly entityId: string, readonly entityType: string }, readonly "onboarding.flow-changed": { readonly stepId: string }, readonly "outbox.state-changed": { readonly intent: OutboxIntent }, readonly "room.job-stream": RoomJobStreamPayload, readonly "room.turn-stream": RoomTurnStreamPayload, readonly "stage.catalog-invalidated": { readonly reason: string }, readonly "query.invalidated": { readonly name: QueryName }, readonly "stage.registry-changed": { readonly appNames: readonly string[] }, readonly "sync.delta-applied": { readonly domain: string, readonly cursor: string }, readonly "transport.state-changed": { readonly state: TransportState }, readonly "connectivity.changed": { readonly reachability: "online" | "unreachable" | "session-required" | "unknown" }, readonly "ip-pool.health-changed": { readonly connectionState: "closed" | "filtered" | "open" | "unknown", readonly consecutiveFailures: number, readonly ipEntryId: string, readonly isHealthy: boolean, readonly latencyMs?: number } }} KernelEventPayloads */
4
4
  /** @template {KernelEventType} T @typedef {T extends CoreKernelEventType ? KernelEventPayloads[T] : AppEventPayload} KernelEventPayload */
5
5
  /** @template {KernelEventType} T @typedef {{ readonly occurredAt: string, readonly payload: KernelEventPayload<T>, readonly type: T }} KernelEventByType */
6
6
  /** @typedef {{ readonly occurredAt: string, readonly payload: AppEventPayload, readonly type: AppEventType }} AppDomainEvent */
@@ -25,8 +25,8 @@ export function appEventScope(value: string): AppEventType | undefined;
25
25
  export function appEventType(resource: string, instance?: string): AppEventType;
26
26
  /** @param {string} value @returns {value is QueryName} */
27
27
  export function isQueryName(value: string): value is QueryName;
28
- /** @type {readonly ["transport.state-changed", "stage.catalog-invalidated", "stage.registry-changed", "query.invalidated", "outbox.state-changed", "domain.entity-changed", "sync.delta-applied", "client-storage.state-changed", "offline.stage-readiness-changed", "offline.identity-invalidated", "app.data.changed", "app.data.committed", "onboarding.flow-changed", "device-cleanup.changed", "room.turn-stream", "room.job-stream", "connectivity.changed"]} */
29
- export const KERNEL_EVENT_TYPES: readonly ["transport.state-changed", "stage.catalog-invalidated", "stage.registry-changed", "query.invalidated", "outbox.state-changed", "domain.entity-changed", "sync.delta-applied", "client-storage.state-changed", "offline.stage-readiness-changed", "offline.identity-invalidated", "app.data.changed", "app.data.committed", "onboarding.flow-changed", "device-cleanup.changed", "room.turn-stream", "room.job-stream", "connectivity.changed"];
28
+ /** @type {readonly ["transport.state-changed", "stage.catalog-invalidated", "stage.registry-changed", "query.invalidated", "outbox.state-changed", "domain.entity-changed", "sync.delta-applied", "client-storage.state-changed", "offline.stage-readiness-changed", "offline.identity-invalidated", "app.data.changed", "app.data.committed", "onboarding.flow-changed", "device-cleanup.changed", "room.turn-stream", "room.job-stream", "connectivity.changed", "ip-pool.health-changed"]} */
29
+ export const KERNEL_EVENT_TYPES: readonly ["transport.state-changed", "stage.catalog-invalidated", "stage.registry-changed", "query.invalidated", "outbox.state-changed", "domain.entity-changed", "sync.delta-applied", "client-storage.state-changed", "offline.stage-readiness-changed", "offline.identity-invalidated", "app.data.changed", "app.data.committed", "onboarding.flow-changed", "device-cleanup.changed", "room.turn-stream", "room.job-stream", "connectivity.changed", "ip-pool.health-changed"];
30
30
  export type CoreKernelEventType = (typeof KERNEL_EVENT_TYPES)[number];
31
31
  export type KernelEventType = AppEventType | CoreKernelEventType;
32
32
  export type KernelEventPayloads = {
@@ -88,6 +88,13 @@ export type KernelEventPayloads = {
88
88
  readonly "connectivity.changed": {
89
89
  readonly reachability: "online" | "unreachable" | "session-required" | "unknown";
90
90
  };
91
+ readonly "ip-pool.health-changed": {
92
+ readonly connectionState: "closed" | "filtered" | "open" | "unknown";
93
+ readonly consecutiveFailures: number;
94
+ readonly ipEntryId: string;
95
+ readonly isHealthy: boolean;
96
+ readonly latencyMs?: number;
97
+ };
91
98
  };
92
99
  export type KernelEventPayload<T extends KernelEventType> = T extends CoreKernelEventType ? KernelEventPayloads[T] : AppEventPayload;
93
100
  export type KernelEventByType<T extends KernelEventType> = {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.js"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -164,6 +164,7 @@ export type NodeMetadataWire = import("./services/peer-directory-service.js").No
164
164
  export type PeerAdvertisement = import("./services/peer-directory-service.js").PeerAdvertisement;
165
165
  export type GossipAdvertisement = import("./services/gossip-service.js").GossipAdvertisement;
166
166
  export type GossipServiceOptions = import("./services/gossip-service.js").GossipServiceOptions;
167
+ export type ConnectionEntry = import("./models/owner-views.js").ConnectionEntry;
167
168
  export type FeedItem = import("./models/owner-views.js").FeedItem;
168
169
  export type FeedItemKind = import("./models/owner-views.js").FeedItemKind;
169
170
  export type FeedQuery = import("./models/owner-views.js").FeedQuery;
@@ -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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"}
@@ -13,6 +13,19 @@ export type HomeSummary = {
13
13
  readonly lastSyncedAt?: string;
14
14
  readonly status: HomeStatus;
15
15
  };
16
+ export type ConnectionEntry = {
17
+ readonly address: string;
18
+ readonly consecutiveFailures: number;
19
+ readonly healthy: boolean;
20
+ readonly id: string;
21
+ readonly ipv6: boolean;
22
+ readonly isActive: boolean;
23
+ readonly kind: "direct" | "relay";
24
+ readonly lastCheckedAt?: string;
25
+ readonly nodeId: string;
26
+ readonly openedAt?: string;
27
+ readonly transport: string;
28
+ };
16
29
  export type PeerStatus = "offline" | "online" | "unknown";
17
30
  export type PeerDirectoryEntry = {
18
31
  readonly displayName: string;
@@ -59,6 +72,7 @@ export type OperationalSummary = {
59
72
  * projection belongs behind its own repository port instead.
60
73
  */
61
74
  export type OwnerViewRepository = {
75
+ listConnections(): Promise<readonly ConnectionEntry[]>;
62
76
  listFeed(params: FeedQuery): Promise<readonly FeedItem[]>;
63
77
  listPeers(params: PeerDirectoryQuery): Promise<readonly PeerDirectoryEntry[]>;
64
78
  readHomeSummary(): Promise<HomeSummary | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"owner-views.d.ts","sourceRoot":"","sources":["../../src/models/owner-views.js"],"names":[],"mappings":";;;;;;oCAGa,CAAC,OAAO,0BAA0B,EAAE,MAAM,OAAO,0BAA0B,CAAC;yBAG5E,SAAS,GAAG,QAAQ,GAAG,SAAS;0BAGhC;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAAE;yBAGvJ,SAAS,GAAG,QAAQ,GAAG,SAAS;iCAGhC;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAAE;iCAGjH;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;CAAE;2BAG1D,UAAU,GAAG,SAAS,GAAG,QAAQ;uBAGjC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAAE;wBAGxJ;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAAE;4BAGrF,SAAS,GAAG,OAAO,GAAG,YAAY;yBAGlC,SAAS,GAAG,OAAO,GAAG,SAAS;mCAG/B,YAAY,GAAG,YAAY,GAAG,kBAAkB,GAAG,SAAS,GAAG,YAAY,GAAG,eAAe;iCAG7F;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;CAAE;;;;;;;;;;;kCAYnK;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;IAAC,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;IAAC,eAAe,IAAI,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAAC,sBAAsB,IAAI,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;CAAE"}
1
+ {"version":3,"file":"owner-views.d.ts","sourceRoot":"","sources":["../../src/models/owner-views.js"],"names":[],"mappings":"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"}
@@ -87,6 +87,7 @@ export type OnboardingCheckpointStore = import("./onboarding-checkpoint-store.js
87
87
  export type OwnerClaimIdentity = import("./owner-claim-service.js").OwnerClaimIdentity;
88
88
  export type OwnerClaimService = import("./owner-claim-service.js").OwnerClaimService;
89
89
  export type WifiProvisioningService = import("./wifi-provisioning-service.js").WifiProvisioningService;
90
+ export type WifiStatusOutcome = import("./wifi-provisioning-service.js").WifiStatusOutcome;
90
91
  export type OnboardingFlowStepId = (typeof ONBOARDING_FLOW_STEP_IDS)[number];
91
92
  export type OnboardingFlowPhase = "connect" | "install" | "secure" | "identify" | "ready";
92
93
  export type OnboardingFlowLcdScreenId = "onboard_qr" | "onboard_open_browser" | "onboard_home_qr" | "onboard_wifi_setup" | "onboard_wifi_joined" | "onboard_working" | "onboard_code" | "onboard_trusted" | "onboard_rejected";
@@ -100,6 +101,7 @@ export type OnboardingFlowApprovalState = "waiting" | "approved" | "rejected" |
100
101
  export type OnboardingFlowReasonCode = "approval-expired" | "approval-rejected" | "wifi-credentials-rejected" | "wifi-scan-failed" | "wifi-unreachable" | "invitation-invalid" | "claim-failed" | "code-already-bound" | "access-code-invalid";
101
102
  export type OnboardingFlowRow = OnboardingFlowRowBase & ({
102
103
  readonly networks: readonly OnboardingFlowNetwork[];
104
+ readonly probing: boolean;
103
105
  readonly scanning: boolean;
104
106
  readonly stepId: "choose-network";
105
107
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding-flow-service.d.ts","sourceRoot":"","sources":["../../src/services/onboarding-flow-service.js"],"names":[],"mappings":"AAYA,8KAA8K;AAC9K,uCADW,SAAS,CAAC,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,CAAC,CAaxK;AAuDF;IA4EE;;OAEG;IACH,qBAFW,4BAA4B,EActC;IACD;;OAEG;IACH,QAFa,iBAAiB,CAiE7B;IACD;;OAEG;IACH,SAFa,IAAI,CA6EhB;IACD;;OAEG;IACH,WAFa,OAAO,CAAC,IAAI,CAAC,CAoBzB;IACD;;;OAGG;IACH,0BAHW,qBAAqB,GAAG,WAAW,GACjC,OAAO,CAAC,IAAI,CAAC,CAMzB;IACD;;OAEG;IACH,aAFa,uBAAuB,CAUnC;IACD;;;OAGG;IACH,oBAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAsBzB;IACD;;OAEG;IACH,kBAFa,OAAO,CAAC,IAAI,CAAC,CAKzB;IACD;;;OAGG;IACH,uBAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CA4BzB;IACD;;;;OAIG;IACH,oBAJW,MAAM,YACN,0BAA0B,GACxB,OAAO,CAAC,IAAI,CAAC,CAUzB;IACD;;OAEG;IACH,mBAFa,OAAO,CAAC,IAAI,CAAC,CAKzB;IACD;;OAEG;IACH,kBAFa,OAAO,CAAC,IAAI,CAAC,CAYzB;IACD;;;OAGG;IACH,yBAHW,kBAAkB,GAChB,OAAO,CAAC,IAAI,CAAC,CAiDzB;IACD;;;OAGG;IACH,8BAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAgCzB;IACD;;OAEG;IACH,iBAFa,OAAO,CAAC,IAAI,CAAC,CAOzB;IACD;;OAEG;IACH,UAFa,IAAI,CA4BhB;IACD;;OAEG;IACH,QAFa,IAAI,CAiBhB;;CAuUF;wCAj6Ba,OAAO,gBAAgB,EAAE,yBAAyB;sCAClD,OAAO,gBAAgB,EAAE,uBAAuB;qCAChD,OAAO,gBAAgB,EAAE,sBAAsB;sCAC/C,OAAO,gCAAgC,EAAE,uBAAuB;iCAChE,OAAO,2BAA2B,EAAE,kBAAkB;wCACtD,OAAO,kCAAkC,EAAE,yBAAyB;iCACpE,OAAO,0BAA0B,EAAE,kBAAkB;gCACrD,OAAO,0BAA0B,EAAE,iBAAiB;sCACpD,OAAO,gCAAgC,EAAE,uBAAuB;mCA86BhE,CAAC,OAAO,wBAAwB,EAAE,MAAM,CAAC;kCACzC,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO;wCAEtD,YAAY,GACpB,sBAAsB,GACtB,iBAAiB,GACjB,oBAAoB,GACpB,qBAAqB,GACrB,iBAAiB,GACjB,cAAc,GACd,iBAAiB,GACjB,kBAAkB;yCAEX,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM;0CAE/B,SAAS,GACjB,UAAU,GACV,UAAU,GACV,SAAS,GACT,WAAW;;;;;;uCAMH,kBAAkB,GAC1B,mBAAmB,GACnB,2BAA2B,GAC3B,kBAAkB,GAClB,kBAAkB,GAClB,oBAAoB,GACpB,cAAc,GACd,oBAAoB,GACpB,qBAAqB;gCAGf,qBAAqB,GAAG,CAAC;IACrC,QAAc,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC1D,QAAc,CAAC,QAAQ,EAAE,OAAO,CAAC;IACjC,QAAc,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC,GACC;IACN,QAAc,CAAC,QAAQ,EAAE,0BAA0B,CAAC;IACpD,QAAc,CAAC,IAAI,EAAE,MAAM,CAAC;IAC5B,QAAc,CAAC,MAAM,EAAE,kBAAkB,CAAC;CACrC,GACC;IACN,QAAc,CAAC,aAAa,EAAE,2BAA2B,CAAC;IAC1D,QAAc,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAc,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACxC,QAAc,CAAC,MAAM,EAAE,YAAY,CAAC;CAC/B,GACC;IACN,QAAc,CAAC,cAAc,EAAE,OAAO,CAAC;IACvC,QAAc,CAAC,MAAM,EAAE,YAAY,CAAC;CAC/B,GACC;IACN,QAAc,CAAC,WAAW,EAAE,MAAM,CAAC;IACnC,QAAc,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAC1C,QAAc,CAAC,MAAM,EAAE,UAAU,CAAC;IAClC,QAAc,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B,GACC;IACN,QAAc,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC3C,QAAc,CAAC,MAAM,EAAE,SAAS,CAAC;CAC5B,GACC;IACN,QAAc,CAAC,IAAI,EAAE,MAAM,CAAC;IAC5B,QAAc,CAAC,MAAM,EAAE,SAAS,CAAC;CAC5B,GACC;IACN,QAAc,CAAC,MAAM,EAAE,OAAO,CACtB,oBAAoB,EAClB,gBAAgB,GAChB,SAAS,GACT,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,kBAAkB,GAClB,SAAS,CACZ,CAAC;CACH,CAAC;sCAGM,IAAI,CACZ,iBAAiB,EACrB,mBAAuB,GAAG,QAAQ,GAAG,eAAe,GAAG,cAAc,CAClE;uCAEU,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC;qCAExC,IAAI,CACZ,uBAAuB,EAC3B,cAAkB,GAAG,gBAAgB,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,CACpE;oCAEU,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,QAAQ,CAAC;;cAG9C,0BAA0B;YAC1B,MAAM;UACN,MAAM;;;iBAIN,yBAAyB;WACzB,mBAAmB;iBACnB,wBAAwB;eACxB,MAAM;gBACN,MAAM;;;kBAIN,OAAO;qBACP,OAAO;cACP,yBAAyB;WACzB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;;;;;;;;;;;iBAIzC,yBAAyB;iBAMzB,IAAI,CAAC,yBAAyB,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;WAC3D,uBAAuB;yBACvB,MAAM,OAAO;wBACb,MAAM,OAAO;aACb,wBAAwB;UACxB,qBAAqB;SACrB,MAAM,MAAM;eACZ,sBAAsB;aACtB,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI;UACtC,sBAAsB;;;WAItB,aAAa;QACb,oBAAoB;iBACpB,yBAAyB;WACzB,mBAAmB"}
1
+ {"version":3,"file":"onboarding-flow-service.d.ts","sourceRoot":"","sources":["../../src/services/onboarding-flow-service.js"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@ export class OwnerViewRefreshService {
6
6
  /** @returns {Promise<void>} */
7
7
  refreshHome(): Promise<void>;
8
8
  /** @returns {Promise<void>} */
9
+ refreshConnections(): Promise<void>;
10
+ /** @returns {Promise<void>} */
9
11
  refreshPeers(): Promise<void>;
10
12
  /** @returns {Promise<void>} */
11
13
  refreshFeed(): Promise<void>;
@@ -15,6 +17,7 @@ export class OwnerViewRefreshService {
15
17
  }
16
18
  export type RepositoryJsonValue = import("@econ-v1/ports").RepositoryJsonValue;
17
19
  export type DomainEvent = import("../events/index.js").DomainEvent;
20
+ export type ConnectionEntry = import("../models/owner-views.js").ConnectionEntry;
18
21
  export type FeedItem = import("../models/owner-views.js").FeedItem;
19
22
  export type HomeSummary = import("../models/owner-views.js").HomeSummary;
20
23
  export type OperationalSummary = import("../models/owner-views.js").OperationalSummary;
@@ -1 +1 @@
1
- {"version":3,"file":"owner-view-refresh-service.d.ts","sourceRoot":"","sources":["../../src/services/owner-view-refresh-service.js"],"names":[],"mappings":"AAiBA;IAYI,sDAAsD;IACtD,qBADY,8BAA8B,EAOzC;IAED,+BAA+B;IAC/B,cADc,OAAO,CAAC,IAAI,CAAC,CAe1B;IAED,+BAA+B;IAC/B,eADc,OAAO,CAAC,IAAI,CAAC,CAO1B;IAED,+BAA+B;IAC/B,gBADc,OAAO,CAAC,IAAI,CAAC,CAO1B;IAED,+BAA+B;IAC/B,eADc,OAAO,CAAC,IAAI,CAAC,CAO1B;IAED,+BAA+B;IAC/B,sBADc,OAAO,CAAC,IAAI,CAAC,CAO1B;;CAeJ;kCAtGa,OAAO,gBAAgB,EAAE,mBAAmB;0BAC5C,OAAO,oBAAoB,EAAE,WAAW;uBACxC,OAAO,0BAA0B,EAAE,QAAQ;0BAC3C,OAAO,0BAA0B,EAAE,WAAW;iCAC9C,OAAO,0BAA0B,EAAE,kBAAkB;kCACrD,OAAO,0BAA0B,EAAE,mBAAmB;iCACtD,OAAO,0BAA0B,EAAE,kBAAkB;uCAsMrD;IAAE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;IAAC,UAAU,CAAC,KAAK,EAAE,SAAS;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAA;KAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE;6CAChP;IAAE,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE"}
1
+ {"version":3,"file":"owner-view-refresh-service.d.ts","sourceRoot":"","sources":["../../src/services/owner-view-refresh-service.js"],"names":[],"mappings":"AAmBA;IAYI,sDAAsD;IACtD,qBADY,8BAA8B,EAOzC;IAED,+BAA+B;IAC/B,cADc,OAAO,CAAC,IAAI,CAAC,CAiB1B;IAED,+BAA+B;IAC/B,eADc,OAAO,CAAC,IAAI,CAAC,CAO1B;IAED,+BAA+B;IAC/B,sBADc,OAAO,CAAC,IAAI,CAAC,CAO1B;IAED,+BAA+B;IAC/B,gBADc,OAAO,CAAC,IAAI,CAAC,CAO1B;IAED,+BAA+B;IAC/B,eADc,OAAO,CAAC,IAAI,CAAC,CAO1B;IAED,+BAA+B;IAC/B,sBADc,OAAO,CAAC,IAAI,CAAC,CAO1B;;CAeJ;kCAnHa,OAAO,gBAAgB,EAAE,mBAAmB;0BAC5C,OAAO,oBAAoB,EAAE,WAAW;8BACxC,OAAO,0BAA0B,EAAE,eAAe;uBAClD,OAAO,0BAA0B,EAAE,QAAQ;0BAC3C,OAAO,0BAA0B,EAAE,WAAW;iCAC9C,OAAO,0BAA0B,EAAE,kBAAkB;kCACrD,OAAO,0BAA0B,EAAE,mBAAmB;iCACtD,OAAO,0BAA0B,EAAE,kBAAkB;uCAgPrD;IAAE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;IAAC,UAAU,CAAC,KAAK,EAAE,SAAS;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAA;KAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE;6CAChP;IAAE,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE"}
@@ -1,3 +1,6 @@
1
+ /**
2
+ * @typedef {import("../models/owner-views.js").ConnectionEntry} ConnectionEntry
3
+ */
1
4
  /**
2
5
  * @typedef {import("../models/owner-views.js").FeedItem} FeedItem
3
6
  */
@@ -40,11 +43,20 @@ export class OwnerViewService {
40
43
  */
41
44
  listFeed(params: FeedQuery): Promise<readonly FeedItem[]>;
42
45
  /**
46
+ * Connections are live transport state read from the online repository, with the local
47
+ * `connections:default` projection as the unreachable-node fallback (mirrors #2440): when the
48
+ * online read fails with a `TransportError` (node offline / path down) the last-known cached
49
+ * rows are returned so first paint still shows connections. Any other error propagates.
50
+ * @returns {Promise<readonly ConnectionEntry[]>}
51
+ */
52
+ listConnections(): Promise<readonly ConnectionEntry[]>;
53
+ /**
43
54
  * @returns {Promise<readonly OperationalSummary[]>}
44
55
  */
45
56
  readOperational(): Promise<readonly OperationalSummary[]>;
46
57
  #private;
47
58
  }
59
+ export type ConnectionEntry = import("../models/owner-views.js").ConnectionEntry;
48
60
  export type FeedItem = import("../models/owner-views.js").FeedItem;
49
61
  export type FeedQuery = import("../models/owner-views.js").FeedQuery;
50
62
  export type HomeSummary = import("../models/owner-views.js").HomeSummary;
@@ -1 +1 @@
1
- {"version":3,"file":"owner-view-service.d.ts","sourceRoot":"","sources":["../../src/services/owner-view-service.js"],"names":[],"mappings":"AAEA;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;IAQI;;;KAGC;IACD,wBAHS,mBAAmB,qBACnB,mBAAmB,EAK3B;IACD;;KAEC;IACD,YAFW,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAKzC;IACD;;;KAGC;IACD,kBAHS,kBAAkB,GAChB,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAMhD;IACD;;;KAGC;IACD,iBAHS,SAAS,GACP,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAMtC;IACD;;KAEC;IACD,mBAFW,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAKhD;;CACJ;uBApEY,OAAO,0BAA0B,EAAE,QAAQ;wBAG3C,OAAO,0BAA0B,EAAE,SAAS;0BAG5C,OAAO,0BAA0B,EAAE,WAAW;iCAG9C,OAAO,0BAA0B,EAAE,kBAAkB;kCAGrD,OAAO,0BAA0B,EAAE,mBAAmB;iCAGtD,OAAO,0BAA0B,EAAE,kBAAkB;iCAGrD,OAAO,0BAA0B,EAAE,kBAAkB"}
1
+ {"version":3,"file":"owner-view-service.d.ts","sourceRoot":"","sources":["../../src/services/owner-view-service.js"],"names":[],"mappings":"AAIA;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;IAQI;;;KAGC;IACD,wBAHS,mBAAmB,qBACnB,mBAAmB,EAK3B;IACD;;KAEC;IACD,YAFW,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAKzC;IACD;;;KAGC;IACD,kBAHS,kBAAkB,GAChB,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAMhD;IACD;;;KAGC;IACD,iBAHS,SAAS,GACP,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAMtC;IACD;;;;;;KAMC;IACD,mBAFW,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAS7C;IACD;;KAEC;IACD,mBAFW,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAKhD;;CACJ;8BAtFY,OAAO,0BAA0B,EAAE,eAAe;uBAGlD,OAAO,0BAA0B,EAAE,QAAQ;wBAG3C,OAAO,0BAA0B,EAAE,SAAS;0BAG5C,OAAO,0BAA0B,EAAE,WAAW;iCAG9C,OAAO,0BAA0B,EAAE,kBAAkB;kCAGrD,OAAO,0BAA0B,EAAE,mBAAmB;iCAGtD,OAAO,0BAA0B,EAAE,kBAAkB;iCAGrD,OAAO,0BAA0B,EAAE,kBAAkB"}
@@ -15,9 +15,23 @@ export class WifiProvisioningService {
15
15
  * node side (the join tears down and re-adds the connection) and a handshake flake in that
16
16
  * window strands the node back in setup AP mode. The wire values are node-server's
17
17
  * `http_status` PascalCase strings; only an explicit `"Connected"` counts.
18
+ *
19
+ * `#node.invoke()` (`PrePairingHomeNodeClient`) issues a bare same-origin `fetch` with no
20
+ * `AbortSignal`/timeout of its own. Without a deadline HERE, a request that never settles — a
21
+ * phone mid-network-switch, a thrashing Pi Zero 2W, exactly the hardware this probe targets —
22
+ * used to hang this call forever, which stranded `OnboardingFlowService#probeStatus()` on
23
+ * step 3's "Checking your node." with `#probing` never clearing and no interactive element
24
+ * rendered (no rescan button — the picker's probing branch `return`s before building one).
25
+ * Racing the delay port caps that: past `deadlineMs` the outcome collapses to `unreachable`,
26
+ * same as every other failure this method already treats as a first-class outcome.
27
+ * @param {number} [deadlineMs] Defaults to {@link STATUS_DEADLINE_MS} (3s — the node's own
28
+ * wifi-status proxy deadline is 2s). `OnboardingFlowService#probeStatus()` passes a shorter
29
+ * value for its single retry: a node that missed the full deadline once is not going to
30
+ * answer within milliseconds, so the retry's own deadline only needs to catch a *transient*
31
+ * miss, not wait out a hung one a second time.
18
32
  * @returns {Promise<WifiStatusOutcome>}
19
33
  */
20
- status(): Promise<WifiStatusOutcome>;
34
+ status(deadlineMs?: number): Promise<WifiStatusOutcome>;
21
35
  /** Lists what the node's radio can currently see. A failure is a first-class outcome, not a
22
36
  * throw: step 4 stays on screen and offers "Scan again".
23
37
  * @returns {Promise<WifiScanOutcome>}
@@ -1 +1 @@
1
- {"version":3,"file":"wifi-provisioning-service.d.ts","sourceRoot":"","sources":["../../src/services/wifi-provisioning-service.js"],"names":[],"mappings":"AAOA;IAyBE;;OAEG;IACH,qBAFW,8BAA8B,EAMxC;IA/BD;;;OAGG;IACH,gCAHW,MAAM,OAAO,GACX,OAAO,CAAC,oBAAoB,CAAC,CASzC;IAqBD;;;;;;;;OAQG;IACH,UAFa,OAAO,CAAC,iBAAiB,CAAC,CAiBtC;IACD;;;OAGG;IACH,QAFa,OAAO,CAAC,eAAe,CAAC,CAwBpC;IACD;;;;;;;OAOG;IACH,gBAJW,MAAM,UACN,MAAM,GAAG,SAAS,GAChB,OAAO,CAAC,oBAAoB,CAAC,CA+BzC;IACD;;;;;;;;;;OAUG;IACH,0BALW,MAAM,YACN,MAAM,oBACN,MAAM,IAAI,GACR,OAAO,CAAC,kBAAkB,CAAC,CA2BvC;;CACF;wBAtKa,OAAO,gBAAgB,EAAE,SAAS;6BAClC,OAAO,gBAAgB,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCA2NxC,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM;8BAG9B;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,uBAAuB,EAAE,CAAA;CAAE,GAC3F;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE;mCAGxB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;CAAE,GACzC;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE;iCAEzB,WAAW,GAAG,sBAAsB,GAAG,aAAa;mCACpD,WAAW,GAAG,YAAY;;;;;;gCAIzB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CAAE,GAClC;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE;;cAIzB,wBAAwB;;;;YACxB,MAAM;UACN,MAAM;;;WAIN,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;UACvB,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC;;;;SAC9B,MAAM,MAAM;;;eAIZ,OAAO;6BACP,OAAO;WACP,OAAO;;;eAIP,SAAS,eAAe,EAAE;;;mBAI1B,OAAO;cACP,OAAO;;;aAIP,OAAO;;;wBAIP,OAAO;mBACP,OAAO"}
1
+ {"version":3,"file":"wifi-provisioning-service.d.ts","sourceRoot":"","sources":["../../src/services/wifi-provisioning-service.js"],"names":[],"mappings":"AAWA;IAyBE;;OAEG;IACH,qBAFW,8BAA8B,EAMxC;IA/BD;;;OAGG;IACH,gCAHW,MAAM,OAAO,GACX,OAAO,CAAC,oBAAoB,CAAC,CASzC;IAqBD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,oBAPW,MAAM,GAKJ,OAAO,CAAC,iBAAiB,CAAC,CAsBtC;IACD;;;OAGG;IACH,QAFa,OAAO,CAAC,eAAe,CAAC,CAwBpC;IACD;;;;;;;OAOG;IACH,gBAJW,MAAM,UACN,MAAM,GAAG,SAAS,GAChB,OAAO,CAAC,oBAAoB,CAAC,CA+BzC;IACD;;;;;;;;;;OAUG;IACH,0BALW,MAAM,YACN,MAAM,oBACN,MAAM,IAAI,GACR,OAAO,CAAC,kBAAkB,CAAC,CA2BvC;;CACF;wBA7La,OAAO,gBAAgB,EAAE,SAAS;6BAClC,OAAO,gBAAgB,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAkPxC,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM;8BAG9B;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,uBAAuB,EAAE,CAAA;CAAE,GAC3F;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE;mCAGxB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;CAAE,GACzC;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE;iCAEzB,WAAW,GAAG,sBAAsB,GAAG,aAAa;mCACpD,WAAW,GAAG,YAAY;;;;;;gCAIzB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CAAE,GAClC;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE;;cAIzB,wBAAwB;;;;YACxB,MAAM;UACN,MAAM;;;WAIN,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;UACvB,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC;;;;SAC9B,MAAM,MAAM;;;eAIZ,OAAO;6BACP,OAAO;WACP,OAAO;;;eAIP,SAAS,eAAe,EAAE;;;mBAI1B,OAAO;cACP,OAAO;;;aAIP,OAAO;;;wBAIP,OAAO;mBACP,OAAO"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@econ-v1/domain",
3
- "version": "7.0.0",
3
+ "version": "7.0.1",
4
4
  "description": "Platform-neutral domain contracts and errors for Node clients",
5
5
  "license": "MIT OR Apache-2.0",
6
6
  "author": "Node contributors",
@@ -57,6 +57,6 @@
57
57
  "access": "public"
58
58
  },
59
59
  "dependencies": {
60
- "@econ-v1/ports": "7.0.0"
60
+ "@econ-v1/ports": "7.0.1"
61
61
  }
62
62
  }
@@ -27,7 +27,7 @@
27
27
  /**
28
28
  * @typedef {| SerializableError<"domain", DomainErrorCode> | SerializableError<"sync", SyncErrorCode> | SerializableError<"transport", TransportErrorCode>} SerializableClientError
29
29
  */
30
- /** @type {readonly ["access-code-invalid", "capability_not_declared", "code-already-bound", "conflict", "invalid_request", "not_found", "stage_composition_not_enabled", "unauthorized", "unsupported_query", "validation_failed"]} */
30
+ /** @type {readonly ["access-code-invalid", "capability_not_declared", "capability_unavailable", "code-already-bound", "conflict", "invalid_request", "not_found", "stage_composition_not_enabled", "unauthorized", "unsupported_query", "validation_failed"]} */
31
31
  export const DOMAIN_ERROR_CODES = [
32
32
  // Onboarding access-code rail (2026-08-10 design): the two envelope codes
33
33
  // `onboarding-prepare` refuses with when a code-active node rejects a device's claim
@@ -36,6 +36,17 @@ export const DOMAIN_ERROR_CODES = [
36
36
  // `OnboardingFlowService`'s matching `OnboardingFlowReasonCode` members.
37
37
  "access-code-invalid",
38
38
  "capability_not_declared",
39
+ // The home node ANSWERED, but no app currently provides the invoked capability (the
40
+ // provider is not installed, not loaded, or failed to start). That is a per-capability
41
+ // failure of the node's own app layer, not a transport outage: the path that carried the
42
+ // answer is healthy, so it must never be a `TransportError`. Before this member existed the
43
+ // adapters mapped the node's "No provider registered" answer to
44
+ // `TransportError("unavailable")`, which `ManagedHomeNodeClient` treats as a path failure —
45
+ // one unloaded optional app then tore down the shared WebSocket, re-minted the session and
46
+ // re-dialed on every refresh of the affected query (`observability.snapshot.v1`, and earlier
47
+ // `core.system.info`). Mapped by `client/adapters-web/src/network/envelope-error-mapping.js`
48
+ // (HTTP) and `client-rpc/response-error.js` (WebTransport/WebRTC).
49
+ "capability_unavailable",
39
50
  "code-already-bound",
40
51
  "conflict",
41
52
  "invalid_request",
@@ -40,7 +40,7 @@ function parseAppEventType(value) {
40
40
  return { instance, resource };
41
41
  }
42
42
 
43
- /** @type {readonly ["transport.state-changed", "stage.catalog-invalidated", "stage.registry-changed", "query.invalidated", "outbox.state-changed", "domain.entity-changed", "sync.delta-applied", "client-storage.state-changed", "offline.stage-readiness-changed", "offline.identity-invalidated", "app.data.changed", "app.data.committed", "onboarding.flow-changed", "device-cleanup.changed", "room.turn-stream", "room.job-stream", "connectivity.changed"]} */
43
+ /** @type {readonly ["transport.state-changed", "stage.catalog-invalidated", "stage.registry-changed", "query.invalidated", "outbox.state-changed", "domain.entity-changed", "sync.delta-applied", "client-storage.state-changed", "offline.stage-readiness-changed", "offline.identity-invalidated", "app.data.changed", "app.data.committed", "onboarding.flow-changed", "device-cleanup.changed", "room.turn-stream", "room.job-stream", "connectivity.changed", "ip-pool.health-changed"]} */
44
44
  export const KERNEL_EVENT_TYPES = [
45
45
  "transport.state-changed",
46
46
  "stage.catalog-invalidated",
@@ -59,6 +59,7 @@ export const KERNEL_EVENT_TYPES = [
59
59
  "room.turn-stream",
60
60
  "room.job-stream",
61
61
  "connectivity.changed",
62
+ "ip-pool.health-changed",
62
63
  ];
63
64
 
64
65
  /** @typedef {(typeof KERNEL_EVENT_TYPES)[number]} CoreKernelEventType */
@@ -72,7 +73,7 @@ export const KERNEL_EVENT_TYPES = [
72
73
  * shape a de-duplication would take — declared in `@econ-v1/ports` and re-exported outward — and
73
74
  * is the follow-up if this union ever grows a fifth state.
74
75
  */
75
- /** @typedef {{ readonly "client-storage.state-changed": { readonly code?: string, readonly message?: string, readonly status: "ready" | "recovery-required" | "starting" }, readonly "offline.stage-readiness-changed": { readonly readiness: OfflineStageReadiness }, readonly "offline.identity-invalidated": { readonly scope: OfflineIdentityScope }, readonly "app.data.changed": { readonly appName: string, readonly cursor: string, readonly revision: string, readonly stream: string }, readonly "app.data.committed": { readonly appName: string, readonly cursor: string, readonly revision: string, readonly stream: string }, readonly "device-cleanup.changed": { readonly state?: string }, readonly "domain.entity-changed": { readonly action: "created" | "deleted" | "updated", readonly entityId: string, readonly entityType: string }, readonly "onboarding.flow-changed": { readonly stepId: string }, readonly "outbox.state-changed": { readonly intent: OutboxIntent }, readonly "room.job-stream": RoomJobStreamPayload, readonly "room.turn-stream": RoomTurnStreamPayload, readonly "stage.catalog-invalidated": { readonly reason: string }, readonly "query.invalidated": { readonly name: QueryName }, readonly "stage.registry-changed": { readonly appNames: readonly string[] }, readonly "sync.delta-applied": { readonly domain: string, readonly cursor: string }, readonly "transport.state-changed": { readonly state: TransportState }, readonly "connectivity.changed": { readonly reachability: "online" | "unreachable" | "session-required" | "unknown" } }} KernelEventPayloads */
76
+ /** @typedef {{ readonly "client-storage.state-changed": { readonly code?: string, readonly message?: string, readonly status: "ready" | "recovery-required" | "starting" }, readonly "offline.stage-readiness-changed": { readonly readiness: OfflineStageReadiness }, readonly "offline.identity-invalidated": { readonly scope: OfflineIdentityScope }, readonly "app.data.changed": { readonly appName: string, readonly cursor: string, readonly revision: string, readonly stream: string }, readonly "app.data.committed": { readonly appName: string, readonly cursor: string, readonly revision: string, readonly stream: string }, readonly "device-cleanup.changed": { readonly state?: string }, readonly "domain.entity-changed": { readonly action: "created" | "deleted" | "updated", readonly entityId: string, readonly entityType: string }, readonly "onboarding.flow-changed": { readonly stepId: string }, readonly "outbox.state-changed": { readonly intent: OutboxIntent }, readonly "room.job-stream": RoomJobStreamPayload, readonly "room.turn-stream": RoomTurnStreamPayload, readonly "stage.catalog-invalidated": { readonly reason: string }, readonly "query.invalidated": { readonly name: QueryName }, readonly "stage.registry-changed": { readonly appNames: readonly string[] }, readonly "sync.delta-applied": { readonly domain: string, readonly cursor: string }, readonly "transport.state-changed": { readonly state: TransportState }, readonly "connectivity.changed": { readonly reachability: "online" | "unreachable" | "session-required" | "unknown" }, readonly "ip-pool.health-changed": { readonly connectionState: "closed" | "filtered" | "open" | "unknown", readonly consecutiveFailures: number, readonly ipEntryId: string, readonly isHealthy: boolean, readonly latencyMs?: number } }} KernelEventPayloads */
76
77
  /** @template {KernelEventType} T @typedef {T extends CoreKernelEventType ? KernelEventPayloads[T] : AppEventPayload} KernelEventPayload */
77
78
  /** @template {KernelEventType} T @typedef {{ readonly occurredAt: string, readonly payload: KernelEventPayload<T>, readonly type: T }} KernelEventByType */
78
79
  /** @typedef {{ readonly occurredAt: string, readonly payload: AppEventPayload, readonly type: AppEventType }} AppDomainEvent */
package/src/index.js CHANGED
@@ -377,6 +377,9 @@
377
377
  /**
378
378
  * @typedef {import("./services/gossip-service.js").GossipServiceOptions} GossipServiceOptions
379
379
  */
380
+ /**
381
+ * @typedef {import("./models/owner-views.js").ConnectionEntry} ConnectionEntry
382
+ */
380
383
  /**
381
384
  * @typedef {import("./models/owner-views.js").FeedItem} FeedItem
382
385
  */
@@ -9,6 +9,9 @@
9
9
  /**
10
10
  * @typedef {{ readonly cachedAt?: string; readonly displayName: string; readonly homeNodeId: string; readonly lastSyncedAt?: string; readonly status: HomeStatus; }} HomeSummary
11
11
  */
12
+ /**
13
+ * @typedef {{ readonly address: string; readonly consecutiveFailures: number; readonly healthy: boolean; readonly id: string; readonly ipv6: boolean; readonly isActive: boolean; readonly kind: "direct" | "relay"; readonly lastCheckedAt?: string; readonly nodeId: string; readonly openedAt?: string; readonly transport: string; }} ConnectionEntry
14
+ */
12
15
  /**
13
16
  * @typedef {"offline" | "online" | "unknown"} PeerStatus
14
17
  */
@@ -49,7 +52,7 @@
49
52
  * degraded mode when a browser cannot provide OPFS. A storage-backed
50
53
  * projection belongs behind its own repository port instead.
51
54
  *
52
- * @typedef {{ listFeed(params: FeedQuery): Promise<readonly FeedItem[]>; listPeers(params: PeerDirectoryQuery): Promise<readonly PeerDirectoryEntry[]>; readHomeSummary(): Promise<HomeSummary | undefined>; readOperationalSummary(): Promise<OperationalSummary | undefined>; }} OwnerViewRepository
55
+ * @typedef {{ listConnections(): Promise<readonly ConnectionEntry[]>; listFeed(params: FeedQuery): Promise<readonly FeedItem[]>; listPeers(params: PeerDirectoryQuery): Promise<readonly PeerDirectoryEntry[]>; readHomeSummary(): Promise<HomeSummary | undefined>; readOperationalSummary(): Promise<OperationalSummary | undefined>; }} OwnerViewRepository
53
56
  */
54
57
  export const OWNER_VIEW_SYNC_STRATEGIES = {
55
58
  feeds: "log",
@@ -8,6 +8,7 @@
8
8
  /** @typedef {import("./owner-claim-service.js").OwnerClaimIdentity} OwnerClaimIdentity */
9
9
  /** @typedef {import("./owner-claim-service.js").OwnerClaimService} OwnerClaimService */
10
10
  /** @typedef {import("./wifi-provisioning-service.js").WifiProvisioningService} WifiProvisioningService */
11
+ /** @typedef {import("./wifi-provisioning-service.js").WifiStatusOutcome} WifiStatusOutcome */
11
12
  import { createNullOnboardingPresence } from "@econ-v1/ports";
12
13
  import { DomainError } from "../errors/index.js";
13
14
  /** @type {readonly ["join-qr", "open-browser", "choose-network", "network-password", "handoff", "way-back", "install", "match-code", "invitation", "identity", "trusted"]} */
@@ -57,6 +58,9 @@ const WIFI_SKIPPABLE_STEPS = new Set([
57
58
  "choose-network",
58
59
  "network-password",
59
60
  ]);
61
+ /** Deadline passed to the SECOND attempt in `#probeStatus()`, far shorter than
62
+ * `WifiProvisioningService#status()`'s own default. See `#probeStatus()` for why. */
63
+ const PROBE_RETRY_DEADLINE_MS = 500;
60
64
  const CONFIRMATION_WINDOW_MS = 5 * 60 * 1000;
61
65
  const HANDOFF_WINDOW_MS = 3 * 60 * 1000;
62
66
  /** @type {Readonly<Record<string, "confirm" | "reject">>} */
@@ -139,6 +143,20 @@ export class OnboardingFlowService {
139
143
  #scanGeneration = 0;
140
144
  /** @default false */
141
145
  #scanning = false;
146
+ /** True while the flow-entry status probe is in flight and no scan has been started. The
147
+ * picker renders a neutral "checking" state on it — the person must never see a network list,
148
+ * or a button, for a node that is about to prove it is already on Wi-Fi (the picker's probing
149
+ * branch renders its own shimmering skeleton rows, same markup as the scanning state's).
150
+ * @default false */
151
+ #probing = false;
152
+ /** Bumped on every event that must invalidate an in-flight `#probeThenScan()` — `cancel()`
153
+ * and `#enterChooseNetwork()` — so a probe answer that lands after the person has left the
154
+ * flow entry it belongs to can neither repaint that entry nor start a scan under it. The
155
+ * `#stepId !== "choose-network"` check alone is not enough: `cancel()` resets `#stepId` back
156
+ * to `FIRST_PWA_STEP`, which IS `"choose-network"`, so the two steps look identical to that
157
+ * check even though the original entry is gone.
158
+ * @default 0 */
159
+ #probeGeneration = 0;
142
160
  /** @default false */
143
161
  #sessionEstablished = false;
144
162
  /** @type {OnboardingFlowStepId} */
@@ -193,6 +211,7 @@ export class OnboardingFlowService {
193
211
  return {
194
212
  ...base,
195
213
  networks: this.#networks,
214
+ probing: this.#probing,
196
215
  scanning: this.#scanning,
197
216
  stepId,
198
217
  };
@@ -269,6 +288,7 @@ export class OnboardingFlowService {
269
288
  this.#scanning = false;
270
289
  this.#sessionEstablished = false;
271
290
  this.#stepId = restored ?? FIRST_PWA_STEP;
291
+ this.#probing = this.#stepId === "choose-network";
272
292
  // The security of the checkpointed SSID is deliberately NOT persisted: the password is not
273
293
  // resumable either, so step 5 is re-shown rather than replayed, and WPA2 is the demanding
274
294
  // default (it asks for a secret rather than silently offering to join without one).
@@ -287,16 +307,22 @@ export class OnboardingFlowService {
287
307
  // access" moment — independent of which step a resumed checkpoint or the Wi-Fi skip-check
288
308
  // below lands on, rather than waiting for a click through the now-absent match-code step.
289
309
  if (this.#accessCodeMode) void this.#prepareCode();
290
- if (this.#stepId === "choose-network") {
291
- void this.#scan();
292
- }
293
310
  // A node whose Wi-Fi was configured on its own captive portal (or any earlier attempt)
294
311
  // needs no credentials from this flow: asking again is the double-prompt this probe
295
312
  // exists to kill, and RESUBMITTING working credentials is worse than redundant — the node
296
313
  // re-runs the join, and a handshake flake in that window strands it back in setup AP mode
297
314
  // (observed live on Pi Zero 2W). Fired for the wifi-skippable steps only; `handoff` keeps
298
315
  // its own watcher.
299
- if (WIFI_SKIPPABLE_STEPS.has(this.#stepId)) {
316
+ //
317
+ // On `choose-network` the probe runs BEFORE the scan, not beside it. Fired together, the
318
+ // node serialises them behind one lock, the status answer queues behind a ~1.7 s hardware
319
+ // scan and dies on the provisioning proxy's 2 s deadline — the flow then showed the picker
320
+ // to a node that was already on its home Wi-Fi until someone refreshed (Pi Zero 2W,
321
+ // 2026-08-21). Probing first also means a connected node never pays for a scan at all.
322
+ if (this.#stepId === "choose-network") {
323
+ this.#probeGeneration += 1;
324
+ void this.#probeThenScan(this.#probeGeneration);
325
+ } else if (WIFI_SKIPPABLE_STEPS.has(this.#stepId)) {
300
326
  void this.#skipWifiIfAlreadyConnected();
301
327
  }
302
328
  if (this.#stepId === "handoff" && this.#wifiOperationId !== undefined) {
@@ -569,6 +595,8 @@ export class OnboardingFlowService {
569
595
  this.#lcdTapPending = false;
570
596
  this.#networks = [];
571
597
  this.#operationHash = undefined;
598
+ this.#probeGeneration += 1;
599
+ this.#probing = false;
572
600
  this.#reasonCode = undefined;
573
601
  this.#remainingSeconds = 0;
574
602
  this.#requiresConfirmation = false;
@@ -629,6 +657,8 @@ export class OnboardingFlowService {
629
657
  */
630
658
  #enterChooseNetwork(reasonCode) {
631
659
  this.#networks = [];
660
+ this.#probeGeneration += 1;
661
+ this.#probing = false;
632
662
  this.#scanning = true;
633
663
  this.#wifiOperationId = undefined;
634
664
  this.#moveTo("choose-network", reasonCode);
@@ -640,17 +670,57 @@ export class OnboardingFlowService {
640
670
  #enterInstall() {
641
671
  this.#moveTo("install");
642
672
  }
673
+ /** One flow-entry status probe, retried once on `unreachable`. The retry exists for a
674
+ * TRANSIENT miss, not a hung one: `WifiProvisioningService#status()` now enforces its own
675
+ * deadline (see its doc comment), so by the time this method's first attempt reaches
676
+ * `unreachable` the node either answered fast with a real failure, or it burned the full
677
+ * default deadline getting there. A node that missed a several-second deadline once is not
678
+ * going to answer within the next few hundred milliseconds either, so the retry passes a much
679
+ * SHORTER deadline (`PROBE_RETRY_DEADLINE_MS`) — enough to catch a quick transient hiccup
680
+ * without doubling the worst-case wait a real outage imposes on the picker. (Nothing here
681
+ * measured node response times; this is a bound on worst case, not a claim about the typical
682
+ * one.)
683
+ * @returns {Promise<WifiStatusOutcome>} */
684
+ async #probeStatus() {
685
+ const first = await this.#wifi.status();
686
+ if (first.kind !== "unreachable") return first;
687
+ return await this.#wifi.status(PROBE_RETRY_DEADLINE_MS);
688
+ }
643
689
  /**
644
690
  * @returns {Promise<void>}
645
691
  */
646
692
  async #skipWifiIfAlreadyConnected() {
647
- const outcome = await this.#wifi.status();
693
+ const outcome = await this.#probeStatus();
648
694
  if (outcome.kind !== "connected") return;
649
695
  if (!WIFI_SKIPPABLE_STEPS.has(this.#stepId)) return;
650
696
  if (this.#wifiOperationId !== undefined) return;
651
697
  if (outcome.ssid.length > 0) this.#targetSsid = outcome.ssid;
652
698
  this.#enterInstall();
653
699
  }
700
+ /** Flow entry on `choose-network`: probe, then either skip to `install` or start the scan.
701
+ * A person who left the step while the probe was in flight (cancel, a resumed command) must
702
+ * not get a scan started under a screen they are no longer on — checked both by `#stepId`
703
+ * (a different step) and by `generation` (the same step id, re-entered after a `cancel()`).
704
+ * @param {number} generation
705
+ * @returns {Promise<void>} */
706
+ async #probeThenScan(generation) {
707
+ const outcome = await this.#probeStatus();
708
+ // A stale generation means this probe is not the one the CURRENT entry started — do not
709
+ // touch `#probing`. Both places that bump `#probeGeneration` (`cancel()`,
710
+ // `#enterChooseNetwork()`) already clear `#probing` themselves for the entry that actually
711
+ // owns it; clearing it again here would stomp the current entry's own flag out from under
712
+ // it if it happened to still be probing.
713
+ if (this.#stepId !== "choose-network" || generation !== this.#probeGeneration) {
714
+ return;
715
+ }
716
+ this.#probing = false;
717
+ if (outcome.kind === "connected" && this.#wifiOperationId === undefined) {
718
+ if (outcome.ssid.length > 0) this.#targetSsid = outcome.ssid;
719
+ this.#enterInstall();
720
+ return;
721
+ }
722
+ await this.#scan();
723
+ }
654
724
  /**
655
725
  * @returns {Promise<void>}
656
726
  */
@@ -987,6 +1057,7 @@ function accessCodeReasonCode(error) {
987
1057
  /**
988
1058
  * @typedef {OnboardingFlowRowBase & ({
989
1059
  * readonly networks: readonly OnboardingFlowNetwork[];
1060
+ * readonly probing: boolean;
990
1061
  * readonly scanning: boolean;
991
1062
  * readonly stepId: "choose-network";
992
1063
  * }
@@ -2,6 +2,7 @@
2
2
 
3
3
  /** @typedef {import("@econ-v1/ports").RepositoryJsonValue} RepositoryJsonValue */
4
4
  /** @typedef {import("../events/index.js").DomainEvent} DomainEvent */
5
+ /** @typedef {import("../models/owner-views.js").ConnectionEntry} ConnectionEntry */
5
6
  /** @typedef {import("../models/owner-views.js").FeedItem} FeedItem */
6
7
  /** @typedef {import("../models/owner-views.js").HomeSummary} HomeSummary */
7
8
  /** @typedef {import("../models/owner-views.js").OperationalSummary} OperationalSummary */
@@ -9,6 +10,7 @@
9
10
  /** @typedef {import("../models/owner-views.js").PeerDirectoryEntry} PeerDirectoryEntry */
10
11
 
11
12
  const OWNER_VIEW_PROJECTION_KEYS = Object.freeze({
13
+ connections: "connections:default",
12
14
  feed: "feed:default",
13
15
  home: "home",
14
16
  operations: "operations",
@@ -40,6 +42,7 @@ export class OwnerViewRefreshService {
40
42
  async refreshAll() {
41
43
  const homeValue = await this.#network.readHomeSummary();
42
44
  const home = homeValue === undefined ? null : parseHome(homeValue);
45
+ const connections = [...parseConnections(await this.#network.listConnections())];
43
46
  const peers = [...parsePeers(await this.#network.listPeers({}))];
44
47
  const feed = [...parseFeed(await this.#network.listFeed({}))];
45
48
  const operationsValue = await this.#network.readOperationalSummary();
@@ -47,6 +50,7 @@ export class OwnerViewRefreshService {
47
50
 
48
51
  await this.#persist([
49
52
  { key: OWNER_VIEW_PROJECTION_KEYS.home, payload: home },
53
+ { key: OWNER_VIEW_PROJECTION_KEYS.connections, payload: connections },
50
54
  { key: OWNER_VIEW_PROJECTION_KEYS.peers, payload: peers },
51
55
  { key: OWNER_VIEW_PROJECTION_KEYS.feed, payload: feed },
52
56
  { key: OWNER_VIEW_PROJECTION_KEYS.operations, payload: operations },
@@ -62,6 +66,15 @@ export class OwnerViewRefreshService {
62
66
  }]);
63
67
  }
64
68
 
69
+ /** @returns {Promise<void>} */
70
+ async refreshConnections() {
71
+ const value = await this.#network.listConnections();
72
+ await this.#persist([{
73
+ key: OWNER_VIEW_PROJECTION_KEYS.connections,
74
+ payload: [...parseConnections(value)],
75
+ }]);
76
+ }
77
+
65
78
  /** @returns {Promise<void>} */
66
79
  async refreshPeers() {
67
80
  const value = await this.#network.listPeers({});
@@ -132,6 +145,36 @@ function parsePeers(value) {
132
145
  });
133
146
  }
134
147
 
148
+ /** @param {unknown} value @returns {readonly ConnectionEntry[]} */
149
+ function parseConnections(value) {
150
+ if (!Array.isArray(value)) throw invalid("connections");
151
+ return value.map((entry, index) => {
152
+ const label = `connections[${index}]`;
153
+ const record = exactRecord(entry, ["address", "consecutiveFailures", "healthy", "id", "ipv6", "isActive", "kind", "lastCheckedAt", "nodeId", "openedAt", "transport"], label);
154
+ if (typeof record.healthy !== "boolean") throw invalid(`${label} healthy`);
155
+ if (typeof record.ipv6 !== "boolean") throw invalid(`${label} ipv6`);
156
+ if (typeof record.isActive !== "boolean") throw invalid(`${label} isActive`);
157
+ if (!Number.isSafeInteger(record.consecutiveFailures) || /** @type {number} */ (record.consecutiveFailures) < 0) {
158
+ throw invalid(`${label} consecutiveFailures`);
159
+ }
160
+ const lastCheckedAt = optionalTimestamp(record.lastCheckedAt, `${label} lastCheckedAt`);
161
+ const openedAt = optionalTimestamp(record.openedAt, `${label} openedAt`);
162
+ return {
163
+ address: requiredString(record.address, `${label} address`),
164
+ consecutiveFailures: /** @type {number} */ (record.consecutiveFailures),
165
+ healthy: record.healthy,
166
+ id: requiredString(record.id, `${label} id`),
167
+ ipv6: record.ipv6,
168
+ isActive: record.isActive,
169
+ kind: oneOf(record.kind, ["direct", "relay"], `${label} kind`),
170
+ ...(lastCheckedAt === undefined ? {} : { lastCheckedAt }),
171
+ nodeId: requiredString(record.nodeId, `${label} nodeId`),
172
+ ...(openedAt === undefined ? {} : { openedAt }),
173
+ transport: requiredString(record.transport, `${label} transport`),
174
+ };
175
+ });
176
+ }
177
+
135
178
  /** @param {unknown} value @returns {readonly FeedItem[]} */
136
179
  function parseFeed(value) {
137
180
  if (!Array.isArray(value)) throw invalid("feed");
@@ -1,5 +1,10 @@
1
1
  // @ts-check
2
2
 
3
+ import { TransportError } from "../errors/index.js";
4
+
5
+ /**
6
+ * @typedef {import("../models/owner-views.js").ConnectionEntry} ConnectionEntry
7
+ */
3
8
  /**
4
9
  * @typedef {import("../models/owner-views.js").FeedItem} FeedItem
5
10
  */
@@ -63,6 +68,21 @@ export class OwnerViewService {
63
68
  : this.#onlineRepository.listFeed(params));
64
69
  }
65
70
  /**
71
+ * Connections are live transport state read from the online repository, with the local
72
+ * `connections:default` projection as the unreachable-node fallback (mirrors #2440): when the
73
+ * online read fails with a `TransportError` (node offline / path down) the last-known cached
74
+ * rows are returned so first paint still shows connections. Any other error propagates.
75
+ * @returns {Promise<readonly ConnectionEntry[]>}
76
+ */
77
+ async listConnections() {
78
+ try {
79
+ return await this.#onlineRepository.listConnections();
80
+ } catch (error) {
81
+ if (error instanceof TransportError) return await this.#repository.listConnections();
82
+ throw error;
83
+ }
84
+ }
85
+ /**
66
86
  * @returns {Promise<readonly OperationalSummary[]>}
67
87
  */
68
88
  async readOperational() {
@@ -5,6 +5,10 @@ import { DomainError } from "../errors/index.js";
5
5
  const HANDOFF_POLL_INTERVAL_MS = 3000;
6
6
  const HANDOFF_TRANSPORT_LOST_POLLS = 2;
7
7
  const RECONNECT_POLL_INTERVAL_MS = 4000;
8
+ /** Default deadline for {@link WifiProvisioningService#status}. The node's own wifi-status
9
+ * proxy deadline is 2s, so 3s covers a slow-but-alive answer without stranding the caller much
10
+ * past that. See the doc comment on `status()` for why this exists at all. */
11
+ const STATUS_DEADLINE_MS = 3000;
8
12
  export class WifiProvisioningService {
9
13
  /**
10
14
  * @param {() => boolean} [shouldContinue]
@@ -45,14 +49,33 @@ export class WifiProvisioningService {
45
49
  * node side (the join tears down and re-adds the connection) and a handshake flake in that
46
50
  * window strands the node back in setup AP mode. The wire values are node-server's
47
51
  * `http_status` PascalCase strings; only an explicit `"Connected"` counts.
52
+ *
53
+ * `#node.invoke()` (`PrePairingHomeNodeClient`) issues a bare same-origin `fetch` with no
54
+ * `AbortSignal`/timeout of its own. Without a deadline HERE, a request that never settles — a
55
+ * phone mid-network-switch, a thrashing Pi Zero 2W, exactly the hardware this probe targets —
56
+ * used to hang this call forever, which stranded `OnboardingFlowService#probeStatus()` on
57
+ * step 3's "Checking your node." with `#probing` never clearing and no interactive element
58
+ * rendered (no rescan button — the picker's probing branch `return`s before building one).
59
+ * Racing the delay port caps that: past `deadlineMs` the outcome collapses to `unreachable`,
60
+ * same as every other failure this method already treats as a first-class outcome.
61
+ * @param {number} [deadlineMs] Defaults to {@link STATUS_DEADLINE_MS} (3s — the node's own
62
+ * wifi-status proxy deadline is 2s). `OnboardingFlowService#probeStatus()` passes a shorter
63
+ * value for its single retry: a node that missed the full deadline once is not going to
64
+ * answer within milliseconds, so the retry's own deadline only needs to catch a *transient*
65
+ * miss, not wait out a hung one a second time.
48
66
  * @returns {Promise<WifiStatusOutcome>}
49
67
  */
50
- async status() {
68
+ async status(deadlineMs = STATUS_DEADLINE_MS) {
51
69
  try {
52
- const wire = await this.#node.invoke({
53
- operation: "GET /api/v2/wifi/status",
54
- payload: {},
55
- });
70
+ const wire = await Promise.race([
71
+ this.#node.invoke({
72
+ operation: "GET /api/v2/wifi/status",
73
+ payload: {},
74
+ }),
75
+ this.#delay.wait(deadlineMs).then(() => {
76
+ throw new Error("wifi status request exceeded its deadline");
77
+ }),
78
+ ]);
56
79
  if (wire.connection_status !== "Connected")
57
80
  return { kind: "not-connected" };
58
81
  return {