@hasna/capacity 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +74 -0
  3. package/dist/cli.d.ts +2 -0
  4. package/dist/cli.js +6663 -0
  5. package/dist/domain/authority-evidence.d.ts +198 -0
  6. package/dist/domain/catalog.d.ts +65 -0
  7. package/dist/domain/counter.d.ts +7 -0
  8. package/dist/domain/eligibility.d.ts +4 -0
  9. package/dist/domain/ids.d.ts +47 -0
  10. package/dist/domain/invariants.d.ts +4 -0
  11. package/dist/domain/models.d.ts +300 -0
  12. package/dist/domain/native-subscription.d.ts +211 -0
  13. package/dist/domain/online-generation-receipt.d.ts +497 -0
  14. package/dist/domain/state.d.ts +19 -0
  15. package/dist/errors.d.ts +26 -0
  16. package/dist/http/handler.d.ts +3 -0
  17. package/dist/http/openapi.d.ts +1070 -0
  18. package/dist/http/stores.d.ts +20 -0
  19. package/dist/http/types.d.ts +141 -0
  20. package/dist/index.d.ts +56 -0
  21. package/dist/index.js +14909 -0
  22. package/dist/sdk/index.d.ts +8 -0
  23. package/dist/sdk/local.d.ts +5 -0
  24. package/dist/sdk/remote.d.ts +2 -0
  25. package/dist/sdk/types.d.ts +107 -0
  26. package/dist/serialization/dto.d.ts +13 -0
  27. package/dist/serialization/json.d.ts +7 -0
  28. package/dist/storage/credential-use-authorizer.d.ts +9 -0
  29. package/dist/storage/credential-verifier.d.ts +13 -0
  30. package/dist/storage/effect-dispatch.d.ts +278 -0
  31. package/dist/storage/file-recovery-ledger.d.ts +66 -0
  32. package/dist/storage/memory.d.ts +47 -0
  33. package/dist/storage/native-revocation.d.ts +10 -0
  34. package/dist/storage/postgres-config.d.ts +25 -0
  35. package/dist/storage/postgres-migrations.d.ts +10 -0
  36. package/dist/storage/postgres-migrator.d.ts +12 -0
  37. package/dist/storage/postgres.d.ts +90 -0
  38. package/dist/storage/recovery.d.ts +11 -0
  39. package/dist/storage/repository.d.ts +310 -0
  40. package/dist/storage/shared.d.ts +18 -0
  41. package/dist/storage/sqlite-migrations.d.ts +11 -0
  42. package/dist/storage/sqlite.d.ts +51 -0
  43. package/dist/version.d.ts +2 -0
  44. package/package.json +49 -0
