@usabledev/usable-chat 1.183.0 → 1.185.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.
Files changed (2) hide show
  1. package/cli.js +54 -16
  2. package/package.json +1 -1
package/cli.js CHANGED
@@ -93365,6 +93365,8 @@ var init_env2 = __esm({
93365
93365
  GEMINI_IMAGE_GEN_API_KEY: external_exports.string().min(1).optional(),
93366
93366
  // OpenAI API Configuration (for image generation via gpt-image-2)
93367
93367
  OPENAI_IMAGE_GEN_API_KEY: external_exports.string().min(1).optional(),
93368
+ // OpenAI Realtime API (interactive talk mode; server-side only)
93369
+ OPENAI_API_KEY: external_exports.string().min(1).optional(),
93368
93370
  // Flowcore Configuration
93369
93371
  FLOWCORE_TENANT: external_exports.string().min(1),
93370
93372
  FLOWCORE_DATACORE: external_exports.string().min(1),
@@ -93372,6 +93374,10 @@ var init_env2 = __esm({
93372
93374
  FLOWCORE_WEBHOOK_API_KEY: external_exports.string().min(1),
93373
93375
  FLOWCORE_API_KEY: external_exports.string().min(1).optional(),
93374
93376
  FLOWCORE_TRANSFORMER_SECRET: external_exports.string().min(1).default("1234"),
93377
+ FLOWCORE_PROVISION_PATHWAY: external_exports.string().transform((val) => val === "true").default("false"),
93378
+ FLOWCORE_PATHWAY_NAME: external_exports.string().min(1).optional(),
93379
+ FLOWCORE_PATHWAY_ENDPOINT_URL: external_exports.string().url().optional(),
93380
+ FLOWCORE_DATA_CORE_DELETE_PROTECTION: external_exports.string().transform((val) => val !== "false").default("true"),
93375
93381
  DATABASE_URL: external_exports.string().url(),
93376
93382
  // Feature Flags
93377
93383
  ENABLE_SANDBOXES: external_exports.string().transform((val) => val === "true").default("false"),
@@ -93474,6 +93480,7 @@ var init_env2 = __esm({
93474
93480
  GEMINI_IMAGE_GEN_API_KEY: process.env.GEMINI_IMAGE_GEN_API_KEY,
93475
93481
  // OpenAI API Configuration (for image generation via gpt-image-2)
93476
93482
  OPENAI_IMAGE_GEN_API_KEY: process.env.OPENAI_IMAGE_GEN_API_KEY,
93483
+ OPENAI_API_KEY: process.env.OPENAI_API_KEY,
93477
93484
  // Flowcore Configuration
93478
93485
  FLOWCORE_TENANT: process.env.FLOWCORE_TENANT,
93479
93486
  FLOWCORE_DATACORE: process.env.FLOWCORE_DATACORE,
@@ -93481,6 +93488,10 @@ var init_env2 = __esm({
93481
93488
  FLOWCORE_WEBHOOK_API_KEY: process.env.FLOWCORE_WEBHOOK_API_KEY,
93482
93489
  FLOWCORE_API_KEY: process.env.FLOWCORE_API_KEY,
93483
93490
  FLOWCORE_TRANSFORMER_SECRET: process.env.FLOWCORE_TRANSFORMER_SECRET,
93491
+ FLOWCORE_PROVISION_PATHWAY: process.env.FLOWCORE_PROVISION_PATHWAY,
93492
+ FLOWCORE_PATHWAY_NAME: process.env.FLOWCORE_PATHWAY_NAME,
93493
+ FLOWCORE_PATHWAY_ENDPOINT_URL: process.env.FLOWCORE_PATHWAY_ENDPOINT_URL,
93494
+ FLOWCORE_DATA_CORE_DELETE_PROTECTION: process.env.FLOWCORE_DATA_CORE_DELETE_PROTECTION,
93484
93495
  DATABASE_URL: process.env.DATABASE_URL,
93485
93496
  // Feature Flags
93486
93497
  ENABLE_SANDBOXES: process.env.ENABLE_SANDBOXES,
@@ -93597,13 +93608,22 @@ var init_config = __esm({
93597
93608
  apiKey: env.OPENAI_IMAGE_GEN_API_KEY,
93598
93609
  apiUrl: "https://api.openai.com/v1/images/generations"
93599
93610
  },
93611
+ talkMode: {
93612
+ // Prefer a dedicated Realtime key, while reusing the existing server-side
93613
+ // OpenAI project key when deployments already provide image generation.
93614
+ openaiApiKey: env.OPENAI_API_KEY ?? env.OPENAI_IMAGE_GEN_API_KEY
93615
+ },
93600
93616
  flowcore: {
93601
93617
  tenant: env.FLOWCORE_TENANT,
93602
93618
  dataCore: env.FLOWCORE_DATACORE,
93603
93619
  webhookBaseUrl: env.FLOWCORE_WEBHOOK_BASE_URL,
93604
93620
  apiKey: env.FLOWCORE_WEBHOOK_API_KEY,
93605
93621
  platformApiKey: env.FLOWCORE_API_KEY,
93606
- webhookSecret: env.FLOWCORE_TRANSFORMER_SECRET
93622
+ webhookSecret: env.FLOWCORE_TRANSFORMER_SECRET,
93623
+ provisionPathway: env.FLOWCORE_PROVISION_PATHWAY,
93624
+ pathwayName: env.FLOWCORE_PATHWAY_NAME,
93625
+ pathwayEndpointUrl: env.FLOWCORE_PATHWAY_ENDPOINT_URL,
93626
+ dataCoreDeleteProtection: env.FLOWCORE_DATA_CORE_DELETE_PROTECTION
93607
93627
  },
93608
93628
  database: {
93609
93629
  url: env.DATABASE_URL
@@ -215283,23 +215303,37 @@ function getRedis() {
215283
215303
  }
215284
215304
  }
215285
215305
  async function isRedisAvailable() {
215286
- if (redisAvailable !== null) return redisAvailable;
215287
- const redis = getRedis();
215288
- if (!redis) {
215289
- redisAvailable = false;
215290
- return false;
215291
- }
215306
+ const cacheTtl = redisAvailable ? REDIS_SUCCESS_RECHECK_MS : REDIS_FAILURE_RETRY_MS;
215307
+ if (redisAvailable !== null && Date.now() - redisAvailabilityCheckedAt < cacheTtl) {
215308
+ return redisAvailable;
215309
+ }
215310
+ if (redisAvailabilityProbe) return redisAvailabilityProbe;
215311
+ redisAvailabilityProbe = (async () => {
215312
+ const redis = getRedis();
215313
+ if (!redis) {
215314
+ redisAvailable = false;
215315
+ redisAvailabilityCheckedAt = Date.now();
215316
+ return false;
215317
+ }
215318
+ try {
215319
+ await redis.ping();
215320
+ redisAvailable = true;
215321
+ redisAvailabilityCheckedAt = Date.now();
215322
+ return true;
215323
+ } catch {
215324
+ logger3.warn("Redis ping failed; background features are temporarily unavailable");
215325
+ redisAvailable = false;
215326
+ redisAvailabilityCheckedAt = Date.now();
215327
+ return false;
215328
+ }
215329
+ })();
215292
215330
  try {
215293
- await redis.ping();
215294
- redisAvailable = true;
215295
- return true;
215296
- } catch {
215297
- logger3.warn("Redis ping failed - falling back to direct streaming");
215298
- redisAvailable = false;
215299
- return false;
215331
+ return await redisAvailabilityProbe;
215332
+ } finally {
215333
+ redisAvailabilityProbe = null;
215300
215334
  }
215301
215335
  }
215302
- var logger3, redisConfigured, redisAvailable;
215336
+ var logger3, redisConfigured, redisAvailable, redisAvailabilityCheckedAt, redisAvailabilityProbe, REDIS_FAILURE_RETRY_MS, REDIS_SUCCESS_RECHECK_MS;
215303
215337
  var init_redis = __esm({
215304
215338
  "src/lib/redis/index.ts"() {
215305
215339
  "use strict";
@@ -215309,6 +215343,10 @@ var init_redis = __esm({
215309
215343
  logger3 = createLogger("redis");
215310
215344
  redisConfigured = false;
215311
215345
  redisAvailable = null;
215346
+ redisAvailabilityCheckedAt = 0;
215347
+ redisAvailabilityProbe = null;
215348
+ REDIS_FAILURE_RETRY_MS = 1e3;
215349
+ REDIS_SUCCESS_RECHECK_MS = 5e3;
215312
215350
  }
215313
215351
  });
215314
215352
 
@@ -311444,7 +311482,7 @@ init_tui_select();
311444
311482
  init_model_registry();
311445
311483
 
311446
311484
  // package.json
311447
- var version2 = "1.183.0";
311485
+ var version2 = "1.185.0";
311448
311486
 
311449
311487
  // src/adapters/cli/model-catalog.ts
311450
311488
  init_codex_auth();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usabledev/usable-chat",
3
- "version": "1.183.0",
3
+ "version": "1.185.0",
4
4
  "description": "usable-chat — terminal harness for usable-chat (headless + TUI)",
5
5
  "type": "module",
6
6
  "bin": {