@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 +113 -0
- package/dist/credentials/NornWeaveApi.credentials.d.ts +10 -0
- package/dist/credentials/NornWeaveApi.credentials.js +48 -0
- package/dist/credentials/NornWeaveApi.credentials.js.map +1 -0
- package/dist/icons/nornweave.svg +20 -0
- package/dist/nodes/NornWeave/NornWeave.node.d.ts +4 -0
- package/dist/nodes/NornWeave/NornWeave.node.js +701 -0
- package/dist/nodes/NornWeave/NornWeave.node.js.map +1 -0
- package/dist/nodes/NornWeave/errors.d.ts +17 -0
- package/dist/nodes/NornWeave/errors.js +90 -0
- package/dist/nodes/NornWeave/errors.js.map +1 -0
- package/dist/nodes/NornWeaveTrigger/NornWeaveTrigger.node.d.ts +12 -0
- package/dist/nodes/NornWeaveTrigger/NornWeaveTrigger.node.js +125 -0
- package/dist/nodes/NornWeaveTrigger/NornWeaveTrigger.node.js.map +1 -0
- package/dist/package.json +60 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +60 -0
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>
|