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.
- package/LICENSE +21 -0
- package/QUICKSTART.md +260 -0
- package/README.md +604 -0
- package/SKILL.md +568 -0
- package/dist/adapters/adapter-registry.d.ts +94 -0
- package/dist/adapters/adapter-registry.d.ts.map +1 -0
- package/dist/adapters/adapter-registry.js +355 -0
- package/dist/adapters/adapter-registry.js.map +1 -0
- package/dist/adapters/agno-adapter.d.ts +112 -0
- package/dist/adapters/agno-adapter.d.ts.map +1 -0
- package/dist/adapters/agno-adapter.js +140 -0
- package/dist/adapters/agno-adapter.js.map +1 -0
- package/dist/adapters/autogen-adapter.d.ts +67 -0
- package/dist/adapters/autogen-adapter.d.ts.map +1 -0
- package/dist/adapters/autogen-adapter.js +141 -0
- package/dist/adapters/autogen-adapter.js.map +1 -0
- package/dist/adapters/base-adapter.d.ts +51 -0
- package/dist/adapters/base-adapter.d.ts.map +1 -0
- package/dist/adapters/base-adapter.js +103 -0
- package/dist/adapters/base-adapter.js.map +1 -0
- package/dist/adapters/crewai-adapter.d.ts +72 -0
- package/dist/adapters/crewai-adapter.d.ts.map +1 -0
- package/dist/adapters/crewai-adapter.js +148 -0
- package/dist/adapters/crewai-adapter.js.map +1 -0
- package/dist/adapters/custom-adapter.d.ts +74 -0
- package/dist/adapters/custom-adapter.d.ts.map +1 -0
- package/dist/adapters/custom-adapter.js +142 -0
- package/dist/adapters/custom-adapter.js.map +1 -0
- package/dist/adapters/dspy-adapter.d.ts +70 -0
- package/dist/adapters/dspy-adapter.d.ts.map +1 -0
- package/dist/adapters/dspy-adapter.js +127 -0
- package/dist/adapters/dspy-adapter.js.map +1 -0
- package/dist/adapters/haystack-adapter.d.ts +83 -0
- package/dist/adapters/haystack-adapter.d.ts.map +1 -0
- package/dist/adapters/haystack-adapter.js +149 -0
- package/dist/adapters/haystack-adapter.js.map +1 -0
- package/dist/adapters/index.d.ts +47 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +56 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/langchain-adapter.d.ts +51 -0
- package/dist/adapters/langchain-adapter.d.ts.map +1 -0
- package/dist/adapters/langchain-adapter.js +134 -0
- package/dist/adapters/langchain-adapter.js.map +1 -0
- package/dist/adapters/llamaindex-adapter.d.ts +89 -0
- package/dist/adapters/llamaindex-adapter.d.ts.map +1 -0
- package/dist/adapters/llamaindex-adapter.js +135 -0
- package/dist/adapters/llamaindex-adapter.js.map +1 -0
- package/dist/adapters/mcp-adapter.d.ts +90 -0
- package/dist/adapters/mcp-adapter.d.ts.map +1 -0
- package/dist/adapters/mcp-adapter.js +200 -0
- package/dist/adapters/mcp-adapter.js.map +1 -0
- package/dist/adapters/openai-assistants-adapter.d.ts +94 -0
- package/dist/adapters/openai-assistants-adapter.d.ts.map +1 -0
- package/dist/adapters/openai-assistants-adapter.js +130 -0
- package/dist/adapters/openai-assistants-adapter.js.map +1 -0
- package/dist/adapters/openclaw-adapter.d.ts +21 -0
- package/dist/adapters/openclaw-adapter.d.ts.map +1 -0
- package/dist/adapters/openclaw-adapter.js +140 -0
- package/dist/adapters/openclaw-adapter.js.map +1 -0
- package/dist/adapters/semantic-kernel-adapter.d.ts +73 -0
- package/dist/adapters/semantic-kernel-adapter.d.ts.map +1 -0
- package/dist/adapters/semantic-kernel-adapter.js +123 -0
- package/dist/adapters/semantic-kernel-adapter.js.map +1 -0
- package/dist/index.d.ts +379 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1428 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/blackboard-validator.d.ts +205 -0
- package/dist/lib/blackboard-validator.d.ts.map +1 -0
- package/dist/lib/blackboard-validator.js +756 -0
- package/dist/lib/blackboard-validator.js.map +1 -0
- package/dist/lib/locked-blackboard.d.ts +174 -0
- package/dist/lib/locked-blackboard.d.ts.map +1 -0
- package/dist/lib/locked-blackboard.js +654 -0
- package/dist/lib/locked-blackboard.js.map +1 -0
- package/dist/lib/swarm-utils.d.ts +136 -0
- package/dist/lib/swarm-utils.d.ts.map +1 -0
- package/dist/lib/swarm-utils.js +510 -0
- package/dist/lib/swarm-utils.js.map +1 -0
- package/dist/security.d.ts +269 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +713 -0
- package/dist/security.js.map +1 -0
- package/package.json +84 -0
- package/scripts/blackboard.py +819 -0
- package/scripts/check_permission.py +331 -0
- package/scripts/revoke_token.py +243 -0
- package/scripts/swarm_guard.py +1140 -0
- package/scripts/validate_token.py +97 -0
- package/types/agent-adapter.d.ts +244 -0
- package/types/openclaw-core.d.ts +52 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Haystack Adapter
|
|
4
|
+
*
|
|
5
|
+
* Integrates deepset Haystack pipelines and agents with the SwarmOrchestrator.
|
|
6
|
+
* Haystack is a production-grade framework for building RAG and search
|
|
7
|
+
* pipelines with customisable components.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* const adapter = new HaystackAdapter();
|
|
11
|
+
* adapter.registerPipeline("search", myPipeline);
|
|
12
|
+
* adapter.registerAgent("qa-agent", myHaystackAgent);
|
|
13
|
+
* await registry.addAdapter(adapter);
|
|
14
|
+
*
|
|
15
|
+
* Then in the orchestrator:
|
|
16
|
+
* delegateTask({ targetAgent: "haystack:search", ... })
|
|
17
|
+
*
|
|
18
|
+
* @module HaystackAdapter
|
|
19
|
+
* @version 1.0.0
|
|
20
|
+
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.HaystackAdapter = void 0;
|
|
23
|
+
const base_adapter_1 = require("./base-adapter");
|
|
24
|
+
class HaystackAdapter extends base_adapter_1.BaseAdapter {
|
|
25
|
+
name = 'haystack';
|
|
26
|
+
version = '1.0.0';
|
|
27
|
+
entries = new Map();
|
|
28
|
+
get capabilities() {
|
|
29
|
+
return {
|
|
30
|
+
streaming: false,
|
|
31
|
+
parallel: true,
|
|
32
|
+
bidirectional: false,
|
|
33
|
+
discovery: true,
|
|
34
|
+
authentication: false,
|
|
35
|
+
statefulSessions: false,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
// --- Registration ---
|
|
39
|
+
registerPipeline(agentId, pipeline, metadata) {
|
|
40
|
+
this.entries.set(agentId, { type: 'pipeline', pipeline });
|
|
41
|
+
const pipelineMeta = pipeline.getMetadata?.();
|
|
42
|
+
this.registerLocalAgent({
|
|
43
|
+
id: agentId,
|
|
44
|
+
name: pipelineMeta?.name || agentId,
|
|
45
|
+
description: metadata?.description ?? `Haystack Pipeline: ${agentId}`,
|
|
46
|
+
capabilities: metadata?.capabilities ?? ['pipeline', 'rag'],
|
|
47
|
+
status: 'available',
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
registerAgent(agentId, agent, metadata) {
|
|
51
|
+
this.entries.set(agentId, { type: 'agent', agent });
|
|
52
|
+
this.registerLocalAgent({
|
|
53
|
+
id: agentId,
|
|
54
|
+
name: agentId,
|
|
55
|
+
description: metadata?.description ?? `Haystack Agent: ${agentId}`,
|
|
56
|
+
capabilities: metadata?.capabilities ?? ['agent', 'qa'],
|
|
57
|
+
status: 'available',
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
registerComponent(agentId, component, metadata) {
|
|
61
|
+
this.entries.set(agentId, { type: 'component', component });
|
|
62
|
+
this.registerLocalAgent({
|
|
63
|
+
id: agentId,
|
|
64
|
+
name: agentId,
|
|
65
|
+
description: metadata?.description ?? `Haystack Component: ${agentId}`,
|
|
66
|
+
capabilities: metadata?.capabilities ?? ['component'],
|
|
67
|
+
status: 'available',
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
// --- Execution ---
|
|
71
|
+
async executeAgent(agentId, payload, context) {
|
|
72
|
+
this.ensureReady();
|
|
73
|
+
const entry = this.entries.get(agentId);
|
|
74
|
+
if (!entry) {
|
|
75
|
+
return this.errorResult('AGENT_NOT_FOUND', `Haystack entry "${agentId}" is not registered`, false);
|
|
76
|
+
}
|
|
77
|
+
const startTime = Date.now();
|
|
78
|
+
try {
|
|
79
|
+
switch (entry.type) {
|
|
80
|
+
case 'pipeline':
|
|
81
|
+
return await this.executePipeline(entry.pipeline, payload, startTime);
|
|
82
|
+
case 'agent':
|
|
83
|
+
return await this.executeHaystackAgent(entry.agent, payload, startTime);
|
|
84
|
+
case 'component':
|
|
85
|
+
return await this.executeComponent(entry.component, payload, startTime);
|
|
86
|
+
default:
|
|
87
|
+
return this.errorResult('UNKNOWN_TYPE', 'Unknown entry type', false);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
return this.errorResult('HAYSTACK_ERROR', error instanceof Error ? error.message : 'Haystack execution failed', true, error);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// --- Private helpers ---
|
|
95
|
+
async executePipeline(pipeline, payload, startTime) {
|
|
96
|
+
const inputs = this.buildPipelineInputs(payload);
|
|
97
|
+
const result = await pipeline.run(inputs);
|
|
98
|
+
return this.successResult(this.normalizePipelineResult(result), Date.now() - startTime);
|
|
99
|
+
}
|
|
100
|
+
async executeHaystackAgent(agent, payload, startTime) {
|
|
101
|
+
const query = payload.handoff?.instruction
|
|
102
|
+
|| payload.params?.query
|
|
103
|
+
|| JSON.stringify(payload.params);
|
|
104
|
+
const result = await agent.run(query, payload.params);
|
|
105
|
+
return this.successResult({
|
|
106
|
+
response: result.answer ?? '',
|
|
107
|
+
transcript: result.transcript,
|
|
108
|
+
documents: result.documents?.map((d) => ({
|
|
109
|
+
content: d.content?.slice(0, 300),
|
|
110
|
+
score: d.score,
|
|
111
|
+
meta: d.meta,
|
|
112
|
+
})),
|
|
113
|
+
}, Date.now() - startTime);
|
|
114
|
+
}
|
|
115
|
+
async executeComponent(component, payload, startTime) {
|
|
116
|
+
const inputs = this.buildPipelineInputs(payload);
|
|
117
|
+
const result = await component.run(inputs);
|
|
118
|
+
return this.successResult(result, Date.now() - startTime);
|
|
119
|
+
}
|
|
120
|
+
buildPipelineInputs(payload) {
|
|
121
|
+
const inputs = { ...payload.params };
|
|
122
|
+
if (payload.handoff?.instruction) {
|
|
123
|
+
inputs.query = payload.handoff.instruction;
|
|
124
|
+
}
|
|
125
|
+
if (payload.blackboardSnapshot) {
|
|
126
|
+
inputs.context = payload.blackboardSnapshot;
|
|
127
|
+
}
|
|
128
|
+
return inputs;
|
|
129
|
+
}
|
|
130
|
+
normalizePipelineResult(result) {
|
|
131
|
+
// Haystack pipeline results are keyed by component name.
|
|
132
|
+
// Try to find an answer/reply in the output.
|
|
133
|
+
const keys = Object.keys(result);
|
|
134
|
+
for (const key of keys) {
|
|
135
|
+
const component = result[key];
|
|
136
|
+
if (component && typeof component === 'object') {
|
|
137
|
+
if ('replies' in component)
|
|
138
|
+
return { response: component.replies, components: result };
|
|
139
|
+
if ('answers' in component)
|
|
140
|
+
return { response: component.answers, components: result };
|
|
141
|
+
if ('documents' in component)
|
|
142
|
+
return { documents: component.documents, components: result };
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return { response: result };
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
exports.HaystackAdapter = HaystackAdapter;
|
|
149
|
+
//# sourceMappingURL=haystack-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"haystack-adapter.js","sourceRoot":"","sources":["../../adapters/haystack-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter System -- Plug-and-Play Agent Framework Support
|
|
3
|
+
*
|
|
4
|
+
* This module exports everything needed to make the SwarmOrchestrator
|
|
5
|
+
* work with any agent system. Import from here for clean access.
|
|
6
|
+
*
|
|
7
|
+
* Quick Start:
|
|
8
|
+
*
|
|
9
|
+
* import { AdapterRegistry, CustomAdapter } from './adapters';
|
|
10
|
+
*
|
|
11
|
+
* const registry = new AdapterRegistry();
|
|
12
|
+
* const custom = new CustomAdapter();
|
|
13
|
+
* custom.registerHandler("my-agent", async (payload) => {
|
|
14
|
+
* return { result: "done" };
|
|
15
|
+
* });
|
|
16
|
+
* await registry.addAdapter(custom);
|
|
17
|
+
*
|
|
18
|
+
* @module Adapters
|
|
19
|
+
* @version 1.0.0
|
|
20
|
+
*/
|
|
21
|
+
export { BaseAdapter } from './base-adapter';
|
|
22
|
+
export { AdapterRegistry, getRegistry } from './adapter-registry';
|
|
23
|
+
export { OpenClawAdapter } from './openclaw-adapter';
|
|
24
|
+
export { LangChainAdapter } from './langchain-adapter';
|
|
25
|
+
export type { LangChainRunnable } from './langchain-adapter';
|
|
26
|
+
export { AutoGenAdapter } from './autogen-adapter';
|
|
27
|
+
export type { AutoGenAgent } from './autogen-adapter';
|
|
28
|
+
export { CrewAIAdapter } from './crewai-adapter';
|
|
29
|
+
export type { CrewAIAgent, CrewAICrew } from './crewai-adapter';
|
|
30
|
+
export { MCPAdapter } from './mcp-adapter';
|
|
31
|
+
export type { MCPTool, MCPToolHandler, MCPServerConnection } from './mcp-adapter';
|
|
32
|
+
export { CustomAdapter } from './custom-adapter';
|
|
33
|
+
export type { AgentHandler, HttpAgentConfig } from './custom-adapter';
|
|
34
|
+
export { LlamaIndexAdapter } from './llamaindex-adapter';
|
|
35
|
+
export type { LlamaIndexQueryEngine, LlamaIndexChatEngine, LlamaIndexAgentRunner, LlamaIndexResponse, } from './llamaindex-adapter';
|
|
36
|
+
export { SemanticKernelAdapter } from './semantic-kernel-adapter';
|
|
37
|
+
export type { SKKernel, SKFunction, SKFunctionResult, SKPlanResult } from './semantic-kernel-adapter';
|
|
38
|
+
export { OpenAIAssistantsAdapter } from './openai-assistants-adapter';
|
|
39
|
+
export type { AssistantConfig, OpenAIAssistantsClient, ThreadMessage, RunResult, } from './openai-assistants-adapter';
|
|
40
|
+
export { HaystackAdapter } from './haystack-adapter';
|
|
41
|
+
export type { HaystackPipeline, HaystackPipelineResult, HaystackAgent, HaystackAgentResult, HaystackComponent, } from './haystack-adapter';
|
|
42
|
+
export { DSPyAdapter } from './dspy-adapter';
|
|
43
|
+
export type { DSPyModule, DSPyProgram, DSPyPrediction, DSPyPredictor } from './dspy-adapter';
|
|
44
|
+
export { AgnoAdapter } from './agno-adapter';
|
|
45
|
+
export type { AgnoAgent, AgnoTeam, AgnoResponse, AgnoFunction, } from './agno-adapter';
|
|
46
|
+
export type { IAgentAdapter, AgentPayload, AgentContext, AgentResult, AgentInfo, AdapterConfig, AdapterCapabilities, AdapterRoute, RegistryConfig, AdapterEvent, AdapterEventHandler, AdapterEventType, } from '../types/agent-adapter';
|
|
47
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGlE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,YAAY,EACV,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,SAAS,GACV,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EACV,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,YAAY,GACb,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Adapter System -- Plug-and-Play Agent Framework Support
|
|
4
|
+
*
|
|
5
|
+
* This module exports everything needed to make the SwarmOrchestrator
|
|
6
|
+
* work with any agent system. Import from here for clean access.
|
|
7
|
+
*
|
|
8
|
+
* Quick Start:
|
|
9
|
+
*
|
|
10
|
+
* import { AdapterRegistry, CustomAdapter } from './adapters';
|
|
11
|
+
*
|
|
12
|
+
* const registry = new AdapterRegistry();
|
|
13
|
+
* const custom = new CustomAdapter();
|
|
14
|
+
* custom.registerHandler("my-agent", async (payload) => {
|
|
15
|
+
* return { result: "done" };
|
|
16
|
+
* });
|
|
17
|
+
* await registry.addAdapter(custom);
|
|
18
|
+
*
|
|
19
|
+
* @module Adapters
|
|
20
|
+
* @version 1.0.0
|
|
21
|
+
*/
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.AgnoAdapter = exports.DSPyAdapter = exports.HaystackAdapter = exports.OpenAIAssistantsAdapter = exports.SemanticKernelAdapter = exports.LlamaIndexAdapter = exports.CustomAdapter = exports.MCPAdapter = exports.CrewAIAdapter = exports.AutoGenAdapter = exports.LangChainAdapter = exports.OpenClawAdapter = exports.getRegistry = exports.AdapterRegistry = exports.BaseAdapter = void 0;
|
|
24
|
+
// Core infrastructure
|
|
25
|
+
var base_adapter_1 = require("./base-adapter");
|
|
26
|
+
Object.defineProperty(exports, "BaseAdapter", { enumerable: true, get: function () { return base_adapter_1.BaseAdapter; } });
|
|
27
|
+
var adapter_registry_1 = require("./adapter-registry");
|
|
28
|
+
Object.defineProperty(exports, "AdapterRegistry", { enumerable: true, get: function () { return adapter_registry_1.AdapterRegistry; } });
|
|
29
|
+
Object.defineProperty(exports, "getRegistry", { enumerable: true, get: function () { return adapter_registry_1.getRegistry; } });
|
|
30
|
+
// Framework adapters -- Original 6
|
|
31
|
+
var openclaw_adapter_1 = require("./openclaw-adapter");
|
|
32
|
+
Object.defineProperty(exports, "OpenClawAdapter", { enumerable: true, get: function () { return openclaw_adapter_1.OpenClawAdapter; } });
|
|
33
|
+
var langchain_adapter_1 = require("./langchain-adapter");
|
|
34
|
+
Object.defineProperty(exports, "LangChainAdapter", { enumerable: true, get: function () { return langchain_adapter_1.LangChainAdapter; } });
|
|
35
|
+
var autogen_adapter_1 = require("./autogen-adapter");
|
|
36
|
+
Object.defineProperty(exports, "AutoGenAdapter", { enumerable: true, get: function () { return autogen_adapter_1.AutoGenAdapter; } });
|
|
37
|
+
var crewai_adapter_1 = require("./crewai-adapter");
|
|
38
|
+
Object.defineProperty(exports, "CrewAIAdapter", { enumerable: true, get: function () { return crewai_adapter_1.CrewAIAdapter; } });
|
|
39
|
+
var mcp_adapter_1 = require("./mcp-adapter");
|
|
40
|
+
Object.defineProperty(exports, "MCPAdapter", { enumerable: true, get: function () { return mcp_adapter_1.MCPAdapter; } });
|
|
41
|
+
var custom_adapter_1 = require("./custom-adapter");
|
|
42
|
+
Object.defineProperty(exports, "CustomAdapter", { enumerable: true, get: function () { return custom_adapter_1.CustomAdapter; } });
|
|
43
|
+
// Framework adapters -- New 6
|
|
44
|
+
var llamaindex_adapter_1 = require("./llamaindex-adapter");
|
|
45
|
+
Object.defineProperty(exports, "LlamaIndexAdapter", { enumerable: true, get: function () { return llamaindex_adapter_1.LlamaIndexAdapter; } });
|
|
46
|
+
var semantic_kernel_adapter_1 = require("./semantic-kernel-adapter");
|
|
47
|
+
Object.defineProperty(exports, "SemanticKernelAdapter", { enumerable: true, get: function () { return semantic_kernel_adapter_1.SemanticKernelAdapter; } });
|
|
48
|
+
var openai_assistants_adapter_1 = require("./openai-assistants-adapter");
|
|
49
|
+
Object.defineProperty(exports, "OpenAIAssistantsAdapter", { enumerable: true, get: function () { return openai_assistants_adapter_1.OpenAIAssistantsAdapter; } });
|
|
50
|
+
var haystack_adapter_1 = require("./haystack-adapter");
|
|
51
|
+
Object.defineProperty(exports, "HaystackAdapter", { enumerable: true, get: function () { return haystack_adapter_1.HaystackAdapter; } });
|
|
52
|
+
var dspy_adapter_1 = require("./dspy-adapter");
|
|
53
|
+
Object.defineProperty(exports, "DSPyAdapter", { enumerable: true, get: function () { return dspy_adapter_1.DSPyAdapter; } });
|
|
54
|
+
var agno_adapter_1 = require("./agno-adapter");
|
|
55
|
+
Object.defineProperty(exports, "AgnoAdapter", { enumerable: true, get: function () { return agno_adapter_1.AgnoAdapter; } });
|
|
56
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../adapters/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAEH,sBAAsB;AACtB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,uDAAkE;AAAzD,mHAAA,eAAe,OAAA;AAAE,+GAAA,WAAW,OAAA;AAErC,mCAAmC;AACnC,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AACxB,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AAEzB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAEvB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAEtB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAEnB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAGtB,8BAA8B;AAC9B,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAO1B,qEAAkE;AAAzD,gIAAA,qBAAqB,OAAA;AAE9B,yEAAsE;AAA7D,oIAAA,uBAAuB,OAAA;AAOhC,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAQxB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAEpB,+CAA6C;AAApC,2GAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LangChain / LangGraph Adapter
|
|
3
|
+
*
|
|
4
|
+
* Allows LangChain agents, chains, and LangGraph workflows to plug into
|
|
5
|
+
* the SwarmOrchestrator. Agents are registered as callable functions
|
|
6
|
+
* or LangChain Runnable objects.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* const adapter = new LangChainAdapter();
|
|
10
|
+
* adapter.registerAgent("research", myLangChainAgent);
|
|
11
|
+
* adapter.registerAgent("summarizer", myChain);
|
|
12
|
+
* await registry.addAdapter(adapter);
|
|
13
|
+
*
|
|
14
|
+
* Then in the orchestrator:
|
|
15
|
+
* delegateTask({ targetAgent: "lc:research", ... })
|
|
16
|
+
*
|
|
17
|
+
* @module LangChainAdapter
|
|
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
|
+
* A LangChain-compatible callable.
|
|
24
|
+
* This matches LangChain's Runnable interface: anything with .invoke()
|
|
25
|
+
* Also supports plain async functions for flexibility.
|
|
26
|
+
*/
|
|
27
|
+
export type LangChainRunnable = {
|
|
28
|
+
invoke: (input: unknown, config?: unknown) => Promise<unknown>;
|
|
29
|
+
getName?: () => string;
|
|
30
|
+
} | ((input: unknown) => Promise<unknown>);
|
|
31
|
+
export declare class LangChainAdapter extends BaseAdapter {
|
|
32
|
+
readonly name = "langchain";
|
|
33
|
+
readonly version = "1.0.0";
|
|
34
|
+
private runnables;
|
|
35
|
+
get capabilities(): AdapterCapabilities;
|
|
36
|
+
/**
|
|
37
|
+
* Register a LangChain agent, chain, or LangGraph graph.
|
|
38
|
+
*
|
|
39
|
+
* @param agentId - Unique identifier for this agent
|
|
40
|
+
* @param runnable - A LangChain Runnable (agent, chain, graph) or async function
|
|
41
|
+
* @param metadata - Optional metadata (description, capabilities)
|
|
42
|
+
*/
|
|
43
|
+
registerAgent(agentId: string, runnable: LangChainRunnable, metadata?: {
|
|
44
|
+
description?: string;
|
|
45
|
+
capabilities?: string[];
|
|
46
|
+
}): void;
|
|
47
|
+
executeAgent(agentId: string, payload: AgentPayload, context: AgentContext): Promise<AgentResult>;
|
|
48
|
+
private buildInput;
|
|
49
|
+
private normalizeResult;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=langchain-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langchain-adapter.d.ts","sourceRoot":"","sources":["../../adapters/langchain-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;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,OAAO,CAAC,EAAE,MAAM,MAAM,CAAC;CACxB,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAE3C,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,OAAO,WAAW;IAC3B,OAAO,CAAC,SAAS,CAA6C;IAE9D,IAAI,YAAY,IAAI,mBAAmB,CAStC;IAED;;;;;;OAMG;IACH,aAAa,CACX,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,iBAAiB,EAC3B,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;IA4CvB,OAAO,CAAC,UAAU;IAkClB,OAAO,CAAC,eAAe;CAsBxB"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* LangChain / LangGraph Adapter
|
|
4
|
+
*
|
|
5
|
+
* Allows LangChain agents, chains, and LangGraph workflows to plug into
|
|
6
|
+
* the SwarmOrchestrator. Agents are registered as callable functions
|
|
7
|
+
* or LangChain Runnable objects.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* const adapter = new LangChainAdapter();
|
|
11
|
+
* adapter.registerAgent("research", myLangChainAgent);
|
|
12
|
+
* adapter.registerAgent("summarizer", myChain);
|
|
13
|
+
* await registry.addAdapter(adapter);
|
|
14
|
+
*
|
|
15
|
+
* Then in the orchestrator:
|
|
16
|
+
* delegateTask({ targetAgent: "lc:research", ... })
|
|
17
|
+
*
|
|
18
|
+
* @module LangChainAdapter
|
|
19
|
+
* @version 1.0.0
|
|
20
|
+
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.LangChainAdapter = void 0;
|
|
23
|
+
const base_adapter_1 = require("./base-adapter");
|
|
24
|
+
class LangChainAdapter extends base_adapter_1.BaseAdapter {
|
|
25
|
+
name = 'langchain';
|
|
26
|
+
version = '1.0.0';
|
|
27
|
+
runnables = new Map();
|
|
28
|
+
get capabilities() {
|
|
29
|
+
return {
|
|
30
|
+
streaming: true,
|
|
31
|
+
parallel: true,
|
|
32
|
+
bidirectional: false,
|
|
33
|
+
discovery: true,
|
|
34
|
+
authentication: false,
|
|
35
|
+
statefulSessions: true,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Register a LangChain agent, chain, or LangGraph graph.
|
|
40
|
+
*
|
|
41
|
+
* @param agentId - Unique identifier for this agent
|
|
42
|
+
* @param runnable - A LangChain Runnable (agent, chain, graph) or async function
|
|
43
|
+
* @param metadata - Optional metadata (description, capabilities)
|
|
44
|
+
*/
|
|
45
|
+
registerAgent(agentId, runnable, metadata) {
|
|
46
|
+
this.runnables.set(agentId, runnable);
|
|
47
|
+
this.registerLocalAgent({
|
|
48
|
+
id: agentId,
|
|
49
|
+
name: agentId,
|
|
50
|
+
description: metadata?.description ?? `LangChain agent: ${agentId}`,
|
|
51
|
+
capabilities: metadata?.capabilities,
|
|
52
|
+
status: 'available',
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
async executeAgent(agentId, payload, context) {
|
|
56
|
+
this.ensureReady();
|
|
57
|
+
const runnable = this.runnables.get(agentId);
|
|
58
|
+
if (!runnable) {
|
|
59
|
+
return this.errorResult('AGENT_NOT_FOUND', `LangChain agent "${agentId}" is not registered. Call adapter.registerAgent() first.`, false);
|
|
60
|
+
}
|
|
61
|
+
const startTime = Date.now();
|
|
62
|
+
try {
|
|
63
|
+
// Build the input in LangChain's expected format
|
|
64
|
+
const input = this.buildInput(payload, context);
|
|
65
|
+
// Execute: support both Runnable.invoke() and plain functions
|
|
66
|
+
let result;
|
|
67
|
+
if (typeof runnable === 'function') {
|
|
68
|
+
result = await runnable(input);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
result = await runnable.invoke(input, {
|
|
72
|
+
metadata: {
|
|
73
|
+
taskId: context.taskId,
|
|
74
|
+
sessionId: context.sessionId,
|
|
75
|
+
sourceAgent: context.agentId,
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
// Normalize the result
|
|
80
|
+
return this.normalizeResult(result, startTime);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
return this.errorResult('LANGCHAIN_ERROR', error instanceof Error ? error.message : 'LangChain execution failed', true, error);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
buildInput(payload, context) {
|
|
87
|
+
const input = {
|
|
88
|
+
...payload.params,
|
|
89
|
+
};
|
|
90
|
+
// Map handoff instruction to common LangChain input keys
|
|
91
|
+
if (payload.handoff) {
|
|
92
|
+
input.input = payload.handoff.instruction;
|
|
93
|
+
input.question = payload.handoff.instruction; // Some chains expect "question"
|
|
94
|
+
input.task = payload.handoff.instruction;
|
|
95
|
+
if (payload.handoff.context) {
|
|
96
|
+
input.context = payload.handoff.context;
|
|
97
|
+
}
|
|
98
|
+
if (payload.handoff.constraints) {
|
|
99
|
+
input.constraints = payload.handoff.constraints;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Include blackboard data
|
|
103
|
+
if (payload.blackboardSnapshot) {
|
|
104
|
+
input.shared_state = payload.blackboardSnapshot;
|
|
105
|
+
}
|
|
106
|
+
// Agent context
|
|
107
|
+
input.agent_context = {
|
|
108
|
+
agentId: context.agentId,
|
|
109
|
+
taskId: context.taskId,
|
|
110
|
+
sessionId: context.sessionId,
|
|
111
|
+
};
|
|
112
|
+
return input;
|
|
113
|
+
}
|
|
114
|
+
normalizeResult(result, startTime) {
|
|
115
|
+
// Handle LangChain's various output formats
|
|
116
|
+
if (result && typeof result === 'object') {
|
|
117
|
+
const obj = result;
|
|
118
|
+
// AgentExecutor returns { output: "..." }
|
|
119
|
+
if ('output' in obj) {
|
|
120
|
+
return this.successResult(obj.output, Date.now() - startTime);
|
|
121
|
+
}
|
|
122
|
+
// Some chains return { result: "..." }
|
|
123
|
+
if ('result' in obj) {
|
|
124
|
+
return this.successResult(obj.result, Date.now() - startTime);
|
|
125
|
+
}
|
|
126
|
+
// LangGraph returns state objects -- pass through
|
|
127
|
+
return this.successResult(result, Date.now() - startTime);
|
|
128
|
+
}
|
|
129
|
+
// String or primitive result
|
|
130
|
+
return this.successResult(result, Date.now() - startTime);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
exports.LangChainAdapter = LangChainAdapter;
|
|
134
|
+
//# sourceMappingURL=langchain-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langchain-adapter.js","sourceRoot":"","sources":["../../adapters/langchain-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LlamaIndex Adapter
|
|
3
|
+
*
|
|
4
|
+
* Integrates LlamaIndex agents (QueryEngine, ChatEngine, AgentRunner)
|
|
5
|
+
* with the SwarmOrchestrator. LlamaIndex specialises in retrieval-augmented
|
|
6
|
+
* generation (RAG) and agent-based reasoning over data.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* const adapter = new LlamaIndexAdapter();
|
|
10
|
+
* adapter.registerQueryEngine("rag-search", myQueryEngine);
|
|
11
|
+
* adapter.registerChatEngine("assistant", myChatEngine);
|
|
12
|
+
* adapter.registerAgentRunner("researcher", myAgentRunner);
|
|
13
|
+
* await registry.addAdapter(adapter);
|
|
14
|
+
*
|
|
15
|
+
* Then in the orchestrator:
|
|
16
|
+
* delegateTask({ targetAgent: "llamaindex:rag-search", ... })
|
|
17
|
+
*
|
|
18
|
+
* @module LlamaIndexAdapter
|
|
19
|
+
* @version 1.0.0
|
|
20
|
+
*/
|
|
21
|
+
import { BaseAdapter } from './base-adapter';
|
|
22
|
+
import type { AdapterCapabilities, AgentPayload, AgentContext, AgentResult } from '../types/agent-adapter';
|
|
23
|
+
/** Matches LlamaIndex's BaseQueryEngine */
|
|
24
|
+
export interface LlamaIndexQueryEngine {
|
|
25
|
+
query(query: string): Promise<LlamaIndexResponse>;
|
|
26
|
+
}
|
|
27
|
+
/** Matches LlamaIndex's BaseChatEngine */
|
|
28
|
+
export interface LlamaIndexChatEngine {
|
|
29
|
+
chat(message: string, chatHistory?: Array<{
|
|
30
|
+
role: string;
|
|
31
|
+
content: string;
|
|
32
|
+
}>): Promise<LlamaIndexResponse>;
|
|
33
|
+
reset?(): void;
|
|
34
|
+
}
|
|
35
|
+
/** Matches LlamaIndex's AgentRunner / OpenAIAgent / ReActAgent */
|
|
36
|
+
export interface LlamaIndexAgentRunner {
|
|
37
|
+
chat(message: string): Promise<LlamaIndexResponse>;
|
|
38
|
+
/** Stream response (optional) */
|
|
39
|
+
streamChat?(message: string): AsyncIterable<{
|
|
40
|
+
response: string;
|
|
41
|
+
}>;
|
|
42
|
+
/** Step-by-step execution (optional) */
|
|
43
|
+
runStep?(taskId: string, input?: string): Promise<{
|
|
44
|
+
output: unknown;
|
|
45
|
+
isLast: boolean;
|
|
46
|
+
}>;
|
|
47
|
+
createTask?(input: string): Promise<{
|
|
48
|
+
taskId: string;
|
|
49
|
+
}>;
|
|
50
|
+
reset?(): void;
|
|
51
|
+
}
|
|
52
|
+
/** LlamaIndex response object */
|
|
53
|
+
export interface LlamaIndexResponse {
|
|
54
|
+
response?: string;
|
|
55
|
+
toString?(): string;
|
|
56
|
+
sourceNodes?: Array<{
|
|
57
|
+
node?: {
|
|
58
|
+
text?: string;
|
|
59
|
+
metadata?: Record<string, unknown>;
|
|
60
|
+
};
|
|
61
|
+
score?: number;
|
|
62
|
+
}>;
|
|
63
|
+
metadata?: Record<string, unknown>;
|
|
64
|
+
}
|
|
65
|
+
export declare class LlamaIndexAdapter extends BaseAdapter {
|
|
66
|
+
readonly name = "llamaindex";
|
|
67
|
+
readonly version = "1.0.0";
|
|
68
|
+
private engines;
|
|
69
|
+
get capabilities(): AdapterCapabilities;
|
|
70
|
+
registerQueryEngine(agentId: string, engine: LlamaIndexQueryEngine, metadata?: {
|
|
71
|
+
description?: string;
|
|
72
|
+
capabilities?: string[];
|
|
73
|
+
}): void;
|
|
74
|
+
registerChatEngine(agentId: string, engine: LlamaIndexChatEngine, metadata?: {
|
|
75
|
+
description?: string;
|
|
76
|
+
capabilities?: string[];
|
|
77
|
+
}): void;
|
|
78
|
+
registerAgentRunner(agentId: string, engine: LlamaIndexAgentRunner, metadata?: {
|
|
79
|
+
description?: string;
|
|
80
|
+
capabilities?: string[];
|
|
81
|
+
}): void;
|
|
82
|
+
executeAgent(agentId: string, payload: AgentPayload, context: AgentContext): Promise<AgentResult>;
|
|
83
|
+
private extractQuery;
|
|
84
|
+
private executeQuery;
|
|
85
|
+
private executeChat;
|
|
86
|
+
private executeAgentRunner;
|
|
87
|
+
private normalizeResponse;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=llamaindex-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llamaindex-adapter.d.ts","sourceRoot":"","sources":["../../adapters/llamaindex-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;AAMhC,2CAA2C;AAC3C,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACnD;AAED,0CAA0C;AAC1C,MAAM,WAAW,oBAAoB;IACnC,IAAI,CACF,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,GACrD,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,IAAI,CAAC;CAChB;AAED,kEAAkE;AAClE,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnD,iCAAiC;IACjC,UAAU,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,wCAAwC;IACxC,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACxF,UAAU,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,KAAK,CAAC,IAAI,IAAI,CAAC;CAChB;AAED,iCAAiC;AACjC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,IAAI,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC;QAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAOD,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,OAAO,WAAW;IAC3B,OAAO,CAAC,OAAO,CAA4C;IAE3D,IAAI,YAAY,IAAI,mBAAmB,CAStC;IAID,mBAAmB,CACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC3D,IAAI;IAWP,kBAAkB,CAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC3D,IAAI;IAWP,mBAAmB,CACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC3D,IAAI;IAaD,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC;IAsCvB,OAAO,CAAC,YAAY;YAON,YAAY;YASZ,WAAW;YAWX,kBAAkB;IAShC,OAAO,CAAC,iBAAiB;CAgB1B"}
|