@econ-v1/domain 6.5.0 → 6.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +12 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/models/owner-views.d.ts +1 -1
- package/dist/models/owner-views.d.ts.map +1 -1
- package/dist/models/release-manifest.d.ts +64 -0
- package/dist/models/release-manifest.d.ts.map +1 -0
- package/dist/models/release-manifest.js +147 -0
- package/dist/models/release-manifest.js.map +1 -0
- package/dist/queries/discovery.d.ts +13 -0
- package/dist/queries/discovery.d.ts.map +1 -0
- package/dist/queries/discovery.js +27 -0
- package/dist/queries/discovery.js.map +1 -0
- package/dist/queries/onboarding-status.d.ts +13 -0
- package/dist/queries/onboarding-status.d.ts.map +1 -0
- package/dist/queries/onboarding-status.js +27 -0
- package/dist/queries/onboarding-status.js.map +1 -0
- package/dist/services/discovery-probe-service.d.ts +60 -0
- package/dist/services/discovery-probe-service.d.ts.map +1 -0
- package/dist/services/discovery-probe-service.js +129 -0
- package/dist/services/discovery-probe-service.js.map +1 -0
- package/dist/services/lan-candidate-refresh-service.d.ts.map +1 -1
- package/dist/services/lan-candidate-refresh-service.js +61 -14
- package/dist/services/lan-candidate-refresh-service.js.map +1 -1
- package/dist/services/onboarding-status-service.d.ts +46 -0
- package/dist/services/onboarding-status-service.d.ts.map +1 -0
- package/dist/services/onboarding-status-service.js +32 -0
- package/dist/services/onboarding-status-service.js.map +1 -0
- package/dist/services/release-manifest-verifier.d.ts +37 -0
- package/dist/services/release-manifest-verifier.d.ts.map +1 -0
- package/dist/services/release-manifest-verifier.js +84 -0
- package/dist/services/release-manifest-verifier.js.map +1 -0
- package/dist/services/transport-manager.d.ts +25 -6
- package/dist/services/transport-manager.d.ts.map +1 -1
- package/dist/services/transport-manager.js +185 -84
- package/dist/services/transport-manager.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ export type { ConversationServiceOptions, SendMessageInput } from "./services/co
|
|
|
22
22
|
export { createConversationLogSync } from "./services/conversation-sync.js";
|
|
23
23
|
export type { ConversationSyncContext } from "./services/conversation-sync.js";
|
|
24
24
|
export type { JsonObject, JsonPrimitive, JsonValue, LiveQueryDefinition, OutboxIntent, OutboxIntentState, QueryDiff, RepositoryWrite, } from "./models/index.js";
|
|
25
|
+
export { canonicalOutboxPayload } from "./models/index.js";
|
|
25
26
|
export { AuthoritativeMirror, AuthoritativeRevalidationRequiredError, LogSync, RevisionMerge, } from "./services/sync/index.js";
|
|
26
27
|
export type { AuthoritativeCommand, AuthoritativeCommandOptions, AuthoritativeMirrorOptions, AuthoritativeSnapshot, LogSyncOptions, RevisionCommandResult, RevisionConflict, RevisionEntity, RevisionIntent, RevisionMergeOptions, RevisionWriteInput, SyncApplyResult, SyncDelta, SyncDeltaContext, SyncStrategy, SyncStrategyKind, } from "./services/sync/index.js";
|
|
27
28
|
export { RevisionedDomainService, parseRevisionConflictRecord, } from "./services/revisioned-domain-service.js";
|
|
@@ -33,7 +34,7 @@ export type { ClaimOptions, FailureOptions, OutboxPersistence, OutboxServiceOpti
|
|
|
33
34
|
export { SessionService } from "./services/session-service.js";
|
|
34
35
|
export { ExpiredInvoiceError, InsufficientWalletBalanceError, OfflineWalletCommandError, WalletCommandRejectedError, WalletFreshStateRequiredError, WalletMirrorService, } from "./services/wallet-mirror-service.js";
|
|
35
36
|
export type { WalletMirrorServiceOptions } from "./services/wallet-mirror-service.js";
|
|
36
|
-
export { TransportManager } from "./services/transport-manager.js";
|
|
37
|
+
export { canonicalHttpCandidateOrigin, TransportManager } from "./services/transport-manager.js";
|
|
37
38
|
export type { TransportManagerOptions } from "./services/transport-manager.js";
|
|
38
39
|
export { normalizeAdvertisement, nodeMetadataCandidates, PeerDirectoryService, uniqueAddresses, } from "./services/peer-directory-service.js";
|
|
39
40
|
export type { NodeMetadataWire, PeerAdvertisement } from "./services/peer-directory-service.js";
|
|
@@ -44,4 +45,14 @@ export type { FeedItem, FeedItemKind, FeedQuery, HomeStatus, HomeSummary, Operat
|
|
|
44
45
|
export { OWNER_VIEW_SYNC_STRATEGIES } from "./models/owner-views.js";
|
|
45
46
|
export { LanCandidateRefreshService } from "./services/lan-candidate-refresh-service.js";
|
|
46
47
|
export type { LanCandidateRefreshServiceOptions } from "./services/lan-candidate-refresh-service.js";
|
|
48
|
+
export { DiscoveryProbeService, secureLanOrigin } from "./services/discovery-probe-service.js";
|
|
49
|
+
export type { DiscoveryCandidateRow, DiscoveryCandidateStatus, DiscoveryFoundNode, DiscoveryNodeIdentityWire, DiscoveryProbeServiceOptions, } from "./services/discovery-probe-service.js";
|
|
50
|
+
export { createDiscoveryCandidatesQuery, DISCOVERY_CANDIDATES_QUERY } from "./queries/discovery.js";
|
|
51
|
+
export { OnboardingStatusService } from "./services/onboarding-status-service.js";
|
|
52
|
+
export type { OnboardingLifecycleState, OnboardingLifecycleStatusRow, OnboardingStatusServiceOptions, OnboardingStatusWire, } from "./services/onboarding-status-service.js";
|
|
53
|
+
export { createOnboardingStatusQuery, ONBOARDING_STATUS_QUERY } from "./queries/onboarding-status.js";
|
|
54
|
+
export { RELEASE_MANIFEST_LIMITS, RELEASE_MANIFEST_VERSION, parseSignedReleaseManifest, unsignedReleaseManifestToJson, } from "./models/release-manifest.js";
|
|
55
|
+
export type { ReleaseManifestAsset, ReleaseManifestVersionRange, SignedReleaseManifest, UnsignedReleaseManifest, } from "./models/release-manifest.js";
|
|
56
|
+
export { RELEASE_MANIFEST_REJECTION_REASONS, verifyReleaseManifest, } from "./services/release-manifest-verifier.js";
|
|
57
|
+
export type { ReleaseManifestRejectionReason, ReleaseManifestTrustedKey, ReleaseManifestVerification, ReleaseManifestVerifyOptions, } from "./services/release-manifest-verifier.js";
|
|
47
58
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9,16 +9,23 @@ export { createNotificationsQuery, parseNotificationListParams } from "./queries
|
|
|
9
9
|
export { createL402HistoryQuery, createPaymentHistoryQuery, createWalletBalanceQuery, L402_HISTORY_QUERY, PAYMENT_HISTORY_QUERY, WALLET_BALANCE_QUERY, } from "./queries/wallet.js";
|
|
10
10
|
export { ConversationService } from "./services/conversation-service.js";
|
|
11
11
|
export { createConversationLogSync } from "./services/conversation-sync.js";
|
|
12
|
+
export { canonicalOutboxPayload } from "./models/index.js";
|
|
12
13
|
export { AuthoritativeMirror, AuthoritativeRevalidationRequiredError, LogSync, RevisionMerge, } from "./services/sync/index.js";
|
|
13
14
|
export { RevisionedDomainService, parseRevisionConflictRecord, } from "./services/revisioned-domain-service.js";
|
|
14
15
|
export { isDelegationActive, isDevicePublicIdentity, normalizeDelegation, publicIdentityDiagnostic, } from "./models/index.js";
|
|
15
16
|
export { OutboxIdempotencyConflictError, OutboxRevalidationRequiredError, OutboxService, OutboxTransitionError, } from "./services/outbox-service.js";
|
|
16
17
|
export { SessionService } from "./services/session-service.js";
|
|
17
18
|
export { ExpiredInvoiceError, InsufficientWalletBalanceError, OfflineWalletCommandError, WalletCommandRejectedError, WalletFreshStateRequiredError, WalletMirrorService, } from "./services/wallet-mirror-service.js";
|
|
18
|
-
export { TransportManager } from "./services/transport-manager.js";
|
|
19
|
+
export { canonicalHttpCandidateOrigin, TransportManager } from "./services/transport-manager.js";
|
|
19
20
|
export { normalizeAdvertisement, nodeMetadataCandidates, PeerDirectoryService, uniqueAddresses, } from "./services/peer-directory-service.js";
|
|
20
21
|
export { GossipService } from "./services/gossip-service.js";
|
|
21
22
|
export { OwnerViewService } from "./services/owner-view-service.js";
|
|
22
23
|
export { OWNER_VIEW_SYNC_STRATEGIES } from "./models/owner-views.js";
|
|
23
24
|
export { LanCandidateRefreshService } from "./services/lan-candidate-refresh-service.js";
|
|
25
|
+
export { DiscoveryProbeService, secureLanOrigin } from "./services/discovery-probe-service.js";
|
|
26
|
+
export { createDiscoveryCandidatesQuery, DISCOVERY_CANDIDATES_QUERY } from "./queries/discovery.js";
|
|
27
|
+
export { OnboardingStatusService } from "./services/onboarding-status-service.js";
|
|
28
|
+
export { createOnboardingStatusQuery, ONBOARDING_STATUS_QUERY } from "./queries/onboarding-status.js";
|
|
29
|
+
export { RELEASE_MANIFEST_LIMITS, RELEASE_MANIFEST_VERSION, parseSignedReleaseManifest, unsignedReleaseManifestToJson, } from "./models/release-manifest.js";
|
|
30
|
+
export { RELEASE_MANIFEST_REJECTION_REASONS, verifyReleaseManifest, } from "./services/release-manifest-verifier.js";
|
|
24
31
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,qBAAqB,EACrB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAU3B,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAS3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAiBvD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,oCAAoC,EACpC,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,iCAAiC,EACjC,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AAYjC,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,EAC/B,2BAA2B,EAC3B,+BAA+B,GAChC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAcnG,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAY5E,OAAO,EACL,mBAAmB,EACnB,sCAAsC,EACtC,OAAO,EACP,aAAa,GACd,MAAM,0BAA0B,CAAC;AAmBlC,OAAO,EACL,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,yCAAyC,CAAC;AAQjD,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,aAAa,EACb,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AAOtC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,yBAAyB,EACzB,0BAA0B,EAC1B,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,7 +39,7 @@ export interface FeedQuery {
|
|
|
39
39
|
}
|
|
40
40
|
export type StorageStatus = "blocked" | "ready" | "recovering";
|
|
41
41
|
export type SyncStatus = "current" | "stale" | "syncing";
|
|
42
|
-
export type OperationalTransport = "iroh-relay" | "lan-direct" | "offline" | "wan-direct";
|
|
42
|
+
export type OperationalTransport = "iroh-relay" | "lan-direct" | "lan-webtransport" | "offline" | "wan-direct" | "webrtc-direct";
|
|
43
43
|
export interface OperationalSummary {
|
|
44
44
|
readonly outboxDepth: number;
|
|
45
45
|
readonly storage: StorageStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owner-views.d.ts","sourceRoot":"","sources":["../../src/models/owner-views.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B;;;;;CAK7B,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,OAAO,0BAA0B,CAAC,CAAC;AAEjH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;CAC9B;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE7D,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,CAAC;AAC/D,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AACzD,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS,GAAG,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"owner-views.d.ts","sourceRoot":"","sources":["../../src/models/owner-views.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B;;;;;CAK7B,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,OAAO,0BAA0B,CAAC,CAAC;AAEjH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;CAC9B;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE7D,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,CAAC;AAC/D,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AACzD,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,YAAY,GAAG,kBAAkB,GAAG,SAAS,GAAG,YAAY,GAAG,eAAe,CAAC;AAEjI,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;CAC1C;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;IAC1D,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;IAC9E,eAAe,IAAI,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IACpD,sBAAsB,IAAI,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;CACnE"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { JsonObject } from "./json.js";
|
|
2
|
+
/**
|
|
3
|
+
* The #1815 Phase 1 trusted signed release-manifest contract (gap-audit §3 "Phase 1";
|
|
4
|
+
* lifecycle spec §9 "PWA Release and Rollback Contract"). This is the wire shape a build
|
|
5
|
+
* signs (`system/pwa/scripts/build-service-worker.mjs`) and a client verifies
|
|
6
|
+
* (`release-manifest-verifier.ts`) before the existing staged-cache pipeline
|
|
7
|
+
* (`client/adapters-web/src/cache/service-worker-runtime.ts`) is allowed to promote a new
|
|
8
|
+
* shell. Every bound below exists so a malformed/oversized candidate is rejected before any
|
|
9
|
+
* expensive work (signature check, asset download) runs on it.
|
|
10
|
+
*/
|
|
11
|
+
export declare const RELEASE_MANIFEST_VERSION = 1;
|
|
12
|
+
/** Bounds enforced by `parseSignedReleaseManifest` — kept alongside the shape they guard. */
|
|
13
|
+
export declare const RELEASE_MANIFEST_LIMITS: {
|
|
14
|
+
readonly maxBuildIdLength: 128;
|
|
15
|
+
readonly maxChannelLength: 64;
|
|
16
|
+
readonly maxShellAssetUrlLength: 2048;
|
|
17
|
+
readonly maxShellAssets: 4096;
|
|
18
|
+
readonly maxShellVersionLength: 64;
|
|
19
|
+
readonly maxSigningKeyIdLength: 128;
|
|
20
|
+
readonly maxVersionValue: 1000000;
|
|
21
|
+
};
|
|
22
|
+
export interface ReleaseManifestAsset {
|
|
23
|
+
readonly sha256: string;
|
|
24
|
+
readonly url: string;
|
|
25
|
+
}
|
|
26
|
+
/** An inclusive `[min, max]` compatibility range for an integer version counter (protocol
|
|
27
|
+
* version or storage schema version — both are plain incrementing integers elsewhere in the
|
|
28
|
+
* client, see `client/adapters-web/src/storage/migrator.ts`'s `SqliteMigration.version`). */
|
|
29
|
+
export interface ReleaseManifestVersionRange {
|
|
30
|
+
readonly max: number;
|
|
31
|
+
readonly min: number;
|
|
32
|
+
}
|
|
33
|
+
/** Every field EXCEPT `signature` — exactly what gets canonicalized and signed. Keeping this
|
|
34
|
+
* as its own type (rather than `Omit<SignedReleaseManifest, "signature">` inline everywhere)
|
|
35
|
+
* makes it impossible to accidentally feed the signature itself into the canonicalized
|
|
36
|
+
* payload it is supposed to attest to. */
|
|
37
|
+
export interface UnsignedReleaseManifest {
|
|
38
|
+
readonly buildId: string;
|
|
39
|
+
readonly channel: string;
|
|
40
|
+
readonly issuedAtMs: number;
|
|
41
|
+
readonly manifestVersion: 1;
|
|
42
|
+
readonly protocolCompatibility: ReleaseManifestVersionRange;
|
|
43
|
+
readonly shellAssets: readonly ReleaseManifestAsset[];
|
|
44
|
+
readonly shellVersion: string;
|
|
45
|
+
readonly signingKeyId: string;
|
|
46
|
+
readonly storageSchemaCompatibility: ReleaseManifestVersionRange;
|
|
47
|
+
}
|
|
48
|
+
export interface SignedReleaseManifest extends UnsignedReleaseManifest {
|
|
49
|
+
/** Lowercase-hex-encoded 64-byte Ed25519 signature over
|
|
50
|
+
* `canonicalOutboxPayload(unsignedReleaseManifestToJson(this))`. */
|
|
51
|
+
readonly signature: string;
|
|
52
|
+
}
|
|
53
|
+
/** Converts to the `JsonValue`-typed shape `canonicalOutboxPayload` (reused from
|
|
54
|
+
* `outbox.ts` — the client's one canonical-JSON implementation) can walk. Field order here
|
|
55
|
+
* is irrelevant: `canonicalOutboxPayload` sorts object keys itself. */
|
|
56
|
+
export declare function unsignedReleaseManifestToJson(manifest: UnsignedReleaseManifest): JsonObject;
|
|
57
|
+
/**
|
|
58
|
+
* Bounded, fail-closed structural validation of an `unknown` candidate (JSON-parsed from
|
|
59
|
+
* the network or handed in directly). Returns `undefined` for anything that doesn't match
|
|
60
|
+
* the exact shape/bounds — callers surface that as the `"malformed"` verification reason.
|
|
61
|
+
* Never throws.
|
|
62
|
+
*/
|
|
63
|
+
export declare function parseSignedReleaseManifest(candidate: unknown): SignedReleaseManifest | undefined;
|
|
64
|
+
//# sourceMappingURL=release-manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-manifest.d.ts","sourceRoot":"","sources":["../../src/models/release-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C;;;;;;;;GAQG;AAEH,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,6FAA6F;AAC7F,eAAO,MAAM,uBAAuB;;;;;;;;CAQ1B,CAAC;AAEX,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;6FAE6F;AAC7F,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;0CAG0C;AAC1C,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;IAC5B,QAAQ,CAAC,qBAAqB,EAAE,2BAA2B,CAAC;IAC5D,QAAQ,CAAC,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACtD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;CAClE;AAED,MAAM,WAAW,qBAAsB,SAAQ,uBAAuB;IACpE;wEACoE;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;uEAEuE;AACvE,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,uBAAuB,GAAG,UAAU,CAkB3F;AAMD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,OAAO,GAAG,qBAAqB,GAAG,SAAS,CAgDhG"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The #1815 Phase 1 trusted signed release-manifest contract (gap-audit §3 "Phase 1";
|
|
3
|
+
* lifecycle spec §9 "PWA Release and Rollback Contract"). This is the wire shape a build
|
|
4
|
+
* signs (`system/pwa/scripts/build-service-worker.mjs`) and a client verifies
|
|
5
|
+
* (`release-manifest-verifier.ts`) before the existing staged-cache pipeline
|
|
6
|
+
* (`client/adapters-web/src/cache/service-worker-runtime.ts`) is allowed to promote a new
|
|
7
|
+
* shell. Every bound below exists so a malformed/oversized candidate is rejected before any
|
|
8
|
+
* expensive work (signature check, asset download) runs on it.
|
|
9
|
+
*/
|
|
10
|
+
export const RELEASE_MANIFEST_VERSION = 1;
|
|
11
|
+
/** Bounds enforced by `parseSignedReleaseManifest` — kept alongside the shape they guard. */
|
|
12
|
+
export const RELEASE_MANIFEST_LIMITS = {
|
|
13
|
+
maxBuildIdLength: 128,
|
|
14
|
+
maxChannelLength: 64,
|
|
15
|
+
maxShellAssetUrlLength: 2048,
|
|
16
|
+
maxShellAssets: 4096,
|
|
17
|
+
maxShellVersionLength: 64,
|
|
18
|
+
maxSigningKeyIdLength: 128,
|
|
19
|
+
maxVersionValue: 1_000_000,
|
|
20
|
+
};
|
|
21
|
+
/** Converts to the `JsonValue`-typed shape `canonicalOutboxPayload` (reused from
|
|
22
|
+
* `outbox.ts` — the client's one canonical-JSON implementation) can walk. Field order here
|
|
23
|
+
* is irrelevant: `canonicalOutboxPayload` sorts object keys itself. */
|
|
24
|
+
export function unsignedReleaseManifestToJson(manifest) {
|
|
25
|
+
return {
|
|
26
|
+
buildId: manifest.buildId,
|
|
27
|
+
channel: manifest.channel,
|
|
28
|
+
issuedAtMs: manifest.issuedAtMs,
|
|
29
|
+
manifestVersion: manifest.manifestVersion,
|
|
30
|
+
protocolCompatibility: {
|
|
31
|
+
max: manifest.protocolCompatibility.max,
|
|
32
|
+
min: manifest.protocolCompatibility.min,
|
|
33
|
+
},
|
|
34
|
+
shellAssets: manifest.shellAssets.map((asset) => ({ sha256: asset.sha256, url: asset.url })),
|
|
35
|
+
shellVersion: manifest.shellVersion,
|
|
36
|
+
signingKeyId: manifest.signingKeyId,
|
|
37
|
+
storageSchemaCompatibility: {
|
|
38
|
+
max: manifest.storageSchemaCompatibility.max,
|
|
39
|
+
min: manifest.storageSchemaCompatibility.min,
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const HEX_64_BYTES = /^[0-9a-f]{128}$/u;
|
|
44
|
+
const SHA256_HEX = /^[0-9a-f]{64}$/u;
|
|
45
|
+
const CHANNEL_PATTERN = /^[a-z][a-z0-9-]{0,63}$/u;
|
|
46
|
+
/**
|
|
47
|
+
* Bounded, fail-closed structural validation of an `unknown` candidate (JSON-parsed from
|
|
48
|
+
* the network or handed in directly). Returns `undefined` for anything that doesn't match
|
|
49
|
+
* the exact shape/bounds — callers surface that as the `"malformed"` verification reason.
|
|
50
|
+
* Never throws.
|
|
51
|
+
*/
|
|
52
|
+
export function parseSignedReleaseManifest(candidate) {
|
|
53
|
+
if (typeof candidate !== "object" || candidate === null || Array.isArray(candidate))
|
|
54
|
+
return undefined;
|
|
55
|
+
const value = candidate;
|
|
56
|
+
if (value.manifestVersion !== RELEASE_MANIFEST_VERSION)
|
|
57
|
+
return undefined;
|
|
58
|
+
const buildId = boundedString(value.buildId, 1, RELEASE_MANIFEST_LIMITS.maxBuildIdLength);
|
|
59
|
+
if (buildId === undefined)
|
|
60
|
+
return undefined;
|
|
61
|
+
const channel = typeof value.channel === "string" && CHANNEL_PATTERN.test(value.channel)
|
|
62
|
+
? value.channel
|
|
63
|
+
: undefined;
|
|
64
|
+
if (channel === undefined || channel.length > RELEASE_MANIFEST_LIMITS.maxChannelLength)
|
|
65
|
+
return undefined;
|
|
66
|
+
if (!isSafeNonNegativeInteger(value.issuedAtMs))
|
|
67
|
+
return undefined;
|
|
68
|
+
const signingKeyId = boundedString(value.signingKeyId, 1, RELEASE_MANIFEST_LIMITS.maxSigningKeyIdLength);
|
|
69
|
+
if (signingKeyId === undefined)
|
|
70
|
+
return undefined;
|
|
71
|
+
const shellVersion = boundedString(value.shellVersion, 1, RELEASE_MANIFEST_LIMITS.maxShellVersionLength);
|
|
72
|
+
if (shellVersion === undefined)
|
|
73
|
+
return undefined;
|
|
74
|
+
const signature = typeof value.signature === "string" && HEX_64_BYTES.test(value.signature)
|
|
75
|
+
? value.signature
|
|
76
|
+
: undefined;
|
|
77
|
+
if (signature === undefined)
|
|
78
|
+
return undefined;
|
|
79
|
+
const protocolCompatibility = parseVersionRange(value.protocolCompatibility);
|
|
80
|
+
if (protocolCompatibility === undefined)
|
|
81
|
+
return undefined;
|
|
82
|
+
const storageSchemaCompatibility = parseVersionRange(value.storageSchemaCompatibility);
|
|
83
|
+
if (storageSchemaCompatibility === undefined)
|
|
84
|
+
return undefined;
|
|
85
|
+
const shellAssets = parseShellAssets(value.shellAssets);
|
|
86
|
+
if (shellAssets === undefined)
|
|
87
|
+
return undefined;
|
|
88
|
+
return {
|
|
89
|
+
buildId,
|
|
90
|
+
channel,
|
|
91
|
+
issuedAtMs: value.issuedAtMs,
|
|
92
|
+
manifestVersion: RELEASE_MANIFEST_VERSION,
|
|
93
|
+
protocolCompatibility,
|
|
94
|
+
shellAssets,
|
|
95
|
+
shellVersion,
|
|
96
|
+
signature,
|
|
97
|
+
signingKeyId,
|
|
98
|
+
storageSchemaCompatibility,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function parseVersionRange(candidate) {
|
|
102
|
+
if (typeof candidate !== "object" || candidate === null || Array.isArray(candidate))
|
|
103
|
+
return undefined;
|
|
104
|
+
const value = candidate;
|
|
105
|
+
const { maxVersionValue } = RELEASE_MANIFEST_LIMITS;
|
|
106
|
+
if (!isSafeNonNegativeInteger(value.min) ||
|
|
107
|
+
!isSafeNonNegativeInteger(value.max) ||
|
|
108
|
+
value.min > maxVersionValue ||
|
|
109
|
+
value.max > maxVersionValue ||
|
|
110
|
+
value.min > value.max)
|
|
111
|
+
return undefined;
|
|
112
|
+
return { max: value.max, min: value.min };
|
|
113
|
+
}
|
|
114
|
+
function parseShellAssets(candidate) {
|
|
115
|
+
if (!Array.isArray(candidate) || candidate.length < 1)
|
|
116
|
+
return undefined;
|
|
117
|
+
if (candidate.length > RELEASE_MANIFEST_LIMITS.maxShellAssets)
|
|
118
|
+
return undefined;
|
|
119
|
+
const assets = [];
|
|
120
|
+
for (const entry of candidate) {
|
|
121
|
+
if (typeof entry !== "object" || entry === null || Array.isArray(entry))
|
|
122
|
+
return undefined;
|
|
123
|
+
const record = entry;
|
|
124
|
+
// Root-relative in production (`/assets/app-<hash>.js`, emitted by
|
|
125
|
+
// `build-service-worker.mjs`); absolute `https://` in unit tests, where constructing a
|
|
126
|
+
// `Request` needs an explicit origin (no implicit service-worker-script base exists
|
|
127
|
+
// outside a real browser). Both are legitimate — the security-relevant check is the
|
|
128
|
+
// per-asset SHA-256 pin the existing staged-cache pipeline already enforces
|
|
129
|
+
// unconditionally, not the asset's URL shape.
|
|
130
|
+
const url = boundedString(record.url, 1, RELEASE_MANIFEST_LIMITS.maxShellAssetUrlLength);
|
|
131
|
+
if (url === undefined)
|
|
132
|
+
return undefined;
|
|
133
|
+
if (typeof record.sha256 !== "string" || !SHA256_HEX.test(record.sha256))
|
|
134
|
+
return undefined;
|
|
135
|
+
assets.push({ sha256: record.sha256, url });
|
|
136
|
+
}
|
|
137
|
+
return assets;
|
|
138
|
+
}
|
|
139
|
+
function boundedString(value, minLength, maxLength) {
|
|
140
|
+
return typeof value === "string" && value.length >= minLength && value.length <= maxLength
|
|
141
|
+
? value
|
|
142
|
+
: undefined;
|
|
143
|
+
}
|
|
144
|
+
function isSafeNonNegativeInteger(value) {
|
|
145
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=release-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-manifest.js","sourceRoot":"","sources":["../../src/models/release-manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { LiveQueryDefinition } from "../models/live-query-definition.js";
|
|
2
|
+
import type { DiscoveryCandidateRow, DiscoveryProbeService } from "../services/discovery-probe-service.js";
|
|
3
|
+
export declare const DISCOVERY_CANDIDATES_QUERY: "onboarding.discovery.v1";
|
|
4
|
+
/**
|
|
5
|
+
* The live view behind the `onboarding.discovery.v1` seam
|
|
6
|
+
* (`client/rpc/src/onboarding/discovery-contract.ts`). `requiresDurableStorage: false`:
|
|
7
|
+
* `DiscoveryProbeService.snapshot()` is in-memory plus a home-node HTTP round trip, never
|
|
8
|
+
* the OPFS-backed local SQLite cache, so onboarding discovery keeps working even before that
|
|
9
|
+
* cache exists — the device isn't claimed yet at this step (#1661's rationale applies here
|
|
10
|
+
* too, see `owner-views.ts`).
|
|
11
|
+
*/
|
|
12
|
+
export declare function createDiscoveryCandidatesQuery(service: Pick<DiscoveryProbeService, "snapshot">): LiveQueryDefinition<unknown, DiscoveryCandidateRow>;
|
|
13
|
+
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/queries/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAE3G,eAAO,MAAM,0BAA0B,EAAG,yBAAkC,CAAC;AAE7E;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE,UAAU,CAAC,GAC/C,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAWrD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export const DISCOVERY_CANDIDATES_QUERY = "onboarding.discovery.v1";
|
|
2
|
+
/**
|
|
3
|
+
* The live view behind the `onboarding.discovery.v1` seam
|
|
4
|
+
* (`client/rpc/src/onboarding/discovery-contract.ts`). `requiresDurableStorage: false`:
|
|
5
|
+
* `DiscoveryProbeService.snapshot()` is in-memory plus a home-node HTTP round trip, never
|
|
6
|
+
* the OPFS-backed local SQLite cache, so onboarding discovery keeps working even before that
|
|
7
|
+
* cache exists — the device isn't claimed yet at this step (#1661's rationale applies here
|
|
8
|
+
* too, see `owner-views.ts`).
|
|
9
|
+
*/
|
|
10
|
+
export function createDiscoveryCandidatesQuery(service) {
|
|
11
|
+
return {
|
|
12
|
+
invalidateOn: ["domain.entity-changed"],
|
|
13
|
+
key: (row) => row.address,
|
|
14
|
+
name: DISCOVERY_CANDIDATES_QUERY,
|
|
15
|
+
requiresDurableStorage: false,
|
|
16
|
+
run: async (params) => {
|
|
17
|
+
parseEmptyParams(params);
|
|
18
|
+
return service.snapshot();
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function parseEmptyParams(value) {
|
|
23
|
+
if (value === null || typeof value !== "object" || Array.isArray(value) || Object.keys(value).length !== 0) {
|
|
24
|
+
throw new TypeError("Onboarding discovery query does not accept parameters");
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/queries/discovery.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,0BAA0B,GAAG,yBAAkC,CAAC;AAE7E;;;;;;;GAOG;AACH,MAAM,UAAU,8BAA8B,CAC5C,OAAgD;IAEhD,OAAO;QACL,YAAY,EAAE,CAAC,uBAAuB,CAAC;QACvC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO;QACzB,IAAI,EAAE,0BAA0B;QAChC,sBAAsB,EAAE,KAAK;QAC7B,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACpB,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3G,MAAM,IAAI,SAAS,CAAC,uDAAuD,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { LiveQueryDefinition } from "../models/live-query-definition.js";
|
|
2
|
+
import type { OnboardingLifecycleStatusRow, OnboardingStatusService } from "../services/onboarding-status-service.js";
|
|
3
|
+
export declare const ONBOARDING_STATUS_QUERY: "onboarding.status.v1";
|
|
4
|
+
/**
|
|
5
|
+
* The live view behind the `onboarding.status.v1` seam
|
|
6
|
+
* (`client/rpc/src/onboarding/onboarding-contract.ts`). `requiresDurableStorage: false`:
|
|
7
|
+
* `OnboardingStatusService.status()` is an in-memory session check plus a home-node HTTP
|
|
8
|
+
* round trip, never the OPFS-backed local SQLite cache, so this stays queryable before the
|
|
9
|
+
* device is claimed/paired — the same rationale as `onboarding.discovery.v1`
|
|
10
|
+
* (`./discovery.ts`) and `client-storage.state.v1` (#1661).
|
|
11
|
+
*/
|
|
12
|
+
export declare function createOnboardingStatusQuery(service: Pick<OnboardingStatusService, "status">): LiveQueryDefinition<unknown, OnboardingLifecycleStatusRow>;
|
|
13
|
+
//# sourceMappingURL=onboarding-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding-status.d.ts","sourceRoot":"","sources":["../../src/queries/onboarding-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAEtH,eAAO,MAAM,uBAAuB,EAAG,sBAA+B,CAAC;AAEvE;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC,GAC/C,mBAAmB,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAW5D"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export const ONBOARDING_STATUS_QUERY = "onboarding.status.v1";
|
|
2
|
+
/**
|
|
3
|
+
* The live view behind the `onboarding.status.v1` seam
|
|
4
|
+
* (`client/rpc/src/onboarding/onboarding-contract.ts`). `requiresDurableStorage: false`:
|
|
5
|
+
* `OnboardingStatusService.status()` is an in-memory session check plus a home-node HTTP
|
|
6
|
+
* round trip, never the OPFS-backed local SQLite cache, so this stays queryable before the
|
|
7
|
+
* device is claimed/paired — the same rationale as `onboarding.discovery.v1`
|
|
8
|
+
* (`./discovery.ts`) and `client-storage.state.v1` (#1661).
|
|
9
|
+
*/
|
|
10
|
+
export function createOnboardingStatusQuery(service) {
|
|
11
|
+
return {
|
|
12
|
+
invalidateOn: ["domain.entity-changed"],
|
|
13
|
+
key: (row) => row.id,
|
|
14
|
+
name: ONBOARDING_STATUS_QUERY,
|
|
15
|
+
requiresDurableStorage: false,
|
|
16
|
+
run: async (params) => {
|
|
17
|
+
parseEmptyParams(params);
|
|
18
|
+
return [await service.status()];
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function parseEmptyParams(value) {
|
|
23
|
+
if (value === null || typeof value !== "object" || Array.isArray(value) || Object.keys(value).length !== 0) {
|
|
24
|
+
throw new TypeError("Onboarding status query does not accept parameters");
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=onboarding-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding-status.js","sourceRoot":"","sources":["../../src/queries/onboarding-status.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,uBAAuB,GAAG,sBAA+B,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B,CACzC,OAAgD;IAEhD,OAAO;QACL,YAAY,EAAE,CAAC,uBAAuB,CAAC;QACvC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE;QACpB,IAAI,EAAE,uBAAuB;QAC7B,sBAAsB,EAAE,KAAK;QAC7B,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACpB,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAClC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3G,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { HomeNodeDialer } from "@econ-v1/ports";
|
|
2
|
+
import type { LanCandidateRefreshService } from "./lan-candidate-refresh-service.js";
|
|
3
|
+
/**
|
|
4
|
+
* The #1815 interim "search the node on the LAN" probe/verify logic — platform-free (no
|
|
5
|
+
* `fetch`, no adapters-web import). Given explicit candidate addresses (manually entered
|
|
6
|
+
* today; a signed bootstrap descriptor's `lan_candidates` in the Phase-2 follow-on), it
|
|
7
|
+
* dials each one through the injected `HomeNodeDialer` (the same port
|
|
8
|
+
* `TransportManager`/`probeLanCandidate` implement) and proves the responder's stable node
|
|
9
|
+
* identity before ever calling it "found" — reachability alone never promotes a candidate
|
|
10
|
+
* (fail-closed, per the umbrella spec's §7/§3).
|
|
11
|
+
*/
|
|
12
|
+
export type DiscoveryCandidateStatus = "probing" | "reachable" | "verified" | "unreachable";
|
|
13
|
+
export interface DiscoveryFoundNode {
|
|
14
|
+
readonly displayName: string;
|
|
15
|
+
readonly maskedNodeId: string;
|
|
16
|
+
}
|
|
17
|
+
export interface DiscoveryCandidateRow {
|
|
18
|
+
readonly address: string;
|
|
19
|
+
readonly node?: DiscoveryFoundNode;
|
|
20
|
+
readonly status: DiscoveryCandidateStatus;
|
|
21
|
+
}
|
|
22
|
+
/** The subset of `GET /api/v2/node/metadata`'s wire shape identity-proof reads. */
|
|
23
|
+
export interface DiscoveryNodeIdentityWire {
|
|
24
|
+
readonly friendly_name?: unknown;
|
|
25
|
+
readonly node_id?: unknown;
|
|
26
|
+
}
|
|
27
|
+
export interface DiscoveryProbeServiceOptions {
|
|
28
|
+
readonly dialer: HomeNodeDialer;
|
|
29
|
+
/** Notified with the full current snapshot after every candidate status transition. */
|
|
30
|
+
readonly onChange?: (rows: readonly DiscoveryCandidateRow[]) => void;
|
|
31
|
+
/**
|
|
32
|
+
* Persists a promoted candidate as the device's remembered home-node connection
|
|
33
|
+
* metadata. Reused rather than reimplemented — its `refresh()` already performs the
|
|
34
|
+
* same identity-proof read (`nodeMetadataCandidates` throws on a missing node id) this
|
|
35
|
+
* service uses for `probe()`, so promotion re-proves identity fail-closed too.
|
|
36
|
+
*/
|
|
37
|
+
readonly refresh: Pick<LanCandidateRefreshService, "refresh">;
|
|
38
|
+
}
|
|
39
|
+
export declare class DiscoveryProbeService {
|
|
40
|
+
#private;
|
|
41
|
+
constructor(options: DiscoveryProbeServiceOptions);
|
|
42
|
+
snapshot(): readonly DiscoveryCandidateRow[];
|
|
43
|
+
/** Probes every address in parallel, replacing the previous candidate set. */
|
|
44
|
+
probe(addresses: readonly string[]): Promise<readonly DiscoveryCandidateRow[]>;
|
|
45
|
+
/**
|
|
46
|
+
* Promotes a previously verified candidate as the device's home-node route. Fail-closed:
|
|
47
|
+
* throws (never silently accepts) unless `probe()` most recently reported this exact
|
|
48
|
+
* address as `"verified"` — "continue anyway" on an unverified or stale candidate is not
|
|
49
|
+
* offered.
|
|
50
|
+
*/
|
|
51
|
+
promote(address: string): Promise<void>;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Normalizes a user-typed (or metadata-sourced) LAN address into a strict HTTPS origin —
|
|
55
|
+
* the shape `probeLanCandidate`/`secureOrigin` (`@econ-v1/adapters-web`) require — or
|
|
56
|
+
* `undefined` if it is not a well-formed host[:port]. Mirrors
|
|
57
|
+
* `peer-directory-service.ts`'s `toSecureAddress`.
|
|
58
|
+
*/
|
|
59
|
+
export declare function secureLanOrigin(address: string): string | undefined;
|
|
60
|
+
//# sourceMappingURL=discovery-probe-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery-probe-service.d.ts","sourceRoot":"","sources":["../../src/services/discovery-probe-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqC,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGxF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAErF;;;;;;;;GAQG;AAEH,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,CAAC;AAE5F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;CAC3C;AAED,mFAAmF;AACnF,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,uFAAuF;IACvF,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,qBAAqB,EAAE,KAAK,IAAI,CAAC;IACrE;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC;CAC/D;AAED,qBAAa,qBAAqB;;gBAOpB,OAAO,EAAE,4BAA4B;IAMjD,QAAQ,IAAI,SAAS,qBAAqB,EAAE;IAI5C,8EAA8E;IACxE,KAAK,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,qBAAqB,EAAE,CAAC;IAUpF;;;;;OAKG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAkE9C;AAiBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUnE"}
|