codex-config 0.1.0 → 0.144.1

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.
@@ -1,32 +1,24 @@
1
1
  approval_policy = "never"
2
- sandbox_mode = "danger-full-access"
2
+ default_permissions = ":danger-full-access"
3
3
  model_reasoning_effort = "high"
4
4
  plan_mode_reasoning_effort = "high"
5
5
  web_search = "live"
6
- model = "gpt-5.5"
7
- #model_context_window = 1050000
8
- personality = "friendly"
6
+ model = "gpt-5.6-sol"
9
7
  # model_reasoning_summary options: "auto", "concise", "detailed", "none"
10
8
  model_reasoning_summary = "concise"
11
9
  service_tier = "fast"
12
- suppress_unstable_features_warning = true
13
10
 
14
11
  [analytics]
15
12
  enabled = false
16
13
 
17
14
  [features]
18
- multi_agent = true
19
- image_detail_original = true
20
15
  memories = true
21
- terminal_resize_reflow = true
22
- goals = true
23
16
 
24
17
  [tui]
25
18
  alternate_screen = "never"
26
19
  status_line = ["model-with-reasoning", "project-name", "context-used", "weekly-limit", "fast-mode", "five-hour-limit"]
27
- terminal_title = ["spinner", "project", "status", "task-progress"]
20
+ terminal_title = ["activity", "project-name", "run-state", "task-progress"]
28
21
 
29
22
  [memories]
30
23
  use_memories = true
31
24
  generate_memories = true
32
-
package/dist/cli.js CHANGED
@@ -1,18 +1,21 @@
1
1
  #!/usr/bin/env node
2
+ import { readFileSync } from "node:fs";
2
3
  import { program } from "commander";
3
4
  import { applyConfig, diffConfig, doctor, formatDoctorText, formatTextResult, } from "./commands.js";
4
5
  let jsonMode = false;
6
+ const packageVersion = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8")).version;
5
7
  program
6
8
  .name("codex-config")
7
- .description("Idempotently apply config.toml.template to ~/.codex/config.toml.")
8
- .version("0.1.0")
9
+ .description("Keep the active Codex config aligned with the supported GPT-5.6 family.")
10
+ .version(packageVersion)
9
11
  .option("--json", "print machine-readable JSON");
10
12
  program
11
13
  .command("apply")
12
14
  .description("Apply the template to the target config.")
13
15
  .option("--target <path>", "target config.toml path")
16
+ .option("-p, --profile <name>", "target $CODEX_HOME/<name>.config.toml")
14
17
  .option("--template <path>", "template config.toml path")
15
- .option("--override-all", "overwrite template-covered keys that already exist")
18
+ .option("-f, --force", "overwrite template-covered keys that already exist")
16
19
  .option("--dry-run", "show planned changes without writing")
17
20
  .option("--json", "print machine-readable JSON")
