network-ai 3.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.
Files changed (92) hide show
  1. package/LICENSE +21 -0
  2. package/QUICKSTART.md +260 -0
  3. package/README.md +604 -0
  4. package/SKILL.md +568 -0
  5. package/dist/adapters/adapter-registry.d.ts +94 -0
  6. package/dist/adapters/adapter-registry.d.ts.map +1 -0
  7. package/dist/adapters/adapter-registry.js +355 -0
  8. package/dist/adapters/adapter-registry.js.map +1 -0
  9. package/dist/adapters/agno-adapter.d.ts +112 -0
  10. package/dist/adapters/agno-adapter.d.ts.map +1 -0
  11. package/dist/adapters/agno-adapter.js +140 -0
  12. package/dist/adapters/agno-adapter.js.map +1 -0
  13. package/dist/adapters/autogen-adapter.d.ts +67 -0
  14. package/dist/adapters/autogen-adapter.d.ts.map +1 -0
  15. package/dist/adapters/autogen-adapter.js +141 -0
  16. package/dist/adapters/autogen-adapter.js.map +1 -0
  17. package/dist/adapters/base-adapter.d.ts +51 -0
  18. package/dist/adapters/base-adapter.d.ts.map +1 -0
  19. package/dist/adapters/base-adapter.js +103 -0
  20. package/dist/adapters/base-adapter.js.map +1 -0
  21. package/dist/adapters/crewai-adapter.d.ts +72 -0
  22. package/dist/adapters/crewai-adapter.d.ts.map +1 -0
  23. package/dist/adapters/crewai-adapter.js +148 -0
  24. package/dist/adapters/crewai-adapter.js.map +1 -0
  25. package/dist/adapters/custom-adapter.d.ts +74 -0
  26. package/dist/adapters/custom-adapter.d.ts.map +1 -0
  27. package/dist/adapters/custom-adapter.js +142 -0
  28. package/dist/adapters/custom-adapter.js.map +1 -0
  29. package/dist/adapters/dspy-adapter.d.ts +70 -0
  30. package/dist/adapters/dspy-adapter.d.ts.map +1 -0
  31. package/dist/adapters/dspy-adapter.js +127 -0
  32. package/dist/adapters/dspy-adapter.js.map +1 -0
  33. package/dist/adapters/haystack-adapter.d.ts +83 -0
  34. package/dist/adapters/haystack-adapter.d.ts.map +1 -0
  35. package/dist/adapters/haystack-adapter.js +149 -0
  36. package/dist/adapters/haystack-adapter.js.map +1 -0
  37. package/dist/adapters/index.d.ts +47 -0
  38. package/dist/adapters/index.d.ts.map +1 -0
  39. package/dist/adapters/index.js +56 -0
  40. package/dist/adapters/index.js.map +1 -0
  41. package/dist/adapters/langchain-adapter.d.ts +51 -0
  42. package/dist/adapters/langchain-adapter.d.ts.map +1 -0
  43. package/dist/adapters/langchain-adapter.js +134 -0
  44. package/dist/adapters/langchain-adapter.js.map +1 -0
  45. package/dist/adapters/llamaindex-adapter.d.ts +89 -0
  46. package/dist/adapters/llamaindex-adapter.d.ts.map +1 -0
  47. package/dist/adapters/llamaindex-adapter.js +135 -0
  48. package/dist/adapters/llamaindex-adapter.js.map +1 -0
  49. package/dist/adapters/mcp-adapter.d.ts +90 -0
  50. package/dist/adapters/mcp-adapter.d.ts.map +1 -0
  51. package/dist/adapters/mcp-adapter.js +200 -0
  52. package/dist/adapters/mcp-adapter.js.map +1 -0
  53. package/dist/adapters/openai-assistants-adapter.d.ts +94 -0
  54. package/dist/adapters/openai-assistants-adapter.d.ts.map +1 -0
  55. package/dist/adapters/openai-assistants-adapter.js +130 -0
  56. package/dist/adapters/openai-assistants-adapter.js.map +1 -0
  57. package/dist/adapters/openclaw-adapter.d.ts +21 -0
  58. package/dist/adapters/openclaw-adapter.d.ts.map +1 -0
  59. package/dist/adapters/openclaw-adapter.js +140 -0
  60. package/dist/adapters/openclaw-adapter.js.map +1 -0
  61. package/dist/adapters/semantic-kernel-adapter.d.ts +73 -0
  62. package/dist/adapters/semantic-kernel-adapter.d.ts.map +1 -0
  63. package/dist/adapters/semantic-kernel-adapter.js +123 -0
  64. package/dist/adapters/semantic-kernel-adapter.js.map +1 -0
  65. package/dist/index.d.ts +379 -0
  66. package/dist/index.d.ts.map +1 -0
  67. package/dist/index.js +1428 -0
  68. package/dist/index.js.map +1 -0
  69. package/dist/lib/blackboard-validator.d.ts +205 -0
  70. package/dist/lib/blackboard-validator.d.ts.map +1 -0
  71. package/dist/lib/blackboard-validator.js +756 -0
  72. package/dist/lib/blackboard-validator.js.map +1 -0
  73. package/dist/lib/locked-blackboard.d.ts +174 -0
  74. package/dist/lib/locked-blackboard.d.ts.map +1 -0
  75. package/dist/lib/locked-blackboard.js +654 -0
  76. package/dist/lib/locked-blackboard.js.map +1 -0
  77. package/dist/lib/swarm-utils.d.ts +136 -0
  78. package/dist/lib/swarm-utils.d.ts.map +1 -0
  79. package/dist/lib/swarm-utils.js +510 -0
  80. package/dist/lib/swarm-utils.js.map +1 -0
  81. package/dist/security.d.ts +269 -0
  82. package/dist/security.d.ts.map +1 -0
  83. package/dist/security.js +713 -0
  84. package/dist/security.js.map +1 -0
  85. package/package.json +84 -0
  86. package/scripts/blackboard.py +819 -0
  87. package/scripts/check_permission.py +331 -0
  88. package/scripts/revoke_token.py +243 -0
  89. package/scripts/swarm_guard.py +1140 -0
  90. package/scripts/validate_token.py +97 -0
  91. package/types/agent-adapter.d.ts +244 -0
  92. package/types/openclaw-core.d.ts +52 -0
