@loomcycle/n8n-nodes-loomcycle 1.0.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/LICENSE +201 -0
- package/README.md +190 -0
- package/dist/credentials/LoomCycleApi.credentials.d.ts +21 -0
- package/dist/credentials/LoomCycleApi.credentials.js +81 -0
- package/dist/credentials/LoomCycleApi.credentials.js.map +1 -0
- package/dist/nodes/LoomCycle/LoomCycle.node.d.ts +22 -0
- package/dist/nodes/LoomCycle/LoomCycle.node.js +403 -0
- package/dist/nodes/LoomCycle/LoomCycle.node.js.map +1 -0
- package/dist/nodes/LoomCycle/LoomCycle.node.json +13 -0
- package/dist/nodes/LoomCycle/LoomCycle.svg +13 -0
- package/dist/nodes/LoomCycle/descriptions/agentdef.d.ts +21 -0
- package/dist/nodes/LoomCycle/descriptions/agentdef.js +155 -0
- package/dist/nodes/LoomCycle/descriptions/agentdef.js.map +1 -0
- package/dist/nodes/LoomCycle/descriptions/channels.d.ts +19 -0
- package/dist/nodes/LoomCycle/descriptions/channels.js +164 -0
- package/dist/nodes/LoomCycle/descriptions/channels.js.map +1 -0
- package/dist/nodes/LoomCycle/descriptions/index.d.ts +6 -0
- package/dist/nodes/LoomCycle/descriptions/index.js +16 -0
- package/dist/nodes/LoomCycle/descriptions/index.js.map +1 -0
- package/dist/nodes/LoomCycle/descriptions/mcpserverdef.d.ts +29 -0
- package/dist/nodes/LoomCycle/descriptions/mcpserverdef.js +241 -0
- package/dist/nodes/LoomCycle/descriptions/mcpserverdef.js.map +1 -0
- package/dist/nodes/LoomCycle/descriptions/memory.d.ts +20 -0
- package/dist/nodes/LoomCycle/descriptions/memory.js +119 -0
- package/dist/nodes/LoomCycle/descriptions/memory.js.map +1 -0
- package/dist/nodes/LoomCycle/descriptions/runs.d.ts +17 -0
- package/dist/nodes/LoomCycle/descriptions/runs.js +226 -0
- package/dist/nodes/LoomCycle/descriptions/runs.js.map +1 -0
- package/dist/nodes/LoomCycle/descriptions/skilldef.d.ts +10 -0
- package/dist/nodes/LoomCycle/descriptions/skilldef.js +144 -0
- package/dist/nodes/LoomCycle/descriptions/skilldef.js.map +1 -0
- package/dist/nodes/LoomCycle/helpers/capability.d.ts +42 -0
- package/dist/nodes/LoomCycle/helpers/capability.js +54 -0
- package/dist/nodes/LoomCycle/helpers/capability.js.map +1 -0
- package/dist/nodes/LoomCycle/helpers/client.d.ts +15 -0
- package/dist/nodes/LoomCycle/helpers/client.js +30 -0
- package/dist/nodes/LoomCycle/helpers/client.js.map +1 -0
- package/dist/nodes/LoomCycle/helpers/envVarHints.d.ts +30 -0
- package/dist/nodes/LoomCycle/helpers/envVarHints.js +67 -0
- package/dist/nodes/LoomCycle/helpers/envVarHints.js.map +1 -0
- package/dist/nodes/LoomCycle/helpers/errors.d.ts +23 -0
- package/dist/nodes/LoomCycle/helpers/errors.js +189 -0
- package/dist/nodes/LoomCycle/helpers/errors.js.map +1 -0
- package/dist/nodes/LoomCycle/helpers/loadOptions.d.ts +24 -0
- package/dist/nodes/LoomCycle/helpers/loadOptions.js +89 -0
- package/dist/nodes/LoomCycle/helpers/loadOptions.js.map +1 -0
- package/dist/nodes/LoomCycle/helpers/segments.d.ts +13 -0
- package/dist/nodes/LoomCycle/helpers/segments.js +31 -0
- package/dist/nodes/LoomCycle/helpers/segments.js.map +1 -0
- package/dist/nodes/LoomCycle/helpers/staticData.d.ts +5 -0
- package/dist/nodes/LoomCycle/helpers/staticData.js +31 -0
- package/dist/nodes/LoomCycle/helpers/staticData.js.map +1 -0
- package/dist/nodes/LoomCycle/helpers/streaming.d.ts +31 -0
- package/dist/nodes/LoomCycle/helpers/streaming.js +48 -0
- package/dist/nodes/LoomCycle/helpers/streaming.js.map +1 -0
- package/dist/nodes/LoomCycleChannelMessage/LoomCycleChannelMessage.node.d.ts +24 -0
- package/dist/nodes/LoomCycleChannelMessage/LoomCycleChannelMessage.node.js +162 -0
- package/dist/nodes/LoomCycleChannelMessage/LoomCycleChannelMessage.node.js.map +1 -0
- package/dist/nodes/LoomCycleChannelMessage/LoomCycleChannelMessage.node.json +13 -0
- package/dist/nodes/LoomCycleChannelMessage/LoomCycleChannelMessage.svg +9 -0
- package/dist/nodes/LoomCycleChannelMessage/helpers/subscribe.d.ts +20 -0
- package/dist/nodes/LoomCycleChannelMessage/helpers/subscribe.js +106 -0
- package/dist/nodes/LoomCycleChannelMessage/helpers/subscribe.js.map +1 -0
- package/dist/nodes/LoomCycleChannelTool/LoomCycleChannelTool.node.d.ts +5 -0
- package/dist/nodes/LoomCycleChannelTool/LoomCycleChannelTool.node.js +114 -0
- package/dist/nodes/LoomCycleChannelTool/LoomCycleChannelTool.node.js.map +1 -0
- package/dist/nodes/LoomCycleChannelTool/LoomCycleChannelTool.node.json +13 -0
- package/dist/nodes/LoomCycleChannelTool/LoomCycleChannelTool.svg +13 -0
- package/dist/nodes/LoomCycleMcpServerTool/LoomCycleMcpServerTool.node.d.ts +5 -0
- package/dist/nodes/LoomCycleMcpServerTool/LoomCycleMcpServerTool.node.js +259 -0
- package/dist/nodes/LoomCycleMcpServerTool/LoomCycleMcpServerTool.node.js.map +1 -0
- package/dist/nodes/LoomCycleMcpServerTool/LoomCycleMcpServerTool.node.json +13 -0
- package/dist/nodes/LoomCycleMcpServerTool/LoomCycleMcpServerTool.svg +14 -0
- package/dist/nodes/LoomCycleMemoryTool/LoomCycleMemoryTool.node.d.ts +5 -0
- package/dist/nodes/LoomCycleMemoryTool/LoomCycleMemoryTool.node.js +108 -0
- package/dist/nodes/LoomCycleMemoryTool/LoomCycleMemoryTool.node.js.map +1 -0
- package/dist/nodes/LoomCycleMemoryTool/LoomCycleMemoryTool.node.json +13 -0
- package/dist/nodes/LoomCycleMemoryTool/LoomCycleMemoryTool.svg +11 -0
- package/dist/nodes/LoomCycleRunCompleted/LoomCycleRunCompleted.node.d.ts +18 -0
- package/dist/nodes/LoomCycleRunCompleted/LoomCycleRunCompleted.node.js +188 -0
- package/dist/nodes/LoomCycleRunCompleted/LoomCycleRunCompleted.node.js.map +1 -0
- package/dist/nodes/LoomCycleRunCompleted/LoomCycleRunCompleted.node.json +13 -0
- package/dist/nodes/LoomCycleRunCompleted/LoomCycleRunCompleted.svg +10 -0
- package/dist/nodes/LoomCycleRunCompleted/helpers/poll.d.ts +12 -0
- package/dist/nodes/LoomCycleRunCompleted/helpers/poll.js +69 -0
- package/dist/nodes/LoomCycleRunCompleted/helpers/poll.js.map +1 -0
- package/dist/nodes/LoomCycleRunCompleted/helpers/sse.d.ts +29 -0
- package/dist/nodes/LoomCycleRunCompleted/helpers/sse.js +61 -0
- package/dist/nodes/LoomCycleRunCompleted/helpers/sse.js.map +1 -0
- package/dist/nodes/LoomCycleSubAgentTool/LoomCycleSubAgentTool.node.d.ts +5 -0
- package/dist/nodes/LoomCycleSubAgentTool/LoomCycleSubAgentTool.node.js +131 -0
- package/dist/nodes/LoomCycleSubAgentTool/LoomCycleSubAgentTool.node.js.map +1 -0
- package/dist/nodes/LoomCycleSubAgentTool/LoomCycleSubAgentTool.node.json +13 -0
- package/dist/nodes/LoomCycleSubAgentTool/LoomCycleSubAgentTool.svg +12 -0
- package/dist/nodes/_shared/clusterTool.d.ts +19 -0
- package/dist/nodes/_shared/clusterTool.js +36 -0
- package/dist/nodes/_shared/clusterTool.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +86 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { INodeProperties } from 'n8n-workflow';
|
|
2
|
+
/**
|
|
3
|
+
* Operation descriptions for the `channel` resource. Five ops, all
|
|
4
|
+
* direct adapter calls (Channel CRUD shipped on `@loomcycle/client`
|
|
5
|
+
* v0.9.2 via loomcycle PR #180).
|
|
6
|
+
*
|
|
7
|
+
* - Publish → publishChannel (with optional deliver_at)
|
|
8
|
+
* - Subscribe → subscribeChannel (auto-ack batch)
|
|
9
|
+
* - Peek → peekChannel (non-destructive)
|
|
10
|
+
* - Ack → ackChannel (advance committed cursor)
|
|
11
|
+
* - List Channels → listChannels (admin listing)
|
|
12
|
+
*
|
|
13
|
+
* Every op (except List Channels) takes a `scope` parameter: `global`
|
|
14
|
+
* for admin-scoped channels and `user` for per-user-scoped channels.
|
|
15
|
+
* The `userId` parameter applies only when `scope=user`.
|
|
16
|
+
*
|
|
17
|
+
* Op options array is alphabetised by name.
|
|
18
|
+
*/
|
|
19
|
+
export declare const channelOps: INodeProperties[];
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.channelOps = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Operation descriptions for the `channel` resource. Five ops, all
|
|
6
|
+
* direct adapter calls (Channel CRUD shipped on `@loomcycle/client`
|
|
7
|
+
* v0.9.2 via loomcycle PR #180).
|
|
8
|
+
*
|
|
9
|
+
* - Publish → publishChannel (with optional deliver_at)
|
|
10
|
+
* - Subscribe → subscribeChannel (auto-ack batch)
|
|
11
|
+
* - Peek → peekChannel (non-destructive)
|
|
12
|
+
* - Ack → ackChannel (advance committed cursor)
|
|
13
|
+
* - List Channels → listChannels (admin listing)
|
|
14
|
+
*
|
|
15
|
+
* Every op (except List Channels) takes a `scope` parameter: `global`
|
|
16
|
+
* for admin-scoped channels and `user` for per-user-scoped channels.
|
|
17
|
+
* The `userId` parameter applies only when `scope=user`.
|
|
18
|
+
*
|
|
19
|
+
* Op options array is alphabetised by name.
|
|
20
|
+
*/
|
|
21
|
+
exports.channelOps = [
|
|
22
|
+
{
|
|
23
|
+
displayName: 'Operation',
|
|
24
|
+
name: 'operation',
|
|
25
|
+
type: 'options',
|
|
26
|
+
noDataExpression: true,
|
|
27
|
+
displayOptions: { show: { resource: ['channel'] } },
|
|
28
|
+
options: [
|
|
29
|
+
{
|
|
30
|
+
name: 'Ack',
|
|
31
|
+
value: 'ack',
|
|
32
|
+
description: 'Advance the committed cursor for a (channel, scope, scope_id) tuple',
|
|
33
|
+
action: 'Ack a channel cursor',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: 'List Channels',
|
|
37
|
+
value: 'listChannels',
|
|
38
|
+
description: 'List operator-declared channels with aggregate stats',
|
|
39
|
+
action: 'List channels',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Peek',
|
|
43
|
+
value: 'peek',
|
|
44
|
+
description: 'Non-destructive read — does not advance the committed cursor',
|
|
45
|
+
action: 'Peek at channel messages',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'Publish',
|
|
49
|
+
value: 'publish',
|
|
50
|
+
description: 'Publish a JSON payload to a channel (optionally deferred)',
|
|
51
|
+
action: 'Publish to a channel',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: 'Subscribe',
|
|
55
|
+
value: 'subscribe',
|
|
56
|
+
description: 'Long-poll for the next message batch and auto-advance the cursor',
|
|
57
|
+
action: 'Subscribe to a channel',
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
default: 'publish',
|
|
61
|
+
},
|
|
62
|
+
// ---- Channel name (Publish / Subscribe / Peek / Ack) ----
|
|
63
|
+
{
|
|
64
|
+
displayName: 'Channel Name or ID',
|
|
65
|
+
name: 'channel',
|
|
66
|
+
type: 'options',
|
|
67
|
+
typeOptions: { loadOptionsMethod: 'loadChannels' },
|
|
68
|
+
default: '',
|
|
69
|
+
required: true,
|
|
70
|
+
displayOptions: {
|
|
71
|
+
show: { resource: ['channel'], operation: ['publish', 'subscribe', 'peek', 'ack'] },
|
|
72
|
+
},
|
|
73
|
+
description: 'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>',
|
|
74
|
+
},
|
|
75
|
+
// ---- Scope (Publish / Subscribe / Peek / Ack) ----
|
|
76
|
+
{
|
|
77
|
+
displayName: 'Scope',
|
|
78
|
+
name: 'scope',
|
|
79
|
+
type: 'options',
|
|
80
|
+
default: 'global',
|
|
81
|
+
displayOptions: {
|
|
82
|
+
show: { resource: ['channel'], operation: ['publish', 'subscribe', 'peek', 'ack'] },
|
|
83
|
+
},
|
|
84
|
+
options: [
|
|
85
|
+
{ name: 'Global (Admin)', value: 'global', description: 'Admin-scoped channel — single global queue' },
|
|
86
|
+
{ name: 'User (Per-User)', value: 'user', description: 'Per-user-scoped channel — independent queue per user_id' },
|
|
87
|
+
],
|
|
88
|
+
description: 'Whether the channel operates at the admin (global) or per-user scope',
|
|
89
|
+
},
|
|
90
|
+
// ---- User ID (Publish / Subscribe / Peek / Ack when scope=user) ----
|
|
91
|
+
{
|
|
92
|
+
displayName: 'User ID',
|
|
93
|
+
name: 'userId',
|
|
94
|
+
type: 'string',
|
|
95
|
+
default: '',
|
|
96
|
+
displayOptions: {
|
|
97
|
+
show: { resource: ['channel'], operation: ['publish', 'subscribe', 'peek', 'ack'], scope: ['user'] },
|
|
98
|
+
},
|
|
99
|
+
description: 'User_id for the per-user scope. Empty = use the credential\'s Default User ID.',
|
|
100
|
+
},
|
|
101
|
+
// ---- Publish: payload + optional deliver_at ----
|
|
102
|
+
{
|
|
103
|
+
displayName: 'Payload',
|
|
104
|
+
name: 'payload',
|
|
105
|
+
type: 'json',
|
|
106
|
+
default: '{}',
|
|
107
|
+
required: true,
|
|
108
|
+
displayOptions: { show: { resource: ['channel'], operation: ['publish'] } },
|
|
109
|
+
description: 'JSON payload to publish — the substrate stores it verbatim',
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
displayName: 'Deliver At',
|
|
113
|
+
name: 'deliverAt',
|
|
114
|
+
type: 'dateTime',
|
|
115
|
+
default: '',
|
|
116
|
+
displayOptions: { show: { resource: ['channel'], operation: ['publish'] } },
|
|
117
|
+
description: 'Optional deferred-delivery timestamp (ISO 8601). Empty = deliver immediately.',
|
|
118
|
+
},
|
|
119
|
+
// ---- Subscribe / Peek: cursor + limits ----
|
|
120
|
+
{
|
|
121
|
+
displayName: 'Additional Fields',
|
|
122
|
+
name: 'additionalFields',
|
|
123
|
+
type: 'collection',
|
|
124
|
+
placeholder: 'Add Field',
|
|
125
|
+
default: {},
|
|
126
|
+
displayOptions: { show: { resource: ['channel'], operation: ['subscribe', 'peek'] } },
|
|
127
|
+
options: [
|
|
128
|
+
{
|
|
129
|
+
displayName: 'From Cursor',
|
|
130
|
+
name: 'fromCursor',
|
|
131
|
+
type: 'string',
|
|
132
|
+
default: '',
|
|
133
|
+
description: 'Resume reading from this cursor. Empty = use the committed cursor (Subscribe) or start of queue (Peek).',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
displayName: 'Max Messages',
|
|
137
|
+
name: 'maxMessages',
|
|
138
|
+
type: 'number',
|
|
139
|
+
default: 10,
|
|
140
|
+
typeOptions: { minValue: 1, maxValue: 1000 },
|
|
141
|
+
description: 'Maximum number of messages to return in this call',
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
displayName: 'Wait Ms (Subscribe Only)',
|
|
145
|
+
name: 'waitMs',
|
|
146
|
+
type: 'number',
|
|
147
|
+
default: 0,
|
|
148
|
+
typeOptions: { minValue: 0, maxValue: 60000 },
|
|
149
|
+
description: 'Subscribe long-poll wait if the queue is empty. Ignored for Peek.',
|
|
150
|
+
},
|
|
151
|
+
],
|
|
152
|
+
},
|
|
153
|
+
// ---- Ack: cursor ----
|
|
154
|
+
{
|
|
155
|
+
displayName: 'Cursor',
|
|
156
|
+
name: 'cursor',
|
|
157
|
+
type: 'string',
|
|
158
|
+
default: '',
|
|
159
|
+
required: true,
|
|
160
|
+
displayOptions: { show: { resource: ['channel'], operation: ['ack'] } },
|
|
161
|
+
description: 'New committed cursor — must be monotonically forward; older cursors raise a conflict',
|
|
162
|
+
},
|
|
163
|
+
];
|
|
164
|
+
//# sourceMappingURL=channels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channels.js","sourceRoot":"","sources":["../../../../nodes/LoomCycle/descriptions/channels.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,UAAU,GAAsB;IAC5C;QACC,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;QACnD,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,KAAK;gBACZ,WAAW,EAAE,qEAAqE;gBAClF,MAAM,EAAE,sBAAsB;aAC9B;YACD;gBACC,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,cAAc;gBACrB,WAAW,EAAE,sDAAsD;gBACnE,MAAM,EAAE,eAAe;aACvB;YACD;gBACC,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,MAAM;gBACb,WAAW,EAAE,8DAA8D;gBAC3E,MAAM,EAAE,0BAA0B;aAClC;YACD;gBACC,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,SAAS;gBAChB,WAAW,EAAE,2DAA2D;gBACxE,MAAM,EAAE,sBAAsB;aAC9B;YACD;gBACC,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,WAAW;gBAClB,WAAW,EAAE,kEAAkE;gBAC/E,MAAM,EAAE,wBAAwB;aAChC;SACD;QACD,OAAO,EAAE,SAAS;KAClB;IAED,4DAA4D;IAC5D;QACC,WAAW,EAAE,oBAAoB;QACjC,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE;QAClD,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE;YACf,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;SACnF;QACD,WAAW,EACV,gHAAgH;KACjH;IAED,qDAAqD;IACrD;QACC,WAAW,EAAE,OAAO;QACpB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,QAAQ;QACjB,cAAc,EAAE;YACf,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;SACnF;QACD,OAAO,EAAE;YACR,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;YACtG,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,yDAAyD,EAAE;SAClH;QACD,WAAW,EAAE,sEAAsE;KACnF;IAED,uEAAuE;IACvE;QACC,WAAW,EAAE,SAAS;QACtB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,cAAc,EAAE;YACf,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;SACpG;QACD,WAAW,EAAE,gFAAgF;KAC7F;IAED,mDAAmD;IACnD;QACC,WAAW,EAAE,SAAS;QACtB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;QAC3E,WAAW,EAAE,4DAA4D;KACzE;IACD;QACC,WAAW,EAAE,YAAY;QACzB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,EAAE;QACX,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;QAC3E,WAAW,EAAE,+EAA+E;KAC5F;IAED,8CAA8C;IAC9C;QACC,WAAW,EAAE,mBAAmB;QAChC,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,WAAW;QACxB,OAAO,EAAE,EAAE;QACX,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE;QACrF,OAAO,EAAE;YACR;gBACC,WAAW,EAAE,aAAa;gBAC1B,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,yGAAyG;aACtH;YACD;gBACC,WAAW,EAAE,cAAc;gBAC3B,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC5C,WAAW,EAAE,mDAAmD;aAChE;YACD;gBACC,WAAW,EAAE,0BAA0B;gBACvC,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAC7C,WAAW,EAAE,mEAAmE;aAChF;SACD;KACD;IAED,wBAAwB;IACxB;QACC,WAAW,EAAE,QAAQ;QACrB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE;QACvE,WAAW,EAAE,sFAAsF;KACnG;CACD,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mcpServerDefOps = exports.skillDefOps = exports.agentDefOps = exports.channelOps = exports.memoryOps = exports.runOps = void 0;
|
|
4
|
+
var runs_1 = require("./runs");
|
|
5
|
+
Object.defineProperty(exports, "runOps", { enumerable: true, get: function () { return runs_1.runOps; } });
|
|
6
|
+
var memory_1 = require("./memory");
|
|
7
|
+
Object.defineProperty(exports, "memoryOps", { enumerable: true, get: function () { return memory_1.memoryOps; } });
|
|
8
|
+
var channels_1 = require("./channels");
|
|
9
|
+
Object.defineProperty(exports, "channelOps", { enumerable: true, get: function () { return channels_1.channelOps; } });
|
|
10
|
+
var agentdef_1 = require("./agentdef");
|
|
11
|
+
Object.defineProperty(exports, "agentDefOps", { enumerable: true, get: function () { return agentdef_1.agentDefOps; } });
|
|
12
|
+
var skilldef_1 = require("./skilldef");
|
|
13
|
+
Object.defineProperty(exports, "skillDefOps", { enumerable: true, get: function () { return skilldef_1.skillDefOps; } });
|
|
14
|
+
var mcpserverdef_1 = require("./mcpserverdef");
|
|
15
|
+
Object.defineProperty(exports, "mcpServerDefOps", { enumerable: true, get: function () { return mcpserverdef_1.mcpServerDefOps; } });
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../nodes/LoomCycle/descriptions/index.ts"],"names":[],"mappings":";;;AAAA,+BAAgC;AAAvB,8FAAA,MAAM,OAAA;AACf,mCAAqC;AAA5B,mGAAA,SAAS,OAAA;AAClB,uCAAwC;AAA/B,sGAAA,UAAU,OAAA;AACnB,uCAAyC;AAAhC,uGAAA,WAAW,OAAA;AACpB,uCAAyC;AAAhC,uGAAA,WAAW,OAAA;AACpB,+CAAiD;AAAxC,+GAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { INodeProperties } from 'n8n-workflow';
|
|
2
|
+
/**
|
|
3
|
+
* Operation descriptions for the `mcpServerDef` resource — dynamic MCP
|
|
4
|
+
* server registration (loomcycle v0.9.2+, PR #177). 8 ops mapping to
|
|
5
|
+
* `client.mcpServerDef({op})`:
|
|
6
|
+
*
|
|
7
|
+
* - Register (create) → register an HTTP/Streamable-HTTP MCP server
|
|
8
|
+
* - Fork → branch from an existing def_id
|
|
9
|
+
* - Get → return the active row for a name
|
|
10
|
+
* - List Versions → list all versions for a name
|
|
11
|
+
* - Promote → make a specific def_id the active version
|
|
12
|
+
* - Retire → unregister; closes pool entry; in-flight calls complete
|
|
13
|
+
* - Rediscover → refresh cached discovered_tools (re-runs tools/list)
|
|
14
|
+
* - Verify → content_sha256 comparison
|
|
15
|
+
*
|
|
16
|
+
* Hard constraints enforced substrate-side:
|
|
17
|
+
* - Transport must be HTTP or Streamable-HTTP (stdio rejected — yaml-only).
|
|
18
|
+
* - URL hostname must be in operator's HTTPHostAllowlist (SSRF defence).
|
|
19
|
+
* - Name collisions with static yaml mcp_servers entries are refused.
|
|
20
|
+
*
|
|
21
|
+
* Headers carry the v0.8.14 `${LOOMCYCLE_*}` / `${run.user_bearer}`
|
|
22
|
+
* substitution patterns; n8n nodes accept TEMPLATE STRINGS only —
|
|
23
|
+
* plaintext credentials never travel through this wire path. The UI
|
|
24
|
+
* surfaces a "Required env vars on the loomcycle deployment" notice
|
|
25
|
+
* extracted from the headers via helpers/envVarHints.ts.
|
|
26
|
+
*
|
|
27
|
+
* Op options array is alphabetised by name.
|
|
28
|
+
*/
|
|
29
|
+
export declare const mcpServerDefOps: INodeProperties[];
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mcpServerDefOps = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Operation descriptions for the `mcpServerDef` resource — dynamic MCP
|
|
6
|
+
* server registration (loomcycle v0.9.2+, PR #177). 8 ops mapping to
|
|
7
|
+
* `client.mcpServerDef({op})`:
|
|
8
|
+
*
|
|
9
|
+
* - Register (create) → register an HTTP/Streamable-HTTP MCP server
|
|
10
|
+
* - Fork → branch from an existing def_id
|
|
11
|
+
* - Get → return the active row for a name
|
|
12
|
+
* - List Versions → list all versions for a name
|
|
13
|
+
* - Promote → make a specific def_id the active version
|
|
14
|
+
* - Retire → unregister; closes pool entry; in-flight calls complete
|
|
15
|
+
* - Rediscover → refresh cached discovered_tools (re-runs tools/list)
|
|
16
|
+
* - Verify → content_sha256 comparison
|
|
17
|
+
*
|
|
18
|
+
* Hard constraints enforced substrate-side:
|
|
19
|
+
* - Transport must be HTTP or Streamable-HTTP (stdio rejected — yaml-only).
|
|
20
|
+
* - URL hostname must be in operator's HTTPHostAllowlist (SSRF defence).
|
|
21
|
+
* - Name collisions with static yaml mcp_servers entries are refused.
|
|
22
|
+
*
|
|
23
|
+
* Headers carry the v0.8.14 `${LOOMCYCLE_*}` / `${run.user_bearer}`
|
|
24
|
+
* substitution patterns; n8n nodes accept TEMPLATE STRINGS only —
|
|
25
|
+
* plaintext credentials never travel through this wire path. The UI
|
|
26
|
+
* surfaces a "Required env vars on the loomcycle deployment" notice
|
|
27
|
+
* extracted from the headers via helpers/envVarHints.ts.
|
|
28
|
+
*
|
|
29
|
+
* Op options array is alphabetised by name.
|
|
30
|
+
*/
|
|
31
|
+
exports.mcpServerDefOps = [
|
|
32
|
+
{
|
|
33
|
+
displayName: 'Operation',
|
|
34
|
+
name: 'operation',
|
|
35
|
+
type: 'options',
|
|
36
|
+
noDataExpression: true,
|
|
37
|
+
displayOptions: { show: { resource: ['mcpServerDef'] } },
|
|
38
|
+
options: [
|
|
39
|
+
{
|
|
40
|
+
name: 'Fork',
|
|
41
|
+
value: 'fork',
|
|
42
|
+
description: 'Branch from an existing def_id with a partial overlay',
|
|
43
|
+
action: 'Fork an MCP server definition',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'Get',
|
|
47
|
+
value: 'get',
|
|
48
|
+
description: 'Return the active row for a name',
|
|
49
|
+
action: 'Get an MCP server definition',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'List Versions',
|
|
53
|
+
value: 'list',
|
|
54
|
+
description: 'List all versions for a name',
|
|
55
|
+
action: 'List MCP server definition versions',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'Promote',
|
|
59
|
+
value: 'promote',
|
|
60
|
+
description: 'Make a specific def_id the active version',
|
|
61
|
+
action: 'Promote an MCP server definition',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: 'Rediscover',
|
|
65
|
+
value: 'rediscover',
|
|
66
|
+
description: 'Refresh the cached discovered_tools snapshot (re-runs tools/list)',
|
|
67
|
+
action: 'Rediscover MCP server tools',
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'Register',
|
|
71
|
+
value: 'create',
|
|
72
|
+
description: 'Register a new HTTP / Streamable-HTTP MCP server',
|
|
73
|
+
action: 'Register an MCP server',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: 'Retire',
|
|
77
|
+
value: 'retire',
|
|
78
|
+
description: 'Unregister; closes pool entry. In-flight calls complete.',
|
|
79
|
+
action: 'Retire an MCP server definition',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: 'Verify',
|
|
83
|
+
value: 'verify',
|
|
84
|
+
description: 'Compare a content_sha256 against the deployed active row',
|
|
85
|
+
action: 'Verify an MCP server definition hash',
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
default: 'create',
|
|
89
|
+
},
|
|
90
|
+
// ---- Name (used by every op except Promote) ----
|
|
91
|
+
{
|
|
92
|
+
displayName: 'Name',
|
|
93
|
+
name: 'name',
|
|
94
|
+
type: 'string',
|
|
95
|
+
default: '',
|
|
96
|
+
required: true,
|
|
97
|
+
displayOptions: {
|
|
98
|
+
show: {
|
|
99
|
+
resource: ['mcpServerDef'],
|
|
100
|
+
operation: ['create', 'get', 'list', 'retire', 'rediscover', 'verify'],
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
description: 'MCP server registration name — referenced by agents as `mcp__<name>__<tool>` in allowed_tools',
|
|
104
|
+
},
|
|
105
|
+
// ---- Def ID (Promote / Retire-by-id) ----
|
|
106
|
+
{
|
|
107
|
+
displayName: 'Def ID',
|
|
108
|
+
name: 'defId',
|
|
109
|
+
type: 'string',
|
|
110
|
+
default: '',
|
|
111
|
+
required: true,
|
|
112
|
+
displayOptions: { show: { resource: ['mcpServerDef'], operation: ['promote'] } },
|
|
113
|
+
description: 'Specific def_id to act on',
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
displayName: 'Def ID (Optional)',
|
|
117
|
+
name: 'defId',
|
|
118
|
+
type: 'string',
|
|
119
|
+
default: '',
|
|
120
|
+
displayOptions: { show: { resource: ['mcpServerDef'], operation: ['retire'] } },
|
|
121
|
+
description: 'Specific def_id to retire. Leave empty to retire the active version of the name above.',
|
|
122
|
+
},
|
|
123
|
+
// ---- Parent Def ID (Fork) ----
|
|
124
|
+
{
|
|
125
|
+
displayName: 'Parent Def ID',
|
|
126
|
+
name: 'parentDefId',
|
|
127
|
+
type: 'string',
|
|
128
|
+
default: '',
|
|
129
|
+
required: true,
|
|
130
|
+
displayOptions: { show: { resource: ['mcpServerDef'], operation: ['fork'] } },
|
|
131
|
+
description: 'Def_id of the row to fork. Provide the overlay below to specify the diff.',
|
|
132
|
+
},
|
|
133
|
+
// ---- Transport (Register only — Fork inherits from parent unless overlay sets it) ----
|
|
134
|
+
{
|
|
135
|
+
displayName: 'Transport',
|
|
136
|
+
name: 'transport',
|
|
137
|
+
type: 'options',
|
|
138
|
+
default: 'streamable-http',
|
|
139
|
+
required: true,
|
|
140
|
+
displayOptions: { show: { resource: ['mcpServerDef'], operation: ['create'] } },
|
|
141
|
+
options: [
|
|
142
|
+
{ name: 'HTTP', value: 'http', description: 'Classic JSON-RPC over HTTP POST' },
|
|
143
|
+
{ name: 'Streamable HTTP', value: 'streamable-http', description: 'MCP Streamable HTTP transport (recommended)' },
|
|
144
|
+
],
|
|
145
|
+
description: 'Transport for the MCP server. Stdio is intentionally not supported — register stdio MCPs in loomcycle.yaml instead.',
|
|
146
|
+
},
|
|
147
|
+
// ---- URL (Register only — Fork inherits / overrides via overlay) ----
|
|
148
|
+
{
|
|
149
|
+
displayName: 'URL',
|
|
150
|
+
name: 'url',
|
|
151
|
+
type: 'string',
|
|
152
|
+
default: '',
|
|
153
|
+
required: true,
|
|
154
|
+
placeholder: 'https://mcp.example.com/v1',
|
|
155
|
+
displayOptions: { show: { resource: ['mcpServerDef'], operation: ['create'] } },
|
|
156
|
+
description: 'MCP server endpoint URL. The hostname must be in loomcycle\'s HTTPHostAllowlist (SSRF defence).',
|
|
157
|
+
},
|
|
158
|
+
// ---- Headers (Register only) ----
|
|
159
|
+
{
|
|
160
|
+
displayName: 'Headers',
|
|
161
|
+
name: 'headers',
|
|
162
|
+
type: 'fixedCollection',
|
|
163
|
+
placeholder: 'Add Header',
|
|
164
|
+
default: {},
|
|
165
|
+
typeOptions: { multipleValues: true },
|
|
166
|
+
displayOptions: { show: { resource: ['mcpServerDef'], operation: ['create'] } },
|
|
167
|
+
options: [
|
|
168
|
+
{
|
|
169
|
+
name: 'header',
|
|
170
|
+
displayName: 'Header',
|
|
171
|
+
values: [
|
|
172
|
+
{
|
|
173
|
+
displayName: 'Name',
|
|
174
|
+
name: 'name',
|
|
175
|
+
type: 'string',
|
|
176
|
+
default: '',
|
|
177
|
+
required: true,
|
|
178
|
+
description: 'Header name (e.g. Authorization)',
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
displayName: 'Value',
|
|
182
|
+
name: 'value',
|
|
183
|
+
type: 'string',
|
|
184
|
+
default: '',
|
|
185
|
+
required: true,
|
|
186
|
+
description: 'Header value. Supports `${LOOMCYCLE_FOO}` env-var substitution and `${run.user_bearer:-FALLBACK}` per-run substitution.',
|
|
187
|
+
},
|
|
188
|
+
],
|
|
189
|
+
},
|
|
190
|
+
],
|
|
191
|
+
description: 'HTTP headers sent on every MCP call. Use template strings (`${LOOMCYCLE_FOO_TOKEN}`) to reference env vars set on the loomcycle deployment — plaintext credentials never travel through this wire path.',
|
|
192
|
+
},
|
|
193
|
+
// ---- Env-var hint notice (Register only) ----
|
|
194
|
+
{
|
|
195
|
+
displayName: 'Required Env Vars on Loomcycle',
|
|
196
|
+
name: 'envVarNotice',
|
|
197
|
+
type: 'notice',
|
|
198
|
+
default: '',
|
|
199
|
+
displayOptions: { show: { resource: ['mcpServerDef'], operation: ['create'] } },
|
|
200
|
+
description: 'Loomcycle substitutes `${LOOMCYCLE_*}` tokens in header values from its own env at request time. Set these env vars on the loomcycle deployment before registering — the node validates the substitution at registration time but will not transmit plaintext credentials.',
|
|
201
|
+
},
|
|
202
|
+
// ---- Description (Register / Fork) ----
|
|
203
|
+
{
|
|
204
|
+
displayName: 'Description',
|
|
205
|
+
name: 'defDescription',
|
|
206
|
+
type: 'string',
|
|
207
|
+
default: '',
|
|
208
|
+
displayOptions: { show: { resource: ['mcpServerDef'], operation: ['create', 'fork'] } },
|
|
209
|
+
description: 'Operator-visible description of this MCP server registration',
|
|
210
|
+
},
|
|
211
|
+
// ---- Overlay JSON (Fork only — Register uses the structured fields above) ----
|
|
212
|
+
{
|
|
213
|
+
displayName: 'Overlay (JSON)',
|
|
214
|
+
name: 'overlay',
|
|
215
|
+
type: 'json',
|
|
216
|
+
default: '{}',
|
|
217
|
+
typeOptions: { rows: 6 },
|
|
218
|
+
displayOptions: { show: { resource: ['mcpServerDef'], operation: ['fork'] } },
|
|
219
|
+
description: 'JSON diff applied on top of the parent row (e.g. `{"URL": "https://staging.example.com"}` to override the URL)',
|
|
220
|
+
},
|
|
221
|
+
// ---- Promote-After-Register (Register only) ----
|
|
222
|
+
{
|
|
223
|
+
displayName: 'Promote to Active',
|
|
224
|
+
name: 'promote',
|
|
225
|
+
type: 'boolean',
|
|
226
|
+
default: true,
|
|
227
|
+
displayOptions: { show: { resource: ['mcpServerDef'], operation: ['create', 'fork'] } },
|
|
228
|
+
description: 'Whether to auto-promote the new registration to active immediately. Defaults true for Register — typical operator intent is "register and use".',
|
|
229
|
+
},
|
|
230
|
+
// ---- Content SHA256 (Verify) ----
|
|
231
|
+
{
|
|
232
|
+
displayName: 'Content SHA256',
|
|
233
|
+
name: 'contentSha256',
|
|
234
|
+
type: 'string',
|
|
235
|
+
default: '',
|
|
236
|
+
required: true,
|
|
237
|
+
displayOptions: { show: { resource: ['mcpServerDef'], operation: ['verify'] } },
|
|
238
|
+
description: 'Local content_sha256 to compare against the deployed active row',
|
|
239
|
+
},
|
|
240
|
+
];
|
|
241
|
+
//# sourceMappingURL=mcpserverdef.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpserverdef.js","sourceRoot":"","sources":["../../../../nodes/LoomCycle/descriptions/mcpserverdef.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { INodeProperties } from 'n8n-workflow';
|
|
2
|
+
/**
|
|
3
|
+
* Operation descriptions for the `memory` resource. **Read-only in this
|
|
4
|
+
* sub-phase** — the `@loomcycle/client` adapter exposes 4 read methods:
|
|
5
|
+
* - List Scopes → listMemoryScopes
|
|
6
|
+
* - List Scope IDs → listMemoryScopeIDs
|
|
7
|
+
* - List Entries → listMemoryEntries
|
|
8
|
+
* - Get → getMemoryEntry
|
|
9
|
+
*
|
|
10
|
+
* Set / Delete / Search are intentionally deferred: the substrate's
|
|
11
|
+
* Memory writes go through the in-band Memory tool (called from inside
|
|
12
|
+
* an agent run), not via admin HTTP. Exposing them from this node would
|
|
13
|
+
* require either (a) new adapter methods + new admin endpoints on the
|
|
14
|
+
* loomcycle side, or (b) routing through a one-shot agent — option (b)
|
|
15
|
+
* was the pre-v0.9.2 Channel-Subscribe workaround we explicitly chose
|
|
16
|
+
* NOT to repeat. Once option (a) lands upstream, these ops join here.
|
|
17
|
+
*
|
|
18
|
+
* Op options array is alphabetised by name.
|
|
19
|
+
*/
|
|
20
|
+
export declare const memoryOps: INodeProperties[];
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.memoryOps = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Operation descriptions for the `memory` resource. **Read-only in this
|
|
6
|
+
* sub-phase** — the `@loomcycle/client` adapter exposes 4 read methods:
|
|
7
|
+
* - List Scopes → listMemoryScopes
|
|
8
|
+
* - List Scope IDs → listMemoryScopeIDs
|
|
9
|
+
* - List Entries → listMemoryEntries
|
|
10
|
+
* - Get → getMemoryEntry
|
|
11
|
+
*
|
|
12
|
+
* Set / Delete / Search are intentionally deferred: the substrate's
|
|
13
|
+
* Memory writes go through the in-band Memory tool (called from inside
|
|
14
|
+
* an agent run), not via admin HTTP. Exposing them from this node would
|
|
15
|
+
* require either (a) new adapter methods + new admin endpoints on the
|
|
16
|
+
* loomcycle side, or (b) routing through a one-shot agent — option (b)
|
|
17
|
+
* was the pre-v0.9.2 Channel-Subscribe workaround we explicitly chose
|
|
18
|
+
* NOT to repeat. Once option (a) lands upstream, these ops join here.
|
|
19
|
+
*
|
|
20
|
+
* Op options array is alphabetised by name.
|
|
21
|
+
*/
|
|
22
|
+
exports.memoryOps = [
|
|
23
|
+
{
|
|
24
|
+
displayName: 'Operation',
|
|
25
|
+
name: 'operation',
|
|
26
|
+
type: 'options',
|
|
27
|
+
noDataExpression: true,
|
|
28
|
+
displayOptions: { show: { resource: ['memory'] } },
|
|
29
|
+
options: [
|
|
30
|
+
{
|
|
31
|
+
name: 'Get Entry',
|
|
32
|
+
value: 'getEntry',
|
|
33
|
+
description: 'Get a single memory entry by (scope, scope_id, key)',
|
|
34
|
+
action: 'Get a memory entry',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'List Entries',
|
|
38
|
+
value: 'listEntries',
|
|
39
|
+
description: 'List entries for a (scope, scope_id) pair with optional prefix + limit',
|
|
40
|
+
action: 'List memory entries',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'List Scope IDs',
|
|
44
|
+
value: 'listScopeIDs',
|
|
45
|
+
description: 'List the scope_ids known for a given scope, with row counts',
|
|
46
|
+
action: 'List memory scope ids',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'List Scopes',
|
|
50
|
+
value: 'listScopes',
|
|
51
|
+
description: 'List the scope kinds known to the substrate (e.g. agent, user)',
|
|
52
|
+
action: 'List memory scopes',
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
default: 'listScopes',
|
|
56
|
+
},
|
|
57
|
+
// ---- Scope (used by List Scope IDs / List Entries / Get) ----
|
|
58
|
+
{
|
|
59
|
+
displayName: 'Scope Name or ID',
|
|
60
|
+
name: 'scope',
|
|
61
|
+
type: 'options',
|
|
62
|
+
typeOptions: { loadOptionsMethod: 'loadMemoryScopes' },
|
|
63
|
+
default: '',
|
|
64
|
+
required: true,
|
|
65
|
+
displayOptions: {
|
|
66
|
+
show: { resource: ['memory'], operation: ['listScopeIDs', 'listEntries', 'getEntry'] },
|
|
67
|
+
},
|
|
68
|
+
description: 'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>',
|
|
69
|
+
},
|
|
70
|
+
// ---- Scope ID (used by List Entries / Get) ----
|
|
71
|
+
{
|
|
72
|
+
displayName: 'Scope ID',
|
|
73
|
+
name: 'scopeID',
|
|
74
|
+
type: 'string',
|
|
75
|
+
default: '',
|
|
76
|
+
required: true,
|
|
77
|
+
displayOptions: {
|
|
78
|
+
show: { resource: ['memory'], operation: ['listEntries', 'getEntry'] },
|
|
79
|
+
},
|
|
80
|
+
description: 'Identifier within the scope (e.g. an agent_id when scope=agent, or a user_id when scope=user)',
|
|
81
|
+
},
|
|
82
|
+
// ---- List Entries options ----
|
|
83
|
+
{
|
|
84
|
+
displayName: 'Additional Fields',
|
|
85
|
+
name: 'additionalFields',
|
|
86
|
+
type: 'collection',
|
|
87
|
+
placeholder: 'Add Field',
|
|
88
|
+
default: {},
|
|
89
|
+
displayOptions: { show: { resource: ['memory'], operation: ['listEntries'] } },
|
|
90
|
+
options: [
|
|
91
|
+
{
|
|
92
|
+
displayName: 'Key Prefix',
|
|
93
|
+
name: 'prefix',
|
|
94
|
+
type: 'string',
|
|
95
|
+
default: '',
|
|
96
|
+
description: 'Return only entries whose key starts with this prefix',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
displayName: 'Limit',
|
|
100
|
+
name: 'limit',
|
|
101
|
+
type: 'number',
|
|
102
|
+
default: 50,
|
|
103
|
+
typeOptions: { minValue: 1 },
|
|
104
|
+
description: 'Max number of results to return',
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
// ---- Key (used by Get) ----
|
|
109
|
+
{
|
|
110
|
+
displayName: 'Key',
|
|
111
|
+
name: 'key',
|
|
112
|
+
type: 'string',
|
|
113
|
+
default: '',
|
|
114
|
+
required: true,
|
|
115
|
+
displayOptions: { show: { resource: ['memory'], operation: ['getEntry'] } },
|
|
116
|
+
description: 'Entry key to fetch',
|
|
117
|
+
},
|
|
118
|
+
];
|
|
119
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../../nodes/LoomCycle/descriptions/memory.ts"],"names":[],"mappings":"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"}
|