@opengeni/config 0.6.9 → 0.7.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeni/config",
3
- "version": "0.6.9",
3
+ "version": "0.7.1",
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.18.0",
37
+ "@opengeni/contracts": "^0.19.0",
38
38
  "zod": "^4.2.1"
39
39
  },
40
40
  "engines": {
package/src/index.ts CHANGED
@@ -3,6 +3,7 @@ import {
3
3
  CAPABILITY_DESCRIPTORS,
4
4
  Entitlements,
5
5
  EntitlementsMode,
6
+ MAX_NESTED_AGENT_DEPTH,
6
7
  ProductAccessMode,
7
8
  ReasoningEffort,
8
9
  SandboxBackend,
@@ -210,11 +211,18 @@ const SettingsSchema = z.object({
210
211
  publicBaseUrl: z.string().url().optional(),
211
212
  // Base URL for the bring-your-own-compute agent release assets the get.<domain>
212
213
  // install routes redirect to. Defaults to this repo's GitHub Releases. The route
213
- // appends `/download/agent-v<ver>/<asset>` (or `/latest/download/<asset>`).
214
+ // appends `/download/agent-v<ver>/<asset>`.
214
215
  agentReleasesBaseUrl: z
215
216
  .string()
216
217
  .url()
217
218
  .default("https://github.com/Cloudgeni-ai/opengeni/releases"),
219
+ // Explicit operator-controlled promotion pointer for `/agent/latest/*`.
220
+ // Versioned agent releases are immutable; changing this setting promotes or
221
+ // rolls back the stable channel without moving or deleting a provider tag.
222
+ agentStableVersion: z
223
+ .string()
224
+ .regex(/^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)$/u)
225
+ .default("0.1.8"),
218
226
  productAccessMode: ProductAccessMode.default("local"),
219
227
  billingMode: BillingMode.default("disabled"),
220
228
  entitlementsMode: EntitlementsMode.default("none"),
@@ -249,6 +257,9 @@ const SettingsSchema = z.object({
249
257
  integrationsStateSecret: z.string().optional(),
250
258
  integrationsAllowPrivateNetworkTargets: EnvBoolean.default(false),
251
259
  integrationsOauthClientsJson: z.string().default("{}"),
260
+ // Undefined is meaningful: the migration boundary persists the product
261
+ // default of 3 when no deployment override is supplied.
262
+ maxNestedAgentDepth: z.coerce.number().int().nonnegative().max(MAX_NESTED_AGENT_DEPTH).optional(),
252
263
  // Session goal guard rails. Goals are designed for runs that legitimately
253
264
  // span days, so length is bounded by pathology detection (no-progress
254
265
  // streaks, budget exhaustion), never by count. goalMaxAutoContinuations is
@@ -333,6 +344,14 @@ const SettingsSchema = z.object({
333
344
  // enable. Turning it off restores the legacy sticky selector without a schema
334
345
  // rollback; the additive lease table/cursor columns become inert.
335
346
  codexCredentialLeasingEnabled: EnvBoolean.default(false),
347
+ // Decision-observability fence. When enabled, the worker emits one
348
+ // bounded, metadata-only adaptive-policy replay record alongside the unchanged
349
+ // sticky-sharded decision. It never changes placement/admission/failover.
350
+ codexFleetPolicyShadowEnabled: EnvBoolean.default(false),
351
+ // Multi-account P3 (auto-rotation): an account is "near exhaustion" — ineligible to be
352
+ // rotated TO — when EITHER usage window (5h/weekly) is at/over this percent. Default 90 to
353
+ // match the UI danger flip (UsageBar danger at pct >= 90). OPENGENI_CODEX_ROTATION_NEAR_EXHAUSTION_PCT.
354
+ codexRotationNearExhaustionPct: z.coerce.number().int().min(1).max(100).default(90),
336
355
  openaiReasoningEffort: ReasoningEffort.default("low"),
337
356
  openaiAllowedReasoningEfforts: z.string().default("low,medium,high,xhigh"),
338
357
  openaiResponsesTransport: z.enum(["http", "websocket"]).default("http"),
@@ -1307,6 +1326,7 @@ export function getSettings(): Settings {
1307
1326
  optional("OPENGENI_OTEL_EXPORTER_OTLP_HEADERS") ?? optional("OTEL_EXPORTER_OTLP_HEADERS"),
1308
1327
  publicBaseUrl: optional("OPENGENI_PUBLIC_BASE_URL"),
1309
1328
  agentReleasesBaseUrl: optional("OPENGENI_AGENT_RELEASES_BASE_URL"),
1329
+ agentStableVersion: optional("OPENGENI_AGENT_STABLE_VERSION"),
1310
1330
  productAccessMode: optional("OPENGENI_PRODUCT_ACCESS_MODE"),
1311
1331
  billingMode: optional("OPENGENI_BILLING_MODE"),
1312
1332
  entitlementsMode: optional("OPENGENI_ENTITLEMENTS_MODE"),
@@ -1327,6 +1347,7 @@ export function getSettings(): Settings {
1327
1347
  "OPENGENI_INTEGRATIONS_ALLOW_PRIVATE_NETWORK_TARGETS",
1328
1348
  ),
1329
1349
  integrationsOauthClientsJson: optional("OPENGENI_INTEGRATIONS_OAUTH_CLIENTS_JSON"),
1350
+ maxNestedAgentDepth: optional("OPENGENI_MAX_NESTED_AGENT_DEPTH"),
1330
1351
  goalMaxAutoContinuations: optional("OPENGENI_GOAL_MAX_AUTO_CONTINUATIONS"),
1331
1352
  goalNoProgressLimit: optional("OPENGENI_GOAL_NO_PROGRESS_LIMIT"),
1332
1353
  agentMaxModelCallsPerTurn: optional("OPENGENI_AGENT_MAX_MODEL_CALLS_PER_TURN"),
@@ -1355,6 +1376,7 @@ export function getSettings(): Settings {
1355
1376
  codexSubscriptionEnabled: optional("OPENGENI_CODEX_SUBSCRIPTION_ENABLED"),
1356
1377
  codexToolSearchEnabled: optional("OPENGENI_CODEX_TOOL_SEARCH_ENABLED"),
1357
1378
  codexCredentialLeasingEnabled: optional("OPENGENI_CODEX_CREDENTIAL_LEASING_ENABLED"),
1379
+ codexFleetPolicyShadowEnabled: optional("OPENGENI_CODEX_FLEET_POLICY_SHADOW_ENABLED"),
1358
1380
  codexProductSku: optional("OPENGENI_CODEX_PRODUCT_SKU"),
1359
1381
  openaiReasoningEffort: optional("OPENGENI_OPENAI_REASONING_EFFORT"),
1360
1382
  openaiAllowedReasoningEfforts: optional("OPENGENI_OPENAI_ALLOWED_REASONING_EFFORTS"),