@nornweave/n8n-nodes-nornweave 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,113 @@
1
+ # @nornweave/n8n-nodes-nornweave
2
+
3
+ This is an n8n community node for [NornWeave](https://nornweave.io) - an open-source, self-hosted Inbox-as-a-Service API for AI Agents.
4
+
5
+ NornWeave provides a stateful email layer (Inboxes, Threads, History) and an intelligent layer (Markdown parsing, Semantic Search) for LLMs.
6
+
7
+ [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.
8
+
9
+ ## Installation
10
+
11
+ Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.
12
+
13
+ ### Quick Install
14
+
15
+ 1. Go to **Settings** > **Community Nodes**
16
+ 2. Select **Install**
17
+ 3. Enter `@nornweave/n8n-nodes-nornweave`
18
+ 4. Agree to the risks and select **Install**
19
+
20
+ ## Credentials
21
+
22
+ To connect to your NornWeave instance, you need to create credentials:
23
+
24
+ 1. Go to **Credentials** > **Add credential**
25
+ 2. Search for "NornWeave API"
26
+ 3. Configure:
27
+ - **Base URL**: The URL of your NornWeave instance (e.g., `http://localhost:8000` or `https://nornweave.yourdomain.com`)
28
+ - **API Key** (optional): If your instance requires authentication, enter your API key
29
+
30
+ The credential will be tested by calling the `/health` endpoint on your NornWeave instance.
31
+
32
+ ## Operations
33
+
34
+ ### NornWeave Node
35
+
36
+ The main node supports the following operations:
37
+
38
+ #### Inbox
39
+ - **Create**: Create a new email inbox
40
+ - **Delete**: Delete an inbox
41
+ - **Get**: Get inbox details by ID
42
+ - **Get Many**: List all inboxes
43
+
44
+ #### Message
45
+ - **Get**: Get a message by ID
46
+ - **Get Many**: List messages in an inbox
47
+ - **Send**: Send an outbound email (supports Markdown body, reply threading)
48
+
49
+ #### Thread
50
+ - **Get**: Get a thread with all messages (LLM-ready format)
51
+ - **Get Many**: List threads in an inbox
52
+
53
+ #### Search
54
+ - **Query**: Search messages by content
55
+
56
+ ### NornWeave Trigger
57
+
58
+ The trigger node listens for webhook events from NornWeave:
59
+
60
+ - **Email Received**: New inbound email arrived
61
+ - **Email Sent**: Outbound email accepted for delivery
62
+ - **Email Delivered**: Email successfully delivered
63
+ - **Email Bounced**: Email bounced (permanent failure)
64
+ - **Email Opened**: Recipient opened the email
65
+ - **Email Clicked**: Recipient clicked a link
66
+
67
+ ## Webhook Setup
68
+
69
+ The NornWeave Trigger requires webhook configuration in your email provider:
70
+
71
+ 1. Add a **NornWeave Trigger** node to your workflow
72
+ 2. Copy the **Webhook URL** shown in the node (use the Production URL for live workflows)
73
+ 3. Configure your email provider (Mailgun, SendGrid, SES, Resend) to forward webhooks to this URL
74
+ 4. Activate your workflow
75
+
76
+ See the [NornWeave n8n integration guide](https://nornweave.io/docs/integrations/n8n) for detailed setup instructions for each provider.
77
+
78
+ ## Example Workflows
79
+
80
+ ### Auto-reply to Support Emails
81
+
82
+ ```
83
+ NornWeave Trigger (email.received)
84
+ → IF (subject contains "support")
85
+ → OpenAI (generate reply)
86
+ → NornWeave (Send message, reply_to_thread_id)
87
+ ```
88
+
89
+ ### Notify on Email Bounce
90
+
91
+ ```
92
+ NornWeave Trigger (email.bounced)
93
+ → Slack (post to #alerts channel)
94
+ ```
95
+
96
+ ### Weekly Inbox Summary
97
+
98
+ ```
99
+ Schedule Trigger (weekly)
100
+ → NornWeave (Get Many threads)
101
+ → OpenAI (summarize)
102
+ → Email (send summary)
103
+ ```
104
+
105
+ ## Resources
106
+
107
+ - [NornWeave Documentation](https://nornweave.io/docs)
108
+ - [NornWeave GitHub](https://github.com/nornweave/nornweave)
109
+ - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
110
+
111
+ ## License
112
+
113
+ MIT
@@ -0,0 +1,10 @@
1
+ import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class NornWeaveApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ icon: "file:../icons/nornweave.svg";
6
+ documentationUrl: string;
7
+ properties: INodeProperties[];
8
+ authenticate: IAuthenticateGeneric;
9
+ test: ICredentialTestRequest;
10
+ }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NornWeaveApi = void 0;
4
+ class NornWeaveApi {
5
+ constructor() {
6
+ this.name = 'nornWeaveApi';
7
+ this.displayName = 'NornWeave API';
8
+ this.icon = 'file:../icons/nornweave.svg';
9
+ this.documentationUrl = 'https://nornweave.io/docs/integrations/n8n';
10
+ this.properties = [
11
+ {
12
+ displayName: 'Base URL',
13
+ name: 'baseUrl',
14
+ type: 'string',
15
+ default: 'http://localhost:8000',
16
+ placeholder: 'https://your-nornweave-instance.com',
17
+ description: 'The base URL of your NornWeave instance',
18
+ required: true,
19
+ },
20
+ {
21
+ displayName: 'API Key',
22
+ name: 'apiKey',
23
+ type: 'string',
24
+ typeOptions: { password: true },
25
+ default: '',
26
+ description: 'Optional API key for authentication. Leave empty if your instance does not require authentication.',
27
+ required: false,
28
+ },
29
+ ];
30
+ this.authenticate = {
31
+ type: 'generic',
32
+ properties: {
33
+ headers: {
34
+ 'X-API-Key': '={{$credentials?.apiKey}}',
35
+ },
36
+ },
37
+ };
38
+ this.test = {
39
+ request: {
40
+ baseURL: '={{$credentials?.baseUrl}}',
41
+ url: '/health',
42
+ method: 'GET',
43
+ },
44
+ };
45
+ }
46
+ }
47
+ exports.NornWeaveApi = NornWeaveApi;
48
+ //# sourceMappingURL=NornWeaveApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NornWeaveApi.credentials.js","sourceRoot":"","sources":["../../credentials/NornWeaveApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,YAAY;IAAzB;QACE,SAAI,GAAG,cAAc,CAAC;QAEtB,gBAAW,GAAG,eAAe,CAAC;QAE9B,SAAI,GAAG,6BAAsC,CAAC;QAE9C,qBAAgB,GAAG,4CAA4C,CAAC;QAEhE,eAAU,GAAsB;YAC9B;gBACE,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,uBAAuB;gBAChC,WAAW,EAAE,qCAAqC;gBAClD,WAAW,EAAE,yCAAyC;gBACtD,QAAQ,EAAE,IAAI;aACf;YACD;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,WAAW,EAAE,oGAAoG;gBACjH,QAAQ,EAAE,KAAK;aAChB;SACF,CAAC;QAEF,iBAAY,GAAyB;YACnC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,WAAW,EAAE,2BAA2B;iBACzC;aACF;SACF,CAAC;QAEF,SAAI,GAA2B;YAC7B,OAAO,EAAE;gBACP,OAAO,EAAE,4BAA4B;gBACrC,GAAG,EAAE,SAAS;gBACd,MAAM,EAAE,KAAK;aACd;SACF,CAAC;IACJ,CAAC;CAAA;AA9CD,oCA8CC"}
@@ -0,0 +1,20 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
2
+ <defs>
3
+ <linearGradient id="gradient" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#6366f1;stop-opacity:1" />
5
+ <stop offset="100%" style="stop-color:#8b5cf6;stop-opacity:1" />
6
+ </linearGradient>
7
+ </defs>
8
+ <!-- Background circle -->
9
+ <circle cx="50" cy="50" r="45" fill="url(#gradient)"/>
10
+ <!-- Stylized "N" representing threads/weaving -->
11
+ <path d="M30 70 L30 30 L50 55 L50 30 L70 30 L70 70 L50 45 L50 70 Z"
12
+ fill="white"
13
+ stroke="white"
14
+ stroke-width="2"
15
+ stroke-linejoin="round"/>
16
+ <!-- Three dots representing the Norns -->
17
+ <circle cx="35" cy="22" r="4" fill="white" opacity="0.8"/>
18
+ <circle cx="50" cy="18" r="4" fill="white" opacity="0.8"/>
19
+ <circle cx="65" cy="22" r="4" fill="white" opacity="0.8"/>
20
+ </svg>
@@ -0,0 +1,4 @@
1
+ import { type INodeType, type INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class NornWeave implements INodeType {
3
+ description: INodeTypeDescription;
4
+ }