@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/dist/index.d.ts +10 -0
- package/dist/index.js +30 -5
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +29 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengeni/config",
|
|
3
|
-
"version": "0.7.
|
|
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.
|
|
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
|
|
337
|
-
//
|
|
338
|
-
//
|
|
339
|
-
//
|
|
340
|
-
// turn is byte-for-byte unchanged until 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,
|