@opengeni/config 0.10.14 → 0.11.0

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.10.14",
3
+ "version": "0.11.0",
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.11",
37
- "@opengeni/contracts": "^0.38.3",
37
+ "@opengeni/contracts": "^0.39.0",
38
38
  "zod": "^4.2.1"
39
39
  },
40
40
  "engines": {
package/src/index.ts CHANGED
@@ -370,6 +370,35 @@ const SettingsSchema = z.object({
370
370
  .positive()
371
371
  .max(25 * 1024 * 1024)
372
372
  .default(25 * 1024 * 1024),
373
+ // Durable long-form capture uploads bounded chunks to object storage, then
374
+ // normalizes them into provider-safe segments. It is advertised only when
375
+ // object storage and the configured ffmpeg executable are both available.
376
+ voiceInputResumableEnabled: EnvBoolean.default(true),
377
+ voiceInputResumableMaxDurationSeconds: z.coerce
378
+ .number()
379
+ .int()
380
+ .positive()
381
+ .max(8 * 60 * 60)
382
+ .default(2 * 60 * 60),
383
+ voiceInputResumableMaxSizeBytes: z.coerce
384
+ .number()
385
+ .int()
386
+ .positive()
387
+ .max(512 * 1024 * 1024)
388
+ .default(512 * 1024 * 1024),
389
+ voiceInputResumableMaxChunkSizeBytes: z.coerce
390
+ .number()
391
+ .int()
392
+ .positive()
393
+ .max(25 * 1024 * 1024)
394
+ .default(8 * 1024 * 1024),
395
+ voiceInputResumableRetentionSeconds: z.coerce
396
+ .number()
397
+ .int()
398
+ .positive()
399
+ .max(7 * 24 * 60 * 60)
400
+ .default(24 * 60 * 60),
401
+ voiceInputFfmpegPath: z.string().trim().min(1).max(1024).default("ffmpeg"),
373
402
  // Preferred provider order (comma-separated ids). First configured+ready wins.
374
403
  // Codex subscription STT is preferred by default when subscription routing is
375
404
  // enabled; operators can put openai/azure-openai first explicitly.
@@ -415,9 +444,11 @@ const SettingsSchema = z.object({
415
444
  // flag non-mandatory selected MCP tools `defer_loading:true` (dropping their
416
445
  // schemas from model context) and add one client-executed tool_search tool
417
446
  // that BM25-discloses bounded matches. The mandatory OpenGeni tools stay
418
- // eager. Default OFF a codex turn is byte-for-byte unchanged until enabled.
447
+ // eager. Default ON so selected connector catalogues do not consume every
448
+ // Codex turn's context. Operators may explicitly disable it for emergency
449
+ // compatibility diagnosis.
419
450
  // OPENGENI_CODEX_TOOL_SEARCH_ENABLED
420
- codexToolSearchEnabled: EnvBoolean.default(false),
451
+ codexToolSearchEnabled: EnvBoolean.default(true),
421
452
  // credential allocator atomic, workspace-local credential allocation. Default OFF is a
422
453
  // deliberate rolling-deploy fence: migrate + roll every worker first, then
423
454
  // enable. Turning it off restores the legacy sticky selector without a schema
@@ -1778,6 +1809,18 @@ export function getSettings(): Settings {
1778
1809
  vercelAiGatewayApiKey: optional("OPENGENI_VERCEL_AI_GATEWAY_API_KEY"),
1779
1810
  voiceInputMaxDurationSeconds: optional("OPENGENI_VOICE_INPUT_MAX_DURATION_SECONDS"),
1780
1811
  voiceInputMaxSizeBytes: optional("OPENGENI_VOICE_INPUT_MAX_SIZE_BYTES"),
1812
+ voiceInputResumableEnabled: optional("OPENGENI_VOICE_INPUT_RESUMABLE_ENABLED"),
1813
+ voiceInputResumableMaxDurationSeconds: optional(
1814
+ "OPENGENI_VOICE_INPUT_RESUMABLE_MAX_DURATION_SECONDS",
1815
+ ),
1816
+ voiceInputResumableMaxSizeBytes: optional("OPENGENI_VOICE_INPUT_RESUMABLE_MAX_SIZE_BYTES"),
1817
+ voiceInputResumableMaxChunkSizeBytes: optional(
1818
+ "OPENGENI_VOICE_INPUT_RESUMABLE_MAX_CHUNK_SIZE_BYTES",
1819
+ ),
1820
+ voiceInputResumableRetentionSeconds: optional(
1821
+ "OPENGENI_VOICE_INPUT_RESUMABLE_RETENTION_SECONDS",
1822
+ ),
1823
+ voiceInputFfmpegPath: optional("OPENGENI_VOICE_INPUT_FFMPEG_PATH"),
1781
1824
  voiceInputProviderOrder: optional("OPENGENI_VOICE_INPUT_PROVIDER_ORDER"),
1782
1825
  voiceInputOpenaiEnabled: optional("OPENGENI_VOICE_INPUT_OPENAI_ENABLED"),
1783
1826
  voiceInputOpenaiApiKey: optional("OPENGENI_VOICE_INPUT_OPENAI_API_KEY"),