@@ -0,0 +1,67 @@
1
+ /**
2
+ * AutoGen / AG2 Adapter
3
+ *
4
+ * Allows Microsoft AutoGen (AG2) agents to plug into the SwarmOrchestrator.
5
+ * AutoGen agents communicate via message-passing conversations, so this
6
+ * adapter translates the orchestrator's task payloads into AutoGen messages.
7
+ *
8
+ * Usage:
9
+ * const adapter = new AutoGenAdapter();
10
+ * adapter.registerAgent("coder", myAutoGenAgent);
11
+ * adapter.registerAgent("critic", myCriticAgent);
12
+ * await registry.addAdapter(adapter);
13
+ *
14
+ * Then in the orchestrator:
15
+ * delegateTask({ targetAgent: "autogen:coder", ... })
16
+ *
17
+ * @module AutoGenAdapter
18
+ * @version 1.0.0
19
+ */
20
+ import { BaseAdapter } from './base-adapter';
21
+ import type { AdapterCapabilities, AgentPayload, AgentContext, AgentResult } from '../types/agent-adapter';
22
+ /**
23
+ * AutoGen-compatible agent interface.
24
+ * Matches the core methods of AutoGen's ConversableAgent.
25
+ */
26
+ export interface AutoGenAgent {
27
+ /** Agent name */
28
+ name: string;
29
+ /** Send a message and get a reply */
30
+ generateReply?: (messages: Array<{
31
+ role: string;
32
+ content: string;
33
+ name?: string;
34
+ }>, sender?: unknown) => Promise<string | {
35
+ content: string;
36
+ [key: string]: unknown;
37
+ } | null>;
38
+ /** Run the agent with a task (simplified interface) */
39
+ run?: (task: string, context?: Record<string, unknown>) => Promise<unknown>;
40
+ /** Initiate a chat (AutoGen 0.2+ style) */
41
+ initiateChat?: (recipient: unknown, message: string, config?: Record<string, unknown>) => Promise<{
42
+ chat_history: Array<{
43
+ role: string;
44
+ content: string;
45
+ }>;
46
+ summary?: string;
47
+ }>;
48
+ }
49
+ export declare class AutoGenAdapter extends BaseAdapter {
50
+ readonly name = "autogen";
51
+ readonly version = "1.0.0";
52
+ private agents;
53
+ get capabilities(): AdapterCapabilities;
54
+ /**
55
+ * Register an AutoGen agent.
56
+ * The agent should implement at least one of: generateReply, run, or initiateChat.
57
+ */
58
+ registerAgent(agentId: string, agent: AutoGenAgent, metadata?: {
59
+ description?: string;
60
+ capabilities?: string[];
61
+ }): void;
62
+ executeAgent(agentId: string, payload: AgentPayload, context: AgentContext): Promise<AgentResult>;
63
+ private buildTaskString;
64
+ private buildMessages;
65
+ private normalizeResult;
66
+ }
67
+ //# sourceMappingURL=autogen-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autogen-adapter.d.ts","sourceRoot":"","sources":["../../adapters/autogen-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAEV,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAEhC;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,aAAa,CAAC,EAAE,CACd,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACjE,MAAM,CAAC,EAAE,OAAO,KACb,OAAO,CAAC,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC1E,uDAAuD;IACvD,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5E,2CAA2C;IAC3C,YAAY,CAAC,EAAE,CACb,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,OAAO,CAAC;QAAE,YAAY,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5F;AAED,qBAAa,cAAe,SAAQ,WAAW;IAC7C,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,OAAO,WAAW;IAC3B,OAAO,CAAC,MAAM,CAAwC;IAEtD,IAAI,YAAY,IAAI,mBAAmB,CAStC;IAED;;;OAGG;IACH,aAAa,CACX,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,YAAY,EACnB,QAAQ,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC3D,IAAI;IAWD,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC;IAmDvB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,eAAe;CA0BxB"}
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ /**
3
+ * AutoGen / AG2 Adapter
4
+ *
5
+ * Allows Microsoft AutoGen (AG2) agents to plug into the SwarmOrchestrator.
6
+ * AutoGen agents communicate via message-passing conversations, so this
7
+ * adapter translates the orchestrator's task payloads into AutoGen messages.
8
+ *
9
+ * Usage:
10
+ * const adapter = new AutoGenAdapter();
11
+ * adapter.registerAgent("coder", myAutoGenAgent);
12
+ * adapter.registerAgent("critic", myCriticAgent);
13
+ * await registry.addAdapter(adapter);
14
+ *
15
+ * Then in the orchestrator:
16
+ * delegateTask({ targetAgent: "autogen:coder", ... })
17
+ *
18
+ * @module AutoGenAdapter
19
+ * @version 1.0.0
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.AutoGenAdapter = void 0;
23
+ const base_adapter_1 = require("./base-adapter");
24
+ class AutoGenAdapter extends base_adapter_1.BaseAdapter {
25
+ name = 'autogen';
26
+ version = '1.0.0';
27
+ agents = new Map();
28
+ get capabilities() {
29
+ return {
30
+ streaming: false,
31
+ parallel: true,
32
+ bidirectional: true,
33
+ discovery: true,
34
+ authentication: false,
35
+ statefulSessions: true,
36
+ };
37
+ }
38
+ /**
39
+ * Register an AutoGen agent.
40
+ * The agent should implement at least one of: generateReply, run, or initiateChat.
41
+ */
42
+ registerAgent(agentId, agent, metadata) {
43
+ this.agents.set(agentId, agent);
44
+ this.registerLocalAgent({
45
+ id: agentId,
46
+ name: agent.name || agentId,
47
+ description: metadata?.description ?? `AutoGen agent: ${agent.name || agentId}`,
48
+ capabilities: metadata?.capabilities,
49
+ status: 'available',
50
+ });
51
+ }
52
+ async executeAgent(agentId, payload, context) {
53
+ this.ensureReady();
54
+ const agent = this.agents.get(agentId);
55
+ if (!agent) {
56
+ return this.errorResult('AGENT_NOT_FOUND', `AutoGen agent "${agentId}" is not registered`, false);
57
+ }
58
+ const startTime = Date.now();
59
+ try {
60
+ let result;
61
+ // Strategy 1: Use .run() if available (simplest interface)
62
+ if (agent.run) {
63
+ const task = this.buildTaskString(payload);
64
+ result = await agent.run(task, {
65
+ agentId: context.agentId,
66
+ taskId: context.taskId,
67
+ blackboard: payload.blackboardSnapshot,
68
+ });
69
+ }
70
+ // Strategy 2: Use .generateReply() with message format
71
+ else if (agent.generateReply) {
72
+ const messages = this.buildMessages(payload, context);
73
+ result = await agent.generateReply(messages);
74
+ }
75
+ // Strategy 3: Fallback error
76
+ else {
77
+ return this.errorResult('NO_METHOD', `AutoGen agent "${agentId}" has no callable method (run, generateReply, or initiateChat)`, false);
78
+ }
79
+ return this.normalizeResult(result, startTime);
80
+ }
81
+ catch (error) {
82
+ return this.errorResult('AUTOGEN_ERROR', error instanceof Error ? error.message : 'AutoGen execution failed', true, error);
83
+ }
84
+ }
85
+ buildTaskString(payload) {
86
+ if (payload.handoff?.instruction) {
87
+ let task = payload.handoff.instruction;
88
+ if (payload.handoff.constraints?.length) {
89
+ task += `\n\nConstraints: ${payload.handoff.constraints.join(', ')}`;
90
+ }
91
+ if (payload.handoff.expectedOutput) {
92
+ task += `\n\nExpected output: ${payload.handoff.expectedOutput}`;
93
+ }
94
+ return task;
95
+ }
96
+ return JSON.stringify(payload.params);
97
+ }
98
+ buildMessages(payload, context) {
99
+ const messages = [];
100
+ // System context
101
+ if (payload.blackboardSnapshot) {
102
+ messages.push({
103
+ role: 'system',
104
+ content: `Shared state: ${JSON.stringify(payload.blackboardSnapshot)}`,
105
+ });
106
+ }
107
+ // The actual task
108
+ const taskContent = payload.handoff?.instruction || JSON.stringify(payload.params);
109
+ messages.push({
110
+ role: 'user',
111
+ content: taskContent,
112
+ name: context.agentId,
113
+ });
114
+ return messages;
115
+ }
116
+ normalizeResult(result, startTime) {
117
+ if (result === null || result === undefined) {
118
+ return this.successResult({ response: 'No response generated' }, Date.now() - startTime);
119
+ }
120
+ if (typeof result === 'string') {
121
+ return this.successResult({ response: result }, Date.now() - startTime);
122
+ }
123
+ if (typeof result === 'object') {
124
+ const obj = result;
125
+ // AutoGen chat result format
126
+ if ('chat_history' in obj) {
127
+ return this.successResult({
128
+ response: obj.summary || obj.chat_history,
129
+ chatHistory: obj.chat_history,
130
+ }, Date.now() - startTime);
131
+ }
132
+ // generateReply format
133
+ if ('content' in obj) {
134
+ return this.successResult(obj.content, Date.now() - startTime);
135
+ }
136
+ }
137
+ return this.successResult(result, Date.now() - startTime);
138
+ }
139
+ }
140
+ exports.AutoGenAdapter = AutoGenAdapter;
141
+ //# sourceMappingURL=autogen-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autogen-adapter.js","sourceRoot":"","sources":["../../adapters/autogen-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Base Adapter - Abstract base class for all agent system adapters
3
+ *
4
+ * Provides sensible defaults so adapter authors only need to implement
5
+ * the core `executeAgent` method. Everything else works out of the box.
6
+ *
7
+ * @module BaseAdapter
8
+ * @version 1.0.0
9
+ */
10
+ import type { IAgentAdapter, AdapterConfig, AdapterCapabilities, AgentPayload, AgentContext, AgentResult, AgentInfo } from '../types/agent-adapter';
11
+ export declare abstract class BaseAdapter implements IAgentAdapter {
12
+ abstract readonly name: string;
13
+ abstract readonly version: string;
14
+ protected config: AdapterConfig;
15
+ protected ready: boolean;
16
+ protected registeredAgents: Map<string, AgentInfo>;
17
+ /** Override to declare what your adapter supports */
18
+ get capabilities(): AdapterCapabilities;
19
+ initialize(config: AdapterConfig): Promise<void>;
20
+ shutdown(): Promise<void>;
21
+ isReady(): boolean;
22
+ abstract executeAgent(agentId: string, payload: AgentPayload, context: AgentContext): Promise<AgentResult>;
23
+ listAgents(): Promise<AgentInfo[]>;
24
+ isAgentAvailable(agentId: string): Promise<boolean>;
25
+ healthCheck(): Promise<{
26
+ healthy: boolean;
27
+ details?: string;
28
+ }>;
29
+ /**
30
+ * Register an agent as available through this adapter.
31
+ * Adapters call this during init or discovery to declare their agents.
32
+ */
33
+ protected registerLocalAgent(agent: Omit<AgentInfo, 'adapter'>): void;
34
+ /**
35
+ * Remove an agent from the registry
36
+ */
37
+ protected unregisterAgent(agentId: string): void;
38
+ /**
39
+ * Create a standard success result
40
+ */
41
+ protected successResult(data: unknown, executionTimeMs?: number): AgentResult;
42
+ /**
43
+ * Create a standard error result
44
+ */
45
+ protected errorResult(code: string, message: string, recoverable?: boolean, nativeError?: unknown): AgentResult;
46
+ /**
47
+ * Ensures the adapter is initialized before use
48
+ */
49
+ protected ensureReady(): void;
50
+ }
51
+ //# sourceMappingURL=base-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-adapter.d.ts","sourceRoot":"","sources":["../../adapters/base-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,SAAS,EACV,MAAM,wBAAwB,CAAC;AAEhC,8BAAsB,WAAY,YAAW,aAAa;IACxD,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAElC,SAAS,CAAC,MAAM,EAAE,aAAa,CAAM;IACrC,SAAS,CAAC,KAAK,UAAS;IACxB,SAAS,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;IAE/D,qDAAqD;IACrD,IAAI,YAAY,IAAI,mBAAmB,CAStC;IAIK,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAK/B,OAAO,IAAI,OAAO;IAMlB,QAAQ,CAAC,YAAY,CACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC;IAIjB,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAIlC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMnD,WAAW,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAMpE;;;OAGG;IACH,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,IAAI;IAIrE;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIhD;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,WAAW;IAW7E;;OAEG;IACH,SAAS,CAAC,WAAW,CACnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,WAAW,UAAO,EAClB,WAAW,CAAC,EAAE,OAAO,GACpB,WAAW;IAad;;OAEG;IACH,SAAS,CAAC,WAAW,IAAI,IAAI;CAK9B"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ /**
3
+ * Base Adapter - Abstract base class for all agent system adapters
4
+ *
5
+ * Provides sensible defaults so adapter authors only need to implement
6
+ * the core `executeAgent` method. Everything else works out of the box.
7
+ *
8
+ * @module BaseAdapter
9
+ * @version 1.0.0
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.BaseAdapter = void 0;
13
+ class BaseAdapter {
14
+ config = {};
15
+ ready = false;
16
+ registeredAgents = new Map();
17
+ /** Override to declare what your adapter supports */
18
+ get capabilities() {
19
+ return {
20
+ streaming: false,
21
+ parallel: true,
22
+ bidirectional: false,
23
+ discovery: false,
24
+ authentication: false,
25
+ statefulSessions: false,
26
+ };
27
+ }
28
+ // --- Lifecycle ---
29
+ async initialize(config) {
30
+ this.config = config;
31
+ this.ready = true;
32
+ }
33
+ async shutdown() {
34
+ this.ready = false;
35
+ this.registeredAgents.clear();
36
+ }
37
+ isReady() {
38
+ return this.ready;
39
+ }
40
+ // --- Agent Discovery (default: use registered agents) ---
41
+ async listAgents() {
42
+ return Array.from(this.registeredAgents.values());
43
+ }
44
+ async isAgentAvailable(agentId) {
45
+ return this.registeredAgents.has(agentId);
46
+ }
47
+ // --- Health ---
48
+ async healthCheck() {
49
+ return { healthy: this.ready, details: this.ready ? 'Adapter is ready' : 'Adapter not initialized' };
50
+ }
51
+ // --- Helpers for subclasses ---
52
+ /**
53
+ * Register an agent as available through this adapter.
54
+ * Adapters call this during init or discovery to declare their agents.
55
+ */
56
+ registerLocalAgent(agent) {
57
+ this.registeredAgents.set(agent.id, { ...agent, adapter: this.name });
58
+ }
59
+ /**
60
+ * Remove an agent from the registry
61
+ */
62
+ unregisterAgent(agentId) {
63
+ this.registeredAgents.delete(agentId);
64
+ }
65
+ /**
66
+ * Create a standard success result
67
+ */
68
+ successResult(data, executionTimeMs) {
69
+ return {
70
+ success: true,
71
+ data,
72
+ metadata: {
73
+ adapter: this.name,
74
+ executionTimeMs,
75
+ },
76
+ };
77
+ }
78
+ /**
79
+ * Create a standard error result
80
+ */
81
+ errorResult(code, message, recoverable = true, nativeError) {
82
+ return {
83
+ success: false,
84
+ error: {
85
+ code,
86
+ message,
87
+ recoverable,
88
+ nativeError,
89
+ },
90
+ metadata: { adapter: this.name },
91
+ };
92
+ }
93
+ /**
94
+ * Ensures the adapter is initialized before use
95
+ */
96
+ ensureReady() {
97
+ if (!this.ready) {
98
+ throw new Error(`Adapter "${this.name}" is not initialized. Call initialize() first.`);
99
+ }
100
+ }
101
+ }
102
+ exports.BaseAdapter = BaseAdapter;
103
+ //# sourceMappingURL=base-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-adapter.js","sourceRoot":"","sources":["../../adapters/base-adapter.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAYH,MAAsB,WAAW;IAIrB,MAAM,GAAkB,EAAE,CAAC;IAC3B,KAAK,GAAG,KAAK,CAAC;IACd,gBAAgB,GAA2B,IAAI,GAAG,EAAE,CAAC;IAE/D,qDAAqD;IACrD,IAAI,YAAY;QACd,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAI;YACd,aAAa,EAAE,KAAK;YACpB,SAAS,EAAE,KAAK;YAChB,cAAc,EAAE,KAAK;YACrB,gBAAgB,EAAE,KAAK;SACxB,CAAC;IACJ,CAAC;IAED,oBAAoB;IAEpB,KAAK,CAAC,UAAU,CAAC,MAAqB;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAUD,2DAA2D;IAE3D,KAAK,CAAC,UAAU;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAe;QACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,iBAAiB;IAEjB,KAAK,CAAC,WAAW;QACf,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,yBAAyB,EAAE,CAAC;IACvG,CAAC;IAED,iCAAiC;IAEjC;;;OAGG;IACO,kBAAkB,CAAC,KAAiC;QAC5D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACO,eAAe,CAAC,OAAe;QACvC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACO,aAAa,CAAC,IAAa,EAAE,eAAwB;QAC7D,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI;YACJ,QAAQ,EAAE;gBACR,OAAO,EAAE,IAAI,CAAC,IAAI;gBAClB,eAAe;aAChB;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,WAAW,CACnB,IAAY,EACZ,OAAe,EACf,WAAW,GAAG,IAAI,EAClB,WAAqB;QAErB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,IAAI;gBACJ,OAAO;gBACP,WAAW;gBACX,WAAW;aACZ;YACD,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;SACjC,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,WAAW;QACnB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,IAAI,gDAAgD,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;CACF;AAxHD,kCAwHC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * CrewAI Adapter
3
+ *
4
+ * Allows CrewAI agents and crews to plug into the SwarmOrchestrator.
5
+ * CrewAI uses a role-based agent model with tools, so this adapter
6
+ * maps task payloads to CrewAI's Task/Agent execution model.
7
+ *
8
+ * Usage:
9
+ * const adapter = new CrewAIAdapter();
10
+ * adapter.registerAgent("researcher", myCrewAIAgent);
11
+ * adapter.registerCrew("analysis_crew", myCrew);
12
+ * await registry.addAdapter(adapter);
13
+ *
14
+ * Then in the orchestrator:
15
+ * delegateTask({ targetAgent: "crewai:researcher", ... })
16
+ * spawnParallel({ agentType: "crewai:analysis_crew", ... })
17
+ *
18
+ * @module CrewAIAdapter
19
+ * @version 1.0.0
20
+ */
21
+ import { BaseAdapter } from './base-adapter';
22
+ import type { AdapterCapabilities, AgentPayload, AgentContext, AgentResult } from '../types/agent-adapter';
23
+ /**
24
+ * CrewAI-compatible agent interface
25
+ */
26
+ export interface CrewAIAgent {
27
+ role: string;
28
+ goal: string;
29
+ backstory?: string;
30
+ /** Execute a task with this agent */
31
+ execute?: (task: string, context?: Record<string, unknown>) => Promise<string>;
32
+ /** Tools available to this agent */
33
+ tools?: Array<{
34
+ name: string;
35
+ description: string;
36
+ }>;
37
+ }
38
+ /**
39
+ * CrewAI-compatible crew interface
40
+ */
41
+ export interface CrewAICrew {
42
+ agents: CrewAIAgent[];
43
+ /** Kick off the crew with a set of inputs */
44
+ kickoff?: (inputs?: Record<string, unknown>) => Promise<unknown>;
45
+ /** Run with a specific task description */
46
+ run?: (task: string) => Promise<unknown>;
47
+ }
48
+ export declare class CrewAIAdapter extends BaseAdapter {
49
+ readonly name = "crewai";
50
+ readonly version = "1.0.0";
51
+ private agents;
52
+ private crews;
53
+ get capabilities(): AdapterCapabilities;
54
+ /**
55
+ * Register a single CrewAI agent
56
+ */
57
+ registerAgent(agentId: string, agent: CrewAIAgent, metadata?: {
58
+ description?: string;
59
+ capabilities?: string[];
60
+ }): void;
61
+ /**
62
+ * Register an entire CrewAI crew as a single callable unit
63
+ */
64
+ registerCrew(crewId: string, crew: CrewAICrew, metadata?: {
65
+ description?: string;
66
+ }): void;
67
+ executeAgent(agentId: string, payload: AgentPayload, context: AgentContext): Promise<AgentResult>;
68
+ private executeSingleAgent;
69
+ private executeCrew;
70
+ private buildTask;
71
+ }
72
+ //# sourceMappingURL=crewai-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crewai-adapter.d.ts","sourceRoot":"","sources":["../../adapters/crewai-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAEV,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,oCAAoC;IACpC,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACjE,2CAA2C;IAC3C,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED,qBAAa,aAAc,SAAQ,WAAW;IAC5C,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,OAAO,WAAW;IAC3B,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,KAAK,CAAsC;IAEnD,IAAI,YAAY,IAAI,mBAAmB,CAStC;IAED;;OAEG;IACH,aAAa,CACX,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC3D,IAAI;IAWP;;OAEG;IACH,YAAY,CACV,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,EAChB,QAAQ,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,IAAI;IAWD,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC;YAwBT,kBAAkB;YAkClB,WAAW;IAqCzB,OAAO,CAAC,SAAS;CAgBlB"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ /**
3
+ * CrewAI Adapter
4
+ *
5
+ * Allows CrewAI agents and crews to plug into the SwarmOrchestrator.
6
+ * CrewAI uses a role-based agent model with tools, so this adapter
7
+ * maps task payloads to CrewAI's Task/Agent execution model.
8
+ *
9
+ * Usage:
10
+ * const adapter = new CrewAIAdapter();
11
+ * adapter.registerAgent("researcher", myCrewAIAgent);
12
+ * adapter.registerCrew("analysis_crew", myCrew);
13
+ * await registry.addAdapter(adapter);
14
+ *
15
+ * Then in the orchestrator:
16
+ * delegateTask({ targetAgent: "crewai:researcher", ... })
17
+ * spawnParallel({ agentType: "crewai:analysis_crew", ... })
18
+ *
19
+ * @module CrewAIAdapter
20
+ * @version 1.0.0
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.CrewAIAdapter = void 0;
24
+ const base_adapter_1 = require("./base-adapter");
25
+ class CrewAIAdapter extends base_adapter_1.BaseAdapter {
26
+ name = 'crewai';
27
+ version = '1.0.0';
28
+ agents = new Map();
29
+ crews = new Map();
30
+ get capabilities() {
31
+ return {
32
+ streaming: false,
33
+ parallel: true,
34
+ bidirectional: false,
35
+ discovery: true,
36
+ authentication: false,
37
+ statefulSessions: false,
38
+ };
39
+ }
40
+ /**
41
+ * Register a single CrewAI agent
42
+ */
43
+ registerAgent(agentId, agent, metadata) {
44
+ this.agents.set(agentId, agent);
45
+ this.registerLocalAgent({
46
+ id: agentId,
47
+ name: agent.role,
48
+ description: metadata?.description ?? agent.goal,
49
+ capabilities: metadata?.capabilities ?? agent.tools?.map(t => t.name),
50
+ status: 'available',
51
+ });
52
+ }
53
+ /**
54
+ * Register an entire CrewAI crew as a single callable unit
55
+ */
56
+ registerCrew(crewId, crew, metadata) {
57
+ this.crews.set(crewId, crew);
58
+ this.registerLocalAgent({
59
+ id: crewId,
60
+ name: crewId,
61
+ description: metadata?.description ?? `CrewAI crew with ${crew.agents.length} agents`,
62
+ capabilities: crew.agents.map(a => a.role),
63
+ status: 'available',
64
+ });
65
+ }
66
+ async executeAgent(agentId, payload, context) {
67
+ this.ensureReady();
68
+ const startTime = Date.now();
69
+ // Check if it's a crew first
70
+ const crew = this.crews.get(agentId);
71
+ if (crew) {
72
+ return this.executeCrew(crew, payload, startTime);
73
+ }
74
+ // Then check individual agents
75
+ const agent = this.agents.get(agentId);
76
+ if (!agent) {
77
+ return this.errorResult('AGENT_NOT_FOUND', `CrewAI agent/crew "${agentId}" is not registered`, false);
78
+ }
79
+ return this.executeSingleAgent(agent, payload, context, startTime);
80
+ }
81
+ async executeSingleAgent(agent, payload, context, startTime) {
82
+ try {
83
+ if (!agent.execute) {
84
+ return this.errorResult('NO_EXECUTE', `CrewAI agent "${agent.role}" has no execute method`, false);
85
+ }
86
+ const task = this.buildTask(payload);
87
+ const taskContext = {
88
+ agentId: context.agentId,
89
+ taskId: context.taskId,
90
+ ...(payload.blackboardSnapshot ? { shared_state: payload.blackboardSnapshot } : {}),
91
+ };
92
+ const result = await agent.execute(task, taskContext);
93
+ return this.successResult({
94
+ response: result,
95
+ agentRole: agent.role,
96
+ }, Date.now() - startTime);
97
+ }
98
+ catch (error) {
99
+ return this.errorResult('CREWAI_ERROR', error instanceof Error ? error.message : 'CrewAI agent execution failed', true, error);
100
+ }
101
+ }
102
+ async executeCrew(crew, payload, startTime) {
103
+ try {
104
+ let result;
105
+ if (crew.kickoff) {
106
+ const inputs = {
107
+ ...payload.params,
108
+ };
109
+ if (payload.handoff) {
110
+ inputs.task = payload.handoff.instruction;
111
+ inputs.context = payload.handoff.context;
112
+ }
113
+ result = await crew.kickoff(inputs);
114
+ }
115
+ else if (crew.run) {
116
+ result = await crew.run(this.buildTask(payload));
117
+ }
118
+ else {
119
+ return this.errorResult('NO_METHOD', 'CrewAI crew has no kickoff or run method', false);
120
+ }
121
+ return this.successResult({
122
+ crewResult: result,
123
+ agentCount: crew.agents.length,
124
+ }, Date.now() - startTime);
125
+ }
126
+ catch (error) {
127
+ return this.errorResult('CREWAI_ERROR', error instanceof Error ? error.message : 'CrewAI crew execution failed', true, error);
128
+ }
129
+ }
130
+ buildTask(payload) {
131
+ if (payload.handoff?.instruction) {
132
+ let task = payload.handoff.instruction;
133
+ if (payload.handoff.constraints?.length) {
134
+ task += `\n\nConstraints:\n${payload.handoff.constraints.map(c => `- ${c}`).join('\n')}`;
135
+ }
136
+ if (payload.handoff.expectedOutput) {
137
+ task += `\n\nExpected Output: ${payload.handoff.expectedOutput}`;
138
+ }
139
+ if (payload.handoff.context) {
140
+ task += `\n\nContext: ${JSON.stringify(payload.handoff.context)}`;
141
+ }
142
+ return task;
143
+ }
144
+ return JSON.stringify(payload.params);
145
+ }
146
+ }
147
+ exports.CrewAIAdapter = CrewAIAdapter;
148
+ //# sourceMappingURL=crewai-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crewai-adapter.js","sourceRoot":"","sources":["../../adapters/crewai-adapter.ts"],"names":[],"mappings":"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"}