@peopl-health/nexus 3.14.0 → 3.14.2

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.
@@ -16,6 +16,7 @@ const scheduledMessageSchema = new mongoose.Schema({
16
16
  wa_id: { type: String, default: null },
17
17
  frontendId: { type: String, default: null },
18
18
  flowActionPayload: { type: mongoose.Schema.Types.Mixed, default: null },
19
+ triggeredBy: { type: String, default: null },
19
20
  createdAt: { type: Date, default: Date.now }
20
21
  });
21
22
 
@@ -328,6 +328,7 @@ class OpenAIResponsesProvider {
328
328
  presetToolIds,
329
329
  presetId: resolvedPresetId,
330
330
  presetVersion: resolvedPresetVersion,
331
+ modelConfig,
331
332
  } = await composePrompt({
332
333
  presetId,
333
334
  presetVersion,
@@ -392,11 +393,15 @@ class OpenAIResponsesProvider {
392
393
  if (promptVersion) promptConfig.version = String(promptVersion);
393
394
 
394
395
  const apiCallConfig = {
395
- prompt: promptConfig,
396
+ ...modelConfig,
396
397
  instructions: instructions || additionalInstructions || devContent || '',
397
398
  metadata,
398
399
  tool_choice: prePromptResult?.toolChoice || toolChoice
399
400
  };
401
+
402
+ if (!resolvedPresetId) {
403
+ apiCallConfig.prompt = promptConfig;
404
+ }
400
405
  if (activeToolSchemas.length > 0) {
401
406
  apiCallConfig.tools = activeToolSchemas.map(schema => {
402
407
  if (schema.type === 'function' && schema.function) {
@@ -453,6 +458,7 @@ class OpenAIResponsesProvider {
453
458
  preset_id: resolvedPresetId,
454
459
  preset_version: resolvedPresetVersion,
455
460
  preset: resolvedPresetId ? { id: resolvedPresetId, version: resolvedPresetVersion } : null,
461
+ model_config: modelConfig || null,
456
462
  };
457
463
  return result;
458
464
  }
@@ -78,6 +78,7 @@ async function composePrompt({ presetId = null, presetVersion = null, promptId =
78
78
  let presetSnippetIds = null;
79
79
  let presetToolIds = null;
80
80
  let resolvedPresetVersion = null;
81
+ let modelConfig = null;
81
82
 
82
83
  async function applyPreset(id, version = null) {
83
84
  const preset = await fetchPreset(id, version);
@@ -88,6 +89,14 @@ async function composePrompt({ presetId = null, presetVersion = null, promptId =
88
89
  presetSnippetIds = preset.snippets || [];
89
90
  presetToolIds = preset.tools || [];
90
91
  resolvedPresetVersion = preset.version ? String(preset.version) : null;
92
+
93
+ if (preset.model_config) {
94
+ try {
95
+ modelConfig = JSON.parse(preset.model_config);
96
+ } catch (err) {
97
+ logger.error('[promptComposer] Invalid model_config JSON in preset', { presetId: id, error: err.message });
98
+ }
99
+ }
91
100
  const promptRecordId = preset.prompt?.[0];
92
101
  if (promptRecordId) {
93
102
  const promptRecords = await getRecordByFilter(Config_ID, 'responses', `RECORD_ID()="${promptRecordId}"`);
@@ -141,6 +150,7 @@ async function composePrompt({ presetId = null, presetVersion = null, promptId =
141
150
  presetToolIds,
142
151
  presetId: presetId || null,
143
152
  presetVersion: resolvedPresetVersion,
153
+ modelConfig,
144
154
  };
145
155
  }
146
156
 
@@ -53,6 +53,7 @@ class MongoStorage {
53
53
  body: values.body,
54
54
  media: values.media,
55
55
  type: values.interactive_type ? 'interactive' : values.media ? 'media' : 'message',
56
+ triggeredBy: values.triggeredBy,
56
57
  ...(messageData.frontendId && { frontendId: messageData.frontendId })
57
58
  }));
58
59
  } else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peopl-health/nexus",
3
- "version": "3.14.0",
3
+ "version": "3.14.2",
4
4
  "description": "Core messaging and assistant library for WhatsApp communication platforms",
5
5
  "keywords": [
6
6
  "whatsapp",