n8n-nodes-2kw 6.2.0-dev.10 → 6.2.0-dev.13
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 +13 -1
- package/dist/nodes/TwoKw/TwoKw.node.js +4 -0
- package/dist/nodes/TwoKw/TwoKw.node.js.map +1 -1
- package/dist/nodes/TwoKw/descriptions/agent.d.ts +3 -0
- package/dist/nodes/TwoKw/descriptions/agent.js +117 -0
- package/dist/nodes/TwoKw/descriptions/agent.js.map +1 -0
- package/dist/nodes/TwoKw/descriptions/index.js +4 -0
- package/dist/nodes/TwoKw/descriptions/index.js.map +1 -1
- package/dist/nodes/TwoKw/methods.d.ts +2 -0
- package/dist/nodes/TwoKw/methods.js +15 -0
- package/dist/nodes/TwoKw/methods.js.map +1 -1
- package/dist/nodes/TwoKw/operations/agent.d.ts +32 -0
- package/dist/nodes/TwoKw/operations/agent.js +135 -0
- package/dist/nodes/TwoKw/operations/agent.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -29,10 +29,11 @@ n8n's credential test calls `GET /v1/models` against your base URL — if it suc
|
|
|
29
29
|
|
|
30
30
|
Drop the **2kw** node into a workflow. Pick a Resource and Operation.
|
|
31
31
|
|
|
32
|
-
Schema, Prompt, Schema Version, and Prompt Label fields are **searchable dropdowns** populated from the 2kw API on demand. Switch
|
|
32
|
+
Agent, Label, Schema, Prompt, Schema Version, and Prompt Label fields are **searchable dropdowns** populated from the 2kw API on demand. Switch a field to its manual mode (**By ID**, **By ID or Name**, or **By Name**) to paste a value or use an n8n expression instead.
|
|
33
33
|
|
|
34
34
|
| Resource | Operation | Notes |
|
|
35
35
|
| --- | --- | --- |
|
|
36
|
+
| Agent | Send Message | Runs one turn of a stored agent. `Agent` and `Label` are pickers (empty label = latest). Options: `Binary Properties` (comma-separated, uploaded as attachments), `Conversation ID`, `Previous Response ID`, `Simplify Output`. Fails if the agent pauses — see [Agents in n8n](#agents-in-n8n). |
|
|
36
37
|
| Schema | Get | Searchable picker. Returns schema metadata + active version. |
|
|
37
38
|
| Prompt | Get | Searchable picker. Returns prompt metadata. |
|
|
38
39
|
| Prompt | Compile | Compiles a prompt with a `Variables` JSON map. Optional `Version ID` (string) or `Label` (picker, depends on prompt). |
|
|
@@ -44,6 +45,14 @@ Schema, Prompt, Schema Version, and Prompt Label fields are **searchable dropdow
|
|
|
44
45
|
| Document | Convert From Source | URL or base64 (no binary upload). Same `Output Formats` + per-document item split as Convert. Pipeline option: fast / ocr / vlm. |
|
|
45
46
|
| Transcription | Transcribe | Multipart audio upload. Required: `Model`. Optional: `Language`, `Prompt`, `Response Format`, `Temperature`. |
|
|
46
47
|
|
|
48
|
+
## Agents in n8n
|
|
49
|
+
|
|
50
|
+
**Agent › Send Message** runs one turn of an agent you built in 2kw and returns its answer as `text`, together with `status`, `responseId`, `conversationId`, `model` and `usage`. Pass `conversationId` (or `responseId` as *Previous Response ID*) to a later Send Message to continue the thread. Files from binary properties are uploaded and attached to the message; images reach the model as pixels.
|
|
51
|
+
|
|
52
|
+
**n8n runs agents unattended.** When an agent's policy wants a human to approve a tool call, the run pauses and this operation fails with the tools that are waiting, for example `Agent paused for approval: create_invoice (apreq_…)`. For agents you call from n8n, use tools their policy lets run without a human decision — once auto-approval is available, set `classes.write` to `auto` in the agent's policy. A run that asks for a client-side tool fails the same way (`Agent requested client-side tool …`), because n8n cannot execute it. A run that stops early (`status: incomplete`, e.g. too many tool iterations) is returned, not failed; check `incompleteReason`. Leave *Retry On Fail* off for agents with write tools: a timed-out turn may still be running, and a retry repeats its tool calls.
|
|
53
|
+
|
|
54
|
+
**Using n8n's OpenAI node instead.** With the OpenAI credential set up as below, *OpenAI › Message a Model* (n8n 1.117 or later) can call an agent too: pick the model **By ID** and enter `agent/<name>` or `agent/<name>@<label>`. That is fine for text-only turns with agents that never pause. It cannot attach files, and its default *Simplify* setting hides a paused run — the workflow receives empty output and carries on. The OpenAI *Chat Model* inside n8n's AI Agent is not supported for agents: with a streaming trigger it requests streaming, which the 2kw Responses API does not offer yet.
|
|
55
|
+
|
|
47
56
|
## Chat completions (via n8n's OpenAI node)
|
|
48
57
|
|
|
49
58
|
The 2kw API exposes an OpenAI-compatible `/v1/chat/completions` endpoint. To use chat models, embeddings, vision, tool calling, or n8n's AI Agent against 2kw, **use n8n's built-in OpenAI node** rather than this package — that gives you the full OpenAI surface for free.
|
|
@@ -89,6 +98,9 @@ Prereleases publish under the `dev` dist-tag (`npm install n8n-nodes-2kw@dev`),
|
|
|
89
98
|
|
|
90
99
|
## Changelog
|
|
91
100
|
|
|
101
|
+
### Unreleased
|
|
102
|
+
- Added Agent › Send Message: agent and label pickers, file attachments, loud failure when the agent pauses for approval.
|
|
103
|
+
|
|
92
104
|
Entries below `1.0.0` predate npm publication and use the node's own numbering.
|
|
93
105
|
|
|
94
106
|
### 0.3.0
|
|
@@ -11,6 +11,7 @@ const prompt_1 = require("./operations/prompt");
|
|
|
11
11
|
const extraction_1 = require("./operations/extraction");
|
|
12
12
|
const document_1 = require("./operations/document");
|
|
13
13
|
const transcription_1 = require("./operations/transcription");
|
|
14
|
+
const agent_1 = require("./operations/agent");
|
|
14
15
|
const resourceHandlers = {};
|
|
15
16
|
function registerResource(name, handler) {
|
|
16
17
|
resourceHandlers[name] = handler;
|
|
@@ -78,4 +79,7 @@ registerResource('document', async function (itemIndex, operation) {
|
|
|
78
79
|
registerResource('transcription', async function (itemIndex, operation) {
|
|
79
80
|
return transcription_1.executeTranscription.call(this, itemIndex, operation);
|
|
80
81
|
});
|
|
82
|
+
registerResource('agent', async function (itemIndex, operation) {
|
|
83
|
+
return agent_1.executeAgent.call(this, itemIndex, operation);
|
|
84
|
+
});
|
|
81
85
|
//# sourceMappingURL=TwoKw.node.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TwoKw.node.js","sourceRoot":"","sources":["../../../nodes/TwoKw/TwoKw.node.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"TwoKw.node.js","sourceRoot":"","sources":["../../../nodes/TwoKw/TwoKw.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.agentFields = exports.agentOperations = void 0;
|
|
4
|
+
const showSendMessage = { resource: ['agent'], operation: ['sendMessage'] };
|
|
5
|
+
exports.agentOperations = {
|
|
6
|
+
displayName: 'Operation',
|
|
7
|
+
name: 'operation',
|
|
8
|
+
type: 'options',
|
|
9
|
+
noDataExpression: true,
|
|
10
|
+
displayOptions: { show: { resource: ['agent'] } },
|
|
11
|
+
default: 'sendMessage',
|
|
12
|
+
options: [
|
|
13
|
+
{
|
|
14
|
+
name: 'Send Message',
|
|
15
|
+
value: 'sendMessage',
|
|
16
|
+
description: 'Run one turn of a stored agent',
|
|
17
|
+
action: 'Send a message to an agent',
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
exports.agentFields = [
|
|
22
|
+
{
|
|
23
|
+
displayName: 'Agent',
|
|
24
|
+
name: 'agent',
|
|
25
|
+
type: 'resourceLocator',
|
|
26
|
+
default: { mode: 'list', value: '' },
|
|
27
|
+
required: true,
|
|
28
|
+
displayOptions: { show: showSendMessage },
|
|
29
|
+
description: 'Pick from a list, or enter an agent ID or name',
|
|
30
|
+
modes: [
|
|
31
|
+
{
|
|
32
|
+
displayName: 'From List',
|
|
33
|
+
name: 'list',
|
|
34
|
+
type: 'list',
|
|
35
|
+
typeOptions: { searchListMethod: 'searchAgents', searchable: true },
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
displayName: 'By ID or Name',
|
|
39
|
+
name: 'id',
|
|
40
|
+
type: 'string',
|
|
41
|
+
placeholder: 'support-agent',
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
displayName: 'Label',
|
|
47
|
+
name: 'label',
|
|
48
|
+
type: 'resourceLocator',
|
|
49
|
+
default: { mode: 'list', value: '' },
|
|
50
|
+
displayOptions: { show: showSendMessage },
|
|
51
|
+
description: 'Optional. Run the agent version this label points at (e.g. "prod"). Empty runs the latest version. The list needs the agent picked from the list or by ID.',
|
|
52
|
+
modes: [
|
|
53
|
+
{
|
|
54
|
+
displayName: 'From List',
|
|
55
|
+
name: 'list',
|
|
56
|
+
type: 'list',
|
|
57
|
+
typeOptions: { searchListMethod: 'searchAgentLabels', searchable: false },
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
displayName: 'By Name',
|
|
61
|
+
name: 'id',
|
|
62
|
+
type: 'string',
|
|
63
|
+
placeholder: 'prod',
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
displayName: 'Message',
|
|
69
|
+
name: 'message',
|
|
70
|
+
type: 'string',
|
|
71
|
+
required: true,
|
|
72
|
+
default: '',
|
|
73
|
+
typeOptions: { rows: 4 },
|
|
74
|
+
displayOptions: { show: showSendMessage },
|
|
75
|
+
description: 'The user message the agent answers',
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
displayName: 'Options',
|
|
79
|
+
name: 'options',
|
|
80
|
+
type: 'collection',
|
|
81
|
+
placeholder: 'Add Option',
|
|
82
|
+
default: {},
|
|
83
|
+
displayOptions: { show: showSendMessage },
|
|
84
|
+
options: [
|
|
85
|
+
{
|
|
86
|
+
displayName: 'Binary Properties',
|
|
87
|
+
name: 'binaryProperties',
|
|
88
|
+
type: 'string',
|
|
89
|
+
default: '',
|
|
90
|
+
placeholder: 'data, invoice',
|
|
91
|
+
description: 'Comma-separated binary properties of the input item to attach as files',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
displayName: 'Conversation ID',
|
|
95
|
+
name: 'conversationId',
|
|
96
|
+
type: 'string',
|
|
97
|
+
default: '',
|
|
98
|
+
description: 'Continue an existing conversation',
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
displayName: 'Previous Response ID',
|
|
102
|
+
name: 'previousResponseId',
|
|
103
|
+
type: 'string',
|
|
104
|
+
default: '',
|
|
105
|
+
description: 'Continue from a previous response of this agent',
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
displayName: 'Simplify Output',
|
|
109
|
+
name: 'simplify',
|
|
110
|
+
type: 'boolean',
|
|
111
|
+
default: true,
|
|
112
|
+
description: 'Whether to return text, status, IDs and usage instead of the raw response',
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
},
|
|
116
|
+
];
|
|
117
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../../nodes/TwoKw/descriptions/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resourceProperties = exports.resourceField = void 0;
|
|
4
|
+
const agent_1 = require("./agent");
|
|
4
5
|
const schema_1 = require("./schema");
|
|
5
6
|
const prompt_1 = require("./prompt");
|
|
6
7
|
const extraction_1 = require("./extraction");
|
|
@@ -15,6 +16,7 @@ exports.resourceField = {
|
|
|
15
16
|
// Alphabetical, not workflow order: n8n's community-node scan enforces
|
|
16
17
|
// `node-param-options-type-unsorted-items` (#363).
|
|
17
18
|
options: [
|
|
19
|
+
{ name: 'Agent', value: 'agent' },
|
|
18
20
|
{ name: 'Document', value: 'document' },
|
|
19
21
|
{ name: 'Extraction', value: 'extraction' },
|
|
20
22
|
{ name: 'Prompt', value: 'prompt' },
|
|
@@ -33,5 +35,7 @@ exports.resourceProperties = [
|
|
|
33
35
|
...document_1.documentFields,
|
|
34
36
|
transcription_1.transcriptionOperations,
|
|
35
37
|
...transcription_1.transcriptionFields,
|
|
38
|
+
agent_1.agentOperations,
|
|
39
|
+
...agent_1.agentFields,
|
|
36
40
|
];
|
|
37
41
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../nodes/TwoKw/descriptions/index.ts"],"names":[],"mappings":";;;AACA,qCAA0D;AAC1D,qCAA0D;AAC1D,6CAAsE;AACtE,yCAAgE;AAChE,mDAA+E;AAElE,QAAA,aAAa,GAAoB;IAC5C,WAAW,EAAE,UAAU;IACvB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,SAAS;IACf,gBAAgB,EAAE,IAAI;IACtB,OAAO,EAAE,QAAQ;IACjB,uEAAuE;IACvE,mDAAmD;IACnD,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;QACvC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;QAC3C,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;QACnC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;QACnC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;KAClD;CACF,CAAC;AAEW,QAAA,kBAAkB,GAAsB;IACnD,yBAAgB;IAChB,GAAG,qBAAY;IACf,yBAAgB;IAChB,GAAG,qBAAY;IACf,iCAAoB;IACpB,GAAG,6BAAgB;IACnB,6BAAkB;IAClB,GAAG,yBAAc;IACjB,uCAAuB;IACvB,GAAG,mCAAmB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../nodes/TwoKw/descriptions/index.ts"],"names":[],"mappings":";;;AACA,mCAAuD;AACvD,qCAA0D;AAC1D,qCAA0D;AAC1D,6CAAsE;AACtE,yCAAgE;AAChE,mDAA+E;AAElE,QAAA,aAAa,GAAoB;IAC5C,WAAW,EAAE,UAAU;IACvB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,SAAS;IACf,gBAAgB,EAAE,IAAI;IACtB,OAAO,EAAE,QAAQ;IACjB,uEAAuE;IACvE,mDAAmD;IACnD,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;QACjC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;QACvC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;QAC3C,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;QACnC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;QACnC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;KAClD;CACF,CAAC;AAEW,QAAA,kBAAkB,GAAsB;IACnD,yBAAgB;IAChB,GAAG,qBAAY;IACf,yBAAgB;IAChB,GAAG,qBAAY;IACf,iCAAoB;IACpB,GAAG,6BAAgB;IACnB,6BAAkB;IAClB,GAAG,yBAAc;IACjB,uCAAuB;IACvB,GAAG,mCAAmB;IACtB,uBAAe;IACf,GAAG,mBAAW;CACf,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { ILoadOptionsFunctions, INodeListSearchResult } from 'n8n-workflow';
|
|
2
2
|
export declare const methods: {
|
|
3
3
|
listSearch: {
|
|
4
|
+
searchAgents(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult>;
|
|
5
|
+
searchAgentLabels(this: ILoadOptionsFunctions): Promise<INodeListSearchResult>;
|
|
4
6
|
searchSchemas(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult>;
|
|
5
7
|
searchPrompts(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult>;
|
|
6
8
|
searchSchemaVersions(this: ILoadOptionsFunctions): Promise<INodeListSearchResult>;
|
|
@@ -29,6 +29,21 @@ function formatVersion(v) {
|
|
|
29
29
|
}
|
|
30
30
|
exports.methods = {
|
|
31
31
|
listSearch: {
|
|
32
|
+
async searchAgents(filter) {
|
|
33
|
+
const data = (await backboneGet(this, '/v1/agents', pageQuery(filter)));
|
|
34
|
+
return {
|
|
35
|
+
results: (data.content ?? []).map((a) => ({ name: a.name, value: a.id })),
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
async searchAgentLabels() {
|
|
39
|
+
const agentId = readParentId(this, 'agent');
|
|
40
|
+
if (!agentId)
|
|
41
|
+
return { results: [] };
|
|
42
|
+
const data = (await backboneGet(this, `/v1/agents/${encodeURIComponent(agentId)}/labels`));
|
|
43
|
+
return {
|
|
44
|
+
results: (data ?? []).map((l) => ({ name: l.name, value: l.name })),
|
|
45
|
+
};
|
|
46
|
+
},
|
|
32
47
|
async searchSchemas(filter) {
|
|
33
48
|
const data = (await backboneGet(this, '/v1/schemas', pageQuery(filter)));
|
|
34
49
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"methods.js","sourceRoot":"","sources":["../../../nodes/TwoKw/methods.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"methods.js","sourceRoot":"","sources":["../../../nodes/TwoKw/methods.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { IDataObject, IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
|
|
2
|
+
interface OutputItem {
|
|
3
|
+
type?: string;
|
|
4
|
+
role?: string;
|
|
5
|
+
content?: {
|
|
6
|
+
type?: string;
|
|
7
|
+
text?: string;
|
|
8
|
+
}[];
|
|
9
|
+
id?: string;
|
|
10
|
+
tool?: string;
|
|
11
|
+
name?: string;
|
|
12
|
+
status?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface AgentResponse {
|
|
15
|
+
id: string;
|
|
16
|
+
status: string;
|
|
17
|
+
model?: string;
|
|
18
|
+
output?: OutputItem[];
|
|
19
|
+
usage?: IDataObject | null;
|
|
20
|
+
incomplete_details?: {
|
|
21
|
+
reason?: string;
|
|
22
|
+
} | null;
|
|
23
|
+
conversation?: {
|
|
24
|
+
id?: string;
|
|
25
|
+
} | null;
|
|
26
|
+
}
|
|
27
|
+
/** `agent/<ref>` at the latest label (`agent/<ref>@` if the ref contains `@`), or `agent/<ref>@<label>`. */
|
|
28
|
+
export declare function buildAgentModel(ref: string, label: string): string;
|
|
29
|
+
/** Every assistant `output_text` part, in output order — the resource has no `output_text` field. */
|
|
30
|
+
export declare function responseText(response: AgentResponse): string;
|
|
31
|
+
export declare function executeAgent(this: IExecuteFunctions, itemIndex: number, operation: string): Promise<INodeExecutionData[]>;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildAgentModel = buildAgentModel;
|
|
4
|
+
exports.responseText = responseText;
|
|
5
|
+
exports.executeAgent = executeAgent;
|
|
6
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
7
|
+
const transport_1 = require("../transport");
|
|
8
|
+
/** `agent/<ref>` at the latest label (`agent/<ref>@` if the ref contains `@`), or `agent/<ref>@<label>`. */
|
|
9
|
+
function buildAgentModel(ref, label) {
|
|
10
|
+
if (label)
|
|
11
|
+
return `agent/${ref}@${label}`;
|
|
12
|
+
return ref.includes('@') ? `agent/${ref}@` : `agent/${ref}`;
|
|
13
|
+
}
|
|
14
|
+
/** Every assistant `output_text` part, in output order — the resource has no `output_text` field. */
|
|
15
|
+
function responseText(response) {
|
|
16
|
+
const parts = [];
|
|
17
|
+
for (const item of response.output ?? []) {
|
|
18
|
+
if (item.type !== 'message' || item.role !== 'assistant')
|
|
19
|
+
continue;
|
|
20
|
+
for (const part of item.content ?? []) {
|
|
21
|
+
if (part.type === 'output_text' && typeof part.text === 'string')
|
|
22
|
+
parts.push(part.text);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return parts.join('\n\n');
|
|
26
|
+
}
|
|
27
|
+
async function uploadAttachments(ctx, itemIndex, binaryProperties) {
|
|
28
|
+
const names = binaryProperties
|
|
29
|
+
.split(',')
|
|
30
|
+
.map((n) => n.trim())
|
|
31
|
+
.filter((n) => n.length > 0);
|
|
32
|
+
const item = ctx.getInputData()[itemIndex];
|
|
33
|
+
// Validate every property before the first upload, so a typo never leaves
|
|
34
|
+
// half the files uploaded for a turn that is not sent.
|
|
35
|
+
const entries = names.map((name) => {
|
|
36
|
+
const entry = item.binary?.[name];
|
|
37
|
+
if (!entry) {
|
|
38
|
+
throw new n8n_workflow_1.NodeOperationError(ctx.getNode(), `Binary property "${name}" not found on input item`, { itemIndex });
|
|
39
|
+
}
|
|
40
|
+
return { name, entry };
|
|
41
|
+
});
|
|
42
|
+
const parts = [];
|
|
43
|
+
for (const { name, entry } of entries) {
|
|
44
|
+
const buffer = await ctx.helpers.getBinaryDataBuffer(itemIndex, name);
|
|
45
|
+
const filename = entry.fileName ?? name;
|
|
46
|
+
const file = await (0, transport_1.apiRequest)(ctx, 'POST', '/v1/files', {
|
|
47
|
+
formData: { purpose: 'agent_input' },
|
|
48
|
+
binary: {
|
|
49
|
+
fieldName: 'file',
|
|
50
|
+
buffer,
|
|
51
|
+
filename,
|
|
52
|
+
mimeType: entry.mimeType ?? 'application/octet-stream',
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
parts.push({ type: 'input_file', file_id: file.id, filename: file.filename ?? filename });
|
|
56
|
+
}
|
|
57
|
+
return parts;
|
|
58
|
+
}
|
|
59
|
+
function simplify(response) {
|
|
60
|
+
const json = {
|
|
61
|
+
text: responseText(response),
|
|
62
|
+
status: response.status,
|
|
63
|
+
responseId: response.id,
|
|
64
|
+
conversationId: response.conversation?.id ?? null,
|
|
65
|
+
model: response.model,
|
|
66
|
+
usage: response.usage ?? null,
|
|
67
|
+
};
|
|
68
|
+
if (response.status === 'incomplete') {
|
|
69
|
+
json.incompleteReason = response.incomplete_details?.reason ?? null;
|
|
70
|
+
}
|
|
71
|
+
return json;
|
|
72
|
+
}
|
|
73
|
+
const APPROVAL_REQUEST = 'backbone:approval_request';
|
|
74
|
+
/**
|
|
75
|
+
* n8n runs agents unattended (spec D2): a turn that waits for a human or for a
|
|
76
|
+
* client-side tool fails the item loudly instead of reaching the workflow as
|
|
77
|
+
* empty output.
|
|
78
|
+
*/
|
|
79
|
+
function assertNotPaused(ctx, response, itemIndex) {
|
|
80
|
+
if (response.status === 'completed' || response.status === 'incomplete')
|
|
81
|
+
return;
|
|
82
|
+
const output = response.output ?? [];
|
|
83
|
+
if (response.status === 'requires_action') {
|
|
84
|
+
const pending = output.filter((item) => item.type === APPROVAL_REQUEST && item.status === 'in_progress');
|
|
85
|
+
if (pending.length > 0) {
|
|
86
|
+
throw new n8n_workflow_1.NodeOperationError(ctx.getNode(), `Agent paused for approval: ${pending.map((a) => `${a.tool} (${a.id})`).join(', ')}`, {
|
|
87
|
+
itemIndex,
|
|
88
|
+
description: `Response ${response.id} is waiting for a human decision, and n8n runs agents unattended. ` +
|
|
89
|
+
"Change this agent's hitlPolicy so these tools no longer require approval " +
|
|
90
|
+
'(set `classes.write` to `auto` once auto-approval is available), ' +
|
|
91
|
+
'or remove them from agents you call from n8n.',
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
// Server tools that already ran precede the relay calls as completed
|
|
95
|
+
// function_call items; only the in_progress ones wait for the caller.
|
|
96
|
+
const relays = output.filter((item) => item.type === 'function_call' && item.status === 'in_progress');
|
|
97
|
+
if (relays.length > 0) {
|
|
98
|
+
throw new n8n_workflow_1.NodeOperationError(ctx.getNode(), `Agent requested client-side tool ${relays.map((r) => r.name).join(', ')}, which n8n cannot execute`, {
|
|
99
|
+
itemIndex,
|
|
100
|
+
description: `Response ${response.id} is waiting for the caller to run these tools.`,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
throw new n8n_workflow_1.NodeOperationError(ctx.getNode(), `Agent run ended with unexpected status "${response.status}"`, { itemIndex, description: `Response ${response.id}.` });
|
|
105
|
+
}
|
|
106
|
+
async function executeAgent(itemIndex, operation) {
|
|
107
|
+
if (operation !== 'sendMessage') {
|
|
108
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown agent operation: ${operation}`, {
|
|
109
|
+
itemIndex,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
const ref = (0, transport_1.extractResourceId)(this.getNodeParameter('agent', itemIndex)).trim();
|
|
113
|
+
const label = (0, transport_1.extractResourceId)(this.getNodeParameter('label', itemIndex, '')).trim();
|
|
114
|
+
const message = this.getNodeParameter('message', itemIndex);
|
|
115
|
+
const options = this.getNodeParameter('options', itemIndex, {});
|
|
116
|
+
const content = [{ type: 'input_text', text: message }];
|
|
117
|
+
if (options.binaryProperties) {
|
|
118
|
+
content.push(...(await uploadAttachments(this, itemIndex, options.binaryProperties)));
|
|
119
|
+
}
|
|
120
|
+
const body = {
|
|
121
|
+
model: buildAgentModel(ref, label),
|
|
122
|
+
input: [{ type: 'message', role: 'user', content }],
|
|
123
|
+
};
|
|
124
|
+
const conversationId = options.conversationId?.trim();
|
|
125
|
+
const previousResponseId = options.previousResponseId?.trim();
|
|
126
|
+
if (conversationId)
|
|
127
|
+
body.conversation = conversationId;
|
|
128
|
+
if (previousResponseId)
|
|
129
|
+
body.previous_response_id = previousResponseId;
|
|
130
|
+
const response = await (0, transport_1.apiRequest)(this, 'POST', '/v1/responses', { body });
|
|
131
|
+
assertNotPaused(this, response, itemIndex);
|
|
132
|
+
const json = options.simplify === false ? response : simplify(response);
|
|
133
|
+
return [{ json, pairedItem: itemIndex }];
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../../nodes/TwoKw/operations/agent.ts"],"names":[],"mappings":"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"}
|