a2a-memory 0.10.11 → 0.10.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/a2a/client.d.ts +53 -0
  2. package/dist/a2a/client.d.ts.map +1 -0
  3. package/dist/a2a/client.js +252 -0
  4. package/dist/a2a/client.js.map +1 -0
  5. package/dist/a2a/discovery.d.ts +45 -0
  6. package/dist/a2a/discovery.d.ts.map +1 -0
  7. package/dist/a2a/discovery.js +115 -0
  8. package/dist/a2a/discovery.js.map +1 -0
  9. package/dist/a2a/index.d.ts +10 -0
  10. package/dist/a2a/index.d.ts.map +1 -0
  11. package/dist/a2a/index.js +8 -0
  12. package/dist/a2a/index.js.map +1 -0
  13. package/dist/a2a/types.d.ts +177 -0
  14. package/dist/a2a/types.d.ts.map +1 -0
  15. package/dist/a2a/types.js +42 -0
  16. package/dist/a2a/types.js.map +1 -0
  17. package/dist/cli/commands/setup-wizard.d.ts +40 -0
  18. package/dist/cli/commands/setup-wizard.d.ts.map +1 -0
  19. package/dist/cli/commands/setup-wizard.js +387 -0
  20. package/dist/cli/commands/setup-wizard.js.map +1 -0
  21. package/dist/cli/commands/setup.d.ts.map +1 -1
  22. package/dist/cli/commands/setup.js +14 -0
  23. package/dist/cli/commands/setup.js.map +1 -1
  24. package/dist/config/manager.js +2 -2
  25. package/dist/config/manager.js.map +1 -1
  26. package/dist/db/database.d.ts +48 -0
  27. package/dist/db/database.d.ts.map +1 -1
  28. package/dist/db/database.js +118 -2
  29. package/dist/db/database.js.map +1 -1
  30. package/dist/hooks/post-tool-use.d.ts.map +1 -1
  31. package/dist/hooks/post-tool-use.js +56 -0
  32. package/dist/hooks/post-tool-use.js.map +1 -1
  33. package/dist/hooks/session-end.d.ts.map +1 -1
  34. package/dist/hooks/session-end.js +17 -0
  35. package/dist/hooks/session-end.js.map +1 -1
  36. package/dist/hooks/session-start.d.ts.map +1 -1
  37. package/dist/hooks/session-start.js +50 -5
  38. package/dist/hooks/session-start.js.map +1 -1
  39. package/dist/hooks/user-prompt-submit.d.ts.map +1 -1
  40. package/dist/hooks/user-prompt-submit.js +16 -0
  41. package/dist/hooks/user-prompt-submit.js.map +1 -1
  42. package/dist/lifecycle/cleanup.d.ts.map +1 -1
  43. package/dist/lifecycle/cleanup.js +14 -3
  44. package/dist/lifecycle/cleanup.js.map +1 -1
  45. package/dist/skill/evaluator.d.ts +10 -0
  46. package/dist/skill/evaluator.d.ts.map +1 -1
  47. package/dist/skill/evaluator.js +48 -1
  48. package/dist/skill/evaluator.js.map +1 -1
  49. package/dist/sync/queue.d.ts +9 -0
  50. package/dist/sync/queue.d.ts.map +1 -1
  51. package/dist/sync/queue.js +50 -20
  52. package/dist/sync/queue.js.map +1 -1
  53. package/dist/types/index.js +2 -2
  54. package/dist/types/index.js.map +1 -1
  55. package/package.json +1 -1