@@ -0,0 +1,211 @@
1
+ import { KeyObject, type KeyLike } from "node:crypto";
2
+ import { type Counter } from "./counter";
3
+ import type { OnlineGenerationReceiptUseCasRequest, OnlineGenerationReceiptUseCasResult, OnlineGenerationReceiptUseStore } from "./online-generation-receipt";
4
+ export declare const NATIVE_SUBSCRIPTION_PROBE_REQUEST_SCHEMA_VERSION: "accounts.native-subscription-probe-request/v1";
5
+ export declare const NATIVE_SUBSCRIPTION_PROBE_RESULT_SCHEMA_VERSION: "accounts.native-subscription-probe-result/v1";
6
+ export declare const CAPSULE_MAINTENANCE_REQUEST_SCHEMA_VERSION: "accounts.capsule-maintenance-request/v1";
7
+ export declare const CAPSULE_MAINTENANCE_GRANT_SCHEMA_VERSION: "accounts.capsule-maintenance/v1";
8
+ export declare const CAPSULE_MAINTENANCE_CONSUME_REQUEST_SCHEMA_VERSION: "accounts.capsule-maintenance-consume-request/v1";
9
+ export declare const CAPSULE_MAINTENANCE_CONSUME_RECEIPT_SCHEMA_VERSION: "accounts.capsule-maintenance-consume-receipt/v1";
10
+ export type CapsuleMaintenanceTargetKind = "account_record" | "native_capsule";
11
+ export type CapsuleMaintenanceCommand = "SUSPEND_ACCOUNT" | "RESUME_ACCOUNT" | "REVOKE_ACCOUNT" | "REFRESH_CAPSULE" | "BEGIN_REAUTH" | "ROTATE_CAPSULE" | "REVOKE_CAPSULE";
12
+ export interface NativeSubscriptionProbeRequest {
13
+ readonly schema_version: typeof NATIVE_SUBSCRIPTION_PROBE_REQUEST_SCHEMA_VERSION;
14
+ readonly command: "PROBE_NATIVE";
15
+ readonly owner_ref: string;
16
+ readonly provider_account_id: string;
17
+ readonly subscription_id: string;
18
+ readonly account_lane_id: string;
19
+ readonly auth_capsule_id: string;
20
+ readonly canonical_node_id: string;
21
+ readonly node_key_thumbprint: string;
22
+ readonly node_generation: Counter;
23
+ readonly placement_generation: Counter;
24
+ readonly auth_generation: Counter;
25
+ readonly auth_state_revision: Counter;
26
+ }
27
+ export interface NativeSubscriptionBindingSnapshot {
28
+ readonly ownerRef: string;
29
+ readonly providerAccountId: string;
30
+ readonly subscriptionId: string;
31
+ readonly accountLaneId: string;
32
+ readonly authCapsuleId: string;
33
+ readonly canonicalNodeId: string;
34
+ readonly nodeKeyThumbprint: string;
35
+ readonly nodeGeneration: Counter;
36
+ readonly placementGeneration: Counter;
37
+ readonly authGeneration: Counter;
38
+ readonly authStateRevision: Counter;
39
+ readonly accountRevision: Counter;
40
+ readonly capsuleRevision: Counter;
41
+ readonly accountStatus: "active" | "suspended" | "revoked";
42
+ readonly subscriptionStatus: "active" | "paused" | "expired" | "revoked";
43
+ readonly accountLaneStatus: "ready" | "draining" | "disabled" | "retired";
44
+ readonly capsuleStatus: "ready" | "degraded" | "maintenance" | "quiescing" | "revoked";
45
+ readonly liveLeaseCount: Counter;
46
+ readonly drainState: "not_started" | "draining" | "drained";
47
+ readonly zeroLiveEvidenceDigest: string;
48
+ readonly drainEvidenceDigest: string;
49
+ readonly evidenceExpiresAt: string;
50
+ }
51
+ export interface NativeSubscriptionSnapshotSource {
52
+ read(accountLaneId: string): NativeSubscriptionBindingSnapshot | undefined | Promise<NativeSubscriptionBindingSnapshot | undefined>;
53
+ }
54
+ export interface NativeSubscriptionProbeResult {
55
+ readonly schema_version: typeof NATIVE_SUBSCRIPTION_PROBE_RESULT_SCHEMA_VERSION;
56
+ readonly capability_eligible: boolean;
57
+ readonly maintenance_ready: boolean;
58
+ readonly reason_codes: readonly string[];
59
+ readonly owner_ref: string;
60
+ readonly provider_account_id: string;
61
+ readonly subscription_id: string;
62
+ readonly account_lane_id: string;
63
+ readonly auth_capsule_id: string;
64
+ readonly canonical_node_id: string;
65
+ readonly node_key_thumbprint: string;
66
+ readonly node_generation: Counter;
67
+ readonly placement_generation: Counter;
68
+ readonly auth_generation: Counter;
69
+ readonly auth_state_revision: Counter;
70
+ readonly account_revision: Counter;
71
+ readonly capsule_revision: Counter;
72
+ readonly account_status: NativeSubscriptionBindingSnapshot["accountStatus"];
73
+ readonly subscription_status: NativeSubscriptionBindingSnapshot["subscriptionStatus"];
74
+ readonly account_lane_status: NativeSubscriptionBindingSnapshot["accountLaneStatus"];
75
+ readonly capsule_status: NativeSubscriptionBindingSnapshot["capsuleStatus"];
76
+ readonly live_lease_count: Counter;
77
+ readonly drain_state: NativeSubscriptionBindingSnapshot["drainState"];
78
+ readonly zero_live_evidence_digest: string;
79
+ readonly drain_evidence_digest: string;
80
+ readonly evidence_expires_at: string;
81
+ readonly binding_digest: string;
82
+ }
83
+ export interface CapsuleMaintenanceRequest extends Omit<NativeSubscriptionProbeRequest, "schema_version" | "command"> {
84
+ readonly schema_version: typeof CAPSULE_MAINTENANCE_REQUEST_SCHEMA_VERSION;
85
+ readonly target_kind: CapsuleMaintenanceTargetKind;
86
+ readonly command: CapsuleMaintenanceCommand;
87
+ readonly expected_target_revision: Counter;
88
+ readonly zero_live_evidence_digest: string;
89
+ readonly drain_evidence_digest: string;
90
+ readonly idempotency_key_digest: string;
91
+ }
92
+ export interface CapsuleMaintenanceGrant extends Omit<CapsuleMaintenanceRequest, "schema_version"> {
93
+ readonly schema_version: typeof CAPSULE_MAINTENANCE_GRANT_SCHEMA_VERSION;
94
+ readonly grant_id: string;
95
+ readonly issuer: string;
96
+ readonly issuer_incarnation: string;
97
+ readonly key_id: string;
98
+ readonly audience: string;
99
+ readonly request_digest: string;
100
+ readonly issued_at: string;
101
+ readonly expires_at: string;
102
+ readonly signature: string;
103
+ }
104
+ export interface CapsuleMaintenanceConsumeRequest {
105
+ readonly schema_version: typeof CAPSULE_MAINTENANCE_CONSUME_REQUEST_SCHEMA_VERSION;
106
+ readonly grant_id: string;
107
+ readonly operation_id: string;
108
+ readonly request_digest: string;
109
+ readonly idempotency_key_digest: string;
110
+ }
111
+ export interface CapsuleMaintenanceConsumeReceipt {
112
+ readonly schema_version: typeof CAPSULE_MAINTENANCE_CONSUME_RECEIPT_SCHEMA_VERSION;
113
+ readonly grant_id: string;
114
+ readonly operation_id: string;
115
+ readonly issuer: string;
116
+ readonly issuer_incarnation: string;
117
+ readonly key_id: string;
118
+ readonly audience: string;
119
+ readonly target_kind: CapsuleMaintenanceTargetKind;
120
+ readonly command: CapsuleMaintenanceCommand;
121
+ readonly owner_ref: string;
122
+ readonly provider_account_id: string;
123
+ readonly subscription_id: string;
124
+ readonly account_lane_id: string;
125
+ readonly auth_capsule_id: string;
126
+ readonly canonical_node_id: string;
127
+ readonly node_key_thumbprint: string;
128
+ readonly auth_generation: Counter;
129
+ readonly auth_state_revision: Counter;
130
+ readonly grant_request_digest: string;
131
+ readonly consume_request_digest: string;
132
+ readonly consumed_at: string;
133
+ readonly signature: string;
134
+ }
135
+ export interface CapsuleMaintenanceTrust {
136
+ readonly issuer: string;
137
+ readonly issuerIncarnation: string;
138
+ readonly keyId: string;
139
+ readonly audience: string;
140
+ readonly publicKey: KeyObject | string | Buffer;
141
+ }
142
+ export interface CapsuleMaintenanceAuthorityOptions extends CapsuleMaintenanceTrust {
143
+ readonly privateKey: KeyLike;
144
+ readonly snapshots: NativeSubscriptionSnapshotSource;
145
+ readonly clock?: () => Date;
146
+ readonly idFactory?: (nowMs: number) => string;
147
+ readonly grantLifetimeMs?: number;
148
+ }
149
+ export interface CapsuleMaintenanceTransport {
150
+ readonly authenticatedOwnerRef: string;
151
+ readonly authenticatedNodeKeyThumbprint: string;
152
+ }
153
+ export declare function evaluateNativeSubscriptionProbe(source: unknown, snapshotSource: NativeSubscriptionSnapshotSource, authenticatedOwnerRef: string, now?: Date): Promise<NativeSubscriptionProbeResult>;
154
+ /**
155
+ * Process-local POC authority. Production adapters must persist issuance,
156
+ * consumption, and idempotency records in one durable atomic authority.
157
+ */
158
+ export declare class CapsuleMaintenanceAuthority {
159
+ private readonly options;
160
+ private readonly publicKey;
161
+ private readonly clock;
162
+ private readonly idFactory;
163
+ private readonly grantLifetimeMs;
164
+ private readonly issued;
165
+ private readonly consumed;
166
+ private tail;
167
+ constructor(options: CapsuleMaintenanceAuthorityOptions);
168
+ probe(source: unknown, authenticatedOwnerRef: string): Promise<NativeSubscriptionProbeResult>;
169
+ issueMaintenanceGrant(source: unknown, authenticatedOwnerRef: string): Promise<CapsuleMaintenanceGrant>;
170
+ consumeMaintenanceGrant(grantSource: Uint8Array, consumeSource: unknown, transport: CapsuleMaintenanceTransport): Promise<CapsuleMaintenanceConsumeReceipt>;
171
+ private now;
172
+ private newId;
173
+ private serialize;
174
+ }
175
+ export declare function verifyCapsuleMaintenanceGrant(source: Uint8Array, trust: CapsuleMaintenanceTrust, now: Date): CapsuleMaintenanceGrant;
176
+ export interface NativeCapabilityUseCurrentState {
177
+ readonly catalogIncarnation: string;
178
+ readonly recoveryFrontierSequence: Counter;
179
+ readonly recoveryFrontierHash: string;
180
+ }
181
+ export interface InMemoryNativeCapabilityUseStoreOptions {
182
+ readonly issuer: string;
183
+ readonly issuerIncarnation: string;
184
+ readonly keyId: string;
185
+ readonly audience: string;
186
+ readonly privateKey: KeyLike;
187
+ readonly clock?: () => Date;
188
+ readonly idFactory?: (nowMs: number) => string;
189
+ readonly validateCurrent: (request: OnlineGenerationReceiptUseCasRequest) => NativeCapabilityUseCurrentState | Promise<NativeCapabilityUseCurrentState>;
190
+ }
191
+ /**
192
+ * Process-local conformance adapter only. It proves CAS/replay semantics but is
193
+ * deliberately not a production substitute for the durable Accounts store.
194
+ */
195
+ export declare class InMemoryNativeCapabilityUseStore implements OnlineGenerationReceiptUseStore {
196
+ private readonly options;
197
+ private readonly clock;
198
+ private readonly idFactory;
199
+ private readonly requests;
200
+ private readonly capabilities;
201
+ private tail;
202
+ constructor(options: InMemoryNativeCapabilityUseStoreOptions);
203
+ compareAndConsume(source: OnlineGenerationReceiptUseCasRequest): Promise<OnlineGenerationReceiptUseCasResult>;
204
+ private serialize;
205
+ }
206
+ export declare class StaticNativeSubscriptionSnapshotSource implements NativeSubscriptionSnapshotSource {
207
+ private readonly records;
208
+ constructor(records: readonly NativeSubscriptionBindingSnapshot[]);
209
+ read(accountLaneId: string): NativeSubscriptionBindingSnapshot | undefined;
210
+ }
211
+ export declare function parseNativeSubscriptionProbeRequest(source: unknown): NativeSubscriptionProbeRequest;