@nodetool-ai/base-nodes 0.7.0-rc.11
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/dist/index.d.ts +72 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +270 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/audio-wav.d.ts +66 -0
- package/dist/lib/audio-wav.d.ts.map +1 -0
- package/dist/lib/audio-wav.js +215 -0
- package/dist/lib/audio-wav.js.map +1 -0
- package/dist/nodes/agents.d.ts +253 -0
- package/dist/nodes/agents.d.ts.map +1 -0
- package/dist/nodes/agents.js +2784 -0
- package/dist/nodes/agents.js.map +1 -0
- package/dist/nodes/anthropic.d.ts +26 -0
- package/dist/nodes/anthropic.d.ts.map +1 -0
- package/dist/nodes/anthropic.js +133 -0
- package/dist/nodes/anthropic.js.map +1 -0
- package/dist/nodes/apify.d.ts +120 -0
- package/dist/nodes/apify.d.ts.map +1 -0
- package/dist/nodes/apify.js +618 -0
- package/dist/nodes/apify.js.map +1 -0
- package/dist/nodes/audio.d.ts +301 -0
- package/dist/nodes/audio.d.ts.map +1 -0
- package/dist/nodes/audio.js +1274 -0
- package/dist/nodes/audio.js.map +1 -0
- package/dist/nodes/code-node.d.ts +34 -0
- package/dist/nodes/code-node.d.ts.map +1 -0
- package/dist/nodes/code-node.js +343 -0
- package/dist/nodes/code-node.js.map +1 -0
- package/dist/nodes/code.d.ts +301 -0
- package/dist/nodes/code.d.ts.map +1 -0
- package/dist/nodes/code.js +850 -0
- package/dist/nodes/code.js.map +1 -0
- package/dist/nodes/compare.d.ts +18 -0
- package/dist/nodes/compare.d.ts.map +1 -0
- package/dist/nodes/compare.js +122 -0
- package/dist/nodes/compare.js.map +1 -0
- package/dist/nodes/constant.d.ts +315 -0
- package/dist/nodes/constant.d.ts.map +1 -0
- package/dist/nodes/constant.js +715 -0
- package/dist/nodes/constant.js.map +1 -0
- package/dist/nodes/control.d.ts +83 -0
- package/dist/nodes/control.d.ts.map +1 -0
- package/dist/nodes/control.js +212 -0
- package/dist/nodes/control.js.map +1 -0
- package/dist/nodes/data.d.ts +369 -0
- package/dist/nodes/data.d.ts.map +1 -0
- package/dist/nodes/data.js +1590 -0
- package/dist/nodes/data.js.map +1 -0
- package/dist/nodes/document.d.ts +134 -0
- package/dist/nodes/document.d.ts.map +1 -0
- package/dist/nodes/document.js +984 -0
- package/dist/nodes/document.js.map +1 -0
- package/dist/nodes/extended-placeholders.d.ts +6 -0
- package/dist/nodes/extended-placeholders.d.ts.map +1 -0
- package/dist/nodes/extended-placeholders.js +19 -0
- package/dist/nodes/extended-placeholders.js.map +1 -0
- package/dist/nodes/gemini.d.ts +109 -0
- package/dist/nodes/gemini.d.ts.map +1 -0
- package/dist/nodes/gemini.js +861 -0
- package/dist/nodes/gemini.js.map +1 -0
- package/dist/nodes/generators.d.ts +84 -0
- package/dist/nodes/generators.d.ts.map +1 -0
- package/dist/nodes/generators.js +937 -0
- package/dist/nodes/generators.js.map +1 -0
- package/dist/nodes/image.d.ts +232 -0
- package/dist/nodes/image.d.ts.map +1 -0
- package/dist/nodes/image.js +1395 -0
- package/dist/nodes/image.js.map +1 -0
- package/dist/nodes/input.d.ts +445 -0
- package/dist/nodes/input.d.ts.map +1 -0
- package/dist/nodes/input.js +1459 -0
- package/dist/nodes/input.js.map +1 -0
- package/dist/nodes/kie-dynamic.d.ts +31 -0
- package/dist/nodes/kie-dynamic.d.ts.map +1 -0
- package/dist/nodes/kie-dynamic.js +270 -0
- package/dist/nodes/kie-dynamic.js.map +1 -0
- package/dist/nodes/lib-audio-dsp.d.ts +85 -0
- package/dist/nodes/lib-audio-dsp.d.ts.map +1 -0
- package/dist/nodes/lib-audio-dsp.js +450 -0
- package/dist/nodes/lib-audio-dsp.js.map +1 -0
- package/dist/nodes/lib-audio-effects.d.ts +116 -0
- package/dist/nodes/lib-audio-effects.d.ts.map +1 -0
- package/dist/nodes/lib-audio-effects.js +905 -0
- package/dist/nodes/lib-audio-effects.js.map +1 -0
- package/dist/nodes/lib-browser.d.ts +99 -0
- package/dist/nodes/lib-browser.d.ts.map +1 -0
- package/dist/nodes/lib-browser.js +692 -0
- package/dist/nodes/lib-browser.js.map +1 -0
- package/dist/nodes/lib-charts.d.ts +20 -0
- package/dist/nodes/lib-charts.d.ts.map +1 -0
- package/dist/nodes/lib-charts.js +245 -0
- package/dist/nodes/lib-charts.js.map +1 -0
- package/dist/nodes/lib-datetime.d.ts +108 -0
- package/dist/nodes/lib-datetime.d.ts.map +1 -0
- package/dist/nodes/lib-datetime.js +421 -0
- package/dist/nodes/lib-datetime.js.map +1 -0
- package/dist/nodes/lib-doc-convert.d.ts +19 -0
- package/dist/nodes/lib-doc-convert.d.ts.map +1 -0
- package/dist/nodes/lib-doc-convert.js +257 -0
- package/dist/nodes/lib-doc-convert.js.map +1 -0
- package/dist/nodes/lib-doc-transform.d.ts +39 -0
- package/dist/nodes/lib-doc-transform.d.ts.map +1 -0
- package/dist/nodes/lib-doc-transform.js +335 -0
- package/dist/nodes/lib-doc-transform.js.map +1 -0
- package/dist/nodes/lib-docx.d.ts +106 -0
- package/dist/nodes/lib-docx.d.ts.map +1 -0
- package/dist/nodes/lib-docx.js +595 -0
- package/dist/nodes/lib-docx.js.map +1 -0
- package/dist/nodes/lib-epub.d.ts +55 -0
- package/dist/nodes/lib-epub.d.ts.map +1 -0
- package/dist/nodes/lib-epub.js +220 -0
- package/dist/nodes/lib-epub.js.map +1 -0
- package/dist/nodes/lib-excel.d.ts +74 -0
- package/dist/nodes/lib-excel.d.ts.map +1 -0
- package/dist/nodes/lib-excel.js +448 -0
- package/dist/nodes/lib-excel.js.map +1 -0
- package/dist/nodes/lib-graphql.d.ts +66 -0
- package/dist/nodes/lib-graphql.d.ts.map +1 -0
- package/dist/nodes/lib-graphql.js +333 -0
- package/dist/nodes/lib-graphql.js.map +1 -0
- package/dist/nodes/lib-grid.d.ts +27 -0
- package/dist/nodes/lib-grid.d.ts.map +1 -0
- package/dist/nodes/lib-grid.js +172 -0
- package/dist/nodes/lib-grid.js.map +1 -0
- package/dist/nodes/lib-html-parse.d.ts +108 -0
- package/dist/nodes/lib-html-parse.d.ts.map +1 -0
- package/dist/nodes/lib-html-parse.js +365 -0
- package/dist/nodes/lib-html-parse.js.map +1 -0
- package/dist/nodes/lib-http.d.ts +98 -0
- package/dist/nodes/lib-http.d.ts.map +1 -0
- package/dist/nodes/lib-http.js +267 -0
- package/dist/nodes/lib-http.js.map +1 -0
- package/dist/nodes/lib-image-color-grading.d.ts +3 -0
- package/dist/nodes/lib-image-color-grading.d.ts.map +1 -0
- package/dist/nodes/lib-image-color-grading.js +1386 -0
- package/dist/nodes/lib-image-color-grading.js.map +1 -0
- package/dist/nodes/lib-image-draw.d.ts +3 -0
- package/dist/nodes/lib-image-draw.d.ts.map +1 -0
- package/dist/nodes/lib-image-draw.js +470 -0
- package/dist/nodes/lib-image-draw.js.map +1 -0
- package/dist/nodes/lib-image-enhance.d.ts +3 -0
- package/dist/nodes/lib-image-enhance.d.ts.map +1 -0
- package/dist/nodes/lib-image-enhance.js +731 -0
- package/dist/nodes/lib-image-enhance.js.map +1 -0
- package/dist/nodes/lib-image-filter.d.ts +3 -0
- package/dist/nodes/lib-image-filter.d.ts.map +1 -0
- package/dist/nodes/lib-image-filter.js +684 -0
- package/dist/nodes/lib-image-filter.js.map +1 -0
- package/dist/nodes/lib-image-utils.d.ts +24 -0
- package/dist/nodes/lib-image-utils.d.ts.map +1 -0
- package/dist/nodes/lib-image-utils.js +150 -0
- package/dist/nodes/lib-image-utils.js.map +1 -0
- package/dist/nodes/lib-mail.d.ts +74 -0
- package/dist/nodes/lib-mail.d.ts.map +1 -0
- package/dist/nodes/lib-mail.js +452 -0
- package/dist/nodes/lib-mail.js.map +1 -0
- package/dist/nodes/lib-markdown.d.ts +70 -0
- package/dist/nodes/lib-markdown.d.ts.map +1 -0
- package/dist/nodes/lib-markdown.js +236 -0
- package/dist/nodes/lib-markdown.js.map +1 -0
- package/dist/nodes/lib-nlp.d.ts +98 -0
- package/dist/nodes/lib-nlp.d.ts.map +1 -0
- package/dist/nodes/lib-nlp.js +374 -0
- package/dist/nodes/lib-nlp.js.map +1 -0
- package/dist/nodes/lib-notion.d.ts +99 -0
- package/dist/nodes/lib-notion.d.ts.map +1 -0
- package/dist/nodes/lib-notion.js +601 -0
- package/dist/nodes/lib-notion.js.map +1 -0
- package/dist/nodes/lib-ocr.d.ts +31 -0
- package/dist/nodes/lib-ocr.d.ts.map +1 -0
- package/dist/nodes/lib-ocr.js +143 -0
- package/dist/nodes/lib-ocr.js.map +1 -0
- package/dist/nodes/lib-os.d.ts +312 -0
- package/dist/nodes/lib-os.d.ts.map +1 -0
- package/dist/nodes/lib-os.js +909 -0
- package/dist/nodes/lib-os.js.map +1 -0
- package/dist/nodes/lib-pdf.d.ts +142 -0
- package/dist/nodes/lib-pdf.d.ts.map +1 -0
- package/dist/nodes/lib-pdf.js +871 -0
- package/dist/nodes/lib-pdf.js.map +1 -0
- package/dist/nodes/lib-pptx.d.ts +29 -0
- package/dist/nodes/lib-pptx.d.ts.map +1 -0
- package/dist/nodes/lib-pptx.js +122 -0
- package/dist/nodes/lib-pptx.js.map +1 -0
- package/dist/nodes/lib-rss.d.ts +31 -0
- package/dist/nodes/lib-rss.d.ts.map +1 -0
- package/dist/nodes/lib-rss.js +163 -0
- package/dist/nodes/lib-rss.js.map +1 -0
- package/dist/nodes/lib-s3.d.ts +112 -0
- package/dist/nodes/lib-s3.d.ts.map +1 -0
- package/dist/nodes/lib-s3.js +521 -0
- package/dist/nodes/lib-s3.js.map +1 -0
- package/dist/nodes/lib-secret.d.ts +15 -0
- package/dist/nodes/lib-secret.d.ts.map +1 -0
- package/dist/nodes/lib-secret.js +42 -0
- package/dist/nodes/lib-secret.js.map +1 -0
- package/dist/nodes/lib-sqlite.d.ts +102 -0
- package/dist/nodes/lib-sqlite.d.ts.map +1 -0
- package/dist/nodes/lib-sqlite.js +532 -0
- package/dist/nodes/lib-sqlite.js.map +1 -0
- package/dist/nodes/lib-supabase.d.ts +86 -0
- package/dist/nodes/lib-supabase.d.ts.map +1 -0
- package/dist/nodes/lib-supabase.js +425 -0
- package/dist/nodes/lib-supabase.js.map +1 -0
- package/dist/nodes/lib-svg.d.ts +199 -0
- package/dist/nodes/lib-svg.d.ts.map +1 -0
- package/dist/nodes/lib-svg.js +1027 -0
- package/dist/nodes/lib-svg.js.map +1 -0
- package/dist/nodes/lib-tensorflow.d.ts +71 -0
- package/dist/nodes/lib-tensorflow.d.ts.map +1 -0
- package/dist/nodes/lib-tensorflow.js +351 -0
- package/dist/nodes/lib-tensorflow.js.map +1 -0
- package/dist/nodes/lib-twilio.d.ts +71 -0
- package/dist/nodes/lib-twilio.d.ts.map +1 -0
- package/dist/nodes/lib-twilio.js +469 -0
- package/dist/nodes/lib-twilio.js.map +1 -0
- package/dist/nodes/lib-validate.d.ts +84 -0
- package/dist/nodes/lib-validate.d.ts.map +1 -0
- package/dist/nodes/lib-validate.js +215 -0
- package/dist/nodes/lib-validate.js.map +1 -0
- package/dist/nodes/lib-video-download.d.ts +26 -0
- package/dist/nodes/lib-video-download.d.ts.map +1 -0
- package/dist/nodes/lib-video-download.js +299 -0
- package/dist/nodes/lib-video-download.js.map +1 -0
- package/dist/nodes/messaging.d.ts +88 -0
- package/dist/nodes/messaging.d.ts.map +1 -0
- package/dist/nodes/messaging.js +418 -0
- package/dist/nodes/messaging.js.map +1 -0
- package/dist/nodes/mistral.d.ts +83 -0
- package/dist/nodes/mistral.d.ts.map +1 -0
- package/dist/nodes/mistral.js +450 -0
- package/dist/nodes/mistral.js.map +1 -0
- package/dist/nodes/model3d/analysis.d.ts +13 -0
- package/dist/nodes/model3d/analysis.d.ts.map +1 -0
- package/dist/nodes/model3d/analysis.js +36 -0
- package/dist/nodes/model3d/analysis.js.map +1 -0
- package/dist/nodes/model3d/base.d.ts +11 -0
- package/dist/nodes/model3d/base.d.ts.map +1 -0
- package/dist/nodes/model3d/base.js +20 -0
- package/dist/nodes/model3d/base.js.map +1 -0
- package/dist/nodes/model3d/boolean-ops.d.ts +2 -0
- package/dist/nodes/model3d/boolean-ops.d.ts.map +1 -0
- package/dist/nodes/model3d/boolean-ops.js +172 -0
- package/dist/nodes/model3d/boolean-ops.js.map +1 -0
- package/dist/nodes/model3d/cleanup.d.ts +47 -0
- package/dist/nodes/model3d/cleanup.d.ts.map +1 -0
- package/dist/nodes/model3d/cleanup.js +136 -0
- package/dist/nodes/model3d/cleanup.js.map +1 -0
- package/dist/nodes/model3d/convert.d.ts +14 -0
- package/dist/nodes/model3d/convert.d.ts.map +1 -0
- package/dist/nodes/model3d/convert.js +64 -0
- package/dist/nodes/model3d/convert.js.map +1 -0
- package/dist/nodes/model3d/defaults.d.ts +34 -0
- package/dist/nodes/model3d/defaults.d.ts.map +1 -0
- package/dist/nodes/model3d/defaults.js +28 -0
- package/dist/nodes/model3d/defaults.js.map +1 -0
- package/dist/nodes/model3d/document-ops.d.ts +4 -0
- package/dist/nodes/model3d/document-ops.d.ts.map +1 -0
- package/dist/nodes/model3d/document-ops.js +40 -0
- package/dist/nodes/model3d/document-ops.js.map +1 -0
- package/dist/nodes/model3d/generation.d.ts +39 -0
- package/dist/nodes/model3d/generation.d.ts.map +1 -0
- package/dist/nodes/model3d/generation.js +179 -0
- package/dist/nodes/model3d/generation.js.map +1 -0
- package/dist/nodes/model3d/glb.d.ts +29 -0
- package/dist/nodes/model3d/glb.d.ts.map +1 -0
- package/dist/nodes/model3d/glb.js +255 -0
- package/dist/nodes/model3d/glb.js.map +1 -0
- package/dist/nodes/model3d/index.d.ts +20 -0
- package/dist/nodes/model3d/index.d.ts.map +1 -0
- package/dist/nodes/model3d/index.js +38 -0
- package/dist/nodes/model3d/index.js.map +1 -0
- package/dist/nodes/model3d/io.d.ts +38 -0
- package/dist/nodes/model3d/io.d.ts.map +1 -0
- package/dist/nodes/model3d/io.js +162 -0
- package/dist/nodes/model3d/io.js.map +1 -0
- package/dist/nodes/model3d/mesh-ops.d.ts +40 -0
- package/dist/nodes/model3d/mesh-ops.d.ts.map +1 -0
- package/dist/nodes/model3d/mesh-ops.js +775 -0
- package/dist/nodes/model3d/mesh-ops.js.map +1 -0
- package/dist/nodes/model3d/nodes.d.ts +2 -0
- package/dist/nodes/model3d/nodes.d.ts.map +1 -0
- package/dist/nodes/model3d/nodes.js +2 -0
- package/dist/nodes/model3d/nodes.js.map +1 -0
- package/dist/nodes/model3d/ops.d.ts +37 -0
- package/dist/nodes/model3d/ops.d.ts.map +1 -0
- package/dist/nodes/model3d/ops.js +137 -0
- package/dist/nodes/model3d/ops.js.map +1 -0
- package/dist/nodes/model3d/transforms.d.ts +49 -0
- package/dist/nodes/model3d/transforms.d.ts.map +1 -0
- package/dist/nodes/model3d/transforms.js +142 -0
- package/dist/nodes/model3d/transforms.js.map +1 -0
- package/dist/nodes/model3d/types.d.ts +81 -0
- package/dist/nodes/model3d/types.d.ts.map +1 -0
- package/dist/nodes/model3d/types.js +2 -0
- package/dist/nodes/model3d/types.js.map +1 -0
- package/dist/nodes/model3d/utils.d.ts +34 -0
- package/dist/nodes/model3d/utils.d.ts.map +1 -0
- package/dist/nodes/model3d/utils.js +185 -0
- package/dist/nodes/model3d/utils.js.map +1 -0
- package/dist/nodes/model3d.d.ts +2 -0
- package/dist/nodes/model3d.d.ts.map +1 -0
- package/dist/nodes/model3d.js +2 -0
- package/dist/nodes/model3d.js.map +1 -0
- package/dist/nodes/openai.d.ts +172 -0
- package/dist/nodes/openai.d.ts.map +1 -0
- package/dist/nodes/openai.js +1294 -0
- package/dist/nodes/openai.js.map +1 -0
- package/dist/nodes/output.d.ts +29 -0
- package/dist/nodes/output.d.ts.map +1 -0
- package/dist/nodes/output.js +87 -0
- package/dist/nodes/output.js.map +1 -0
- package/dist/nodes/sandbox.d.ts +67 -0
- package/dist/nodes/sandbox.d.ts.map +1 -0
- package/dist/nodes/sandbox.js +681 -0
- package/dist/nodes/sandbox.js.map +1 -0
- package/dist/nodes/search.d.ts +117 -0
- package/dist/nodes/search.d.ts.map +1 -0
- package/dist/nodes/search.js +607 -0
- package/dist/nodes/search.js.map +1 -0
- package/dist/nodes/team.d.ts +74 -0
- package/dist/nodes/team.d.ts.map +1 -0
- package/dist/nodes/team.js +304 -0
- package/dist/nodes/team.js.map +1 -0
- package/dist/nodes/text-extra.d.ts +633 -0
- package/dist/nodes/text-extra.d.ts.map +1 -0
- package/dist/nodes/text-extra.js +2226 -0
- package/dist/nodes/text-extra.js.map +1 -0
- package/dist/nodes/tool-agents.d.ts +334 -0
- package/dist/nodes/tool-agents.d.ts.map +1 -0
- package/dist/nodes/tool-agents.js +1861 -0
- package/dist/nodes/tool-agents.js.map +1 -0
- package/dist/nodes/triggers.d.ts +107 -0
- package/dist/nodes/triggers.d.ts.map +1 -0
- package/dist/nodes/triggers.js +706 -0
- package/dist/nodes/triggers.js.map +1 -0
- package/dist/nodes/vector.d.ts +168 -0
- package/dist/nodes/vector.d.ts.map +1 -0
- package/dist/nodes/vector.js +1121 -0
- package/dist/nodes/vector.js.map +1 -0
- package/dist/nodes/video.d.ts +387 -0
- package/dist/nodes/video.d.ts.map +1 -0
- package/dist/nodes/video.js +2361 -0
- package/dist/nodes/video.js.map +1 -0
- package/dist/nodes/workflow.d.ts +24 -0
- package/dist/nodes/workflow.d.ts.map +1 -0
- package/dist/nodes/workflow.js +146 -0
- package/dist/nodes/workflow.js.map +1 -0
- package/dist/nodes/workspace.d.ts +203 -0
- package/dist/nodes/workspace.d.ts.map +1 -0
- package/dist/nodes/workspace.js +795 -0
- package/dist/nodes/workspace.js.map +1 -0
- package/package.json +103 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Agent Team Nodes — TeamLead orchestrates Agent nodes via control edges.
|
|
3
|
+
*
|
|
4
|
+
* Architecture:
|
|
5
|
+
* - TeamLeadNode: orchestrates agents, manages tasks (persisted in DB),
|
|
6
|
+
* sends control events to connected Agent nodes (like tool calls).
|
|
7
|
+
* - AgentNode: individual agent, connected below TeamLead via control edges.
|
|
8
|
+
* Receives work assignments as control events, executes, returns results.
|
|
9
|
+
*
|
|
10
|
+
* Tasks are always stored in the database (team_tasks table) and provided
|
|
11
|
+
* via processing context. Tasks have dependencies and belong to a team.
|
|
12
|
+
*/
|
|
13
|
+
import { BaseNode } from "@nodetool-ai/node-sdk";
|
|
14
|
+
import type { ProcessingContext } from "@nodetool-ai/runtime";
|
|
15
|
+
import { type AgentIdentity } from "@nodetool-ai/agents";
|
|
16
|
+
/**
|
|
17
|
+
* Individual agent node — a controlled node that receives work from TeamLead.
|
|
18
|
+
*
|
|
19
|
+
* Connect below a TeamLeadNode via a control edge. The TeamLead sends
|
|
20
|
+
* control events (like tool calls) to assign work. The agent processes
|
|
21
|
+
* the assignment and returns results.
|
|
22
|
+
*/
|
|
23
|
+
export declare class TeamAgentNode extends BaseNode {
|
|
24
|
+
static readonly nodeType = "nodetool.team.Agent";
|
|
25
|
+
static readonly title = "Agent";
|
|
26
|
+
static readonly description = "An individual AI agent that receives work from a TeamLead via control edges.\n agent, team, controlled, worker";
|
|
27
|
+
static readonly isControlled = true;
|
|
28
|
+
static readonly metadataOutputTypes: {
|
|
29
|
+
result: string;
|
|
30
|
+
};
|
|
31
|
+
static readonly basicFields: string[];
|
|
32
|
+
name: any;
|
|
33
|
+
role: any;
|
|
34
|
+
skills: any;
|
|
35
|
+
provider: any;
|
|
36
|
+
model: any;
|
|
37
|
+
tools: any;
|
|
38
|
+
/**
|
|
39
|
+
* Called by the kernel for each control event from TeamLead.
|
|
40
|
+
* The control event properties are merged onto `this` via assign().
|
|
41
|
+
*/
|
|
42
|
+
process(_context?: ProcessingContext): Promise<Record<string, unknown>>;
|
|
43
|
+
/**
|
|
44
|
+
* Convert this node's properties to an AgentIdentity for the TeamExecutor.
|
|
45
|
+
*/
|
|
46
|
+
toIdentity(): AgentIdentity;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Orchestrates a team of agents working together on an objective.
|
|
50
|
+
*
|
|
51
|
+
* Agents are connected below via control edges — no AgentPool needed.
|
|
52
|
+
* TeamLead discovers agents from its outgoing control edges at runtime.
|
|
53
|
+
* Tasks are stored in the database, provided via processing context.
|
|
54
|
+
*/
|
|
55
|
+
export declare class TeamLeadNode extends BaseNode {
|
|
56
|
+
static readonly nodeType = "nodetool.team.TeamLead";
|
|
57
|
+
static readonly title = "Team Lead";
|
|
58
|
+
static readonly description = "Orchestrate a team of AI agents connected via control edges. Tasks are persisted in the database.\n multi-agent, team, collaboration, orchestration, lead";
|
|
59
|
+
static readonly metadataOutputTypes: {
|
|
60
|
+
result: string;
|
|
61
|
+
board: string;
|
|
62
|
+
messages: string;
|
|
63
|
+
events: string;
|
|
64
|
+
};
|
|
65
|
+
static readonly basicFields: string[];
|
|
66
|
+
objective: any;
|
|
67
|
+
strategy: any;
|
|
68
|
+
max_iterations: any;
|
|
69
|
+
max_concurrency: any;
|
|
70
|
+
genProcess(context?: ProcessingContext): AsyncGenerator<Record<string, unknown>>;
|
|
71
|
+
process(context?: ProcessingContext): Promise<Record<string, unknown>>;
|
|
72
|
+
}
|
|
73
|
+
export declare const TEAM_NODES: readonly [typeof TeamAgentNode, typeof TeamLeadNode];
|
|
74
|
+
//# sourceMappingURL=team.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../src/nodes/team.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,QAAQ,EAAQ,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAIL,KAAK,aAAa,EAKnB,MAAM,qBAAqB,CAAC;AAI7B;;;;;;GAMG;AACH,qBAAa,aAAc,SAAQ,QAAQ;IACzC,MAAM,CAAC,QAAQ,CAAC,QAAQ,yBAAyB;IACjD,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,WAAW,uHAC2F;IACtH,MAAM,CAAC,QAAQ,CAAC,YAAY,QAAQ;IACpC,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;MAEjC;IACF,MAAM,CAAC,QAAQ,CAAC,WAAW,WAAyC;IAQ5D,IAAI,EAAE,GAAG,CAAC;IASV,IAAI,EAAE,GAAG,CAAC;IASV,MAAM,EAAE,GAAG,CAAC;IAQZ,QAAQ,EAAE,GAAG,CAAC;IAQd,KAAK,EAAE,GAAG,CAAC;IAQX,KAAK,EAAE,GAAG,CAAC;IAEnB;;;OAGG;IACG,OAAO,CACX,QAAQ,CAAC,EAAE,iBAAiB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAoBnC;;OAEG;IACH,UAAU,IAAI,aAAa;CAW5B;AAID;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IACxC,MAAM,CAAC,QAAQ,CAAC,QAAQ,4BAA4B;IACpD,MAAM,CAAC,QAAQ,CAAC,KAAK,eAAe;IACpC,MAAM,CAAC,QAAQ,CAAC,WAAW,kKACsI;IACjK,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;;;;MAKjC;IACF,MAAM,CAAC,QAAQ,CAAC,WAAW,WAA6B;IAQhD,SAAS,EAAE,GAAG,CAAC;IASf,QAAQ,EAAE,GAAG,CAAC;IAUd,cAAc,EAAE,GAAG,CAAC;IAUpB,eAAe,EAAE,GAAG,CAAC;IAEtB,UAAU,CACf,OAAO,CAAC,EAAE,iBAAiB,GAC1B,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAsIpC,OAAO,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAO7E;AAED,eAAO,MAAM,UAAU,sDAAyC,CAAC"}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Agent Team Nodes — TeamLead orchestrates Agent nodes via control edges.
|
|
3
|
+
*
|
|
4
|
+
* Architecture:
|
|
5
|
+
* - TeamLeadNode: orchestrates agents, manages tasks (persisted in DB),
|
|
6
|
+
* sends control events to connected Agent nodes (like tool calls).
|
|
7
|
+
* - AgentNode: individual agent, connected below TeamLead via control edges.
|
|
8
|
+
* Receives work assignments as control events, executes, returns results.
|
|
9
|
+
*
|
|
10
|
+
* Tasks are always stored in the database (team_tasks table) and provided
|
|
11
|
+
* via processing context. Tasks have dependencies and belong to a team.
|
|
12
|
+
*/
|
|
13
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
14
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
15
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
16
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
17
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
18
|
+
};
|
|
19
|
+
import { BaseNode, prop } from "@nodetool-ai/node-sdk";
|
|
20
|
+
import { TeamExecutor, DbTaskBoard, EdgeMessageBus } from "@nodetool-ai/agents";
|
|
21
|
+
// ─── AgentNode ───
|
|
22
|
+
/**
|
|
23
|
+
* Individual agent node — a controlled node that receives work from TeamLead.
|
|
24
|
+
*
|
|
25
|
+
* Connect below a TeamLeadNode via a control edge. The TeamLead sends
|
|
26
|
+
* control events (like tool calls) to assign work. The agent processes
|
|
27
|
+
* the assignment and returns results.
|
|
28
|
+
*/
|
|
29
|
+
export class TeamAgentNode extends BaseNode {
|
|
30
|
+
static nodeType = "nodetool.team.Agent";
|
|
31
|
+
static title = "Agent";
|
|
32
|
+
static description = "An individual AI agent that receives work from a TeamLead via control edges.\n agent, team, controlled, worker";
|
|
33
|
+
static isControlled = true;
|
|
34
|
+
static metadataOutputTypes = {
|
|
35
|
+
result: "str"
|
|
36
|
+
};
|
|
37
|
+
static basicFields = ["name", "role", "provider", "model"];
|
|
38
|
+
/**
|
|
39
|
+
* Called by the kernel for each control event from TeamLead.
|
|
40
|
+
* The control event properties are merged onto `this` via assign().
|
|
41
|
+
*/
|
|
42
|
+
async process(_context) {
|
|
43
|
+
// The actual LLM work is done by TeamExecutor — this node acts as
|
|
44
|
+
// a proxy identity. When TeamLead sends a control event, the agent's
|
|
45
|
+
// process() receives the event properties (task assignment, messages, etc.)
|
|
46
|
+
// and returns the result.
|
|
47
|
+
//
|
|
48
|
+
// The control event contains:
|
|
49
|
+
// __agent_work__: true — work assignment from TeamLead
|
|
50
|
+
// task: { id, title, description, ... } — the task to work on
|
|
51
|
+
// response: string — the agent's computed response (set by TeamExecutor)
|
|
52
|
+
//
|
|
53
|
+
// For message routing:
|
|
54
|
+
// __agent_message__: true — inter-agent message
|
|
55
|
+
// message: AgentMessage
|
|
56
|
+
const result = this.__agent_response__ ?? this.response ?? "";
|
|
57
|
+
return { result: String(result) };
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Convert this node's properties to an AgentIdentity for the TeamExecutor.
|
|
61
|
+
*/
|
|
62
|
+
toIdentity() {
|
|
63
|
+
return {
|
|
64
|
+
id: this.__node_id || String(this.name || "agent"),
|
|
65
|
+
name: String(this.name || "Agent"),
|
|
66
|
+
role: String(this.role || "General purpose assistant"),
|
|
67
|
+
skills: Array.isArray(this.skills) ? this.skills.map(String) : [],
|
|
68
|
+
provider: String(this.provider || "anthropic"),
|
|
69
|
+
model: String(this.model || "claude-sonnet-4-20250514"),
|
|
70
|
+
tools: Array.isArray(this.tools) ? this.tools.map(String) : []
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
__decorate([
|
|
75
|
+
prop({
|
|
76
|
+
type: "str",
|
|
77
|
+
default: "",
|
|
78
|
+
title: "Name",
|
|
79
|
+
description: "Agent name, e.g. 'researcher', 'writer'"
|
|
80
|
+
})
|
|
81
|
+
], TeamAgentNode.prototype, "name", void 0);
|
|
82
|
+
__decorate([
|
|
83
|
+
prop({
|
|
84
|
+
type: "str",
|
|
85
|
+
default: "General purpose assistant",
|
|
86
|
+
title: "Role",
|
|
87
|
+
description: "Freeform role description injected into the agent's system prompt"
|
|
88
|
+
})
|
|
89
|
+
], TeamAgentNode.prototype, "role", void 0);
|
|
90
|
+
__decorate([
|
|
91
|
+
prop({
|
|
92
|
+
type: "list",
|
|
93
|
+
default: [],
|
|
94
|
+
title: "Skills",
|
|
95
|
+
description: "Skill tags for task matching, e.g. ['web_search', 'code_generation']"
|
|
96
|
+
})
|
|
97
|
+
], TeamAgentNode.prototype, "skills", void 0);
|
|
98
|
+
__decorate([
|
|
99
|
+
prop({
|
|
100
|
+
type: "str",
|
|
101
|
+
default: "anthropic",
|
|
102
|
+
title: "Provider",
|
|
103
|
+
description: "LLM provider key"
|
|
104
|
+
})
|
|
105
|
+
], TeamAgentNode.prototype, "provider", void 0);
|
|
106
|
+
__decorate([
|
|
107
|
+
prop({
|
|
108
|
+
type: "str",
|
|
109
|
+
default: "claude-sonnet-4-20250514",
|
|
110
|
+
title: "Model",
|
|
111
|
+
description: "Model identifier"
|
|
112
|
+
})
|
|
113
|
+
], TeamAgentNode.prototype, "model", void 0);
|
|
114
|
+
__decorate([
|
|
115
|
+
prop({
|
|
116
|
+
type: "list",
|
|
117
|
+
default: [],
|
|
118
|
+
title: "Tools",
|
|
119
|
+
description: "Additional tool names this agent can use (beyond team tools)"
|
|
120
|
+
})
|
|
121
|
+
], TeamAgentNode.prototype, "tools", void 0);
|
|
122
|
+
// ─── TeamLeadNode ───
|
|
123
|
+
/**
|
|
124
|
+
* Orchestrates a team of agents working together on an objective.
|
|
125
|
+
*
|
|
126
|
+
* Agents are connected below via control edges — no AgentPool needed.
|
|
127
|
+
* TeamLead discovers agents from its outgoing control edges at runtime.
|
|
128
|
+
* Tasks are stored in the database, provided via processing context.
|
|
129
|
+
*/
|
|
130
|
+
export class TeamLeadNode extends BaseNode {
|
|
131
|
+
static nodeType = "nodetool.team.TeamLead";
|
|
132
|
+
static title = "Team Lead";
|
|
133
|
+
static description = "Orchestrate a team of AI agents connected via control edges. Tasks are persisted in the database.\n multi-agent, team, collaboration, orchestration, lead";
|
|
134
|
+
static metadataOutputTypes = {
|
|
135
|
+
result: "json",
|
|
136
|
+
board: "json",
|
|
137
|
+
messages: "list",
|
|
138
|
+
events: "list"
|
|
139
|
+
};
|
|
140
|
+
static basicFields = ["objective", "strategy"];
|
|
141
|
+
async *genProcess(context) {
|
|
142
|
+
const objective = String(this.objective ?? "");
|
|
143
|
+
if (!objective)
|
|
144
|
+
throw new Error("Objective is required");
|
|
145
|
+
if (!context)
|
|
146
|
+
throw new Error("Processing context is required");
|
|
147
|
+
// Discover agents from _control_context (injected by kernel).
|
|
148
|
+
// The kernel resolves outgoing control edges and provides metadata
|
|
149
|
+
// about each controlled node — including their properties.
|
|
150
|
+
// Fallback: agents can be provided directly for programmatic use.
|
|
151
|
+
const agents = [];
|
|
152
|
+
const controlContext = this.getDynamic("_control_context");
|
|
153
|
+
if (controlContext) {
|
|
154
|
+
// Extract agent identities from controlled Agent nodes
|
|
155
|
+
for (const [nodeId, meta] of Object.entries(controlContext)) {
|
|
156
|
+
if (typeof meta !== "object" || !meta)
|
|
157
|
+
continue;
|
|
158
|
+
const nodeType = String(meta.node_type ?? "");
|
|
159
|
+
// Only pick up Agent nodes (not arbitrary controlled nodes)
|
|
160
|
+
if (nodeType !== "nodetool.team.Agent")
|
|
161
|
+
continue;
|
|
162
|
+
const props = meta.properties;
|
|
163
|
+
const getProp = (name) => props?.[name]?.value;
|
|
164
|
+
agents.push({
|
|
165
|
+
id: nodeId,
|
|
166
|
+
name: String(getProp("name") ?? meta.node_title ?? nodeId),
|
|
167
|
+
role: String(getProp("role") ?? "General purpose assistant"),
|
|
168
|
+
skills: Array.isArray(getProp("skills"))
|
|
169
|
+
? getProp("skills").map(String)
|
|
170
|
+
: [],
|
|
171
|
+
provider: String(getProp("provider") ?? "anthropic"),
|
|
172
|
+
model: String(getProp("model") ?? "claude-sonnet-4-20250514"),
|
|
173
|
+
tools: Array.isArray(getProp("tools"))
|
|
174
|
+
? getProp("tools").map(String)
|
|
175
|
+
: []
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// Fallback: agents provided inline (programmatic use without kernel)
|
|
180
|
+
if (agents.length === 0) {
|
|
181
|
+
const rawAgents = this.getDynamic("agents") ?? [];
|
|
182
|
+
for (const a of rawAgents) {
|
|
183
|
+
agents.push({
|
|
184
|
+
id: String(a.id ?? a.name ?? `agent_${agents.length}`),
|
|
185
|
+
name: String(a.name ?? `Agent ${agents.length}`),
|
|
186
|
+
role: String(a.role ?? "General purpose assistant"),
|
|
187
|
+
skills: Array.isArray(a.skills) ? a.skills.map(String) : [],
|
|
188
|
+
provider: String(a.provider ?? "anthropic"),
|
|
189
|
+
model: String(a.model ?? "claude-sonnet-4-20250514"),
|
|
190
|
+
tools: Array.isArray(a.tools) ? a.tools.map(String) : []
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (agents.length === 0) {
|
|
195
|
+
throw new Error("No agents found. Connect Agent nodes below this TeamLead via control edges.");
|
|
196
|
+
}
|
|
197
|
+
const strategy = String(this.strategy ?? "coordinator");
|
|
198
|
+
const maxIterations = Number(this.max_iterations ?? 50);
|
|
199
|
+
const maxConcurrency = Number(this.max_concurrency ?? 3);
|
|
200
|
+
// Task board: always DB-backed, keyed by this node's ID as team_id.
|
|
201
|
+
const teamId = this.__node_id || "default_team";
|
|
202
|
+
const taskBoard = new DbTaskBoard(teamId);
|
|
203
|
+
// Message bus: edge-native when in workflow, in-memory otherwise
|
|
204
|
+
const messageBus = context.hasControlEventSupport
|
|
205
|
+
? new EdgeMessageBus(context)
|
|
206
|
+
: undefined;
|
|
207
|
+
const config = {
|
|
208
|
+
objective,
|
|
209
|
+
agents,
|
|
210
|
+
strategy,
|
|
211
|
+
maxIterations,
|
|
212
|
+
maxConcurrency
|
|
213
|
+
};
|
|
214
|
+
const executor = new TeamExecutor({
|
|
215
|
+
config,
|
|
216
|
+
context,
|
|
217
|
+
taskBoard,
|
|
218
|
+
messageBus
|
|
219
|
+
});
|
|
220
|
+
const allEvents = [];
|
|
221
|
+
// Stream events as the team works
|
|
222
|
+
for await (const event of executor.execute()) {
|
|
223
|
+
allEvents.push(event);
|
|
224
|
+
if (event.type === "chunk") {
|
|
225
|
+
yield {
|
|
226
|
+
text: event.content,
|
|
227
|
+
chunk: { type: "chunk", content: event.content, done: false }
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
else if (event.type === "task_completed") {
|
|
231
|
+
yield {
|
|
232
|
+
text: `Task completed: ${event.taskId}`,
|
|
233
|
+
chunk: {
|
|
234
|
+
type: "chunk",
|
|
235
|
+
content: `\n[Task ${event.taskId} completed]\n`,
|
|
236
|
+
done: false
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
else if (event.type === "message_sent") {
|
|
241
|
+
yield {
|
|
242
|
+
text: `${event.message.from} → ${event.message.to}: ${event.message.subject}`,
|
|
243
|
+
chunk: {
|
|
244
|
+
type: "chunk",
|
|
245
|
+
content: `\n[${event.message.from} → ${event.message.to}: ${event.message.subject}]\n`,
|
|
246
|
+
done: false
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// Final output
|
|
252
|
+
yield {
|
|
253
|
+
result: executor.getResult(),
|
|
254
|
+
board: executor.taskBoard.getSnapshot(),
|
|
255
|
+
messages: executor.messageBus.getHistory(),
|
|
256
|
+
events: allEvents
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
async process(context) {
|
|
260
|
+
let lastOutput = {};
|
|
261
|
+
for await (const item of this.genProcess(context)) {
|
|
262
|
+
lastOutput = item;
|
|
263
|
+
}
|
|
264
|
+
return lastOutput;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
__decorate([
|
|
268
|
+
prop({
|
|
269
|
+
type: "str",
|
|
270
|
+
default: "",
|
|
271
|
+
title: "Objective",
|
|
272
|
+
description: "The team's objective — what they should accomplish together"
|
|
273
|
+
})
|
|
274
|
+
], TeamLeadNode.prototype, "objective", void 0);
|
|
275
|
+
__decorate([
|
|
276
|
+
prop({
|
|
277
|
+
type: "str",
|
|
278
|
+
default: "coordinator",
|
|
279
|
+
title: "Strategy",
|
|
280
|
+
description: "Team strategy: coordinator (lead decomposes work), autonomous (self-organizing), hybrid (lead + autonomous subtasks)"
|
|
281
|
+
})
|
|
282
|
+
], TeamLeadNode.prototype, "strategy", void 0);
|
|
283
|
+
__decorate([
|
|
284
|
+
prop({
|
|
285
|
+
type: "int",
|
|
286
|
+
default: 50,
|
|
287
|
+
title: "Max Iterations",
|
|
288
|
+
description: "Maximum total LLM calls across all agents",
|
|
289
|
+
min: 1,
|
|
290
|
+
max: 200
|
|
291
|
+
})
|
|
292
|
+
], TeamLeadNode.prototype, "max_iterations", void 0);
|
|
293
|
+
__decorate([
|
|
294
|
+
prop({
|
|
295
|
+
type: "int",
|
|
296
|
+
default: 3,
|
|
297
|
+
title: "Max Concurrency",
|
|
298
|
+
description: "Maximum number of agents running simultaneously",
|
|
299
|
+
min: 1,
|
|
300
|
+
max: 10
|
|
301
|
+
})
|
|
302
|
+
], TeamLeadNode.prototype, "max_concurrency", void 0);
|
|
303
|
+
export const TEAM_NODES = [TeamAgentNode, TeamLeadNode];
|
|
304
|
+
//# sourceMappingURL=team.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/nodes/team.ts"],"names":[],"mappings":"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"}
|