@skrr-ai/auth-core 0.1.2

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 (147) hide show
  1. package/README.md +21 -0
  2. package/dist/cjs/aead.d.ts +24 -0
  3. package/dist/cjs/aead.js +65 -0
  4. package/dist/cjs/authExpiredDetector.d.ts +65 -0
  5. package/dist/cjs/authExpiredDetector.js +89 -0
  6. package/dist/cjs/authHelper.d.ts +51 -0
  7. package/dist/cjs/authHelper.js +321 -0
  8. package/dist/cjs/credentialEnvelope.d.ts +85 -0
  9. package/dist/cjs/credentialEnvelope.js +230 -0
  10. package/dist/cjs/credentialEnvelopeBridge.d.ts +116 -0
  11. package/dist/cjs/credentialEnvelopeBridge.js +637 -0
  12. package/dist/cjs/credentialResolver.d.ts +278 -0
  13. package/dist/cjs/credentialResolver.js +423 -0
  14. package/dist/cjs/daemonPair.d.ts +172 -0
  15. package/dist/cjs/daemonPair.js +495 -0
  16. package/dist/cjs/daemonScopes.d.ts +74 -0
  17. package/dist/cjs/daemonScopes.js +84 -0
  18. package/dist/cjs/deviceIdentityBridge.d.ts +113 -0
  19. package/dist/cjs/deviceIdentityBridge.js +591 -0
  20. package/dist/cjs/deviceKey.d.ts +167 -0
  21. package/dist/cjs/deviceKey.js +332 -0
  22. package/dist/cjs/fdToken.d.ts +17 -0
  23. package/dist/cjs/fdToken.js +238 -0
  24. package/dist/cjs/harnessTrust.d.ts +72 -0
  25. package/dist/cjs/harnessTrust.js +103 -0
  26. package/dist/cjs/headers-helper.d.ts +25 -0
  27. package/dist/cjs/headers-helper.js +323 -0
  28. package/dist/cjs/index.d.ts +37 -0
  29. package/dist/cjs/index.js +305 -0
  30. package/dist/cjs/jwtUtils.d.ts +35 -0
  31. package/dist/cjs/jwtUtils.js +61 -0
  32. package/dist/cjs/kek/index.d.ts +89 -0
  33. package/dist/cjs/kek/index.js +208 -0
  34. package/dist/cjs/kek/linux.d.ts +92 -0
  35. package/dist/cjs/kek/linux.js +596 -0
  36. package/dist/cjs/kek/macos.d.ts +112 -0
  37. package/dist/cjs/kek/macos.js +599 -0
  38. package/dist/cjs/kek/types.d.ts +111 -0
  39. package/dist/cjs/kek/types.js +43 -0
  40. package/dist/cjs/kek/windows.d.ts +71 -0
  41. package/dist/cjs/kek/windows.js +350 -0
  42. package/dist/cjs/kek/zeroize-registry.d.ts +44 -0
  43. package/dist/cjs/kek/zeroize-registry.js +63 -0
  44. package/dist/cjs/legacyStatePreflight.d.ts +67 -0
  45. package/dist/cjs/legacyStatePreflight.js +78 -0
  46. package/dist/cjs/localIdentity.d.ts +54 -0
  47. package/dist/cjs/localIdentity.js +57 -0
  48. package/dist/cjs/loginLocalhost.d.ts +115 -0
  49. package/dist/cjs/loginLocalhost.js +368 -0
  50. package/dist/cjs/loginWithLocalhost.d.ts +131 -0
  51. package/dist/cjs/loginWithLocalhost.js +359 -0
  52. package/dist/cjs/machineId.d.ts +35 -0
  53. package/dist/cjs/machineId.js +239 -0
  54. package/dist/cjs/messages.d.ts +9 -0
  55. package/dist/cjs/messages.js +44 -0
  56. package/dist/cjs/package.json +3 -0
  57. package/dist/cjs/pkce.d.ts +62 -0
  58. package/dist/cjs/pkce.js +158 -0
  59. package/dist/cjs/recoveryCode.d.ts +61 -0
  60. package/dist/cjs/recoveryCode.js +213 -0
  61. package/dist/cjs/refresh.d.ts +215 -0
  62. package/dist/cjs/refresh.js +877 -0
  63. package/dist/cjs/refreshClassification.d.ts +53 -0
  64. package/dist/cjs/refreshClassification.js +105 -0
  65. package/dist/cjs/refreshScheduler.d.ts +53 -0
  66. package/dist/cjs/refreshScheduler.js +332 -0
  67. package/dist/cjs/runtime.d.ts +149 -0
  68. package/dist/cjs/runtime.js +136 -0
  69. package/dist/cjs/spawnEnv.d.ts +76 -0
  70. package/dist/cjs/spawnEnv.js +153 -0
  71. package/dist/cjs/ttlParser.d.ts +54 -0
  72. package/dist/cjs/ttlParser.js +87 -0
  73. package/dist/cjs/types.d.ts +91 -0
  74. package/dist/cjs/types.js +26 -0
  75. package/dist/esm/aead.d.ts +24 -0
  76. package/dist/esm/aead.js +57 -0
  77. package/dist/esm/authExpiredDetector.d.ts +65 -0
  78. package/dist/esm/authExpiredDetector.js +85 -0
  79. package/dist/esm/authHelper.d.ts +51 -0
  80. package/dist/esm/authHelper.js +311 -0
  81. package/dist/esm/credentialEnvelope.d.ts +85 -0
  82. package/dist/esm/credentialEnvelope.js +213 -0
  83. package/dist/esm/credentialEnvelopeBridge.d.ts +116 -0
  84. package/dist/esm/credentialEnvelopeBridge.js +620 -0
  85. package/dist/esm/credentialResolver.d.ts +278 -0
  86. package/dist/esm/credentialResolver.js +414 -0
  87. package/dist/esm/daemonPair.d.ts +172 -0
  88. package/dist/esm/daemonPair.js +476 -0
  89. package/dist/esm/daemonScopes.d.ts +74 -0
  90. package/dist/esm/daemonScopes.js +80 -0
  91. package/dist/esm/deviceIdentityBridge.d.ts +113 -0
  92. package/dist/esm/deviceIdentityBridge.js +572 -0
  93. package/dist/esm/deviceKey.d.ts +167 -0
  94. package/dist/esm/deviceKey.js +320 -0
  95. package/dist/esm/fdToken.d.ts +17 -0
  96. package/dist/esm/fdToken.js +231 -0
  97. package/dist/esm/harnessTrust.d.ts +72 -0
  98. package/dist/esm/harnessTrust.js +97 -0
  99. package/dist/esm/headers-helper.d.ts +25 -0
  100. package/dist/esm/headers-helper.js +316 -0
  101. package/dist/esm/index.d.ts +37 -0
  102. package/dist/esm/index.js +144 -0
  103. package/dist/esm/jwtUtils.d.ts +35 -0
  104. package/dist/esm/jwtUtils.js +57 -0
  105. package/dist/esm/kek/index.d.ts +89 -0
  106. package/dist/esm/kek/index.js +162 -0
  107. package/dist/esm/kek/linux.d.ts +92 -0
  108. package/dist/esm/kek/linux.js +585 -0
  109. package/dist/esm/kek/macos.d.ts +112 -0
  110. package/dist/esm/kek/macos.js +586 -0
  111. package/dist/esm/kek/types.d.ts +111 -0
  112. package/dist/esm/kek/types.js +39 -0
  113. package/dist/esm/kek/windows.d.ts +71 -0
  114. package/dist/esm/kek/windows.js +344 -0
  115. package/dist/esm/kek/zeroize-registry.d.ts +44 -0
  116. package/dist/esm/kek/zeroize-registry.js +58 -0
  117. package/dist/esm/legacyStatePreflight.d.ts +67 -0
  118. package/dist/esm/legacyStatePreflight.js +71 -0
  119. package/dist/esm/localIdentity.d.ts +54 -0
  120. package/dist/esm/localIdentity.js +54 -0
  121. package/dist/esm/loginLocalhost.d.ts +115 -0
  122. package/dist/esm/loginLocalhost.js +355 -0
  123. package/dist/esm/loginWithLocalhost.d.ts +131 -0
  124. package/dist/esm/loginWithLocalhost.js +353 -0
  125. package/dist/esm/machineId.d.ts +35 -0
  126. package/dist/esm/machineId.js +231 -0
  127. package/dist/esm/messages.d.ts +9 -0
  128. package/dist/esm/messages.js +40 -0
  129. package/dist/esm/pkce.d.ts +62 -0
  130. package/dist/esm/pkce.js +148 -0
  131. package/dist/esm/recoveryCode.d.ts +61 -0
  132. package/dist/esm/recoveryCode.js +207 -0
  133. package/dist/esm/refresh.d.ts +215 -0
  134. package/dist/esm/refresh.js +863 -0
  135. package/dist/esm/refreshClassification.d.ts +53 -0
  136. package/dist/esm/refreshClassification.js +106 -0
  137. package/dist/esm/refreshScheduler.d.ts +53 -0
  138. package/dist/esm/refreshScheduler.js +329 -0
  139. package/dist/esm/runtime.d.ts +149 -0
  140. package/dist/esm/runtime.js +121 -0
  141. package/dist/esm/spawnEnv.d.ts +76 -0
  142. package/dist/esm/spawnEnv.js +149 -0
  143. package/dist/esm/ttlParser.d.ts +54 -0
  144. package/dist/esm/ttlParser.js +83 -0
  145. package/dist/esm/types.d.ts +91 -0
  146. package/dist/esm/types.js +21 -0
  147. package/package.json +82 -0
