n8n-nodes-vorim 0.1.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,16 @@
1
+ # n8n-nodes-vorim
2
+
3
+ n8n community node for [Vorim AI](https://vorim.ai). Gate and audit AI agent actions inside your n8n workflows.
4
+
5
+ ## Operations
6
+ - **Check Permission** — verify an agent holds a scope
7
+ - **Runtime Decision** — gate an action against live policy (allow/deny/escalate)
8
+ - **Emit Audit Event** — record a signed audit event
9
+ - **Verify Trust** — public trust score for an agent
10
+ - **Register Agent** — create a new agent identity
11
+
12
+ ## Install
13
+ In n8n: Settings → Community Nodes → install `n8n-nodes-vorim`. Add a **Vorim API** credential (your `agid_sk_*` key, scoped to what the workflow needs).
14
+
15
+ ## Build
16
+ `npm install && npm run build`
@@ -0,0 +1,13 @@
1
+ import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ /**
3
+ * Vorim API credential: a single API key (agid_sk_*) plus the base URL.
4
+ * Scope the key tightly to the operations this workflow needs.
5
+ */
6
+ export declare class VorimApi implements ICredentialType {
7
+ name: string;
8
+ displayName: string;
9
+ documentationUrl: string;
10
+ properties: INodeProperties[];
11
+ authenticate: IAuthenticateGeneric;
12
+ test: ICredentialTestRequest;
13
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VorimApi = void 0;
4
+ /**
5
+ * Vorim API credential: a single API key (agid_sk_*) plus the base URL.
6
+ * Scope the key tightly to the operations this workflow needs.
7
+ */
8
+ class VorimApi {
9
+ constructor() {
10
+ this.name = 'vorimApi';
11
+ this.displayName = 'Vorim API';
12
+ this.documentationUrl = 'https://vorim.ai/docs';
13
+ this.properties = [
14
+ {
15
+ displayName: 'API Key',
16
+ name: 'apiKey',
17
+ type: 'string',
18
+ typeOptions: { password: true },
19
+ default: '',
20
+ required: true,
21
+ placeholder: 'agid_sk_live_…',
22
+ description: 'A Vorim secret API key. Scope it to the operations this workflow uses: ' +
23
+ 'Runtime Decision needs runtime:decide, Emit Audit Event needs audit:write, ' +
24
+ 'and an audit trigger needs audit:read. A key missing a scope passes this ' +
25
+ 'connection test but fails the matching operation at runtime with 403 INSUFFICIENT_SCOPE.',
26
+ },
27
+ {
28
+ displayName: 'Base URL',
29
+ name: 'baseUrl',
30
+ type: 'string',
31
+ default: 'https://api.vorim.ai',
32
+ description: 'Vorim API base URL (without /v1). Override for self-hosted.',
33
+ },
34
+ ];
35
+ this.authenticate = {
36
+ type: 'generic',
37
+ properties: {
38
+ headers: {
39
+ Authorization: '=Bearer {{$credentials.apiKey}}',
40
+ },
41
+ },
42
+ };
43
+ // Validate the KEY (not just server reachability): GET /v1/agents requires a
44
+ // valid API key, so a revoked/invalid key is caught at save time. It needs no
45
+ // specific scope, so a correctly-issued key passes regardless of which
46
+ // per-operation scopes it carries (those are documented on the API Key field).
47
+ this.test = {
48
+ request: {
49
+ baseURL: '={{$credentials.baseUrl}}/v1',
50
+ url: '/agents',
51
+ headers: { Authorization: '=Bearer {{$credentials.apiKey}}' },
52
+ },
53
+ };
54
+ }
55
+ }
56
+ exports.VorimApi = VorimApi;
57
+ //# sourceMappingURL=VorimApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VorimApi.credentials.js","sourceRoot":"","sources":["../../credentials/VorimApi.credentials.ts"],"names":[],"mappings":";;;AAOA;;;GAGG;AACH,MAAa,QAAQ;IAArB;QACE,SAAI,GAAG,UAAU,CAAC;QAClB,gBAAW,GAAG,WAAW,CAAC;QAC1B,qBAAgB,GAAG,uBAAuB,CAAC;QAE3C,eAAU,GAAsB;YAC9B;gBACE,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,gBAAgB;gBAC7B,WAAW,EACT,yEAAyE;oBACzE,6EAA6E;oBAC7E,2EAA2E;oBAC3E,0FAA0F;aAC7F;YACD;gBACE,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,sBAAsB;gBAC/B,WAAW,EAAE,6DAA6D;aAC3E;SACF,CAAC;QAEF,iBAAY,GAAyB;YACnC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,aAAa,EAAE,iCAAiC;iBACjD;aACF;SACF,CAAC;QAEF,6EAA6E;QAC7E,8EAA8E;QAC9E,uEAAuE;QACvE,+EAA+E;QAC/E,SAAI,GAA2B;YAC7B,OAAO,EAAE;gBACP,OAAO,EAAE,8BAA8B;gBACvC,GAAG,EAAE,SAAS;gBACd,OAAO,EAAE,EAAE,aAAa,EAAE,iCAAiC,EAAE;aAC9D;SACF,CAAC;IACJ,CAAC;CAAA;AAjDD,4BAiDC"}
@@ -0,0 +1,9 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ /**
3
+ * Vorim node: gate and audit agent actions inside an n8n workflow.
4
+ * Operations call the Vorim REST API using the configured API key.
5
+ */
6
+ export declare class Vorim implements INodeType {
7
+ description: INodeTypeDescription;
8
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
9
+ }
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Vorim = void 0;
4
+ /**
5
+ * Vorim node: gate and audit agent actions inside an n8n workflow.
6
+ * Operations call the Vorim REST API using the configured API key.
7
+ */
8
+ class Vorim {
9
+ constructor() {
10
+ this.description = {
11
+ displayName: 'Vorim',
12
+ name: 'vorim',
13
+ icon: 'file:vorim.svg',
14
+ group: ['transform'],
15
+ version: 1,
16
+ subtitle: '={{$parameter["operation"]}}',
17
+ description: 'Agent identity, permission checks, runtime control, and signed audit trails',
18
+ defaults: { name: 'Vorim' },
19
+ inputs: ['main'],
20
+ outputs: ['main'],
21
+ credentials: [{ name: 'vorimApi', required: true }],
22
+ properties: [
23
+ {
24
+ displayName: 'Operation',
25
+ name: 'operation',
26
+ type: 'options',
27
+ noDataExpression: true,
28
+ options: [
29
+ { name: 'Check Permission', value: 'checkPermission', description: 'Verify an agent holds a scope', action: 'Check a permission' },
30
+ { name: 'Runtime Decision (beforeAction)', value: 'beforeAction', description: 'Gate an action against live policy', action: 'Make a runtime decision' },
31
+ { name: 'Emit Audit Event', value: 'emitEvent', description: 'Record a signed audit event', action: 'Emit an audit event' },
32
+ { name: 'Verify Trust', value: 'verifyTrust', description: 'Public trust score for an agent', action: 'Verify trust' },
33
+ { name: 'Register Agent', value: 'registerAgent', description: 'Create a new agent identity', action: 'Register an agent' },
34
+ ],
35
+ default: 'checkPermission',
36
+ },
37
+ // Shared: agent id
38
+ {
39
+ displayName: 'Agent ID',
40
+ name: 'agentId',
41
+ type: 'string',
42
+ default: '',
43
+ required: true,
44
+ placeholder: 'agid_acme_a1b2c3d4',
45
+ displayOptions: { hide: { operation: ['registerAgent'] } },
46
+ },
47
+ // Scope (check / beforeAction)
48
+ {
49
+ displayName: 'Scope',
50
+ name: 'scope',
51
+ type: 'options',
52
+ options: [
53
+ { name: 'agent:read', value: 'agent:read' },
54
+ { name: 'agent:write', value: 'agent:write' },
55
+ { name: 'agent:execute', value: 'agent:execute' },
56
+ { name: 'agent:transact', value: 'agent:transact' },
57
+ { name: 'agent:communicate', value: 'agent:communicate' },
58
+ { name: 'agent:delegate', value: 'agent:delegate' },
59
+ { name: 'agent:elevate', value: 'agent:elevate' },
60
+ ],
61
+ default: 'agent:execute',
62
+ displayOptions: { show: { operation: ['checkPermission', 'beforeAction'] } },
63
+ },
64
+ // beforeAction extras
65
+ {
66
+ displayName: 'Action Target',
67
+ name: 'actionTarget',
68
+ type: 'string',
69
+ default: '',
70
+ placeholder: 'sendEmail',
71
+ displayOptions: { show: { operation: ['beforeAction'] } },
72
+ },
73
+ // emitEvent fields
74
+ {
75
+ displayName: 'Event Type',
76
+ name: 'eventType',
77
+ type: 'options',
78
+ options: ['tool_call', 'api_request', 'message_sent', 'permission_change', 'status_change', 'key_rotation', 'login', 'export'].map((v) => ({ name: v, value: v })),
79
+ default: 'tool_call',
80
+ displayOptions: { show: { operation: ['emitEvent'] } },
81
+ },
82
+ {
83
+ displayName: 'Action',
84
+ name: 'action',
85
+ type: 'string',
86
+ default: '',
87
+ displayOptions: { show: { operation: ['emitEvent'] } },
88
+ },
89
+ {
90
+ displayName: 'Result',
91
+ name: 'result',
92
+ type: 'options',
93
+ options: [
94
+ { name: 'success', value: 'success' },
95
+ { name: 'denied', value: 'denied' },
96
+ { name: 'error', value: 'error' },
97
+ ],
98
+ default: 'success',
99
+ displayOptions: { show: { operation: ['emitEvent'] } },
100
+ },
101
+ {
102
+ displayName: 'Advanced Fields',
103
+ name: 'advancedFields',
104
+ type: 'collection',
105
+ placeholder: 'Add Field',
106
+ default: {},
107
+ displayOptions: { show: { operation: ['emitEvent'] } },
108
+ options: [
109
+ { displayName: 'Decision ID', name: 'decision_id', type: 'string', default: '', description: 'Link this event to a runtime decision (from a Runtime Decision step) for compliance traceability' },
110
+ { displayName: 'Resource', name: 'resource', type: 'string', default: '', description: 'What the action touched (e.g. the recipient, file, or endpoint)' },
111
+ {
112
+ displayName: 'Permission',
113
+ name: 'permission',
114
+ type: 'options',
115
+ options: [
116
+ { name: 'agent:read', value: 'agent:read' },
117
+ { name: 'agent:write', value: 'agent:write' },
118
+ { name: 'agent:execute', value: 'agent:execute' },
119
+ { name: 'agent:transact', value: 'agent:transact' },
120
+ { name: 'agent:communicate', value: 'agent:communicate' },
121
+ { name: 'agent:delegate', value: 'agent:delegate' },
122
+ { name: 'agent:elevate', value: 'agent:elevate' },
123
+ ],
124
+ default: 'agent:execute',
125
+ },
126
+ { displayName: 'Latency (ms)', name: 'latency_ms', type: 'number', default: 0, description: 'How long the action took, in milliseconds' },
127
+ { displayName: 'Error Code', name: 'error_code', type: 'string', default: '', description: 'A short error code when result is error' },
128
+ ],
129
+ },
130
+ // registerAgent fields
131
+ {
132
+ displayName: 'Name',
133
+ name: 'name',
134
+ type: 'string',
135
+ default: '',
136
+ displayOptions: { show: { operation: ['registerAgent'] } },
137
+ },
138
+ {
139
+ displayName: 'Scopes (comma-separated)',
140
+ name: 'scopes',
141
+ type: 'string',
142
+ default: 'agent:read',
143
+ displayOptions: { show: { operation: ['registerAgent'] } },
144
+ },
145
+ ],
146
+ };
147
+ }
148
+ async execute() {
149
+ const items = this.getInputData();
150
+ const out = [];
151
+ const creds = await this.getCredentials('vorimApi');
152
+ const baseUrl = String(creds.baseUrl || 'https://api.vorim.ai').replace(/\/$/, '') + '/v1';
153
+ const call = async (method, path, body) => this.helpers.httpRequest({
154
+ method,
155
+ url: `${baseUrl}${path}`,
156
+ headers: { Authorization: `Bearer ${creds.apiKey}`, 'Content-Type': 'application/json' },
157
+ body,
158
+ json: true,
159
+ });
160
+ for (let i = 0; i < items.length; i++) {
161
+ const op = this.getNodeParameter('operation', i);
162
+ let data;
163
+ if (op === 'checkPermission') {
164
+ const agentId = this.getNodeParameter('agentId', i);
165
+ const scope = this.getNodeParameter('scope', i);
166
+ data = await call('POST', `/agents/${encodeURIComponent(agentId)}/permissions/verify`, { scope });
167
+ }
168
+ else if (op === 'beforeAction') {
169
+ const agentId = this.getNodeParameter('agentId', i);
170
+ const scope = this.getNodeParameter('scope', i);
171
+ const actionTarget = this.getNodeParameter('actionTarget', i, '');
172
+ data = await call('POST', '/runtime/decisions', {
173
+ agent_id: agentId, action_type: 'tool_call', action_target: actionTarget, required_scope: scope,
174
+ });
175
+ }
176
+ else if (op === 'emitEvent') {
177
+ const agentId = this.getNodeParameter('agentId', i);
178
+ const adv = this.getNodeParameter('advancedFields', i, {});
179
+ // Only forward advanced fields the user actually set (skip empty strings
180
+ // and the numeric default of 0 for latency).
181
+ const extra = {};
182
+ if (adv.decision_id)
183
+ extra.decision_id = adv.decision_id;
184
+ if (adv.resource)
185
+ extra.resource = adv.resource;
186
+ if (adv.permission)
187
+ extra.permission = adv.permission;
188
+ if (typeof adv.latency_ms === 'number' && adv.latency_ms > 0)
189
+ extra.latency_ms = adv.latency_ms;
190
+ if (adv.error_code)
191
+ extra.error_code = adv.error_code;
192
+ data = await call('POST', '/audit/events', {
193
+ events: [{
194
+ agent_id: agentId,
195
+ event_type: this.getNodeParameter('eventType', i),
196
+ action: this.getNodeParameter('action', i),
197
+ result: this.getNodeParameter('result', i),
198
+ ...extra,
199
+ metadata: { framework: 'n8n' },
200
+ }],
201
+ });
202
+ }
203
+ else if (op === 'verifyTrust') {
204
+ const agentId = this.getNodeParameter('agentId', i);
205
+ data = await call('GET', `/trust/verify/${encodeURIComponent(agentId)}`);
206
+ }
207
+ else if (op === 'registerAgent') {
208
+ const name = this.getNodeParameter('name', i);
209
+ const scopes = String(this.getNodeParameter('scopes', i)).split(',').map((s) => s.trim()).filter(Boolean);
210
+ data = await call('POST', '/agents', { name, scopes });
211
+ }
212
+ out.push({ json: data?.data ?? data ?? {}, pairedItem: { item: i } });
213
+ }
214
+ return [out];
215
+ }
216
+ }
217
+ exports.Vorim = Vorim;
218
+ //# sourceMappingURL=Vorim.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Vorim.node.js","sourceRoot":"","sources":["../../../nodes/Vorim/Vorim.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60" width="60" height="60">
2
+ <rect width="60" height="60" rx="12" fill="#0a0e1a"/>
3
+ <path d="M16 18 L30 44 L44 18" fill="none" stroke="#5b8def" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
4
+ <circle cx="30" cy="14" r="3.2" fill="#5b8def"/>
5
+ </svg>
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "n8n-nodes-vorim",
3
+ "version": "0.1.0",
4
+ "description": "n8n community node for Vorim AI — agent identity, permission checks, runtime control, and signed audit trails",
5
+ "keywords": [
6
+ "n8n-community-node-package",
7
+ "vorim",
8
+ "ai-agents",
9
+ "agent-identity",
10
+ "audit",
11
+ "permissions",
12
+ "runtime-control"
13
+ ],
14
+ "license": "MIT",
15
+ "author": "Vorim AI <kwame@vorim.ai>",
16
+ "homepage": "https://vorim.ai/integrations",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "https://github.com/Kzino/vorim-ai"
20
+ },
21
+ "main": "dist/nodes/Vorim/Vorim.node.js",
22
+ "scripts": {
23
+ "build": "tsc && mkdir -p dist/nodes/Vorim && cp nodes/Vorim/vorim.svg dist/nodes/Vorim/vorim.svg",
24
+ "prepublishOnly": "npm run build"
25
+ },
26
+ "files": [
27
+ "dist"
28
+ ],
29
+ "n8n": {
30
+ "n8nNodesApiVersion": 1,
31
+ "credentials": [
32
+ "dist/credentials/VorimApi.credentials.js"
33
+ ],
34
+ "nodes": [
35
+ "dist/nodes/Vorim/Vorim.node.js"
36
+ ]
37
+ },
38
+ "peerDependencies": {
39
+ "n8n-workflow": "*"
40
+ },
41
+ "devDependencies": {
42
+ "n8n-workflow": "^1.0.0",
43
+ "typescript": "^5.4.0"
44
+ }
45
+ }