flowise-invinoveritas 0.1.0 → 0.2.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 ADDED
@@ -0,0 +1,13 @@
1
+ # Flowise Components for invinoveritas
2
+
3
+ Default posture: aggressive growth and PNL capture, bounded by Bitcoin/Lightning-only payments, budget limits, and explicit risk controls.
4
+
5
+ Components:
6
+
7
+ - invinoveritas Reason
8
+ - invinoveritas Decision
9
+ - invinoveritas Growth + PNL Attack Plan
10
+
11
+ Use these components to route Flowise agents toward registration, top-up, paid reasoning, marketplace purchases, Premium Spawn Kit conversion, referrals, seller withdrawals, and Sovereign Earner support workflows.
12
+
13
+ Requests include `X-Invino-Integration: flowise` for revenue attribution.
package/package.json CHANGED
@@ -1,43 +1,22 @@
1
1
  {
2
2
  "name": "flowise-invinoveritas",
3
- "version": "0.1.0",
4
- "description": "Flowise custom node for invinoveritas Lightning-native AI reasoning and agent marketplace",
5
- "keywords": [
6
- "flowise",
7
- "flowise-addon",
8
- "invinoveritas",
9
- "lightning",
10
- "bitcoin",
11
- "ai",
12
- "agents",
13
- "reasoning",
14
- "langchain"
15
- ],
16
- "license": "MIT",
17
- "homepage": "https://api.babyblueviper.com",
18
- "author": {
19
- "name": "Baby Blue Viper",
20
- "email": "babyblueviperbusiness@gmail.com"
21
- },
3
+ "version": "0.2.0",
4
+ "description": "Default-aggressive Bitcoin/Lightning-native invinoveritas Flowise components for reasoning, decisions, and growth/PNL attack planning.",
5
+ "license": "Apache-2.0",
6
+ "author": "invinoveritas <babyblueviperbusiness@gmail.com>",
7
+ "keywords": ["flowise", "bitcoin", "lightning", "l402", "ai-agents", "pnl", "marketplace"],
22
8
  "repository": {
23
9
  "type": "git",
24
- "url": "https://github.com/babyblueviper1/invinoveritas"
10
+ "url": "https://github.com/babyblueviper1/invinoveritas.git",
11
+ "directory": "integrations/flowise/flowise-invinoveritas"
25
12
  },
13
+ "main": "dist/index.js",
26
14
  "scripts": {
27
- "build": "tsc && npm run copy-icons",
28
- "copy-icons": "cp nodes/Invinoveritas/invinoveritas.svg dist/nodes/Invinoveritas/ && cp nodes/InvineroritasDecision/invinoveritas.svg dist/nodes/InvineroritasDecision/",
29
- "prepublishOnly": "npm run build"
15
+ "test": "node test/smoke.js",
16
+ "build": "tsc --noEmit"
30
17
  },
31
- "files": [
32
- "dist",
33
- "nodes"
34
- ],
18
+ "files": ["src", "README.md"],
35
19
  "devDependencies": {
36
- "@langchain/core": "^0.3.0",
37
- "@types/node": "^18.0.0",
38
- "typescript": "^5.0.0"
39
- },
40
- "peerDependencies": {
41
- "flowise-components": ">=2.0.0"
20
+ "typescript": "^5.4.0"
42
21
  }
43
22
  }