@@ -0,0 +1,116 @@
1
+ type CredEnvelopeState = {
2
+ kind: 'uninit';
3
+ } | {
4
+ kind: 'disabled';
5
+ reason: DisabledReason;
6
+ } | {
7
+ kind: 'active';
8
+ dek: Buffer;
9
+ kekId: string;
10
+ /**
11
+ * Backend-tier identifier captured at init time
12
+ * (e.g. `macos-keychain-shellout`, `in-memory-test`). Snapshotted
13
+ * here so transform-side events can surface the kind without
14
+ * holding a live `kek` reference.
15
+ */
16
+ kekKind: string | null;
17
+ profile: string;
18
+ };
19
+ type DisabledReason = 'kek_unavailable' | 'init_failed' | 'platform_unsupported' | 'kek_rotated';
20
+ /** @internal Test seam — force-set state, returns previous. */
21
+ export declare function __setStateForTest(next: CredEnvelopeState): CredEnvelopeState;
22
+ /** @internal Test seam — read state for assertions. */
23
+ export declare function __getStateForTest(): CredEnvelopeState;
24
+ /**
25
+ * Initialize the envelope path. Idempotent — second call when state is
26
+ * non-uninit returns immediately.
27
+ *
28
+ * Order:
29
+ * 1. Probe KEK; unavailable → disabled+kek_unavailable.
30
+ * 2. Try to read+unwrap an existing DEK; success → active.
31
+ * 3. Generate fresh DEK, wrap, persist atomically; → active.
32
+ * 4. Any throw → disabled+init_failed; transforms stay passthrough.
33
+ */
34
+ export declare function initCredEnvelope(profile: string): Promise<void>;
35
+ /**
36
+ * Reset state. With `clearOnDisk` deletes the wrapped DEK file too —
37
+ * used by `oversky logout` / `sky logout`. Zeroes the in-memory DEK
38
+ * before dropping state for forward secrecy on the active credential.
39
+ */
40
+ export declare function resetCredEnvelope(opts?: {
41
+ profile?: string;
42
+ clearOnDisk?: boolean;
43
+ }): Promise<void>;
44
+ export declare function shutdownCredEnvelope(): void;
45
+ /** @internal Test seam — re-arm `shutdownCredEnvelope` so it can run again. */
46
+ export declare function __resetShutdownGuardForTest(): void;
47
+ /**
48
+ * True iff the envelope path is initialized AND active. Hot-path
49
+ * predicate used by sync transforms; never throws.
50
+ */
51
+ export declare function isCredEnvelopeActive(): boolean;
52
+ /**
53
+ * Operator-readable summary of envelope state. Used by `oversky status`
54
+ * and CLI debug commands. Never includes the DEK or any key material.
55
+ *
56
+ * `kekRotated` is true when the most recent init pass detected a wrapped
57
+ * DEK that could not be unwrapped under the currently-available KEK and
58
+ * had to fall back to a fresh enrollment. Operators see this in
59
+ * `oversky status`; clears on the next clean `resetCredEnvelope`.
60
+ */
61
+ export declare function describeCredEnvelopeState(): {
62
+ kind: CredEnvelopeState['kind'];
63
+ reason?: DisabledReason;
64
+ kekId?: string;
65
+ kekKind?: string | null;
66
+ profile?: string;
67
+ kekRotated?: boolean;
68
+ };
69
+ /**
70
+ * Sync write transform. Returns the wrapped serialized form when active.
71
+ *
72
+ * Behavior when not active:
73
+ * - If `credEnvelopeFailClosed` was set via `configureAuthCore()` (or
74
+ * `OVERSKY_KEK_REQUIRED=1` is set as a back-compat trigger), emits
75
+ * `cred_envelope.wrap.refused` and throws — the caller must not
76
+ * write plaintext.
77
+ * - Otherwise, returns the plaintext (legacy fail-open behavior used
78
+ * by CLI today during dark-ship rollout).
79
+ *
80
+ * Empty-string input is universally passthrough — there is no secret
81
+ * to protect.
82
+ */
83
+ export declare function maybeEncryptForWrite(plaintext: string): string;
84
+ /**
85
+ * Always-fail-open variant of `maybeEncryptForWrite` for callers that
86
+ * cannot afford to abort their write when the envelope path is inactive
87
+ * (today: device-identity persistence, which writes the private key as
88
+ * plaintext JSON before the L12 KEK ships per-platform). The wire form
89
+ * is identical to `maybeEncryptForWrite` when active (envelope-prefixed)
90
+ * and identical to the input when not.
91
+ *
92
+ * Distinct from `maybeEncryptForWrite` because that helper honors the
93
+ * daemon's `credEnvelopeFailClosed: true` policy — designed for callers
94
+ * that MUST refuse a plaintext write rather than silently degrade.
95
+ */
96
+ export declare function wrapIfActiveOrPassthrough(plaintext: string): string;
97
+ /**
98
+ * Sync read transform. Three cases:
99
+ * 1. Envelope on disk + path active → decrypt; null on tag mismatch
100
+ * (caller treats null as a forced re-login signal).
101
+ * 2. Envelope on disk + path NOT active → null (rolled-back binary
102
+ * while envelopes are persisted).
103
+ * 3. Legacy plaintext → return as-is; if path is active, set
104
+ * `needsMigration=true` so caller can upgrade in place.
105
+ */
106
+ export interface ReadTransformResult {
107
+ /** Decoded plaintext, or null on hard failure. */
108
+ plaintext: string | null;
109
+ /** True when the on-disk form was legacy plaintext AND the envelope
110
+ * path is active — caller should re-write to upgrade. */
111
+ needsMigration: boolean;
112
+ }
113
+ export declare function maybeDecryptOnRead(stored: string): ReadTransformResult;
114
+ /** @internal Test seam — wrapped-DEK path resolver. */
115
+ export declare function __wrappedDekFilePathForTest(profile: string): string;
116
+ export {};