@@ -0,0 +1,53 @@
1
+ /**
2
+ * A2A Protocol JSON-RPC 2.0 Client
3
+ * Google A2A Protocol RC v1.0 준수
4
+ */
5
+ import type { A2AProtocolClientConfig, MessageSendParams, TaskGetParams, TaskCancelParams, TaskData, A2AMethod, StreamCallbacks } from './types.js';
6
+ export declare class A2AProtocolClient {
7
+ private config;
8
+ private timeout;
9
+ private requestId;
10
+ constructor(config: A2AProtocolClientConfig);
11
+ /**
12
+ * message/send — 동기 메시지 전송
13
+ */
14
+ messageSend(params: MessageSendParams): Promise<TaskData>;
15
+ /**
16
+ * message/send with text shorthand
17
+ */
18
+ sendText(taskId: string, text: string, sessionId?: string): Promise<TaskData>;
19
+ /**
20
+ * message/send with data shorthand
21
+ */
22
+ sendData(taskId: string, data: Record<string, unknown>, sessionId?: string): Promise<TaskData>;
23
+ /**
24
+ * tasks/get — Task 상태 조회
25
+ */
26
+ tasksGet(params: TaskGetParams): Promise<TaskData>;
27
+ /**
28
+ * tasks/cancel — Task 취소
29
+ */
30
+ tasksCancel(params: TaskCancelParams): Promise<TaskData>;
31
+ /**
32
+ * message/stream — SSE 스트리밍 메시지 전송
33
+ * Node.js 환경에서 fetch + ReadableStream 사용
34
+ */
35
+ messageStream(params: MessageSendParams, callbacks: StreamCallbacks): Promise<void>;
36
+ /**
37
+ * JSON-RPC 2.0 호출 (재시도 포함)
38
+ */
39
+ rpcCall<T>(method: A2AMethod, params: Record<string, any>): Promise<T>;
40
+ private buildRequest;
41
+ private getEndpoint;
42
+ private getHeaders;
43
+ private executeRpc;
44
+ private processSSEStream;
45
+ private dispatchSSEEvent;
46
+ }
47
+ export declare class A2AProtocolError extends Error {
48
+ readonly code: number;
49
+ readonly data?: unknown;
50
+ readonly retryable: boolean;
51
+ constructor(message: string, code: number, data?: unknown, retryable?: boolean);
52
+ }
53
+ //# 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,EAGV,uBAAuB,EACvB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,eAAe,EAMhB,MAAM,YAAY,CAAC;AAMpB,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAK;gBAEV,MAAM,EAAE,uBAAuB;IAO3C;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAI/D;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAQnF;;OAEG;IACG,QAAQ,CACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,CAAC;IAQpB;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIxD;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAI9D;;;OAGG;IACG,aAAa,CACjB,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,IAAI,CAAC;IAwChB;;OAEG;IAEG,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA2B5E,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;YAgBJ,UAAU;YAiEV,gBAAgB;IAyC9B,OAAO,CAAC,gBAAgB;CAwBzB;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAEhB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,UAAQ;CAO7E"}
@@ -0,0 +1,252 @@
1
+ /**
2
+ * A2A Protocol JSON-RPC 2.0 Client
3
+ * Google A2A Protocol RC v1.0 준수
4
+ */
5
+ const DEFAULT_TIMEOUT = 30000;
6
+ const MAX_RETRIES = 3;
7
+ const RETRY_BASE_MS = 1000;
8
+ export class A2AProtocolClient {
9
+ config;
10
+ timeout;
11
+ requestId = 0;
12
+ constructor(config) {
13
+ this.config = config;
14
+ this.timeout = config.timeout ?? DEFAULT_TIMEOUT;
15
+ }
16
+ // ─── Public API ─────────────────────────────────────────
17
+ /**
18
+ * message/send — 동기 메시지 전송
19
+ */
20
+ async messageSend(params) {
21
+ return this.rpcCall('message/send', params);
22
+ }
23
+ /**
24
+ * message/send with text shorthand
25
+ */
26
+ async sendText(taskId, text, sessionId) {
27
+ const message = {
28
+ role: 'user',
29
+ parts: [{ type: 'text', text }],
30
+ };
31
+ return this.messageSend({ id: taskId, sessionId, message });
32
+ }
33
+ /**
34
+ * message/send with data shorthand
35
+ */
36
+ async sendData(taskId, data, sessionId) {
37
+ const message = {
38
+ role: 'user',
39
+ parts: [{ type: 'data', data }],
40
+ };
41
+ return this.messageSend({ id: taskId, sessionId, message });
42
+ }
43
+ /**
44
+ * tasks/get — Task 상태 조회
45
+ */
46
+ async tasksGet(params) {
47
+ return this.rpcCall('tasks/get', params);
48
+ }
49
+ /**
50
+ * tasks/cancel — Task 취소
51
+ */
52
+ async tasksCancel(params) {
53
+ return this.rpcCall('tasks/cancel', params);
54
+ }
55
+ /**
56
+ * message/stream — SSE 스트리밍 메시지 전송
57
+ * Node.js 환경에서 fetch + ReadableStream 사용
58
+ */
59
+ async messageStream(params, callbacks) {
60
+ const request = this.buildRequest('message/stream', params);
61
+ const controller = new AbortController();
62
+ const timer = setTimeout(() => controller.abort(), this.timeout * 3); // 스트리밍은 3배 타임아웃
63
+ try {
64
+ const response = await fetch(this.getEndpoint(), {
65
+ method: 'POST',
66
+ headers: this.getHeaders(),
67
+ body: JSON.stringify(request),
68
+ signal: controller.signal,
69
+ });
70
+ if (!response.ok) {
71
+ throw new A2AProtocolError(`Stream request failed: ${response.status}`, -32603);
72
+ }
73
+ if (!response.body) {
74
+ throw new A2AProtocolError('No response body for streaming', -32603);
75
+ }
76
+ await this.processSSEStream(response.body, callbacks);
77
+ }
78
+ catch (error) {
79
+ if (error instanceof A2AProtocolError) {
80
+ callbacks.onError?.(error);
81
+ }
82
+ else {
83
+ const msg = error instanceof Error ? error.message : String(error);
84
+ callbacks.onError?.(new A2AProtocolError(`Stream error: ${msg}`, -32603));
85
+ }
86
+ }
87
+ finally {
88
+ clearTimeout(timer);
89
+ callbacks.onComplete?.();
90
+ }
91
+ }
92
+ // ─── JSON-RPC Core ──────────────────────────────────────
93
+ /**
94
+ * JSON-RPC 2.0 호출 (재시도 포함)
95
+ */
96
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
97
+ async rpcCall(method, params) {
98
+ const request = this.buildRequest(method, params);
99
+ let lastError = null;
100
+ for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
101
+ try {
102
+ return await this.executeRpc(request);
103
+ }
104
+ catch (error) {
105
+ lastError = error instanceof Error ? error : new Error(String(error));
106
+ if (error instanceof A2AProtocolError && !error.retryable) {
107
+ throw error;
108
+ }
109
+ if (attempt < MAX_RETRIES) {
110
+ const delay = RETRY_BASE_MS * Math.pow(2, attempt);
111
+ await new Promise((r) => setTimeout(r, delay));
112
+ }
113
+ }
114
+ }
115
+ throw lastError ?? new A2AProtocolError('Unknown error', -32603);
116
+ }
117
+ // ─── Internals ──────────────────────────────────────────
118
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
119
+ buildRequest(method, params) {
120
+ return {
121
+ jsonrpc: '2.0',
122
+ method,
123
+ params,
124
+ id: ++this.requestId,
125
+ };
126
+ }
127
+ getEndpoint() {
128
+ return `${this.config.baseUrl.replace(/\/+$/, '')}/a2a/jsonrpc`;
129
+ }
130
+ getHeaders() {
131
+ const headers = {
132
+ 'Content-Type': 'application/json',
133
+ Accept: 'application/json',
134
+ };
135
+ if (this.config.apiKey) {
136
+ headers['X-API-Key'] = this.config.apiKey;
137
+ }
138
+ if (this.config.jwtToken) {
139
+ headers['Authorization'] = `Bearer ${this.config.jwtToken}`;
140
+ }
141
+ return headers;
142
+ }
143
+ async executeRpc(request) {
144
+ const controller = new AbortController();
145
+ const timer = setTimeout(() => controller.abort(), this.timeout);
146
+ try {
147
+ const response = await fetch(this.getEndpoint(), {
148
+ method: 'POST',
149
+ headers: this.getHeaders(),
150
+ body: JSON.stringify(request),
151
+ signal: controller.signal,
152
+ });
153
+ // JSON-RPC는 항상 200 반환 (에러도 200 + error 필드)
154
+ // 단, 서버 에러(5xx)는 재시도
155
+ if (response.status >= 500) {
156
+ throw new A2AProtocolError(`Server error: ${response.status}`, -32603, undefined, true);
157
+ }
158
+ if (response.status === 401 || response.status === 403) {
159
+ throw new A2AProtocolError(`Authentication failed: ${response.status}`, -32603, undefined, false);
160
+ }
161
+ const rpcResponse = (await response.json());
162
+ if (rpcResponse.error) {
163
+ const retryable = rpcResponse.error.code === -32603; // Internal error만 재시도
164
+ throw new A2AProtocolError(rpcResponse.error.message, rpcResponse.error.code, rpcResponse.error.data, retryable);
165
+ }
166
+ return rpcResponse.result;
167
+ }
168
+ catch (error) {
169
+ if (error instanceof A2AProtocolError)
170
+ throw error;
171
+ const message = error instanceof Error ? error.message : String(error);
172
+ if (message.includes('abort')) {
173
+ throw new A2AProtocolError('Request timeout', -32603, undefined, true);
174
+ }
175
+ // 네트워크 에러는 재시도 가능
176
+ throw new A2AProtocolError(`Network error: ${message}`, -32603, undefined, true);
177
+ }
178
+ finally {
179
+ clearTimeout(timer);
180
+ }
181
+ }
182
+ async processSSEStream(body, callbacks) {
183
+ const reader = body.getReader();
184
+ const decoder = new TextDecoder();
185
+ let buffer = '';
186
+ let currentEvent = '';
187
+ let currentData = '';
188
+ try {
189
+ while (true) {
190
+ const { done, value } = await reader.read();
191
+ if (done)
192
+ break;
193
+ buffer += decoder.decode(value, { stream: true });
194
+ const lines = buffer.split('\n');
195
+ buffer = lines.pop() ?? '';
196
+ for (const line of lines) {
197
+ if (line.startsWith('event:')) {
198
+ currentEvent = line.slice(6).trim();
199
+ }
200
+ else if (line.startsWith('data:')) {
201
+ currentData = line.slice(5).trim();
202
+ }
203
+ else if (line === '' && currentEvent && currentData) {
204
+ this.dispatchSSEEvent(currentEvent, currentData, callbacks);
205
+ currentEvent = '';
206
+ currentData = '';
207
+ }
208
+ }
209
+ }
210
+ // 잔여 버퍼 처리
211
+ if (currentEvent && currentData) {
212
+ this.dispatchSSEEvent(currentEvent, currentData, callbacks);
213
+ }
214
+ }
215
+ finally {
216
+ reader.releaseLock();
217
+ }
218
+ }
219
+ dispatchSSEEvent(eventType, data, callbacks) {
220
+ try {
221
+ const parsed = JSON.parse(data);
222
+ if (eventType === 'TaskStatusUpdateEvent') {
223
+ const event = parsed;
224
+ callbacks.onStatusUpdate?.(event);
225
+ if (event.final) {
226
+ callbacks.onComplete?.();
227
+ }
228
+ }
229
+ else if (eventType === 'TaskArtifactUpdateEvent') {
230
+ const event = parsed;
231
+ callbacks.onArtifactUpdate?.(event);
232
+ }
233
+ }
234
+ catch (error) {
235
+ const msg = error instanceof Error ? error.message : String(error);
236
+ callbacks.onError?.(new Error(`SSE parse error: ${msg}`));
237
+ }
238
+ }
239
+ }
240
+ export class A2AProtocolError extends Error {
241
+ code;
242
+ data;
243
+ retryable;
244
+ constructor(message, code, data, retryable = false) {
245
+ super(message);
246
+ this.name = 'A2AProtocolError';
247
+ this.code = code;
248
+ this.data = data;
249
+ this.retryable = retryable;
250
+ }
251
+ }
252
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/a2a/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * A2A Agent Discovery
3
+ * .well-known/agent.json 기반 AgentCard 자동 발견 + 캐싱
4
+ */
5
+ import type { AgentCard } from './types.js';
6
+ export interface DiscoveryOptions {
7
+ timeout?: number;
8
+ cacheTtlMs?: number;
9
+ }
10
+ export declare class AgentDiscovery {
11
+ private cache;
12
+ private timeout;
13
+ private cacheTtlMs;
14
+ constructor(options?: DiscoveryOptions);
15
+ /**
16
+ * .well-known/agent.json에서 AgentCard를 가져온다.
17
+ * 캐시가 유효하면 캐시를 반환한다.
18
+ */
19
+ discover(baseUrl: string): Promise<AgentCard>;
20
+ /**
21
+ * 캐시된 AgentCard를 반환 (없으면 null)
22
+ */
23
+ getCached(baseUrl: string): AgentCard | null;
24
+ /**
25
+ * 특정 스킬 ID를 지원하는지 확인
26
+ */
27
+ hasSkill(card: AgentCard, skillId: string): boolean;
28
+ /**
29
+ * 태그로 스킬 검색
30
+ */
31
+ findSkillsByTag(card: AgentCard, tag: string): AgentCard['skills'];
32
+ /**
33
+ * 캐시 무효화
34
+ */
35
+ invalidate(baseUrl?: string): void;
36
+ /**
37
+ * AgentCard 필수 필드 검증
38
+ */
39
+ private validateCard;
40
+ }
41
+ export declare class AgentDiscoveryError extends Error {
42
+ readonly agentUrl: string;
43
+ constructor(message: string, agentUrl: string);
44
+ }
45
+ //# sourceMappingURL=discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/a2a/discovery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAUD,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,CAAC,EAAE,gBAAgB;IAKtC;;;OAGG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IA2CnD;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAW5C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAInD;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC;IAIlE;;OAEG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAQlC;;OAEG;IACH,OAAO,CAAC,YAAY;CAcrB;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAK9C"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * A2A Agent Discovery
3
+ * .well-known/agent.json 기반 AgentCard 자동 발견 + 캐싱
4
+ */
5
+ const DEFAULT_TIMEOUT = 10000;
6
+ const DEFAULT_CACHE_TTL = 5 * 60 * 1000; // 5분
7
+ export class AgentDiscovery {
8
+ cache = new Map();
9
+ timeout;
10
+ cacheTtlMs;
11
+ constructor(options) {
12
+ this.timeout = options?.timeout ?? DEFAULT_TIMEOUT;
13
+ this.cacheTtlMs = options?.cacheTtlMs ?? DEFAULT_CACHE_TTL;
14
+ }
15
+ /**
16
+ * .well-known/agent.json에서 AgentCard를 가져온다.
17
+ * 캐시가 유효하면 캐시를 반환한다.
18
+ */
19
+ async discover(baseUrl) {
20
+ const normalizedUrl = baseUrl.replace(/\/+$/, '');
21
+ const cached = this.cache.get(normalizedUrl);
22
+ if (cached && Date.now() - cached.fetchedAt < this.cacheTtlMs) {
23
+ return cached.card;
24
+ }
25
+ const wellKnownUrl = `${normalizedUrl}/.well-known/agent.json`;
26
+ const controller = new AbortController();
27
+ const timer = setTimeout(() => controller.abort(), this.timeout);
28
+ try {
29
+ const response = await fetch(wellKnownUrl, {
30
+ method: 'GET',
31
+ headers: { Accept: 'application/json' },
32
+ signal: controller.signal,
33
+ });
34
+ if (!response.ok) {
35
+ throw new AgentDiscoveryError(`AgentCard fetch failed: ${response.status} ${response.statusText}`, normalizedUrl);
36
+ }
37
+ const card = (await response.json());
38
+ this.validateCard(card);
39
+ this.cache.set(normalizedUrl, { card, fetchedAt: Date.now() });
40
+ return card;
41
+ }
42
+ catch (error) {
43
+ if (error instanceof AgentDiscoveryError)
44
+ throw error;
45
+ const message = error instanceof Error ? error.message : String(error);
46
+ throw new AgentDiscoveryError(`AgentCard discovery failed: ${message}`, normalizedUrl);
47
+ }
48
+ finally {
49
+ clearTimeout(timer);
50
+ }
51
+ }
52
+ /**
53
+ * 캐시된 AgentCard를 반환 (없으면 null)
54
+ */
55
+ getCached(baseUrl) {
56
+ const normalizedUrl = baseUrl.replace(/\/+$/, '');
57
+ const cached = this.cache.get(normalizedUrl);
58
+ if (!cached)
59
+ return null;
60
+ if (Date.now() - cached.fetchedAt >= this.cacheTtlMs) {
61
+ this.cache.delete(normalizedUrl);
62
+ return null;
63
+ }
64
+ return cached.card;
65
+ }
66
+ /**
67
+ * 특정 스킬 ID를 지원하는지 확인
68
+ */
69
+ hasSkill(card, skillId) {
70
+ return card.skills.some((s) => s.id === skillId);
71
+ }
72
+ /**
73
+ * 태그로 스킬 검색
74
+ */
75
+ findSkillsByTag(card, tag) {
76
+ return card.skills.filter((s) => s.tags?.includes(tag));
77
+ }
78
+ /**
79
+ * 캐시 무효화
80
+ */
81
+ invalidate(baseUrl) {
82
+ if (baseUrl) {
83
+ this.cache.delete(baseUrl.replace(/\/+$/, ''));
84
+ }
85
+ else {
86
+ this.cache.clear();
87
+ }
88
+ }
89
+ /**
90
+ * AgentCard 필수 필드 검증
91
+ */
92
+ validateCard(card) {
93
+ if (!card.name || typeof card.name !== 'string') {
94
+ throw new AgentDiscoveryError('AgentCard missing required field: name', '');
95
+ }
96
+ if (!card.url || typeof card.url !== 'string') {
97
+ throw new AgentDiscoveryError('AgentCard missing required field: url', '');
98
+ }
99
+ if (!card.version || typeof card.version !== 'string') {
100
+ throw new AgentDiscoveryError('AgentCard missing required field: version', '');
101
+ }
102
+ if (!Array.isArray(card.skills)) {
103
+ throw new AgentDiscoveryError('AgentCard missing required field: skills', '');
104
+ }
105
+ }
106
+ }
107
+ export class AgentDiscoveryError extends Error {
108
+ agentUrl;
109
+ constructor(message, agentUrl) {
110
+ super(message);
111
+ this.name = 'AgentDiscoveryError';
112
+ this.agentUrl = agentUrl;
113
+ }
114
+ }
115
+ //# sourceMappingURL=discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/a2a/discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * A2A Protocol Client Module
3
+ * Google A2A Protocol RC v1.0
4
+ */
5
+ export { A2AProtocolClient, A2AProtocolError } from './client.js';
6
+ export { AgentDiscovery, AgentDiscoveryError } from './discovery.js';
7
+ export type { JSONRPCRequest, JSONRPCResponse, JSONRPCError, Message, MessagePart, TextPart, FilePart, DataPart, MessageRole, TaskData, TaskStatus, Artifact, TaskStatusUpdateEvent, TaskArtifactUpdateEvent, SSEEvent, StreamCallbacks, AgentCard, AgentSkill, AgentCapabilities, AgentExtension, SecurityScheme, AgentProvider, MessageSendParams, TaskGetParams, TaskCancelParams, A2AProtocolClientConfig, } from './types.js';
8
+ export { JSONRPCErrorCode, TaskState, TERMINAL_STATES, EventType, } from './types.js';
9
+ export type { DiscoveryOptions } from './discovery.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/a2a/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrE,YAAY,EAEV,cAAc,EACd,eAAe,EACf,YAAY,EAEZ,OAAO,EACP,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,EAEX,QAAQ,EACR,UAAU,EACV,QAAQ,EAER,qBAAqB,EACrB,uBAAuB,EACvB,QAAQ,EACR,eAAe,EAEf,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,aAAa,EAEb,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAEhB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * A2A Protocol Client Module
3
+ * Google A2A Protocol RC v1.0
4
+ */
5
+ export { A2AProtocolClient, A2AProtocolError } from './client.js';
6
+ export { AgentDiscovery, AgentDiscoveryError } from './discovery.js';
7
+ export { JSONRPCErrorCode, TaskState, TERMINAL_STATES, EventType, } from './types.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/a2a/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAoCrE,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,SAAS,GACV,MAAM,YAAY,CAAC"}