sneakoscope 8.1.2 → 8.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +96 -58
- package/crates/sks-core/Cargo.lock +1 -1
- package/crates/sks-core/Cargo.toml +1 -1
- package/dist/bin/fast-inline.js +5 -51
- package/dist/cli/command-manifest-lite.js +2 -1
- package/dist/cli/command-registry.js +2 -1
- package/dist/cli/global-mode-router.js +1 -1
- package/dist/cli/install-helpers-codex-lb-config.js +112 -914
- package/dist/cli/install-helpers-codex-lb-shared.js +3 -44
- package/dist/cli/install-helpers-install-support.js +4 -20
- package/dist/cli/install-helpers.js +36 -2716
- package/dist/cli/router.js +9 -9
- package/dist/commands/bridge-command-output.js +111 -0
- package/dist/commands/bridge.js +320 -0
- package/dist/commands/codex-app.js +39 -123
- package/dist/commands/doctor-helpers.js +380 -0
- package/dist/commands/doctor-profile.js +3 -0
- package/dist/commands/doctor.js +114 -873
- package/dist/commands/mad-sks.js +0 -4
- package/dist/config/skills-manifest.json +1 -1
- package/dist/core/agents/agent-effort-policy.js +11 -21
- package/dist/core/agents/agent-recursion-guard.js +26 -0
- package/dist/core/agents/agent-runner-codex-exec.js +7 -9
- package/dist/core/architecture-hardening/contracts/contracts.js +225 -161
- package/dist/core/architecture-hardening/state/state-service.js +49 -13
- package/dist/core/auto-review.js +15 -9
- package/dist/core/codex/codex-config-guard.js +8 -0
- package/dist/core/codex-adapter.js +8 -10
- package/dist/core/codex-app/codex-app-fast-ui-repair.js +7 -29
- package/dist/core/codex-app/codex-app-launcher.js +10 -12
- package/dist/core/codex-app/codex-app-restart.js +10 -12
- package/dist/core/codex-app/menubar/constants.js +2 -5
- package/dist/core/codex-app/menubar/global-install.js +3 -2
- package/dist/core/codex-app/menubar/installer/result.js +23 -0
- package/dist/core/codex-app/menubar/installer/runtime.js +28 -0
- package/dist/core/codex-app/menubar/installer.js +5 -96
- package/dist/core/codex-app/menubar/migration.js +1 -42
- package/dist/core/codex-app/openrouter-provider.js +0 -78
- package/dist/core/codex-app.js +97 -360
- package/dist/core/codex-control/codex-app-server-runtime-env.js +8 -28
- package/dist/core/codex-control/codex-current-image-path-real-probe.js +2 -3
- package/dist/core/codex-control/codex-current-web-search-probe.js +2 -3
- package/dist/core/codex-control/codex-sdk-adapter.js +5 -48
- package/dist/core/codex-control/codex-task-runner.js +16 -60
- package/dist/core/codex-control/desktop-bridge-launch-guard.js +227 -0
- package/dist/core/codex-exec-output-schema.js +11 -13
- package/dist/core/codex-lb/bridge-contracts.js +2 -0
- package/dist/core/codex-lb/bridge-runtime-validation/capability.js +104 -0
- package/dist/core/codex-lb/bridge-runtime-validation/catalog.js +52 -0
- package/dist/core/codex-lb/bridge-runtime-validation/shared.js +109 -0
- package/dist/core/codex-lb/bridge-runtime-validation/status.js +250 -0
- package/dist/core/codex-lb/bridge-runtime-validation.js +106 -0
- package/dist/core/codex-lb/capability-runner.js +505 -201
- package/dist/core/codex-lb/codex-lb-env.js +179 -12
- package/dist/core/codex-lb/combined-catalog/builder.js +86 -0
- package/dist/core/codex-lb/combined-catalog/contracts.js +5 -0
- package/dist/core/codex-lb/combined-catalog/normalize.js +170 -0
- package/dist/core/codex-lb/combined-catalog/persistence.js +207 -0
- package/dist/core/codex-lb/combined-catalog/shared.js +12 -0
- package/dist/core/codex-lb/combined-catalog/storage.js +171 -0
- package/dist/core/codex-lb/combined-catalog.js +12 -0
- package/dist/core/codex-lb/desktop-bridge/client.js +4 -1
- package/dist/core/codex-lb/desktop-bridge/header-policy.js +48 -63
- package/dist/core/codex-lb/desktop-bridge/http-forward.js +115 -83
- package/dist/core/codex-lb/desktop-bridge/launchd.js +20 -13
- package/dist/core/codex-lb/desktop-bridge/location-rewrite.js +4 -1
- package/dist/core/codex-lb/desktop-bridge/security.js +381 -267
- package/dist/core/codex-lb/desktop-bridge/server.js +148 -19
- package/dist/core/codex-lb/desktop-bridge/state.js +56 -70
- package/dist/core/codex-lb/desktop-bridge/types.js +6 -1
- package/dist/core/codex-lb/desktop-bridge/websocket-forward.js +281 -106
- package/dist/core/codex-lb/desktop-bridge-migration/historical-config.js +245 -0
- package/dist/core/codex-lb/desktop-bridge-migration/historical-toml.js +56 -0
- package/dist/core/codex-lb/desktop-bridge-migration/metadata.js +73 -0
- package/dist/core/codex-lb/desktop-bridge-migration/receipt.js +52 -0
- package/dist/core/codex-lb/desktop-bridge-migration/retired-runtime-cleanup.js +106 -0
- package/dist/core/codex-lb/desktop-bridge-migration/types.js +1 -0
- package/dist/core/codex-lb/desktop-bridge-migration.js +238 -0
- package/dist/core/codex-lb/desktop-controller-v3/catalog.js +257 -0
- package/dist/core/codex-lb/desktop-controller-v3/diagnostics.js +62 -0
- package/dist/core/codex-lb/desktop-controller-v3/lifecycle-commands.js +203 -0
- package/dist/core/codex-lb/desktop-controller-v3/live-probes.js +293 -0
- package/dist/core/codex-lb/desktop-controller-v3/preflight-probes.js +144 -0
- package/dist/core/codex-lb/desktop-controller-v3/provider-commands.js +182 -0
- package/dist/core/codex-lb/desktop-controller-v3/shared.js +279 -0
- package/dist/core/codex-lb/desktop-controller-v3/status.js +269 -0
- package/dist/core/codex-lb/desktop-controller-v3/types.js +1 -0
- package/dist/core/codex-lb/desktop-controller-v3/verification.js +89 -0
- package/dist/core/codex-lb/desktop-controller-v3.js +67 -0
- package/dist/core/codex-lb/desktop-controller.js +2 -1730
- package/dist/core/codex-lb/desktop-service.js +462 -627
- package/dist/core/codex-lb/migration-receipt.js +560 -118
- package/dist/core/codex-lb/probes/auxiliary-surfaces-probe.js +37 -53
- package/dist/core/codex-lb/probes/bridge-probe.js +125 -64
- package/dist/core/codex-lb/probes/catalog-probe.js +36 -136
- package/dist/core/codex-lb/probes/computer-use-probe.js +63 -39
- package/dist/core/codex-lb/probes/image-generation-probe.js +98 -41
- package/dist/core/codex-lb/probes/probe-evidence.js +32 -33
- package/dist/core/codex-lb/probes/voice-realtime-probe.js +69 -43
- package/dist/core/codex-lb/provider-credentials/configuration.js +127 -0
- package/dist/core/codex-lb/provider-credentials/locks.js +11 -0
- package/dist/core/codex-lb/provider-credentials/private-snapshot.js +28 -0
- package/dist/core/codex-lb/provider-credentials/removal.js +33 -0
- package/dist/core/codex-lb/provider-credentials/resolution.js +59 -0
- package/dist/core/codex-lb/provider-credentials/runtime.js +55 -0
- package/dist/core/codex-lb/provider-credentials/types.js +1 -0
- package/dist/core/codex-lb/provider-credentials/validation-store.js +137 -0
- package/dist/core/codex-lb/provider-credentials.js +5 -0
- package/dist/core/codex-lb/provider-registry.js +323 -0
- package/dist/core/codex-lb/provider-route-policy.js +118 -0
- package/dist/core/codex-lb/request-route-resolver.js +172 -0
- package/dist/core/codex-lb/route-index.js +148 -0
- package/dist/core/codex-lb/trusted-deep-evidence.js +158 -286
- package/dist/core/commands/basic-cli.js +1 -1
- package/dist/core/commands/check-command.js +3 -10
- package/dist/core/commands/gate-result-contract.js +10 -14
- package/dist/core/commands/intent-normalization/normalizer.js +1 -1
- package/dist/core/commands/mad-sks-command.js +2 -6
- package/dist/core/commands/release-command.js +11 -1
- package/dist/core/commands/telegram-command.js +46 -6
- package/dist/core/doctor/doctor-readiness-matrix.js +9 -7
- package/dist/core/doctor/skill-legacy-surface.js +5 -5
- package/dist/core/evidence/v2/evidence-key.js +30 -3
- package/dist/core/feature-fixtures.js +8 -1
- package/dist/core/feature-registry.js +3 -2
- package/dist/core/hooks-runtime/stop-finalization.js +11 -1
- package/dist/core/hooks-runtime/subagent-context.js +15 -1
- package/dist/core/hooks-runtime/subagent-skill-availability-contract.js +1 -1
- package/dist/core/hooks-runtime/tool-output-quarantine.js +1 -1
- package/dist/core/hooks-runtime.js +73 -87
- package/dist/core/image-ux-review/imagegen-adapter.js +108 -94
- package/dist/core/image-ux-review/real-callout-extractor.js +144 -14
- package/dist/core/imagegen/desktop-bridge-imagegen-target.js +77 -0
- package/dist/core/imagegen/imagegen-capability.js +43 -151
- package/dist/core/init/skills/filesystem.js +89 -0
- package/dist/core/init/skills/inventory.js +97 -0
- package/dist/core/init/skills/manifest.js +151 -0
- package/dist/core/init/skills.js +5 -325
- package/dist/core/init.js +0 -63
- package/dist/core/install/installed-package-smoke.js +1 -1
- package/dist/core/managed-assets/managed-assets-manifest.js +0 -1
- package/dist/core/policy/latest-version-guidance.js +15 -2
- package/dist/core/preflight/parallel-preflight-engine.js +27 -51
- package/dist/core/provider/provider-badge.js +9 -4
- package/dist/core/provider/provider-context.js +57 -107
- package/dist/core/providers/openrouter/openrouter-account.js +3 -1
- package/dist/core/providers/openrouter/openrouter-secret-store.js +91 -22
- package/dist/core/release/desktop-bridge-release-evidence.js +457 -0
- package/dist/core/release/gate-manifest.js +0 -1
- package/dist/core/release/main-push-guard.js +13 -0
- package/dist/core/release/main-push-receipt.js +11 -0
- package/dist/core/release/physical-release-gates.js +664 -61
- package/dist/core/release/publish-preflight.js +3 -3
- package/dist/core/release/release-gate-batch-runner.js +19 -6
- package/dist/core/release/release-gate-dag.js +33 -6
- package/dist/core/release/release-gate-node.js +1 -3
- package/dist/core/release/release-gate-output-contract.js +55 -0
- package/dist/core/release/release-pack-contract.js +1 -1
- package/dist/core/release/release-pack-receipt.js +209 -8
- package/dist/core/release/release-real-contract.js +1 -1
- package/dist/core/release/stage-publish.js +106 -28
- package/dist/core/retention/temp-lease.js +204 -0
- package/dist/core/retention.js +18 -195
- package/dist/core/routes.js +1 -2
- package/dist/core/safety/intent-contract/intent-contract.js +3 -3
- package/dist/core/subagents/naruto-host-credentials.js +6 -1
- package/dist/core/subagents/official-subagent-config.js +27 -9
- package/dist/core/subagents/official-subagent-runner.js +14 -31
- package/dist/core/subagents/wave-lifecycle.js +36 -8
- package/dist/core/subagents/wave-parent-guidance.js +2 -1
- package/dist/core/telegram/doctor.js +2 -2
- package/dist/core/telegram/liveness.js +10 -4
- package/dist/core/triwiki/context-graph/compiler/index.js +18 -18
- package/dist/core/update/update-migration-state/fast-mode-config.js +172 -0
- package/dist/core/update/update-migration-state/session-state-split.js +247 -0
- package/dist/core/update/update-migration-state/simple-stages.js +46 -0
- package/dist/core/update/update-migration-state.js +4 -481
- package/dist/core/version.js +1 -1
- package/dist/native/sks-menubar/Sources/OperationCoordinator.swift +28 -4
- package/dist/native/sks-menubar/Sources/OperationModels.swift +112 -2
- package/dist/native/sks-menubar/Sources/ProviderRouteExplanation.swift +21 -0
- package/dist/native/sks-menubar/Sources/ProvidersBridgeCatalog.swift +140 -0
- package/dist/native/sks-menubar/Sources/ProvidersOpenRouter.swift +107 -470
- package/dist/native/sks-menubar/Sources/ProvidersReliability.swift +27 -197
- package/dist/native/sks-menubar/Sources/ProvidersRoutingTruth.swift +335 -269
- package/dist/native/sks-menubar/Sources/ProvidersViewController.swift +233 -437
- package/dist/native/sks-menubar/Sources/RemoteCodingViewController.swift +16 -7
- package/dist/native/sks-menubar/Sources/SecureProcessEnvelope.swift +39 -9
- package/dist/native/sks-menubar/Sources/TelegramSupport.swift +56 -0
- package/dist/scripts/canonical-test-runner.js +7 -1
- package/dist/scripts/check-runtime-schemas.js +7 -2
- package/dist/scripts/codex-sdk-real-smoke-check.js +3 -1
- package/dist/scripts/desktop-bridge-capabilities-check.js +123 -0
- package/dist/scripts/{codex-lb-desktop-bridge-latency-check.js → desktop-bridge-latency-check.js} +61 -16
- package/dist/scripts/desktop-bridge-real-evidence-check.js +64 -0
- package/dist/scripts/{codex-lb-desktop-bridge-check.js → desktop-bridge-transport-check.js} +92 -155
- package/dist/scripts/desktop-bridge-transport-client.js +116 -0
- package/dist/scripts/desktop-bridge-unification-check.js +276 -0
- package/dist/scripts/doctor-fixes-codex-app-fast-ui-check.js +12 -8
- package/dist/scripts/gate-policy-audit-check.js +52 -2
- package/dist/scripts/provider-badge-context-check.js +55 -12
- package/dist/scripts/publish-preflight.js +1 -2
- package/dist/scripts/release-affected-selector-check.js +1 -2
- package/dist/scripts/release-aggressive-resource-governor-check.js +1 -1
- package/dist/scripts/release-cache-glob-hashing-check.js +1 -0
- package/dist/scripts/release-cache-version-neutral-fixture-check.js +1 -0
- package/dist/scripts/release-full-parallelism-blackbox.js +1 -1
- package/dist/scripts/release-gate-batch-runner-check.js +9 -0
- package/dist/scripts/release-gate-dag-runner-check.js +6 -0
- package/dist/scripts/release-gate-dag-runner.js +4 -2
- package/dist/scripts/release-metadata-check.js +16 -3
- package/dist/scripts/release-pack-receipt.js +29 -6
- package/dist/scripts/release-physical-gates-check.js +39 -0
- package/dist/scripts/release-real-check.js +7 -5
- package/package.json +6 -8
- package/release-gates.v2.json +156 -157
- package/runtime-required-scripts.json +11 -11
- package/schemas/codex/desktop-bridge-status-v3.schema.json +286 -0
- package/schemas/codex/desktop-capabilities-v3.schema.json +198 -0
- package/schemas/release/release-gate-node.schema.json +2 -3
- package/dist/cli/codex-lb-setup-warning-output.js +0 -17
- package/dist/cli/install-helpers-codex-lb-chain.js +0 -529
- package/dist/commands/codex-lb.js +0 -1232
- package/dist/core/architecture-hardening/migration/migration.js +0 -111
- package/dist/core/codex-app/auxiliary-oauth-policy.js +0 -36
- package/dist/core/codex-app/catalog-compat/catalog-service.js +0 -104
- package/dist/core/codex-app/child-policy/child-policy.js +0 -35
- package/dist/core/codex-app/desktop-routing-snapshot.js +0 -233
- package/dist/core/codex-app/glm-model-profile.js +0 -1
- package/dist/core/codex-app/glm-profile-installer.js +0 -191
- package/dist/core/codex-app/glm-profile-schema.js +0 -42
- package/dist/core/codex-app/multi-provider-router.js +0 -391
- package/dist/core/codex-app/openrouter-activate.js +0 -405
- package/dist/core/codex-app/openrouter-model-catalog.js +0 -217
- package/dist/core/codex-app/provider-child-policy.js +0 -64
- package/dist/core/codex-app/provider-mode.js +0 -91
- package/dist/core/codex-app/provider-session-policy.js +0 -85
- package/dist/core/codex-app/session-policy/session-pinning.js +0 -68
- package/dist/core/codex-control/codex-lb-launch-recovery.js +0 -319
- package/dist/core/codex-lb/codex-lb-setup.js +0 -293
- package/dist/core/codex-lb/codex-lb-tool-catalog.js +0 -456
- package/dist/core/codex-lb/codex-lb-tool-output-recovery.js +0 -290
- package/dist/core/codex-lb/desktop-center-credentials.js +0 -1083
- package/dist/core/codex-lb/desktop-mode.js +0 -32
- package/dist/core/codex-lb/desktop-real-evidence.js +0 -168
- package/dist/core/codex-lb/legacy-migration.js +0 -576
- package/dist/core/codex-lb/native-openai-transport/transport.js +0 -68
- package/dist/core/codex-lb/provider-routing/provider-router.js +0 -58
- package/dist/core/codex-lb/routing-truth.js +0 -327
- package/dist/core/imagegen/codex-lb-imagegen-target.js +0 -92
- package/dist/native/sks-menubar/Sources/ProvidersConnectTest.swift +0 -118
- package/dist/native/sks-menubar/Sources/ProvidersFastMode.swift +0 -17
- package/dist/native/sks-menubar/Sources/ProvidersMultiProvider.swift +0 -331
- package/dist/native/sks-menubar/Sources/ProvidersRoleModels.swift +0 -260
- package/dist/scripts/codex-lb-catalog-passthrough-check.js +0 -120
- package/dist/scripts/codex-lb-desktop-auth-invariant-check.js +0 -169
- package/dist/scripts/codex-lb-desktop-capabilities-check.js +0 -287
- package/dist/scripts/codex-lb-desktop-real-evidence-check.js +0 -123
- package/dist/scripts/codex-lb-fast-mode-truth-check.js +0 -114
- package/dist/scripts/codex-lb-fast-ui-preservation-check.js +0 -152
- package/dist/scripts/codex-lb-gpt56-fast-profile-check.js +0 -231
|
@@ -1,33 +1,25 @@
|
|
|
1
|
-
import os from 'node:os';
|
|
2
1
|
import path from 'node:path';
|
|
3
|
-
import { fileURLToPath } from 'node:url';
|
|
4
2
|
import { ensureDir, exists, PACKAGE_VERSION, readJson, readText, runProcess, sha256, which, writeJsonAtomic, writeTextAtomic } from '../../fsx.js';
|
|
5
3
|
import { actionScriptSource } from './action-runner.js';
|
|
6
4
|
import { buildMenuBarAppStaging, MenuBarBuildError } from './app-bundle.js';
|
|
7
5
|
import { aggregateFileHashes, createSksMenuBarBuildStamp, menuBarBuildStampsEqual } from './build-stamp.js';
|
|
8
|
-
import {
|
|
6
|
+
import { SKS_MENUBAR_LABEL } from './constants.js';
|
|
9
7
|
import { resolveCodexBundleId, writeDefaultMenuBarConfig } from './config.js';
|
|
10
8
|
import { applyMenuBarGenerationTransaction, commitMenuBarGenerationTransaction, installGenerationPairs, MenuBarGenerationTransactionError, recoverMenuBarGenerationTransaction, rollbackGenerationPairs } from './generation-transaction.js';
|
|
11
9
|
import { launchAgentSource, launchMenuBar, inspectRunningMenuBarProcess, seedMenuBarPreferredPosition, stopMenuBarForReplacement, terminateMenuBarProcesses } from './launch-agent.js';
|
|
12
10
|
import { cleanupProjectMenuBarDuplicates, verifiedProjectMenuBarDuplicateExecutablePaths } from './global-install.js';
|
|
13
|
-
import {
|
|
11
|
+
import { cleanupRetiredRemoteBridgeLaunchAgent, quarantineRetiredRemoteBridgeBindings } from './migration.js';
|
|
14
12
|
import { sksMenuBarPaths } from './paths.js';
|
|
15
13
|
import { infoPlistSource, inspectInstalledResources, loadNativeMenuBarSources, nativeResourceHashes } from './resources.js';
|
|
16
14
|
import { inspectMenuBarArtifactSet, normalizeLegacyMenuBarBuildStamp, rollbackSksMenuBar } from './rollback.js';
|
|
17
15
|
import { inspectSignature } from './signature.js';
|
|
18
|
-
import {
|
|
16
|
+
import { inspectSksMenuBarStatus, isMenuBarInstallPathUnderTempDir } from './status.js';
|
|
17
|
+
import { baseResult, writeReport } from './installer/result.js';
|
|
18
|
+
import { realUserHome, resolveSksEntryForInstall, toolVersion } from './installer/runtime.js';
|
|
19
19
|
export function sksMenuBarRestartDeferred(env = process.env) {
|
|
20
20
|
return env.SKS_UPDATE_DEFER_MENUBAR_RESTART === '1'
|
|
21
21
|
|| env.SKS_SKIP_SKS_MENUBAR_LAUNCH === '1';
|
|
22
22
|
}
|
|
23
|
-
export function menuBarCredentialEnvironmentBlocker(input) {
|
|
24
|
-
if (!input.cleanupOk)
|
|
25
|
-
return 'launch_secret_env_cleanup_incomplete';
|
|
26
|
-
if (input.compatibilityConfigured && input.compatibilityRestored !== true) {
|
|
27
|
-
return 'desktop_compat_launch_env_restore_incomplete';
|
|
28
|
-
}
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
23
|
export async function installSksMenuBar(opts = {}) {
|
|
32
24
|
const apply = opts.apply === true;
|
|
33
25
|
const env = opts.env || process.env;
|
|
@@ -36,7 +28,6 @@ export async function installSksMenuBar(opts = {}) {
|
|
|
36
28
|
const warnings = [];
|
|
37
29
|
let targetCheck;
|
|
38
30
|
let codexBundleId = null;
|
|
39
|
-
let cleanup;
|
|
40
31
|
let transaction = null;
|
|
41
32
|
if (process.platform !== 'darwin') {
|
|
42
33
|
const result = baseResult(paths, apply, 'unsupported_platform', true, actions, ['sks_menubar_requires_macos']);
|
|
@@ -104,42 +95,6 @@ export async function installSksMenuBar(opts = {}) {
|
|
|
104
95
|
if (retiredBindings.status === 'quarantined') {
|
|
105
96
|
actions.push(`quarantined ${retiredBindings.retired_binding_count} retired remote bridge binding(s)`);
|
|
106
97
|
}
|
|
107
|
-
const injectedTestLaunchctl = (env.SKS_TEST_FORBID_REAL_HOME === '1'
|
|
108
|
-
|| env.SKS_TEST_ISOLATION === '1')
|
|
109
|
-
? env.SKS_MENUBAR_LAUNCHCTL
|
|
110
|
-
: undefined;
|
|
111
|
-
cleanup = await cleanupMacLaunchSecretEnvironment({
|
|
112
|
-
env,
|
|
113
|
-
...(injectedTestLaunchctl ? { launchctlBin: injectedTestLaunchctl } : {})
|
|
114
|
-
});
|
|
115
|
-
const cleanupBlocker = menuBarCredentialEnvironmentBlocker({ cleanupOk: cleanup.ok });
|
|
116
|
-
if (cleanupBlocker) {
|
|
117
|
-
return blocked(cleanupBlocker, 'Global GUI secret environment cleanup could not be verified.');
|
|
118
|
-
}
|
|
119
|
-
try {
|
|
120
|
-
const { syncDesktopCenterLaunchCredentials } = await import('../../codex-lb/desktop-center-credentials.js');
|
|
121
|
-
const { CODEX_LB_DESKTOP_COMPAT_MARKER } = await import('../../../cli/install-helpers-codex-lb-config.js');
|
|
122
|
-
const { readText } = await import('../../fsx.js');
|
|
123
|
-
const configText = await readText(path.join(paths.home, '.codex', 'config.toml'), '');
|
|
124
|
-
if (configText.includes(CODEX_LB_DESKTOP_COMPAT_MARKER)) {
|
|
125
|
-
const restored = await syncDesktopCenterLaunchCredentials({
|
|
126
|
-
mode: 'desktop-dual-auth-compat',
|
|
127
|
-
home: paths.home,
|
|
128
|
-
...(injectedTestLaunchctl ? { launchctlBin: injectedTestLaunchctl } : {})
|
|
129
|
-
});
|
|
130
|
-
const restoreBlocker = menuBarCredentialEnvironmentBlocker({
|
|
131
|
-
cleanupOk: true,
|
|
132
|
-
compatibilityConfigured: true,
|
|
133
|
-
compatibilityRestored: restored.ok
|
|
134
|
-
});
|
|
135
|
-
if (restoreBlocker) {
|
|
136
|
-
return blocked(restored.blockers[0] || restoreBlocker, 'Desktop compatibility cannot be restored without exposing a global GUI secret; use the local bridge.');
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
catch (error) {
|
|
141
|
-
return blocked('desktop_compat_launch_env_restore_failed', error instanceof Error ? error.message : String(error));
|
|
142
|
-
}
|
|
143
98
|
const swiftc = env.SKS_MENUBAR_SWIFTC || await which('swiftc').catch(() => null) || '/usr/bin/swiftc';
|
|
144
99
|
const codesign = env.SKS_MENUBAR_CODESIGN || await which('codesign').catch(() => null) || '/usr/bin/codesign';
|
|
145
100
|
const launchctl = env.SKS_MENUBAR_LAUNCHCTL || await which('launchctl').catch(() => null) || '/bin/launchctl';
|
|
@@ -420,7 +375,6 @@ export async function installSksMenuBar(opts = {}) {
|
|
|
420
375
|
result.build_stamp = rollback?.ok
|
|
421
376
|
? await readJson(paths.build_stamp_path, null)
|
|
422
377
|
: stamp;
|
|
423
|
-
result.secret_env_cleanup = cleanup;
|
|
424
378
|
result.launch = launch;
|
|
425
379
|
result.installed_version = result.build_stamp?.package_version || null;
|
|
426
380
|
if (launch.version_probe) {
|
|
@@ -441,8 +395,6 @@ export async function installSksMenuBar(opts = {}) {
|
|
|
441
395
|
result.codex_bundle_id = codexBundleId;
|
|
442
396
|
if (targetCheck)
|
|
443
397
|
result.target_check = targetCheck;
|
|
444
|
-
if (cleanup)
|
|
445
|
-
result.secret_env_cleanup = cleanup;
|
|
446
398
|
result.rollback = rollback;
|
|
447
399
|
result.transaction = failedTransaction;
|
|
448
400
|
result.blockers = [reason, ...(rollback && !rollback.ok ? rollback.blockers : [])];
|
|
@@ -457,46 +409,3 @@ export function shouldAutoRollbackMenuBarLaunch(input) {
|
|
|
457
409
|
&& !input.upToDate
|
|
458
410
|
&& input.rollbackCandidateExists;
|
|
459
411
|
}
|
|
460
|
-
function baseResult(paths, apply, status, ok, actions, warnings) {
|
|
461
|
-
return {
|
|
462
|
-
schema: 'sks.codex-app-sks-menubar.v1', ok, apply, status, platform: process.platform,
|
|
463
|
-
app_path: paths.app_path, executable_path: paths.executable_path,
|
|
464
|
-
launch_agent_path: paths.launch_agent_path, action_script_path: paths.action_script_path,
|
|
465
|
-
build_stamp_path: paths.build_stamp_path, config_path: paths.config_path,
|
|
466
|
-
report_path: paths.report_path, menu_items: [...MENU_ITEMS], actions,
|
|
467
|
-
tcc_automation_status: 'unknown', next_actions: defaultNextActions(), blockers: [], warnings
|
|
468
|
-
};
|
|
469
|
-
}
|
|
470
|
-
async function resolveSksEntryForInstall(explicit, root) {
|
|
471
|
-
const packaged = fileURLToPath(new URL('../../../bin/sks.js', import.meta.url));
|
|
472
|
-
const requested = explicit ? path.resolve(explicit) : null;
|
|
473
|
-
const candidate = requested || packaged;
|
|
474
|
-
const found = await exists(candidate);
|
|
475
|
-
const relative = path.relative(path.resolve(root), candidate);
|
|
476
|
-
return {
|
|
477
|
-
requested, resolved: found ? candidate : null, packaged, exists: found,
|
|
478
|
-
project_local: relative === '' || (Boolean(relative) && !relative.startsWith('..') && !path.isAbsolute(relative)),
|
|
479
|
-
used_previous_script: false
|
|
480
|
-
};
|
|
481
|
-
}
|
|
482
|
-
async function toolVersion(tool, args) {
|
|
483
|
-
const result = await runProcess(tool, args, { timeoutMs: 5_000, maxOutputBytes: 16 * 1024 }).catch(() => ({ code: 1, stdout: '', stderr: '' }));
|
|
484
|
-
return result.code === 0 ? String(result.stdout || result.stderr).trim().split(/\r?\n/)[0] || 'unknown' : 'unknown';
|
|
485
|
-
}
|
|
486
|
-
function realUserHome() {
|
|
487
|
-
try {
|
|
488
|
-
return path.resolve(os.userInfo().homedir);
|
|
489
|
-
}
|
|
490
|
-
catch {
|
|
491
|
-
return path.resolve(os.homedir());
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
async function writeReport(reportPath, result) {
|
|
495
|
-
try {
|
|
496
|
-
await writeJsonAtomic(reportPath, result);
|
|
497
|
-
}
|
|
498
|
-
catch {
|
|
499
|
-
result.report_write_failed = true;
|
|
500
|
-
result.warnings.push('menubar_report_write_failed');
|
|
501
|
-
}
|
|
502
|
-
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import os from 'node:os';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import {
|
|
3
|
+
import { nowIso, readText, runProcess, sha256, which, writeTextAtomic } from '../../fsx.js';
|
|
4
4
|
import { ensureConfinedDirectory, inspectConfinedPath, removeManagedPathVerified } from '../../managed-path-safety.js';
|
|
5
|
-
import { SECRET_LAUNCH_ENV_KEYS } from './constants.js';
|
|
6
5
|
const RETIRED_REMOTE_BRIDGE_LABEL = 'com.sneakoscope.telegram-hub';
|
|
7
6
|
export async function cleanupRetiredRemoteBridgeLaunchAgent(opts = {}) {
|
|
8
7
|
const env = opts.env || process.env;
|
|
@@ -226,46 +225,6 @@ export function isManagedRetiredRemoteBridgeLaunchAgent(source) {
|
|
|
226
225
|
&& /<string>\/usr\/bin\/caffeinate<\/string>/.test(source)
|
|
227
226
|
&& /<string>telegram<\/string>\s*<string>hub<\/string>\s*<string>run<\/string>/.test(source);
|
|
228
227
|
}
|
|
229
|
-
export async function cleanupMacLaunchSecretEnvironment(opts = {}) {
|
|
230
|
-
if (process.platform !== 'darwin' && !opts.force) {
|
|
231
|
-
return { ok: true, status: 'not_macos', variables: [...SECRET_LAUNCH_ENV_KEYS], cleaned: [], failed: [], next_actions: [] };
|
|
232
|
-
}
|
|
233
|
-
const env = opts.env || process.env;
|
|
234
|
-
const launchctl = opts.launchctlBin
|
|
235
|
-
|| (await exists('/bin/launchctl') ? '/bin/launchctl' : null);
|
|
236
|
-
if (!launchctl) {
|
|
237
|
-
return {
|
|
238
|
-
ok: false, status: 'launchctl_missing', variables: [...SECRET_LAUNCH_ENV_KEYS], cleaned: [],
|
|
239
|
-
failed: SECRET_LAUNCH_ENV_KEYS.map((key) => ({ key, error: 'launchctl_missing' })),
|
|
240
|
-
next_actions: SECRET_LAUNCH_ENV_KEYS.map((key) => `Run: launchctl unsetenv ${key}`)
|
|
241
|
-
};
|
|
242
|
-
}
|
|
243
|
-
const cleaned = [];
|
|
244
|
-
const failed = [];
|
|
245
|
-
const childEnv = { ...env };
|
|
246
|
-
for (const key of SECRET_LAUNCH_ENV_KEYS)
|
|
247
|
-
delete childEnv[key];
|
|
248
|
-
const run = opts.runProcessImpl || runProcess;
|
|
249
|
-
for (const key of SECRET_LAUNCH_ENV_KEYS) {
|
|
250
|
-
const result = await run(launchctl, ['unsetenv', key], {
|
|
251
|
-
timeoutMs: 3_000,
|
|
252
|
-
maxOutputBytes: 8 * 1024,
|
|
253
|
-
env: childEnv,
|
|
254
|
-
envMode: 'replace'
|
|
255
|
-
})
|
|
256
|
-
.catch((error) => ({ code: 1, stdout: '', stderr: error instanceof Error ? error.message : String(error) }));
|
|
257
|
-
if (result.code === 0)
|
|
258
|
-
cleaned.push(key);
|
|
259
|
-
else
|
|
260
|
-
failed.push({ key, error: String(result.stderr || result.stdout || 'launchctl unsetenv failed').trim() });
|
|
261
|
-
}
|
|
262
|
-
return {
|
|
263
|
-
ok: failed.length === 0,
|
|
264
|
-
status: failed.length === 0 ? 'cleaned' : 'partial',
|
|
265
|
-
variables: [...SECRET_LAUNCH_ENV_KEYS], cleaned, failed,
|
|
266
|
-
next_actions: ['Rotate credentials if they were previously exposed in the launchd environment.']
|
|
267
|
-
};
|
|
268
|
-
}
|
|
269
228
|
function processFailure(error) {
|
|
270
229
|
return {
|
|
271
230
|
code: 1,
|
|
@@ -1,73 +1,4 @@
|
|
|
1
|
-
export const OPENROUTER_PROVIDER_ID = 'openrouter';
|
|
2
1
|
export const OPENROUTER_DEFAULT_MODEL = 'z-ai/glm-5.2';
|
|
3
|
-
export const OPENROUTER_DEFAULT_PROFILE_ID = 'sks-openrouter-default';
|
|
4
|
-
export const OPENROUTER_DEFAULT_PROFILE_LABEL = 'OpenRouter (SKS)';
|
|
5
|
-
export const OPENROUTER_AUTH_COMMAND = '/bin/sh';
|
|
6
|
-
export const OPENROUTER_AUTH_SCRIPT = 'if [ -r "$1" ]; then exec /bin/cat "$1"; elif [ -n "${OPENROUTER_API_KEY:-}" ]; then exec /usr/bin/printf "%s\\n" "$OPENROUTER_API_KEY"; elif [ -n "${SKS_OPENROUTER_API_KEY:-}" ]; then exec /usr/bin/printf "%s\\n" "$SKS_OPENROUTER_API_KEY"; else exit 1; fi';
|
|
7
|
-
export const OPENROUTER_AUTH_TIMEOUT_MS = 5_000;
|
|
8
|
-
export const OPENROUTER_AUTH_REFRESH_INTERVAL_MS = 300_000;
|
|
9
|
-
export function openRouterAuthCommandArgs(keyPath) {
|
|
10
|
-
return ['-c', OPENROUTER_AUTH_SCRIPT, 'sks-openrouter-auth', keyPath];
|
|
11
|
-
}
|
|
12
|
-
export const GLM_52_OPENROUTER_MODEL = OPENROUTER_DEFAULT_MODEL;
|
|
13
|
-
export const GLM_CODEX_CONFIG_PROVIDER_ID = OPENROUTER_PROVIDER_ID;
|
|
14
|
-
export const GLM_CODEX_CONFIG_PROFILE_ID = 'sks-glm-52-mad';
|
|
15
|
-
export const GLM_CODEX_APP_PROFILE_ID = 'sks/glm-5.2-mad';
|
|
16
|
-
export const GLM_CODEX_APP_PROFILE_LABEL = 'GLM 5.2 (OpenRouter)';
|
|
17
|
-
export const RETIRED_GLM_DESKTOP_CONFIG_PROFILE_IDS = [
|
|
18
|
-
'sks-glm-52-mad',
|
|
19
|
-
'sks-glm-52-minimal',
|
|
20
|
-
'sks-glm-52-low',
|
|
21
|
-
'sks-glm-52-medium',
|
|
22
|
-
'sks-glm-52-high',
|
|
23
|
-
'sks-glm-52-xhigh'
|
|
24
|
-
];
|
|
25
|
-
export const OPENROUTER_SELECTABLE_REASONING_EFFORTS = [
|
|
26
|
-
'none',
|
|
27
|
-
'minimal',
|
|
28
|
-
'low',
|
|
29
|
-
'medium',
|
|
30
|
-
'high',
|
|
31
|
-
'xhigh',
|
|
32
|
-
];
|
|
33
|
-
export const GLM_CODEX_SELECTABLE_REASONING_EFFORTS = OPENROUTER_SELECTABLE_REASONING_EFFORTS;
|
|
34
|
-
export const OPENROUTER_CODEX_REASONING_PROFILES = [];
|
|
35
|
-
export const GLM_CODEX_CONFIG_REASONING_PROFILES = OPENROUTER_CODEX_REASONING_PROFILES;
|
|
36
|
-
export function buildGlmCodexAppModelProfile() {
|
|
37
|
-
return {
|
|
38
|
-
schema: 'sks.codex-app-model-profile.v1',
|
|
39
|
-
id: OPENROUTER_DEFAULT_PROFILE_ID,
|
|
40
|
-
label: OPENROUTER_DEFAULT_PROFILE_LABEL,
|
|
41
|
-
provider: 'openrouter',
|
|
42
|
-
model: OPENROUTER_DEFAULT_MODEL,
|
|
43
|
-
codexConfigProvider: OPENROUTER_PROVIDER_ID,
|
|
44
|
-
codexConfigProfile: OPENROUTER_DEFAULT_PROFILE_ID,
|
|
45
|
-
supportedReasoningEfforts: OPENROUTER_SELECTABLE_REASONING_EFFORTS,
|
|
46
|
-
reasoningProfiles: OPENROUTER_CODEX_REASONING_PROFILES,
|
|
47
|
-
mode: 'openrouter-desktop',
|
|
48
|
-
strictModelLock: false,
|
|
49
|
-
gptFallbackAllowed: false,
|
|
50
|
-
requiresSecret: 'openrouter-api-key',
|
|
51
|
-
defaultProfile: 'speed',
|
|
52
|
-
defaultSettings: {
|
|
53
|
-
temperature: 0.2,
|
|
54
|
-
top_p: 0.85,
|
|
55
|
-
reasoning_effort: null,
|
|
56
|
-
tool_choice: 'none',
|
|
57
|
-
parallel_tool_calls: false,
|
|
58
|
-
max_tokens: 4096,
|
|
59
|
-
provider_sort: 'throughput',
|
|
60
|
-
provider_allow_fallbacks: false,
|
|
61
|
-
provider_require_parameters: false,
|
|
62
|
-
},
|
|
63
|
-
codexCompatibility: {
|
|
64
|
-
target: 'rust-v0.146.0',
|
|
65
|
-
selectedExecutorPluginMcp: 'defer-to-codex-native',
|
|
66
|
-
duplicateAppMcpDeclarations: 'dedupe-by-codex',
|
|
67
|
-
cwdShellPathSemantics: 'preserve-codex-native',
|
|
68
|
-
},
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
2
|
export function normalizeOpenRouterModelId(value) {
|
|
72
3
|
const model = String(value || '').trim();
|
|
73
4
|
if (!model)
|
|
@@ -78,12 +9,3 @@ export function normalizeOpenRouterModelId(value) {
|
|
|
78
9
|
return null;
|
|
79
10
|
return model;
|
|
80
11
|
}
|
|
81
|
-
export function retiredGlmDesktopProfileBody(effort) {
|
|
82
|
-
return [
|
|
83
|
-
'model_provider = "openrouter"',
|
|
84
|
-
`model = "${OPENROUTER_DEFAULT_MODEL}"`,
|
|
85
|
-
`model_reasoning_effort = "${effort}"`,
|
|
86
|
-
'service_tier = "default"',
|
|
87
|
-
'approval_policy = "on-request"'
|
|
88
|
-
].join('\n');
|
|
89
|
-
}
|