@peopl-health/nexus 4.4.3 → 4.4.5

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.
@@ -10,28 +10,20 @@ const { createAssistant, addMsgAssistant, switchAssistant } = require('../servic
10
10
 
11
11
  const { sendMessage, processInstruction, processSystemMessage } = require('../core/NexusMessaging');
12
12
 
13
- const _updateThreadFlag = async (req, res, field, successMsg, errorMsg) => {
14
- const { code } = req.body;
15
- const value = req.body[field];
13
+ const stopAssistantController = async (req, res) => {
14
+ const { code, stop } = req.body;
16
15
  if (!code) return res.status(400).json({ success: false, error: 'Code is required' });
17
16
 
17
+ const stopped = typeof stop === 'string' ? stop === 'true' : !!stop;
18
18
  try {
19
- if (field === 'stop') {
20
- await switchThreadStoppedStatus(code, !!value);
21
- }
22
- return res.status(200).json({ success: true, message: successMsg });
19
+ await switchThreadStoppedStatus(code, stopped);
20
+ return res.status(200).json({ success: true, message: stopped ? 'Assistant stopped' : 'Assistant resumed' });
23
21
  } catch (error) {
24
- logger.error(`[AssistantController] ${errorMsg}`, { error: error.message, code });
25
- return res.status(500).json({ success: false, error: errorMsg });
22
+ logger.error('[AssistantController] Failed to stop assistant', { error: error.message, code });
23
+ return res.status(500).json({ success: false, error: 'Failed to stop assistant' });
26
24
  }
27
25
  };
28
26
 
29
- const activeAssistantController = (req, res) =>
30
- _updateThreadFlag(req, res, 'active', 'Assistant activated', 'Failed to activate assistant');
31
-
32
- const stopAssistantController = (req, res) =>
33
- _updateThreadFlag(req, res, 'stop', 'Assistant stopped', 'Failed to stop assistant');
34
-
35
27
  const addInsAssistantController = async (req, res) => {
36
28
  const { code, instruction, triggeredBy } = req.body;
37
29
  if (!code) return res.status(400).json({ success: false, error: 'Code is required' });
@@ -124,7 +116,6 @@ const switchAssistantController = async (req, res) => {
124
116
  };
125
117
 
126
118
  module.exports = {
127
- activeAssistantController,
128
119
  addInsAssistantController,
129
120
  addMsgAssistantController,
130
121
  createAssistantController,
@@ -3,6 +3,7 @@ const EventEmitter = require('events');
3
3
  const { airtable } = require('../config/airtableConfig');
4
4
  const llmConfigModule = require('../config/llmConfig');
5
5
  const { connect } = require('../config/mongoConfig');
6
+ const { setMetaConfig } = require('../config/metaConfig');
6
7
 
7
8
  const { logger } = require('../utils/logger');
8
9
 
@@ -101,7 +102,7 @@ class NexusMessaging {
101
102
  }
102
103
 
103
104
  async initialize(options = {}) {
104
- const { provider, providerConfig, mongoUri, messageStorage, llm, llmConfig } = options;
105
+ const { provider, providerConfig, mongoUri, messageStorage, llm, llmConfig, meta } = options;
105
106
 
106
107
  if (mongoUri || process.env.MONGODB_URI) {
107
108
  await this.initializeMongoDB(mongoUri);
@@ -112,6 +113,9 @@ class NexusMessaging {
112
113
  if (llm && llmConfig) {
113
114
  this.initializeLLM(llm, llmConfig);
114
115
  }
116
+ if (meta) {
117
+ setMetaConfig(meta);
118
+ }
115
119
  if (messageStorage) {
116
120
  this.setMessageStorage(messageStorage);
117
121
  }
@@ -1,8 +1,7 @@
1
1
  const express = require('express');
2
2
 
3
3
  const assistantRouteDefinitions = {
4
- 'POST /active': 'activeAssistantController',
5
- 'POST /add-instruction': 'addInsAssistantController',
4
+ 'POST /add-instruction': 'addInsAssistantController',
6
5
  'POST /add-msg': 'addMsgAssistantController',
7
6
  'POST /create': 'createAssistantController',
8
7
  'POST /info': 'getInfoAssistantController',
@@ -126,7 +125,6 @@ const prescriptionController = require('../controllers/prescriptionController');
126
125
 
127
126
  const builtInControllers = {
128
127
  // Assistant controllers
129
- activeAssistantController: assistantController.activeAssistantController,
130
128
  addInsAssistantController: assistantController.addInsAssistantController,
131
129
  addMsgAssistantController: assistantController.addMsgAssistantController,
132
130
  createAssistantController: assistantController.createAssistantController,
@@ -5,16 +5,8 @@ const { getMetaConfig } = require('../config/metaConfig');
5
5
  const { logger } = require('../utils/logger');
6
6
  const { jsonStringifyWithUnicodeEscapes } = require('../utils/jsonUtils');
7
7
 
8
- const requireConfig = () => {
9
- const config = getMetaConfig();
10
- if (!config.accessToken || !config.wabaId) {
11
- throw new Error('Meta API not configured. Call setMetaConfig() first with accessToken and wabaId.');
12
- }
13
- return config;
14
- };
15
-
16
8
  const getApiUrl = (path) => {
17
- const config = requireConfig();
9
+ const config = getMetaConfig();
18
10
  return `https://graph.facebook.com/${config.apiVersion}/${path}`;
19
11
  };
20
12
 
@@ -27,7 +19,7 @@ const errorResult = (error) => ({
27
19
  });
28
20
 
29
21
  async function createFlowInMeta(flowJSON, name, category = 'OTHER') {
30
- const config = requireConfig();
22
+ const config = getMetaConfig();
31
23
  const categories = Array.isArray(category) ? category : [category];
32
24
 
33
25
  logger.info('[createFlowInMeta] Creating', { name, categories });
@@ -58,7 +50,7 @@ async function createFlowInMeta(flowJSON, name, category = 'OTHER') {
58
50
  }
59
51
 
60
52
  async function setFlowEndpoint(flowId, endpointUri, applicationId) {
61
- const config = requireConfig();
53
+ const config = getMetaConfig();
62
54
 
63
55
  try {
64
56
  const response = await axios.post(getApiUrl(flowId), {
@@ -78,7 +70,7 @@ async function setFlowEndpoint(flowId, endpointUri, applicationId) {
78
70
  }
79
71
 
80
72
  async function getFlowFromMeta(flowId) {
81
- const config = requireConfig();
73
+ const config = getMetaConfig();
82
74
 
83
75
  try {
84
76
  const response = await axios.get(getApiUrl(flowId), {
@@ -101,7 +93,7 @@ async function getFlowFromMeta(flowId) {
101
93
  }
102
94
 
103
95
  async function publishFlowInMeta(flowId) {
104
- const config = requireConfig();
96
+ const config = getMetaConfig();
105
97
 
106
98
  try {
107
99
  const current = await getFlowFromMeta(flowId);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peopl-health/nexus",
3
- "version": "4.4.3",
3
+ "version": "4.4.5",
4
4
  "description": "Core messaging and assistant library for WhatsApp communication platforms",
5
5
  "keywords": [
6
6
  "whatsapp",