n8n-nodes-nashir 0.6.0 → 0.7.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/README.md CHANGED
@@ -101,6 +101,14 @@ This workflow fetches the last 10 messages for an inbound WhatsApp number and pa
101
101
 
102
102
  ## Changelog
103
103
 
104
+ ### 0.6.1 — Apr 2026
105
+
106
+ **Fix: `Nashir Contact` is now wireable as an AI Agent tool**
107
+
108
+ - Added `usableAsTool: true` to `Nashir Contact`'s node description. n8n requires this flag on community nodes for `ai_tool` connections to survive workflow import. Without it, dropping `Nashir Contact → Search Knowledge Base` into an Agent's tools input was silently rejected on re-import (the connection lived in the JSON but the n8n UI rendered the agent disconnected).
109
+ - Symptom this fixes: importing the **AI Auto Reply v2** template with 0.6.0 left the four KB nodes floating, agents showed no Tool / Chat Model / Memory wiring. Update to 0.6.1, re-import the template, wiring renders correctly.
110
+ - No API change — workflows and credentials migrate cleanly. Operation surface is unchanged from 0.6.0.
111
+
104
112
  ### 0.6.0 — Apr 2026
105
113
 
106
114
  **New operation: Search Knowledge Base on `Nashir Contact`**
@@ -1 +1 @@
1
- {"version":3,"file":"NashirContact.node.d.ts","sourceRoot":"","sources":["../../../nodes/NashirContact/NashirContact.node.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EACpB,MAAM,cAAc,CAAC;AAItB,qBAAa,aAAc,YAAW,SAAS;IAC9C,WAAW,EAAE,oBAAoB,CA+G/B;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAgEvE"}
1
+ {"version":3,"file":"NashirContact.node.d.ts","sourceRoot":"","sources":["../../../nodes/NashirContact/NashirContact.node.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EACpB,MAAM,cAAc,CAAC;AAItB,qBAAa,aAAc,YAAW,SAAS;IAC9C,WAAW,EAAE,oBAAoB,CAgI/B;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CA8EvE"}
@@ -13,6 +13,10 @@ class NashirContact {
13
13
  subtitle: '={{$parameter["operation"]}}',
14
14
  description: 'Manage contacts and retrieve knowledge from nashir.ai',
15
15
  defaults: { name: 'Nashir Contact', color: '#6366f1' },
16
+ // Required for n8n's AI Agent to accept this node as a tool source.
17
+ // Without it, ai_tool connections from this node are rejected on
18
+ // import (e.g. Search Knowledge Base wired into an agent's tools input).
19
+ usableAsTool: true,
16
20
  inputs: ['main'],
17
21
  outputs: ['main'],
18
22
  credentials: [{ name: 'nashirApi', required: true }],
@@ -86,8 +90,10 @@ class NashirContact {
86
90
  },
87
91
  // ── Search Knowledge Base fields ─────────────────────────────────────────
88
92
  // Server-side: nashir.ai embeds the query (text-embedding-3-small) and
89
- // runs vector similarity against the team's knowledge_chunks. The team
90
- // is derived from the API key — never trusted from the request body.
93
+ // runs vector similarity against the team's knowledge_chunks, scoped
94
+ // to the business. team_id is derived from the API key; business_id
95
+ // is supplied per-call so a team with multiple businesses doesn't
96
+ // leak knowledge across them.
91
97
  {
92
98
  displayName: 'Query',
93
99
  name: 'query',
@@ -98,6 +104,16 @@ class NashirContact {
98
104
  description: "The customer's question or topic to search for in the knowledge base. Plain text — no embedding step required on your side.",
99
105
  displayOptions: { show: { operation: ['searchKnowledge'] } },
100
106
  },
107
+ {
108
+ displayName: 'Business ID',
109
+ name: 'businessId',
110
+ type: 'string',
111
+ default: '',
112
+ required: true,
113
+ placeholder: "={{ $('Webhook').first().json.body.business_id }}",
114
+ description: 'Business to scope the search to. The webhook payload includes business_id — wire it through with an expression. Leaving this empty is supported only against legacy backends; the current /api/v1/knowledge/search rejects requests without it.',
115
+ displayOptions: { show: { operation: ['searchKnowledge'] } },
116
+ },
101
117
  {
102
118
  displayName: 'Limit',
103
119
  name: 'kbLimit',
@@ -141,7 +157,19 @@ class NashirContact {
141
157
  throw new Error('Search Knowledge Base: query is required');
142
158
  }
143
159
  const limit = this.getNodeParameter('kbLimit', i, 4);
144
- responseData = await (0, api_1.nashirApiRequest)(this, 'POST', `/knowledge/search`, { query, limit });
160
+ const businessIdRaw = this.getNodeParameter('businessId', i, '').trim();
161
+ const body = { query, limit };
162
+ if (businessIdRaw) {
163
+ const businessId = parseInt(businessIdRaw, 10);
164
+ if (!Number.isFinite(businessId) || businessId <= 0) {
165
+ throw new Error(`Search Knowledge Base: businessId must be a positive integer, got "${businessIdRaw}"`);
166
+ }
167
+ body.business_id = businessId;
168
+ }
169
+ // If businessId is empty, omit it — old backends still accept the
170
+ // request. Once /api/v1/knowledge/search starts requiring business_id
171
+ // (S49 task 1), the absence here surfaces as a 400 from nashir.ai.
172
+ responseData = await (0, api_1.nashirApiRequest)(this, 'POST', `/knowledge/search`, body);
145
173
  }
146
174
  else {
147
175
  throw new Error(`Unknown operation: ${operation}`);
@@ -1 +1 @@
1
- {"version":3,"file":"NashirContact.node.js","sourceRoot":"","sources":["../../../nodes/NashirContact/NashirContact.node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NashirContact.node.js","sourceRoot":"","sources":["../../../nodes/NashirContact/NashirContact.node.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,10 @@ export class NashirContact implements INodeType {
18
18
  subtitle: '={{$parameter["operation"]}}',
19
19
  description: 'Manage contacts and retrieve knowledge from nashir.ai',
20
20
  defaults: { name: 'Nashir Contact', color: '#6366f1' },
21
+ // Required for n8n's AI Agent to accept this node as a tool source.
22
+ // Without it, ai_tool connections from this node are rejected on
23
+ // import (e.g. Search Knowledge Base wired into an agent's tools input).
24
+ usableAsTool: true,
21
25
  inputs: ['main'],
22
26
  outputs: ['main'],
23
27
  credentials: [{ name: 'nashirApi', required: true }],
@@ -97,8 +101,10 @@ export class NashirContact implements INodeType {
97
101
 
98
102
  // ── Search Knowledge Base fields ─────────────────────────────────────────
99
103
  // Server-side: nashir.ai embeds the query (text-embedding-3-small) and
100
- // runs vector similarity against the team's knowledge_chunks. The team
101
- // is derived from the API key — never trusted from the request body.
104
+ // runs vector similarity against the team's knowledge_chunks, scoped
105
+ // to the business. team_id is derived from the API key; business_id
106
+ // is supplied per-call so a team with multiple businesses doesn't
107
+ // leak knowledge across them.
102
108
  {
103
109
  displayName: 'Query',
104
110
  name: 'query',
@@ -110,6 +116,17 @@ export class NashirContact implements INodeType {
110
116
  "The customer's question or topic to search for in the knowledge base. Plain text — no embedding step required on your side.",
111
117
  displayOptions: { show: { operation: ['searchKnowledge'] } },
112
118
  },
119
+ {
120
+ displayName: 'Business ID',
121
+ name: 'businessId',
122
+ type: 'string',
123
+ default: '',
124
+ required: true,
125
+ placeholder: "={{ $('Webhook').first().json.body.business_id }}",
126
+ description:
127
+ 'Business to scope the search to. The webhook payload includes business_id — wire it through with an expression. Leaving this empty is supported only against legacy backends; the current /api/v1/knowledge/search rejects requests without it.',
128
+ displayOptions: { show: { operation: ['searchKnowledge'] } },
129
+ },
113
130
  {
114
131
  displayName: 'Limit',
115
132
  name: 'kbLimit',
@@ -161,11 +178,25 @@ export class NashirContact implements INodeType {
161
178
  throw new Error('Search Knowledge Base: query is required');
162
179
  }
163
180
  const limit = this.getNodeParameter('kbLimit', i, 4) as number;
181
+ const businessIdRaw = (this.getNodeParameter('businessId', i, '') as string).trim();
182
+ const body: IDataObject = { query, limit };
183
+ if (businessIdRaw) {
184
+ const businessId = parseInt(businessIdRaw, 10);
185
+ if (!Number.isFinite(businessId) || businessId <= 0) {
186
+ throw new Error(
187
+ `Search Knowledge Base: businessId must be a positive integer, got "${businessIdRaw}"`,
188
+ );
189
+ }
190
+ body.business_id = businessId;
191
+ }
192
+ // If businessId is empty, omit it — old backends still accept the
193
+ // request. Once /api/v1/knowledge/search starts requiring business_id
194
+ // (S49 task 1), the absence here surfaces as a 400 from nashir.ai.
164
195
  responseData = await nashirApiRequest(
165
196
  this,
166
197
  'POST',
167
198
  `/knowledge/search`,
168
- { query, limit },
199
+ body,
169
200
  );
170
201
 
171
202
  } else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-nashir",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "n8n community nodes for nashir.ai — publish to Facebook, Instagram, TikTok, LinkedIn, YouTube, WhatsApp and Telegram, plus AI conversation management",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",