18
21
  .action(async (options) => {
@@ -24,8 +27,9 @@ program
24
27
  .command("diff")
25
28
  .description("Show whether applying the template would change the target.")
26
29
  .option("--target <path>", "target config.toml path")
30
+ .option("-p, --profile <name>", "target $CODEX_HOME/<name>.config.toml")
27
31
  .option("--template <path>", "template config.toml path")
28
- .option("--override-all", "compare using override-all behavior")
32
+ .option("-f, --force", "compare using force behavior")
29
33
  .option("--json", "print machine-readable JSON")
30
34
  .action(async (options) => {
31
35
  jsonMode = shouldUseJson(options);
@@ -36,8 +40,9 @@ program
36
40
  .command("check")
37
41
  .description("Exit nonzero when the target is not up to date with the template.")
38
42
  .option("--target <path>", "target config.toml path")
43
+ .option("-p, --profile <name>", "target $CODEX_HOME/<name>.config.toml")
39
44
  .option("--template <path>", "template config.toml path")
40
- .option("--override-all", "check using override-all behavior")
45
+ .option("-f, --force", "check using force behavior")
41
46
  .option("--json", "print machine-readable JSON")
42
47
  .action(async (options) => {
43
48
  jsonMode = shouldUseJson(options);
@@ -49,8 +54,9 @@ program
49
54
  });
50
55
  program
51
56
  .command("doctor")
52
- .description("Validate default paths and TOML parser readiness.")
57
+ .description("Validate the target against the pinned Codex schema and GPT-5.6 policy.")
53
58
  .option("--target <path>", "target config.toml path")
59
+ .option("-p, --profile <name>", "target $CODEX_HOME/<name>.config.toml")
54
60
  .option("--template <path>", "template config.toml path")
55
61
  .option("--json", "print machine-readable JSON")
56
62
  .action(async (options) => {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type ConfigChangePlan } from "./toml-merge.js";
2
+ export declare function planCodexMigrations(targetText: string): ConfigChangePlan;
3
+ export declare const STATUS_LINE_LEGACY_IDS: readonly string[];
4
+ export declare const TERMINAL_TITLE_LEGACY_IDS: readonly string[];
@@ -0,0 +1,181 @@
1
+ import { parse, stringify } from "smol-toml";
2
+ import { CODEX_TARGET } from "./codex-target.generated.js";
3
+ import { planConfigChange, planConfigRemovals, } from "./toml-merge.js";
4
+ const SANDBOX_PERMISSION_PROFILES = {
5
+ "danger-full-access": ":danger-full-access",
6
+ "workspace-write": ":workspace",
7
+ "read-only": ":read-only",
8
+ };
9
+ const STATUS_LINE_ALIASES = {
10
+ "model-name": "model",
11
+ project: "project-name",
12
+ "project-root": "project-name",
13
+ status: "run-state",
14
+ approval: "approval-mode",
15
+ "context-usage": "context-used",
16
+ "session-id": "thread-id",
17
+ };
18
+ const TERMINAL_TITLE_ALIASES = {
19
+ project: "project-name",
20
+ spinner: "activity",
21
+ status: "run-state",
22
+ thread: "thread-title",
23
+ "context-usage": "context-used",
24
+ "session-id": "thread-id",
25
+ "model-name": "model",
26
+ };
27
+ export function planCodexMigrations(targetText) {
28
+ const parsed = parseTarget(targetText);
29
+ const migrationValues = {};
30
+ const featureUpdates = {};
31
+ const supportedModels = new Set(CODEX_TARGET.models.map((model) => model.id));
32
+ if (hasPath(parsed, ["model"])) {
33
+ const model = getPath(parsed, ["model"]);
34
+ if (typeof model !== "string" || !supportedModels.has(model)) {
35
+ migrationValues.model = CODEX_TARGET.defaultModel;
36
+ }
37
+ }
38
+ const sandboxMode = getPath(parsed, ["sandbox_mode"]);
39
+ const defaultPermissions = getPath(parsed, ["default_permissions"]);
40
+ const migratedPermissionProfile = typeof sandboxMode === "string" ? SANDBOX_PERMISSION_PROFILES[sandboxMode] : undefined;
41
+ if (defaultPermissions === undefined && migratedPermissionProfile) {
42
+ migrationValues.default_permissions = migratedPermissionProfile;
43
+ }
44
+ for (const [alias, canonical] of Object.entries(CODEX_TARGET.legacyFeatureAliases)) {
45
+ if (alias === "web_search" || !hasPath(parsed, ["features", alias])) {
46
+ continue;
47
+ }
48
+ if (!CODEX_TARGET.removedFeatureKeys.includes(canonical) &&
49
+ !hasPath(parsed, ["features", canonical])) {
50
+ featureUpdates[canonical] = getPath(parsed, ["features", alias]);
51
+ }
52
+ }
53
+ const legacyUnifiedExec = getPath(parsed, ["experimental_use_unified_exec_tool"]);
54
+ if (legacyUnifiedExec !== undefined &&
55
+ !hasPath(parsed, ["features", "unified_exec"]) &&
56
+ !Object.prototype.hasOwnProperty.call(featureUpdates, "unified_exec")) {
57
+ featureUpdates.unified_exec = legacyUnifiedExec;
58
+ }
59
+ const legacyWebSearchPaths = [
60
+ ["features", "web_search"],
61
+ ["features", "web_search_cached"],
62
+ ["features", "web_search_request"],
63
+ ];
64
+ if (getPath(parsed, ["web_search"]) === undefined &&
65
+ legacyWebSearchPaths.some((path) => hasPath(parsed, path))) {
66
+ migrationValues.web_search = legacyWebSearchMode(parsed);
67
+ }
68
+ if (Object.keys(featureUpdates).length > 0) {
69
+ migrationValues.features = featureUpdates;
70
+ }
71
+ const tuiUpdates = {};
72
+ const statusLine = getPath(parsed, ["tui", "status_line"]);
73
+ const migratedStatusLine = migrateAliases(statusLine, STATUS_LINE_ALIASES);
74
+ if (migratedStatusLine) {
75
+ tuiUpdates.status_line = migratedStatusLine;
76
+ }
77
+ const terminalTitle = getPath(parsed, ["tui", "terminal_title"]);
78
+ const migratedTerminalTitle = migrateAliases(terminalTitle, TERMINAL_TITLE_ALIASES);
79
+ if (migratedTerminalTitle) {
80
+ tuiUpdates.terminal_title = migratedTerminalTitle;
81
+ }
82
+ if (Object.keys(tuiUpdates).length > 0) {
83
+ migrationValues.tui = tuiUpdates;
84
+ }
85
+ const updatePlan = planConfigChange({
86
+ targetText,
87
+ templateText: stringify(migrationValues),
88
+ mode: "override",
89
+ });
90
+ const removalPaths = [];
91
+ if (hasPath(parsed, ["personality"])) {
92
+ removalPaths.push(["personality"]);
93
+ }
94
+ if (hasPath(parsed, ["experimental_use_unified_exec_tool"])) {
95
+ removalPaths.push(["experimental_use_unified_exec_tool"]);
96
+ }
97
+ if (hasPath(parsed, ["sandbox_mode"]) &&
98
+ (defaultPermissions !== undefined || migratedPermissionProfile !== undefined)) {
99
+ removalPaths.push(["sandbox_mode"]);
100
+ }
101
+ for (const key of [
102
+ ...CODEX_TARGET.removedFeatureKeys,
103
+ ...CODEX_TARGET.retiredFeatureKeys,
104
+ ]) {
105
+ if (hasPath(parsed, ["features", key])) {
106
+ removalPaths.push(["features", key]);
107
+ }
108
+ }
109
+ for (const alias of Object.keys(CODEX_TARGET.legacyFeatureAliases)) {
110
+ if (hasPath(parsed, ["features", alias])) {
111
+ removalPaths.push(["features", alias]);
112
+ }
113
+ }
114
+ for (const key of ["web_search_cached", "web_search_request"]) {
115
+ if (hasPath(parsed, ["features", key])) {
116
+ removalPaths.push(["features", key]);
117
+ }
118
+ }
119
+ const removalPlan = planConfigRemovals(updatePlan.outputText, removalPaths);
120
+ return combinePlans(updatePlan, removalPlan);
121
+ }
122
+ export const STATUS_LINE_LEGACY_IDS = Object.freeze(Object.keys(STATUS_LINE_ALIASES));
123
+ export const TERMINAL_TITLE_LEGACY_IDS = Object.freeze(Object.keys(TERMINAL_TITLE_ALIASES));
124
+ function parseTarget(text) {
125
+ try {
126
+ return parse(text);
127
+ }
128
+ catch (error) {
129
+ const message = error instanceof Error ? error.message : String(error);
130
+ throw new Error(`Invalid target TOML: ${message}`);
131
+ }
132
+ }
133
+ function migrateAliases(value, aliases) {
134
+ if (!Array.isArray(value) || value.some((item) => typeof item !== "string")) {
135
+ return undefined;
136
+ }
137
+ const migrated = [...new Set(value.map((item) => aliases[item] ?? item))];
138
+ return JSON.stringify(migrated) === JSON.stringify(value) ? undefined : migrated;
139
+ }
140
+ function legacyWebSearchMode(parsed) {
141
+ if (getPath(parsed, ["features", "web_search_cached"]) === true) {
142
+ return "cached";
143
+ }
144
+ if (getPath(parsed, ["features", "web_search_request"]) === true ||
145
+ getPath(parsed, ["features", "web_search"]) === true) {
146
+ return "live";
147
+ }
148
+ return "disabled";
149
+ }
150
+ function combinePlans(first, second) {
151
+ const operations = [...first.operations, ...second.operations];
152
+ return {
153
+ changed: first.changed || second.changed,
154
+ outputText: second.outputText,
155
+ operations,
156
+ };
157
+ }
158
+ function getPath(value, path) {
159
+ let current = value;
160
+ for (const segment of path) {
161
+ if (!isRecord(current) || !Object.prototype.hasOwnProperty.call(current, segment)) {
162
+ return undefined;
163
+ }
164
+ current = current[segment];
165
+ }
166
+ return current;
167
+ }
168
+ function hasPath(value, path) {
169
+ let current = value;
170
+ for (const segment of path) {
171
+ if (!isRecord(current) || !Object.prototype.hasOwnProperty.call(current, segment)) {
172
+ return false;
173
+ }
174
+ current = current[segment];
175
+ }
176
+ return true;
177
+ }
178
+ function isRecord(value) {
179
+ return typeof value === "object" && value !== null && !Array.isArray(value);
180
+ }
181
+ //# sourceMappingURL=codex-migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-migrations.js","sourceRoot":"","sources":["../src/codex-migrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { CODEX_TARGET } from "./codex-target.generated.js";
2
+ export interface ConfigIssue {
3
+ severity: "error" | "warning";
4
+ code: string;
5
+ path: string;
6
+ message: string;
7
+ }
8
+ export interface ConfigInspection {
9
+ valid: boolean;
10
+ clean: boolean;
11
+ issues: ConfigIssue[];
12
+ }
13
+ export declare function inspectCodexConfig(text: string, label: string, options: {
14
+ requireModel: boolean;
15
+ }): Promise<ConfigInspection>;
16
+ export declare function formatConfigIssues(label: string, inspection: ConfigInspection): string;
17
+ export { CODEX_TARGET };
@@ -0,0 +1,260 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { Ajv } from "ajv/dist/ajv.js";
3
+ import { parse } from "smol-toml";
4
+ import { STATUS_LINE_LEGACY_IDS, TERMINAL_TITLE_LEGACY_IDS } from "./codex-migrations.js";
5
+ import { CODEX_TARGET } from "./codex-target.generated.js";
6
+ import { defaultSchemaPath } from "./paths.js";
7
+ let validatorPromise;
8
+ export async function inspectCodexConfig(text, label, options) {
9
+ let parsed;
10
+ try {
11
+ parsed = parse(text);
12
+ }
13
+ catch (error) {
14
+ const message = error instanceof Error ? error.message : String(error);
15
+ return inspectionFromIssues([
16
+ {
17
+ severity: "error",
18
+ code: "invalid_toml",
19
+ path: "",
20
+ message: `Invalid ${label} TOML: ${message}`,
21
+ },
22
+ ]);
23
+ }
24
+ const issues = [];
25
+ const validator = await configValidator();
26
+ if (!validator(parsed)) {
27
+ issues.push(...(validator.errors ?? []).map(schemaIssue));
28
+ }
29
+ issues.push(...policyIssues(parsed, options));
30
+ return inspectionFromIssues(deduplicateIssues(issues));
31
+ }
32
+ export function formatConfigIssues(label, inspection) {
33
+ return inspection.issues
34
+ .map((issue) => {
35
+ const location = issue.path ? ` at ${issue.path}` : "";
36
+ return `${label}${location}: ${issue.message}`;
37
+ })
38
+ .join("\n");
39
+ }
40
+ export { CODEX_TARGET };
41
+ async function configValidator() {
42
+ validatorPromise ??= readFile(defaultSchemaPath(), "utf8").then((text) => {
43
+ const schema = JSON.parse(text);
44
+ const ajv = new Ajv({ allErrors: true, strict: false, validateFormats: false });
45
+ return ajv.compile(schema);
46
+ });
47
+ return validatorPromise;
48
+ }
49
+ function policyIssues(parsed, options) {
50
+ const issues = [];
51
+ const modelValue = getPath(parsed, ["model"]);
52
+ const model = typeof modelValue === "string"
53
+ ? CODEX_TARGET.models.find((candidate) => candidate.id === modelValue)
54
+ : undefined;
55
+ if (modelValue === undefined && options.requireModel) {
56
+ issues.push({
57
+ severity: "error",
58
+ code: "model_required",
59
+ path: "model",
60
+ message: `A GPT-5.6 model is required; use ${CODEX_TARGET.defaultModel}.`,
61
+ });
62
+ }
63
+ else if (modelValue !== undefined && !model) {
64
+ issues.push({
65
+ severity: "error",
66
+ code: "unsupported_model",
67
+ path: "model",
68
+ message: `Only ${CODEX_TARGET.models.map((candidate) => candidate.id).join(", ")} are supported.`,
69
+ });
70
+ }
71
+ if (model) {
72
+ for (const path of [["model_reasoning_effort"], ["plan_mode_reasoning_effort"]]) {
73
+ const effort = getPath(parsed, path);
74
+ if (typeof effort === "string" && !model.reasoningEfforts.includes(effort)) {
75
+ issues.push({
76
+ severity: "error",
77
+ code: "unsupported_reasoning_effort",
78
+ path: path.join("."),
79
+ message: `${model.id} supports reasoning efforts: ${model.reasoningEfforts.join(", ")}.`,
80
+ });
81
+ }
82
+ }
83
+ const serviceTier = getPath(parsed, ["service_tier"]);
84
+ if (typeof serviceTier === "string") {
85
+ const canonicalTier = serviceTier === "fast" ? "priority" : serviceTier;
86
+ if (canonicalTier !== "default" && !model.serviceTiers.includes(canonicalTier)) {
87
+ issues.push({
88
+ severity: "error",
89
+ code: "unsupported_service_tier",
90
+ path: "service_tier",
91
+ message: `${model.id} supports service tiers: default, ${model.serviceTiers.join(", ")} (fast is an alias for priority).`,
92
+ });
93
+ }
94
+ }
95
+ }
96
+ if (hasPath(parsed, ["personality"]) && !model?.supportsPersonality) {
97
+ issues.push({
98
+ severity: "warning",
99
+ code: "unsupported_personality",
100
+ path: "personality",
101
+ message: "GPT-5.6 models use model-owned personality instructions and ignore this selector.",
102
+ });
103
+ }
104
+ if (hasPath(parsed, ["sandbox_mode"])) {
105
+ issues.push({
106
+ severity: "warning",
107
+ code: "legacy_sandbox_mode",
108
+ path: "sandbox_mode",
109
+ message: "Use the built-in default_permissions profile instead.",
110
+ });
111
+ }
112
+ if (hasPath(parsed, ["experimental_use_unified_exec_tool"])) {
113
+ issues.push({
114
+ severity: "warning",
115
+ code: "legacy_feature_alias",
116
+ path: "experimental_use_unified_exec_tool",
117
+ message: "Use features.unified_exec instead of this legacy top-level toggle.",
118
+ });
119
+ }
120
+ if (hasPath(parsed, ["profile"])) {
121
+ issues.push({
122
+ severity: "error",
123
+ code: "legacy_profile_selector",
124
+ path: "profile",
125
+ message: "Inline profile selection is no longer supported; use `codex --profile <name>` with `$CODEX_HOME/<name>.config.toml`.",
126
+ });
127
+ }
128
+ const legacyProfiles = getPath(parsed, ["profiles"]);
129
+ if (isRecord(legacyProfiles) && Object.keys(legacyProfiles).length > 0) {
130
+ issues.push({
131
+ severity: "warning",
132
+ code: "legacy_profiles",
133
+ path: "profiles",
134
+ message: "Inline profile tables are no longer consumed; move each profile to `$CODEX_HOME/<name>.config.toml`.",
135
+ });
136
+ }
137
+ for (const [alias, canonical] of Object.entries(CODEX_TARGET.legacyFeatureAliases)) {
138
+ if (!hasPath(parsed, ["features", alias])) {
139
+ continue;
140
+ }
141
+ const message = CODEX_TARGET.removedFeatureKeys.includes(canonical)
142
+ ? "This legacy alias maps to a removed feature and should be deleted."
143
+ : alias === "web_search"
144
+ ? "Use the top-level web_search mode instead of this legacy feature alias."
145
+ : `Use features.${canonical} instead of this legacy feature alias.`;
146
+ issues.push({
147
+ severity: "warning",
148
+ code: "legacy_feature_alias",
149
+ path: `features.${alias}`,
150
+ message,
151
+ });
152
+ }
153
+ for (const key of CODEX_TARGET.removedFeatureKeys) {
154
+ if (hasPath(parsed, ["features", key])) {
155
+ issues.push({
156
+ severity: "warning",
157
+ code: "removed_feature",
158
+ path: `features.${key}`,
159
+ message: "This feature flag is a removed compatibility no-op.",
160
+ });
161
+ }
162
+ }
163
+ for (const key of CODEX_TARGET.retiredFeatureKeys) {
164
+ if (hasPath(parsed, ["features", key])) {
165
+ issues.push({
166
+ severity: "warning",
167
+ code: "retired_feature",
168
+ path: `features.${key}`,
169
+ message: "This historical feature flag is no longer recognized by the targeted Codex source.",
170
+ });
171
+ }
172
+ }
173
+ for (const key of CODEX_TARGET.deprecatedFeatureKeys) {
174
+ if (hasPath(parsed, ["features", key])) {
175
+ issues.push({
176
+ severity: "warning",
177
+ code: "deprecated_feature",
178
+ path: `features.${key}`,
179
+ message: "This feature flag is deprecated in the targeted Codex source.",
180
+ });
181
+ }
182
+ }
183
+ appendLegacyIdIssues(issues, parsed, ["tui", "status_line"], STATUS_LINE_LEGACY_IDS);
184
+ appendLegacyIdIssues(issues, parsed, ["tui", "terminal_title"], TERMINAL_TITLE_LEGACY_IDS);
185
+ return issues;
186
+ }
187
+ function appendLegacyIdIssues(issues, parsed, path, legacyIds) {
188
+ const value = getPath(parsed, path);
189
+ if (Array.isArray(value) &&
190
+ value.some((item) => typeof item === "string" && legacyIds.includes(item))) {
191
+ issues.push({
192
+ severity: "warning",
193
+ code: "legacy_tui_id",
194
+ path: path.join("."),
195
+ message: "Use the current canonical TUI item identifiers.",
196
+ });
197
+ }
198
+ }
199
+ function schemaIssue(error) {
200
+ const path = jsonPointerToPath(error.instancePath);
201
+ const unknownProperty = error.keyword === "additionalProperties" &&
202
+ typeof error.params.additionalProperty === "string"
203
+ ? error.params.additionalProperty
204
+ : undefined;
205
+ return {
206
+ severity: "error",
207
+ code: `schema_${error.keyword}`,
208
+ path: [path, unknownProperty].filter(Boolean).join("."),
209
+ message: error.message ?? "Does not match the Codex configuration schema.",
210
+ };
211
+ }
212
+ function jsonPointerToPath(pointer) {
213
+ return pointer
214
+ .split("/")
215
+ .slice(1)
216
+ .map((segment) => segment.replaceAll("~1", "/").replaceAll("~0", "~"))
217
+ .join(".");
218
+ }
219
+ function inspectionFromIssues(issues) {
220
+ return {
221
+ valid: issues.every((issue) => issue.severity !== "error"),
222
+ clean: issues.length === 0,
223
+ issues,
224
+ };
225
+ }
226
+ function deduplicateIssues(issues) {
227
+ const seen = new Set();
228
+ return issues.filter((issue) => {
229
+ const key = `${issue.code}\u0000${issue.path}\u0000${issue.message}`;
230
+ if (seen.has(key)) {
231
+ return false;
232
+ }
233
+ seen.add(key);
234
+ return true;
235
+ });
236
+ }
237
+ function getPath(value, path) {
238
+ let current = value;
239
+ for (const segment of path) {
240
+ if (!isRecord(current) || !Object.prototype.hasOwnProperty.call(current, segment)) {
241
+ return undefined;
242
+ }
243
+ current = current[segment];
244
+ }
245
+ return current;
246
+ }
247
+ function hasPath(value, path) {
248
+ let current = value;
249
+ for (const segment of path) {
250
+ if (!isRecord(current) || !Object.prototype.hasOwnProperty.call(current, segment)) {
251
+ return false;
252
+ }
253
+ current = current[segment];
254
+ }
255
+ return true;
256
+ }
257
+ function isRecord(value) {
258
+ return typeof value === "object" && value !== null && !Array.isArray(value);
259
+ }
260
+ //# sourceMappingURL=codex-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-policy.js","sourceRoot":"","sources":["../src/codex-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAA2C,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAe/C,IAAI,gBAAuD,CAAC;AAE5D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,KAAa,EACb,OAAkC;IAElC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,oBAAoB,CAAC;YAC1B;gBACE,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,EAAE;gBACR,OAAO,EAAE,WAAW,KAAK,UAAU,OAAO,EAAE;aAC7C;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,MAAM,eAAe,EAAE,CAAC;IAC1C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9C,OAAO,oBAAoB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,UAA4B;IAC5E,OAAO,UAAU,CAAC,MAAM;SACrB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,GAAG,KAAK,GAAG,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;IACjD,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,KAAK,UAAU,eAAe;IAC5B,gBAAgB,KAAK,QAAQ,CAAC,iBAAiB,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACvE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAW,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;QAChF,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,YAAY,CAAC,MAAe,EAAE,OAAkC;IACvE,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9C,MAAM,KAAK,GACT,OAAO,UAAU,KAAK,QAAQ;QAC5B,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,UAAU,CAAC;QACtE,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,oCAAoC,YAAY,CAAC,YAAY,GAAG;SAC1E,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,QAAQ,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB;SAClG,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,wBAAwB,CAAC,EAAE,CAAC,4BAA4B,CAAC,CAAC,EAAE,CAAC;YAChF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACrC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAe,CAAC,EAAE,CAAC;gBACpF,MAAM,CAAC,IAAI,CAAC;oBACV,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,8BAA8B;oBACpC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;oBACpB,OAAO,EAAE,GAAG,KAAK,CAAC,EAAE,gCAAgC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;iBACzF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;QACtD,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,aAAa,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;YACxE,IAAI,aAAa,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAsB,CAAC,EAAE,CAAC;gBACxF,MAAM,CAAC,IAAI,CAAC;oBACV,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,0BAA0B;oBAChC,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,GAAG,KAAK,CAAC,EAAE,qCAAqC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAmC;iBAC1H,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,mBAAmB,EAAE,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,yBAAyB;YAC/B,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,mFAAmF;SAC7F,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,qBAAqB;YAC3B,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,uDAAuD;SACjE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,oCAAoC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE,oCAAoC;YAC1C,OAAO,EAAE,oEAAoE;SAC9E,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,yBAAyB;YAC/B,IAAI,EAAE,SAAS;YACf,OAAO,EACL,sHAAsH;SACzH,CAAC,CAAC;IACL,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACrD,IAAI,QAAQ,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,UAAU;YAChB,OAAO,EACL,sGAAsG;SACzG,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACnF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YAC1C,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAkB,CAAC;YAC1E,CAAC,CAAC,oEAAoE;YACtE,CAAC,CAAC,KAAK,KAAK,YAAY;gBACtB,CAAC,CAAC,yEAAyE;gBAC3E,CAAC,CAAC,gBAAgB,SAAS,wCAAwC,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE,YAAY,KAAK,EAAE;YACzB,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAClD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,YAAY,GAAG,EAAE;gBACvB,OAAO,EAAE,qDAAqD;aAC/D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAClD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,YAAY,GAAG,EAAE;gBACvB,OAAO,EAAE,oFAAoF;aAC9F,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,qBAAqB,EAAE,CAAC;QACrD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,YAAY,GAAG,EAAE;gBACvB,OAAO,EAAE,+DAA+D;aACzE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,sBAAsB,CAAC,CAAC;IACrF,oBAAoB,CAClB,MAAM,EACN,MAAM,EACN,CAAC,KAAK,EAAE,gBAAgB,CAAC,EACzB,yBAAyB,CAC1B,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAC3B,MAAqB,EACrB,MAAe,EACf,IAAc,EACd,SAA4B;IAE5B,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACpC,IACE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAC1E,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACpB,OAAO,EAAE,iDAAiD;SAC3D,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAkB;IACrC,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACnD,MAAM,eAAe,GACnB,KAAK,CAAC,OAAO,KAAK,sBAAsB;QACxC,OAAO,KAAK,CAAC,MAAM,CAAC,kBAAkB,KAAK,QAAQ;QACjD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB;QACjC,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,UAAU,KAAK,CAAC,OAAO,EAAE;QAC/B,IAAI,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACvD,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,gDAAgD;KAC3E,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe;IACxC,OAAO,OAAO;SACX,KAAK,CAAC,GAAG,CAAC;SACV,KAAK,CAAC,CAAC,CAAC;SACR,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SACrE,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAqB;IACjD,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC;QAC1D,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAqB;IAC9C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,OAAO,EAAE,CAAC;QACrE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,OAAO,CAAC,KAAc,EAAE,IAAc;IAC7C,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;YAClF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,OAAO,CAAC,KAAc,EAAE,IAAc;IAC7C,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;YAClF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}