@openclaw/codex 2026.9.5 → 2026.9.7
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 +2 -0
- package/assets/icon.png +0 -0
- package/dist/.setup/{account-usage-runtime-C2MOIvfq.mjs → account-usage-runtime-DFhbh1zz.mjs} +6 -6
- package/dist/.setup/{apply-CJ0ZfmBG.mjs → apply-D3GcSoSa.mjs} +35 -55
- package/dist/.setup/{attempt-client-cleanup-BpYKdTA0.mjs → attempt-client-cleanup-DOP-cW5j.mjs} +179 -73
- package/dist/.setup/attempt-workspace-context-C5HigshI.mjs +164 -0
- package/dist/.setup/{auth-binding-DhLWa_7K.mjs → auth-binding-BLWz7stm.mjs} +14 -1
- package/dist/.setup/{auth-cache-key-QirmgiCo.mjs → auth-cache-key-Dbvq-QgB.mjs} +41 -111
- package/dist/.setup/{auth-profile-WqZtZfXN.mjs → auth-profile-B0okYl2D.mjs} +1 -2
- package/dist/.setup/auth-profile-health-oHizqgye.mjs +53 -0
- package/dist/.setup/auth-profile-recovery-BREezV0L.mjs +14 -0
- package/dist/.setup/auth-start-options-BPIPeEX8.mjs +44 -0
- package/dist/.setup/{binding-connection-Bm38niE8.mjs → binding-connection-DTtN1KrX.mjs} +2 -2
- package/dist/.setup/{binding-connection.runtime-CnRMC0ta.mjs → binding-connection.runtime-6TpgD1M6.mjs} +5 -5
- package/dist/.setup/{bounded-turn-BtlZcivC.mjs → bounded-turn-CbjoN2OW.mjs} +140 -37
- package/dist/.setup/bounded-turn-isolation-B8K_ylqk.mjs +14 -0
- package/dist/.setup/{build-state-Xx9ybZqa.mjs → build-state-Da1_z0kd.mjs} +1 -1
- package/dist/.setup/{capabilities-_vXcZGSx.mjs → capabilities-B3WEZl4e.mjs} +2 -10
- package/dist/.setup/{client-vXs2929Q.mjs → client-N0JpgSzF.mjs} +635 -872
- package/dist/.setup/client-catalog-response-5HHLdcde.mjs +285 -0
- package/dist/.setup/{command-dispatch-naHIZwwF.mjs → command-dispatch-BeAoaovI.mjs} +9 -8
- package/dist/.setup/{command-formatters-CGEkdawF.mjs → command-formatters-R3ckE3Co.mjs} +36 -64
- package/dist/.setup/{command-handlers-BtAJEW1X.mjs → command-handlers-ylTMS00z.mjs} +301 -488
- package/dist/.setup/{command-rpc-DHFpn4le.mjs → command-rpc-CGJGUQ6Y.mjs} +40 -28
- package/dist/.setup/compact-C2WamavS.mjs +776 -0
- package/dist/.setup/{config-CedDWjM-.mjs → config-DKhXquav.mjs} +26 -28
- package/dist/.setup/{config-options-BsanJ8QG.mjs → config-options-CzyWLTJt.mjs} +68 -65
- package/dist/.setup/{config-parsing-CcB9iPoq.mjs → config-parsing-b088LyhT.mjs} +57 -60
- package/dist/.setup/{config-runtime-CeAhl_h4.mjs → config-runtime-C0NbLms1.mjs} +2 -2
- package/dist/.setup/{config-security-BRQ2mgW9.mjs → config-security-CE-FcGw9.mjs} +51 -215
- package/dist/.setup/{config-utils-DujwEnhg.mjs → config-utils-D0CXecki.mjs} +3 -13
- package/dist/.setup/context-engine-projection-PezSESth.mjs +387 -0
- package/dist/.setup/{conversation-binding-DhzrpTM6.mjs → conversation-binding-3Min8qvP.mjs} +71 -105
- package/dist/.setup/{conversation-binding-data-CrcyZk6O.mjs → conversation-binding-data-C746z5Pn.mjs} +8 -12
- package/dist/.setup/{conversation-control-DN53ns41.mjs → conversation-control-CEP8X5JC.mjs} +30 -69
- package/dist/.setup/{cyber-failover-DYwbmf1o.mjs → cyber-failover-XV0nNRZu.mjs} +1 -1
- package/dist/.setup/{cyber-failover-notice-e9G3J9-e.mjs → cyber-failover-notice-RNpGpTyP.mjs} +1 -1
- package/dist/.setup/{dynamic-tools-D16lOp67.mjs → dynamic-tools-DzlsLUuS.mjs} +3136 -3167
- package/dist/.setup/{effective-mcp-catalog-K6kLCN8X.mjs → effective-mcp-catalog-CxUtC-xG.mjs} +8 -17
- package/dist/.setup/{ephemeral-turn-R1gA8Sn6.mjs → ephemeral-turn-CDsPJOa2.mjs} +9 -6
- package/dist/.setup/event-projector-assistant-message-CigreO4K.mjs +69 -0
- package/dist/.setup/{event-projector-usage-C7Ntzs-f.mjs → event-projector-usage-03R0I2dM.mjs} +4 -26
- package/dist/.setup/event-projector-values-DJSz8BTk.mjs +106 -0
- package/dist/.setup/incognito-session-DWYapfwf.mjs +2 -0
- package/dist/.setup/{inference-context-fulhZuz8.mjs → inference-context-D-9gWlTR.mjs} +16 -18
- package/dist/.setup/inference-dispatch-CMZtjQyz.mjs +359 -0
- package/dist/.setup/inference-metadata-CgIf7sOx.mjs +81 -0
- package/dist/.setup/inference-proxy-DhcXOgUE.mjs +561 -0
- package/dist/.setup/{isolated-completion-B6srt48J.mjs → isolated-completion-Dm3PzxJk.mjs} +15 -11
- package/dist/.setup/launch-args-DbFCehO7.mjs +196 -0
- package/dist/.setup/{managed-binary-DP6Rib3P.mjs → managed-binary-kiWRhNRE.mjs} +16 -9
- package/dist/.setup/{model-catalog-DkvUuBey.mjs → model-catalog-PAuZgJC6.mjs} +14 -14
- package/dist/.setup/model-runtime-BdqzOMkU.mjs +11 -0
- package/dist/.setup/{models-BDFgm_G-.mjs → models-DHXZtVVk.mjs} +9 -18
- package/dist/.setup/{native-auth-BLZGqFjw.mjs → native-auth-CuG53tu4.mjs} +5 -5
- package/dist/.setup/{native-execution-policy-YBMHSzC4.mjs → native-execution-policy-BxZJy5mP.mjs} +6 -31
- package/dist/.setup/{native-subagent-monitor-B1hxzIOy.mjs → native-subagent-monitor-Dpsmf2wz.mjs} +4422 -3808
- package/dist/.setup/native-subagent-pending-assignments-DwkCzLvD.mjs +203 -0
- package/dist/.setup/native-task-assignments-DMQ0g3hu.mjs +194 -0
- package/dist/.setup/{node-cli-sessions-Cl8b2ZF3.mjs → node-cli-sessions-HC4W6FLI.mjs} +99 -111
- package/dist/.setup/node-exec-server.runtime-BgBfWQqo.mjs +244 -0
- package/dist/.setup/{plan-xD7WKYTM.mjs → plan-Y-QIvrKB.mjs} +118 -163
- package/dist/.setup/{plugin-activation-r8nq5Jzp.mjs → plugin-activation-cNHRfaxU.mjs} +10 -47
- package/dist/.setup/{plugin-app-cache-key-BOxKP7db.mjs → plugin-app-cache-key-BL9B5H0L.mjs} +9 -42
- package/dist/.setup/{plugin-inventory-DUle8DLz.mjs → plugin-inventory-Cky2XJUw.mjs} +32 -23
- package/dist/.setup/{plugin-marketplace-discovery-P-Vndfqq.mjs → plugin-marketplace-discovery-D_dV9FXa.mjs} +22 -25
- package/dist/.setup/{plugin-metadata-cache-DsS5buNa.mjs → plugin-metadata-cache-DsjsL1dr.mjs} +328 -318
- package/dist/.setup/protocol-CANUwXJ3.mjs +17 -0
- package/dist/.setup/provider-DH8NSzGt.mjs +51 -0
- package/dist/.setup/{provider-capabilities-B8J4Dy-O.mjs → provider-capabilities-CAxoF-X1.mjs} +35 -12
- package/dist/.setup/{rate-limits-DOEGYRNs.mjs → rate-limits-B7-X2TgG.mjs} +123 -166
- package/dist/.setup/{request-BioXJLYa.mjs → request-BHZ1nz8d.mjs} +25 -16
- package/dist/.setup/responses-oauth-twnuTaAa.mjs +93 -0
- package/dist/.setup/rpc-error-BlD2vuzn.mjs +31 -0
- package/dist/.setup/{run-attempt-rlA07pUv.mjs → run-attempt-D8RZUOzY.mjs} +2046 -1454
- package/dist/.setup/{run-attempt-lifecycle-B7JbY4-F.mjs → run-attempt-lifecycle-C-6O3Exn.mjs} +10 -24
- package/dist/.setup/{runtime-artifact-Dy38Z5iU.mjs → runtime-artifact-DDQ-HGXf.mjs} +43 -47
- package/dist/.setup/runtime-artifact-connection-D68qQn1m.mjs +78 -0
- package/dist/.setup/sandbox-guard-DjCz2eOw.mjs +126 -0
- package/dist/.setup/scope-DOC1Xjc8.mjs +6 -0
- package/dist/.setup/session-binding-DGCYAfvD.mjs +443 -0
- package/dist/.setup/{session-binding-record-TH3xA0zj.mjs → session-binding-record-Oe9L-CNY.mjs} +73 -132
- package/dist/.setup/{session-binding-sidecars-CKYEcfNn.mjs → session-binding-sidecars-jo6H8dFr.mjs} +242 -60
- package/dist/.setup/{session-catalog-fUdWDx-U.mjs → session-catalog-4sCdv5qx.mjs} +598 -452
- package/dist/.setup/{session-catalog-adoption-CR_whkEW.mjs → session-catalog-adoption-BU_pHWG7.mjs} +59 -26
- package/dist/.setup/{session-catalog-archive-CwZaPacf.mjs → session-catalog-archive-spHfihri.mjs} +7 -7
- package/dist/.setup/session-catalog-events-DePDzzjc.mjs +139 -0
- package/dist/.setup/session-catalog-home-id-vlih0B_g.mjs +22 -0
- package/dist/.setup/{session-catalog-index-B141u15s.mjs → session-catalog-index-CZvDzC6z.mjs} +286 -182
- package/dist/.setup/{session-catalog-index-order-Cc5BzlQr.mjs → session-catalog-index-order-BcQpHks3.mjs} +2 -2
- package/dist/.setup/{session-catalog-index-state-BAuDztHN.mjs → session-catalog-index-state-TeO7EyO-.mjs} +6 -2
- package/dist/.setup/session-catalog-limits-DDxOsQeC.mjs +14 -0
- package/dist/.setup/session-catalog-list-request-CvtxrYSe.mjs +170 -0
- package/dist/.setup/session-catalog-native-projection-DjhwGL6x.mjs +178 -0
- package/dist/.setup/{session-catalog-node-adoption-BVRsYOSh.mjs → session-catalog-node-adoption-DgXvSGu0.mjs} +30 -35
- package/dist/.setup/{session-catalog-node-continue-Dowv8osw.mjs → session-catalog-node-continue-DjKXHBbi.mjs} +25 -18
- package/dist/.setup/session-catalog-node-lookup-CtAXI5W5.mjs +56 -0
- package/dist/.setup/{session-catalog-native-projection-ChV3cCtm.mjs → session-catalog-parsing-CPGaPYr-.mjs} +14 -180
- package/dist/.setup/{session-catalog-projection-C1Bj9Jl-.mjs → session-catalog-projection-Cr5qP5Dj.mjs} +15 -5
- package/dist/.setup/session-catalog-provenance-DoAvktcj.mjs +95 -0
- package/dist/.setup/{session-cli-DIj-IE-E.mjs → session-cli-Cn_nCqfq.mjs} +11 -24
- package/dist/.setup/{session-history-C--SrLI8.mjs → session-history-D83lJWHG.mjs} +16 -23
- package/dist/.setup/{session-history-import-JHXT5Xfi.mjs → session-history-import-WhX-X33a.mjs} +7 -10
- package/dist/.setup/session-history-read-Ov3StuL4.mjs +133 -0
- package/dist/.setup/{session-history.worker-CpNj7H_P.mjs → session-history.worker-MnPKncqP.mjs} +14 -23
- package/dist/.setup/session-initialization-6aveB9qb.mjs +22 -0
- package/dist/.setup/{session-permission-policy-DhurXY0l.mjs → session-permission-policy-Ci_fVX6y.mjs} +4 -8
- package/dist/.setup/{session-retirement-CU87AOg9.mjs → session-retirement-qMTxkNx2.mjs} +31 -12
- package/dist/.setup/{settled-turn-context-fmwouT5I.mjs → settled-turn-context-D4yj4rxf.mjs} +1 -1
- package/dist/.setup/{settled-turn-finalizer-CiY2bLFK.mjs → settled-turn-finalizer-BsvEabkw.mjs} +17 -13
- package/dist/.setup/{shared-client-BpTtuLQ5.mjs → shared-client-DqyTMYug.mjs} +826 -485
- package/dist/.setup/shared-client-lifecycle-DJIgqgMw.mjs +153 -0
- package/dist/.setup/{side-question-DSCZyoBD.mjs → side-question-C4kCmQy1.mjs} +206 -334
- package/dist/.setup/{source-Bjp4UQij.mjs → source-CS_7GFJZ.mjs} +82 -139
- package/dist/.setup/spawn-error-CL3n6MAa.mjs +57 -0
- package/dist/.setup/{thread-archive-guard-jmecf6OJ.mjs → thread-archive-guard-C9frICzX.mjs} +10 -3
- package/dist/.setup/thread-lifecycle-DPflntEJ.mjs +2362 -0
- package/dist/.setup/{incognito-session-uhrBF6wJ.mjs → thread-ownership-queue-Dp24d7-F.mjs} +1 -2
- package/dist/.setup/{thread-ownership-skomxnIt.mjs → thread-ownership-roNP0l1c.mjs} +47 -10
- package/dist/.setup/thread-policy-DTd-DtkX.mjs +109 -0
- package/dist/.setup/thread-requests-B_bRnMGN.mjs +2102 -0
- package/dist/.setup/{thread-resume-BkNpj9Pz.mjs → thread-resume-CdDaoc7T.mjs} +6 -6
- package/dist/.setup/timeout-CXOfNoaX.mjs +46 -0
- package/dist/.setup/transcript-history-projection-DRSifI-1.mjs +201 -0
- package/dist/.setup/{transcript-mirror-attestation-CzM-94NC.mjs → transcript-mirror-attestation-YSegaktH.mjs} +3 -4
- package/dist/.setup/{transcript-mirror-D4qp_leP.mjs → transcript-mirror-kxmCYsuF.mjs} +224 -206
- package/dist/.setup/{transport-stdio-Cmx94Oiy.mjs → transport-stdio-Bdegpn2V.mjs} +138 -75
- package/dist/.setup/transport-websocket-BTBE-LD9.mjs +211 -0
- package/dist/.setup/{upstream-prompt-provenance-LphB8slG.mjs → upstream-prompt-provenance-fXkKbPVC.mjs} +3 -9
- package/dist/.setup/{upstream-session-fork-D3UKxgVD.mjs → upstream-session-fork-CBeVjBpT.mjs} +48 -40
- package/dist/.setup/{usage-BOgBEKso.mjs → usage-BMzNxeR_.mjs} +5 -4
- package/dist/.setup/{usage-limit-error-C0ow7DOc.mjs → usage-limit-error-QXerDo3i.mjs} +5 -20
- package/dist/.setup/{web-search-provider.runtime-CTGuJt6i.mjs → web-search-provider.runtime-P77OUeoo.mjs} +10 -20
- package/dist/api.js +25 -16
- package/dist/catalog-page-worker-entrypoint.js +12 -0
- package/dist/catalog-page.worker.js +9 -0
- package/dist/cli-metadata.js +1 -1
- package/dist/doctor-contract-api.js +50 -8
- package/dist/harness.js +344 -1
- package/dist/index.js +345 -346
- package/dist/media-understanding-provider.js +9 -22
- package/dist/migration-provider-api.js +1 -1
- package/dist/provider-discovery.js +1 -1
- package/dist/session-history-worker-runtime.js +16 -33
- package/dist/session-history.worker.js +1 -1
- package/openclaw.plugin.json +14 -2
- package/package.json +11 -7
- package/dist/.setup/attempt-context-VXVwTCfS.mjs +0 -636
- package/dist/.setup/compact-C3i3qlzj.mjs +0 -687
- package/dist/.setup/event-projector-assistant-message-DNUR1s0A.mjs +0 -105
- package/dist/.setup/event-projector-items-DyTQ_XqL.mjs +0 -200
- package/dist/.setup/harness-rxaaoN-o.mjs +0 -349
- package/dist/.setup/history-rejection-B4nOXNXF.mjs +0 -13
- package/dist/.setup/image-payload-sanitizer-tupAr-2o.mjs +0 -79
- package/dist/.setup/inference-proxy-CC15HuSi.mjs +0 -311
- package/dist/.setup/launch-args-DnMak49W.mjs +0 -111
- package/dist/.setup/local-runtime-attribution-B_2mnqhb.mjs +0 -19
- package/dist/.setup/native-subagent-history-YXaL6dMd.mjs +0 -135
- package/dist/.setup/native-subagent-task-ids-DsuOonKv.mjs +0 -411
- package/dist/.setup/node-exec-server.runtime-BaViBKNz.mjs +0 -226
- package/dist/.setup/plugin-approval-roundtrip-CjfzafAZ.mjs +0 -122
- package/dist/.setup/provider-fFh_-VR3.mjs +0 -50
- package/dist/.setup/rolldown-runtime-8H4AJuhK.mjs +0 -14
- package/dist/.setup/sandbox-guard-BBP-RbTf.mjs +0 -166
- package/dist/.setup/session-binding-_0W_fHRr.mjs +0 -721
- package/dist/.setup/session-catalog-events-jMcYfQyd.mjs +0 -250
- package/dist/.setup/session-history-read-B3ZfSUbF.mjs +0 -50
- package/dist/.setup/session-initialization-DH1z6fXn.mjs +0 -75
- package/dist/.setup/thread-history-page-BTx-4xsg.mjs +0 -83
- package/dist/.setup/thread-lifecycle-Cik28qWn.mjs +0 -4904
- package/dist/.setup/thread-policy-Cjs4B8xf.mjs +0 -54
- package/dist/.setup/timeout-DZF05XrR.mjs +0 -63
- package/dist/.setup/transcript-history-projection-DHNBDhCU.mjs +0 -243
- package/dist/.setup/version-CoqzXPgK.mjs +0 -12
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as DEFAULT_CODEX_APP_SERVER_NETWORK_PROXY_PROFILE_PREFIX } from "./config-parsing-
|
|
3
|
-
import { r as normalizeCodexAppServerArgs } from "./launch-args-DnMak49W.mjs";
|
|
4
|
-
import { isRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
1
|
+
import { l as readRecord, s as readNonEmptyString } from "./config-utils-D0CXecki.mjs";
|
|
2
|
+
import { t as DEFAULT_CODEX_APP_SERVER_NETWORK_PROXY_PROFILE_PREFIX } from "./config-parsing-b088LyhT.mjs";
|
|
5
3
|
import { createHash } from "node:crypto";
|
|
6
4
|
import { AgentHarnessPreflightError } from "openclaw/plugin-sdk/agent-harness-registration";
|
|
5
|
+
import { parse } from "smol-toml";
|
|
7
6
|
import { readFileSync } from "node:fs";
|
|
8
|
-
import
|
|
9
|
-
import { homedir, hostname } from "node:os";
|
|
7
|
+
import { hostname } from "node:os";
|
|
10
8
|
import { isLoopbackHost } from "openclaw/plugin-sdk/request-url";
|
|
11
9
|
//#region extensions/codex/src/app-server/config-exec-policy.ts
|
|
12
10
|
function selectForcedPromptingSandbox(params) {
|
|
@@ -68,129 +66,43 @@ function resolveCodexRequirementsPath(env, platform) {
|
|
|
68
66
|
return UNIX_CODEX_REQUIREMENTS_PATH;
|
|
69
67
|
}
|
|
70
68
|
function parseAllowedSandboxModesFromCodexRequirements(content, hostName) {
|
|
71
|
-
const
|
|
69
|
+
const requirements = parseCodexRequirements(content);
|
|
70
|
+
const remoteSandboxModes = parseMatchingRemoteSandboxModesFromCodexRequirements(requirements, hostName);
|
|
72
71
|
if (remoteSandboxModes !== void 0) return remoteSandboxModes;
|
|
73
|
-
return
|
|
72
|
+
return parseRequirementsValues(requirements?.allowed_sandbox_modes, normalizeRequirementsSandboxMode);
|
|
74
73
|
}
|
|
75
74
|
function parseAllowedApprovalPoliciesFromCodexRequirements(content) {
|
|
76
|
-
|
|
77
|
-
if (values === void 0) return;
|
|
78
|
-
const normalizedPolicies = values.map((entry) => normalizeRequirementsApprovalPolicy(entry)).filter((entry) => entry !== void 0);
|
|
79
|
-
return normalizedPolicies.length > 0 ? new Set(normalizedPolicies) : void 0;
|
|
75
|
+
return parseRequirementsValues(parseCodexRequirements(content)?.allowed_approval_policies, normalizeRequirementsApprovalPolicy);
|
|
80
76
|
}
|
|
81
77
|
function parseAllowedApprovalsReviewersFromCodexRequirements(content) {
|
|
82
|
-
|
|
83
|
-
if (values === void 0) return;
|
|
84
|
-
const normalizedReviewers = values.map((entry) => normalizeRequirementsApprovalsReviewer(entry)).filter((entry) => entry !== void 0);
|
|
85
|
-
return normalizedReviewers.length > 0 ? new Set(normalizedReviewers) : void 0;
|
|
78
|
+
return parseRequirementsValues(parseCodexRequirements(content)?.allowed_approvals_reviewers, (value) => resolveApprovalsReviewer(value.trim().toLowerCase()));
|
|
86
79
|
}
|
|
87
|
-
function parseMatchingRemoteSandboxModesFromCodexRequirements(
|
|
80
|
+
function parseMatchingRemoteSandboxModesFromCodexRequirements(requirements, hostName) {
|
|
88
81
|
const normalizedHostName = normalizeRequirementsHostName(hostName);
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
82
|
+
const remoteConfigs = requirements?.remote_sandbox_config;
|
|
83
|
+
if (normalizedHostName === void 0 || !Array.isArray(remoteConfigs)) return;
|
|
84
|
+
for (const section of remoteConfigs) {
|
|
85
|
+
const config = readRecord(section);
|
|
86
|
+
const patterns = readRequirementsStringArray(config?.hostname_patterns);
|
|
92
87
|
if (!patterns || !requirementsHostNameMatchesAnyPattern(normalizedHostName, patterns)) continue;
|
|
93
|
-
return
|
|
88
|
+
return parseRequirementsValues(config?.allowed_sandbox_modes, normalizeRequirementsSandboxMode);
|
|
94
89
|
}
|
|
95
90
|
}
|
|
96
|
-
function
|
|
91
|
+
function parseRequirementsValues(value, normalize) {
|
|
92
|
+
const values = readRequirementsStringArray(value);
|
|
97
93
|
if (values === void 0) return;
|
|
98
|
-
const
|
|
99
|
-
return
|
|
100
|
-
}
|
|
101
|
-
function
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
107
|
-
function parseInlineOpenAIModelProviderBaseUrl(content) {
|
|
108
|
-
return parseTomlStringAssignmentValue(content, `${tomlKeyPattern("model_providers")}\\s*=\\s*\\{[\\s\\S]*?${tomlKeyPattern("openai")}\\s*=\\s*\\{[\\s\\S]*?${tomlKeyPattern("base_url")}`);
|
|
109
|
-
}
|
|
110
|
-
function parseTomlStringAssignmentValue(content, keyPattern) {
|
|
111
|
-
const assignment = content.match(new RegExp(`(?:^|\\n)\\s*${keyPattern}\\s*=\\s*([^\\r\\n]*)`));
|
|
112
|
-
if (!assignment) return;
|
|
113
|
-
const rawValue = assignment[1]?.trimStart() ?? "";
|
|
114
|
-
if (rawValue.startsWith("\"\"\"") || rawValue.startsWith("'''")) return false;
|
|
115
|
-
const match = parseTomlStringAssignment(content, keyPattern);
|
|
116
|
-
return match ? match[1] ?? match[2] ?? "" : false;
|
|
117
|
-
}
|
|
118
|
-
function parseTomlStringAssignment(content, keyPattern) {
|
|
119
|
-
return content.match(new RegExp(`(?:^|\\n)\\s*${keyPattern}\\s*=\\s*(?:"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|'([^']*)')`));
|
|
120
|
-
}
|
|
121
|
-
function tomlDottedKeyPattern(key) {
|
|
122
|
-
return key.split(".").map(tomlKeyPattern).join("\\s*\\.\\s*");
|
|
123
|
-
}
|
|
124
|
-
function tomlKeyPattern(key) {
|
|
125
|
-
const escaped = key.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
126
|
-
return `(?:"${escaped}"|'${escaped}'|${escaped})`;
|
|
127
|
-
}
|
|
128
|
-
function parseRequirementsStringArray(content, key) {
|
|
129
|
-
const match = content.match(new RegExp(`(?:^|\\n)\\s*${key}\\s*=\\s*\\[([\\s\\S]*?)\\]`));
|
|
130
|
-
if (!match) return;
|
|
131
|
-
const arrayBody = match[1] ?? "";
|
|
132
|
-
const stringMatches = [...arrayBody.matchAll(/"([^"\\]*(?:\\.[^"\\]*)*)"|'([^']*)'/g)];
|
|
133
|
-
if (stringMatches.length === 0 && arrayBody.trim().length > 0) return;
|
|
134
|
-
return stringMatches.map((entry) => entry[1] ?? entry[2] ?? "");
|
|
135
|
-
}
|
|
136
|
-
function parseTomlTableSection(content, table) {
|
|
137
|
-
const strippedContent = stripTomlLineComments(content);
|
|
138
|
-
const tablePattern = tomlDottedKeyPattern(table);
|
|
139
|
-
const match = new RegExp(`^\\s*\\[\\s*${tablePattern}\\s*\\]\\s*$`, "m").exec(strippedContent);
|
|
140
|
-
if (!match) return;
|
|
141
|
-
const sectionStart = match.index + match[0].length;
|
|
142
|
-
const rest = strippedContent.slice(sectionStart);
|
|
143
|
-
const nextTableOffset = rest.search(/^\s*\[/m);
|
|
144
|
-
return nextTableOffset === -1 ? rest : rest.slice(0, nextTableOffset);
|
|
145
|
-
}
|
|
146
|
-
function parseTomlArrayTableSections(content, table) {
|
|
147
|
-
const strippedContent = stripTomlLineComments(content);
|
|
148
|
-
const escapedTable = table.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
149
|
-
const headerPattern = new RegExp(`^\\s*\\[\\[\\s*${escapedTable}\\s*\\]\\]\\s*$`, "gm");
|
|
150
|
-
const sections = [];
|
|
151
|
-
for (let match = headerPattern.exec(strippedContent); match; match = headerPattern.exec(strippedContent)) {
|
|
152
|
-
const sectionStart = headerPattern.lastIndex;
|
|
153
|
-
const rest = strippedContent.slice(sectionStart);
|
|
154
|
-
const nextTableOffset = rest.search(/^\s*\[/m);
|
|
155
|
-
sections.push(nextTableOffset === -1 ? rest : rest.slice(0, nextTableOffset));
|
|
156
|
-
}
|
|
157
|
-
return sections;
|
|
158
|
-
}
|
|
159
|
-
function firstTomlTableOffset(content) {
|
|
160
|
-
return content.match(/^\s*\[[^\]\n]/m)?.index ?? content.length;
|
|
161
|
-
}
|
|
162
|
-
function stripTomlLineComments(value) {
|
|
163
|
-
let output = "";
|
|
164
|
-
let quote;
|
|
165
|
-
let escaped = false;
|
|
166
|
-
for (let index = 0; index < value.length; index += 1) {
|
|
167
|
-
const char = value[index] ?? "";
|
|
168
|
-
if (quote) {
|
|
169
|
-
output += char;
|
|
170
|
-
if (quote === "\"" && escaped) {
|
|
171
|
-
escaped = false;
|
|
172
|
-
continue;
|
|
173
|
-
}
|
|
174
|
-
if (quote === "\"" && char === "\\") {
|
|
175
|
-
escaped = true;
|
|
176
|
-
continue;
|
|
177
|
-
}
|
|
178
|
-
if (char === quote) quote = void 0;
|
|
179
|
-
continue;
|
|
180
|
-
}
|
|
181
|
-
if (char === "\"" || char === "'") {
|
|
182
|
-
quote = char;
|
|
183
|
-
output += char;
|
|
184
|
-
continue;
|
|
185
|
-
}
|
|
186
|
-
if (char === "#") {
|
|
187
|
-
while (index < value.length && value[index] !== "\n") index += 1;
|
|
188
|
-
if (value[index] === "\n") output += "\n";
|
|
189
|
-
continue;
|
|
190
|
-
}
|
|
191
|
-
output += char;
|
|
94
|
+
const normalized = values.map(normalize).filter((entry) => entry !== void 0);
|
|
95
|
+
return normalized.length > 0 ? new Set(normalized) : void 0;
|
|
96
|
+
}
|
|
97
|
+
function parseCodexRequirements(content) {
|
|
98
|
+
try {
|
|
99
|
+
return parse(content, { integersAsBigInt: true });
|
|
100
|
+
} catch {
|
|
101
|
+
return;
|
|
192
102
|
}
|
|
193
|
-
|
|
103
|
+
}
|
|
104
|
+
function readRequirementsStringArray(value) {
|
|
105
|
+
return Array.isArray(value) && value.every((entry) => typeof entry === "string") ? value : void 0;
|
|
194
106
|
}
|
|
195
107
|
function normalizeRequirementsSandboxMode(value) {
|
|
196
108
|
const compact = value.replace(/[\s_-]/g, "").toLowerCase();
|
|
@@ -222,9 +134,6 @@ function normalizeRequirementsApprovalPolicy(value) {
|
|
|
222
134
|
if (normalized === "untrusted") return normalized;
|
|
223
135
|
return resolveApprovalPolicy(normalized);
|
|
224
136
|
}
|
|
225
|
-
function normalizeRequirementsApprovalsReviewer(value) {
|
|
226
|
-
return resolveApprovalsReviewer(value.trim().toLowerCase());
|
|
227
|
-
}
|
|
228
137
|
function selectGuardianApprovalPolicy(allowedApprovalPolicies, execModeRequiringPromptingApprovals) {
|
|
229
138
|
if (allowedApprovalPolicies === void 0 || allowedApprovalPolicies.has("on-request")) return "on-request";
|
|
230
139
|
if (allowedApprovalPolicies.has("untrusted")) return "untrusted";
|
|
@@ -244,48 +153,11 @@ function selectUserApprovalsReviewer(allowedApprovalsReviewers, execModeRequirin
|
|
|
244
153
|
throw new Error(`tools.exec.mode=${execModeRequiringUserReviewer ?? "ask"} requires Codex app-server user approvals`);
|
|
245
154
|
}
|
|
246
155
|
//#endregion
|
|
247
|
-
//#region extensions/codex/src/app-server/
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
return path.join(path.resolve(agentDir), CODEX_APP_SERVER_HOME_DIRNAME);
|
|
253
|
-
}
|
|
254
|
-
/** Resolves the native user Codex home used by Desktop and the CLI. */
|
|
255
|
-
function resolveCodexAppServerUserHomeDir(env = process.env, homedir$1 = homedir) {
|
|
256
|
-
const configured = normalizeOptionalString(env.CODEX_HOME);
|
|
257
|
-
return path.resolve(configured ?? path.join(homedir$1(), ".codex"));
|
|
258
|
-
}
|
|
259
|
-
/** Resolves the local CODEX_HOME used when starting one app-server connection. */
|
|
260
|
-
function resolveCodexAppServerLocalHomeDir(startOptions, agentDir, env = process.env) {
|
|
261
|
-
const configured = startOptions.env?.CODEX_HOME;
|
|
262
|
-
if (configured?.trim()) return configured;
|
|
263
|
-
return startOptions.homeScope === "user" ? resolveCodexAppServerUserHomeDir(env) : resolveCodexAppServerHomeDir(agentDir);
|
|
264
|
-
}
|
|
265
|
-
/** Forces OpenClaw-owned Codex auth to remain process-local. */
|
|
266
|
-
function withEphemeralCodexAuthStore(params) {
|
|
267
|
-
const { startOptions } = params;
|
|
268
|
-
if (!params.preparedAuth && params.authProfileId === null) return startOptions;
|
|
269
|
-
const args = normalizeCodexAppServerArgs(startOptions.args, CODEX_EPHEMERAL_AUTH_STORE_OVERRIDE);
|
|
270
|
-
return args === startOptions.args ? startOptions : {
|
|
271
|
-
...startOptions,
|
|
272
|
-
args
|
|
273
|
-
};
|
|
274
|
-
}
|
|
275
|
-
//#endregion
|
|
276
|
-
//#region extensions/codex/src/app-server/protocol.ts
|
|
277
|
-
/** Namespace Codex keeps directly model-visible without exposing it to Code Mode guests. */
|
|
278
|
-
const CODEX_OPENCLAW_DIRECT_DYNAMIC_TOOL_NAMESPACE = "openclaw_direct";
|
|
279
|
-
function flattenCodexDynamicToolFunctions(tools) {
|
|
280
|
-
return (tools ?? []).flatMap((tool) => tool.type === "namespace" ? tool.tools : [tool]);
|
|
281
|
-
}
|
|
282
|
-
/** Asserts the experimental beforeTurnId request field before it crosses the app-server boundary. */
|
|
283
|
-
function assertCodexThreadForkParams(value) {
|
|
284
|
-
if (!isRecord(value) || typeof value.threadId !== "string" || !value.threadId.trim() || value.beforeTurnId !== void 0 && value.beforeTurnId !== null && typeof value.beforeTurnId !== "string") throw new Error("Invalid Codex app-server thread/fork params");
|
|
285
|
-
return value;
|
|
286
|
-
}
|
|
287
|
-
function isJsonObject(value) {
|
|
288
|
-
return isRecord(value);
|
|
156
|
+
//#region extensions/codex/src/app-server/config-policy-json.ts
|
|
157
|
+
function stringifyCodexPolicy(value) {
|
|
158
|
+
if (Array.isArray(value)) return `[${value.map((item) => stringifyCodexPolicy(item)).join(",")}]`;
|
|
159
|
+
if (value && typeof value === "object") return `{${Object.entries(value).toSorted(([left], [right]) => left.localeCompare(right)).map(([key, item]) => `${JSON.stringify(key)}:${stringifyCodexPolicy(item)}`).join(",")}}`;
|
|
160
|
+
return JSON.stringify(value);
|
|
289
161
|
}
|
|
290
162
|
//#endregion
|
|
291
163
|
//#region extensions/codex/src/app-server/config-security.ts
|
|
@@ -324,34 +196,26 @@ function resolveCodexAppServerNetworkProxy(config, sandbox) {
|
|
|
324
196
|
};
|
|
325
197
|
return { networkProxy: {
|
|
326
198
|
profileName,
|
|
327
|
-
configFingerprint:
|
|
199
|
+
configFingerprint: createHash("sha256").update(stringifyCodexPolicy(configPatch)).digest("hex"),
|
|
328
200
|
configPatch
|
|
329
201
|
} };
|
|
330
202
|
}
|
|
331
203
|
function resolveNetworkProxyPermissionProfileName(config, profile) {
|
|
332
204
|
const explicitProfileName = readNonEmptyString(config.profileName);
|
|
333
205
|
if (explicitProfileName) return explicitProfileName;
|
|
334
|
-
const suffix = createHash("sha256").update(
|
|
206
|
+
const suffix = createHash("sha256").update(stringifyCodexPolicy({
|
|
335
207
|
version: 1,
|
|
336
208
|
profile
|
|
337
209
|
})).digest("hex").slice(0, 16);
|
|
338
210
|
return `${DEFAULT_CODEX_APP_SERVER_NETWORK_PROXY_PROFILE_PREFIX}-${suffix}`;
|
|
339
211
|
}
|
|
340
|
-
function fingerprintCodexAppServerNetworkProxyConfigPatch(configPatch) {
|
|
341
|
-
return createHash("sha256").update(stableStringifyJson(configPatch)).digest("hex");
|
|
342
|
-
}
|
|
343
212
|
function normalizeNetworkProxyPermissionMap(value) {
|
|
344
|
-
const entries = Object.entries(value ?? {}).map(([key, permission]) => [key.trim(), permission]).filter(([key]) => key.length > 0);
|
|
213
|
+
const entries = Object.entries(value ?? {}).map(([key, permission]) => [key.trim(), permission === "none" ? "deny" : permission]).filter(([key]) => key.length > 0);
|
|
345
214
|
return entries.length > 0 ? Object.fromEntries(entries) : void 0;
|
|
346
215
|
}
|
|
347
216
|
function removeUndefinedJsonFields(value) {
|
|
348
217
|
return Object.fromEntries(Object.entries(value).filter((entry) => entry[1] !== void 0));
|
|
349
218
|
}
|
|
350
|
-
function stableStringifyJson(value) {
|
|
351
|
-
if (Array.isArray(value)) return `[${value.map((item) => stableStringifyJson(item)).join(",")}]`;
|
|
352
|
-
if (value && typeof value === "object") return `{${Object.entries(value).toSorted(([left], [right]) => left.localeCompare(right)).map(([key, item]) => `${JSON.stringify(key)}:${stableStringifyJson(item)}`).join(",")}}`;
|
|
353
|
-
return JSON.stringify(value);
|
|
354
|
-
}
|
|
355
219
|
/** Explicit MCP prompting must bypass Codex's unconditional Never-policy approval. */
|
|
356
220
|
function hasCodexMcpToolApprovalOverrides(servers, serverNames, projectedMcpServers) {
|
|
357
221
|
const modes = new Map(Object.entries(projectedMcpServers ?? {}).map(([name, server]) => [name, server.default_tools_approval_mode]));
|
|
@@ -368,44 +232,25 @@ function withMcpElicitationsApprovalPolicy(policy) {
|
|
|
368
232
|
...policy.granular,
|
|
369
233
|
mcp_elicitations: true
|
|
370
234
|
} };
|
|
371
|
-
|
|
372
|
-
mcp_elicitations: true,
|
|
373
|
-
rules: false,
|
|
374
|
-
sandbox_approval: false,
|
|
375
|
-
request_permissions: false,
|
|
376
|
-
skill_approval: false
|
|
377
|
-
} };
|
|
235
|
+
const prompting = policy !== "never";
|
|
378
236
|
return { granular: {
|
|
379
237
|
mcp_elicitations: true,
|
|
380
|
-
rules:
|
|
381
|
-
sandbox_approval:
|
|
382
|
-
request_permissions:
|
|
383
|
-
skill_approval:
|
|
238
|
+
rules: prompting,
|
|
239
|
+
sandbox_approval: prompting,
|
|
240
|
+
request_permissions: prompting,
|
|
241
|
+
skill_approval: prompting
|
|
384
242
|
} };
|
|
385
243
|
}
|
|
386
244
|
function resolveTransport(value) {
|
|
387
245
|
return value === "websocket" || value === "unix" ? value : "stdio";
|
|
388
246
|
}
|
|
389
|
-
function normalizeRemoteWorkspaceRoot(value) {
|
|
390
|
-
return readNonEmptyString(value);
|
|
391
|
-
}
|
|
392
247
|
function inferCodexAppServerConnectionClass(params) {
|
|
393
248
|
if (params.transport !== "websocket") return "local-loopback";
|
|
394
249
|
return params.url && isLoopbackWebSocketUrl(params.url) ? "local-loopback" : "remote";
|
|
395
250
|
}
|
|
396
|
-
function assertCodexAppServerConnectionClassConfig(params) {
|
|
397
|
-
if (params.connectionClass === "remote" && !hasIdentityBearingWebSocketAuth({
|
|
398
|
-
authToken: params.authToken,
|
|
399
|
-
headers: params.headers
|
|
400
|
-
})) throw new Error("remote Codex app-server WebSocket URLs require appServer.authToken or an Authorization header");
|
|
401
|
-
}
|
|
402
251
|
/** Applies the canonical remote-auth boundary to any Codex AppServer transport. */
|
|
403
252
|
function assertCodexAppServerConnectionSecurity(params) {
|
|
404
|
-
|
|
405
|
-
connectionClass: inferCodexAppServerConnectionClass(params),
|
|
406
|
-
authToken: params.authToken,
|
|
407
|
-
headers: params.headers
|
|
408
|
-
});
|
|
253
|
+
if (inferCodexAppServerConnectionClass(params) === "remote" && !hasIdentityBearingWebSocketAuth(params)) throw new Error("remote Codex app-server WebSocket URLs require appServer.authToken or an Authorization header");
|
|
409
254
|
}
|
|
410
255
|
function isLoopbackWebSocketUrl(value) {
|
|
411
256
|
let parsed;
|
|
@@ -430,22 +275,13 @@ function resolveDefaultCodexAppServerPolicy(params) {
|
|
|
430
275
|
dangerFullAccessAllowed: true
|
|
431
276
|
};
|
|
432
277
|
const content = readCodexRequirementsToml(params);
|
|
433
|
-
if (content === void 0) {
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
dangerFullAccessAllowed: true,
|
|
441
|
-
approvalPolicy: selectGuardianApprovalPolicy(void 0, params.execModeRequiringPromptingApprovals),
|
|
442
|
-
approvalsReviewer: params.forceUserReviewer ? selectUserApprovalsReviewer(void 0, params.execModeRequiringUserReviewer) : selectGuardianApprovalsReviewer(void 0, params.execModeRequiringPromptingApprovals === "auto" ? "auto" : void 0),
|
|
443
|
-
sandbox: selectGuardianSandbox(void 0)
|
|
444
|
-
};
|
|
445
|
-
}
|
|
446
|
-
const allowedSandboxModes = parseAllowedSandboxModesFromCodexRequirements(content, readNonEmptyString(params.hostName) ?? hostname());
|
|
447
|
-
const allowedApprovalPolicies = parseAllowedApprovalPoliciesFromCodexRequirements(content);
|
|
448
|
-
const allowedApprovalsReviewers = parseAllowedApprovalsReviewersFromCodexRequirements(content);
|
|
278
|
+
if (content === void 0 && !params.forceGuardian) return {
|
|
279
|
+
mode: "yolo",
|
|
280
|
+
dangerFullAccessAllowed: true
|
|
281
|
+
};
|
|
282
|
+
const allowedSandboxModes = content === void 0 ? void 0 : parseAllowedSandboxModesFromCodexRequirements(content, readNonEmptyString(params.hostName) ?? hostname());
|
|
283
|
+
const allowedApprovalPolicies = content === void 0 ? void 0 : parseAllowedApprovalPoliciesFromCodexRequirements(content);
|
|
284
|
+
const allowedApprovalsReviewers = content === void 0 ? void 0 : parseAllowedApprovalsReviewersFromCodexRequirements(content);
|
|
449
285
|
const yoloSandboxAllowed = allowedSandboxModes === void 0 || allowedSandboxModes.has("danger-full-access");
|
|
450
286
|
const yoloApprovalAllowed = allowedApprovalPolicies === void 0 || allowedApprovalPolicies.has("never") && !allowedApprovalPolicies.has("untrusted");
|
|
451
287
|
const yoloReviewerAllowed = allowedApprovalsReviewers === void 0 || allowedApprovalsReviewers.has("user");
|
|
@@ -462,4 +298,4 @@ function resolveDefaultCodexAppServerPolicy(params) {
|
|
|
462
298
|
};
|
|
463
299
|
}
|
|
464
300
|
//#endregion
|
|
465
|
-
export {
|
|
301
|
+
export { resolveSandbox as C, selectGuardianSandbox as E, resolveEffectiveOpenClawExecModeForCodexAppServer as S, selectForcedPromptingSandbox as T, selectUserApprovalsReviewer as _, resolveDefaultCodexAppServerPolicy as a, resolveApprovalsReviewer as b, shouldAutoApproveCodexAppServerApprovals as c, parseAllowedApprovalPoliciesFromCodexRequirements as d, parseAllowedApprovalsReviewersFromCodexRequirements as f, selectGuardianApprovalsReviewer as g, selectGuardianApprovalPolicy as h, resolveCodexAppServerNetworkProxy as i, withMcpElicitationsApprovalPolicy as l, readCodexRequirementsToml as m, hasCodexMcpToolApprovalOverrides as n, resolvePolicyMode as o, parseAllowedSandboxModesFromCodexRequirements as p, inferCodexAppServerConnectionClass as r, resolveTransport as s, assertCodexAppServerConnectionSecurity as t, stringifyCodexPolicy as u, assertCodexAppServerAllowedForOpenClawExecMode as v, selectForcedDangerFullAccessSandbox as w, resolveCodexPolicyModeForOpenClawExecMode as x, resolveApprovalPolicy as y };
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { asOptionalRecord as readRecord, normalizeOptionalString as readNonEmptyString
|
|
1
|
+
import { asOptionalRecord as readRecord, normalizeOptionalString as readNonEmptyString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
2
2
|
import { createHmac, randomBytes } from "node:crypto";
|
|
3
|
-
import { resolvePositiveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
|
|
4
3
|
import { splitCommandArgs } from "openclaw/plugin-sdk/process-runtime";
|
|
5
4
|
import { normalizeResolvedSecretInputString } from "openclaw/plugin-sdk/secret-input";
|
|
6
5
|
//#region extensions/codex/src/app-server/config-contracts.shared.ts
|
|
@@ -22,22 +21,13 @@ function normalizeCodexServiceTier(value) {
|
|
|
22
21
|
function isCodexFastServiceTier(value) {
|
|
23
22
|
return normalizeCodexServiceTier(value) === "priority";
|
|
24
23
|
}
|
|
25
|
-
function normalizePositiveNumber(value, fallback) {
|
|
26
|
-
return resolvePositiveTimerTimeoutMs(value, fallback);
|
|
27
|
-
}
|
|
28
24
|
function normalizeHeaders(value) {
|
|
29
25
|
if (!value || typeof value !== "object" || Array.isArray(value)) return {};
|
|
30
|
-
return Object.fromEntries(Object.entries(value).map(([key, child]) => [key.trim(),
|
|
26
|
+
return Object.fromEntries(Object.entries(value).map(([key, child]) => [key.trim(), normalizeResolvedSecretInputString({
|
|
31
27
|
value: child,
|
|
32
28
|
path: `plugins.entries.codex.config.appServer.headers.${key}`
|
|
33
29
|
})]).filter((entry) => Boolean(entry[0] && entry[1])));
|
|
34
30
|
}
|
|
35
|
-
function normalizeCodexAppServerSecretInput(params) {
|
|
36
|
-
return normalizeResolvedSecretInputString(params);
|
|
37
|
-
}
|
|
38
|
-
function readBooleanEnv(value) {
|
|
39
|
-
return parseBooleanValue(value);
|
|
40
|
-
}
|
|
41
31
|
function readExecSecurity(value) {
|
|
42
32
|
return value === "deny" || value === "allowlist" || value === "full" ? value : void 0;
|
|
43
33
|
}
|
|
@@ -64,4 +54,4 @@ function getStartOptionsKeySecret() {
|
|
|
64
54
|
return globalState[START_OPTIONS_KEY_SECRET_SYMBOL];
|
|
65
55
|
}
|
|
66
56
|
//#endregion
|
|
67
|
-
export {
|
|
57
|
+
export { readExecAsk as a, readNumberEnv as c, CODEX_PLUGIN_MARKETPLACE_NAME_PATTERN as d, normalizeHeaders as i, readRecord as l, isCodexFastServiceTier as n, readExecSecurity as o, normalizeCodexServiceTier as r, readNonEmptyString as s, hashSecretForKey as t, resolveArgs as u };
|