package/src/index.ts ADDED
@@ -0,0 +1,64 @@
1
+ const BASE_URL = 'https://api.babyblueviper.com';
2
+
3
+ type InvinoConfig = {
4
+ apiKey: string;
5
+ integration?: string;
6
+ };
7
+
8
+ async function post(config: InvinoConfig, path: string, body: unknown) {
9
+ const response = await fetch(`${BASE_URL}${path}`, {
10
+ method: 'POST',
11
+ headers: {
12
+ Authorization: `Bearer ${config.apiKey}`,
13
+ 'Content-Type': 'application/json',
14
+ 'User-Agent': 'flowise-invinoveritas/0.2.0',
15
+ 'X-Invino-Integration': config.integration || 'flowise',
16
+ },
17
+ body: JSON.stringify(body),
18
+ });
19
+ if (!response.ok) {
20
+ throw new Error(`invinoveritas ${path} failed: ${response.status} ${await response.text()}`);
21
+ }
22
+ return response.json();
23
+ }
24
+
25
+ export async function invinoReason(config: InvinoConfig, question: string, style = 'normal') {
26
+ return post(config, '/reason', { question, style });
27
+ }
28
+
29
+ export async function invinoDecision(config: InvinoConfig, goal: string, question: string, context = '') {
30
+ return post(config, '/decision', { goal, question, context });
31
+ }
32
+
33
+ export async function invinoGrowthAttackPlan(config: InvinoConfig, objective: string, context = '', budgetSats?: number) {
34
+ return invinoDecision(
35
+ config,
36
+ 'Maximize invinoveritas growth and daily sats PNL with default-aggressive execution.',
37
+ [
38
+ 'Default posture: aggressive growth and PNL capture, bounded by Bitcoin/Lightning-only payments, budget limits, and explicit risk controls.',
39
+ 'Produce concrete next actions that drive registrations, funded accounts, paid reasoning, marketplace purchases, Premium Spawn Kit conversion, referrals, seller withdrawals, or Sovereign Earner support.',
40
+ `Objective: ${objective}`,
41
+ `Context: ${context}`,
42
+ `Budget sats: ${budgetSats ?? 'not specified'}`,
43
+ ].join('\n'),
44
+ context,
45
+ );
46
+ }
47
+
48
+ export const nodes = [
49
+ {
50
+ label: 'invinoveritas Reason',
51
+ name: 'invinoveritasReason',
52
+ description: 'Paid reasoning over Bitcoin Lightning.',
53
+ },
54
+ {
55
+ label: 'invinoveritas Decision',
56
+ name: 'invinoveritasDecision',
57
+ description: 'Structured decisions with confidence and risk notes.',
58
+ },
59
+ {
60
+ label: 'invinoveritas Growth + PNL Attack Plan',
61
+ name: 'invinoveritasGrowthAttackPlan',
62
+ description: 'Default-aggressive growth and revenue planning for agent workflows.',
63
+ },
64
+ ];
@@ -1,63 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tools_1 = require("@langchain/core/tools");
4
- const Invinoveritas_1 = require("../Invinoveritas/Invinoveritas");
5
- class InvineroritasDecision_Tools {
6
- constructor() {
7
- this.label = 'invinoveritas Decision';
8
- this.name = 'invineroritasDecision';
9
- this.version = 1.0;
10
- this.type = 'InvineroritasDecision';
11
- this.icon = 'invinoveritas.svg';
12
- this.category = 'Tools';
13
- this.description = 'Get a structured JSON decision with confidence score via invinoveritas (~100 sats per call)';
14
- this.baseClasses = [this.type, 'DynamicTool', 'Tool', 'StructuredTool', 'Runnable'];
15
- this.inputs = [
16
- {
17
- label: 'API Key',
18
- name: 'apiKey',
19
- type: 'password',
20
- placeholder: 'ivv_...',
21
- description: 'Your invinoveritas API key. Register free at https://api.babyblueviper.com/register',
22
- },
23
- {
24
- label: 'Goal',
25
- name: 'goal',
26
- type: 'string',
27
- placeholder: 'Maximize ROI on my portfolio',
28
- description: 'The objective your agent is working towards',
29
- },
30
- {
31
- label: 'Tool Name',
32
- name: 'toolName',
33
- type: 'string',
34
- default: 'invinoveritas_decision',
35
- },
36
- {
37
- label: 'Tool Description',
38
- name: 'toolDescription',
39
- type: 'string',
40
- rows: 2,
41
- default: 'Get a structured decision with confidence score and reasoning. Input should be the specific question to decide on.',
42
- },
43
- ];
44
- }
45
- async init(nodeData, _input, _options) {
46
- var _a, _b, _c, _d;
47
- const apiKey = (_a = nodeData.inputs) === null || _a === void 0 ? void 0 : _a.apiKey;
48
- const goal = ((_b = nodeData.inputs) === null || _b === void 0 ? void 0 : _b.goal) || '';
49
- const toolName = ((_c = nodeData.inputs) === null || _c === void 0 ? void 0 : _c.toolName) || 'invinoveritas_decision';
50
- const toolDesc = ((_d = nodeData.inputs) === null || _d === void 0 ? void 0 : _d.toolDescription) || 'Get a structured decision with confidence score.';
51
- if (!apiKey)
52
- throw new Error('invinoveritas API key is required');
53
- return new tools_1.DynamicTool({
54
- name: toolName,
55
- description: toolDesc,
56
- func: async (input) => {
57
- return await (0, Invinoveritas_1.callInvinoveritas)('/decision', { goal, context: '', question: input, want_confidence: true }, apiKey);
58
- },
59
- });
60
- }
61
- }
62
- module.exports = { nodeClass: InvineroritasDecision_Tools };
63
- //# sourceMappingURL=InvineroritasDecision.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InvineroritasDecision.js","sourceRoot":"","sources":["../../../nodes/InvineroritasDecision/InvineroritasDecision.ts"],"names":[],"mappings":";;AAAA,iDAAmD;AACnD,kEAAkE;AAkClE,MAAM,2BAA2B;IAW7B;QACI,IAAI,CAAC,KAAK,GAAG,wBAAwB,CAAA;QACrC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;QACnC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAA;QAClB,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;QACnC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAA;QAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,IAAI,CAAC,WAAW,GAAG,6FAA6F,CAAA;QAChH,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAA;QACnF,IAAI,CAAC,MAAM,GAAG;YACV;gBACI,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,SAAS;gBACtB,WAAW,EAAE,qFAAqF;aACrG;YACD;gBACI,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8BAA8B;gBAC3C,WAAW,EAAE,6CAA6C;aAC7D;YACD;gBACI,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,wBAAwB;aACpC;YACD;gBACI,KAAK,EAAE,kBAAkB;gBACzB,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC;gBACP,OAAO,EAAE,oHAAoH;aAChI;SACJ,CAAA;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAmB,EAAE,MAAc,EAAE,QAAuB;;QACnE,MAAM,MAAM,GAAG,MAAA,QAAQ,CAAC,MAAM,0CAAE,MAAgB,CAAA;QAChD,MAAM,IAAI,GAAG,CAAC,MAAA,QAAQ,CAAC,MAAM,0CAAE,IAAe,KAAI,EAAE,CAAA;QACpD,MAAM,QAAQ,GAAG,CAAC,MAAA,QAAQ,CAAC,MAAM,0CAAE,QAAmB,KAAI,wBAAwB,CAAA;QAClF,MAAM,QAAQ,GAAG,CAAC,MAAA,QAAQ,CAAC,MAAM,0CAAE,eAA0B,KAAI,kDAAkD,CAAA;QAEnH,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAEjE,OAAO,IAAI,mBAAW,CAAC;YACnB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,QAAQ;YACrB,IAAI,EAAE,KAAK,EAAE,KAAa,EAAE,EAAE;gBAC1B,OAAO,MAAM,IAAA,iCAAiB,EAC1B,WAAW,EACX,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,EAC7D,MAAM,CACT,CAAA;YACL,CAAC;SACJ,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,CAAC,OAAO,GAAG,EAAE,SAAS,EAAE,2BAA2B,EAAE,CAAA"}
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60">
2
- <circle cx="30" cy="30" r="30" fill="#f7931a"/>
3
- <text x="30" y="38" font-family="monospace" font-weight="bold" font-size="22" fill="white" text-anchor="middle">₿</text>
4
- </svg>
@@ -1 +0,0 @@
1
- export declare function callInvinoveritas(endpoint: string, body: object, apiKey: string): Promise<string>;
@@ -1,74 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.callInvinoveritas = callInvinoveritas;
4
- const tools_1 = require("@langchain/core/tools");
5
- const BASE_URL = 'https://api.babyblueviper.com';
6
- async function callInvinoveritas(endpoint, body, apiKey) {
7
- const res = await fetch(`${BASE_URL}${endpoint}`, {
8
- method: 'POST',
9
- headers: {
10
- Authorization: `Bearer ${apiKey}`,
11
- 'Content-Type': 'application/json',
12
- },
13
- body: JSON.stringify(body),
14
- });
15
- if (!res.ok) {
16
- const text = await res.text();
17
- throw new Error(`invinoveritas error ${res.status}: ${text}`);
18
- }
19
- const data = await res.json();
20
- return data.answer || data.decision || JSON.stringify(data);
21
- }
22
- class InvineroritasReason_Tools {
23
- constructor() {
24
- this.label = 'invinoveritas Reason';
25
- this.name = 'invineroritasReason';
26
- this.version = 1.0;
27
- this.type = 'InvineroritasReason';
28
- this.icon = 'invinoveritas.svg';
29
- this.category = 'Tools';
30
- this.description = 'Get strategic AI reasoning on any question via invinoveritas (~100 sats per call)';
31
- this.baseClasses = [this.type, 'DynamicTool', 'Tool', 'StructuredTool', 'Runnable'];
32
- this.inputs = [
33
- {
34
- label: 'API Key',
35
- name: 'apiKey',
36
- type: 'password',
37
- placeholder: 'ivv_...',
38
- description: 'Your invinoveritas API key. Register free at https://api.babyblueviper.com/register',
39
- },
40
- {
41
- label: 'Tool Name',
42
- name: 'toolName',
43
- type: 'string',
44
- default: 'invinoveritas_reason',
45
- description: 'Name the agent uses to invoke this tool',
46
- },
47
- {
48
- label: 'Tool Description',
49
- name: 'toolDescription',
50
- type: 'string',
51
- rows: 2,
52
- default: 'Get strategic AI reasoning and analysis on any question or topic.',
53
- description: 'Description the agent uses to decide when to call this tool',
54
- },
55
- ];
56
- }
57
- async init(nodeData, _input, _options) {
58
- var _a, _b, _c;
59
- const apiKey = (_a = nodeData.inputs) === null || _a === void 0 ? void 0 : _a.apiKey;
60
- const toolName = ((_b = nodeData.inputs) === null || _b === void 0 ? void 0 : _b.toolName) || 'invinoveritas_reason';
61
- const toolDesc = ((_c = nodeData.inputs) === null || _c === void 0 ? void 0 : _c.toolDescription) || 'Get strategic AI reasoning on any question.';
62
- if (!apiKey)
63
- throw new Error('invinoveritas API key is required');
64
- return new tools_1.DynamicTool({
65
- name: toolName,
66
- description: toolDesc,
67
- func: async (input) => {
68
- return await callInvinoveritas('/reason', { question: input }, apiKey);
69
- },
70
- });
71
- }
72
- }
73
- module.exports = { nodeClass: InvineroritasReason_Tools };
74
- //# sourceMappingURL=Invinoveritas.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Invinoveritas.js","sourceRoot":"","sources":["../../../nodes/Invinoveritas/Invinoveritas.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60">
2
- <circle cx="30" cy="30" r="30" fill="#f7931a"/>
3
- <text x="30" y="38" font-family="monospace" font-weight="bold" font-size="22" fill="white" text-anchor="middle">₿</text>
4
- </svg>
@@ -1,109 +0,0 @@
1
- import { DynamicTool } from '@langchain/core/tools'
2
- import { callInvinoveritas } from '../Invinoveritas/Invinoveritas'
3
-
4
- interface INodeParams {
5
- label: string
6
- name: string
7
- type: string
8
- default?: any
9
- placeholder?: string
10
- description?: string
11
- rows?: number
12
- optional?: boolean
13
- }
14
-
15
- interface INodeData {
16
- inputs?: Record<string, unknown>
17
- }
18
-
19
- interface ICommonObject {
20
- [key: string]: any
21
- }
22
-
23
- interface INode {
24
- label: string
25
- name: string
26
- version: number
27
- description: string
28
- type: string
29
- icon: string
30
- category: string
31
- baseClasses: string[]
32
- inputs: INodeParams[]
33
- init(nodeData: INodeData, input: string, options: ICommonObject): Promise<any>
34
- }
35
-
36
- class InvineroritasDecision_Tools implements INode {
37
- label: string
38
- name: string
39
- version: number
40
- description: string
41
- type: string
42
- icon: string
43
- category: string
44
- baseClasses: string[]
45
- inputs: INodeParams[]
46
-
47
- constructor() {
48
- this.label = 'invinoveritas Decision'
49
- this.name = 'invineroritasDecision'
50
- this.version = 1.0
51
- this.type = 'InvineroritasDecision'
52
- this.icon = 'invinoveritas.svg'
53
- this.category = 'Tools'
54
- this.description = 'Get a structured JSON decision with confidence score via invinoveritas (~100 sats per call)'
55
- this.baseClasses = [this.type, 'DynamicTool', 'Tool', 'StructuredTool', 'Runnable']
56
- this.inputs = [
57
- {
58
- label: 'API Key',
59
- name: 'apiKey',
60
- type: 'password',
61
- placeholder: 'ivv_...',
62
- description: 'Your invinoveritas API key. Register free at https://api.babyblueviper.com/register',
63
- },
64
- {
65
- label: 'Goal',
66
- name: 'goal',
67
- type: 'string',
68
- placeholder: 'Maximize ROI on my portfolio',
69
- description: 'The objective your agent is working towards',
70
- },
71
- {
72
- label: 'Tool Name',
73
- name: 'toolName',
74
- type: 'string',
75
- default: 'invinoveritas_decision',
76
- },
77
- {
78
- label: 'Tool Description',
79
- name: 'toolDescription',
80
- type: 'string',
81
- rows: 2,
82
- default: 'Get a structured decision with confidence score and reasoning. Input should be the specific question to decide on.',
83
- },
84
- ]
85
- }
86
-
87
- async init(nodeData: INodeData, _input: string, _options: ICommonObject): Promise<DynamicTool> {
88
- const apiKey = nodeData.inputs?.apiKey as string
89
- const goal = (nodeData.inputs?.goal as string) || ''
90
- const toolName = (nodeData.inputs?.toolName as string) || 'invinoveritas_decision'
91
- const toolDesc = (nodeData.inputs?.toolDescription as string) || 'Get a structured decision with confidence score.'
92
-
93
- if (!apiKey) throw new Error('invinoveritas API key is required')
94
-
95
- return new DynamicTool({
96
- name: toolName,
97
- description: toolDesc,
98
- func: async (input: string) => {
99
- return await callInvinoveritas(
100
- '/decision',
101
- { goal, context: '', question: input, want_confidence: true },
102
- apiKey,
103
- )
104
- },
105
- })
106
- }
107
- }
108
-
109
- module.exports = { nodeClass: InvineroritasDecision_Tools }
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60">
2
- <circle cx="30" cy="30" r="30" fill="#f7931a"/>
3
- <text x="30" y="38" font-family="monospace" font-weight="bold" font-size="22" fill="white" text-anchor="middle">₿</text>
4
- </svg>
@@ -1,118 +0,0 @@
1
- import { DynamicTool } from '@langchain/core/tools'
2
-
3
- // Minimal Flowise interface stubs — avoids compiling flowise-components source
4
- interface INodeParams {
5
- label: string
6
- name: string
7
- type: string
8
- default?: any
9
- placeholder?: string
10
- description?: string
11
- rows?: number
12
- optional?: boolean
13
- }
14
-
15
- interface INodeData {
16
- inputs?: Record<string, unknown>
17
- }
18
-
19
- interface ICommonObject {
20
- [key: string]: any
21
- }
22
-
23
- interface INode {
24
- label: string
25
- name: string
26
- version: number
27
- description: string
28
- type: string
29
- icon: string
30
- category: string
31
- baseClasses: string[]
32
- inputs: INodeParams[]
33
- init(nodeData: INodeData, input: string, options: ICommonObject): Promise<any>
34
- }
35
-
36
- const BASE_URL = 'https://api.babyblueviper.com'
37
-
38
- export async function callInvinoveritas(endpoint: string, body: object, apiKey: string): Promise<string> {
39
- const res = await fetch(`${BASE_URL}${endpoint}`, {
40
- method: 'POST',
41
- headers: {
42
- Authorization: `Bearer ${apiKey}`,
43
- 'Content-Type': 'application/json',
44
- },
45
- body: JSON.stringify(body),
46
- })
47
- if (!res.ok) {
48
- const text = await res.text()
49
- throw new Error(`invinoveritas error ${res.status}: ${text}`)
50
- }
51
- const data = await res.json()
52
- return data.answer || data.decision || JSON.stringify(data)
53
- }
54
-
55
- class InvineroritasReason_Tools implements INode {
56
- label: string
57
- name: string
58
- version: number
59
- description: string
60
- type: string
61
- icon: string
62
- category: string
63
- baseClasses: string[]
64
- inputs: INodeParams[]
65
-
66
- constructor() {
67
- this.label = 'invinoveritas Reason'
68
- this.name = 'invineroritasReason'
69
- this.version = 1.0
70
- this.type = 'InvineroritasReason'
71
- this.icon = 'invinoveritas.svg'
72
- this.category = 'Tools'
73
- this.description = 'Get strategic AI reasoning on any question via invinoveritas (~100 sats per call)'
74
- this.baseClasses = [this.type, 'DynamicTool', 'Tool', 'StructuredTool', 'Runnable']
75
- this.inputs = [
76
- {
77
- label: 'API Key',
78
- name: 'apiKey',
79
- type: 'password',
80
- placeholder: 'ivv_...',
81
- description: 'Your invinoveritas API key. Register free at https://api.babyblueviper.com/register',
82
- },
83
- {
84
- label: 'Tool Name',
85
- name: 'toolName',
86
- type: 'string',
87
- default: 'invinoveritas_reason',
88
- description: 'Name the agent uses to invoke this tool',
89
- },
90
- {
91
- label: 'Tool Description',
92
- name: 'toolDescription',
93
- type: 'string',
94
- rows: 2,
95
- default: 'Get strategic AI reasoning and analysis on any question or topic.',
96
- description: 'Description the agent uses to decide when to call this tool',
97
- },
98
- ]
99
- }
100
-
101
- async init(nodeData: INodeData, _input: string, _options: ICommonObject): Promise<DynamicTool> {
102
- const apiKey = nodeData.inputs?.apiKey as string
103
- const toolName = (nodeData.inputs?.toolName as string) || 'invinoveritas_reason'
104
- const toolDesc = (nodeData.inputs?.toolDescription as string) || 'Get strategic AI reasoning on any question.'
105
-
106
- if (!apiKey) throw new Error('invinoveritas API key is required')
107
-
108
- return new DynamicTool({
109
- name: toolName,
110
- description: toolDesc,
111
- func: async (input: string) => {
112
- return await callInvinoveritas('/reason', { question: input }, apiKey)
113
- },
114
- })
115
- }
116
- }
117
-
118
- module.exports = { nodeClass: InvineroritasReason_Tools }
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60">
2
- <circle cx="30" cy="30" r="30" fill="#f7931a"/>
3
- <text x="30" y="38" font-family="monospace" font-weight="bold" font-size="22" fill="white" text-anchor="middle">₿</text>
4
- </svg>