@skrr-ai/cli 0.1.122 → 0.1.124
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/commands/agents/chat.d.ts +7 -0
- package/dist/commands/agents/chat.js +32 -6
- package/dist/commands/agents/delete.d.ts +8 -0
- package/dist/commands/agents/delete.js +16 -0
- package/dist/commands/context.js +7 -0
- package/dist/commands/followups/act.js +3 -0
- package/dist/commands/followups/checkin.js +3 -0
- package/dist/commands/followups/remind.js +3 -0
- package/dist/commands/followups/show.js +1 -1
- package/dist/commands/followups/watch.js +3 -0
- package/dist/commands/search/workspace.js +1 -1
- package/dist/commands/store/gallery-admissions/approve.js +1 -1
- package/dist/commands/store/gallery-admissions/preview.js +1 -1
- package/dist/commands/store/gallery-admissions/refuse.js +1 -1
- package/dist/commands/store/gallery-admissions/show.js +1 -1
- package/dist/lib/agentic-stream.d.ts +46 -0
- package/dist/lib/agentic-stream.js +135 -14
- package/dist/lib/auth-core-init.d.ts +15 -2
- package/dist/lib/auth-core-init.js +47 -6
- package/dist/lib/auth-failure.js +12 -0
- package/dist/lib/command-hygiene.js +30 -1
- package/dist/lib/daemonBrokerRefusal.js +5 -1
- package/dist/lib/exec-runtime-binary.d.ts +9 -0
- package/dist/lib/exec-runtime-binary.js +15 -1
- package/dist/lib/followups.d.ts +13 -0
- package/dist/lib/followups.js +8 -0
- package/dist/lib/keychain.js +41 -4
- package/dist/lib/profile-machine-identity-guard.js +2 -1
- package/dist/lib/runtime-start-verification.js +6 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/cliHandoffWire.d.ts +5 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/cliHandoffWire.js +1 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/credentialEnvelopeBridge.js +69 -27
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/deviceIdentityBridge.d.ts +135 -4
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/deviceIdentityBridge.js +440 -83
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/deviceKey.d.ts +106 -7
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/deviceKey.js +77 -19
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/deviceKeyHandle.d.ts +33 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/deviceKeyHandle.js +77 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/deviceKeyHardware.d.ts +68 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/deviceKeyHardware.js +264 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/deviceKeyServerSupport.d.ts +31 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/deviceKeyServerSupport.js +90 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/dpop.js +2 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/independentMachineReservation.js +2 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/index.d.ts +7 -3
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/index.js +110 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/kek/index.d.ts +1 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/kek/index.js +13 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/kek/linux.d.ts +18 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/kek/linux.js +11 -2
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/kek/macos.d.ts +22 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/kek/macos.js +14 -2
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/kek/masterKekService.d.ts +69 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/kek/masterKekService.js +67 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/liveState.d.ts +154 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/liveState.js +281 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/machineId.js +6 -3
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/machineUuid.js +8 -5
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/messages.d.ts +1 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/messages.js +1 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/profileStateDir.js +7 -27
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/refresh.d.ts +1 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/refresh.js +24 -16
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/stateFiles.d.ts +31 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/stateFiles.js +89 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/telemetryRedaction.d.ts +3 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/telemetryRedaction.js +41 -3
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/types.d.ts +7 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/cliHandoffWire.d.ts +5 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/cliHandoffWire.js +4 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/credentialEnvelopeBridge.js +122 -38
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/deviceIdentityBridge.d.ts +135 -4
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/deviceIdentityBridge.js +603 -90
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/deviceKey.d.ts +106 -7
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/deviceKey.js +131 -27
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/deviceKeyHandle.d.ts +33 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/deviceKeyHandle.js +81 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/deviceKeyHardware.d.ts +68 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/deviceKeyHardware.js +317 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/deviceKeyServerSupport.d.ts +31 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/deviceKeyServerSupport.js +86 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/dpop.js +4 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/independentMachineReservation.js +4 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/index.d.ts +7 -3
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/index.js +14 -4
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/kek/index.d.ts +1 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/kek/index.js +1 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/kek/linux.d.ts +18 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/kek/linux.js +18 -2
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/kek/macos.d.ts +22 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/kek/macos.js +23 -2
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/kek/masterKekService.d.ts +69 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/kek/masterKekService.js +134 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/liveState.d.ts +154 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/liveState.js +386 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/machineId.js +6 -3
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/machineUuid.js +11 -5
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/messages.d.ts +1 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/messages.js +1 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/profileStateDir.js +6 -35
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/refresh.d.ts +1 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/refresh.js +45 -16
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/stateFiles.d.ts +31 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/stateFiles.js +73 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/telemetryRedaction.d.ts +3 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/telemetryRedaction.js +40 -3
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/types.d.ts +7 -1
- package/dist/node_modules/@skrr-ai/auth-core/package.json +21 -1
- package/dist/node_modules/@skrr-ai/data-provider/index.js +7349 -7325
- package/oclif.manifest.json +11 -2
- package/package.json +4 -1
|
@@ -19,7 +19,9 @@ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "defau
|
|
|
19
19
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
20
|
var index_exports = {};
|
|
21
21
|
__export(index_exports, {
|
|
22
|
+
ALLOW_LIVE_STATE_ENV: () => import_liveState.ALLOW_LIVE_STATE_ENV,
|
|
22
23
|
ALL_DAEMON_SCOPES: () => import_daemonScopes.ALL_DAEMON_SCOPES,
|
|
24
|
+
AUTH_SERVER_METADATA_PATH: () => import_deviceKeyServerSupport.AUTH_SERVER_METADATA_PATH,
|
|
23
25
|
AuthHelperUnavailableError: () => import_credentialResolver.AuthHelperUnavailableError,
|
|
24
26
|
AuthHelperUntrustedError: () => import_credentialResolver.AuthHelperUntrustedError,
|
|
25
27
|
CI_TOKEN_PREFIX: () => import_credentialResolver.CI_TOKEN_PREFIX,
|
|
@@ -28,12 +30,16 @@ __export(index_exports, {
|
|
|
28
30
|
CRED_ENVELOPE_MAGIC: () => import_credentialEnvelope.ENVELOPE_MAGIC,
|
|
29
31
|
CRED_KEY_LEN: () => import_credentialEnvelope.KEY_LEN,
|
|
30
32
|
CredentialResolver: () => import_credentialResolver.CredentialResolver,
|
|
33
|
+
DAEMON_BYOK_KEYCHAIN_SERVICE_BASE: () => import_liveState.DAEMON_BYOK_KEYCHAIN_SERVICE_BASE,
|
|
31
34
|
DAEMON_CHILD_ENV: () => import_spawnEnv.DAEMON_CHILD_ENV,
|
|
35
|
+
DAEMON_KEYCHAIN_SERVICE_BASE: () => import_liveState.DAEMON_KEYCHAIN_SERVICE_BASE,
|
|
32
36
|
DEFAULT_BINARY_NAME: () => import_localIdentity.DEFAULT_BINARY_NAME,
|
|
33
37
|
DEFAULT_DAEMON_SCOPES: () => import_daemonScopes.DEFAULT_DAEMON_SCOPES,
|
|
34
38
|
DEFAULT_FIRST_PARTY_HARNESS_CHANNEL: () => import_firstPartyHarnessChannels.DEFAULT_FIRST_PARTY_HARNESS_CHANNEL,
|
|
35
39
|
DEFAULT_LOGIN_TIMEOUT_MS: () => import_loginLocalhost.DEFAULT_LOGIN_TIMEOUT_MS,
|
|
36
40
|
DEFAULT_UNREADABLE_CREDENTIAL_HINT: () => import_credentialEnvelopeBridge.DEFAULT_UNREADABLE_CREDENTIAL_HINT,
|
|
41
|
+
DEVICE_KEY_ALGS: () => import_deviceKey.DEVICE_KEY_ALGS,
|
|
42
|
+
DEVICE_KEY_UNREADABLE_CREDENTIAL_HINT: () => import_deviceIdentityBridge.DEVICE_KEY_UNREADABLE_CREDENTIAL_HINT,
|
|
37
43
|
DPOP_HEADER: () => import_dpop.DPOP_HEADER,
|
|
38
44
|
DPOP_MAX_AGE_SECONDS: () => import_dpop.DPOP_MAX_AGE_SECONDS,
|
|
39
45
|
DPOP_PROOF_INVALID: () => import_dpop.DPOP_PROOF_INVALID,
|
|
@@ -44,18 +50,25 @@ __export(index_exports, {
|
|
|
44
50
|
FIRST_PARTY_HARNESS_CHANNELS: () => import_firstPartyHarnessChannels.FIRST_PARTY_HARNESS_CHANNELS,
|
|
45
51
|
FIRST_PARTY_HARNESS_PREVIOUS_SUFFIX: () => import_firstPartyHarnessHome.FIRST_PARTY_HARNESS_PREVIOUS_SUFFIX,
|
|
46
52
|
FIRST_PARTY_HARNESS_PROVENANCE_SUFFIX: () => import_firstPartyHarnessHome.FIRST_PARTY_HARNESS_PROVENANCE_SUFFIX,
|
|
53
|
+
HARDWARE_KEY_HELPER_NAME: () => import_deviceKeyHardware.HARDWARE_KEY_HELPER_NAME,
|
|
47
54
|
HARNESSES_LOADING_CLAUDE_SKILLS_LAYOUT: () => import_harnessSkillLayout.HARNESSES_LOADING_CLAUDE_SKILLS_LAYOUT,
|
|
48
55
|
HARNESS_TIERS: () => import_harnessTrust.HARNESS_TIERS,
|
|
56
|
+
HERMETIC_HOME_ENV: () => import_liveState.HERMETIC_HOME_ENV,
|
|
49
57
|
HOSTED_RUNTIME_MACHINE_SOURCES: () => import_machineUuid.HOSTED_RUNTIME_MACHINE_SOURCES,
|
|
58
|
+
HardwareDeviceKeyError: () => import_deviceKeyHardware.HardwareDeviceKeyError,
|
|
50
59
|
INDEPENDENT_MACHINE_PROFILE_RE: () => import_independentMachineReservation.INDEPENDENT_MACHINE_PROFILE_RE,
|
|
51
60
|
INDEPENDENT_MACHINE_RESERVATION_FILE: () => import_independentMachineReservation.INDEPENDENT_MACHINE_RESERVATION_FILE,
|
|
52
61
|
InMemoryKek: () => import_kek.InMemoryKek,
|
|
53
62
|
KekUnavailableError: () => import_kek.KekUnavailableError,
|
|
54
63
|
LEGACY_CONFIG_DIR_NAMES: () => import_localIdentity.LEGACY_CONFIG_DIR_NAMES,
|
|
64
|
+
LEGACY_DAEMON_KEYCHAIN_SERVICE: () => import_liveState.LEGACY_DAEMON_KEYCHAIN_SERVICE,
|
|
55
65
|
LEGACY_NATIVE_ID_PREFIXES: () => import_localIdentity.LEGACY_NATIVE_ID_PREFIXES,
|
|
66
|
+
LIVE_DEFAULT_PROFILE: () => import_liveState.LIVE_DEFAULT_PROFILE,
|
|
67
|
+
LIVE_STATE_REFUSED_CODE: () => import_liveState.LIVE_STATE_REFUSED_CODE,
|
|
56
68
|
LOOPBACK_DEFAULT_MAX_BODY_BYTES: () => import_loopbackHttp.LOOPBACK_DEFAULT_MAX_BODY_BYTES,
|
|
57
69
|
LOOPBACK_NO_PROXY_HOSTS: () => import_spawnEnv.LOOPBACK_NO_PROXY_HOSTS,
|
|
58
70
|
LinuxKek: () => import_kek.LinuxKek,
|
|
71
|
+
LiveStateRefusedError: () => import_liveState.LiveStateRefusedError,
|
|
59
72
|
LocalCallbackBindError: () => import_loginLocalhost.LocalCallbackBindError,
|
|
60
73
|
LocalCallbackDeniedError: () => import_loginLocalhost.LocalCallbackDeniedError,
|
|
61
74
|
LocalCallbackError: () => import_loginLocalhost.LocalCallbackError,
|
|
@@ -66,6 +79,8 @@ __export(index_exports, {
|
|
|
66
79
|
LoginInitError: () => import_loginWithLocalhost.LoginInitError,
|
|
67
80
|
LoopbackTargetRefusedError: () => import_loopbackHttp.LoopbackTargetRefusedError,
|
|
68
81
|
MACHINE_IDENTITY_FILENAME: () => import_machineUuid.MACHINE_IDENTITY_FILENAME,
|
|
82
|
+
MASTER_KEK_KEYCHAIN_ACCOUNT: () => import_kek.MASTER_KEK_KEYCHAIN_ACCOUNT,
|
|
83
|
+
MASTER_KEK_KEYCHAIN_SERVICE: () => import_kek.MASTER_KEK_KEYCHAIN_SERVICE,
|
|
69
84
|
MAX_SIGS: () => import_releaseManifest.MAX_SIGS,
|
|
70
85
|
MAX_TTL_DAYS: () => import_ttlParser.MAX_TTL_DAYS,
|
|
71
86
|
MIN_TTL_DAYS: () => import_ttlParser.MIN_TTL_DAYS,
|
|
@@ -79,6 +94,7 @@ __export(index_exports, {
|
|
|
79
94
|
PAIR_NONCE_LEN: () => import_daemonPair.PAIR_NONCE_LEN,
|
|
80
95
|
PAIR_PUBKEY_LEN: () => import_daemonPair.PAIR_PUBKEY_LEN,
|
|
81
96
|
PAIR_SECRET_LEN: () => import_daemonPair.PAIR_SECRET_LEN,
|
|
97
|
+
PENDING_HARDWARE_KEY_MAX_AGE_MS: () => import_deviceIdentityBridge.PENDING_HARDWARE_KEY_MAX_AGE_MS,
|
|
82
98
|
PERSONAL_ACCESS_TOKEN_PREFIX: () => import_credentialResolver.PERSONAL_ACCESS_TOKEN_PREFIX,
|
|
83
99
|
PROFILES_SEGMENT: () => import_profileStateDir.PROFILES_SEGMENT,
|
|
84
100
|
PairBundleError: () => import_daemonPair.PairBundleError,
|
|
@@ -90,6 +106,7 @@ __export(index_exports, {
|
|
|
90
106
|
SENSITIVE_ENV_SUFFIXES: () => import_spawnEnv.SENSITIVE_ENV_SUFFIXES,
|
|
91
107
|
SENSITIVE_ENV_VARS: () => import_spawnEnv.SENSITIVE_ENV_VARS,
|
|
92
108
|
SENTINEL_TRIGGERING_FAILURES: () => import_authHelper.SENTINEL_TRIGGERING_FAILURES,
|
|
109
|
+
SERVER_DEVICE_KEY_ALGS_FIELD: () => import_deviceKeyServerSupport.SERVER_DEVICE_KEY_ALGS_FIELD,
|
|
93
110
|
SUPERSEDED_COPY_SUFFIX: () => import_profileStateDir.SUPERSEDED_COPY_SUFFIX,
|
|
94
111
|
SUPERSEDED_MARKER_SUFFIX: () => import_profileStateDir.SUPERSEDED_MARKER_SUFFIX,
|
|
95
112
|
TRUSTED_FEED_ORIGINS: () => import_releaseManifest.TRUSTED_FEED_ORIGINS,
|
|
@@ -111,14 +128,20 @@ __export(index_exports, {
|
|
|
111
128
|
__resetMachineUuidCacheForTest: () => import_machineUuid.__resetMachineUuidCacheForTest,
|
|
112
129
|
__resetShutdownGuardForTest: () => import_credentialEnvelopeBridge.__resetShutdownGuardForTest,
|
|
113
130
|
__resetUnknown401StreaksForTest: () => import_refresh.__resetUnknown401StreaksForTest,
|
|
131
|
+
__setAccountHomeForTest: () => import_liveState.__setAccountHomeForTest,
|
|
114
132
|
__setCredEnvelopeStateForTest: () => import_credentialEnvelopeBridge.__setStateForTest,
|
|
115
133
|
__setDeviceIdentityStateForTest: () => import_deviceIdentityBridge.__setStateForTest,
|
|
116
134
|
__setFdReaderForTest: () => import_fdToken.__setFdReaderForTest,
|
|
117
135
|
__setKekStrategyForTest: () => import_kek.__setKekStrategyForTest,
|
|
136
|
+
__setUnreadableReloadIntervalForTest: () => import_deviceIdentityBridge.__setUnreadableReloadIntervalForTest,
|
|
118
137
|
__wrappedDekFilePathForTest: () => import_credentialEnvelopeBridge.__wrappedDekFilePathForTest,
|
|
119
138
|
accessTokenHash: () => import_dpop.accessTokenHash,
|
|
139
|
+
accountHomeDir: () => import_liveState.accountHomeDir,
|
|
140
|
+
algForJwk: () => import_deviceKey.algForJwk,
|
|
120
141
|
assemblePairBundleBase64: () => import_daemonPair.assemblePairBundleBase64,
|
|
121
142
|
assertLoopbackHttpUrl: () => import_loopbackHttp.assertLoopbackHttpUrl,
|
|
143
|
+
assertMayMutateLiveKeychain: () => import_liveState.assertMayMutateLiveKeychain,
|
|
144
|
+
assertMayMutateLiveState: () => import_liveState.assertMayMutateLiveState,
|
|
122
145
|
buildArtifactMessage: () => import_releaseManifest.buildArtifactMessage,
|
|
123
146
|
buildCredentialAad: () => import_credentialEnvelope.buildCredentialAad,
|
|
124
147
|
buildDeviceProof: () => import_deviceKey.buildProof,
|
|
@@ -126,14 +149,18 @@ __export(index_exports, {
|
|
|
126
149
|
buildPairAad: () => import_daemonPair.buildPairAad,
|
|
127
150
|
buildPairUrl: () => import_daemonPair.buildPairUrl,
|
|
128
151
|
challenge: () => import_pkce.challenge,
|
|
152
|
+
classifyDaemonKeychainService: () => import_kek.classifyDaemonKeychainService,
|
|
129
153
|
classifyRefreshResponse: () => import_refreshClassification.classifyRefreshResponse,
|
|
130
154
|
classifyTokenKind: () => import_credentialResolver.classifyTokenKind,
|
|
131
155
|
claudeSkillsLayoutEvidence: () => import_harnessSkillLayout.claudeSkillsLayoutEvidence,
|
|
132
156
|
clearEnrollmentMarker: () => import_deviceIdentityBridge.clearEnrollmentMarker,
|
|
133
157
|
clearReauthState: () => import_refresh.clearReauthState,
|
|
158
|
+
commitDeviceKeyCandidate: () => import_deviceIdentityBridge.commitDeviceKeyCandidate,
|
|
159
|
+
commitPendingHardwareKey: () => import_deviceIdentityBridge.commitPendingHardwareKey,
|
|
134
160
|
compareReleaseVersions: () => import_releaseVersions.compareReleaseVersions,
|
|
135
161
|
configRootPath: () => import_configRoot.configRootPath,
|
|
136
162
|
configureAuthCore: () => import_runtime.configureAuthCore,
|
|
163
|
+
configureHardwareDeviceKeyHelper: () => import_deviceKeyHardware.configureHardwareDeviceKeyHelper,
|
|
137
164
|
consolidateProfileState: () => import_profileStateDir.consolidateProfileState,
|
|
138
165
|
createDpopKey: () => import_dpop.createDpopKey,
|
|
139
166
|
createRefreshScheduler: () => import_refreshScheduler.createRefreshScheduler,
|
|
@@ -153,6 +180,8 @@ __export(index_exports, {
|
|
|
153
180
|
describeDeviceKeySplit: () => import_deviceIdentityBridge.describeDeviceKeySplit,
|
|
154
181
|
describeLegacyState: () => import_legacyStatePreflight.describeLegacyState,
|
|
155
182
|
describeMachineIdentity: () => import_machineUuid.describeMachineIdentity,
|
|
183
|
+
describeStoredDeviceKey: () => import_deviceIdentityBridge.describeStoredDeviceKey,
|
|
184
|
+
discardPendingHardwareKey: () => import_deviceIdentityBridge.discardPendingHardwareKey,
|
|
156
185
|
emitAuthTelemetry: () => import_runtime.emitAuthTelemetry,
|
|
157
186
|
enrollWithServer: () => import_deviceIdentityBridge.enrollWithServer,
|
|
158
187
|
ensureMachineDaemonId: () => import_machineId.ensureMachineDaemonId,
|
|
@@ -205,17 +234,27 @@ __export(index_exports, {
|
|
|
205
234
|
isDaemonChildEnv: () => import_spawnEnv.isDaemonChildEnv,
|
|
206
235
|
isDaemonScope: () => import_daemonScopes.isDaemonScope,
|
|
207
236
|
isDeviceIdentityActive: () => import_deviceIdentityBridge.isDeviceIdentityActive,
|
|
237
|
+
isDevicePublicJwk: () => import_deviceKey.isDevicePublicJwk,
|
|
208
238
|
isFirstPartyHarnessChannel: () => import_firstPartyHarnessChannels.isFirstPartyHarnessChannel,
|
|
209
239
|
isJwkThumbprint: () => import_dpop.isJwkThumbprint,
|
|
240
|
+
isLiveKeychainService: () => import_liveState.isLiveKeychainService,
|
|
241
|
+
isLiveStateRefusal: () => import_liveState.isLiveStateRefusal,
|
|
210
242
|
isLoopbackAddress: () => import_loopbackHttp.isLoopbackAddress,
|
|
211
243
|
isLoopbackHostname: () => import_loopbackHttp.isLoopbackHostname,
|
|
244
|
+
isMasterKekKeychainService: () => import_kek.isMasterKekKeychainService,
|
|
245
|
+
isSessionKeychainService: () => import_kek.isSessionKeychainService,
|
|
212
246
|
isStaticTokenKind: () => import_credentialResolver.isStaticTokenKind,
|
|
247
|
+
isTestProcess: () => import_liveState.isTestProcess,
|
|
213
248
|
isTrustedArtifactOrigin: () => import_releaseManifest.isTrustedArtifactOrigin,
|
|
249
|
+
isUserOwnedSecretKeychainService: () => import_kek.isUserOwnedSecretKeychainService,
|
|
214
250
|
isValidRecoveryCode: () => import_recoveryCode.isValidRecoveryCode,
|
|
215
251
|
jwkThumbprint: () => import_deviceKey.jwkThumbprint,
|
|
252
|
+
keychainSuffixForDir: () => import_liveState.keychainSuffixForDir,
|
|
216
253
|
legacyDaemonUuids: () => import_machineId.legacyDaemonUuids,
|
|
217
254
|
legacyProfileStateDir: () => import_profileStateDir.legacyProfileStateDir,
|
|
218
255
|
linkFirstPartyHarnessAliases: () => import_firstPartyHarnessHome.linkFirstPartyHarnessAliases,
|
|
256
|
+
liveKeychainServices: () => import_liveState.liveKeychainServices,
|
|
257
|
+
liveStateRoot: () => import_liveState.liveStateRoot,
|
|
219
258
|
loginWithLocalhost: () => import_loginWithLocalhost.loginWithLocalhost,
|
|
220
259
|
loopbackFetch: () => import_loopbackHttp.loopbackFetch,
|
|
221
260
|
maybeDecryptOnRead: () => import_credentialEnvelopeBridge.maybeDecryptOnRead,
|
|
@@ -226,6 +265,7 @@ __export(index_exports, {
|
|
|
226
265
|
normalizeHtu: () => import_deviceKey.normalizeHtu,
|
|
227
266
|
normalizeRecoveryCode: () => import_recoveryCode.normalizeRecoveryCode,
|
|
228
267
|
openPairBundleBase64: () => import_daemonPair.openPairBundleBase64,
|
|
268
|
+
p256PublicJwkFromRaw: () => import_deviceKey.p256PublicJwkFromRaw,
|
|
229
269
|
pairBase64ToUint8Array: () => import_daemonPair.base64ToUint8Array,
|
|
230
270
|
pairBase64UrlToUint8Array: () => import_daemonPair.base64UrlToUint8Array,
|
|
231
271
|
pairUint8ArrayToBase64: () => import_daemonPair.uint8ArrayToBase64,
|
|
@@ -235,16 +275,23 @@ __export(index_exports, {
|
|
|
235
275
|
parsePairUrl: () => import_daemonPair.parsePairUrl,
|
|
236
276
|
parseRecoveryCode: () => import_recoveryCode.parseRecoveryCode,
|
|
237
277
|
parseTtlDays: () => import_ttlParser.parseTtlDays,
|
|
278
|
+
persistPendingHardwareKey: () => import_deviceIdentityBridge.persistPendingHardwareKey,
|
|
238
279
|
persistReauthState: () => import_refresh.persistReauthState,
|
|
280
|
+
prepareHardwareKeyCandidate: () => import_deviceIdentityBridge.prepareHardwareKeyCandidate,
|
|
281
|
+
probeHardwareDeviceKey: () => import_deviceKeyHardware.probeHardwareDeviceKey,
|
|
239
282
|
profileStateDir: () => import_profileStateDir.profileStateDir,
|
|
240
283
|
profileStateFileLocations: () => import_profileStateDir.profileStateFileLocations,
|
|
241
284
|
profileStateFilePathsToClear: () => import_profileStateDir.profileStateFilePathsToClear,
|
|
285
|
+
proofSigningInput: () => import_deviceKey.proofSigningInput,
|
|
242
286
|
publicJwkFromX: () => import_deviceKey.publicJwkFromX,
|
|
243
287
|
qualifyMachineUuid: () => import_machineUuid.qualifyMachineUuid,
|
|
244
288
|
readAuthFromFd: () => import_fdToken.readAuthFromFd,
|
|
245
289
|
readIndependentMachineReservation: () => import_independentMachineReservation.readIndependentMachineReservation,
|
|
290
|
+
readServerDeviceKeyAlgs: () => import_deviceKeyServerSupport.readServerDeviceKeyAlgs,
|
|
246
291
|
reauthCommand: () => import_messages.reauthCommand,
|
|
247
292
|
refreshDaemonToken: () => import_refresh.refreshDaemonToken,
|
|
293
|
+
refusesLiveKeychainMutation: () => import_liveState.refusesLiveKeychainMutation,
|
|
294
|
+
refusesLiveStateInTest: () => import_liveState.refusesLiveStateInTest,
|
|
248
295
|
registerZeroizeHook: () => import_kek.registerZeroizeHook,
|
|
249
296
|
reserveIndependentMachineProfile: () => import_independentMachineReservation.reserveIndependentMachineProfile,
|
|
250
297
|
resetCredEnvelope: () => import_credentialEnvelopeBridge.resetCredEnvelope,
|
|
@@ -252,17 +299,23 @@ __export(index_exports, {
|
|
|
252
299
|
resolveChannelManifestUrl: () => import_firstPartyHarnessChannels.resolveChannelManifestUrl,
|
|
253
300
|
resolveConfigRoot: () => import_configRoot.resolveConfigRoot,
|
|
254
301
|
resolveFirstPartyHarnessChannel: () => import_firstPartyHarnessChannels.resolveFirstPartyHarnessChannel,
|
|
302
|
+
resolveHardwareDeviceKeyHelper: () => import_deviceKeyHardware.resolveHardwareDeviceKeyHelper,
|
|
255
303
|
resolveProfileStateDir: () => import_profileStateDir.resolveProfileStateDir,
|
|
256
304
|
resolveProfileStateFile: () => import_profileStateDir.resolveProfileStateFile,
|
|
305
|
+
rethrowIfLiveStateRefusal: () => import_liveState.rethrowIfLiveStateRefusal,
|
|
257
306
|
revokeDaemonRefreshSession: () => import_refresh.revokeDaemonRefreshSession,
|
|
258
307
|
runHeadersHelper: () => import_headers_helper.runHeadersHelper,
|
|
259
308
|
safeEqual: () => import_pkce.safeEqual,
|
|
260
309
|
sanitizeSpawnEnv: () => import_spawnEnv.sanitizeSpawnEnv,
|
|
261
310
|
setMachineUuidProfile: () => import_machineUuid.setMachineUuidProfile,
|
|
262
311
|
shutdownCredEnvelope: () => import_credentialEnvelopeBridge.shutdownCredEnvelope,
|
|
312
|
+
signProofWith: () => import_deviceKey.signProofWith,
|
|
263
313
|
signServerRequest: () => import_deviceIdentityBridge.signServerRequest,
|
|
314
|
+
signWithCandidate: () => import_deviceIdentityBridge.signWithCandidate,
|
|
315
|
+
softwareEd25519Handle: () => import_deviceKeyHandle.softwareEd25519Handle,
|
|
264
316
|
splitKeyConvergencePolicy: () => import_credentialEnvelopeBridge.splitKeyConvergencePolicy,
|
|
265
317
|
startLocalCallback: () => import_loginLocalhost.startLocalCallback,
|
|
318
|
+
testProcessSignal: () => import_liveState.testProcessSignal,
|
|
266
319
|
tierPermitsConfiguredAutoMode: () => import_harnessTrust.tierPermitsConfiguredAutoMode,
|
|
267
320
|
tokenHash: () => import_deviceKey.tokenHash,
|
|
268
321
|
verifyArtifact: () => import_releaseManifest.verifyArtifact,
|
|
@@ -296,7 +349,11 @@ var import_ttlParser = require("./ttlParser.js");
|
|
|
296
349
|
var import_recoveryCode = require("./recoveryCode.js");
|
|
297
350
|
var import_credentialEnvelope = require("./credentialEnvelope.js");
|
|
298
351
|
var import_kek = require("./kek/index.js");
|
|
352
|
+
var import_liveState = require("./liveState.js");
|
|
299
353
|
var import_deviceKey = require("./deviceKey.js");
|
|
354
|
+
var import_deviceKeyHandle = require("./deviceKeyHandle.js");
|
|
355
|
+
var import_deviceKeyServerSupport = require("./deviceKeyServerSupport.js");
|
|
356
|
+
var import_deviceKeyHardware = require("./deviceKeyHardware.js");
|
|
300
357
|
var import_dpop = require("./dpop.js");
|
|
301
358
|
var import_credentialEnvelopeBridge = require("./credentialEnvelopeBridge.js");
|
|
302
359
|
var import_deviceIdentityBridge = require("./deviceIdentityBridge.js");
|
|
@@ -323,7 +380,9 @@ __reExport(index_exports, require("./desktopWire.js"), module.exports);
|
|
|
323
380
|
var import_independentMachineReservation = require("./independentMachineReservation.js");
|
|
324
381
|
// Annotate the CommonJS export names for ESM import in node:
|
|
325
382
|
0 && (module.exports = {
|
|
383
|
+
ALLOW_LIVE_STATE_ENV,
|
|
326
384
|
ALL_DAEMON_SCOPES,
|
|
385
|
+
AUTH_SERVER_METADATA_PATH,
|
|
327
386
|
AuthHelperUnavailableError,
|
|
328
387
|
AuthHelperUntrustedError,
|
|
329
388
|
CI_TOKEN_PREFIX,
|
|
@@ -332,12 +391,16 @@ var import_independentMachineReservation = require("./independentMachineReservat
|
|
|
332
391
|
CRED_ENVELOPE_MAGIC,
|
|
333
392
|
CRED_KEY_LEN,
|
|
334
393
|
CredentialResolver,
|
|
394
|
+
DAEMON_BYOK_KEYCHAIN_SERVICE_BASE,
|
|
335
395
|
DAEMON_CHILD_ENV,
|
|
396
|
+
DAEMON_KEYCHAIN_SERVICE_BASE,
|
|
336
397
|
DEFAULT_BINARY_NAME,
|
|
337
398
|
DEFAULT_DAEMON_SCOPES,
|
|
338
399
|
DEFAULT_FIRST_PARTY_HARNESS_CHANNEL,
|
|
339
400
|
DEFAULT_LOGIN_TIMEOUT_MS,
|
|
340
401
|
DEFAULT_UNREADABLE_CREDENTIAL_HINT,
|
|
402
|
+
DEVICE_KEY_ALGS,
|
|
403
|
+
DEVICE_KEY_UNREADABLE_CREDENTIAL_HINT,
|
|
341
404
|
DPOP_HEADER,
|
|
342
405
|
DPOP_MAX_AGE_SECONDS,
|
|
343
406
|
DPOP_PROOF_INVALID,
|
|
@@ -348,18 +411,25 @@ var import_independentMachineReservation = require("./independentMachineReservat
|
|
|
348
411
|
FIRST_PARTY_HARNESS_CHANNELS,
|
|
349
412
|
FIRST_PARTY_HARNESS_PREVIOUS_SUFFIX,
|
|
350
413
|
FIRST_PARTY_HARNESS_PROVENANCE_SUFFIX,
|
|
414
|
+
HARDWARE_KEY_HELPER_NAME,
|
|
351
415
|
HARNESSES_LOADING_CLAUDE_SKILLS_LAYOUT,
|
|
352
416
|
HARNESS_TIERS,
|
|
417
|
+
HERMETIC_HOME_ENV,
|
|
353
418
|
HOSTED_RUNTIME_MACHINE_SOURCES,
|
|
419
|
+
HardwareDeviceKeyError,
|
|
354
420
|
INDEPENDENT_MACHINE_PROFILE_RE,
|
|
355
421
|
INDEPENDENT_MACHINE_RESERVATION_FILE,
|
|
356
422
|
InMemoryKek,
|
|
357
423
|
KekUnavailableError,
|
|
358
424
|
LEGACY_CONFIG_DIR_NAMES,
|
|
425
|
+
LEGACY_DAEMON_KEYCHAIN_SERVICE,
|
|
359
426
|
LEGACY_NATIVE_ID_PREFIXES,
|
|
427
|
+
LIVE_DEFAULT_PROFILE,
|
|
428
|
+
LIVE_STATE_REFUSED_CODE,
|
|
360
429
|
LOOPBACK_DEFAULT_MAX_BODY_BYTES,
|
|
361
430
|
LOOPBACK_NO_PROXY_HOSTS,
|
|
362
431
|
LinuxKek,
|
|
432
|
+
LiveStateRefusedError,
|
|
363
433
|
LocalCallbackBindError,
|
|
364
434
|
LocalCallbackDeniedError,
|
|
365
435
|
LocalCallbackError,
|
|
@@ -370,6 +440,8 @@ var import_independentMachineReservation = require("./independentMachineReservat
|
|
|
370
440
|
LoginInitError,
|
|
371
441
|
LoopbackTargetRefusedError,
|
|
372
442
|
MACHINE_IDENTITY_FILENAME,
|
|
443
|
+
MASTER_KEK_KEYCHAIN_ACCOUNT,
|
|
444
|
+
MASTER_KEK_KEYCHAIN_SERVICE,
|
|
373
445
|
MAX_SIGS,
|
|
374
446
|
MAX_TTL_DAYS,
|
|
375
447
|
MIN_TTL_DAYS,
|
|
@@ -383,6 +455,7 @@ var import_independentMachineReservation = require("./independentMachineReservat
|
|
|
383
455
|
PAIR_NONCE_LEN,
|
|
384
456
|
PAIR_PUBKEY_LEN,
|
|
385
457
|
PAIR_SECRET_LEN,
|
|
458
|
+
PENDING_HARDWARE_KEY_MAX_AGE_MS,
|
|
386
459
|
PERSONAL_ACCESS_TOKEN_PREFIX,
|
|
387
460
|
PROFILES_SEGMENT,
|
|
388
461
|
PairBundleError,
|
|
@@ -394,6 +467,7 @@ var import_independentMachineReservation = require("./independentMachineReservat
|
|
|
394
467
|
SENSITIVE_ENV_SUFFIXES,
|
|
395
468
|
SENSITIVE_ENV_VARS,
|
|
396
469
|
SENTINEL_TRIGGERING_FAILURES,
|
|
470
|
+
SERVER_DEVICE_KEY_ALGS_FIELD,
|
|
397
471
|
SUPERSEDED_COPY_SUFFIX,
|
|
398
472
|
SUPERSEDED_MARKER_SUFFIX,
|
|
399
473
|
TRUSTED_FEED_ORIGINS,
|
|
@@ -415,14 +489,20 @@ var import_independentMachineReservation = require("./independentMachineReservat
|
|
|
415
489
|
__resetMachineUuidCacheForTest,
|
|
416
490
|
__resetShutdownGuardForTest,
|
|
417
491
|
__resetUnknown401StreaksForTest,
|
|
492
|
+
__setAccountHomeForTest,
|
|
418
493
|
__setCredEnvelopeStateForTest,
|
|
419
494
|
__setDeviceIdentityStateForTest,
|
|
420
495
|
__setFdReaderForTest,
|
|
421
496
|
__setKekStrategyForTest,
|
|
497
|
+
__setUnreadableReloadIntervalForTest,
|
|
422
498
|
__wrappedDekFilePathForTest,
|
|
423
499
|
accessTokenHash,
|
|
500
|
+
accountHomeDir,
|
|
501
|
+
algForJwk,
|
|
424
502
|
assemblePairBundleBase64,
|
|
425
503
|
assertLoopbackHttpUrl,
|
|
504
|
+
assertMayMutateLiveKeychain,
|
|
505
|
+
assertMayMutateLiveState,
|
|
426
506
|
buildArtifactMessage,
|
|
427
507
|
buildCredentialAad,
|
|
428
508
|
buildDeviceProof,
|
|
@@ -430,14 +510,18 @@ var import_independentMachineReservation = require("./independentMachineReservat
|
|
|
430
510
|
buildPairAad,
|
|
431
511
|
buildPairUrl,
|
|
432
512
|
challenge,
|
|
513
|
+
classifyDaemonKeychainService,
|
|
433
514
|
classifyRefreshResponse,
|
|
434
515
|
classifyTokenKind,
|
|
435
516
|
claudeSkillsLayoutEvidence,
|
|
436
517
|
clearEnrollmentMarker,
|
|
437
518
|
clearReauthState,
|
|
519
|
+
commitDeviceKeyCandidate,
|
|
520
|
+
commitPendingHardwareKey,
|
|
438
521
|
compareReleaseVersions,
|
|
439
522
|
configRootPath,
|
|
440
523
|
configureAuthCore,
|
|
524
|
+
configureHardwareDeviceKeyHelper,
|
|
441
525
|
consolidateProfileState,
|
|
442
526
|
createDpopKey,
|
|
443
527
|
createRefreshScheduler,
|
|
@@ -457,6 +541,8 @@ var import_independentMachineReservation = require("./independentMachineReservat
|
|
|
457
541
|
describeDeviceKeySplit,
|
|
458
542
|
describeLegacyState,
|
|
459
543
|
describeMachineIdentity,
|
|
544
|
+
describeStoredDeviceKey,
|
|
545
|
+
discardPendingHardwareKey,
|
|
460
546
|
emitAuthTelemetry,
|
|
461
547
|
enrollWithServer,
|
|
462
548
|
ensureMachineDaemonId,
|
|
@@ -509,17 +595,27 @@ var import_independentMachineReservation = require("./independentMachineReservat
|
|
|
509
595
|
isDaemonChildEnv,
|
|
510
596
|
isDaemonScope,
|
|
511
597
|
isDeviceIdentityActive,
|
|
598
|
+
isDevicePublicJwk,
|
|
512
599
|
isFirstPartyHarnessChannel,
|
|
513
600
|
isJwkThumbprint,
|
|
601
|
+
isLiveKeychainService,
|
|
602
|
+
isLiveStateRefusal,
|
|
514
603
|
isLoopbackAddress,
|
|
515
604
|
isLoopbackHostname,
|
|
605
|
+
isMasterKekKeychainService,
|
|
606
|
+
isSessionKeychainService,
|
|
516
607
|
isStaticTokenKind,
|
|
608
|
+
isTestProcess,
|
|
517
609
|
isTrustedArtifactOrigin,
|
|
610
|
+
isUserOwnedSecretKeychainService,
|
|
518
611
|
isValidRecoveryCode,
|
|
519
612
|
jwkThumbprint,
|
|
613
|
+
keychainSuffixForDir,
|
|
520
614
|
legacyDaemonUuids,
|
|
521
615
|
legacyProfileStateDir,
|
|
522
616
|
linkFirstPartyHarnessAliases,
|
|
617
|
+
liveKeychainServices,
|
|
618
|
+
liveStateRoot,
|
|
523
619
|
loginWithLocalhost,
|
|
524
620
|
loopbackFetch,
|
|
525
621
|
maybeDecryptOnRead,
|
|
@@ -530,6 +626,7 @@ var import_independentMachineReservation = require("./independentMachineReservat
|
|
|
530
626
|
normalizeHtu,
|
|
531
627
|
normalizeRecoveryCode,
|
|
532
628
|
openPairBundleBase64,
|
|
629
|
+
p256PublicJwkFromRaw,
|
|
533
630
|
pairBase64ToUint8Array,
|
|
534
631
|
pairBase64UrlToUint8Array,
|
|
535
632
|
pairUint8ArrayToBase64,
|
|
@@ -539,16 +636,23 @@ var import_independentMachineReservation = require("./independentMachineReservat
|
|
|
539
636
|
parsePairUrl,
|
|
540
637
|
parseRecoveryCode,
|
|
541
638
|
parseTtlDays,
|
|
639
|
+
persistPendingHardwareKey,
|
|
542
640
|
persistReauthState,
|
|
641
|
+
prepareHardwareKeyCandidate,
|
|
642
|
+
probeHardwareDeviceKey,
|
|
543
643
|
profileStateDir,
|
|
544
644
|
profileStateFileLocations,
|
|
545
645
|
profileStateFilePathsToClear,
|
|
646
|
+
proofSigningInput,
|
|
546
647
|
publicJwkFromX,
|
|
547
648
|
qualifyMachineUuid,
|
|
548
649
|
readAuthFromFd,
|
|
549
650
|
readIndependentMachineReservation,
|
|
651
|
+
readServerDeviceKeyAlgs,
|
|
550
652
|
reauthCommand,
|
|
551
653
|
refreshDaemonToken,
|
|
654
|
+
refusesLiveKeychainMutation,
|
|
655
|
+
refusesLiveStateInTest,
|
|
552
656
|
registerZeroizeHook,
|
|
553
657
|
reserveIndependentMachineProfile,
|
|
554
658
|
resetCredEnvelope,
|
|
@@ -556,17 +660,23 @@ var import_independentMachineReservation = require("./independentMachineReservat
|
|
|
556
660
|
resolveChannelManifestUrl,
|
|
557
661
|
resolveConfigRoot,
|
|
558
662
|
resolveFirstPartyHarnessChannel,
|
|
663
|
+
resolveHardwareDeviceKeyHelper,
|
|
559
664
|
resolveProfileStateDir,
|
|
560
665
|
resolveProfileStateFile,
|
|
666
|
+
rethrowIfLiveStateRefusal,
|
|
561
667
|
revokeDaemonRefreshSession,
|
|
562
668
|
runHeadersHelper,
|
|
563
669
|
safeEqual,
|
|
564
670
|
sanitizeSpawnEnv,
|
|
565
671
|
setMachineUuidProfile,
|
|
566
672
|
shutdownCredEnvelope,
|
|
673
|
+
signProofWith,
|
|
567
674
|
signServerRequest,
|
|
675
|
+
signWithCandidate,
|
|
676
|
+
softwareEd25519Handle,
|
|
568
677
|
splitKeyConvergencePolicy,
|
|
569
678
|
startLocalCallback,
|
|
679
|
+
testProcessSignal,
|
|
570
680
|
tierPermitsConfiguredAutoMode,
|
|
571
681
|
tokenHash,
|
|
572
682
|
verifyArtifact,
|
|
@@ -19,6 +19,7 @@ export { MacosKek } from './macos.js';
|
|
|
19
19
|
export { LinuxKek } from './linux.js';
|
|
20
20
|
export { WindowsKek } from './windows.js';
|
|
21
21
|
export { zeroizeKekCaches, registerZeroizeHook } from './zeroize-registry.js';
|
|
22
|
+
export { classifyDaemonKeychainService, isMasterKekKeychainService, isSessionKeychainService, isUserOwnedSecretKeychainService, MASTER_KEK_KEYCHAIN_ACCOUNT, MASTER_KEK_KEYCHAIN_SERVICE, type DaemonKeychainServiceClass, } from './masterKekService.js';
|
|
22
23
|
/**
|
|
23
24
|
* @internal Test-only seam — inject a synthetic KEK strategy that wraps
|
|
24
25
|
* with a fixed in-memory key. Resets to platform default when called
|
|
@@ -31,11 +31,17 @@ __export(index_exports, {
|
|
|
31
31
|
InMemoryKek: () => InMemoryKek,
|
|
32
32
|
KekUnavailableError: () => import_types2.KekUnavailableError,
|
|
33
33
|
LinuxKek: () => import_linux2.LinuxKek,
|
|
34
|
+
MASTER_KEK_KEYCHAIN_ACCOUNT: () => import_masterKekService.MASTER_KEK_KEYCHAIN_ACCOUNT,
|
|
35
|
+
MASTER_KEK_KEYCHAIN_SERVICE: () => import_masterKekService.MASTER_KEK_KEYCHAIN_SERVICE,
|
|
34
36
|
MacosKek: () => import_macos2.MacosKek,
|
|
35
37
|
UnavailableKek: () => UnavailableKek,
|
|
36
38
|
WindowsKek: () => import_windows2.WindowsKek,
|
|
37
39
|
__setKekStrategyForTest: () => __setKekStrategyForTest,
|
|
40
|
+
classifyDaemonKeychainService: () => import_masterKekService.classifyDaemonKeychainService,
|
|
38
41
|
getKekStrategy: () => getKekStrategy,
|
|
42
|
+
isMasterKekKeychainService: () => import_masterKekService.isMasterKekKeychainService,
|
|
43
|
+
isSessionKeychainService: () => import_masterKekService.isSessionKeychainService,
|
|
44
|
+
isUserOwnedSecretKeychainService: () => import_masterKekService.isUserOwnedSecretKeychainService,
|
|
39
45
|
registerZeroizeHook: () => import_zeroize_registry.registerZeroizeHook,
|
|
40
46
|
zeroizeKekCaches: () => import_zeroize_registry.zeroizeKekCaches
|
|
41
47
|
});
|
|
@@ -49,6 +55,7 @@ var import_macos2 = require("./macos.js");
|
|
|
49
55
|
var import_linux2 = require("./linux.js");
|
|
50
56
|
var import_windows2 = require("./windows.js");
|
|
51
57
|
var import_zeroize_registry = require("./zeroize-registry.js");
|
|
58
|
+
var import_masterKekService = require("./masterKekService.js");
|
|
52
59
|
class UnsupportedPlatformKek {
|
|
53
60
|
id;
|
|
54
61
|
platform;
|
|
@@ -148,11 +155,17 @@ class UnavailableKek {
|
|
|
148
155
|
InMemoryKek,
|
|
149
156
|
KekUnavailableError,
|
|
150
157
|
LinuxKek,
|
|
158
|
+
MASTER_KEK_KEYCHAIN_ACCOUNT,
|
|
159
|
+
MASTER_KEK_KEYCHAIN_SERVICE,
|
|
151
160
|
MacosKek,
|
|
152
161
|
UnavailableKek,
|
|
153
162
|
WindowsKek,
|
|
154
163
|
__setKekStrategyForTest,
|
|
164
|
+
classifyDaemonKeychainService,
|
|
155
165
|
getKekStrategy,
|
|
166
|
+
isMasterKekKeychainService,
|
|
167
|
+
isSessionKeychainService,
|
|
168
|
+
isUserOwnedSecretKeychainService,
|
|
156
169
|
registerZeroizeHook,
|
|
157
170
|
zeroizeKekCaches
|
|
158
171
|
});
|
|
@@ -27,6 +27,24 @@ type ReadFileSyncLike = (path: string, encoding: BufferEncoding) => string;
|
|
|
27
27
|
* also clear the tier selection + KEK cache so the next call re-probes.
|
|
28
28
|
*/
|
|
29
29
|
export declare function __setFsForTest(fn: ReadFileSyncLike | null): void;
|
|
30
|
+
/**
|
|
31
|
+
* Write the master KEK to the Secret Service. Uses stdin (base64-encoded)
|
|
32
|
+
* as required by `secret-tool store`. Idempotent — `secret-tool store`
|
|
33
|
+
* overwrites an existing item silently.
|
|
34
|
+
*
|
|
35
|
+
* `service` and `account` are passed in (rather than read from the
|
|
36
|
+
* module-level constants) so a `LinuxKek` instance constructed with an
|
|
37
|
+
* override stores under a unique Secret Service entry.
|
|
38
|
+
*
|
|
39
|
+
* Race note: see module-level comment above.
|
|
40
|
+
*/
|
|
41
|
+
declare function writeKekToSecretService(kek: Buffer, service: string, account: string): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* @internal Test seam — the Secret Service write on its own, so a spec can reach the live-state
|
|
44
|
+
* guard without the tier probe getting in the way. A spec using it empties `PATH`, so that a
|
|
45
|
+
* guard which stopped firing reaches no `secret-tool` binary.
|
|
46
|
+
*/
|
|
47
|
+
export declare const __writeKekToSecretServiceForTest: typeof writeKekToSecretService;
|
|
30
48
|
/**
|
|
31
49
|
* Zero out and drop every in-process master-KEK cache buffer (both the
|
|
32
50
|
* Tier-2 by-service map and the Tier-3 single buffer).
|
|
@@ -32,6 +32,7 @@ __export(linux_exports, {
|
|
|
32
32
|
__resetKekCacheForTest: () => __resetKekCacheForTest,
|
|
33
33
|
__setExecFileForTest: () => __setExecFileForTest,
|
|
34
34
|
__setFsForTest: () => __setFsForTest,
|
|
35
|
+
__writeKekToSecretServiceForTest: () => __writeKekToSecretServiceForTest,
|
|
35
36
|
zeroizeLinuxKekCache: () => zeroizeLinuxKekCache
|
|
36
37
|
});
|
|
37
38
|
module.exports = __toCommonJS(linux_exports);
|
|
@@ -42,10 +43,12 @@ var import_node_fs = __toESM(require("node:fs"), 1);
|
|
|
42
43
|
var import_credentialEnvelope = require("../credentialEnvelope.js");
|
|
43
44
|
var import_types = require("./types.js");
|
|
44
45
|
var import_zeroize_registry = require("./zeroize-registry.js");
|
|
46
|
+
var import_masterKekService = require("./masterKekService.js");
|
|
47
|
+
var import_liveState = require("../liveState.js");
|
|
45
48
|
const KIND_LIBSECRET = "linux-libsecret-shellout";
|
|
46
49
|
const KIND_HKDF = "linux-machineid-hkdf";
|
|
47
|
-
const SS_SERVICE =
|
|
48
|
-
const SS_ACCOUNT =
|
|
50
|
+
const SS_SERVICE = import_masterKekService.MASTER_KEK_KEYCHAIN_SERVICE;
|
|
51
|
+
const SS_ACCOUNT = import_masterKekService.MASTER_KEK_KEYCHAIN_ACCOUNT;
|
|
49
52
|
const DBUS_TRANSPORT_ERRORS = [
|
|
50
53
|
"D-Bus",
|
|
51
54
|
"org.freedesktop.secrets",
|
|
@@ -198,6 +201,9 @@ async function writeKekToSecretService(kek, service, account) {
|
|
|
198
201
|
if (kek.length !== import_credentialEnvelope.KEY_LEN) {
|
|
199
202
|
throw new import_types.KekUnavailableError(KIND_LIBSECRET, `writeKekToSecretService: expected ${import_credentialEnvelope.KEY_LEN}-byte buffer, got ${kek.length}`);
|
|
200
203
|
}
|
|
204
|
+
if (_execFileForTest === null) {
|
|
205
|
+
(0, import_liveState.assertMayMutateLiveKeychain)(service, `store the Secret Service item ${account} (a master KEK)`);
|
|
206
|
+
}
|
|
201
207
|
const b64 = kek.toString("base64");
|
|
202
208
|
try {
|
|
203
209
|
await exec("secret-tool", ["store", "--label=skrr daemon master KEK", "service", service, "account", account], { input: b64 });
|
|
@@ -205,6 +211,7 @@ async function writeKekToSecretService(kek, service, account) {
|
|
|
205
211
|
throw new import_types.KekUnavailableError(KIND_LIBSECRET, "secret-tool store failed", { cause: err });
|
|
206
212
|
}
|
|
207
213
|
}
|
|
214
|
+
const __writeKekToSecretServiceForTest = writeKekToSecretService;
|
|
208
215
|
const _tier2KekCacheBySvc = /* @__PURE__ */ new Map();
|
|
209
216
|
let _tier3KekCache = null;
|
|
210
217
|
let _tierSelection = null;
|
|
@@ -367,6 +374,7 @@ class LinuxKek {
|
|
|
367
374
|
} catch (err) {
|
|
368
375
|
if (err instanceof import_types.KekUnavailableError)
|
|
369
376
|
throw err;
|
|
377
|
+
(0, import_liveState.rethrowIfLiveStateRefusal)(err);
|
|
370
378
|
throw new import_types.KekUnavailableError(this.id, err?.message ?? "shellout wrap failed", {
|
|
371
379
|
cause: err
|
|
372
380
|
});
|
|
@@ -420,5 +428,6 @@ class LinuxKek {
|
|
|
420
428
|
__resetKekCacheForTest,
|
|
421
429
|
__setExecFileForTest,
|
|
422
430
|
__setFsForTest,
|
|
431
|
+
__writeKekToSecretServiceForTest,
|
|
423
432
|
zeroizeLinuxKekCache
|
|
424
433
|
});
|
|
@@ -21,6 +21,28 @@ export declare function __setExecFileForTest(fn: ExecFileLike | null): void;
|
|
|
21
21
|
export declare function __resetSecurityProbeCacheForTest(): void;
|
|
22
22
|
/** @internal Test seam — clear the resolved-keychain cache. */
|
|
23
23
|
export declare function __resetResolvedKeychainCacheForTest(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Create a master KEK without replacing an existing item. This key is shared
|
|
26
|
+
* by profiles, so even a first-use race in a different process must not
|
|
27
|
+
* overwrite the key protecting already wrapped credentials.
|
|
28
|
+
*
|
|
29
|
+
* The `service` / `account` parameters are threaded from the calling
|
|
30
|
+
* `MacosKek` instance so each instance keeps its own keychain entry.
|
|
31
|
+
*
|
|
32
|
+
* Explicit-keychain target: the resolved login-keychain path is passed
|
|
33
|
+
* as the trailing positional argument to `add-generic-password` so
|
|
34
|
+
* `security(1)` cannot fall back to a "default keychain" lookup that
|
|
35
|
+
* triggers a system-modal `Keychain Not Found` dialog. If no keychain
|
|
36
|
+
* resolves, throw `KekUnavailableError` immediately rather than
|
|
37
|
+
* shelling out at all.
|
|
38
|
+
*/
|
|
39
|
+
declare function writeKekToKeychain(kek: Buffer, service: string, account: string): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* @internal Test seam — the Keychain write on its own, so a spec can reach the live-state
|
|
42
|
+
* guard without `wrap()`'s `security` probe getting in the way. A spec using it empties `PATH`,
|
|
43
|
+
* so that a guard which stopped firing reaches no `security` binary.
|
|
44
|
+
*/
|
|
45
|
+
export declare const __writeKekToKeychainForTest: typeof writeKekToKeychain;
|
|
24
46
|
/**
|
|
25
47
|
* Zero out and drop every cached master-KEK buffer.
|
|
26
48
|
*
|
|
@@ -34,6 +34,7 @@ __export(macos_exports, {
|
|
|
34
34
|
__resetResolvedKeychainCacheForTest: () => __resetResolvedKeychainCacheForTest,
|
|
35
35
|
__resetSecurityProbeCacheForTest: () => __resetSecurityProbeCacheForTest,
|
|
36
36
|
__setExecFileForTest: () => __setExecFileForTest,
|
|
37
|
+
__writeKekToKeychainForTest: () => __writeKekToKeychainForTest,
|
|
37
38
|
zeroizeMacosKekCache: () => zeroizeMacosKekCache
|
|
38
39
|
});
|
|
39
40
|
module.exports = __toCommonJS(macos_exports);
|
|
@@ -46,9 +47,11 @@ var import_node_fs = __toESM(require("node:fs"), 1);
|
|
|
46
47
|
var import_credentialEnvelope = require("../credentialEnvelope.js");
|
|
47
48
|
var import_types = require("./types.js");
|
|
48
49
|
var import_zeroize_registry = require("./zeroize-registry.js");
|
|
50
|
+
var import_masterKekService = require("./masterKekService.js");
|
|
51
|
+
var import_liveState = require("../liveState.js");
|
|
49
52
|
const KIND_SHELLOUT = "macos-keychain-shellout";
|
|
50
|
-
const KEYCHAIN_SERVICE =
|
|
51
|
-
const KEYCHAIN_ACCOUNT =
|
|
53
|
+
const KEYCHAIN_SERVICE = import_masterKekService.MASTER_KEK_KEYCHAIN_SERVICE;
|
|
54
|
+
const KEYCHAIN_ACCOUNT = import_masterKekService.MASTER_KEK_KEYCHAIN_ACCOUNT;
|
|
52
55
|
const SECURITY_ITEM_NOT_FOUND = 44;
|
|
53
56
|
const execFileAsync = (0, import_node_util.promisify)(import_node_child_process.execFile);
|
|
54
57
|
let _execFileForTest = null;
|
|
@@ -168,6 +171,11 @@ async function writeKekToKeychain(kek, service, account) {
|
|
|
168
171
|
if (keychainPath === null) {
|
|
169
172
|
throw new import_types.KekUnavailableError(KIND_SHELLOUT, "no user login keychain resolvable; cannot write master KEK");
|
|
170
173
|
}
|
|
174
|
+
if (_execFileForTest === null) {
|
|
175
|
+
(0, import_liveState.assertMayMutateLiveKeychain)(service, `add the Keychain item ${account} (a master KEK)`, {
|
|
176
|
+
keychainFile: keychainPath
|
|
177
|
+
});
|
|
178
|
+
}
|
|
171
179
|
const b64 = kek.toString("base64");
|
|
172
180
|
try {
|
|
173
181
|
await exec("security", [
|
|
@@ -193,6 +201,7 @@ async function writeKekToKeychain(kek, service, account) {
|
|
|
193
201
|
});
|
|
194
202
|
}
|
|
195
203
|
}
|
|
204
|
+
const __writeKekToKeychainForTest = writeKekToKeychain;
|
|
196
205
|
const _kekCacheBySvc = /* @__PURE__ */ new Map();
|
|
197
206
|
(0, import_zeroize_registry.registerZeroizeHook)(() => zeroizeMacosKekCache());
|
|
198
207
|
function zeroizeMacosKekCache() {
|
|
@@ -222,6 +231,7 @@ async function resolveOrCreateKek(service, account) {
|
|
|
222
231
|
try {
|
|
223
232
|
await writeKekToKeychain(fresh, service, account);
|
|
224
233
|
} catch (error) {
|
|
234
|
+
(0, import_liveState.rethrowIfLiveStateRefusal)(error);
|
|
225
235
|
const winner = await readKekFromKeychain(service, account).catch(() => null);
|
|
226
236
|
if (!winner)
|
|
227
237
|
throw error;
|
|
@@ -341,6 +351,7 @@ class MacosKek {
|
|
|
341
351
|
} catch (err) {
|
|
342
352
|
if (err instanceof import_types.KekUnavailableError)
|
|
343
353
|
throw err;
|
|
354
|
+
(0, import_liveState.rethrowIfLiveStateRefusal)(err);
|
|
344
355
|
throw new import_types.KekUnavailableError(this.id, err?.message ?? "shellout wrap failed", {
|
|
345
356
|
cause: err
|
|
346
357
|
});
|
|
@@ -397,5 +408,6 @@ class MacosKek {
|
|
|
397
408
|
__resetResolvedKeychainCacheForTest,
|
|
398
409
|
__resetSecurityProbeCacheForTest,
|
|
399
410
|
__setExecFileForTest,
|
|
411
|
+
__writeKekToKeychainForTest,
|
|
400
412
|
zeroizeMacosKekCache
|
|
401
413
|
});
|