@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,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A Task Memory Types for JAF
|
|
3
|
+
* Extends the core memory system to support A2A task queue persistence
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
// Configuration schemas for A2A task storage
|
|
7
|
+
export const A2ATaskMemoryConfigSchema = z.object({
|
|
8
|
+
type: z.enum(['memory', 'redis', 'postgres']),
|
|
9
|
+
keyPrefix: z.string().default('jaf:a2a:tasks:'),
|
|
10
|
+
defaultTtl: z.number().optional(), // Default TTL in seconds for tasks
|
|
11
|
+
cleanupInterval: z.number().default(3600), // Cleanup interval in seconds
|
|
12
|
+
maxTasks: z.number().default(10000), // Maximum tasks to store (for in-memory)
|
|
13
|
+
enableHistory: z.boolean().default(true), // Store task history
|
|
14
|
+
enableArtifacts: z.boolean().default(true), // Store task artifacts
|
|
15
|
+
});
|
|
16
|
+
export const A2AInMemoryTaskConfigSchema = A2ATaskMemoryConfigSchema.extend({
|
|
17
|
+
type: z.literal('memory'),
|
|
18
|
+
maxTasksPerContext: z.number().default(1000),
|
|
19
|
+
});
|
|
20
|
+
export const A2ARedisTaskConfigSchema = A2ATaskMemoryConfigSchema.extend({
|
|
21
|
+
type: z.literal('redis'),
|
|
22
|
+
host: z.string().default('localhost'),
|
|
23
|
+
port: z.number().default(6379),
|
|
24
|
+
password: z.string().optional(),
|
|
25
|
+
db: z.number().default(0),
|
|
26
|
+
});
|
|
27
|
+
export const A2APostgresTaskConfigSchema = A2ATaskMemoryConfigSchema.extend({
|
|
28
|
+
type: z.literal('postgres'),
|
|
29
|
+
host: z.string().default('localhost'),
|
|
30
|
+
port: z.number().default(5432),
|
|
31
|
+
database: z.string().default('jaf_a2a'),
|
|
32
|
+
username: z.string().default('postgres'),
|
|
33
|
+
password: z.string().optional(),
|
|
34
|
+
ssl: z.boolean().default(false),
|
|
35
|
+
tableName: z.string().default('a2a_tasks'),
|
|
36
|
+
maxConnections: z.number().default(10),
|
|
37
|
+
});
|
|
38
|
+
export const A2ATaskProviderConfigSchema = z.union([
|
|
39
|
+
A2AInMemoryTaskConfigSchema,
|
|
40
|
+
A2ARedisTaskConfigSchema,
|
|
41
|
+
A2APostgresTaskConfigSchema
|
|
42
|
+
]);
|
|
43
|
+
// Error factory functions
|
|
44
|
+
export const createA2ATaskError = (message, code, provider, taskId, cause) => ({
|
|
45
|
+
_tag: 'A2ATaskError',
|
|
46
|
+
message,
|
|
47
|
+
code,
|
|
48
|
+
provider,
|
|
49
|
+
taskId,
|
|
50
|
+
cause
|
|
51
|
+
});
|
|
52
|
+
export const createA2ATaskNotFoundError = (taskId, provider) => ({
|
|
53
|
+
_tag: 'A2ATaskNotFoundError',
|
|
54
|
+
message: `A2A task ${taskId} not found`,
|
|
55
|
+
taskId,
|
|
56
|
+
provider
|
|
57
|
+
});
|
|
58
|
+
export const createA2ATaskStorageError = (operation, provider, taskId, cause) => ({
|
|
59
|
+
_tag: 'A2ATaskStorageError',
|
|
60
|
+
message: `Failed to ${operation} A2A task${taskId ? ` ${taskId}` : ''} in ${provider}`,
|
|
61
|
+
operation,
|
|
62
|
+
provider,
|
|
63
|
+
taskId,
|
|
64
|
+
cause
|
|
65
|
+
});
|
|
66
|
+
// Error checking functions
|
|
67
|
+
export const isA2ATaskError = (error) => {
|
|
68
|
+
return error && typeof error === 'object' && '_tag' in error &&
|
|
69
|
+
(error._tag === 'A2ATaskError' ||
|
|
70
|
+
error._tag === 'A2ATaskNotFoundError' ||
|
|
71
|
+
error._tag === 'A2ATaskStorageError');
|
|
72
|
+
};
|
|
73
|
+
export const isA2ATaskNotFoundError = (error) => {
|
|
74
|
+
return error && error._tag === 'A2ATaskNotFoundError';
|
|
75
|
+
};
|
|
76
|
+
export const isA2ATaskStorageError = (error) => {
|
|
77
|
+
return error && error._tag === 'A2ATaskStorageError';
|
|
78
|
+
};
|
|
79
|
+
// A2A-specific Result functions
|
|
80
|
+
export const createA2ASuccess = (data) => ({ success: true, data });
|
|
81
|
+
export const createA2AFailure = (error) => ({ success: false, error });
|
|
82
|
+
// Convenience exports for backward compatibility
|
|
83
|
+
export const createSuccess = createA2ASuccess;
|
|
84
|
+
export const createFailure = createA2AFailure;
|
|
85
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/a2a/memory/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA8GxB,6CAA6C;AAC7C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC7C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC;IAC/C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,mCAAmC;IACtE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,8BAA8B;IACzE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,yCAAyC;IAC9E,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,qBAAqB;IAC/D,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,uBAAuB;CACpE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,yBAAyB,CAAC,MAAM,CAAC;IAC1E,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAC7C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,yBAAyB,CAAC,MAAM,CAAC;IACvE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,yBAAyB,CAAC,MAAM,CAAC;IAC1E,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IACvC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;IAC1C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC;IACjD,2BAA2B;IAC3B,wBAAwB;IACxB,2BAA2B;CAC5B,CAAC,CAAC;AA4CH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAAe,EACf,IAAY,EACZ,QAAgB,EAChB,MAAe,EACf,KAAa,EACC,EAAE,CAAC,CAAC;IAClB,IAAI,EAAE,cAAc;IACpB,OAAO;IACP,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,KAAK;CACN,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,MAAc,EACd,QAAgB,EACM,EAAE,CAAC,CAAC;IAC1B,IAAI,EAAE,sBAAsB;IAC5B,OAAO,EAAE,YAAY,MAAM,YAAY;IACvC,MAAM;IACN,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,SAAiB,EACjB,QAAgB,EAChB,MAAe,EACf,KAAa,EACQ,EAAE,CAAC,CAAC;IACzB,IAAI,EAAE,qBAAqB;IAC3B,OAAO,EAAE,aAAa,SAAS,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,QAAQ,EAAE;IACtF,SAAS;IACT,QAAQ;IACR,MAAM;IACN,KAAK;CACN,CAAC,CAAC;AAEH,2BAA2B;AAC3B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAU,EAA8B,EAAE;IACvE,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK;QAC1D,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc;YAC7B,KAAK,CAAC,IAAI,KAAK,sBAAsB;YACrC,KAAK,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAU,EAAiC,EAAE;IAClF,OAAO,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAU,EAAgC,EAAE;IAChF,OAAO,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,CAAC;AACvD,CAAC,CAAC;AAEF,gCAAgC;AAChC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAI,IAAO,EAAgB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAExF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAwB,EAAoB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAE5G,iDAAiD;AACjD,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAC9C,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure functional JSON-RPC protocol handlers for A2A
|
|
3
|
+
* All handlers are pure functions with no side effects
|
|
4
|
+
*/
|
|
5
|
+
import type { JSONRPCRequest, JSONRPCResponse, JSONRPCError, SendMessageRequest, SendStreamingMessageRequest, GetTaskRequest, A2AAgent, A2AError } from './types.js';
|
|
6
|
+
import { A2AErrorCodes } from './types.js';
|
|
7
|
+
import { A2ATaskProvider } from './memory/types.js';
|
|
8
|
+
export declare const validateJSONRPCRequest: (request: any) => request is JSONRPCRequest;
|
|
9
|
+
export declare const createJSONRPCSuccessResponse: (id: string | number, result: any) => JSONRPCResponse;
|
|
10
|
+
export declare const createJSONRPCErrorResponse: (id: string | number | null, error: JSONRPCError) => JSONRPCResponse;
|
|
11
|
+
export declare const createA2AError: (code: (typeof A2AErrorCodes)[keyof typeof A2AErrorCodes], message: string, data?: any) => A2AError;
|
|
12
|
+
export declare const mapErrorToA2AError: (error: unknown) => A2AError;
|
|
13
|
+
export declare const validateSendMessageRequest: (request: JSONRPCRequest) => {
|
|
14
|
+
isValid: boolean;
|
|
15
|
+
data?: SendMessageRequest;
|
|
16
|
+
error?: A2AError;
|
|
17
|
+
};
|
|
18
|
+
export declare const handleMessageSend: (request: SendMessageRequest, agent: A2AAgent, modelProvider: any) => Promise<JSONRPCResponse>;
|
|
19
|
+
export declare const handleMessageStream: (request: SendStreamingMessageRequest, agent: A2AAgent, modelProvider: any) => AsyncGenerator<JSONRPCResponse, void, unknown>;
|
|
20
|
+
export declare const handleTasksGet: (request: GetTaskRequest, taskProvider: A2ATaskProvider) => Promise<JSONRPCResponse>;
|
|
21
|
+
export declare const handleTasksCancel: (request: {
|
|
22
|
+
id: string | number;
|
|
23
|
+
params: {
|
|
24
|
+
id: string;
|
|
25
|
+
};
|
|
26
|
+
}, taskProvider: A2ATaskProvider) => Promise<JSONRPCResponse>;
|
|
27
|
+
export declare const handleGetAuthenticatedExtendedCard: (request: {
|
|
28
|
+
id: string | number;
|
|
29
|
+
}, agentCard: any) => Promise<JSONRPCResponse>;
|
|
30
|
+
export declare const routeA2ARequest: (request: any, agent: A2AAgent, modelProvider: any, taskProvider: A2ATaskProvider, agentCard: any) => Promise<JSONRPCResponse> | AsyncGenerator<JSONRPCResponse, void, unknown>;
|
|
31
|
+
export declare const createProtocolHandlerConfig: (agents: ReadonlyMap<string, A2AAgent>, modelProvider: any, agentCard: any, taskProvider?: A2ATaskProvider) => {
|
|
32
|
+
agents: ReadonlyMap<string, A2AAgent>;
|
|
33
|
+
modelProvider: any;
|
|
34
|
+
agentCard: any;
|
|
35
|
+
taskProvider: A2ATaskProvider | undefined;
|
|
36
|
+
handleRequest: (request: JSONRPCRequest, agentName?: string) => Promise<JSONRPCResponse> | AsyncGenerator<JSONRPCResponse, void, unknown>;
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/a2a/protocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,2BAA2B,EAC3B,cAAc,EACd,QAAQ,EAGR,QAAQ,EAET,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,eAAO,MAAM,sBAAsB,GAAI,SAAS,GAAG,KAAG,OAAO,IAAI,cAQhE,CAAC;AAGF,eAAO,MAAM,4BAA4B,GAAI,IAAI,MAAM,GAAG,MAAM,EAAE,QAAQ,GAAG,KAAG,eAI9E,CAAC;AAGH,eAAO,MAAM,0BAA0B,GACrC,IAAI,MAAM,GAAG,MAAM,GAAG,IAAI,EAC1B,OAAO,YAAY,KAClB,eAID,CAAC;AAGH,eAAO,MAAM,cAAc,GACzB,MAAM,CAAA,OAAO,aAAa,EAAC,MAAM,OAAO,aAAa,CAAC,EACtD,SAAS,MAAM,EACf,OAAO,GAAG,KACT,QAID,CAAC;AAGH,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,KAAG,QAanD,CAAC;AAGF,eAAO,MAAM,0BAA0B,GAAI,SAAS,cAAc,KAAG;IACnE,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,KAAK,CAAC,EAAE,QAAQ,CAAC;CAkBlB,CAAC;AAGF,eAAO,MAAM,iBAAiB,GAC5B,SAAS,kBAAkB,EAC3B,OAAO,QAAQ,EACf,eAAe,GAAG,KACjB,OAAO,CAAC,eAAe,CA2BzB,CAAC;AAGF,eAAO,MAAM,mBAAmB,GAC9B,SAAS,2BAA2B,EACpC,OAAO,QAAQ,EACf,eAAe,GAAG,KACjB,cAAc,CAAC,eAAe,EAAE,IAAI,EAAE,OAAO,CAiB/C,CAAC;AAGF,eAAO,MAAM,cAAc,GACzB,SAAS,cAAc,EACvB,cAAc,eAAe,KAC5B,OAAO,CAAC,eAAe,CAiCzB,CAAC;AAGF,eAAO,MAAM,iBAAiB,GAC5B,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACxD,cAAc,eAAe,KAC5B,OAAO,CAAC,eAAe,CAqDzB,CAAC;AAGF,eAAO,MAAM,kCAAkC,GAC7C,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAChC,WAAW,GAAG,KACb,OAAO,CAAC,eAAe,CAWzB,CAAC;AAGF,eAAO,MAAM,eAAe,GAC1B,SAAS,GAAG,EACZ,OAAO,QAAQ,EACf,eAAe,GAAG,EAClB,cAAc,eAAe,EAC7B,WAAW,GAAG,KACb,OAAO,CAAC,eAAe,CAAC,GAAG,cAAc,CAAC,eAAe,EAAE,IAAI,EAAE,OAAO,CAqD1E,CAAC;AAGF,eAAO,MAAM,2BAA2B,GACtC,QAAQ,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,EACrC,eAAe,GAAG,EAClB,WAAW,GAAG,EACd,eAAe,eAAe;;;;;6BAQL,cAAc,cAAc,MAAM;CAyB3D,CAAC"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure functional JSON-RPC protocol handlers for A2A
|
|
3
|
+
* All handlers are pure functions with no side effects
|
|
4
|
+
*/
|
|
5
|
+
import { A2AErrorCodes } from './types.js';
|
|
6
|
+
import { executeA2AAgent, executeA2AAgentWithStreaming } from './executor.js';
|
|
7
|
+
import { sendMessageRequestSchema } from './types.js';
|
|
8
|
+
// Pure function to validate JSON-RPC request
|
|
9
|
+
export const validateJSONRPCRequest = (request) => {
|
|
10
|
+
return (typeof request === 'object' &&
|
|
11
|
+
request !== null &&
|
|
12
|
+
request.jsonrpc === '2.0' &&
|
|
13
|
+
(typeof request.id === 'string' || typeof request.id === 'number') &&
|
|
14
|
+
typeof request.method === 'string');
|
|
15
|
+
};
|
|
16
|
+
// Pure function to create JSON-RPC success response
|
|
17
|
+
export const createJSONRPCSuccessResponse = (id, result) => ({
|
|
18
|
+
jsonrpc: '2.0',
|
|
19
|
+
id,
|
|
20
|
+
result
|
|
21
|
+
});
|
|
22
|
+
// Pure function to create JSON-RPC error response
|
|
23
|
+
export const createJSONRPCErrorResponse = (id, error) => ({
|
|
24
|
+
jsonrpc: '2.0',
|
|
25
|
+
id,
|
|
26
|
+
error
|
|
27
|
+
});
|
|
28
|
+
// Pure function to create A2A error
|
|
29
|
+
export const createA2AError = (code, message, data) => ({
|
|
30
|
+
code,
|
|
31
|
+
message,
|
|
32
|
+
data
|
|
33
|
+
});
|
|
34
|
+
// Pure function to map JavaScript errors to A2A errors
|
|
35
|
+
export const mapErrorToA2AError = (error) => {
|
|
36
|
+
if (error instanceof Error) {
|
|
37
|
+
return createA2AError(A2AErrorCodes.INTERNAL_ERROR, error.message, { stack: error.stack });
|
|
38
|
+
}
|
|
39
|
+
return createA2AError(A2AErrorCodes.INTERNAL_ERROR, typeof error === 'string' ? error : 'Unknown error occurred');
|
|
40
|
+
};
|
|
41
|
+
// Pure function to validate send message request
|
|
42
|
+
export const validateSendMessageRequest = (request) => {
|
|
43
|
+
try {
|
|
44
|
+
const validatedRequest = sendMessageRequestSchema.parse(request);
|
|
45
|
+
return {
|
|
46
|
+
isValid: true,
|
|
47
|
+
data: validatedRequest
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
return {
|
|
52
|
+
isValid: false,
|
|
53
|
+
error: createA2AError(A2AErrorCodes.INVALID_PARAMS, 'Invalid send message request parameters', error)
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
// Pure function to handle message/send method
|
|
58
|
+
export const handleMessageSend = async (request, agent, modelProvider) => {
|
|
59
|
+
try {
|
|
60
|
+
const context = {
|
|
61
|
+
message: request.params.message,
|
|
62
|
+
sessionId: request.params.message.contextId || `session_${Date.now()}`,
|
|
63
|
+
metadata: request.params.metadata
|
|
64
|
+
};
|
|
65
|
+
const result = await executeA2AAgent(context, agent, modelProvider);
|
|
66
|
+
if (result.error) {
|
|
67
|
+
return createJSONRPCErrorResponse(request.id, createA2AError(A2AErrorCodes.INTERNAL_ERROR, result.error));
|
|
68
|
+
}
|
|
69
|
+
return createJSONRPCSuccessResponse(request.id, result.finalTask || { message: 'No result available' });
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
return createJSONRPCErrorResponse(request.id, mapErrorToA2AError(error));
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
// Pure function to handle message/stream method
|
|
76
|
+
export const handleMessageStream = async function* (request, agent, modelProvider) {
|
|
77
|
+
try {
|
|
78
|
+
const context = {
|
|
79
|
+
message: request.params.message,
|
|
80
|
+
sessionId: request.params.message.contextId || `session_${Date.now()}`,
|
|
81
|
+
metadata: request.params.metadata
|
|
82
|
+
};
|
|
83
|
+
for await (const event of executeA2AAgentWithStreaming(context, agent, modelProvider)) {
|
|
84
|
+
yield createJSONRPCSuccessResponse(request.id, event);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
yield createJSONRPCErrorResponse(request.id, mapErrorToA2AError(error));
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
// Pure function to handle tasks/get method
|
|
92
|
+
export const handleTasksGet = async (request, taskProvider) => {
|
|
93
|
+
try {
|
|
94
|
+
const taskResult = await taskProvider.getTask(request.params.id);
|
|
95
|
+
if (!taskResult.success) {
|
|
96
|
+
return createJSONRPCErrorResponse(request.id, createA2AError(A2AErrorCodes.INTERNAL_ERROR, `Failed to get task: ${taskResult.error.message}`));
|
|
97
|
+
}
|
|
98
|
+
const task = taskResult.data;
|
|
99
|
+
if (!task) {
|
|
100
|
+
return createJSONRPCErrorResponse(request.id, createA2AError(A2AErrorCodes.TASK_NOT_FOUND, `Task with id ${request.params.id} not found`));
|
|
101
|
+
}
|
|
102
|
+
// Apply history length limit if specified
|
|
103
|
+
let resultTask = task;
|
|
104
|
+
if (request.params.historyLength && task.history) {
|
|
105
|
+
const limitedHistory = task.history.slice(-request.params.historyLength);
|
|
106
|
+
resultTask = { ...task, history: limitedHistory };
|
|
107
|
+
}
|
|
108
|
+
return createJSONRPCSuccessResponse(request.id, resultTask);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
return createJSONRPCErrorResponse(request.id, mapErrorToA2AError(error));
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
// Pure function to handle tasks/cancel method
|
|
115
|
+
export const handleTasksCancel = async (request, taskProvider) => {
|
|
116
|
+
try {
|
|
117
|
+
const taskResult = await taskProvider.getTask(request.params.id);
|
|
118
|
+
if (!taskResult.success) {
|
|
119
|
+
return createJSONRPCErrorResponse(request.id, createA2AError(A2AErrorCodes.INTERNAL_ERROR, `Failed to get task: ${taskResult.error.message}`));
|
|
120
|
+
}
|
|
121
|
+
const task = taskResult.data;
|
|
122
|
+
if (!task) {
|
|
123
|
+
return createJSONRPCErrorResponse(request.id, createA2AError(A2AErrorCodes.TASK_NOT_FOUND, `Task with id ${request.params.id} not found`));
|
|
124
|
+
}
|
|
125
|
+
// Check if task can be canceled
|
|
126
|
+
if (task.status.state === 'completed' || task.status.state === 'failed' || task.status.state === 'canceled') {
|
|
127
|
+
return createJSONRPCErrorResponse(request.id, createA2AError(A2AErrorCodes.TASK_NOT_CANCELABLE, `Task ${request.params.id} cannot be canceled in state ${task.status.state}`));
|
|
128
|
+
}
|
|
129
|
+
// Update task status to canceled
|
|
130
|
+
const updateResult = await taskProvider.updateTaskStatus(request.params.id, 'canceled', undefined, new Date().toISOString());
|
|
131
|
+
if (!updateResult.success) {
|
|
132
|
+
return createJSONRPCErrorResponse(request.id, createA2AError(A2AErrorCodes.INTERNAL_ERROR, `Failed to cancel task: ${updateResult.error.message}`));
|
|
133
|
+
}
|
|
134
|
+
// Get the updated task to return
|
|
135
|
+
const updatedTaskResult = await taskProvider.getTask(request.params.id);
|
|
136
|
+
const canceledTask = updatedTaskResult.success ? updatedTaskResult.data : task;
|
|
137
|
+
return createJSONRPCSuccessResponse(request.id, canceledTask);
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
return createJSONRPCErrorResponse(request.id, mapErrorToA2AError(error));
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
// Pure function to handle agent/getAuthenticatedExtendedCard method
|
|
144
|
+
export const handleGetAuthenticatedExtendedCard = async (request, agentCard) => {
|
|
145
|
+
try {
|
|
146
|
+
// In a real implementation, this would check authentication
|
|
147
|
+
// For now, return the standard agent card
|
|
148
|
+
return createJSONRPCSuccessResponse(request.id, agentCard);
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
return createJSONRPCErrorResponse(request.id, mapErrorToA2AError(error));
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
// Pure function to route A2A requests
|
|
155
|
+
export const routeA2ARequest = (request, agent, modelProvider, taskProvider, agentCard) => {
|
|
156
|
+
if (!validateJSONRPCRequest(request)) {
|
|
157
|
+
return Promise.resolve(createJSONRPCErrorResponse(request.id || null, createA2AError(A2AErrorCodes.INVALID_REQUEST, 'Invalid JSON-RPC request')));
|
|
158
|
+
}
|
|
159
|
+
// request is now confirmed to be JSONRPCRequest
|
|
160
|
+
const validRequest = request;
|
|
161
|
+
switch (validRequest.method) {
|
|
162
|
+
case 'message/send': {
|
|
163
|
+
const validation = validateSendMessageRequest(validRequest);
|
|
164
|
+
if (!validation.isValid) {
|
|
165
|
+
return Promise.resolve(createJSONRPCErrorResponse(validRequest.id, validation.error));
|
|
166
|
+
}
|
|
167
|
+
return handleMessageSend(validation.data, agent, modelProvider);
|
|
168
|
+
}
|
|
169
|
+
case 'message/stream': {
|
|
170
|
+
const validation = validateSendMessageRequest(validRequest);
|
|
171
|
+
if (!validation.isValid) {
|
|
172
|
+
return (async function* () {
|
|
173
|
+
yield createJSONRPCErrorResponse(validRequest.id, validation.error);
|
|
174
|
+
})();
|
|
175
|
+
}
|
|
176
|
+
// Convert to streaming request
|
|
177
|
+
const streamingRequest = {
|
|
178
|
+
...validation.data,
|
|
179
|
+
method: 'message/stream'
|
|
180
|
+
};
|
|
181
|
+
return handleMessageStream(streamingRequest, agent, modelProvider);
|
|
182
|
+
}
|
|
183
|
+
case 'tasks/get':
|
|
184
|
+
return handleTasksGet(validRequest, taskProvider);
|
|
185
|
+
case 'tasks/cancel':
|
|
186
|
+
return handleTasksCancel(validRequest, taskProvider);
|
|
187
|
+
case 'agent/getAuthenticatedExtendedCard':
|
|
188
|
+
return handleGetAuthenticatedExtendedCard(validRequest, agentCard);
|
|
189
|
+
default:
|
|
190
|
+
return Promise.resolve(createJSONRPCErrorResponse(validRequest.id, createA2AError(A2AErrorCodes.METHOD_NOT_FOUND, `Method ${validRequest.method} not found`)));
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
// Pure function to create protocol handler configuration
|
|
194
|
+
export const createProtocolHandlerConfig = (agents, modelProvider, agentCard, taskProvider) => ({
|
|
195
|
+
agents,
|
|
196
|
+
modelProvider,
|
|
197
|
+
agentCard,
|
|
198
|
+
taskProvider,
|
|
199
|
+
// Pure function to handle any A2A request
|
|
200
|
+
handleRequest: (request, agentName) => {
|
|
201
|
+
const agent = agentName ? agents.get(agentName) : agents.values().next().value;
|
|
202
|
+
if (!agent) {
|
|
203
|
+
return Promise.resolve(createJSONRPCErrorResponse(request.id || null, createA2AError(A2AErrorCodes.INVALID_PARAMS, `Agent ${agentName} not found`)));
|
|
204
|
+
}
|
|
205
|
+
if (!taskProvider) {
|
|
206
|
+
return Promise.resolve(createJSONRPCErrorResponse(request.id || null, createA2AError(A2AErrorCodes.INTERNAL_ERROR, 'No task provider configured')));
|
|
207
|
+
}
|
|
208
|
+
return routeA2ARequest(request, agent, modelProvider, taskProvider, agentCard);
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/a2a/protocol.ts"],"names":[],"mappings":"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"}
|