@xynehq/jaf 0.1.2
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/README.md +596 -0
- package/dist/a2a/agent-card.d.ts +28 -0
- package/dist/a2a/agent-card.d.ts.map +1 -0
- package/dist/a2a/agent-card.js +250 -0
- package/dist/a2a/agent-card.js.map +1 -0
- package/dist/a2a/agent.d.ts +38 -0
- package/dist/a2a/agent.d.ts.map +1 -0
- package/dist/a2a/agent.js +223 -0
- package/dist/a2a/agent.js.map +1 -0
- package/dist/a2a/client.d.ts +35 -0
- package/dist/a2a/client.d.ts.map +1 -0
- package/dist/a2a/client.js +337 -0
- package/dist/a2a/client.js.map +1 -0
- package/dist/a2a/examples/client-example.d.ts +104 -0
- package/dist/a2a/examples/client-example.d.ts.map +1 -0
- package/dist/a2a/examples/client-example.js +232 -0
- package/dist/a2a/examples/client-example.js.map +1 -0
- package/dist/a2a/examples/server-example.d.ts +9 -0
- package/dist/a2a/examples/server-example.d.ts.map +1 -0
- package/dist/a2a/examples/server-example.js +209 -0
- package/dist/a2a/examples/server-example.js.map +1 -0
- package/dist/a2a/examples/weather-agent.d.ts +8 -0
- package/dist/a2a/examples/weather-agent.d.ts.map +1 -0
- package/dist/a2a/examples/weather-agent.js +232 -0
- package/dist/a2a/examples/weather-agent.js.map +1 -0
- package/dist/a2a/executor.d.ts +43 -0
- package/dist/a2a/executor.d.ts.map +1 -0
- package/dist/a2a/executor.js +507 -0
- package/dist/a2a/executor.js.map +1 -0
- package/dist/a2a/index.d.ts +378 -0
- package/dist/a2a/index.d.ts.map +1 -0
- package/dist/a2a/index.js +72 -0
- package/dist/a2a/index.js.map +1 -0
- package/dist/a2a/memory/cleanup.d.ts +58 -0
- package/dist/a2a/memory/cleanup.d.ts.map +1 -0
- package/dist/a2a/memory/cleanup.js +281 -0
- package/dist/a2a/memory/cleanup.js.map +1 -0
- package/dist/a2a/memory/factory.d.ts +38 -0
- package/dist/a2a/memory/factory.d.ts.map +1 -0
- package/dist/a2a/memory/factory.js +369 -0
- package/dist/a2a/memory/factory.js.map +1 -0
- package/dist/a2a/memory/index.d.ts +13 -0
- package/dist/a2a/memory/index.d.ts.map +1 -0
- package/dist/a2a/memory/index.js +16 -0
- package/dist/a2a/memory/index.js.map +1 -0
- package/dist/a2a/memory/providers/in-memory.d.ts +10 -0
- package/dist/a2a/memory/providers/in-memory.d.ts.map +1 -0
- package/dist/a2a/memory/providers/in-memory.js +539 -0
- package/dist/a2a/memory/providers/in-memory.js.map +1 -0
- package/dist/a2a/memory/providers/postgres.d.ts +10 -0
- package/dist/a2a/memory/providers/postgres.d.ts.map +1 -0
- package/dist/a2a/memory/providers/postgres.js +404 -0
- package/dist/a2a/memory/providers/postgres.js.map +1 -0
- package/dist/a2a/memory/providers/redis.d.ts +10 -0
- package/dist/a2a/memory/providers/redis.d.ts.map +1 -0
- package/dist/a2a/memory/providers/redis.js +435 -0
- package/dist/a2a/memory/providers/redis.js.map +1 -0
- package/dist/a2a/memory/serialization.d.ts +53 -0
- package/dist/a2a/memory/serialization.d.ts.map +1 -0
- package/dist/a2a/memory/serialization.js +233 -0
- package/dist/a2a/memory/serialization.js.map +1 -0
- package/dist/a2a/memory/types.d.ts +395 -0
- package/dist/a2a/memory/types.d.ts.map +1 -0
- package/dist/a2a/memory/types.js +85 -0
- package/dist/a2a/memory/types.js.map +1 -0
- package/dist/a2a/protocol.d.ts +38 -0
- package/dist/a2a/protocol.d.ts.map +1 -0
- package/dist/a2a/protocol.js +211 -0
- package/dist/a2a/protocol.js.map +1 -0
- package/dist/a2a/server.d.ts +343 -0
- package/dist/a2a/server.d.ts.map +1 -0
- package/dist/a2a/server.js +362 -0
- package/dist/a2a/server.js.map +1 -0
- package/dist/a2a/types.d.ts +730 -0
- package/dist/a2a/types.d.ts.map +1 -0
- package/dist/a2a/types.js +73 -0
- package/dist/a2a/types.js.map +1 -0
- package/dist/adk/agents/index.d.ts +48 -0
- package/dist/adk/agents/index.d.ts.map +1 -0
- package/dist/adk/agents/index.js +277 -0
- package/dist/adk/agents/index.js.map +1 -0
- package/dist/adk/artifacts/index.d.ts +62 -0
- package/dist/adk/artifacts/index.d.ts.map +1 -0
- package/dist/adk/artifacts/index.js +394 -0
- package/dist/adk/artifacts/index.js.map +1 -0
- package/dist/adk/config/llm-config.d.ts +75 -0
- package/dist/adk/config/llm-config.d.ts.map +1 -0
- package/dist/adk/config/llm-config.js +422 -0
- package/dist/adk/config/llm-config.js.map +1 -0
- package/dist/adk/content/index.d.ts +58 -0
- package/dist/adk/content/index.d.ts.map +1 -0
- package/dist/adk/content/index.js +220 -0
- package/dist/adk/content/index.js.map +1 -0
- package/dist/adk/examples/advanced-features.d.ts +22 -0
- package/dist/adk/examples/advanced-features.d.ts.map +1 -0
- package/dist/adk/examples/advanced-features.js +380 -0
- package/dist/adk/examples/advanced-features.js.map +1 -0
- package/dist/adk/examples/basic-agent.d.ts +28 -0
- package/dist/adk/examples/basic-agent.d.ts.map +1 -0
- package/dist/adk/examples/basic-agent.js +207 -0
- package/dist/adk/examples/basic-agent.js.map +1 -0
- package/dist/adk/examples/multi-agent.d.ts +24 -0
- package/dist/adk/examples/multi-agent.d.ts.map +1 -0
- package/dist/adk/examples/multi-agent.js +321 -0
- package/dist/adk/examples/multi-agent.js.map +1 -0
- package/dist/adk/examples/streaming-example.d.ts +9 -0
- package/dist/adk/examples/streaming-example.d.ts.map +1 -0
- package/dist/adk/examples/streaming-example.js +193 -0
- package/dist/adk/examples/streaming-example.js.map +1 -0
- package/dist/adk/index.d.ts +65 -0
- package/dist/adk/index.d.ts.map +1 -0
- package/dist/adk/index.js +251 -0
- package/dist/adk/index.js.map +1 -0
- package/dist/adk/models.d.ts +338 -0
- package/dist/adk/models.d.ts.map +1 -0
- package/dist/adk/models.js +466 -0
- package/dist/adk/models.js.map +1 -0
- package/dist/adk/providers/error-handler.d.ts +100 -0
- package/dist/adk/providers/error-handler.d.ts.map +1 -0
- package/dist/adk/providers/error-handler.js +289 -0
- package/dist/adk/providers/error-handler.js.map +1 -0
- package/dist/adk/providers/llm-service.d.ts +41 -0
- package/dist/adk/providers/llm-service.d.ts.map +1 -0
- package/dist/adk/providers/llm-service.js +520 -0
- package/dist/adk/providers/llm-service.js.map +1 -0
- package/dist/adk/providers/type-converters.d.ts +34 -0
- package/dist/adk/providers/type-converters.d.ts.map +1 -0
- package/dist/adk/providers/type-converters.js +436 -0
- package/dist/adk/providers/type-converters.js.map +1 -0
- package/dist/adk/runners/index.d.ts +33 -0
- package/dist/adk/runners/index.d.ts.map +1 -0
- package/dist/adk/runners/index.js +466 -0
- package/dist/adk/runners/index.js.map +1 -0
- package/dist/adk/schemas/index.d.ts +85 -0
- package/dist/adk/schemas/index.d.ts.map +1 -0
- package/dist/adk/schemas/index.js +363 -0
- package/dist/adk/schemas/index.js.map +1 -0
- package/dist/adk/sessions/examples/session-provider-usage.d.ts +10 -0
- package/dist/adk/sessions/examples/session-provider-usage.d.ts.map +1 -0
- package/dist/adk/sessions/examples/session-provider-usage.js +145 -0
- package/dist/adk/sessions/examples/session-provider-usage.js.map +1 -0
- package/dist/adk/sessions/index.d.ts +53 -0
- package/dist/adk/sessions/index.d.ts.map +1 -0
- package/dist/adk/sessions/index.js +451 -0
- package/dist/adk/sessions/index.js.map +1 -0
- package/dist/adk/sessions/postgres-provider.d.ts +22 -0
- package/dist/adk/sessions/postgres-provider.d.ts.map +1 -0
- package/dist/adk/sessions/postgres-provider.js +293 -0
- package/dist/adk/sessions/postgres-provider.js.map +1 -0
- package/dist/adk/sessions/redis-provider.d.ts +19 -0
- package/dist/adk/sessions/redis-provider.d.ts.map +1 -0
- package/dist/adk/sessions/redis-provider.js +237 -0
- package/dist/adk/sessions/redis-provider.js.map +1 -0
- package/dist/adk/streaming/index.d.ts +76 -0
- package/dist/adk/streaming/index.d.ts.map +1 -0
- package/dist/adk/streaming/index.js +419 -0
- package/dist/adk/streaming/index.js.map +1 -0
- package/dist/adk/tools/index.d.ts +27 -0
- package/dist/adk/tools/index.d.ts.map +1 -0
- package/dist/adk/tools/index.js +506 -0
- package/dist/adk/tools/index.js.map +1 -0
- package/dist/adk/types.d.ts +351 -0
- package/dist/adk/types.d.ts.map +1 -0
- package/dist/adk/types.js +107 -0
- package/dist/adk/types.js.map +1 -0
- package/dist/core/engine.d.ts +3 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/engine.js +438 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/core/errors.d.ts +8 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +84 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/tool-results.d.ts +57 -0
- package/dist/core/tool-results.d.ts.map +1 -0
- package/dist/core/tool-results.js +133 -0
- package/dist/core/tool-results.js.map +1 -0
- package/dist/core/tracing.d.ts +32 -0
- package/dist/core/tracing.d.ts.map +1 -0
- package/dist/core/tracing.js +132 -0
- package/dist/core/tracing.js.map +1 -0
- package/dist/core/types.d.ts +165 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -0
- package/dist/demo/agents.d.ts +23 -0
- package/dist/demo/agents.d.ts.map +1 -0
- package/dist/demo/agents.js +69 -0
- package/dist/demo/agents.js.map +1 -0
- package/dist/demo/index.d.ts +2 -0
- package/dist/demo/index.d.ts.map +1 -0
- package/dist/demo/index.js +250 -0
- package/dist/demo/index.js.map +1 -0
- package/dist/demo/mock-provider.d.ts +22 -0
- package/dist/demo/mock-provider.d.ts.map +1 -0
- package/dist/demo/mock-provider.js +138 -0
- package/dist/demo/mock-provider.js.map +1 -0
- package/dist/demo/tools.d.ts +14 -0
- package/dist/demo/tools.d.ts.map +1 -0
- package/dist/demo/tools.js +115 -0
- package/dist/demo/tools.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/factory.d.ts +22 -0
- package/dist/memory/factory.d.ts.map +1 -0
- package/dist/memory/factory.js +88 -0
- package/dist/memory/factory.js.map +1 -0
- package/dist/memory/providers/in-memory.d.ts +7 -0
- package/dist/memory/providers/in-memory.d.ts.map +1 -0
- package/dist/memory/providers/in-memory.js +287 -0
- package/dist/memory/providers/in-memory.js.map +1 -0
- package/dist/memory/providers/postgres.d.ts +15 -0
- package/dist/memory/providers/postgres.d.ts.map +1 -0
- package/dist/memory/providers/postgres.js +495 -0
- package/dist/memory/providers/postgres.js.map +1 -0
- package/dist/memory/providers/redis.d.ts +18 -0
- package/dist/memory/providers/redis.d.ts.map +1 -0
- package/dist/memory/providers/redis.js +354 -0
- package/dist/memory/providers/redis.js.map +1 -0
- package/dist/memory/types.d.ts +296 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +93 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/policies/handoff.d.ts +16 -0
- package/dist/policies/handoff.d.ts.map +1 -0
- package/dist/policies/handoff.js +20 -0
- package/dist/policies/handoff.js.map +1 -0
- package/dist/policies/validation.d.ts +14 -0
- package/dist/policies/validation.d.ts.map +1 -0
- package/dist/policies/validation.js +92 -0
- package/dist/policies/validation.js.map +1 -0
- package/dist/providers/mcp.d.ts +17 -0
- package/dist/providers/mcp.d.ts.map +1 -0
- package/dist/providers/mcp.js +111 -0
- package/dist/providers/mcp.js.map +1 -0
- package/dist/providers/model.d.ts +3 -0
- package/dist/providers/model.d.ts.map +1 -0
- package/dist/providers/model.js +113 -0
- package/dist/providers/model.js.map +1 -0
- package/dist/server/index.d.ts +35 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +66 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/server.d.ts +12 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +394 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/types.d.ts +456 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +75 -0
- package/dist/server/types.js.map +1 -0
- package/dist/test-utils/db-setup.d.ts +34 -0
- package/dist/test-utils/db-setup.d.ts.map +1 -0
- package/dist/test-utils/db-setup.js +149 -0
- package/dist/test-utils/db-setup.js.map +1 -0
- package/dist/utils/logger.d.ts +63 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +199 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/safe-math.d.ts +31 -0
- package/dist/utils/safe-math.d.ts.map +1 -0
- package/dist/utils/safe-math.js +86 -0
- package/dist/utils/safe-math.js.map +1 -0
- package/dist/visualization/example.d.ts +9 -0
- package/dist/visualization/example.d.ts.map +1 -0
- package/dist/visualization/example.js +236 -0
- package/dist/visualization/example.js.map +1 -0
- package/dist/visualization/graphviz.d.ts +42 -0
- package/dist/visualization/graphviz.d.ts.map +1 -0
- package/dist/visualization/graphviz.js +403 -0
- package/dist/visualization/graphviz.js.map +1 -0
- package/dist/visualization/index.d.ts +10 -0
- package/dist/visualization/index.d.ts.map +1 -0
- package/dist/visualization/index.js +12 -0
- package/dist/visualization/index.js.map +1 -0
- package/package.json +99 -0
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure functional Agent Card generation
|
|
3
|
+
* Transforms JAF agents into A2A Agent Cards
|
|
4
|
+
*/
|
|
5
|
+
// Pure function to generate Agent Card from A2A agents
|
|
6
|
+
export const generateAgentCard = (config, agents, baseUrl = 'http://localhost:3000') => ({
|
|
7
|
+
protocolVersion: '0.3.0',
|
|
8
|
+
name: config.name,
|
|
9
|
+
description: config.description,
|
|
10
|
+
url: `${baseUrl}/a2a`,
|
|
11
|
+
preferredTransport: 'JSONRPC',
|
|
12
|
+
version: config.version,
|
|
13
|
+
provider: config.provider,
|
|
14
|
+
capabilities: {
|
|
15
|
+
streaming: true,
|
|
16
|
+
pushNotifications: false,
|
|
17
|
+
stateTransitionHistory: true
|
|
18
|
+
},
|
|
19
|
+
defaultInputModes: ['text/plain', 'application/json'],
|
|
20
|
+
defaultOutputModes: ['text/plain', 'application/json'],
|
|
21
|
+
skills: generateSkillsFromAgents(agents),
|
|
22
|
+
securitySchemes: generateSecuritySchemes(),
|
|
23
|
+
security: generateSecurityRequirements()
|
|
24
|
+
});
|
|
25
|
+
// Pure function to generate skills from A2A agents
|
|
26
|
+
export const generateSkillsFromAgents = (agents) => {
|
|
27
|
+
const skills = [];
|
|
28
|
+
agents.forEach((agent, agentName) => {
|
|
29
|
+
// Create a main skill for the agent
|
|
30
|
+
const mainSkill = {
|
|
31
|
+
id: `${agentName}-main`,
|
|
32
|
+
name: agent.name,
|
|
33
|
+
description: agent.description,
|
|
34
|
+
tags: ['general', ...agent.tools.map(tool => tool.name)],
|
|
35
|
+
examples: generateExamplesForAgent(agent),
|
|
36
|
+
inputModes: agent.supportedContentTypes,
|
|
37
|
+
outputModes: agent.supportedContentTypes
|
|
38
|
+
};
|
|
39
|
+
skills.push(mainSkill);
|
|
40
|
+
// Create individual skills for each tool
|
|
41
|
+
agent.tools.forEach(tool => {
|
|
42
|
+
const toolSkill = {
|
|
43
|
+
id: `${agentName}-${tool.name}`,
|
|
44
|
+
name: tool.name,
|
|
45
|
+
description: tool.description,
|
|
46
|
+
tags: [tool.name, 'tool', agentName],
|
|
47
|
+
examples: generateExamplesForTool(tool),
|
|
48
|
+
inputModes: ['text/plain', 'application/json'],
|
|
49
|
+
outputModes: ['text/plain', 'application/json']
|
|
50
|
+
};
|
|
51
|
+
skills.push(toolSkill);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
return skills;
|
|
55
|
+
};
|
|
56
|
+
// Pure function to generate examples for an agent
|
|
57
|
+
export const generateExamplesForAgent = (agent) => {
|
|
58
|
+
const baseExamples = [
|
|
59
|
+
`Ask ${agent.name} for help`,
|
|
60
|
+
`What can ${agent.name} do?`
|
|
61
|
+
];
|
|
62
|
+
// Add tool-specific examples
|
|
63
|
+
const toolExamples = agent.tools.slice(0, 2).map(tool => `Use ${tool.name} to ${tool.description.toLowerCase()}`);
|
|
64
|
+
return [...baseExamples, ...toolExamples];
|
|
65
|
+
};
|
|
66
|
+
// Pure function to generate examples for a tool
|
|
67
|
+
export const generateExamplesForTool = (tool) => [
|
|
68
|
+
`Use ${tool.name}`,
|
|
69
|
+
tool.description,
|
|
70
|
+
`Help me with ${tool.name.replace(/_/g, ' ')}`
|
|
71
|
+
];
|
|
72
|
+
// Pure function to generate security schemes
|
|
73
|
+
export const generateSecuritySchemes = () => ({
|
|
74
|
+
bearerAuth: {
|
|
75
|
+
type: 'http',
|
|
76
|
+
scheme: 'bearer',
|
|
77
|
+
description: 'Bearer token authentication'
|
|
78
|
+
},
|
|
79
|
+
apiKey: {
|
|
80
|
+
type: 'apiKey',
|
|
81
|
+
in: 'header',
|
|
82
|
+
name: 'X-API-Key',
|
|
83
|
+
description: 'API key authentication'
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
// Pure function to generate security requirements
|
|
87
|
+
export const generateSecurityRequirements = () => [
|
|
88
|
+
// No authentication required by default
|
|
89
|
+
{},
|
|
90
|
+
// Optional bearer auth
|
|
91
|
+
{ bearerAuth: [] },
|
|
92
|
+
// Optional API key
|
|
93
|
+
{ apiKey: [] }
|
|
94
|
+
];
|
|
95
|
+
// Pure function to generate Agent Card for a specific agent
|
|
96
|
+
export const generateAgentCardForAgent = (agentName, agent, config = {}, baseUrl = 'http://localhost:3000') => {
|
|
97
|
+
const agentMap = new Map([[agentName, agent]]);
|
|
98
|
+
const cardConfig = {
|
|
99
|
+
name: config.name || agent.name,
|
|
100
|
+
description: config.description || agent.description,
|
|
101
|
+
version: config.version || '1.0.0',
|
|
102
|
+
provider: config.provider || {
|
|
103
|
+
organization: 'JAF Agent',
|
|
104
|
+
url: 'https://functional-agent-framework.com'
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
return generateAgentCard(cardConfig, agentMap, baseUrl);
|
|
108
|
+
};
|
|
109
|
+
// Pure function to validate Agent Card
|
|
110
|
+
export const validateAgentCard = (card) => {
|
|
111
|
+
const errors = [];
|
|
112
|
+
// Required fields validation
|
|
113
|
+
if (!card.name?.trim()) {
|
|
114
|
+
errors.push('Agent card name is required');
|
|
115
|
+
}
|
|
116
|
+
if (!card.description?.trim()) {
|
|
117
|
+
errors.push('Agent card description is required');
|
|
118
|
+
}
|
|
119
|
+
if (!card.url?.trim()) {
|
|
120
|
+
errors.push('Agent card URL is required');
|
|
121
|
+
}
|
|
122
|
+
if (!card.version?.trim()) {
|
|
123
|
+
errors.push('Agent card version is required');
|
|
124
|
+
}
|
|
125
|
+
if (!card.protocolVersion?.trim()) {
|
|
126
|
+
errors.push('Protocol version is required');
|
|
127
|
+
}
|
|
128
|
+
// Skills validation
|
|
129
|
+
if (!card.skills || card.skills.length === 0) {
|
|
130
|
+
errors.push('At least one skill is required');
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
card.skills.forEach((skill, index) => {
|
|
134
|
+
if (!skill.id?.trim()) {
|
|
135
|
+
errors.push(`Skill ${index}: ID is required`);
|
|
136
|
+
}
|
|
137
|
+
if (!skill.name?.trim()) {
|
|
138
|
+
errors.push(`Skill ${index}: Name is required`);
|
|
139
|
+
}
|
|
140
|
+
if (!skill.description?.trim()) {
|
|
141
|
+
errors.push(`Skill ${index}: Description is required`);
|
|
142
|
+
}
|
|
143
|
+
if (!skill.tags || skill.tags.length === 0) {
|
|
144
|
+
errors.push(`Skill ${index}: At least one tag is required`);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
// Input/Output modes validation
|
|
149
|
+
if (!card.defaultInputModes || card.defaultInputModes.length === 0) {
|
|
150
|
+
errors.push('At least one default input mode is required');
|
|
151
|
+
}
|
|
152
|
+
if (!card.defaultOutputModes || card.defaultOutputModes.length === 0) {
|
|
153
|
+
errors.push('At least one default output mode is required');
|
|
154
|
+
}
|
|
155
|
+
// URL validation
|
|
156
|
+
if (card.url && !isValidUrl(card.url)) {
|
|
157
|
+
errors.push('Invalid URL format');
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
isValid: errors.length === 0,
|
|
161
|
+
errors
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
// Pure helper function to validate URL
|
|
165
|
+
const isValidUrl = (url) => {
|
|
166
|
+
try {
|
|
167
|
+
new URL(url);
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
// Pure function to create minimal Agent Card
|
|
175
|
+
export const createMinimalAgentCard = (name, description, url = 'http://localhost:3000/a2a') => ({
|
|
176
|
+
protocolVersion: '0.3.0',
|
|
177
|
+
name,
|
|
178
|
+
description,
|
|
179
|
+
url,
|
|
180
|
+
preferredTransport: 'JSONRPC',
|
|
181
|
+
version: '1.0.0',
|
|
182
|
+
capabilities: {
|
|
183
|
+
streaming: true,
|
|
184
|
+
pushNotifications: false,
|
|
185
|
+
stateTransitionHistory: false
|
|
186
|
+
},
|
|
187
|
+
defaultInputModes: ['text/plain'],
|
|
188
|
+
defaultOutputModes: ['text/plain'],
|
|
189
|
+
skills: [{
|
|
190
|
+
id: 'general',
|
|
191
|
+
name: 'General Assistant',
|
|
192
|
+
description: 'General purpose assistance',
|
|
193
|
+
tags: ['general', 'assistant'],
|
|
194
|
+
examples: ['How can I help you?']
|
|
195
|
+
}]
|
|
196
|
+
});
|
|
197
|
+
// Pure function to merge multiple Agent Cards
|
|
198
|
+
export const mergeAgentCards = (baseCard, ...additionalCards) => {
|
|
199
|
+
const mergedSkills = [
|
|
200
|
+
...baseCard.skills,
|
|
201
|
+
...additionalCards.flatMap(card => card.skills)
|
|
202
|
+
];
|
|
203
|
+
// Remove duplicate skills by ID
|
|
204
|
+
const uniqueSkills = mergedSkills.filter((skill, index, arr) => arr.findIndex(s => s.id === skill.id) === index);
|
|
205
|
+
const mergedInputModes = Array.from(new Set([
|
|
206
|
+
...baseCard.defaultInputModes,
|
|
207
|
+
...additionalCards.flatMap(card => card.defaultInputModes)
|
|
208
|
+
]));
|
|
209
|
+
const mergedOutputModes = Array.from(new Set([
|
|
210
|
+
...baseCard.defaultOutputModes,
|
|
211
|
+
...additionalCards.flatMap(card => card.defaultOutputModes)
|
|
212
|
+
]));
|
|
213
|
+
return {
|
|
214
|
+
...baseCard,
|
|
215
|
+
skills: uniqueSkills,
|
|
216
|
+
defaultInputModes: mergedInputModes,
|
|
217
|
+
defaultOutputModes: mergedOutputModes,
|
|
218
|
+
capabilities: {
|
|
219
|
+
streaming: baseCard.capabilities.streaming || additionalCards.some(card => card.capabilities.streaming),
|
|
220
|
+
pushNotifications: baseCard.capabilities.pushNotifications || additionalCards.some(card => card.capabilities.pushNotifications),
|
|
221
|
+
stateTransitionHistory: baseCard.capabilities.stateTransitionHistory || additionalCards.some(card => card.capabilities.stateTransitionHistory)
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
};
|
|
225
|
+
// Pure function to create Agent Card from configuration
|
|
226
|
+
export const createAgentCardFromConfig = (config) => {
|
|
227
|
+
const baseUrl = config.baseUrl || 'http://localhost:3000';
|
|
228
|
+
return {
|
|
229
|
+
protocolVersion: '0.3.0',
|
|
230
|
+
name: config.name,
|
|
231
|
+
description: config.description,
|
|
232
|
+
url: `${baseUrl}/a2a`,
|
|
233
|
+
preferredTransport: 'JSONRPC',
|
|
234
|
+
version: config.version || '1.0.0',
|
|
235
|
+
provider: config.provider || {
|
|
236
|
+
organization: 'JAF Framework',
|
|
237
|
+
url: 'https://functional-agent-framework.com'
|
|
238
|
+
},
|
|
239
|
+
capabilities: {
|
|
240
|
+
streaming: true,
|
|
241
|
+
pushNotifications: false,
|
|
242
|
+
stateTransitionHistory: true,
|
|
243
|
+
...config.capabilities
|
|
244
|
+
},
|
|
245
|
+
defaultInputModes: ['text/plain', 'application/json'],
|
|
246
|
+
defaultOutputModes: ['text/plain', 'application/json'],
|
|
247
|
+
skills: generateSkillsFromAgents(config.agents)
|
|
248
|
+
};
|
|
249
|
+
};
|
|
250
|
+
//# sourceMappingURL=agent-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-card.js","sourceRoot":"","sources":["../../src/a2a/agent-card.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure functional A2A agent creation utilities
|
|
3
|
+
* No classes, only pure functions and immutable data
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import type { A2AAgent, A2AAgentTool, ToolContext, A2AToolResult, AgentState, StreamEvent } from './types.js';
|
|
7
|
+
import { type RunState, type Message, type Agent, type Tool, type RunConfig } from '../core/types.js';
|
|
8
|
+
export declare const createA2AAgent: (config: {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly description: string;
|
|
11
|
+
readonly instruction: string;
|
|
12
|
+
readonly tools: readonly A2AAgentTool[];
|
|
13
|
+
readonly supportedContentTypes?: readonly string[];
|
|
14
|
+
}) => A2AAgent;
|
|
15
|
+
export declare const createA2ATool: <T>(config: {
|
|
16
|
+
readonly name: string;
|
|
17
|
+
readonly description: string;
|
|
18
|
+
readonly parameters: z.ZodType<T>;
|
|
19
|
+
readonly execute: (args: T, context?: ToolContext) => Promise<any | A2AToolResult>;
|
|
20
|
+
}) => A2AAgentTool;
|
|
21
|
+
export declare const getProcessingMessage: (agentName: string) => string;
|
|
22
|
+
export declare const createInitialAgentState: (sessionId: string) => AgentState;
|
|
23
|
+
export declare const addMessageToState: (state: AgentState, message: any) => AgentState;
|
|
24
|
+
export declare const updateStateFromRunResult: (state: AgentState, outcome: any) => AgentState;
|
|
25
|
+
export declare const createUserMessage: (text: string) => Message;
|
|
26
|
+
export declare const transformA2AAgentToJAF: (a2aAgent: A2AAgent) => Agent<any, string>;
|
|
27
|
+
export declare const transformA2AToolToJAF: (a2aTool: A2AAgentTool) => Tool<any, any>;
|
|
28
|
+
export declare const createRunConfigForA2AAgent: (a2aAgent: A2AAgent, modelProvider: any) => RunConfig<any>;
|
|
29
|
+
export declare const transformToRunState: (state: AgentState, agentName: string, context?: any) => RunState<any>;
|
|
30
|
+
export declare const processAgentQuery: (agent: A2AAgent, query: string, state: AgentState, modelProvider: any) => AsyncGenerator<StreamEvent, void, unknown>;
|
|
31
|
+
export declare const extractTextFromA2AMessage: (message: any) => string;
|
|
32
|
+
export declare const createA2ATextMessage: (text: string, contextId: string, taskId?: string) => any;
|
|
33
|
+
export declare const createA2ADataMessage: (data: Record<string, any>, contextId: string, taskId?: string) => any;
|
|
34
|
+
export declare const createA2ATask: (message: any, contextId?: string) => any;
|
|
35
|
+
export declare const updateA2ATaskStatus: (task: any, state: any, message?: any) => any;
|
|
36
|
+
export declare const addArtifactToA2ATask: (task: any, parts: readonly any[], name: string) => any;
|
|
37
|
+
export declare const completeA2ATask: (task: any, result?: any) => any;
|
|
38
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/a2a/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure functional A2A agent creation utilities
|
|
3
|
+
* No classes, only pure functions and immutable data
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { run } from '../core/engine.js';
|
|
7
|
+
import { createRunId, createTraceId } from '../core/types.js';
|
|
8
|
+
// Pure function to create A2A compatible agent
|
|
9
|
+
export const createA2AAgent = (config) => ({
|
|
10
|
+
name: config.name,
|
|
11
|
+
description: config.description,
|
|
12
|
+
supportedContentTypes: config.supportedContentTypes || ['text/plain', 'application/json'],
|
|
13
|
+
instruction: config.instruction,
|
|
14
|
+
tools: config.tools
|
|
15
|
+
});
|
|
16
|
+
// Pure function to create A2A tool
|
|
17
|
+
export const createA2ATool = (config) => ({
|
|
18
|
+
name: config.name,
|
|
19
|
+
description: config.description,
|
|
20
|
+
parameters: config.parameters,
|
|
21
|
+
execute: config.execute
|
|
22
|
+
});
|
|
23
|
+
// Pure function to get processing message
|
|
24
|
+
export const getProcessingMessage = (agentName) => `${agentName} is processing your request...`;
|
|
25
|
+
// Pure function to create initial agent state
|
|
26
|
+
export const createInitialAgentState = (sessionId) => ({
|
|
27
|
+
sessionId,
|
|
28
|
+
messages: [],
|
|
29
|
+
context: {},
|
|
30
|
+
artifacts: [],
|
|
31
|
+
timestamp: new Date().toISOString()
|
|
32
|
+
});
|
|
33
|
+
// Pure function to add message to state
|
|
34
|
+
export const addMessageToState = (state, message) => ({
|
|
35
|
+
...state,
|
|
36
|
+
messages: [...state.messages, message],
|
|
37
|
+
timestamp: new Date().toISOString()
|
|
38
|
+
});
|
|
39
|
+
// Pure function to update state from run result
|
|
40
|
+
export const updateStateFromRunResult = (state, outcome) => ({
|
|
41
|
+
...state,
|
|
42
|
+
artifacts: outcome.artifacts ? [...state.artifacts, ...outcome.artifacts] : state.artifacts,
|
|
43
|
+
timestamp: new Date().toISOString()
|
|
44
|
+
});
|
|
45
|
+
// Pure function to create user message
|
|
46
|
+
export const createUserMessage = (text) => ({
|
|
47
|
+
role: 'user',
|
|
48
|
+
content: text
|
|
49
|
+
});
|
|
50
|
+
// Pure function to transform A2A agent to JAF agent
|
|
51
|
+
export const transformA2AAgentToJAF = (a2aAgent) => ({
|
|
52
|
+
name: a2aAgent.name,
|
|
53
|
+
instructions: () => a2aAgent.instruction,
|
|
54
|
+
tools: a2aAgent.tools.map(transformA2AToolToJAF),
|
|
55
|
+
outputCodec: z.string()
|
|
56
|
+
});
|
|
57
|
+
// Pure function to transform A2A tool to JAF tool
|
|
58
|
+
export const transformA2AToolToJAF = (a2aTool) => ({
|
|
59
|
+
schema: {
|
|
60
|
+
name: a2aTool.name,
|
|
61
|
+
description: a2aTool.description,
|
|
62
|
+
parameters: a2aTool.parameters
|
|
63
|
+
},
|
|
64
|
+
execute: async (args, context) => {
|
|
65
|
+
const toolContext = {
|
|
66
|
+
actions: {
|
|
67
|
+
requiresInput: false,
|
|
68
|
+
skipSummarization: false,
|
|
69
|
+
escalate: false
|
|
70
|
+
},
|
|
71
|
+
metadata: context || {}
|
|
72
|
+
};
|
|
73
|
+
const result = await a2aTool.execute(args, toolContext);
|
|
74
|
+
// Handle ToolResult format
|
|
75
|
+
if (typeof result === 'object' && result !== null && 'result' in result) {
|
|
76
|
+
return result.result;
|
|
77
|
+
}
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
// Pure function to create run configuration for A2A agent
|
|
82
|
+
export const createRunConfigForA2AAgent = (a2aAgent, modelProvider) => {
|
|
83
|
+
const jafAgent = transformA2AAgentToJAF(a2aAgent);
|
|
84
|
+
return {
|
|
85
|
+
agentRegistry: new Map([[a2aAgent.name, jafAgent]]),
|
|
86
|
+
modelProvider,
|
|
87
|
+
maxTurns: 10,
|
|
88
|
+
onEvent: (event) => {
|
|
89
|
+
console.log(`[A2A:${a2aAgent.name}] ${event.type}:`, event.data);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
// Pure function to transform agent state to JAF run state
|
|
94
|
+
export const transformToRunState = (state, agentName, context = {}) => ({
|
|
95
|
+
runId: createRunId(`run_${Date.now()}`),
|
|
96
|
+
traceId: createTraceId(`trace_${Date.now()}`),
|
|
97
|
+
messages: state.messages,
|
|
98
|
+
currentAgentName: agentName,
|
|
99
|
+
context,
|
|
100
|
+
turnCount: 0
|
|
101
|
+
});
|
|
102
|
+
// Pure async generator function to process agent query
|
|
103
|
+
export const processAgentQuery = async function* (agent, query, state, modelProvider) {
|
|
104
|
+
// Transform query to JAF message format
|
|
105
|
+
const userMessage = createUserMessage(query);
|
|
106
|
+
const newState = addMessageToState(state, userMessage);
|
|
107
|
+
// Create JAF configuration
|
|
108
|
+
const runConfig = createRunConfigForA2AAgent(agent, modelProvider);
|
|
109
|
+
const runState = transformToRunState(newState, agent.name);
|
|
110
|
+
try {
|
|
111
|
+
// Execute JAF engine (pure function)
|
|
112
|
+
const result = await run(runState, runConfig);
|
|
113
|
+
if (result.outcome.status === 'completed') {
|
|
114
|
+
const finalState = updateStateFromRunResult(newState, result.outcome);
|
|
115
|
+
yield {
|
|
116
|
+
isTaskComplete: true,
|
|
117
|
+
content: result.outcome.output,
|
|
118
|
+
newState: finalState,
|
|
119
|
+
timestamp: new Date().toISOString()
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
const finalState = updateStateFromRunResult(newState, result.outcome);
|
|
124
|
+
yield {
|
|
125
|
+
isTaskComplete: true,
|
|
126
|
+
content: `Error: ${JSON.stringify(result.outcome.error)}`,
|
|
127
|
+
newState: finalState,
|
|
128
|
+
timestamp: new Date().toISOString()
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
yield {
|
|
134
|
+
isTaskComplete: true,
|
|
135
|
+
content: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
136
|
+
newState,
|
|
137
|
+
timestamp: new Date().toISOString()
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
// Pure function to extract text from A2A message
|
|
142
|
+
export const extractTextFromA2AMessage = (message) => {
|
|
143
|
+
if (!message?.parts)
|
|
144
|
+
return '';
|
|
145
|
+
return message.parts
|
|
146
|
+
.filter((part) => part.kind === 'text')
|
|
147
|
+
.map((part) => part.text)
|
|
148
|
+
.join('\n');
|
|
149
|
+
};
|
|
150
|
+
// Pure function to create A2A text message
|
|
151
|
+
export const createA2ATextMessage = (text, contextId, taskId) => ({
|
|
152
|
+
role: 'agent',
|
|
153
|
+
parts: [{ kind: 'text', text }],
|
|
154
|
+
messageId: `msg_${Date.now()}`,
|
|
155
|
+
contextId,
|
|
156
|
+
taskId,
|
|
157
|
+
kind: 'message',
|
|
158
|
+
timestamp: new Date().toISOString()
|
|
159
|
+
});
|
|
160
|
+
// Pure function to create A2A data message
|
|
161
|
+
export const createA2ADataMessage = (data, contextId, taskId) => ({
|
|
162
|
+
role: 'agent',
|
|
163
|
+
parts: [{ kind: 'data', data }],
|
|
164
|
+
messageId: `msg_${Date.now()}`,
|
|
165
|
+
contextId,
|
|
166
|
+
taskId,
|
|
167
|
+
kind: 'message',
|
|
168
|
+
timestamp: new Date().toISOString()
|
|
169
|
+
});
|
|
170
|
+
// Pure function to create A2A task
|
|
171
|
+
export const createA2ATask = (message, contextId) => ({
|
|
172
|
+
id: `task_${Date.now()}`,
|
|
173
|
+
contextId: contextId || `ctx_${Date.now()}`,
|
|
174
|
+
status: {
|
|
175
|
+
state: 'submitted',
|
|
176
|
+
timestamp: new Date().toISOString()
|
|
177
|
+
},
|
|
178
|
+
history: [message],
|
|
179
|
+
artifacts: [],
|
|
180
|
+
kind: 'task'
|
|
181
|
+
});
|
|
182
|
+
// Pure function to update A2A task status
|
|
183
|
+
export const updateA2ATaskStatus = (task, state, message) => ({
|
|
184
|
+
...task,
|
|
185
|
+
status: {
|
|
186
|
+
state,
|
|
187
|
+
message,
|
|
188
|
+
timestamp: new Date().toISOString()
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
// Pure function to add artifact to A2A task
|
|
192
|
+
export const addArtifactToA2ATask = (task, parts, name) => ({
|
|
193
|
+
...task,
|
|
194
|
+
artifacts: [
|
|
195
|
+
...task.artifacts,
|
|
196
|
+
{
|
|
197
|
+
artifactId: `artifact_${Date.now()}`,
|
|
198
|
+
name,
|
|
199
|
+
parts,
|
|
200
|
+
timestamp: new Date().toISOString()
|
|
201
|
+
}
|
|
202
|
+
]
|
|
203
|
+
});
|
|
204
|
+
// Pure function to complete A2A task
|
|
205
|
+
export const completeA2ATask = (task, result) => ({
|
|
206
|
+
...task,
|
|
207
|
+
status: {
|
|
208
|
+
state: 'completed',
|
|
209
|
+
timestamp: new Date().toISOString()
|
|
210
|
+
},
|
|
211
|
+
...(result && {
|
|
212
|
+
artifacts: [
|
|
213
|
+
...task.artifacts,
|
|
214
|
+
{
|
|
215
|
+
artifactId: `result_${Date.now()}`,
|
|
216
|
+
name: 'final_result',
|
|
217
|
+
parts: [{ kind: 'text', text: String(result) }],
|
|
218
|
+
timestamp: new Date().toISOString()
|
|
219
|
+
}
|
|
220
|
+
]
|
|
221
|
+
})
|
|
222
|
+
});
|
|
223
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/a2a/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure functional A2A client
|
|
3
|
+
* All client operations are pure functions
|
|
4
|
+
*/
|
|
5
|
+
import type { A2AClientConfig, A2AClientState, JSONRPCRequest, JSONRPCResponse, SendMessageRequest, SendStreamingMessageRequest, AgentCard, A2AStreamEvent } from './types.js';
|
|
6
|
+
export declare const createA2AClient: (baseUrl: string, config?: Partial<A2AClientConfig>) => A2AClientState;
|
|
7
|
+
export declare const createMessageRequest: (message: string, sessionId: string, configuration?: any) => SendMessageRequest;
|
|
8
|
+
export declare const createStreamingMessageRequest: (message: string, sessionId: string, configuration?: any) => SendStreamingMessageRequest;
|
|
9
|
+
export declare const sendA2ARequest: (client: A2AClientState, request: JSONRPCRequest) => Promise<JSONRPCResponse>;
|
|
10
|
+
export declare const sendMessage: (client: A2AClientState, message: string, configuration?: any) => Promise<string>;
|
|
11
|
+
export declare const streamMessage: (client: A2AClientState, message: string, configuration?: any) => AsyncGenerator<A2AStreamEvent, void, unknown>;
|
|
12
|
+
export declare const getAgentCard: (client: A2AClientState) => Promise<AgentCard>;
|
|
13
|
+
export declare const discoverAgents: (baseUrl: string) => Promise<AgentCard>;
|
|
14
|
+
export declare const sendMessageToAgent: (client: A2AClientState, agentName: string, message: string, configuration?: any) => Promise<string>;
|
|
15
|
+
export declare const streamMessageToAgent: (client: A2AClientState, agentName: string, message: string, configuration?: any) => AsyncGenerator<A2AStreamEvent, void, unknown>;
|
|
16
|
+
export declare const extractTextResponse: (result: any) => string;
|
|
17
|
+
export declare const checkA2AHealth: (client: A2AClientState) => Promise<{
|
|
18
|
+
status: string;
|
|
19
|
+
agents: string[];
|
|
20
|
+
timestamp: string;
|
|
21
|
+
}>;
|
|
22
|
+
export declare const getA2ACapabilities: (client: A2AClientState) => Promise<any>;
|
|
23
|
+
export declare const connectToA2AAgent: (baseUrl: string) => Promise<{
|
|
24
|
+
client: A2AClientState;
|
|
25
|
+
agentCard: AgentCard;
|
|
26
|
+
ask: (message: string, config?: any) => Promise<string>;
|
|
27
|
+
stream: (message: string, config?: any) => AsyncGenerator<A2AStreamEvent, void, unknown>;
|
|
28
|
+
health: () => Promise<{
|
|
29
|
+
status: string;
|
|
30
|
+
agents: string[];
|
|
31
|
+
timestamp: string;
|
|
32
|
+
}>;
|
|
33
|
+
capabilities: () => Promise<any>;
|
|
34
|
+
}>;
|
|
35
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/a2a/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,2BAA2B,EAC3B,SAAS,EACT,cAAc,EACf,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,eAAe,GAAI,SAAS,MAAM,EAAE,SAAS,OAAO,CAAC,eAAe,CAAC,KAAG,cAMnF,CAAC;AAGH,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,EACf,WAAW,MAAM,EACjB,gBAAgB,GAAG,KAClB,kBAcD,CAAC;AAGH,eAAO,MAAM,6BAA6B,GACxC,SAAS,MAAM,EACf,WAAW,MAAM,EACjB,gBAAgB,GAAG,KAClB,2BAcD,CAAC;AAyCH,eAAO,MAAM,cAAc,GACzB,QAAQ,cAAc,EACtB,SAAS,cAAc,KACtB,OAAO,CAAC,eAAe,CAGzB,CAAC;AAGF,eAAO,MAAM,WAAW,GACtB,QAAQ,cAAc,EACtB,SAAS,MAAM,EACf,gBAAgB,GAAG,KAClB,OAAO,CAAC,MAAM,CAShB,CAAC;AAGF,eAAO,MAAM,aAAa,GACxB,QAAQ,cAAc,EACtB,SAAS,MAAM,EACf,gBAAgB,GAAG,KAClB,cAAc,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CAsE9C,CAAC;AAGF,eAAO,MAAM,YAAY,GACvB,QAAQ,cAAc,KACrB,OAAO,CAAC,SAAS,CAenB,CAAC;AAGF,eAAO,MAAM,cAAc,GACzB,SAAS,MAAM,KACd,OAAO,CAAC,SAAS,CAGnB,CAAC;AAGF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,cAAc,EACtB,WAAW,MAAM,EACjB,SAAS,MAAM,EACf,gBAAgB,GAAG,KAClB,OAAO,CAAC,MAAM,CAWhB,CAAC;AAGF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,cAAc,EACtB,WAAW,MAAM,EACjB,SAAS,MAAM,EACf,gBAAgB,GAAG,KAClB,cAAc,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CAM9C,CAAC;AA6EF,eAAO,MAAM,mBAAmB,GAAI,QAAQ,GAAG,KAAG,MAwDjD,CAAC;AAGF,eAAO,MAAM,cAAc,GACzB,QAAQ,cAAc,KACrB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAejE,CAAC;AAGF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,cAAc,KACrB,OAAO,CAAC,GAAG,CAeb,CAAC;AAGF,eAAO,MAAM,iBAAiB,GAAU,SAAS,MAAM;;;mBAOpC,MAAM,WAAW,GAAG;sBACjB,MAAM,WAAW,GAAG;;gBA9CrB,MAAM;gBAAU,MAAM,EAAE;mBAAa,MAAM;;;EAkD/D,CAAC"}
|