@skrr-ai/cli 0.1.46 → 0.1.48
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/README.md +1 -1
- package/dist/base-command.d.ts +18 -0
- package/dist/base-command.js +61 -1
- package/dist/commands/agents/chat.d.ts +21 -0
- package/dist/commands/agents/chat.js +26 -9
- package/dist/commands/balance/usage/breakdown.d.ts +14 -0
- package/dist/commands/balance/usage/breakdown.js +68 -0
- package/dist/commands/balance/usage.js +24 -0
- package/dist/commands/code/handover.d.ts +2 -2
- package/dist/commands/code/handover.js +12 -13
- package/dist/commands/code/install.js +31 -0
- package/dist/commands/code/update.d.ts +46 -0
- package/dist/commands/code/update.js +242 -0
- package/dist/commands/commerce/entitlements/explain.d.ts +22 -0
- package/dist/commands/commerce/entitlements/explain.js +40 -0
- package/dist/commands/commerce/incidents/audit.d.ts +20 -0
- package/dist/commands/commerce/incidents/audit.js +37 -0
- package/dist/commands/commerce/incidents/list.d.ts +22 -0
- package/dist/commands/commerce/incidents/list.js +49 -0
- package/dist/commands/commerce/incidents/resolve.d.ts +23 -0
- package/dist/commands/commerce/incidents/resolve.js +45 -0
- package/dist/commands/commerce/incidents/retry.d.ts +22 -0
- package/dist/commands/commerce/incidents/retry.js +45 -0
- package/dist/commands/commerce/incidents/show.d.ts +13 -0
- package/dist/commands/commerce/incidents/show.js +30 -0
- package/dist/commands/commerce/offers/approve.d.ts +17 -0
- package/dist/commands/commerce/offers/approve.js +33 -0
- package/dist/commands/commerce/offers/create.d.ts +18 -0
- package/dist/commands/commerce/offers/create.js +34 -0
- package/dist/commands/commerce/offers/publish.d.ts +13 -0
- package/dist/commands/commerce/offers/publish.js +28 -0
- package/dist/commands/commerce/offers/retire.d.ts +17 -0
- package/dist/commands/commerce/offers/retire.js +32 -0
- package/dist/commands/commerce/offers/validate.d.ts +18 -0
- package/dist/commands/commerce/offers/validate.js +33 -0
- package/dist/commands/commerce/products/create.d.ts +10 -0
- package/dist/commands/commerce/products/create.js +25 -0
- package/dist/commands/commerce/promotions/redeem.d.ts +13 -0
- package/dist/commands/commerce/promotions/redeem.js +32 -0
- package/dist/commands/commerce/terms/accept.d.ts +18 -0
- package/dist/commands/commerce/terms/accept.js +39 -0
- package/dist/commands/commerce/terms/show.d.ts +10 -0
- package/dist/commands/commerce/terms/show.js +34 -0
- package/dist/commands/commerce/trials/conversion-preview.d.ts +18 -0
- package/dist/commands/commerce/trials/conversion-preview.js +39 -0
- package/dist/commands/commerce/trials/start.d.ts +23 -0
- package/dist/commands/commerce/trials/start.js +58 -0
- package/dist/commands/commitments/accounting.d.ts +39 -0
- package/dist/commands/commitments/accounting.js +116 -0
- package/dist/commands/commitments/action-history.d.ts +1 -0
- package/dist/commands/commitments/action-history.js +8 -1
- package/dist/commands/commitments/case.d.ts +1 -0
- package/dist/commands/commitments/case.js +19 -3
- package/dist/commands/commitments/cases.d.ts +1 -0
- package/dist/commands/commitments/cases.js +11 -1
- package/dist/commands/commitments/checks.d.ts +1 -0
- package/dist/commands/commitments/checks.js +5 -1
- package/dist/commands/commitments/cost.d.ts +62 -0
- package/dist/commands/commitments/cost.js +130 -0
- package/dist/commands/commitments/create.js +1 -1
- package/dist/commands/commitments/delete.d.ts +1 -0
- package/dist/commands/commitments/delete.js +56 -6
- package/dist/commands/commitments/feedback.js +9 -1
- package/dist/commands/commitments/handover.js +16 -0
- package/dist/commands/commitments/hypotheses.d.ts +1 -0
- package/dist/commands/commitments/hypotheses.js +17 -2
- package/dist/commands/commitments/links/list.js +4 -1
- package/dist/commands/commitments/liveness.d.ts +18 -0
- package/dist/commands/commitments/liveness.js +80 -0
- package/dist/commands/commitments/metrics.d.ts +1 -0
- package/dist/commands/commitments/metrics.js +8 -1
- package/dist/commands/commitments/next-tick.d.ts +39 -0
- package/dist/commands/commitments/next-tick.js +122 -0
- package/dist/commands/commitments/observations.d.ts +1 -0
- package/dist/commands/commitments/observations.js +19 -2
- package/dist/commands/commitments/pause.js +12 -0
- package/dist/commands/commitments/receipt.d.ts +2 -0
- package/dist/commands/commitments/receipt.js +16 -2
- package/dist/commands/commitments/remediation-proposal.js +6 -2
- package/dist/commands/commitments/remediation-proposals.js +5 -1
- package/dist/commands/commitments/restore.d.ts +25 -0
- package/dist/commands/commitments/restore.js +46 -0
- package/dist/commands/commitments/show.js +32 -0
- package/dist/commands/commitments/trigger-status.js +33 -0
- package/dist/commands/commitments/update.d.ts +1 -0
- package/dist/commands/commitments/update.js +31 -5
- package/dist/commands/commitments/wake-capabilities.d.ts +0 -1
- package/dist/commands/commitments/wake-capabilities.js +8 -4
- package/dist/commands/convos/handover.d.ts +1 -0
- package/dist/commands/convos/handover.js +4 -0
- package/dist/commands/daemon/index.js +2 -0
- package/dist/commands/daemon/update.d.ts +19 -0
- package/dist/commands/daemon/update.js +48 -0
- package/dist/commands/enterprise/budgets/create.d.ts +11 -0
- package/dist/commands/enterprise/budgets/create.js +27 -0
- package/dist/commands/enterprise/budgets/evaluate.d.ts +17 -0
- package/dist/commands/enterprise/budgets/evaluate.js +32 -0
- package/dist/commands/enterprise/budgets/publish.d.ts +14 -0
- package/dist/commands/enterprise/budgets/publish.js +30 -0
- package/dist/commands/enterprise/contracts/activate.d.ts +14 -0
- package/dist/commands/enterprise/contracts/activate.js +30 -0
- package/dist/commands/enterprise/contracts/create.d.ts +14 -0
- package/dist/commands/enterprise/contracts/create.js +32 -0
- package/dist/commands/enterprise/contracts/issue.d.ts +18 -0
- package/dist/commands/enterprise/contracts/issue.js +34 -0
- package/dist/commands/enterprise/domains/begin.d.ts +20 -0
- package/dist/commands/enterprise/domains/begin.js +39 -0
- package/dist/commands/enterprise/domains/verify.d.ts +14 -0
- package/dist/commands/enterprise/domains/verify.js +32 -0
- package/dist/commands/enterprise/external-config/activate.d.ts +22 -0
- package/dist/commands/enterprise/external-config/activate.js +49 -0
- package/dist/commands/enterprise/external-config/set.d.ts +25 -0
- package/dist/commands/enterprise/external-config/set.js +123 -0
- package/dist/commands/enterprise/external-config/show.d.ts +12 -0
- package/dist/commands/enterprise/external-config/show.js +39 -0
- package/dist/commands/enterprise/external-config/suspend.d.ts +13 -0
- package/dist/commands/enterprise/external-config/suspend.js +41 -0
- package/dist/commands/enterprise/finance/close-snapshot.d.ts +11 -0
- package/dist/commands/enterprise/finance/close-snapshot.js +28 -0
- package/dist/commands/enterprise/finance/record-document.d.ts +18 -0
- package/dist/commands/enterprise/finance/record-document.js +35 -0
- package/dist/commands/enterprise/profile.d.ts +20 -0
- package/dist/commands/enterprise/profile.js +38 -0
- package/dist/commands/login.d.ts +13 -0
- package/dist/commands/login.js +77 -0
- package/dist/commands/machines/dedicated/index.js +3 -0
- package/dist/commands/machines/dedicated/service/apply.d.ts +23 -0
- package/dist/commands/machines/dedicated/service/apply.js +99 -0
- package/dist/commands/machines/dedicated/service/approve.d.ts +23 -0
- package/dist/commands/machines/dedicated/service/approve.js +52 -0
- package/dist/commands/machines/dedicated/service/create.d.ts +55 -0
- package/dist/commands/machines/dedicated/service/create.js +222 -0
- package/dist/commands/machines/dedicated/service/edit.d.ts +30 -0
- package/dist/commands/machines/dedicated/service/edit.js +146 -0
- package/dist/commands/machines/dedicated/service/exec.d.ts +26 -0
- package/dist/commands/machines/dedicated/service/exec.js +92 -0
- package/dist/commands/machines/dedicated/service/export.d.ts +29 -0
- package/dist/commands/machines/dedicated/service/export.js +106 -0
- package/dist/commands/machines/dedicated/service/index.d.ts +14 -0
- package/dist/commands/machines/dedicated/service/index.js +49 -0
- package/dist/commands/machines/dedicated/service/logs.d.ts +33 -0
- package/dist/commands/machines/dedicated/service/logs.js +148 -0
- package/dist/commands/machines/dedicated/service/ls.d.ts +20 -0
- package/dist/commands/machines/dedicated/service/ls.js +80 -0
- package/dist/commands/machines/dedicated/service/restart.d.ts +14 -0
- package/dist/commands/machines/dedicated/service/restart.js +29 -0
- package/dist/commands/machines/dedicated/service/rm.d.ts +20 -0
- package/dist/commands/machines/dedicated/service/rm.js +33 -0
- package/dist/commands/machines/dedicated/service/secret/index.d.ts +14 -0
- package/dist/commands/machines/dedicated/service/secret/index.js +25 -0
- package/dist/commands/machines/dedicated/service/secret/rm.d.ts +22 -0
- package/dist/commands/machines/dedicated/service/secret/rm.js +54 -0
- package/dist/commands/machines/dedicated/service/secret/set.d.ts +22 -0
- package/dist/commands/machines/dedicated/service/secret/set.js +93 -0
- package/dist/commands/machines/dedicated/service/start.d.ts +14 -0
- package/dist/commands/machines/dedicated/service/start.js +29 -0
- package/dist/commands/machines/dedicated/service/status.d.ts +21 -0
- package/dist/commands/machines/dedicated/service/status.js +85 -0
- package/dist/commands/machines/dedicated/service/stop.d.ts +20 -0
- package/dist/commands/machines/dedicated/service/stop.js +35 -0
- package/dist/commands/machines/dedicated/service/top.d.ts +22 -0
- package/dist/commands/machines/dedicated/service/top.js +120 -0
- package/dist/commands/machines/dedicated/sign-in-status.d.ts +22 -0
- package/dist/commands/machines/dedicated/sign-in-status.js +79 -0
- package/dist/commands/machines/dedicated/ssh-config.d.ts +28 -0
- package/dist/commands/machines/dedicated/ssh-config.js +66 -0
- package/dist/commands/machines/dedicated/ssh-proxy.d.ts +22 -0
- package/dist/commands/machines/dedicated/ssh-proxy.js +62 -0
- package/dist/commands/machines/dedicated/ssh.d.ts +29 -0
- package/dist/commands/machines/dedicated/ssh.js +121 -0
- package/dist/commands/native/allow-all.d.ts +14 -0
- package/dist/commands/native/allow-all.js +25 -0
- package/dist/commands/native/allow.d.ts +24 -0
- package/dist/commands/native/allow.js +45 -0
- package/dist/commands/native/deny.d.ts +24 -0
- package/dist/commands/native/deny.js +43 -0
- package/dist/commands/native/disable.d.ts +17 -0
- package/dist/commands/native/disable.js +28 -0
- package/dist/commands/native/enable.d.ts +12 -0
- package/dist/commands/native/enable.js +29 -0
- package/dist/commands/native/list-apps.d.ts +19 -0
- package/dist/commands/native/list-apps.js +30 -0
- package/dist/commands/native/restrict-to.d.ts +22 -0
- package/dist/commands/native/restrict-to.js +41 -0
- package/dist/commands/native/status.d.ts +19 -0
- package/dist/commands/native/status.js +33 -0
- package/dist/commands/native.d.ts +39 -0
- package/dist/commands/native.js +76 -0
- package/dist/commands/service/index.d.ts +14 -0
- package/dist/commands/service/index.js +31 -0
- package/dist/commands/service/logs.d.ts +18 -0
- package/dist/commands/service/logs.js +53 -0
- package/dist/commands/service/ls.d.ts +13 -0
- package/dist/commands/service/ls.js +48 -0
- package/dist/commands/service/propose.d.ts +34 -0
- package/dist/commands/service/propose.js +113 -0
- package/dist/commands/service/status.d.ts +17 -0
- package/dist/commands/service/status.js +56 -0
- package/dist/commands/spaces/auto-executor/runs.d.ts +13 -0
- package/dist/commands/spaces/auto-executor/runs.js +56 -0
- package/dist/commands/spaces/briefs/get.js +8 -0
- package/dist/commands/spaces/briefs/list.js +2 -0
- package/dist/commands/spaces/briefs/set.d.ts +3 -0
- package/dist/commands/spaces/briefs/set.js +78 -13
- package/dist/commands/spaces/expertise-suggestions.d.ts +12 -0
- package/dist/commands/spaces/expertise-suggestions.js +71 -0
- package/dist/commands/spaces/members/add.d.ts +1 -0
- package/dist/commands/spaces/members/add.js +11 -3
- package/dist/commands/spaces/members/list.js +11 -0
- package/dist/commands/store/governance/artifacts.d.ts +25 -0
- package/dist/commands/store/governance/artifacts.js +55 -0
- package/dist/commands/store/governance/assign.d.ts +16 -0
- package/dist/commands/store/governance/assign.js +54 -0
- package/dist/commands/store/governance/create-license.d.ts +18 -0
- package/dist/commands/store/governance/create-license.js +35 -0
- package/dist/commands/store/governance/install-plan.d.ts +25 -0
- package/dist/commands/store/governance/install-plan.js +56 -0
- package/dist/commands/store/governance/license-policy.d.ts +30 -0
- package/dist/commands/store/governance/license-policy.js +69 -0
- package/dist/commands/store/governance/policy.d.ts +25 -0
- package/dist/commands/store/governance/policy.js +65 -0
- package/dist/commands/store/governance/publish-release.d.ts +17 -0
- package/dist/commands/store/governance/publish-release.js +34 -0
- package/dist/commands/tasks/assign.d.ts +9 -0
- package/dist/commands/tasks/assign.js +108 -1
- package/dist/commands/tasks/deliverable/add.d.ts +15 -0
- package/dist/commands/tasks/deliverable/add.js +174 -0
- package/dist/commands/tasks/deliverable/archive.d.ts +35 -0
- package/dist/commands/tasks/deliverable/archive.js +205 -0
- package/dist/commands/tasks/labels/detach.js +3 -0
- package/dist/commands/tasks/labels/suggest.d.ts +24 -0
- package/dist/commands/tasks/labels/suggest.js +69 -0
- package/dist/commands/tasks/list.d.ts +16 -2
- package/dist/commands/tasks/list.js +100 -24
- package/dist/commands/tasks/show.d.ts +23 -0
- package/dist/commands/tasks/show.js +51 -1
- package/dist/commands/wiki/rm.d.ts +22 -1
- package/dist/commands/wiki/rm.js +52 -3
- package/dist/lib/agentic-stream.js +10 -2
- package/dist/lib/assignee-resolver.d.ts +22 -0
- package/dist/lib/assignee-resolver.js +26 -0
- package/dist/lib/balance.d.ts +6 -1
- package/dist/lib/balance.js +15 -0
- package/dist/lib/code-handover.d.ts +0 -10
- package/dist/lib/code-handover.js +20 -5
- package/dist/lib/commerce-command.d.ts +48 -0
- package/dist/lib/commerce-command.js +70 -0
- package/dist/lib/commerce.d.ts +93 -0
- package/dist/lib/commerce.js +129 -0
- package/dist/lib/commitment-product.js +1 -1
- package/dist/lib/commitments.d.ts +202 -29
- package/dist/lib/commitments.js +300 -33
- package/dist/lib/dedicated-lease-command.js +10 -0
- package/dist/lib/dedicated-machines.d.ts +37 -0
- package/dist/lib/dedicated-machines.js +47 -0
- package/dist/lib/dedicated-service-command.d.ts +60 -0
- package/dist/lib/dedicated-service-command.js +182 -0
- package/dist/lib/dedicated-service.d.ts +342 -0
- package/dist/lib/dedicated-service.js +741 -0
- package/dist/lib/dedicated-ssh.d.ts +136 -0
- package/dist/lib/dedicated-ssh.js +387 -0
- package/dist/lib/delegated-cli.js +51 -13
- package/dist/lib/enterprise-commerce.d.ts +67 -0
- package/dist/lib/enterprise-commerce.js +112 -0
- package/dist/lib/enterprise-external-configuration.d.ts +60 -0
- package/dist/lib/enterprise-external-configuration.js +58 -0
- package/dist/lib/first-party-harness.js +17 -3
- package/dist/lib/governed-store.d.ts +110 -0
- package/dist/lib/governed-store.js +79 -0
- package/dist/lib/guest-service-command.d.ts +16 -0
- package/dist/lib/guest-service-command.js +32 -0
- package/dist/lib/guest-service.d.ts +67 -0
- package/dist/lib/guest-service.js +112 -0
- package/dist/lib/prompt.d.ts +1 -0
- package/dist/lib/prompt.js +1 -0
- package/dist/lib/task-asset-upload.d.ts +20 -0
- package/dist/lib/task-asset-upload.js +30 -8
- package/dist/lib/task-extras.d.ts +23 -0
- package/dist/lib/task-extras.js +6 -0
- package/dist/lib/update-check.d.ts +80 -7
- package/dist/lib/update-check.js +365 -33
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/daemonScopes.d.ts +9 -3
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/daemonScopes.js +10 -3
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/firstPartyHarness.d.ts +9 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/firstPartyHarness.js +8 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/index.d.ts +1 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/index.js +6 -5
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/messages.d.ts +16 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/messages.js +21 -4
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/spawnEnv.d.ts +1 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/spawnEnv.js +24 -2
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/daemonScopes.d.ts +9 -3
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/daemonScopes.js +10 -3
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/firstPartyHarness.d.ts +9 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/firstPartyHarness.js +8 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/index.d.ts +1 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/index.js +1 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/messages.d.ts +16 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/messages.js +20 -4
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/spawnEnv.d.ts +1 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/spawnEnv.js +24 -2
- package/dist/node_modules/@skrr-ai/auth-core/package.json +1 -1
- package/dist/node_modules/@skrr-ai/data-provider/index.js +5067 -4821
- package/oclif.manifest.json +34877 -28659
- package/package.json +43 -1
|
@@ -22,11 +22,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
22
22
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
23
23
|
};
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.
|
|
26
|
-
exports.
|
|
27
|
-
exports.
|
|
28
|
-
exports.
|
|
29
|
-
exports.consolidateProfileState = exports.profileStateFilePathsToClear = exports.profileStateFileLocations = exports.resolveProfileStateFile = void 0;
|
|
25
|
+
exports.generateVerifier = exports.invalidateHeadersHelperCache = exports.runHeadersHelper = exports.SENTINEL_TRIGGERING_FAILURES = exports.__resetAuthHelperFailureReasonForTest = exports.getLastAuthHelperFailureReason = exports.getDefaultHelperTtlMs = exports.invokeAuthHelper = exports.AuthHelperUnavailableError = exports.AuthHelperUntrustedError = exports.CI_TOKEN_PREFIX = exports.classifyTokenKind = exports.invalidateAuthHelperCache = exports.__resetCredentialResolverForTest = exports.CREDENTIAL_PRECEDENCE = exports.CredentialResolver = exports.__setFdReaderForTest = exports.readAuthFromFd = exports.createRefreshScheduler = exports.UNKNOWN_401_BUDGET = exports.__resetUnknown401StreaksForTest = exports.__refreshDiagnostics = exports.installLockExitHandlers = exports.clearReauthState = exports.needsReauthState = exports.persistReauthState = exports.withAuthLock = exports.revokeDaemonRefreshSession = exports.refreshDaemonToken = exports.classifyRefreshResponse = exports.EXIT_NEEDS_REAUTH = exports.reauthCommand = exports.formatReauthMessage = exports.handleMidStreamAuthExpiry = exports.isAuthExpiredSseEvent = exports.decodeJwtPayload = exports.decodeJwtExpiry = exports.TransientAuthFailure = exports.PermanentAuthFailure = exports.emitAuthTelemetry = exports.getAuthBinaryName = exports.getAuthKillSwitches = exports.getAuthConfigDir = exports.getAuthLogger = exports.configureAuthCore = exports.OAUTH_CLI_SCOPE = exports.isDaemonScope = exports.VALID_DAEMON_SCOPE_SET = exports.ALL_DAEMON_SCOPES = exports.SCOPES = void 0;
|
|
26
|
+
exports.publicJwkFromX = exports.normalizeHtu = exports.jwkThumbprint = exports.generateDeviceKeyPair = exports.buildDeviceProof = exports.zeroizeKekCaches = exports.WindowsKek = exports.registerZeroizeHook = exports.MacosKek = exports.LinuxKek = exports.KekUnavailableError = exports.UnavailableKek = exports.InMemoryKek = exports.getKekStrategy = exports.__setKekStrategyForTest = exports.credEnvelopeWrap = exports.credEnvelopeUnwrap = exports.credEnvelopeSerialize = exports.credSealBuffer = exports.credOpenBuffer = exports.CRED_KEY_LEN = exports.isCredEnvelopeString = exports.generateDek = exports.CRED_ENVELOPE_MAGIC = exports.credEnvelopeEncrypt = exports.credEnvelopeDeserialize = exports.credEnvelopeDecrypt = exports.buildCredentialAad = exports.isValidRecoveryCode = exports.normalizeRecoveryCode = exports.parseRecoveryCode = exports.formatRecoveryCode = exports.MAX_TTL_DAYS = exports.MIN_TTL_DAYS = exports.parseTtlDays = exports.LoginExchangeError = exports.LoginInitError = exports.loginWithLocalhost = exports.LocalCallbackMalformedError = exports.LocalCallbackDeniedError = exports.LocalCallbackStateMismatchError = exports.LocalCallbackTimeoutError = exports.LocalCallbackBindError = exports.LocalCallbackError = exports.DEFAULT_LOGIN_TIMEOUT_MS = exports.startLocalCallback = exports.verifyChallenge = exports.safeEqual = exports.generateState = exports.challenge = void 0;
|
|
27
|
+
exports.pairUint8ArrayToBase64Url = exports.pairUint8ArrayToBase64 = exports.parsePairUrl = exports.parsePairPlaintext = exports.parsePairBundle = exports.openPairBundleBase64 = exports.generatePairKeyPair = exports.buildPairUrl = exports.buildPairAad = exports.pairBase64UrlToUint8Array = exports.pairBase64ToUint8Array = exports.assemblePairBundleBase64 = exports.PairBundleError = exports.PAIR_SECRET_LEN = exports.PAIR_PUBKEY_LEN = exports.PAIR_NONCE_LEN = exports.PAIR_BUNDLE_MAX_BASE64_LEN = exports.PAIR_AAD_MAX_LEN = exports.PAIR_AAD_PREFIX = exports.__resetCachedDaemonIdForTest = exports.legacyDaemonUuids = exports.ensureMachineDaemonId = exports.__getDeviceIdentityStateForTest = exports.__setDeviceIdentityStateForTest = exports.__enrollmentBackoffPathForTest = exports.__enrollmentMarkerPathForTest = exports.__privateKeyPathForTest = exports.__publicKeyPathForTest = exports.describeDeviceIdentityState = exports.getDevicePublicKey = exports.isDeviceIdentityActive = exports.clearEnrollmentMarker = exports.enrollWithServer = exports.signServerRequest = exports.resetDeviceIdentity = exports.initDeviceIdentity = exports.__resetShutdownGuardForTest = exports.__getCredEnvelopeStateForTest = exports.__setCredEnvelopeStateForTest = exports.__wrappedDekFilePathForTest = exports.maybeDecryptOnRead = exports.maybeEncryptForWrite = exports.describeCredEnvelopeState = exports.hasCredEnvelopePathConflict = exports.isCredEnvelopeActive = exports.shutdownCredEnvelope = exports.resetCredEnvelope = exports.initCredEnvelope = exports.verifyDeviceProof = exports.tokenHash = void 0;
|
|
28
|
+
exports.legacyProfileStateDir = exports.profileStateDir = exports.SUPERSEDED_COPY_SUFFIX = exports.SUPERSEDED_MARKER_SUFFIX = exports.PROFILES_SEGMENT = exports.isConfigRootOverridden = exports.configRootPath = exports.resolveConfigRoot = exports.verifyManifest = exports.verifyArtifact = exports.getDeltaFor = exports.buildManifestMessage = exports.buildArtifactMessage = exports.MAX_SIGS = exports.OVERSKY_RELEASE_PUBLIC_KEYS = exports.resolveFirstPartyHarnessChannel = exports.resolveChannelManifestUrl = exports.isFirstPartyHarnessChannel = exports.firstPartyHarnessFeedCandidates = exports.firstPartyHarnessFeedBase = exports.firstPartyHarnessChannelPrefix = exports.FIRST_PARTY_HARNESS_CHANNELS = exports.DEFAULT_FIRST_PARTY_HARNESS_CHANNEL = exports.migrateFirstPartyHarnessHome = exports.linkFirstPartyHarnessAliases = exports.firstPartyHarnessInstalledBinaryPath = exports.firstPartyHarnessHomeDir = exports.firstPartyHarnessBinDir = exports.FIRST_PARTY_HARNESS_PROVENANCE_SUFFIX = exports.FIRST_PARTY_HARNESS_PREVIOUS_SUFFIX = exports.describeLegacyState = exports.findLegacyLocalState = exports.DEFAULT_BINARY_NAME = exports.LEGACY_NATIVE_ID_PREFIXES = exports.NATIVE_ID_PREFIX = exports.LEGACY_CONFIG_DIR_NAMES = exports.CONFIG_DIR_NAME = exports.SENSITIVE_ENV_PREFIX_EXCEPTIONS = exports.SENSITIVE_ENV_NAME_TOKENS = exports.SENSITIVE_ENV_SUFFIXES = exports.SENSITIVE_ENV_PREFIXES = exports.SENSITIVE_ENV_VARS = exports.sanitizeSpawnEnv = exports.harnessLoadsClaudeSkillsLayout = exports.claudeSkillsLayoutEvidence = exports.HARNESSES_LOADING_CLAUDE_SKILLS_LAYOUT = exports.tierPermitsConfiguredAutoMode = exports.credentialPolicyForTier = exports.getHarnessTier = exports.HARNESS_TIERS = void 0;
|
|
29
|
+
exports.consolidateProfileState = exports.profileStateFilePathsToClear = exports.profileStateFileLocations = exports.resolveProfileStateFile = exports.resolveProfileStateDir = void 0;
|
|
30
30
|
// Daemon scope vocabulary — single source of truth for non-Mongoose tiers
|
|
31
31
|
// (daemon, desktop, cli). Schema-bound canonical lives in
|
|
32
32
|
// `@skrr-ai/data-schemas/common/daemonScopes`; the two are kept byte-equal
|
|
@@ -63,6 +63,7 @@ Object.defineProperty(exports, "handleMidStreamAuthExpiry", { enumerable: true,
|
|
|
63
63
|
// Reauth messaging
|
|
64
64
|
var messages_js_1 = require("./messages.js");
|
|
65
65
|
Object.defineProperty(exports, "formatReauthMessage", { enumerable: true, get: function () { return messages_js_1.formatReauthMessage; } });
|
|
66
|
+
Object.defineProperty(exports, "reauthCommand", { enumerable: true, get: function () { return messages_js_1.reauthCommand; } });
|
|
66
67
|
Object.defineProperty(exports, "EXIT_NEEDS_REAUTH", { enumerable: true, get: function () { return messages_js_1.EXIT_NEEDS_REAUTH; } });
|
|
67
68
|
// Pure HTTP→{Permanent, Transient, Success} response classification —
|
|
68
69
|
// exposed so RN-side clients can apply the same mapping daemon uses.
|
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
export type AuthFailureReason = 'REFRESH_INVALID' | 'REFRESH_REUSED' | 'REFRESH_EXPIRED' | 'SESSION_REVOKED' | 'TOKEN_EXPIRED' | 'TOKEN_INVALID' | 'UNKNOWN_401' | 'UNKNOWN';
|
|
2
|
+
/**
|
|
3
|
+
* The command that recovers this process from a re-auth latch.
|
|
4
|
+
*
|
|
5
|
+
* ONE function owns this, because the answer is printed twice in the same
|
|
6
|
+
* millisecond — once in the human block below and once on the machine-readable
|
|
7
|
+
* `[oversky-reauth]` line a log scraper pages on — and the two used to be
|
|
8
|
+
* written independently. They disagreed: the block said `skrrd login --device`
|
|
9
|
+
* while the error line said `skrr login`, naming a different binary and
|
|
10
|
+
* different flags for one action, so an operator reading either one did
|
|
11
|
+
* something the other did not describe (OSK-10224).
|
|
12
|
+
*
|
|
13
|
+
* The binary is whatever the consumer registered with
|
|
14
|
+
* `configureAuthCore({ binaryName })` — the binary the user actually typed —
|
|
15
|
+
* and `--device` is added only when there is no TTY to open a browser from.
|
|
16
|
+
*/
|
|
17
|
+
export declare function reauthCommand(): string;
|
|
2
18
|
export declare function formatReauthMessage(reason: AuthFailureReason | string): string;
|
|
3
19
|
/**
|
|
4
20
|
* Exit code for "permanent auth failure during initial connect" — picked to
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.EXIT_NEEDS_REAUTH = void 0;
|
|
4
|
+
exports.reauthCommand = reauthCommand;
|
|
4
5
|
exports.formatReauthMessage = formatReauthMessage;
|
|
5
6
|
/**
|
|
6
7
|
* User-facing messages for auth state transitions.
|
|
@@ -21,17 +22,33 @@ const REASON_HUMAN = {
|
|
|
21
22
|
UNKNOWN_401: 'skrr needs you to sign in again.',
|
|
22
23
|
UNKNOWN: 'skrr needs you to sign in again.',
|
|
23
24
|
};
|
|
25
|
+
/**
|
|
26
|
+
* The command that recovers this process from a re-auth latch.
|
|
27
|
+
*
|
|
28
|
+
* ONE function owns this, because the answer is printed twice in the same
|
|
29
|
+
* millisecond — once in the human block below and once on the machine-readable
|
|
30
|
+
* `[oversky-reauth]` line a log scraper pages on — and the two used to be
|
|
31
|
+
* written independently. They disagreed: the block said `skrrd login --device`
|
|
32
|
+
* while the error line said `skrr login`, naming a different binary and
|
|
33
|
+
* different flags for one action, so an operator reading either one did
|
|
34
|
+
* something the other did not describe (OSK-10224).
|
|
35
|
+
*
|
|
36
|
+
* The binary is whatever the consumer registered with
|
|
37
|
+
* `configureAuthCore({ binaryName })` — the binary the user actually typed —
|
|
38
|
+
* and `--device` is added only when there is no TTY to open a browser from.
|
|
39
|
+
*/
|
|
40
|
+
function reauthCommand() {
|
|
41
|
+
const bin = (0, runtime_js_1.getAuthBinaryName)();
|
|
42
|
+
return process.stdout.isTTY ? `${bin} login` : `${bin} login --device`;
|
|
43
|
+
}
|
|
24
44
|
function formatReauthMessage(reason) {
|
|
25
45
|
const norm = REASON_HUMAN[reason] || REASON_HUMAN.UNKNOWN;
|
|
26
|
-
const isHeadless = !process.stdout.isTTY;
|
|
27
|
-
const bin = (0, runtime_js_1.getAuthBinaryName)();
|
|
28
|
-
const cmd = isHeadless ? `${bin} login --device` : `${bin} login`;
|
|
29
46
|
return [
|
|
30
47
|
'',
|
|
31
48
|
'skrr cannot connect — re-authentication required.',
|
|
32
49
|
` Reason: ${norm}`,
|
|
33
50
|
'',
|
|
34
|
-
` To continue, run: ${
|
|
51
|
+
` To continue, run: ${reauthCommand()}`,
|
|
35
52
|
'',
|
|
36
53
|
].join('\n');
|
|
37
54
|
}
|
|
@@ -75,7 +75,7 @@ export declare const SENSITIVE_ENV_SUFFIXES: readonly string[];
|
|
|
75
75
|
* `SECRETARY` untouched.
|
|
76
76
|
*/
|
|
77
77
|
export declare const SENSITIVE_ENV_NAME_TOKENS: readonly string[];
|
|
78
|
-
/** Specific
|
|
78
|
+
/** Specific names to keep — the prefix sweeps are broad on purpose. */
|
|
79
79
|
export declare const SENSITIVE_ENV_PREFIX_EXCEPTIONS: ReadonlySet<string>;
|
|
80
80
|
/**
|
|
81
81
|
* Build a sanitized snapshot of the parent's own env for a spawned
|
|
@@ -61,6 +61,9 @@ exports.sanitizeSpawnEnv = sanitizeSpawnEnv;
|
|
|
61
61
|
exports.SENSITIVE_ENV_VARS = new Set([
|
|
62
62
|
'CLAUDE_CODE_OAUTH_TOKEN',
|
|
63
63
|
'OVERSKY_TOKEN',
|
|
64
|
+
// The renamed credential alias (cli/src/lib/config.ts honors both spellings).
|
|
65
|
+
// Same double coverage as OVERSKY_TOKEN — name AND the SKRR_ prefix below.
|
|
66
|
+
'SKRR_TOKEN',
|
|
64
67
|
'AWS_ACCESS_KEY_ID',
|
|
65
68
|
'AWS_SECRET_ACCESS_KEY',
|
|
66
69
|
'AWS_SESSION_TOKEN',
|
|
@@ -91,7 +94,16 @@ exports.SENSITIVE_ENV_VARS = new Set([
|
|
|
91
94
|
'LD_PRELOAD',
|
|
92
95
|
]);
|
|
93
96
|
/** Variable name prefixes that should be stripped (catches families like AWS_*). */
|
|
94
|
-
exports.SENSITIVE_ENV_PREFIXES = [
|
|
97
|
+
exports.SENSITIVE_ENV_PREFIXES = [
|
|
98
|
+
'AWS_',
|
|
99
|
+
'OVERSKY_',
|
|
100
|
+
// The renamed product namespace: SKRR_TOKEN, SKRR_REFRESH_TOKEN, the
|
|
101
|
+
// session-authority aliases (SKRR_SESSION_*, SKRR_BASE_URL), and the
|
|
102
|
+
// daemon's control-plane identity (SKRR_MACHINE_UUID, SKRR_LEASE_GENERATION)
|
|
103
|
+
// all carry authority a model-driven child must not inherit. Non-secret
|
|
104
|
+
// lane essentials live in SENSITIVE_ENV_PREFIX_EXCEPTIONS below.
|
|
105
|
+
'SKRR_',
|
|
106
|
+
];
|
|
95
107
|
/**
|
|
96
108
|
* Credential-shaped suffixes are also forbidden. A fixed provider list is
|
|
97
109
|
* never complete: a newly configured provider would otherwise leak its key
|
|
@@ -120,7 +132,7 @@ exports.SENSITIVE_ENV_SUFFIXES = [
|
|
|
120
132
|
* `SECRETARY` untouched.
|
|
121
133
|
*/
|
|
122
134
|
exports.SENSITIVE_ENV_NAME_TOKENS = ['SECRET'];
|
|
123
|
-
/** Specific
|
|
135
|
+
/** Specific names to keep — the prefix sweeps are broad on purpose. */
|
|
124
136
|
exports.SENSITIVE_ENV_PREFIX_EXCEPTIONS = new Set([
|
|
125
137
|
// Headless flag is read by spawned tools to know they're inside the daemon —
|
|
126
138
|
// not a secret. Add more here if a tool legitimately needs an OVERSKY_ var.
|
|
@@ -130,6 +142,16 @@ exports.SENSITIVE_ENV_PREFIX_EXCEPTIONS = new Set([
|
|
|
130
142
|
// know they're inside a supervised daemon on Linux/Windows in addition
|
|
131
143
|
// to macOS launchd. Not a secret.
|
|
132
144
|
'OVERSKY_SUPERVISOR',
|
|
145
|
+
// A deployment URL, not a credential. The rename to SKRR_SERVER_URL was
|
|
146
|
+
// chosen precisely because it survives the sanitizer
|
|
147
|
+
// (daemon/src/dedicated-tenant-env.ts), so a spawned lane's `skrr` reaches
|
|
148
|
+
// the deployment this machine is registered with.
|
|
149
|
+
'SKRR_SERVER_URL',
|
|
150
|
+
// The Dedicated Runtime workload marker the exec wrapper stamps into every
|
|
151
|
+
// tenant lane; grandchildren spawned from a lane (e.g. `skrr code` → the
|
|
152
|
+
// engine) must keep it to detect they already run as the workload uid. Not
|
|
153
|
+
// a secret — it authorizes nothing without the matching real uid.
|
|
154
|
+
'SKRR_WORKLOAD_UID',
|
|
133
155
|
]);
|
|
134
156
|
/**
|
|
135
157
|
* Build a sanitized snapshot of the parent's own env for a spawned
|
|
@@ -29,29 +29,35 @@
|
|
|
29
29
|
* never rename in place.
|
|
30
30
|
*/
|
|
31
31
|
/**
|
|
32
|
-
* The canonical daemon scope vocabulary.
|
|
32
|
+
* The canonical daemon scope vocabulary. Seven strings, append-only.
|
|
33
33
|
*
|
|
34
34
|
* - `daemon:tools:bash` — bash tool execution
|
|
35
35
|
* - `daemon:tools:fs:read` — Read tool (file read)
|
|
36
36
|
* - `daemon:tools:fs:write` — Write + Edit tools (file mutation)
|
|
37
37
|
* - `daemon:browser:cdp` — browser automation via CDP (reserved)
|
|
38
|
+
* - `daemon:native-ui:control` — native app GUI control via the helper
|
|
38
39
|
* - `daemon:session:replay` — `daemon:session:replay` socket event
|
|
39
40
|
* - `daemon:offline-queue` — daemon-initiated offline queue
|
|
40
41
|
*
|
|
41
42
|
* Order is the consent-screen render order: tools-first, I/O second,
|
|
42
43
|
* control-flow last.
|
|
44
|
+
*
|
|
45
|
+
* `daemon:native-ui:control` is deliberately NOT folded into
|
|
46
|
+
* `daemon:tools:bash`: a token minted to run shell commands must not
|
|
47
|
+
* thereby be able to click around the user's desktop (OSK-11009).
|
|
43
48
|
*/
|
|
44
49
|
export declare const SCOPES: Readonly<{
|
|
45
50
|
readonly TOOLS_BASH: "daemon:tools:bash";
|
|
46
51
|
readonly TOOLS_FS_READ: "daemon:tools:fs:read";
|
|
47
52
|
readonly TOOLS_FS_WRITE: "daemon:tools:fs:write";
|
|
48
53
|
readonly BROWSER_CDP: "daemon:browser:cdp";
|
|
54
|
+
readonly NATIVE_UI_CONTROL: "daemon:native-ui:control";
|
|
49
55
|
readonly SESSION_REPLAY: "daemon:session:replay";
|
|
50
56
|
readonly OFFLINE_QUEUE: "daemon:offline-queue";
|
|
51
57
|
}>;
|
|
52
58
|
export type DaemonScope = (typeof SCOPES)[keyof typeof SCOPES];
|
|
53
59
|
/**
|
|
54
|
-
* The
|
|
60
|
+
* The seven daemon scopes in canonical order. Frozen so consumers can
|
|
55
61
|
* pass it directly to OAuth `scope` parameters without defensive
|
|
56
62
|
* copies.
|
|
57
63
|
*/
|
|
@@ -64,7 +70,7 @@ export declare const VALID_DAEMON_SCOPE_SET: ReadonlySet<string>;
|
|
|
64
70
|
export declare function isDaemonScope(s: unknown): s is DaemonScope;
|
|
65
71
|
/**
|
|
66
72
|
* `cli` — REST-only sign-in grant for first-party CLI clients. Peer
|
|
67
|
-
* to the
|
|
73
|
+
* to the daemon scopes; lives on `OAuthClient.allowedScopes` for
|
|
68
74
|
* the `oversky-cli` client. See the data-schemas canonical for the
|
|
69
75
|
* full reasoning behind keeping this OUT of `ALL_DAEMON_SCOPES` (the
|
|
70
76
|
* grandfather sentinel `expandScopes(undefined)` would over-grant).
|
|
@@ -29,28 +29,34 @@
|
|
|
29
29
|
* never rename in place.
|
|
30
30
|
*/
|
|
31
31
|
/**
|
|
32
|
-
* The canonical daemon scope vocabulary.
|
|
32
|
+
* The canonical daemon scope vocabulary. Seven strings, append-only.
|
|
33
33
|
*
|
|
34
34
|
* - `daemon:tools:bash` — bash tool execution
|
|
35
35
|
* - `daemon:tools:fs:read` — Read tool (file read)
|
|
36
36
|
* - `daemon:tools:fs:write` — Write + Edit tools (file mutation)
|
|
37
37
|
* - `daemon:browser:cdp` — browser automation via CDP (reserved)
|
|
38
|
+
* - `daemon:native-ui:control` — native app GUI control via the helper
|
|
38
39
|
* - `daemon:session:replay` — `daemon:session:replay` socket event
|
|
39
40
|
* - `daemon:offline-queue` — daemon-initiated offline queue
|
|
40
41
|
*
|
|
41
42
|
* Order is the consent-screen render order: tools-first, I/O second,
|
|
42
43
|
* control-flow last.
|
|
44
|
+
*
|
|
45
|
+
* `daemon:native-ui:control` is deliberately NOT folded into
|
|
46
|
+
* `daemon:tools:bash`: a token minted to run shell commands must not
|
|
47
|
+
* thereby be able to click around the user's desktop (OSK-11009).
|
|
43
48
|
*/
|
|
44
49
|
export const SCOPES = Object.freeze({
|
|
45
50
|
TOOLS_BASH: 'daemon:tools:bash',
|
|
46
51
|
TOOLS_FS_READ: 'daemon:tools:fs:read',
|
|
47
52
|
TOOLS_FS_WRITE: 'daemon:tools:fs:write',
|
|
48
53
|
BROWSER_CDP: 'daemon:browser:cdp',
|
|
54
|
+
NATIVE_UI_CONTROL: 'daemon:native-ui:control',
|
|
49
55
|
SESSION_REPLAY: 'daemon:session:replay',
|
|
50
56
|
OFFLINE_QUEUE: 'daemon:offline-queue',
|
|
51
57
|
});
|
|
52
58
|
/**
|
|
53
|
-
* The
|
|
59
|
+
* The seven daemon scopes in canonical order. Frozen so consumers can
|
|
54
60
|
* pass it directly to OAuth `scope` parameters without defensive
|
|
55
61
|
* copies.
|
|
56
62
|
*/
|
|
@@ -59,6 +65,7 @@ export const ALL_DAEMON_SCOPES = Object.freeze([
|
|
|
59
65
|
SCOPES.TOOLS_FS_READ,
|
|
60
66
|
SCOPES.TOOLS_FS_WRITE,
|
|
61
67
|
SCOPES.BROWSER_CDP,
|
|
68
|
+
SCOPES.NATIVE_UI_CONTROL,
|
|
62
69
|
SCOPES.SESSION_REPLAY,
|
|
63
70
|
SCOPES.OFFLINE_QUEUE,
|
|
64
71
|
]);
|
|
@@ -72,7 +79,7 @@ export function isDaemonScope(s) {
|
|
|
72
79
|
}
|
|
73
80
|
/**
|
|
74
81
|
* `cli` — REST-only sign-in grant for first-party CLI clients. Peer
|
|
75
|
-
* to the
|
|
82
|
+
* to the daemon scopes; lives on `OAuthClient.allowedScopes` for
|
|
76
83
|
* the `oversky-cli` client. See the data-schemas canonical for the
|
|
77
84
|
* full reasoning behind keeping this OUT of `ALL_DAEMON_SCOPES` (the
|
|
78
85
|
* grandfather sentinel `expandScopes(undefined)` would over-grant).
|
|
@@ -320,6 +320,14 @@ declare const ENGINE_ENV_SUFFIXES: Readonly<{
|
|
|
320
320
|
* engine must treat it as a hint: enforcement stays server-side.
|
|
321
321
|
*/
|
|
322
322
|
maxInputTokens: "MAX_INPUT_TOKENS";
|
|
323
|
+
/**
|
|
324
|
+
* The session id the engine stamps into processes it spawns — the one
|
|
325
|
+
* variable on this table the engine WRITES rather than reads, so a child
|
|
326
|
+
* process (e.g. `skrr code handover --carry-session`) can name the session it
|
|
327
|
+
* is running inside without being told. Read with
|
|
328
|
+
* `readFirstPartyHarnessEngineEnv`: current namespace first, then legacy.
|
|
329
|
+
*/
|
|
330
|
+
sessionId: "SESSION_ID";
|
|
323
331
|
}>;
|
|
324
332
|
export type FirstPartyHarnessEngineEnvKey = keyof typeof ENGINE_ENV_SUFFIXES;
|
|
325
333
|
/**
|
|
@@ -357,7 +365,7 @@ export declare const FIRST_PARTY_HARNESS_ENGINE: Readonly<{
|
|
|
357
365
|
* `readFirstPartyHarnessEngineEnv` to read one the way the engine does and
|
|
358
366
|
* `firstPartyHarnessEngineEnvEntries` to set one every engine build honours.
|
|
359
367
|
*/
|
|
360
|
-
env: Readonly<Record<"appName" | "serverPassword" | "serverUsername" | "home" | "config" | "scriptName" | "allowUpstreamEgress" | "compatOpencode" | "noCompatPrompts" | "maxInputTokens", string>>;
|
|
368
|
+
env: Readonly<Record<"appName" | "serverPassword" | "serverUsername" | "home" | "config" | "scriptName" | "allowUpstreamEgress" | "compatOpencode" | "noCompatPrompts" | "maxInputTokens" | "sessionId", string>>;
|
|
361
369
|
}>;
|
|
362
370
|
/**
|
|
363
371
|
* Every name the engine reads for one purpose, current namespace first — the
|
|
@@ -422,6 +422,14 @@ const ENGINE_ENV_SUFFIXES = Object.freeze({
|
|
|
422
422
|
* engine must treat it as a hint: enforcement stays server-side.
|
|
423
423
|
*/
|
|
424
424
|
maxInputTokens: 'MAX_INPUT_TOKENS',
|
|
425
|
+
/**
|
|
426
|
+
* The session id the engine stamps into processes it spawns — the one
|
|
427
|
+
* variable on this table the engine WRITES rather than reads, so a child
|
|
428
|
+
* process (e.g. `skrr code handover --carry-session`) can name the session it
|
|
429
|
+
* is running inside without being told. Read with
|
|
430
|
+
* `readFirstPartyHarnessEngineEnv`: current namespace first, then legacy.
|
|
431
|
+
*/
|
|
432
|
+
sessionId: 'SESSION_ID',
|
|
425
433
|
});
|
|
426
434
|
function engineEnvName(appName, key) {
|
|
427
435
|
return `${appName.toUpperCase().replace(/-/g, '_')}_${ENGINE_ENV_SUFFIXES[key]}`;
|
|
@@ -11,7 +11,7 @@ export { configureAuthCore, getAuthLogger, getAuthConfigDir, getAuthKillSwitches
|
|
|
11
11
|
export { PermanentAuthFailure, TransientAuthFailure, type PermanentAuthReason, type ReauthState, type TokenPair, } from './types.js';
|
|
12
12
|
export { decodeJwtExpiry, decodeJwtPayload } from './jwtUtils.js';
|
|
13
13
|
export { isAuthExpiredSseEvent, handleMidStreamAuthExpiry, type ParsedSseLike, type AuthExpiredCallbacks, type HandleMidStreamAuthExpiryResult, } from './authExpiredDetector.js';
|
|
14
|
-
export { formatReauthMessage, EXIT_NEEDS_REAUTH, type AuthFailureReason } from './messages.js';
|
|
14
|
+
export { formatReauthMessage, reauthCommand, EXIT_NEEDS_REAUTH, type AuthFailureReason, } from './messages.js';
|
|
15
15
|
export { classifyRefreshResponse, type RefreshResponseShape, type ClassifiedRefreshResult, type ClassifiedRefreshSuccess, type ClassifiedRefreshFailure, } from './refreshClassification.js';
|
|
16
16
|
export { refreshDaemonToken, revokeDaemonRefreshSession, withAuthLock, persistReauthState, needsReauthState, clearReauthState, installLockExitHandlers, __refreshDiagnostics, __resetUnknown401StreaksForTest, UNKNOWN_401_BUDGET, } from './refresh.js';
|
|
17
17
|
export { createRefreshScheduler, type RefreshScheduler, type RefreshSchedulerOptions, } from './refreshScheduler.js';
|
|
@@ -23,7 +23,7 @@ export { decodeJwtExpiry, decodeJwtPayload } from './jwtUtils.js';
|
|
|
23
23
|
// header.
|
|
24
24
|
export { isAuthExpiredSseEvent, handleMidStreamAuthExpiry, } from './authExpiredDetector.js';
|
|
25
25
|
// Reauth messaging
|
|
26
|
-
export { formatReauthMessage, EXIT_NEEDS_REAUTH } from './messages.js';
|
|
26
|
+
export { formatReauthMessage, reauthCommand, EXIT_NEEDS_REAUTH, } from './messages.js';
|
|
27
27
|
// Pure HTTP→{Permanent, Transient, Success} response classification —
|
|
28
28
|
// exposed so RN-side clients can apply the same mapping daemon uses.
|
|
29
29
|
export { classifyRefreshResponse, } from './refreshClassification.js';
|
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
export type AuthFailureReason = 'REFRESH_INVALID' | 'REFRESH_REUSED' | 'REFRESH_EXPIRED' | 'SESSION_REVOKED' | 'TOKEN_EXPIRED' | 'TOKEN_INVALID' | 'UNKNOWN_401' | 'UNKNOWN';
|
|
2
|
+
/**
|
|
3
|
+
* The command that recovers this process from a re-auth latch.
|
|
4
|
+
*
|
|
5
|
+
* ONE function owns this, because the answer is printed twice in the same
|
|
6
|
+
* millisecond — once in the human block below and once on the machine-readable
|
|
7
|
+
* `[oversky-reauth]` line a log scraper pages on — and the two used to be
|
|
8
|
+
* written independently. They disagreed: the block said `skrrd login --device`
|
|
9
|
+
* while the error line said `skrr login`, naming a different binary and
|
|
10
|
+
* different flags for one action, so an operator reading either one did
|
|
11
|
+
* something the other did not describe (OSK-10224).
|
|
12
|
+
*
|
|
13
|
+
* The binary is whatever the consumer registered with
|
|
14
|
+
* `configureAuthCore({ binaryName })` — the binary the user actually typed —
|
|
15
|
+
* and `--device` is added only when there is no TTY to open a browser from.
|
|
16
|
+
*/
|
|
17
|
+
export declare function reauthCommand(): string;
|
|
2
18
|
export declare function formatReauthMessage(reason: AuthFailureReason | string): string;
|
|
3
19
|
/**
|
|
4
20
|
* Exit code for "permanent auth failure during initial connect" — picked to
|
|
@@ -17,17 +17,33 @@ const REASON_HUMAN = {
|
|
|
17
17
|
UNKNOWN_401: 'skrr needs you to sign in again.',
|
|
18
18
|
UNKNOWN: 'skrr needs you to sign in again.',
|
|
19
19
|
};
|
|
20
|
+
/**
|
|
21
|
+
* The command that recovers this process from a re-auth latch.
|
|
22
|
+
*
|
|
23
|
+
* ONE function owns this, because the answer is printed twice in the same
|
|
24
|
+
* millisecond — once in the human block below and once on the machine-readable
|
|
25
|
+
* `[oversky-reauth]` line a log scraper pages on — and the two used to be
|
|
26
|
+
* written independently. They disagreed: the block said `skrrd login --device`
|
|
27
|
+
* while the error line said `skrr login`, naming a different binary and
|
|
28
|
+
* different flags for one action, so an operator reading either one did
|
|
29
|
+
* something the other did not describe (OSK-10224).
|
|
30
|
+
*
|
|
31
|
+
* The binary is whatever the consumer registered with
|
|
32
|
+
* `configureAuthCore({ binaryName })` — the binary the user actually typed —
|
|
33
|
+
* and `--device` is added only when there is no TTY to open a browser from.
|
|
34
|
+
*/
|
|
35
|
+
export function reauthCommand() {
|
|
36
|
+
const bin = getAuthBinaryName();
|
|
37
|
+
return process.stdout.isTTY ? `${bin} login` : `${bin} login --device`;
|
|
38
|
+
}
|
|
20
39
|
export function formatReauthMessage(reason) {
|
|
21
40
|
const norm = REASON_HUMAN[reason] || REASON_HUMAN.UNKNOWN;
|
|
22
|
-
const isHeadless = !process.stdout.isTTY;
|
|
23
|
-
const bin = getAuthBinaryName();
|
|
24
|
-
const cmd = isHeadless ? `${bin} login --device` : `${bin} login`;
|
|
25
41
|
return [
|
|
26
42
|
'',
|
|
27
43
|
'skrr cannot connect — re-authentication required.',
|
|
28
44
|
` Reason: ${norm}`,
|
|
29
45
|
'',
|
|
30
|
-
` To continue, run: ${
|
|
46
|
+
` To continue, run: ${reauthCommand()}`,
|
|
31
47
|
'',
|
|
32
48
|
].join('\n');
|
|
33
49
|
}
|
|
@@ -75,7 +75,7 @@ export declare const SENSITIVE_ENV_SUFFIXES: readonly string[];
|
|
|
75
75
|
* `SECRETARY` untouched.
|
|
76
76
|
*/
|
|
77
77
|
export declare const SENSITIVE_ENV_NAME_TOKENS: readonly string[];
|
|
78
|
-
/** Specific
|
|
78
|
+
/** Specific names to keep — the prefix sweeps are broad on purpose. */
|
|
79
79
|
export declare const SENSITIVE_ENV_PREFIX_EXCEPTIONS: ReadonlySet<string>;
|
|
80
80
|
/**
|
|
81
81
|
* Build a sanitized snapshot of the parent's own env for a spawned
|
|
@@ -57,6 +57,9 @@
|
|
|
57
57
|
export const SENSITIVE_ENV_VARS = new Set([
|
|
58
58
|
'CLAUDE_CODE_OAUTH_TOKEN',
|
|
59
59
|
'OVERSKY_TOKEN',
|
|
60
|
+
// The renamed credential alias (cli/src/lib/config.ts honors both spellings).
|
|
61
|
+
// Same double coverage as OVERSKY_TOKEN — name AND the SKRR_ prefix below.
|
|
62
|
+
'SKRR_TOKEN',
|
|
60
63
|
'AWS_ACCESS_KEY_ID',
|
|
61
64
|
'AWS_SECRET_ACCESS_KEY',
|
|
62
65
|
'AWS_SESSION_TOKEN',
|
|
@@ -87,7 +90,16 @@ export const SENSITIVE_ENV_VARS = new Set([
|
|
|
87
90
|
'LD_PRELOAD',
|
|
88
91
|
]);
|
|
89
92
|
/** Variable name prefixes that should be stripped (catches families like AWS_*). */
|
|
90
|
-
export const SENSITIVE_ENV_PREFIXES = [
|
|
93
|
+
export const SENSITIVE_ENV_PREFIXES = [
|
|
94
|
+
'AWS_',
|
|
95
|
+
'OVERSKY_',
|
|
96
|
+
// The renamed product namespace: SKRR_TOKEN, SKRR_REFRESH_TOKEN, the
|
|
97
|
+
// session-authority aliases (SKRR_SESSION_*, SKRR_BASE_URL), and the
|
|
98
|
+
// daemon's control-plane identity (SKRR_MACHINE_UUID, SKRR_LEASE_GENERATION)
|
|
99
|
+
// all carry authority a model-driven child must not inherit. Non-secret
|
|
100
|
+
// lane essentials live in SENSITIVE_ENV_PREFIX_EXCEPTIONS below.
|
|
101
|
+
'SKRR_',
|
|
102
|
+
];
|
|
91
103
|
/**
|
|
92
104
|
* Credential-shaped suffixes are also forbidden. A fixed provider list is
|
|
93
105
|
* never complete: a newly configured provider would otherwise leak its key
|
|
@@ -116,7 +128,7 @@ export const SENSITIVE_ENV_SUFFIXES = [
|
|
|
116
128
|
* `SECRETARY` untouched.
|
|
117
129
|
*/
|
|
118
130
|
export const SENSITIVE_ENV_NAME_TOKENS = ['SECRET'];
|
|
119
|
-
/** Specific
|
|
131
|
+
/** Specific names to keep — the prefix sweeps are broad on purpose. */
|
|
120
132
|
export const SENSITIVE_ENV_PREFIX_EXCEPTIONS = new Set([
|
|
121
133
|
// Headless flag is read by spawned tools to know they're inside the daemon —
|
|
122
134
|
// not a secret. Add more here if a tool legitimately needs an OVERSKY_ var.
|
|
@@ -126,6 +138,16 @@ export const SENSITIVE_ENV_PREFIX_EXCEPTIONS = new Set([
|
|
|
126
138
|
// know they're inside a supervised daemon on Linux/Windows in addition
|
|
127
139
|
// to macOS launchd. Not a secret.
|
|
128
140
|
'OVERSKY_SUPERVISOR',
|
|
141
|
+
// A deployment URL, not a credential. The rename to SKRR_SERVER_URL was
|
|
142
|
+
// chosen precisely because it survives the sanitizer
|
|
143
|
+
// (daemon/src/dedicated-tenant-env.ts), so a spawned lane's `skrr` reaches
|
|
144
|
+
// the deployment this machine is registered with.
|
|
145
|
+
'SKRR_SERVER_URL',
|
|
146
|
+
// The Dedicated Runtime workload marker the exec wrapper stamps into every
|
|
147
|
+
// tenant lane; grandchildren spawned from a lane (e.g. `skrr code` → the
|
|
148
|
+
// engine) must keep it to detect they already run as the workload uid. Not
|
|
149
|
+
// a secret — it authorizes nothing without the matching real uid.
|
|
150
|
+
'SKRR_WORKLOAD_UID',
|
|
129
151
|
]);
|
|
130
152
|
/**
|
|
131
153
|
* Build a sanitized snapshot of the parent's own env for a spawned
|