@opengeni/config 0.7.1 → 0.7.6

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeni/config",
3
- "version": "0.7.1",
3
+ "version": "0.7.6",
4
4
  "description": "OpenGeni runtime configuration: settings resolution, deployment knobs, and config validation shared across the server packages.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "@opengeni/codex": "^0.2.7",
37
- "@opengeni/contracts": "^0.19.0",
37
+ "@opengeni/contracts": "^0.19.4",
38
38
  "zod": "^4.2.1"
39
39
  },
40
40
  "engines": {
package/src/index.ts CHANGED
@@ -191,6 +191,10 @@ const SettingsSchema = z.object({
191
191
  // non-owner `opengeni_app` role. "scoped" = the embedded owner-role path (the
192
192
  // GUC is still emitted defensively, so the query path is identical).
193
193
  rlsStrategy: z.enum(["force", "scoped"]).default("force"),
194
+ // Exact PostgreSQL login identity required by the standalone FORCE-RLS
195
+ // startup/readiness assertion. Embedded `scoped` hosts own their role model
196
+ // and are deliberately not constrained to this name.
197
+ runtimeDatabaseRole: z.string().min(1).default("opengeni_app"),
194
198
  natsUrl: z.string().default("nats://127.0.0.1:4222"),
195
199
  temporalHost: z.string().default("127.0.0.1:7233"),
196
200
  temporalNamespace: z.string().default("default"),
@@ -332,12 +336,17 @@ const SettingsSchema = z.object({
332
336
  // subscription is injected as a synthetic "codex-subscription" registry
333
337
  // provider whose models route through the ChatGPT backend (@opengeni/codex).
334
338
  codexSubscriptionEnabled: EnvBoolean.default(false), // OPENGENI_CODEX_SUBSCRIPTION_ENABLED
339
+ // Expose the connected apps attached to a Codex subscription through the
340
+ // synthetic codex_apps MCP server. Independent from subscription routing so
341
+ // operators can use Codex models without exposing ChatGPT connectors.
342
+ codexConnectedAppsEnabled: EnvBoolean.default(false), // OPENGENI_CODEX_CONNECTED_APPS_ENABLED
335
343
  codexProductSku: z.string().optional(), // OPENGENI_CODEX_PRODUCT_SKU (X-OpenAI-Product-Sku, apps only)
336
- // Progressive connector disclosure (Codex-CLI-style tool_search): on a codex
337
- // turn, flag the ~217 codex_apps connector tools `defer_loading:true` (dropping
338
- // their schemas from model context) and add one client-executed tool_search
339
- // tool that BM25-discloses only the matching connectors. Default OFF a codex
340
- // turn is byte-for-byte unchanged until enabled. OPENGENI_CODEX_TOOL_SEARCH_ENABLED
344
+ // Progressive MCP disclosure (Codex-CLI-style tool_search): on a codex turn,
345
+ // flag non-mandatory selected MCP tools `defer_loading:true` (dropping their
346
+ // schemas from model context) and add one client-executed tool_search tool
347
+ // that BM25-discloses bounded matches. The mandatory OpenGeni tools stay
348
+ // eager. Default OFF — a codex turn is byte-for-byte unchanged until enabled.
349
+ // OPENGENI_CODEX_TOOL_SEARCH_ENABLED
341
350
  codexToolSearchEnabled: EnvBoolean.default(false),
342
351
  // credential allocator atomic, workspace-local credential allocation. Default OFF is a
343
352
  // deliberate rolling-deploy fence: migrate + roll every worker first, then
@@ -750,6 +759,10 @@ const SettingsSchema = z.object({
750
759
  documentEmbeddingDimensions: z.coerce.number().int().positive().default(3072),
751
760
  documentEmbeddingApiKey: z.string().optional(),
752
761
  documentEmbeddingBaseUrl: z.string().url().optional(),
762
+ documentCurationProvider: z.enum(["openai", "heuristic", "none"]).default("openai"),
763
+ documentCurationModel: z.string().min(1).default("gpt-4o-mini"),
764
+ documentCurationApiKey: z.string().optional(),
765
+ documentCurationBaseUrl: z.string().url().optional(),
753
766
  gitAuthorName: z.string().optional(),
754
767
  gitAuthorEmail: z.string().optional(),
755
768
  gitCommitterName: z.string().optional(),
@@ -1301,6 +1314,7 @@ export function getSettings(): Settings {
1301
1314
  databaseUrl: optional("OPENGENI_DATABASE_URL"),
1302
1315
  dbSchema: optional("OPENGENI_DB_SCHEMA"),
1303
1316
  rlsStrategy: optional("OPENGENI_RLS_STRATEGY"),
1317
+ runtimeDatabaseRole: optional("OPENGENI_RUNTIME_DATABASE_ROLE"),
1304
1318
  natsUrl: optional("OPENGENI_NATS_URL"),
1305
1319
  temporalHost: optional("OPENGENI_TEMPORAL_HOST"),
1306
1320
  temporalNamespace: optional("OPENGENI_TEMPORAL_NAMESPACE"),
@@ -1374,6 +1388,7 @@ export function getSettings(): Settings {
1374
1388
  modelPricingJson: optional("OPENGENI_MODEL_PRICING_JSON"),
1375
1389
  modelProvidersJson: optional("OPENGENI_MODEL_PROVIDERS_JSON"),
1376
1390
  codexSubscriptionEnabled: optional("OPENGENI_CODEX_SUBSCRIPTION_ENABLED"),
1391
+ codexConnectedAppsEnabled: optional("OPENGENI_CODEX_CONNECTED_APPS_ENABLED"),
1377
1392
  codexToolSearchEnabled: optional("OPENGENI_CODEX_TOOL_SEARCH_ENABLED"),
1378
1393
  codexCredentialLeasingEnabled: optional("OPENGENI_CODEX_CREDENTIAL_LEASING_ENABLED"),
1379
1394
  codexFleetPolicyShadowEnabled: optional("OPENGENI_CODEX_FLEET_POLICY_SHADOW_ENABLED"),
@@ -1514,6 +1529,10 @@ export function getSettings(): Settings {
1514
1529
  documentEmbeddingDimensions: optional("OPENGENI_DOCUMENT_EMBEDDING_DIMENSIONS"),
1515
1530
  documentEmbeddingApiKey: optional("OPENGENI_DOCUMENT_EMBEDDING_API_KEY"),
1516
1531
  documentEmbeddingBaseUrl: optional("OPENGENI_DOCUMENT_EMBEDDING_BASE_URL"),
1532
+ documentCurationProvider: optional("OPENGENI_DOCUMENT_CURATION_PROVIDER"),
1533
+ documentCurationModel: optional("OPENGENI_DOCUMENT_CURATION_MODEL"),
1534
+ documentCurationApiKey: optional("OPENGENI_DOCUMENT_CURATION_API_KEY"),
1535
+ documentCurationBaseUrl: optional("OPENGENI_DOCUMENT_CURATION_BASE_URL"),
1517
1536
  gitAuthorName: optional("OPENGENI_GIT_AUTHOR_NAME"),
1518
1537
  gitAuthorEmail: optional("OPENGENI_GIT_AUTHOR_EMAIL"),
1519
1538
  gitCommitterName: optional("OPENGENI_GIT_COMMITTER_NAME"),
@@ -2030,6 +2049,11 @@ export function withCodexCatalogProvider(settings: Settings): Settings {
2030
2049
  upstreamModelId: slug,
2031
2050
  label: slug,
2032
2051
  reasoningEffort: true,
2052
+ // The ChatGPT/Codex Responses backend accepts the native web_search
2053
+ // hosted tool (unlike hosted apply_patch/computer transports). Declaring
2054
+ // this here makes provider resolution truthful; the worker still applies
2055
+ // the durable session/turn policy gate before attaching it.
2056
+ hostedWebSearch: true,
2033
2057
  contextWindowTokens: CODEX_MODEL_CONTEXT_WINDOW_TOKENS,
2034
2058
  effectiveContextWindowTokens: CODEX_MODEL_EFFECTIVE_CONTEXT_WINDOW_TOKENS,
2035
2059
  autoCompactTokenLimit: CODEX_MODEL_AUTO_COMPACT_TOKEN_LIMIT,