@peopl-health/nexus 3.13.5 → 3.13.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.
@@ -8,15 +8,17 @@ const state = {
8
8
  anthropicClient: null,
9
9
  openaiClient: null,
10
10
  provider: null,
11
- variant: runtimeConfig.get('VARIANT')
11
+ variant: null
12
12
  };
13
13
 
14
14
  const setOpenAIProvider = (provider) => {
15
15
  state.provider = provider || null;
16
- state.variant = provider?.variant || runtimeConfig.get('VARIANT');
16
+ state.variant = provider?.variant || null;
17
17
  state.openaiClient = provider?.getClient?.() || provider?.client || null;
18
18
  };
19
19
 
20
+ const getProviderVariant = () => state.variant;
21
+
20
22
  const getOpenAIProvider = ({ instantiate = true, variant = state.variant } = {}) => {
21
23
  if (state.provider) return state.provider;
22
24
  if (!instantiate || !state.openaiClient) return null;
@@ -55,13 +57,13 @@ const _resetState = () => {
55
57
  state.anthropicClient = null;
56
58
  state.openaiClient = null;
57
59
  state.provider = null;
58
- state.variant = runtimeConfig.get('VARIANT');
60
+ state.variant = null;
59
61
  };
60
62
 
61
63
  module.exports = {
62
64
  get openaiClient() { return state.openaiClient; },
63
65
  get providerInstance() { return state.provider; },
64
- get providerVariant() { return state.variant; },
66
+ getProviderVariant,
65
67
  getAnthropicClient,
66
68
  setOpenAIProvider,
67
69
  getOpenAIProvider,
@@ -1,4 +1,5 @@
1
1
  const { Config_ID } = require('../config/airtableConfig');
2
+ const { getProviderVariant } = require('../config/llmConfig');
2
3
 
3
4
  const { logger } = require('../utils/logger');
4
5
 
@@ -99,7 +100,7 @@ const listAssistantController = async (req, res) => {
99
100
  try {
100
101
  const nodeEnv = process.env.NODE_ENV;
101
102
  const airtableStatus = nodeEnv === 'production' ? 'prod' : nodeEnv === 'development' ? 'dev' : nodeEnv;
102
- const assistants = await getRecordByFilter(Config_ID, process.env.VARIANT, '1', airtableStatus);
103
+ const assistants = await getRecordByFilter(Config_ID, getProviderVariant(), '1', airtableStatus);
103
104
  return res.status(200).json({ success: true, assistants });
104
105
  } catch (error) {
105
106
  logger.error('[AssistantController] List error', { error: error.message });
@@ -1,8 +1,6 @@
1
1
  const mongoose = require('mongoose');
2
2
 
3
- const runtimeConfig = require('../config/runtimeConfig');
4
-
5
- const llmConfig = require('../config/llmConfig');
3
+ const { getProviderVariant, getOpenAIProvider } = require('../config/llmConfig');
6
4
  const { Historial_Clinico_ID, Monitoreo_ID } = require('../config/airtableConfig');
7
5
 
8
6
  const { logger } = require('../utils/logger');
@@ -499,7 +497,7 @@ const getOpenAIThreadMessagesController = async (req, res) => {
499
497
  try {
500
498
  const { phoneNumber } = req.params;
501
499
  const { limit = 50, order = 'desc', runId } = req.query;
502
- const variant = runtimeConfig.get('VARIANT');
500
+ const variant = getProviderVariant();
503
501
 
504
502
  if (!phoneNumber) {
505
503
  return res.status(400).json({
@@ -516,7 +514,7 @@ const getOpenAIThreadMessagesController = async (req, res) => {
516
514
  });
517
515
  }
518
516
 
519
- const provider = llmConfig.getOpenAIProvider({ instantiate: true, variant });
517
+ const provider = getOpenAIProvider({ instantiate: true, variant });
520
518
  if (!provider) throw new Error('OpenAI provider not initialized');
521
519
 
522
520
  const queryParams = {
@@ -1,4 +1,4 @@
1
- const runtimeConfig = require('../config/runtimeConfig');
1
+ const { getProviderVariant } = require('../config/llmConfig');
2
2
 
3
3
  const { withTracing } = require('../utils/tracingDecorator');
4
4
  const { logger } = require('../utils/logger');
@@ -22,7 +22,7 @@ const runAssistantAndWait = async ({ thread, assistant, message = null, runConfi
22
22
  throw new Error('runAssistantAndWait requires thread and assistant');
23
23
  }
24
24
 
25
- const variant = runtimeConfig.get('VARIANT');
25
+ const variant = getProviderVariant();
26
26
  const provider = createLLMProvider({ variant });
27
27
  const { polling, tools: configTools, ...config } = runConfig;
28
28
  const tools = assistant.getToolSchemas?.() || configTools || [];
package/lib/index.js CHANGED
@@ -91,7 +91,11 @@ class Nexus {
91
91
 
92
92
  if (llm === 'openai') {
93
93
  try {
94
- this.llmProvider = llmConfigModule.configureOpenAIProvider(llmConfig);
94
+ const resolvedLLMConfig = {
95
+ ...llmConfig,
96
+ variant: llmConfig.variant || runtimeConfig.get('VARIANT'),
97
+ };
98
+ this.llmProvider = llmConfigModule.configureOpenAIProvider(resolvedLLMConfig);
95
99
  } catch (err) {
96
100
  logger.warn('[Nexus] Failed to expose OpenAI provider', { error: err?.message || err });
97
101
  }
@@ -1,4 +1,4 @@
1
- const runtimeConfig = require('../config/runtimeConfig');
1
+ const { getProviderVariant } = require('../config/llmConfig');
2
2
  const { Historial_Clinico_ID } = require('../config/airtableConfig');
3
3
 
4
4
  const { logger } = require('../utils/logger');
@@ -28,7 +28,7 @@ const createAssistantCore = async (code, assistant_id, _messages = [], force = f
28
28
  }
29
29
 
30
30
  if (force && findThread?.getConversationId()) {
31
- const provider = createLLMProvider({ variant: runtimeConfig.get('VARIANT')});
31
+ const provider = createLLMProvider({ variant: getProviderVariant() });
32
32
  await provider.deleteConversation(findThread.getConversationId());
33
33
  logger.info('[createAssistant] Deleted old conversation, will create new one');
34
34
  }
@@ -137,7 +137,7 @@ const preProcessMessagesCore = async (code, message_ = null, thread) => {
137
137
  return { shouldProcess: false, messages: null, timings };
138
138
  }
139
139
 
140
- const provider = createLLMProvider({ variant: runtimeConfig.get('VARIANT') });
140
+ const provider = createLLMProvider({ variant: getProviderVariant() });
141
141
  logger.info(`[preProcessMessages] Processing ${lastMessage.length} messages in parallel`);
142
142
  const processStart = Date.now();
143
143
  const processResult = await processThreadMessage(code, lastMessage, provider);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peopl-health/nexus",
3
- "version": "3.13.5",
3
+ "version": "3.13.6",
4
4
  "description": "Core messaging and assistant library for WhatsApp communication platforms",
5
5
  "keywords": [
6
6
  "whatsapp",