@opengeni/config 0.7.0 → 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 +11 -0
- package/dist/index.js +36 -6
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +38 -6
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"),
|
|
@@ -211,11 +215,18 @@ const SettingsSchema = z.object({
|
|
|
211
215
|
publicBaseUrl: z.string().url().optional(),
|
|
212
216
|
// Base URL for the bring-your-own-compute agent release assets the get.<domain>
|
|
213
217
|
// install routes redirect to. Defaults to this repo's GitHub Releases. The route
|
|
214
|
-
// appends `/download/agent-v<ver>/<asset
|
|
218
|
+
// appends `/download/agent-v<ver>/<asset>`.
|
|
215
219
|
agentReleasesBaseUrl: z
|
|
216
220
|
.string()
|
|
217
221
|
.url()
|
|
218
222
|
.default("https://github.com/Cloudgeni-ai/opengeni/releases"),
|
|
223
|
+
// Explicit operator-controlled promotion pointer for `/agent/latest/*`.
|
|
224
|
+
// Versioned agent releases are immutable; changing this setting promotes or
|
|
225
|
+
// rolls back the stable channel without moving or deleting a provider tag.
|
|
226
|
+
agentStableVersion: z
|
|
227
|
+
.string()
|
|
228
|
+
.regex(/^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)$/u)
|
|
229
|
+
.default("0.1.8"),
|
|
219
230
|
productAccessMode: ProductAccessMode.default("local"),
|
|
220
231
|
billingMode: BillingMode.default("disabled"),
|
|
221
232
|
entitlementsMode: EntitlementsMode.default("none"),
|
|
@@ -325,12 +336,17 @@ const SettingsSchema = z.object({
|
|
|
325
336
|
// subscription is injected as a synthetic "codex-subscription" registry
|
|
326
337
|
// provider whose models route through the ChatGPT backend (@opengeni/codex).
|
|
327
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
|
|
328
343
|
codexProductSku: z.string().optional(), // OPENGENI_CODEX_PRODUCT_SKU (X-OpenAI-Product-Sku, apps only)
|
|
329
|
-
// Progressive
|
|
330
|
-
//
|
|
331
|
-
//
|
|
332
|
-
//
|
|
333
|
-
// 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
|
|
334
350
|
codexToolSearchEnabled: EnvBoolean.default(false),
|
|
335
351
|
// credential allocator atomic, workspace-local credential allocation. Default OFF is a
|
|
336
352
|
// deliberate rolling-deploy fence: migrate + roll every worker first, then
|
|
@@ -743,6 +759,10 @@ const SettingsSchema = z.object({
|
|
|
743
759
|
documentEmbeddingDimensions: z.coerce.number().int().positive().default(3072),
|
|
744
760
|
documentEmbeddingApiKey: z.string().optional(),
|
|
745
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(),
|
|
746
766
|
gitAuthorName: z.string().optional(),
|
|
747
767
|
gitAuthorEmail: z.string().optional(),
|
|
748
768
|
gitCommitterName: z.string().optional(),
|
|
@@ -1294,6 +1314,7 @@ export function getSettings(): Settings {
|
|
|
1294
1314
|
databaseUrl: optional("OPENGENI_DATABASE_URL"),
|
|
1295
1315
|
dbSchema: optional("OPENGENI_DB_SCHEMA"),
|
|
1296
1316
|
rlsStrategy: optional("OPENGENI_RLS_STRATEGY"),
|
|
1317
|
+
runtimeDatabaseRole: optional("OPENGENI_RUNTIME_DATABASE_ROLE"),
|
|
1297
1318
|
natsUrl: optional("OPENGENI_NATS_URL"),
|
|
1298
1319
|
temporalHost: optional("OPENGENI_TEMPORAL_HOST"),
|
|
1299
1320
|
temporalNamespace: optional("OPENGENI_TEMPORAL_NAMESPACE"),
|
|
@@ -1319,6 +1340,7 @@ export function getSettings(): Settings {
|
|
|
1319
1340
|
optional("OPENGENI_OTEL_EXPORTER_OTLP_HEADERS") ?? optional("OTEL_EXPORTER_OTLP_HEADERS"),
|
|
1320
1341
|
publicBaseUrl: optional("OPENGENI_PUBLIC_BASE_URL"),
|
|
1321
1342
|
agentReleasesBaseUrl: optional("OPENGENI_AGENT_RELEASES_BASE_URL"),
|
|
1343
|
+
agentStableVersion: optional("OPENGENI_AGENT_STABLE_VERSION"),
|
|
1322
1344
|
productAccessMode: optional("OPENGENI_PRODUCT_ACCESS_MODE"),
|
|
1323
1345
|
billingMode: optional("OPENGENI_BILLING_MODE"),
|
|
1324
1346
|
entitlementsMode: optional("OPENGENI_ENTITLEMENTS_MODE"),
|
|
@@ -1366,6 +1388,7 @@ export function getSettings(): Settings {
|
|
|
1366
1388
|
modelPricingJson: optional("OPENGENI_MODEL_PRICING_JSON"),
|
|
1367
1389
|
modelProvidersJson: optional("OPENGENI_MODEL_PROVIDERS_JSON"),
|
|
1368
1390
|
codexSubscriptionEnabled: optional("OPENGENI_CODEX_SUBSCRIPTION_ENABLED"),
|
|
1391
|
+
codexConnectedAppsEnabled: optional("OPENGENI_CODEX_CONNECTED_APPS_ENABLED"),
|
|
1369
1392
|
codexToolSearchEnabled: optional("OPENGENI_CODEX_TOOL_SEARCH_ENABLED"),
|
|
1370
1393
|
codexCredentialLeasingEnabled: optional("OPENGENI_CODEX_CREDENTIAL_LEASING_ENABLED"),
|
|
1371
1394
|
codexFleetPolicyShadowEnabled: optional("OPENGENI_CODEX_FLEET_POLICY_SHADOW_ENABLED"),
|
|
@@ -1506,6 +1529,10 @@ export function getSettings(): Settings {
|
|
|
1506
1529
|
documentEmbeddingDimensions: optional("OPENGENI_DOCUMENT_EMBEDDING_DIMENSIONS"),
|
|
1507
1530
|
documentEmbeddingApiKey: optional("OPENGENI_DOCUMENT_EMBEDDING_API_KEY"),
|
|
1508
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"),
|
|
1509
1536
|
gitAuthorName: optional("OPENGENI_GIT_AUTHOR_NAME"),
|
|
1510
1537
|
gitAuthorEmail: optional("OPENGENI_GIT_AUTHOR_EMAIL"),
|
|
1511
1538
|
gitCommitterName: optional("OPENGENI_GIT_COMMITTER_NAME"),
|
|
@@ -2022,6 +2049,11 @@ export function withCodexCatalogProvider(settings: Settings): Settings {
|
|
|
2022
2049
|
upstreamModelId: slug,
|
|
2023
2050
|
label: slug,
|
|
2024
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,
|
|
2025
2057
|
contextWindowTokens: CODEX_MODEL_CONTEXT_WINDOW_TOKENS,
|
|
2026
2058
|
effectiveContextWindowTokens: CODEX_MODEL_EFFECTIVE_CONTEXT_WINDOW_TOKENS,
|
|
2027
2059
|
autoCompactTokenLimit: CODEX_MODEL_AUTO_COMPACT_TOKEN_LIMIT,
|