a2a-memory 0.11.5 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/LICENSE +7 -19
  2. package/README.md +1 -1
  3. package/dist/a2a/client.js +1 -252
  4. package/dist/a2a/discovery.js +1 -115
  5. package/dist/a2a/index.js +1 -8
  6. package/dist/a2a/types.js +1 -42
  7. package/dist/adapters/anthropic.js +1 -117
  8. package/dist/chunking/chunker.js +1 -163
  9. package/dist/claude/sync.d.ts +8 -2
  10. package/dist/claude/sync.js +1 -298
  11. package/dist/cli/commands/add.js +1 -80
  12. package/dist/cli/commands/claude-sync.d.ts +3 -3
  13. package/dist/cli/commands/claude-sync.js +1 -70
  14. package/dist/cli/commands/cleanup.js +1 -83
  15. package/dist/cli/commands/config.js +1 -79
  16. package/dist/cli/commands/edit.js +1 -69
  17. package/dist/cli/commands/embed.js +1 -92
  18. package/dist/cli/commands/extract.js +1 -103
  19. package/dist/cli/commands/health.js +1 -105
  20. package/dist/cli/commands/list.js +1 -46
  21. package/dist/cli/commands/migrate-chunks.js +1 -205
  22. package/dist/cli/commands/migrate-file-refs.js +1 -183
  23. package/dist/cli/commands/proficiency.js +1 -146
  24. package/dist/cli/commands/rm.js +1 -64
  25. package/dist/cli/commands/search.js +1 -90
  26. package/dist/cli/commands/setup-wizard.js +1 -387
  27. package/dist/cli/commands/setup.js +1 -170
  28. package/dist/cli/commands/skill.js +1 -151
  29. package/dist/cli/commands/status.js +1 -70
  30. package/dist/cli/commands/sync.js +1 -202
  31. package/dist/cli/commands/team.js +1 -142
  32. package/dist/cli/index.js +1 -87
  33. package/dist/config/manager.js +1 -372
  34. package/dist/db/database.d.ts +36 -0
  35. package/dist/db/database.js +1 -1400
  36. package/dist/embedding/e5-provider.js +1 -147
  37. package/dist/embedding/index.js +1 -34
  38. package/dist/embedding/local-provider.js +1 -157
  39. package/dist/embedding/openai-provider.js +1 -92
  40. package/dist/embedding/quantization.js +1 -89
  41. package/dist/extraction/dedup-manager.js +1 -161
  42. package/dist/extraction/emotion-filter.js +1 -33
  43. package/dist/extraction/extractor.d.ts +0 -3
  44. package/dist/extraction/extractor.js +1 -648
  45. package/dist/extraction/file-reference.js +1 -77
  46. package/dist/extraction/filter.js +1 -86
  47. package/dist/extraction/scorer.js +1 -142
  48. package/dist/extraction/similarity.js +1 -85
  49. package/dist/hooks/client-factory.js +1 -44
  50. package/dist/hooks/post-tool-use.js +1 -518
  51. package/dist/hooks/pre-compact.js +1 -209
  52. package/dist/hooks/session-end.js +1 -633
  53. package/dist/hooks/session-start.js +1 -549
  54. package/dist/hooks/shared.js +1 -110
  55. package/dist/hooks/stop.d.ts +21 -0
  56. package/dist/hooks/stop.js +1 -0
  57. package/dist/hooks/user-prompt-submit.js +1 -316
  58. package/dist/i18n/index.js +1 -2
  59. package/dist/i18n/messages.js +1 -150
  60. package/dist/index.d.ts +1 -1
  61. package/dist/index.js +1 -43
  62. package/dist/lifecycle/cleanup-scheduler.js +1 -137
  63. package/dist/lifecycle/cleanup.d.ts +1 -0
  64. package/dist/lifecycle/cleanup.js +1 -116
  65. package/dist/lifecycle/consolidation.d.ts +22 -0
  66. package/dist/lifecycle/consolidation.js +1 -0
  67. package/dist/lifecycle/index.d.ts +2 -0
  68. package/dist/lifecycle/index.js +1 -13
  69. package/dist/lifecycle/injection-flush.d.ts +24 -0
  70. package/dist/lifecycle/injection-flush.js +1 -0
  71. package/dist/lifecycle/quality-scorer.d.ts +5 -6
  72. package/dist/lifecycle/quality-scorer.js +1 -46
  73. package/dist/lifecycle/tiering.js +1 -246
  74. package/dist/llm/client.js +1 -226
  75. package/dist/llm/index.js +1 -5
  76. package/dist/proficiency/actr-engine.js +1 -106
  77. package/dist/proficiency/detection.js +1 -77
  78. package/dist/proficiency/index.js +1 -9
  79. package/dist/proficiency/tracker.js +1 -173
  80. package/dist/proficiency/types.js +1 -8
  81. package/dist/providers/adapters.js +1 -140
  82. package/dist/providers/detector.js +1 -57
  83. package/dist/search/adaptive-router.js +1 -93
  84. package/dist/search/index.js +1 -9
  85. package/dist/search/ranker.js +1 -171
  86. package/dist/search/reranker.js +1 -155
  87. package/dist/session/parser.js +1 -130
  88. package/dist/skill/evaluator.js +1 -509
  89. package/dist/skill/index.js +1 -7
  90. package/dist/skill/types.js +1 -7
  91. package/dist/sync/client.d.ts +7 -0
  92. package/dist/sync/client.js +1 -597
  93. package/dist/sync/encryption.js +1 -203
  94. package/dist/sync/index.js +1 -12
  95. package/dist/sync/queue.js +1 -214
  96. package/dist/sync/scheduler.js +1 -140
  97. package/dist/sync/synchronizer.js +1 -241
  98. package/dist/sync/team-synchronizer.js +1 -204
  99. package/dist/sync/vector-clock.js +1 -70
  100. package/dist/types/index.d.ts +13 -1
  101. package/dist/types/index.js +1 -132
  102. package/dist/utils/keychain.js +1 -170
  103. package/dist/utils/logger.js +1 -128
  104. package/package.json +15 -10
  105. package/dist/a2a/client.d.ts.map +0 -1
  106. package/dist/a2a/client.js.map +0 -1
  107. package/dist/a2a/discovery.d.ts.map +0 -1
  108. package/dist/a2a/discovery.js.map +0 -1
  109. package/dist/a2a/index.d.ts.map +0 -1
  110. package/dist/a2a/index.js.map +0 -1
  111. package/dist/a2a/types.d.ts.map +0 -1
  112. package/dist/a2a/types.js.map +0 -1
  113. package/dist/adapters/anthropic.d.ts.map +0 -1
  114. package/dist/adapters/anthropic.js.map +0 -1
  115. package/dist/chunking/chunker.d.ts.map +0 -1
  116. package/dist/chunking/chunker.js.map +0 -1
  117. package/dist/claude/sync.d.ts.map +0 -1
  118. package/dist/claude/sync.js.map +0 -1
  119. package/dist/cli/commands/add.d.ts.map +0 -1
  120. package/dist/cli/commands/add.js.map +0 -1
  121. package/dist/cli/commands/claude-sync.d.ts.map +0 -1
  122. package/dist/cli/commands/claude-sync.js.map +0 -1
  123. package/dist/cli/commands/cleanup.d.ts.map +0 -1
  124. package/dist/cli/commands/cleanup.js.map +0 -1
  125. package/dist/cli/commands/config.d.ts.map +0 -1
  126. package/dist/cli/commands/config.js.map +0 -1
  127. package/dist/cli/commands/edit.d.ts.map +0 -1
  128. package/dist/cli/commands/edit.js.map +0 -1
  129. package/dist/cli/commands/embed.d.ts.map +0 -1
  130. package/dist/cli/commands/embed.js.map +0 -1
  131. package/dist/cli/commands/extract.d.ts.map +0 -1
  132. package/dist/cli/commands/extract.js.map +0 -1
  133. package/dist/cli/commands/health.d.ts.map +0 -1
  134. package/dist/cli/commands/health.js.map +0 -1
  135. package/dist/cli/commands/list.d.ts.map +0 -1
  136. package/dist/cli/commands/list.js.map +0 -1
  137. package/dist/cli/commands/migrate-chunks.d.ts.map +0 -1
  138. package/dist/cli/commands/migrate-chunks.js.map +0 -1
  139. package/dist/cli/commands/migrate-file-refs.d.ts.map +0 -1
  140. package/dist/cli/commands/migrate-file-refs.js.map +0 -1
  141. package/dist/cli/commands/proficiency.d.ts.map +0 -1
  142. package/dist/cli/commands/proficiency.js.map +0 -1
  143. package/dist/cli/commands/rm.d.ts.map +0 -1
  144. package/dist/cli/commands/rm.js.map +0 -1
  145. package/dist/cli/commands/search.d.ts.map +0 -1
  146. package/dist/cli/commands/search.js.map +0 -1
  147. package/dist/cli/commands/setup-wizard.d.ts.map +0 -1
  148. package/dist/cli/commands/setup-wizard.js.map +0 -1
  149. package/dist/cli/commands/setup.d.ts.map +0 -1
  150. package/dist/cli/commands/setup.js.map +0 -1
  151. package/dist/cli/commands/skill.d.ts.map +0 -1
  152. package/dist/cli/commands/skill.js.map +0 -1
  153. package/dist/cli/commands/status.d.ts.map +0 -1
  154. package/dist/cli/commands/status.js.map +0 -1
  155. package/dist/cli/commands/sync.d.ts.map +0 -1
  156. package/dist/cli/commands/sync.js.map +0 -1
  157. package/dist/cli/commands/team.d.ts.map +0 -1
  158. package/dist/cli/commands/team.js.map +0 -1
  159. package/dist/cli/index.d.ts.map +0 -1
  160. package/dist/cli/index.js.map +0 -1
  161. package/dist/config/manager.d.ts.map +0 -1
  162. package/dist/config/manager.js.map +0 -1
  163. package/dist/db/database.d.ts.map +0 -1
  164. package/dist/db/database.js.map +0 -1
  165. package/dist/embedding/e5-provider.d.ts.map +0 -1
  166. package/dist/embedding/e5-provider.js.map +0 -1
  167. package/dist/embedding/index.d.ts.map +0 -1
  168. package/dist/embedding/index.js.map +0 -1
  169. package/dist/embedding/local-provider.d.ts.map +0 -1
  170. package/dist/embedding/local-provider.js.map +0 -1
  171. package/dist/embedding/openai-provider.d.ts.map +0 -1
  172. package/dist/embedding/openai-provider.js.map +0 -1
  173. package/dist/embedding/quantization.d.ts.map +0 -1
  174. package/dist/embedding/quantization.js.map +0 -1
  175. package/dist/extraction/dedup-manager.d.ts.map +0 -1
  176. package/dist/extraction/dedup-manager.js.map +0 -1
  177. package/dist/extraction/emotion-filter.d.ts.map +0 -1
  178. package/dist/extraction/emotion-filter.js.map +0 -1
  179. package/dist/extraction/extractor.d.ts.map +0 -1
  180. package/dist/extraction/extractor.js.map +0 -1
  181. package/dist/extraction/file-reference.d.ts.map +0 -1
  182. package/dist/extraction/file-reference.js.map +0 -1
  183. package/dist/extraction/filter.d.ts.map +0 -1
  184. package/dist/extraction/filter.js.map +0 -1
  185. package/dist/extraction/scorer.d.ts.map +0 -1
  186. package/dist/extraction/scorer.js.map +0 -1
  187. package/dist/extraction/similarity.d.ts.map +0 -1
  188. package/dist/extraction/similarity.js.map +0 -1
  189. package/dist/hooks/client-factory.d.ts.map +0 -1
  190. package/dist/hooks/client-factory.js.map +0 -1
  191. package/dist/hooks/post-tool-use.d.ts.map +0 -1
  192. package/dist/hooks/post-tool-use.js.map +0 -1
  193. package/dist/hooks/pre-compact.d.ts.map +0 -1
  194. package/dist/hooks/pre-compact.js.map +0 -1
  195. package/dist/hooks/session-end.d.ts.map +0 -1
  196. package/dist/hooks/session-end.js.map +0 -1
  197. package/dist/hooks/session-start.d.ts.map +0 -1
  198. package/dist/hooks/session-start.js.map +0 -1
  199. package/dist/hooks/shared.d.ts.map +0 -1
  200. package/dist/hooks/shared.js.map +0 -1
  201. package/dist/hooks/user-prompt-submit.d.ts.map +0 -1
  202. package/dist/hooks/user-prompt-submit.js.map +0 -1
  203. package/dist/i18n/index.d.ts.map +0 -1
  204. package/dist/i18n/index.js.map +0 -1
  205. package/dist/i18n/messages.d.ts.map +0 -1
  206. package/dist/i18n/messages.js.map +0 -1
  207. package/dist/index.d.ts.map +0 -1
  208. package/dist/index.js.map +0 -1
  209. package/dist/lifecycle/cleanup-scheduler.d.ts.map +0 -1
  210. package/dist/lifecycle/cleanup-scheduler.js.map +0 -1
  211. package/dist/lifecycle/cleanup.d.ts.map +0 -1
  212. package/dist/lifecycle/cleanup.js.map +0 -1
  213. package/dist/lifecycle/index.d.ts.map +0 -1
  214. package/dist/lifecycle/index.js.map +0 -1
  215. package/dist/lifecycle/quality-scorer.d.ts.map +0 -1
  216. package/dist/lifecycle/quality-scorer.js.map +0 -1
  217. package/dist/lifecycle/tiering.d.ts.map +0 -1
  218. package/dist/lifecycle/tiering.js.map +0 -1
  219. package/dist/llm/client.d.ts.map +0 -1
  220. package/dist/llm/client.js.map +0 -1
  221. package/dist/llm/index.d.ts.map +0 -1
  222. package/dist/llm/index.js.map +0 -1
  223. package/dist/proficiency/actr-engine.d.ts.map +0 -1
  224. package/dist/proficiency/actr-engine.js.map +0 -1
  225. package/dist/proficiency/detection.d.ts.map +0 -1
  226. package/dist/proficiency/detection.js.map +0 -1
  227. package/dist/proficiency/index.d.ts.map +0 -1
  228. package/dist/proficiency/index.js.map +0 -1
  229. package/dist/proficiency/tracker.d.ts.map +0 -1
  230. package/dist/proficiency/tracker.js.map +0 -1
  231. package/dist/proficiency/types.d.ts.map +0 -1
  232. package/dist/proficiency/types.js.map +0 -1
  233. package/dist/providers/adapters.d.ts.map +0 -1
  234. package/dist/providers/adapters.js.map +0 -1
  235. package/dist/providers/detector.d.ts.map +0 -1
  236. package/dist/providers/detector.js.map +0 -1
  237. package/dist/search/adaptive-router.d.ts.map +0 -1
  238. package/dist/search/adaptive-router.js.map +0 -1
  239. package/dist/search/index.d.ts.map +0 -1
  240. package/dist/search/index.js.map +0 -1
  241. package/dist/search/ranker.d.ts.map +0 -1
  242. package/dist/search/ranker.js.map +0 -1
  243. package/dist/search/reranker.d.ts.map +0 -1
  244. package/dist/search/reranker.js.map +0 -1
  245. package/dist/session/parser.d.ts.map +0 -1
  246. package/dist/session/parser.js.map +0 -1
  247. package/dist/skill/evaluator.d.ts.map +0 -1
  248. package/dist/skill/evaluator.js.map +0 -1
  249. package/dist/skill/index.d.ts.map +0 -1
  250. package/dist/skill/index.js.map +0 -1
  251. package/dist/skill/types.d.ts.map +0 -1
  252. package/dist/skill/types.js.map +0 -1
  253. package/dist/sync/client.d.ts.map +0 -1
  254. package/dist/sync/client.js.map +0 -1
  255. package/dist/sync/encryption.d.ts.map +0 -1
  256. package/dist/sync/encryption.js.map +0 -1
  257. package/dist/sync/index.d.ts.map +0 -1
  258. package/dist/sync/index.js.map +0 -1
  259. package/dist/sync/queue.d.ts.map +0 -1
  260. package/dist/sync/queue.js.map +0 -1
  261. package/dist/sync/scheduler.d.ts.map +0 -1
  262. package/dist/sync/scheduler.js.map +0 -1
  263. package/dist/sync/synchronizer.d.ts.map +0 -1
  264. package/dist/sync/synchronizer.js.map +0 -1
  265. package/dist/sync/team-synchronizer.d.ts.map +0 -1
  266. package/dist/sync/team-synchronizer.js.map +0 -1
  267. package/dist/sync/vector-clock.d.ts.map +0 -1
  268. package/dist/sync/vector-clock.js.map +0 -1
  269. package/dist/types/index.d.ts.map +0 -1
  270. package/dist/types/index.js.map +0 -1
  271. package/dist/utils/keychain.d.ts.map +0 -1
  272. package/dist/utils/keychain.js.map +0 -1
  273. package/dist/utils/logger.d.ts.map +0 -1
  274. package/dist/utils/logger.js.map +0 -1
package/LICENSE CHANGED
@@ -1,21 +1,9 @@
1
- MIT License
1
+ Copyright (c) 2026 A2A Memory. All rights reserved.
2
2
 
3
- Copyright (c) 2026 A2A Memory
3
+ This software is proprietary and confidential.
4
+ Unauthorized copying, modification, distribution, or use of this software,
5
+ via any medium, is strictly prohibited.
4
6
 
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
7
+ This software is provided "as is", without warranty of any kind, express or
8
+ implied. In no event shall the authors be liable for any claim, damages or
9
+ other liability arising from the use of this software.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @a2a/memory - Persistent AI Memory for Claude Code
2
2
 
3
- > v0.11.4 — Local-first memory system with realtime context injection, semantic search, memory-file linking, and team collaboration
3
+ > v0.12.0 — Local-first memory system with realtime context injection, semantic search, memory-file linking, and team collaboration
4
4
 
5
5
  Persistent AI memory for Claude Code. Automatically captures, stores, and retrieves knowledge across coding sessions with realtime prompt-level memory injection.
6
6
 
@@ -1,252 +1 @@
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
1
+ function _0x227d35(_0x8afbfe,_0x2209c4){return _0x4122(_0x2209c4- -0x113,_0x8afbfe);}(function(_0x5b5e92,_0xc184ee){function _0x1df8bc(_0x3807b6,_0x3eb8fe){return _0x4122(_0x3eb8fe-0x328,_0x3807b6);}const _0x2b8a80=_0x5b5e92();function _0x19d1ee(_0x534bc1,_0x416a96){return _0x4122(_0x534bc1- -0x1a,_0x416a96);}while(!![]){try{const _0x316f47=parseInt(_0x19d1ee(0x17d,0x141))/0x1*(parseInt(_0x19d1ee(0x1c7,0x19b))/0x2)+-parseInt(_0x1df8bc(0x4ed,0x4e6))/0x3+-parseInt(_0x1df8bc(0x51a,0x4ec))/0x4*(-parseInt(_0x1df8bc(0x4a8,0x4ab))/0x5)+parseInt(_0x1df8bc(0x4d6,0x4aa))/0x6*(parseInt(_0x1df8bc(0x4bd,0x4dc))/0x7)+parseInt(_0x19d1ee(0x18a,0x158))/0x8*(parseInt(_0x19d1ee(0x1d1,0x1b5))/0x9)+-parseInt(_0x1df8bc(0x4d2,0x4e9))/0xa*(-parseInt(_0x19d1ee(0x16d,0x197))/0xb)+-parseInt(_0x1df8bc(0x4d9,0x4d5))/0xc*(parseInt(_0x19d1ee(0x186,0x14d))/0xd);if(_0x316f47===_0xc184ee)break;else _0x2b8a80['push'](_0x2b8a80['shift']());}catch(_0x3c1d03){_0x2b8a80['push'](_0x2b8a80['shift']());}}}(_0x3a3c,0xcc9ee));function _0x4122(_0x3348eb,_0x8a2a66){_0x3348eb=_0x3348eb-0x174;const _0x3a3c67=_0x3a3c();let _0x4122d2=_0x3a3c67[_0x3348eb];if(_0x4122['hXsmeQ']===undefined){var _0x459a87=function(_0x44def7){const _0x2b03a2='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x775925='',_0x157b9a='';for(let _0x20a6c1=0x0,_0x5cc184,_0x3469c8,_0x2e0366=0x0;_0x3469c8=_0x44def7['charAt'](_0x2e0366++);~_0x3469c8&&(_0x5cc184=_0x20a6c1%0x4?_0x5cc184*0x40+_0x3469c8:_0x3469c8,_0x20a6c1++%0x4)?_0x775925+=String['fromCharCode'](0xff&_0x5cc184>>(-0x2*_0x20a6c1&0x6)):0x0){_0x3469c8=_0x2b03a2['indexOf'](_0x3469c8);}for(let _0xb96d94=0x0,_0x29efd8=_0x775925['length'];_0xb96d94<_0x29efd8;_0xb96d94++){_0x157b9a+='%'+('00'+_0x775925['charCodeAt'](_0xb96d94)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x157b9a);};_0x4122['JMMHzP']=_0x459a87,_0x4122['QQSRuT']={},_0x4122['hXsmeQ']=!![];}const _0xe1f803=_0x3a3c67[0x0],_0x4397d8=_0x3348eb+_0xe1f803,_0x5392e2=_0x4122['QQSRuT'][_0x4397d8];return!_0x5392e2?(_0x4122d2=_0x4122['JMMHzP'](_0x4122d2),_0x4122['QQSRuT'][_0x4397d8]=_0x4122d2):_0x4122d2=_0x5392e2,_0x4122d2;}function _0x3a3c(){const _0x25dcdd=['B25tDgf0DxnvCa','nK13zLLfBW','nte1mZq1t3fxEe9S','C3bSAxq','z2v0rw5KCg9PBG','ruv2zw50','mtG3mZn6u214Ewu','CMvWBgfJzq','BwvZC2fNzq','BMfTzq','CMv0CNLHyMXL','BhLKtfi','BI9QC29U','DwvZDcbMywLSzq','ChjVy2vZC1ntrq','zMLUywW','zMrntK8','B25dB21WBgv0zq','z2v0sgvHzgvYCW','CMvSzwfZzuXVyW','tMv0D29YAYbLCG','EervEuG','m2nmyxbJyq','zxHLy3v0zvjWyW','C3rYAw5NAwz5','CNbJq2fSBa','EvnYCfK','DgfZA3mVz2v0','CMvZDwX0','CgfYC2u','DgfZA3nhzxq','mte3Dg5NB2X4','BwvZC2fNzs9ZDa','DgfZA3ndyw5Jzq','zg50uhq','mZj2BxbdyLa','B25fCNjVCG','CLnhv1y','BhjXAve','yM9KEq','q0rfBei','y29Kzq','yMzPA1i','y29UzMLN','ndq1mdi4nfvJDvDfwq','C2LNBMfS','DxnLCG','CM9YoIa','BwvZC2fNzs9Zzq','AhfXu3G','s3DQBw0','mta1otK1mtLgr2zHy2e','C3rHCNrZv2L0Aa','ihn0CMvHBwLUzW','AhncEKq','yxbWBgLJyxrPBW','y3rvCgrHDgvfDG','B25bCNrPzMfJDa','BwvZC2fNzvn0CG','BwvZC2fNzvnLBG','ue9tva','mJm1mtmXovn4r2TLCW','y1POyLm','B3i6ia','odiXmhbXBg5Mra','C2vUzfrLEhq','v0LTB1y','mJbzuK93shi','mhWXFdj8m3W0','DuDvA1m','qxv0AgvUDgLJyq','DhjPBq','shbjuwW','z2v0uMvHzgvY','Aw9U','rLrNwgC','zgvJB2rL','renPwva','zxjYB3i','ywjVCNq','vw5RBM93BIbLCG','vgfZA1n0yxr1CW','zKXfuNC','ANnVBG','Dgv4Da','DgLVBIbMywLSzq','yMrxwLG','u3rYzwfTigvYCG','vxbKyxrL','qw9LrNa','AND0vg9Rzw4','BwvVDxq','yNvPBgrszxf1zq','u1nfihbHCNnLia','zsbIB2r5igzVCG','qtjbuhjVDg9JBW','nZCZndKWAhHRy3rv','Aw5JBhvKzxm','yxbPs2v5','uMvXDwvZDcb0Aq','CMvHBq','C2XPy2u','A212ywG','C3rHDhvZ','wc1bueKTs2v5','zwfT','odm2mJe3sM1OtuHb','vhfcvNi','zgf0ytO','tM8GCMvZCg9UCW','zgf0zq','quv5zhm','u2vYDMvYigvYCG','u3rYzwfT','qxv0Ag9YAxPHDa','z1PiBKC','zdOG','DgLTzw91Da','zgLZCgf0y2HtuW','Cg93','zgf0yq','CMvXDwvZDeLK','z2HJs3C','DgfZA3mVy2fUyW','Cg9W'];_0x3a3c=function(){return _0x25dcdd;};return _0x3a3c();}const DEFAULT_TIMEOUT=0x7530,MAX_RETRIES=0x3,RETRY_BASE_MS=0x3e8;function _0x15ca98(_0x327562,_0x119307){return _0x4122(_0x119307-0xca,_0x327562);}export class A2AProtocolClient{['config'];[_0x227d35(0x83,0x66)];[_0x15ca98(0x238,0x247)]=0x0;constructor(_0x1d0ed5){this['config']=_0x1d0ed5;function _0x23d57e(_0x3883a5,_0x13b13b){return _0x227d35(_0x13b13b,_0x3883a5- -0x25b);}this['timeout']=_0x1d0ed5[_0x23d57e(-0x1f5,-0x1d4)]??DEFAULT_TIMEOUT;}async['messageSen'+'d'](_0x81acc3){function _0x1b548c(_0x53b7f0,_0x4a9fe){return _0x227d35(_0x53b7f0,_0x4a9fe- -0xbb);}function _0x4f52a(_0x25c814,_0x4f1f5d){return _0x227d35(_0x4f1f5d,_0x25c814- -0x24f);}return this[_0x4f52a(-0x1c8,-0x1b3)](_0x4f52a(-0x1b1,-0x18e)+'nd',_0x81acc3);}async[_0x15ca98(0x273,0x28c)](_0x556635,_0x21e4dc,_0x4388f1){const _0x261f1d={'role':'user','parts':[{'type':_0x4e5ed9(0x534,0x51c),'text':_0x21e4dc}]};function _0x1ce735(_0x13d533,_0x112375){return _0x227d35(_0x13d533,_0x112375-0x390);}function _0x4e5ed9(_0x2b5644,_0x3902c9){return _0x227d35(_0x3902c9,_0x2b5644-0x472);}return this[_0x1ce735(0x409,0x439)+'d']({'id':_0x556635,'sessionId':_0x4388f1,'message':_0x261f1d});}async['sendData'](_0x2ed572,_0x5d463c,_0x270384){const _0x2e5865={'role':_0x57cd0f(-0xf4,-0xef),'parts':[{'type':'data','data':_0x5d463c}]};function _0x57cd0f(_0x35ccaa,_0xbbd0f3){return _0x227d35(_0x35ccaa,_0xbbd0f3- -0x18b);}return this['messageSen'+'d']({'id':_0x2ed572,'sessionId':_0x270384,'message':_0x2e5865});}async[_0x227d35(0x57,0x8c)](_0x328d93){const _0x314e4e={'mWamF':_0x3a096b(0x4c3,0x4bb)};function _0x4cfc81(_0xbde758,_0x3685c7){return _0x15ca98(_0x3685c7,_0xbde758- -0x2c7);}function _0x3a096b(_0x1eb210,_0x46664b){return _0x15ca98(_0x46664b,_0x1eb210-0x25d);}return this[_0x3a096b(0x4c1,0x496)](_0x314e4e['mWamF'],_0x328d93);}async[_0x15ca98(0x295,0x26c)+'l'](_0x34505d){function _0x3c3a8d(_0x5bab97,_0x194ade){return _0x15ca98(_0x194ade,_0x5bab97- -0x1e3);}function _0xd0a478(_0x2c46cc,_0x14ccfd){return _0x15ca98(_0x14ccfd,_0x2c46cc- -0x1ba);}return this[_0xd0a478(0xaa,0xaf)](_0xd0a478(0x8f,0xc1)+'el',_0x34505d);}async[_0x15ca98(0x29b,0x285)+_0x227d35(0xbb,0xd7)](_0x146ee5,_0x28d03f){const _0x388d66={'fQIxT':_0xfeb639(-0x3,-0x13),'fdMNO':function(_0x51884,_0x55ae27){return _0x51884 instanceof _0x55ae27;},'hsBzD':function(_0xc9ba61,_0x11d5fc){return _0xc9ba61!==_0x11d5fc;}},_0x1463af=this[_0xfeb639(0x40,0xd)+'st'](_0xfeb639(-0x12,-0x2f)+_0x33c172(0x5ba,0x590),_0x146ee5);function _0xfeb639(_0xdbd943,_0x4a496a){return _0x15ca98(_0xdbd943,_0x4a496a- -0x29a);}const _0x24d670=new AbortController(),_0x16f247=setTimeout(()=>_0x24d670['abort'](),this[_0x33c172(0x4ed,0x524)]*0x3);function _0x33c172(_0x132e10,_0x1c97c0){return _0x15ca98(_0x132e10,_0x1c97c0-0x2e1);}try{const _0x12ecc6=await fetch(this['getEndpoin'+'t'](),{'method':_0x388d66['fQIxT'],'headers':this[_0x33c172(0x553,0x53e)](),'body':JSON[_0xfeb639(-0x25,-0x37)](_0x1463af),'signal':_0x24d670[_0xfeb639(-0x33,-0x22)]});if(!_0x12ecc6['ok'])throw new A2AProtocolError('Stream\x20req'+_0xfeb639(-0x1a,-0x42)+_0xfeb639(-0x47,-0x58)+_0x12ecc6[_0x33c172(0x5cc,0x593)],-0x7f5b);if(!_0x12ecc6[_0xfeb639(-0x61,-0x28)])throw new A2AProtocolError(_0xfeb639(0x2e,0x1e)+'e\x20body\x20for'+_0xfeb639(0x24,-0x1a),-0x7f5b);await this[_0x33c172(0x51c,0x53a)+_0xfeb639(-0x30,-0x5b)](_0x12ecc6[_0xfeb639(-0x3e,-0x28)],_0x28d03f);}catch(_0x9ef416){if('lmAzv'!==_0xfeb639(-0x12,0xa)){if(_0x388d66[_0xfeb639(-0x15,-0x3f)](_0x9ef416,A2AProtocolError))_0x388d66[_0x33c172(0x523,0x562)](_0x33c172(0x525,0x55d),_0xfeb639(-0x38,-0x1e))?(this[_0x33c172(0x58b,0x557)]=_0x5cc184,this[_0x33c172(0x548,0x524)]=_0x3469c8[_0xfeb639(-0x3e,-0x57)]??_0x2e0366):_0x28d03f[_0x33c172(0x57e,0x550)]?.(_0x9ef416);else{const _0xe43bfd=_0x9ef416 instanceof Error?_0x9ef416[_0xfeb639(-0x14,-0x47)]:String(_0x9ef416);_0x28d03f[_0xfeb639(-0x46,-0x2b)]?.(new A2AProtocolError(_0xfeb639(0x26,0x8)+_0x33c172(0x583,0x56b)+_0xe43bfd,-0x7f5b));}}else throw new _0x46512d(_0xfeb639(-0xe,0x1e)+_0x33c172(0x54e,0x58a)+'\x20streaming',-0x7f5b);}finally{clearTimeout(_0x16f247),_0x28d03f[_0x33c172(0x50d,0x53d)]?.();}}async[_0x15ca98(0x292,0x264)](_0x1bf2be,_0x499717){const _0x1f1108={'cZhbS':_0x159752(0x53f,0x552)+'el','eIxYd':function(_0x4ffee3,_0x4fe73e){return _0x4ffee3<=_0x4fe73e;},'AEyds':_0x159752(0x581,0x54a),'ySrpY':function(_0x4679dc,_0x2b8606){return _0x4679dc instanceof _0x2b8606;},'QuTPj':function(_0x590fb1,_0x4c2c17){return _0x590fb1*_0x4c2c17;}};function _0x1df019(_0x10b6b9,_0x43643f){return _0x15ca98(_0x43643f,_0x10b6b9- -0x216);}const _0x20c495=this[_0x1df019(0x91,0x90)+'st'](_0x1bf2be,_0x499717);function _0x159752(_0x57c081,_0x901dc8){return _0x15ca98(_0x57c081,_0x901dc8-0x309);}let _0x2d78a4=null;for(let _0x137c44=0x0;_0x1f1108['eIxYd'](_0x137c44,MAX_RETRIES);_0x137c44++){try{return await this[_0x1df019(0x4c,0x21)](_0x20c495);}catch(_0x2b48c2){if(_0x1f1108[_0x1df019(0xa4,0xac)]==='MDQmZ')return this[_0x1df019(0x4e,0x6e)](ScZict[_0x159752(0x597,0x592)],_0x72d9b8);else{_0x2d78a4=_0x1f1108[_0x1df019(0x4f,0x82)](_0x2b48c2,Error)?_0x2b48c2:new Error(String(_0x2b48c2));if(_0x2b48c2 instanceof A2AProtocolError&&!_0x2b48c2[_0x1df019(0x3f,0x2b)])throw _0x2b48c2;if(_0x137c44<MAX_RETRIES){const _0x2d2854=_0x1f1108['QuTPj'](RETRY_BASE_MS,Math[_0x1df019(0x2f,0x36)](0x2,_0x137c44));await new Promise(_0x3b7593=>setTimeout(_0x3b7593,_0x2d2854));}}}}throw _0x2d78a4??new A2AProtocolError(_0x159752(0x585,0x5a4)+'ror',-0x7f5b);}[_0x227d35(0xcc,0xca)+'st'](_0x50a528,_0x1664c7){function _0x28f7c3(_0x5e2ecb,_0x37c52a){return _0x15ca98(_0x5e2ecb,_0x37c52a- -0x35c);}function _0x5147ef(_0x1b7533,_0x39c818){return _0x15ca98(_0x39c818,_0x1b7533- -0x2b5);}const _0x5be93d={'ghcKw':'2.0'};return{'jsonrpc':_0x5be93d[_0x5147ef(-0x6d,-0x62)],'method':_0x50a528,'params':_0x1664c7,'id':++this[_0x28f7c3(-0x151,-0x115)]};}[_0x15ca98(0x276,0x24f)+'t'](){function _0x4dcaa8(_0x58ae19,_0x26a68f){return _0x15ca98(_0x26a68f,_0x58ae19-0x1fb);}return this['config']['baseUrl'][_0x4dcaa8(0x44d,0x40f)](/\/+$/,'')+('/a2a/jsonr'+'pc');}[_0x227d35(0x9b,0x80)](){function _0x186109(_0x2e22a8,_0x3b47a2){return _0x15ca98(_0x2e22a8,_0x3b47a2- -0xa1);}const _0x3bd568={'HpIQl':_0x5c5ac3(0x458,0x41b),'TqBVr':_0x186109(0x1ea,0x1e1)+_0x186109(0x1c1,0x1b6),'btxPK':function(_0x39cc6c,_0x3ef1be){return _0x39cc6c===_0x3ef1be;},'FTgXg':'AOhxK','QoFcX':_0x186109(0x1e8,0x212)},_0x302c59={'Content-Type':_0x3bd568[_0x5c5ac3(0x4a5,0x48b)],'Accept':_0x3bd568[_0x186109(0x21c,0x215)]};if(this[_0x5c5ac3(0x473,0x44b)][_0x186109(0x1eb,0x20c)]){if(_0x3bd568['btxPK'](_0x186109(0x1fc,0x1f7),_0x3bd568[_0x5c5ac3(0x48b,0x46b)])){const _0x103e10={'role':'user','parts':[{'type':bHPFRP[_0x5c5ac3(0x435,0x468)],'data':_0x3472f8}]};return this[_0x186109(0x1af,0x1e5)+'d']({'id':_0x7c3f60,'sessionId':_0x1392f6,'message':_0x103e10});}else _0x302c59[_0x3bd568['QoFcX']]=this[_0x5c5ac3(0x47d,0x44b)][_0x5c5ac3(0x45d,0x482)];}function _0x5c5ac3(_0x13110d,_0x2e805b){return _0x15ca98(_0x13110d,_0x2e805b-0x1d5);}return this['config'][_0x5c5ac3(0x480,0x47a)]&&(_0x302c59[_0x5c5ac3(0x3eb,0x415)+_0x5c5ac3(0x44b,0x46a)]='Bearer\x20'+this[_0x186109(0x1f9,0x1d5)][_0x5c5ac3(0x44d,0x47a)]),_0x302c59;}async[_0x15ca98(0x24f,0x262)](_0x42a63d){const _0x192dd2={'rSGWV':function(_0x189286,_0x3da235,_0xacf67b){return _0x189286(_0x3da235,_0xacf67b);},'eOCec':function(_0x175f40,_0x4185ee){return _0x175f40===_0x4185ee;},'muRJQ':function(_0x5bcd40,_0x2f8f69){return _0x5bcd40 instanceof _0x2f8f69;},'uGUkS':_0x29aafb(-0xaa,-0x77),'nZVhn':_0x29aafb(-0x96,-0x8a)+_0x29aafb(-0x9e,-0xa8)};function _0x29aafb(_0x3fcc95,_0x13cee7){return _0x15ca98(_0x13cee7,_0x3fcc95- -0x344);}const _0x232802=new AbortController(),_0x14aa00=setTimeout(()=>_0x232802['abort'](),this['timeout']);function _0x4d9449(_0x377ce8,_0x315815){return _0x15ca98(_0x377ce8,_0x315815- -0x447);}try{const _0x3fa1e7=await _0x192dd2[_0x29aafb(-0xd4,-0xc0)](fetch,this[_0x4d9449(-0x1da,-0x1f8)+'t'](),{'method':_0x29aafb(-0xbd,-0xf8),'headers':this[_0x4d9449(-0x21b,-0x1ea)](),'body':JSON['stringify'](_0x42a63d),'signal':_0x232802[_0x4d9449(-0x1fe,-0x1cf)]});if(_0x3fa1e7[_0x29aafb(-0x92,-0x82)]>=0x1f4)throw new A2AProtocolError(_0x29aafb(-0x106,-0x100)+_0x29aafb(-0xba,-0xd4)+_0x3fa1e7[_0x4d9449(-0x19c,-0x195)],-0x7f5b,undefined,!![]);if(_0x3fa1e7['status']===0x191||_0x3fa1e7[_0x29aafb(-0x92,-0xa3)]===0x193)throw new A2AProtocolError(_0x29aafb(-0xb3,-0x85)+_0x4d9449(-0x16f,-0x1a7)+'d:\x20'+_0x3fa1e7['status'],-0x7f5b,undefined,![]);const _0x1af7f1=await _0x3fa1e7[_0x29aafb(-0xa6,-0xdf)]();if(_0x1af7f1[_0x4d9449(-0x17b,-0x1ae)]){const _0x22dfd9=_0x192dd2['eOCec'](_0x1af7f1[_0x29aafb(-0xab,-0xbc)][_0x4d9449(-0x1d1,-0x1d3)],-0x7f5b);throw new A2AProtocolError(_0x1af7f1['error'][_0x4d9449(-0x204,-0x1f4)],_0x1af7f1[_0x4d9449(-0x1c3,-0x1ae)][_0x29aafb(-0xd0,-0x107)],_0x1af7f1[_0x29aafb(-0xab,-0x8c)][_0x29aafb(-0xfe,-0xe4)],_0x22dfd9);}return _0x1af7f1[_0x4d9449(-0x207,-0x1e0)];}catch(_0x517dd3){if(_0x517dd3 instanceof A2AProtocolError)throw _0x517dd3;const _0x10c209=_0x192dd2['muRJQ'](_0x517dd3,Error)?_0x517dd3[_0x4d9449(-0x210,-0x1f4)]:String(_0x517dd3);if(_0x10c209[_0x29aafb(-0x98,-0x5a)](_0x192dd2[_0x4d9449(-0x185,-0x1b7)]))throw new A2AProtocolError(_0x192dd2['nZVhn'],-0x7f5b,undefined,!![]);throw new A2AProtocolError('Network\x20er'+_0x29aafb(-0xca,-0xee)+_0x10c209,-0x7f5b,undefined,!![]);}finally{clearTimeout(_0x14aa00);}}async[_0x227d35(0xb1,0x7c)+_0x227d35(0x59,0x62)](_0x43f0d1,_0x581b61){const _0x34fc9f={'dUDim':'event:','lrqiQ':_0x34603d(0x290,0x29f),'YahiL':function(_0x5b4a37,_0x25851d){return _0x5b4a37&&_0x25851d;}},_0x1a1e8e=_0x43f0d1[_0x34603d(0x283,0x2a3)](),_0x116ac6=new TextDecoder();let _0x1662f3='';function _0x34603d(_0x483616,_0x1e0f4f){return _0x15ca98(_0x1e0f4f,_0x483616- -0x11);}let _0x1dcd85='',_0x32db8e='';function _0x1a0fc5(_0x53a184,_0x5f1adc){return _0x15ca98(_0x53a184,_0x5f1adc- -0x294);}try{while(!![]){const {done:_0x100af2,value:_0x1bff57}=await _0x1a1e8e['read']();if(_0x100af2)break;_0x1662f3+=_0x116ac6[_0x34603d(0x286,0x28b)](_0x1bff57,{'stream':!![]});const _0x19fe99=_0x1662f3[_0x1a0fc5(-0x74,-0x46)]('\x0a');_0x1662f3=_0x19fe99[_0x34603d(0x239,0x22f)]()??'';for(const _0x24c932 of _0x19fe99){if(_0x24c932[_0x1a0fc5(-0x1d,-0x15)](_0x34fc9f['dUDim']))_0x1dcd85=_0x24c932[_0x34603d(0x29f,0x29c)](0x6)[_0x1a0fc5(-0x13,-0x2)]();else{if(_0x24c932[_0x34603d(0x26e,0x242)](_0x1a0fc5(0x9,0x23)))_0x32db8e=_0x24c932[_0x1a0fc5(0x57,0x1c)](0x5)[_0x34603d(0x281,0x2b3)]();else{if(_0x24c932===''&&_0x1dcd85&&_0x32db8e){if('bdWZX'!==_0x34fc9f[_0x1a0fc5(-0xf,-0x23)]){if(_0x2b1515 instanceof _0x2d6c44)_0x360033[_0x34603d(0x25e,0x230)]?.(_0x1c7521);else{const _0x2d6dbb=_0x3a01a3 instanceof _0xf31a6d?_0x4cb29d[_0x1a0fc5(-0x55,-0x41)]:_0x395ba5(_0xe8ade6);_0x563104[_0x1a0fc5(-0x4,-0x25)]?.(new _0x3611dd(_0x1a0fc5(0xc,0xe)+_0x1a0fc5(-0x27,-0xa)+_0x2d6dbb,-0x7f5b));}}else this[_0x1a0fc5(-0x76,-0x50)+_0x1a0fc5(-0xc,-0x44)](_0x1dcd85,_0x32db8e,_0x581b61),_0x1dcd85='',_0x32db8e='';}}}}}_0x34fc9f['YahiL'](_0x1dcd85,_0x32db8e)&&this['dispatchSS'+_0x1a0fc5(-0x48,-0x44)](_0x1dcd85,_0x32db8e,_0x581b61);}finally{_0x1a1e8e[_0x34603d(0x24d,0x250)+'k']();}}[_0x15ca98(0x26e,0x244)+_0x227d35(0x94,0x73)](_0x5b98c3,_0x270cb0,_0x3df2b4){const _0x497df6={'CDElB':function(_0x34cff1,_0x4bb2ad){return _0x34cff1(_0x4bb2ad);},'dntPt':'Request\x20ti'+_0x492b48(0x262,0x278),'wauwD':_0x492b48(0x258,0x271)+'UpdateEven'+'t','fLERw':function(_0x25ac95,_0x45fcb7){return _0x25ac95!==_0x45fcb7;},'lydLR':_0x492b48(0x21c,0x23b),'WImoV':'kmvah','YvjpU':function(_0x3a8fe5,_0x3fe739){return _0x3a8fe5 instanceof _0x3fe739;},'bfikR':function(_0xaa879e,_0x39eaa2){return _0xaa879e(_0x39eaa2);}};function _0x2aae04(_0x3f7338,_0x487da7){return _0x15ca98(_0x487da7,_0x3f7338- -0x2b2);}function _0x492b48(_0x2780f1,_0x39478c){return _0x15ca98(_0x39478c,_0x2780f1- -0x44);}try{const _0x53b91b=JSON[_0x2aae04(-0x4a,-0x2b)](_0x270cb0);if(_0x5b98c3===_0x497df6['wauwD']){const _0xb29cb3=_0x53b91b;_0x3df2b4[_0x492b48(0x207,0x23b)+_0x492b48(0x275,0x282)]?.(_0xb29cb3),_0xb29cb3[_0x2aae04(-0x58,-0x39)]&&_0x3df2b4['onComplete']?.();}else{if(_0x5b98c3==='TaskArtifa'+_0x492b48(0x23f,0x23b)+'ent'){if(_0x497df6[_0x2aae04(-0x15,-0xc)](_0x497df6[_0x492b48(0x212,0x224)],_0x497df6[_0x492b48(0x212,0x1f6)])){if(_0x496742 instanceof _0x44f619)throw _0x11ecc4;const _0x8bba98=_0x50575a instanceof _0x5ac1ad?_0x5808e1[_0x2aae04(-0x5f,-0x3d)]:yKcghN[_0x2aae04(-0x3f,-0x45)](_0x167207,_0x2c8cbb);if(_0x8bba98[_0x492b48(0x268,0x257)](_0x492b48(0x256,0x254)))throw new _0x317828(yKcghN[_0x492b48(0x229,0x1ff)],-0x7f5b,_0x3f4351,!![]);throw new _0x430275(_0x2aae04(-0x53,-0x2b)+_0x492b48(0x236,0x239)+_0x8bba98,-0x7f5b,_0x1ac5b5,!![]);}else{const _0x565685=_0x53b91b;_0x3df2b4[_0x492b48(0x240,0x203)+_0x492b48(0x25f,0x228)]?.(_0x565685);}}}}catch(_0x340529){if(_0x497df6[_0x492b48(0x259,0x259)](_0x497df6[_0x2aae04(-0x25,-0x1d)],_0x2aae04(-0x1,-0x11)))throw new _0xfb24f0(yKcghN['dntPt'],-0x7f5b,_0x4198fc,!![]);else{const _0x2ca2f6=_0x497df6['YvjpU'](_0x340529,Error)?_0x340529[_0x492b48(0x20f,0x242)]:_0x497df6[_0x2aae04(-0x3d,0x1)](String,_0x340529);_0x3df2b4[_0x492b48(0x22b,0x1fd)]?.(new Error(_0x2aae04(-0xa,0x1d)+'error:\x20'+_0x2ca2f6));}}}}export class A2AProtocolError extends Error{[_0x15ca98(0x2a1,0x274)];[_0x227d35(0x7a,0x69)];[_0x15ca98(0x285,0x255)];constructor(_0x7e8877,_0x93ef4c,_0x5b9eea,_0x3c9b08=![]){function _0xd8fe89(_0x52811e,_0x3f3e3d){return _0x227d35(_0x3f3e3d,_0x52811e-0x250);}const _0x17ddcc={'Kwjmm':_0xd8fe89(0x302,0x2e2)},_0x2fddee=_0x17ddcc[_0x4e72a6(0x126,0x14c)][_0x4e72a6(0xf7,0xbd)]('|');function _0x4e72a6(_0x38bd66,_0x427879){return _0x227d35(_0x427879,_0x38bd66-0x86);}let _0xfdb2b3=0x0;while(!![]){switch(_0x2fddee[_0xfdb2b3++]){case'0':super(_0x7e8877);continue;case'1':this[_0xd8fe89(0x2c7,0x293)]=_0xd8fe89(0x31d,0x35c)+'lError';continue;case'2':this[_0xd8fe89(0x2e7,0x305)]=_0x93ef4c;continue;case'3':this['data']=_0x5b9eea;continue;case'4':this[_0x4e72a6(0xfe,0xde)]=_0x3c9b08;continue;}break;}}}
@@ -1,115 +1 @@
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
1
+ function _0xf259c2(_0x309aa0,_0x1cc8ef){return _0xef41(_0x309aa0- -0xd8,_0x1cc8ef);}(function(_0x3d3516,_0x418c7a){function _0x58717f(_0x324a3b,_0x478497){return _0xef41(_0x478497- -0x3df,_0x324a3b);}function _0x85f859(_0x4d4587,_0x437373){return _0xef41(_0x437373-0x32a,_0x4d4587);}const _0x1cfd41=_0x3d3516();while(!![]){try{const _0x4be569=parseInt(_0x85f859(0x418,0x40d))/0x1*(-parseInt(_0x58717f(-0x307,-0x2eb))/0x2)+-parseInt(_0x85f859(0x431,0x41a))/0x3*(parseInt(_0x58717f(-0x2df,-0x2f4))/0x4)+-parseInt(_0x58717f(-0x304,-0x2e7))/0x5*(-parseInt(_0x85f859(0x456,0x43c))/0x6)+-parseInt(_0x58717f(-0x304,-0x2f0))/0x7+parseInt(_0x58717f(-0x2fe,-0x2e8))/0x8+parseInt(_0x58717f(-0x2ec,-0x2d5))/0x9+parseInt(_0x58717f(-0x2ad,-0x2c5))/0xa*(parseInt(_0x58717f(-0x2dd,-0x2c1))/0xb);if(_0x4be569===_0x418c7a)break;else _0x1cfd41['push'](_0x1cfd41['shift']());}catch(_0x3fe619){_0x1cfd41['push'](_0x1cfd41['shift']());}}}(_0x41de,0xb9858));function _0xef41(_0x38cb86,_0x1db1f6){_0x38cb86=_0x38cb86-0xe1;const _0x41defa=_0x41de();let _0xef417=_0x41defa[_0x38cb86];if(_0xef41['vexpzu']===undefined){var _0x501e0b=function(_0x221457){const _0x36bd97='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1a2dcf='',_0x5870a0='';for(let _0x4ed54f=0x0,_0x5b1681,_0x5737e4,_0x31239a=0x0;_0x5737e4=_0x221457['charAt'](_0x31239a++);~_0x5737e4&&(_0x5b1681=_0x4ed54f%0x4?_0x5b1681*0x40+_0x5737e4:_0x5737e4,_0x4ed54f++%0x4)?_0x1a2dcf+=String['fromCharCode'](0xff&_0x5b1681>>(-0x2*_0x4ed54f&0x6)):0x0){_0x5737e4=_0x36bd97['indexOf'](_0x5737e4);}for(let _0x1be314=0x0,_0x563bd5=_0x1a2dcf['length'];_0x1be314<_0x563bd5;_0x1be314++){_0x5870a0+='%'+('00'+_0x1a2dcf['charCodeAt'](_0x1be314)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5870a0);};_0xef41['qdDiUC']=_0x501e0b,_0xef41['mWvCzG']={},_0xef41['vexpzu']=!![];}const _0x35bb2e=_0x41defa[0x0],_0x315400=_0x38cb86+_0x35bb2e,_0x3d3ebb=_0xef41['mWvCzG'][_0x315400];return!_0x3d3ebb?(_0xef417=_0xef41['qdDiUC'](_0xef417),_0xef41['mWvCzG'][_0x315400]=_0xef417):_0xef417=_0x3d3ebb,_0xef417;}const DEFAULT_TIMEOUT=0x2710,DEFAULT_CACHE_TTL=0x5*0x3c*0x3e8;export class AgentDiscovery{[_0xf259c2(0x2f,0x1d)]=new Map();['timeout'];['cacheTtlMs'];constructor(_0x4a3dbc){function _0xc7b798(_0x49120b,_0x3a2c24){return _0xf259c2(_0x3a2c24-0x3cd,_0x49120b);}function _0x8c014b(_0xfbaf08,_0x177375){return _0xf259c2(_0x177375- -0x20a,_0xfbaf08);}this[_0x8c014b(-0x1c6,-0x1d1)]=_0x4a3dbc?.[_0x8c014b(-0x1cc,-0x1d1)]??DEFAULT_TIMEOUT,this[_0xc7b798(0x408,0x408)]=_0x4a3dbc?.[_0x8c014b(-0x1e1,-0x1cf)]??DEFAULT_CACHE_TTL;}async['discover'](_0x1e8e13){const _0x9e639={'SaKHT':_0x51abe6(0x408,0x42c)+_0x25e793(-0x2c8,-0x2c3)+_0x51abe6(0x3fc,0x415)+_0x51abe6(0x401,0x41b)+'n','dqZLu':function(_0x5f0bd4,_0x29b9ae){return _0x5f0bd4-_0x29b9ae;},'eXTvQ':function(_0x1f2913,_0x29f7a7){return _0x1f2913!==_0x29f7a7;},'dRBdo':_0x51abe6(0x3f1,0x3de),'MwILl':function(_0x21a054,_0x2aaffc,_0x1cbe39){return _0x21a054(_0x2aaffc,_0x1cbe39);},'AGIJU':_0x51abe6(0x412,0x40f),'SkPcQ':function(_0x1cee3f,_0x1a67f3,_0x413b48){return _0x1cee3f(_0x1a67f3,_0x413b48);},'xbIXH':'applicatio'+_0x25e793(-0x2bf,-0x2bf),'XWAUG':function(_0x2520ad,_0x2bf9f8){return _0x2520ad instanceof _0x2bf9f8;},'zcFqe':function(_0x30652a,_0x41bf51){return _0x30652a(_0x41bf51);}},_0x5920ac=_0x1e8e13[_0x25e793(-0x2c9,-0x2be)](/\/+$/,''),_0x4fe1d4=this['cache'][_0x51abe6(0x41b,0x405)](_0x5920ac);if(_0x4fe1d4&&_0x9e639[_0x51abe6(0x422,0x40d)](Date[_0x25e793(-0x2b7,-0x2b3)](),_0x4fe1d4[_0x25e793(-0x28c,-0x2b1)])<this['cacheTtlMs'])return _0x9e639[_0x51abe6(0x407,0x412)](_0x9e639[_0x25e793(-0x2ab,-0x2a4)],_0x9e639['dRBdo'])?(this[_0x25e793(-0x2c3,-0x2ba)][_0x51abe6(0x3e0,0x3c7)](_0x2f98e3),null):_0x4fe1d4[_0x25e793(-0x2df,-0x2d5)];function _0x25e793(_0x213079,_0xdc5293){return _0xf259c2(_0xdc5293- -0x2e9,_0x213079);}const _0x58f4ff=_0x5920ac+(_0x51abe6(0x3fa,0x3ef)+_0x51abe6(0x3f6,0x3eb)+_0x51abe6(0x400,0x41c));function _0x51abe6(_0x372669,_0x3d764a){return _0xf259c2(_0x372669-0x3d3,_0x3d764a);}const _0x2d2626=new AbortController(),_0x8e34f2=_0x9e639[_0x25e793(-0x2b4,-0x2d8)](setTimeout,()=>_0x2d2626[_0x25e793(-0x280,-0x298)](),this[_0x51abe6(0x40c,0x3ff)]);try{if(_0x51abe6(0x412,0x3f4)===_0x9e639[_0x25e793(-0x2ad,-0x29c)]){const _0x47a5a4=await _0x9e639['SkPcQ'](fetch,_0x58f4ff,{'method':_0x51abe6(0x404,0x3f8),'headers':{'Accept':_0x9e639[_0x51abe6(0x416,0x408)]},'signal':_0x2d2626[_0x25e793(-0x2bb,-0x2a9)]});if(!_0x47a5a4['ok'])throw new AgentDiscoveryError(_0x51abe6(0x408,0x3fe)+_0x51abe6(0x41c,0x42b)+_0x51abe6(0x3dd,0x3f1)+_0x47a5a4['status']+'\x20'+_0x47a5a4[_0x51abe6(0x41e,0x418)],_0x5920ac);const _0x3822cc=await _0x47a5a4[_0x51abe6(0x425,0x434)]();return this[_0x25e793(-0x2b9,-0x2c8)+'rd'](_0x3822cc),this[_0x25e793(-0x2d5,-0x2ba)][_0x25e793(-0x2c2,-0x2d4)](_0x5920ac,{'card':_0x3822cc,'fetchedAt':Date['now']()}),_0x3822cc;}else throw new _0x92b44d(_0x9e639[_0x51abe6(0x3ff,0x416)],'');}catch(_0x456e6b){if(_0x9e639[_0x51abe6(0x3fb,0x405)](_0x456e6b,AgentDiscoveryError))throw _0x456e6b;const _0x61cd41=_0x456e6b instanceof Error?_0x456e6b['message']:_0x9e639['zcFqe'](String,_0x456e6b);throw new AgentDiscoveryError(_0x25e793(-0x296,-0x2b4)+'discovery\x20'+_0x51abe6(0x3f0,0x3e7)+_0x61cd41,_0x5920ac);}finally{clearTimeout(_0x8e34f2);}}[_0xf259c2(0x25,0x3e)](_0x19fa84){const _0x30dd27={'gyzBA':function(_0x4f9877,_0x57ceca){return _0x4f9877>=_0x57ceca;},'hopnM':'oweDn','TqkYm':'bMEBq'};function _0x31a351(_0x4f687b,_0x272fce){return _0xf259c2(_0x272fce- -0x30d,_0x4f687b);}const _0x26e2f2=_0x19fa84['replace'](/\/+$/,'');function _0x2d7646(_0x5bd960,_0x1193d4){return _0xf259c2(_0x5bd960- -0x31,_0x1193d4);}const _0x57d0e5=this['cache'][_0x31a351(-0x2e7,-0x2c5)](_0x26e2f2);if(!_0x57d0e5)return null;if(_0x30dd27['gyzBA'](Date[_0x2d7646(0x5,-0x1e)]()-_0x57d0e5['fetchedAt'],this[_0x31a351(-0x2f1,-0x2d2)])){if(_0x30dd27[_0x2d7646(-0x18,-0x2c)]!==_0x30dd27[_0x31a351(-0x2d1,-0x2da)])return this['cache'][_0x31a351(-0x321,-0x300)](_0x26e2f2),null;else _0x177fac(_0x1d5834);}return _0x57d0e5[_0x31a351(-0x2e5,-0x2f9)];}['hasSkill'](_0x9e99d4,_0x5e3ada){function _0xebdd0a(_0x1acc89,_0x542f05){return _0xf259c2(_0x542f05-0x457,_0x1acc89);}function _0x47244c(_0x1e45c4,_0x255f1f){return _0xf259c2(_0x255f1f- -0x67,_0x1e45c4);}return _0x9e99d4[_0xebdd0a(0x481,0x47b)][_0x47244c(-0x6,-0x1d)](_0xa24ba9=>_0xa24ba9['id']===_0x5e3ada);}[_0xf259c2(0x47,0x52)+'ByTag'](_0x243281,_0x168b38){function _0x2801fc(_0x4ab2f1,_0x1b8a52){return _0x2adc27(_0x4ab2f1- -0x62f,_0x1b8a52);}function _0x8d47b2(_0x37e2a9,_0x504abf){return _0x2adc27(_0x504abf- -0x4f4,_0x37e2a9);}return _0x243281[_0x2801fc(-0x155,-0x13d)][_0x8d47b2(-0x1f,0x0)](_0x25acc2=>_0x25acc2[_0x2801fc(-0x142,-0x15f)]?.[_0x8d47b2(-0x17,-0x2e)](_0x168b38));}[_0x2adc27(0x502,0x50b)](_0x149277){function _0x1accad(_0x1fba36,_0x5c96bf){return _0xf259c2(_0x5c96bf-0x89,_0x1fba36);}const _0x337207={'XFJJn':_0x5c0a9d(-0x4f,-0x5d)};function _0x5c0a9d(_0x3444f1,_0x535f6c){return _0xf259c2(_0x3444f1- -0x58,_0x535f6c);}if(_0x149277)this[_0x5c0a9d(-0x29,-0x3b)][_0x1accad(0x7c,0x96)](_0x149277[_0x1accad(0xa0,0xb4)](/\/+$/,''));else{if(_0x337207[_0x5c0a9d(-0x49,-0x5a)]===_0x5c0a9d(-0x4f,-0x6e))this[_0x1accad(0xbd,0xb8)][_0x1accad(0x8d,0x95)]();else return _0x12a81c[_0x1accad(0xab,0xad)]['some'](_0x5c2df2=>_0x5c2df2['id']===_0x567f42);}}[_0xf259c2(0x21,0x17)+'rd'](_0xfd39f0){function _0x98c69f(_0x26e080,_0x15da84){return _0x2adc27(_0x26e080- -0x638,_0x15da84);}const _0x484a1b={'LoSYK':function(_0x357e69,_0x41a497){return _0x357e69!==_0x41a497;},'KexDS':_0x3461f5(0x91,0x93)+_0x3461f5(0x8d,0x84)+'quired\x20fie'+_0x3461f5(0x97,0x79),'tVqHN':_0x3461f5(0x93,0x9f),'MsHXA':'AgentCard\x20'+'missing\x20re'+'quired\x20fie'+_0x3461f5(0xa0,0x8c)+'n','pbIiI':'AgentCard\x20'+_0x98c69f(-0x15c,-0x17d)+_0x98c69f(-0x159,-0x166)+_0x3461f5(0x71,0x6c)};if(!_0xfd39f0['name']||_0x484a1b[_0x3461f5(0x5a,0x70)](typeof _0xfd39f0['name'],'string'))throw new AgentDiscoveryError(_0x484a1b[_0x3461f5(0xc6,0xa2)],'');if(!_0xfd39f0[_0x3461f5(0xa0,0xac)]||typeof _0xfd39f0[_0x3461f5(0xb5,0xac)]!==_0x484a1b[_0x3461f5(0x79,0x80)])throw new AgentDiscoveryError(_0x98c69f(-0x14d,-0x13d)+_0x98c69f(-0x15c,-0x144)+'quired\x20fie'+_0x3461f5(0xa7,0xae),'');function _0x3461f5(_0x16ada6,_0x453760){return _0x2adc27(_0x453760- -0x458,_0x16ada6);}if(!_0xfd39f0[_0x3461f5(0x78,0x9b)]||typeof _0xfd39f0[_0x3461f5(0x92,0x9b)]!==_0x484a1b[_0x98c69f(-0x160,-0x177)])throw new AgentDiscoveryError(_0x484a1b[_0x98c69f(-0x152,-0x139)],'');if(!Array['isArray'](_0xfd39f0['skills']))throw new AgentDiscoveryError(_0x484a1b['pbIiI'],'');}}function _0x2adc27(_0x247fbf,_0x180893){return _0xef41(_0x247fbf-0x3de,_0x180893);}export class AgentDiscoveryError extends Error{['agentUrl'];constructor(_0x47a557,_0x3216d7){function _0x21905e(_0x5138b6,_0x5c4e2f){return _0xf259c2(_0x5138b6-0x1b7,_0x5c4e2f);}const _0x310f80={'tOuBE':_0x817b68(0x2c7,0x2b4)+'veryError'};function _0x817b68(_0x3ec701,_0x119d13){return _0xf259c2(_0x3ec701-0x28b,_0x119d13);}super(_0x47a557),this['name']=_0x310f80[_0x817b68(0x2a5,0x2bc)],this[_0x21905e(0x1cd,0x1ee)]=_0x3216d7;}}function _0x41de(){const _0xfe090a=['txniwee','r0vu','odiWnJCXm0XTDLnjra','vhfRww0','zvHuDLe','qwDLBNrdyxjKia','BM93','DgfNCW','zMv0y2HLzef0','DgLTzw91Da','mty2nZKXmfvfEeTdrq','y2fJAgvuDgXnCW','qwDLBNreAxnJBW','DMvYC2LVBG','zMLSDgvY','rNLrzfi','C2LNBMfS','C3rYAw5N','mtbND0rSENm','EgjjweG','s2v4rfm','zfjczg8','odCZndu4m25dyvPrrG','zMLUzfnRAwXSCW','z2v0','zMv0y2GGzMfPBa','C29Tzq','C3rHDhvZvgv4Da','Aw52ywXPzgf0zq','quDjsLu','DxjS','zhfAthu','Bgq6ihvYBa','ywjVCNq','ANnVBG','Ce9jwfO','zwq6ia','nJnjuuLIyLe','y2XLyxi','zgvSzxrL','Bgq6ihnRAwXSCW','wezksM4','Aw5JBhvKzxm','txDjtgW','tg9twuS','nhjzzK5vBW','y2fYza','C2v0','ywDLBNrvCMW','ote0nZGZoffPCLnetG','otaWodC5yLflD3zH','Ag9WBK0','De91qKu','Bgq6ig5HBwu','mtq0ndrdtw1mrxi','zMfPBgvKoIa','y1DAt2W','mZmYnZjLBMjdBuy','mJbkBe90wNG','DMfSAwrHDgvdyq','DfzXse4','D24VywDLBNqUAG','C2TPBgXZ','z2v0q2fJAgvK','BwLZC2LUzYbYzq','lY53zwXSlwTUBW','wfDbvuC','CxvPCMvKigzPzq','BI9QC29U','CMvWBgfJzq','u2flsfq','C29U','Bgq6ihzLCNnPBW','y2fJAgu'];_0x41de=function(){return _0xfe090a;};return _0x41de();}
package/dist/a2a/index.js CHANGED
@@ -1,8 +1 @@
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
1
+ function _0x2fe5(){var _0x2e2090=['mJy4mJi4mhHIz2TRza','nefgwMjlEa','mtGYmZG4mtbRvMPAr04','mtfezu1juvO','mte5vwDnwvfs','nta2nZKWmeHntNj1tW','mJa2ntq4rMjiyNrH','nJm2mZu3nLjgBfLYwG','mZn0Chb1v2i','ntmXndC2ru9lrwL1','nde2ohPPAerSEa'];_0x2fe5=function(){return _0x2e2090;};return _0x2fe5();}(function(_0x1ce582,_0x5814a2){function _0x482a48(_0x9c4d9,_0x3a4f4e){return _0xcf58(_0x3a4f4e-0x29d,_0x9c4d9);}var _0x5acc7d=_0x1ce582();function _0x2fdc36(_0x2251d4,_0x14ed38){return _0xcf58(_0x14ed38- -0x101,_0x2251d4);}while(!![]){try{var _0x5c78ac=-parseInt(_0x2fdc36(-0x25,-0x1f))/0x1+parseInt(_0x2fdc36(-0x20,-0x22))/0x2*(-parseInt(_0x2fdc36(-0x1f,-0x20))/0x3)+parseInt(_0x2fdc36(-0x28,-0x27))/0x4*(parseInt(_0x482a48(0x379,0x376))/0x5)+parseInt(_0x482a48(0x380,0x37b))/0x6+-parseInt(_0x2fdc36(-0x1f,-0x24))/0x7*(parseInt(_0x482a48(0x385,0x380))/0x8)+-parseInt(_0x482a48(0x380,0x37d))/0x9+parseInt(_0x2fdc36(-0x28,-0x26))/0xa*(parseInt(_0x2fdc36(-0x22,-0x25))/0xb);if(_0x5c78ac===_0x5814a2)break;else _0x5acc7d['push'](_0x5acc7d['shift']());}catch(_0x3cfe72){_0x5acc7d['push'](_0x5acc7d['shift']());}}}(_0x2fe5,0xc8948));function _0xcf58(_0x223712,_0x29d6f4){_0x223712=_0x223712-0xd9;var _0x2fe558=_0x2fe5();var _0xcf5816=_0x2fe558[_0x223712];if(_0xcf58['RUWfjI']===undefined){var _0x8485ec=function(_0x5f4692){var _0x49298f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x4c767b='',_0x20444b='';for(var _0xeb99c5=0x0,_0x3f4133,_0x48328d,_0x2f6e75=0x0;_0x48328d=_0x5f4692['charAt'](_0x2f6e75++);~_0x48328d&&(_0x3f4133=_0xeb99c5%0x4?_0x3f4133*0x40+_0x48328d:_0x48328d,_0xeb99c5++%0x4)?_0x4c767b+=String['fromCharCode'](0xff&_0x3f4133>>(-0x2*_0xeb99c5&0x6)):0x0){_0x48328d=_0x49298f['indexOf'](_0x48328d);}for(var _0x1b2bfa=0x0,_0x2b4bbc=_0x4c767b['length'];_0x1b2bfa<_0x2b4bbc;_0x1b2bfa++){_0x20444b+='%'+('00'+_0x4c767b['charCodeAt'](_0x1b2bfa)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x20444b);};_0xcf58['CROxEE']=_0x8485ec,_0xcf58['CVWCIf']={},_0xcf58['RUWfjI']=!![];}var _0x161e2b=_0x2fe558[0x0],_0x37c364=_0x223712+_0x161e2b,_0x138ba9=_0xcf58['CVWCIf'][_0x37c364];return!_0x138ba9?(_0xcf5816=_0xcf58['CROxEE'](_0xcf5816),_0xcf58['CVWCIf'][_0x37c364]=_0xcf5816):_0xcf5816=_0x138ba9,_0xcf5816;}export{A2AProtocolClient,A2AProtocolError}from'./client.js';export{AgentDiscovery,AgentDiscoveryError}from'./discovery.js';export{JSONRPCErrorCode,TaskState,TERMINAL_STATES,EventType}from'./types.js';
package/dist/a2a/types.js CHANGED
@@ -1,42 +1 @@
1
- /**
2
- * A2A Protocol TypeScript Types
3
- * Google A2A Protocol RC v1.0 준수
4
- */
5
- export var JSONRPCErrorCode;
6
- (function (JSONRPCErrorCode) {
7
- // Standard JSON-RPC 2.0
8
- JSONRPCErrorCode[JSONRPCErrorCode["PARSE_ERROR"] = -32700] = "PARSE_ERROR";
9
- JSONRPCErrorCode[JSONRPCErrorCode["INVALID_REQUEST"] = -32600] = "INVALID_REQUEST";
10
- JSONRPCErrorCode[JSONRPCErrorCode["METHOD_NOT_FOUND"] = -32601] = "METHOD_NOT_FOUND";
11
- JSONRPCErrorCode[JSONRPCErrorCode["INVALID_PARAMS"] = -32602] = "INVALID_PARAMS";
12
- JSONRPCErrorCode[JSONRPCErrorCode["INTERNAL_ERROR"] = -32603] = "INTERNAL_ERROR";
13
- // A2A Protocol Custom
14
- JSONRPCErrorCode[JSONRPCErrorCode["TASK_NOT_FOUND"] = -32001] = "TASK_NOT_FOUND";
15
- JSONRPCErrorCode[JSONRPCErrorCode["TASK_NOT_CANCELABLE"] = -32002] = "TASK_NOT_CANCELABLE";
16
- JSONRPCErrorCode[JSONRPCErrorCode["PUSH_NOTIFICATION_NOT_SUPPORTED"] = -32003] = "PUSH_NOTIFICATION_NOT_SUPPORTED";
17
- JSONRPCErrorCode[JSONRPCErrorCode["UNSUPPORTED_OPERATION"] = -32004] = "UNSUPPORTED_OPERATION";
18
- JSONRPCErrorCode[JSONRPCErrorCode["CONTENT_TYPE_NOT_SUPPORTED"] = -32005] = "CONTENT_TYPE_NOT_SUPPORTED";
19
- JSONRPCErrorCode[JSONRPCErrorCode["INVALID_AGENT_CARD"] = -32006] = "INVALID_AGENT_CARD";
20
- })(JSONRPCErrorCode || (JSONRPCErrorCode = {}));
21
- // ─── Task ───────────────────────────────────────────────────
22
- export var TaskState;
23
- (function (TaskState) {
24
- TaskState["SUBMITTED"] = "submitted";
25
- TaskState["WORKING"] = "working";
26
- TaskState["INPUT_REQUIRED"] = "input-required";
27
- TaskState["COMPLETED"] = "completed";
28
- TaskState["FAILED"] = "failed";
29
- TaskState["CANCELED"] = "canceled";
30
- })(TaskState || (TaskState = {}));
31
- export const TERMINAL_STATES = new Set([
32
- TaskState.COMPLETED,
33
- TaskState.FAILED,
34
- TaskState.CANCELED,
35
- ]);
36
- // ─── SSE Events ─────────────────────────────────────────────
37
- export var EventType;
38
- (function (EventType) {
39
- EventType["TASK_STATUS_UPDATE"] = "TaskStatusUpdateEvent";
40
- EventType["TASK_ARTIFACT_UPDATE"] = "TaskArtifactUpdateEvent";
41
- })(EventType || (EventType = {}));
42
- //# sourceMappingURL=types.js.map
1
+ (function(_0x4ce2e0,_0x43d40c){function _0x3d13af(_0x4dc6e8,_0x3a77a6){return _0xe1b4(_0x3a77a6- -0x32a,_0x4dc6e8);}var _0x4d7a75=_0x4ce2e0();function _0x3bc157(_0x3a74cf,_0x23da1b){return _0xe1b4(_0x3a74cf-0x180,_0x23da1b);}while(!![]){try{var _0x12f08c=-parseInt(_0x3bc157(0x249,0x259))/0x1*(-parseInt(_0x3bc157(0x275,0x281))/0x2)+parseInt(_0x3d13af(-0x23a,-0x236))/0x3*(-parseInt(_0x3bc157(0x261,0x27b))/0x4)+-parseInt(_0x3d13af(-0x284,-0x266))/0x5+parseInt(_0x3d13af(-0x220,-0x22c))/0x6*(-parseInt(_0x3bc157(0x248,0x267))/0x7)+parseInt(_0x3d13af(-0x25f,-0x265))/0x8*(parseInt(_0x3d13af(-0x26c,-0x24e))/0x9)+-parseInt(_0x3d13af(-0x247,-0x23c))/0xa+-parseInt(_0x3d13af(-0x222,-0x233))/0xb*(-parseInt(_0x3d13af(-0x246,-0x264))/0xc);if(_0x12f08c===_0x43d40c)break;else _0x4d7a75['push'](_0x4d7a75['shift']());}catch(_0xa8289e){_0x4d7a75['push'](_0x4d7a75['shift']());}}}(_0xbef2,0x85c19));export var JSONRPCErrorCode;(function(_0x3dd38a){var _0x18c5ab={'VaozT':_0x2afc70(-0x143,-0x146)+'R','KIIiA':'INVALID_RE'+_0x2afc70(-0x13e,-0x159),'GLbMe':_0xd13ce9(-0x1c6,-0x1de)+_0x2afc70(-0x160,-0x15d),'HgjwV':'INVALID_PA'+_0xd13ce9(-0x206,-0x1f9),'AFCEn':_0xd13ce9(-0x202,-0x1fe)+'RROR','IfMxc':_0xd13ce9(-0x1e4,-0x1e6)+_0x2afc70(-0x170,-0x181),'XBVhh':'PUSH_NOTIF'+'ICATION_NO'+_0xd13ce9(-0x1e7,-0x1dd)+'D','fYzXM':_0xd13ce9(-0x1de,-0x1cf)+_0x2afc70(-0x150,-0x147)+'N','tEtQi':'CONTENT_TY'+_0xd13ce9(-0x1dd,-0x1f5)+_0x2afc70(-0x13c,-0x155),'dMrNg':_0xd13ce9(-0x1f4,-0x1f3)+_0x2afc70(-0x15b,-0x175)};_0x3dd38a[_0x3dd38a[_0x2afc70(-0x160,-0x146)+'R']=-0x7fbc]=_0x18c5ab['VaozT'],_0x3dd38a[_0x3dd38a[_0xd13ce9(-0x1e6,-0x1ed)+_0xd13ce9(-0x1c3,-0x1db)]=-0x7f58]=_0x18c5ab[_0xd13ce9(-0x1d5,-0x1d8)];function _0xd13ce9(_0x917ff5,_0x19bfa1){return _0xe1b4(_0x19bfa1- -0x2ca,_0x917ff5);}_0x3dd38a[_0x3dd38a[_0x18c5ab[_0xd13ce9(-0x1d1,-0x1f0)]]=-0x7f59]=_0x2afc70(-0x175,-0x15c)+'_FOUND',_0x3dd38a[_0x3dd38a[_0x18c5ab[_0x2afc70(-0x156,-0x157)]]=-0x7f5a]=_0x2afc70(-0x165,-0x160)+_0xd13ce9(-0x1e7,-0x1f9),_0x3dd38a[_0x3dd38a[_0x2afc70(-0x176,-0x17c)+_0x2afc70(-0x128,-0x148)]=-0x7f5b]=_0x18c5ab[_0x2afc70(-0x185,-0x169)],_0x3dd38a[_0x3dd38a[_0xd13ce9(-0x1b8,-0x1d2)+_0xd13ce9(-0x20c,-0x1f8)]=-0x7d01]=_0xd13ce9(-0x1d0,-0x1d2)+_0xd13ce9(-0x203,-0x1f8),_0x3dd38a[_0x3dd38a[_0x18c5ab[_0xd13ce9(-0x1f4,-0x1ff)]]=-0x7d02]=_0x18c5ab[_0x2afc70(-0x17b,-0x17d)];function _0x2afc70(_0x913695,_0x3c263c){return _0xe1b4(_0x3c263c- -0x248,_0x913695);}_0x3dd38a[_0x3dd38a[_0xd13ce9(-0x1fc,-0x1ea)+'ICATION_NO'+'T_SUPPORTE'+'D']=-0x7d03]=_0x18c5ab[_0xd13ce9(-0x20e,-0x1fa)],_0x3dd38a[_0x3dd38a[_0x2afc70(-0x159,-0x14d)+'D_OPERATIO'+'N']=-0x7d04]=_0x18c5ab['fYzXM'],_0x3dd38a[_0x3dd38a[_0xd13ce9(-0x1e5,-0x1ef)+_0xd13ce9(-0x1d6,-0x1f5)+_0x2afc70(-0x148,-0x155)]=-0x7d05]=_0x18c5ab[_0xd13ce9(-0x1e3,-0x1f6)],_0x3dd38a[_0x3dd38a[_0x18c5ab['dMrNg']]=-0x7d06]=_0x2afc70(-0x170,-0x171)+_0x2afc70(-0x174,-0x175);}(JSONRPCErrorCode||(JSONRPCErrorCode={})));export var TaskState;(function(_0x3e0bac){function _0x5a68e2(_0x3c049b,_0x305c09){return _0xe1b4(_0x3c049b- -0x27a,_0x305c09);}var _0x3d2b7e={'yuYvy':_0x3be387(-0x13,-0x20)+'3','LMADv':'completed','xuqFc':_0x3be387(-0x49,-0x3a),'NfJzw':_0x3be387(0x1,-0x17),'SlHlQ':'FAILED','axlvx':_0x3be387(-0x23,-0x41)},_0x5ccb0c=_0x3d2b7e[_0x3be387(-0xb,-0x29)]['split']('|'),_0x45b725=0x0;function _0x3be387(_0x372155,_0x2982f6){return _0xe1b4(_0x2982f6- -0x110,_0x372155);}while(!![]){switch(_0x5ccb0c[_0x45b725++]){case'0':_0x3e0bac[_0x3be387(-0x22,-0x14)+'IRED']=_0x5a68e2(-0x19c,-0x195)+_0x3be387(-0x19,-0x2a);continue;case'1':_0x3e0bac[_0x3be387(-0x35,-0x46)]=_0x5a68e2(-0x184,-0x18d);continue;case'2':_0x3e0bac[_0x3be387(-0x2c,-0x37)]=_0x3d2b7e['LMADv'];continue;case'3':_0x3e0bac[_0x3d2b7e['xuqFc']]=_0x3d2b7e[_0x5a68e2(-0x1a2,-0x193)];continue;case'4':_0x3e0bac[_0x3d2b7e[_0x5a68e2(-0x1ac,-0x19a)]]='failed';continue;case'5':_0x3e0bac[_0x5a68e2(-0x191,-0x19b)]=_0x3d2b7e[_0x5a68e2(-0x180,-0x168)];continue;}break;}}(TaskState||(TaskState={})));function _0xe1b4(_0x3ef8f2,_0x2efafd){_0x3ef8f2=_0x3ef8f2-0xc4;var _0xbef253=_0xbef2();var _0xe1b4bc=_0xbef253[_0x3ef8f2];if(_0xe1b4['wJCnXD']===undefined){var _0x46f779=function(_0x820e25){var _0x1782ec='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x194001='',_0x33ff3e='';for(var _0x9b7dcd=0x0,_0x53c080,_0x2f02a5,_0x45e8e7=0x0;_0x2f02a5=_0x820e25['charAt'](_0x45e8e7++);~_0x2f02a5&&(_0x53c080=_0x9b7dcd%0x4?_0x53c080*0x40+_0x2f02a5:_0x2f02a5,_0x9b7dcd++%0x4)?_0x194001+=String['fromCharCode'](0xff&_0x53c080>>(-0x2*_0x9b7dcd&0x6)):0x0){_0x2f02a5=_0x1782ec['indexOf'](_0x2f02a5);}for(var _0x2bfc82=0x0,_0x5a6e70=_0x194001['length'];_0x2bfc82<_0x5a6e70;_0x2bfc82++){_0x33ff3e+='%'+('00'+_0x194001['charCodeAt'](_0x2bfc82)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x33ff3e);};_0xe1b4['PjMIkE']=_0x46f779,_0xe1b4['fbbFaW']={},_0xe1b4['wJCnXD']=!![];}var _0x150f9c=_0xbef253[0x0],_0x4a9719=_0x3ef8f2+_0x150f9c,_0x3ced5e=_0xe1b4['fbbFaW'][_0x4a9719];return!_0x3ced5e?(_0xe1b4bc=_0xe1b4['PjMIkE'](_0xe1b4bc),_0xe1b4['fbbFaW'][_0x4a9719]=_0xe1b4bc):_0xe1b4bc=_0x3ced5e,_0xe1b4bc;}export const TERMINAL_STATES=new Set([TaskState['COMPLETED'],TaskState[_0x2f7c50(0x35b,0x361)],TaskState['CANCELED']]);export var EventType;function _0x2f7c50(_0x16635f,_0x317cab){return _0xe1b4(_0x317cab-0x294,_0x16635f);}function _0xbef2(){var _0x1f908f=['vgfZA0fYDgLMyq','AxjLza','ExvzDNK','su5wquXjrf9qqq','v09ss0LorW','vgfZA1n0yxr1CW','x0zpvu5e','tuvuse9ex05pva','vf9tvvbqt1jurq','nJG5otu2merIz0vrva','uvvfu1q','mxW1Fdb8mNW0Fa','sgDQD1y','s0LjAue','ue9sveve','mJDsC2jMq0e','mMrKs3fZsG','C3vIBwL0DgvK','nJy1nvzwzxH5vG','vefts19ot1rFrG','y2fUy2vSzwq','yxHSDNG','vu5tvvbqt1jurq','su5qvvrFuKvrvq','zw50','nLzmwgDpEG','v3bkqLa','uLjpuG','rf9puevsqvrjtW','uefsu0vFrvjstW','mJuZmZe4nxnOuLvMyW','oevXwKLPvW','ndqWntjlquHfBeC','qu5druXbqKXf','ndiZmZm5n0Tsq3rztq','mZG0mdy3ChbHshvX','u1vctuLuveve','swznEgm','su5urvjoquXFrq','rKfjteve','u2XiBfe','D29YA2LUzW','wejwAgG','uKfnuW','t1vora','ru5ux0nbuKq','Dev0uwK','uevFtK9ux1nvua','q0foq0vmruq','su5wquXjrf9brW','tMzkENC','q09nueXfveve','r0XItwu','q09ovevovf9uwq','ndC4oduYmLf0sxviza','su5wquXjrf9srq','Aw5WDxqTCMvXDq','quzdrw4','ufvtsf9ot1rjrG','mZuWmtu2AMzlDw5m','vefts19tvefuvq','vefts19buLrjrG','vefts19ot1rFqW'];_0xbef2=function(){return _0x1f908f;};return _0xbef2();}(function(_0x100ddd){var _0xb78778={'WpJBP':_0x25f576(0xe5,0xff)+'ctUpdateEv'+_0x3f8643(-0x21c,-0x20f)};_0x100ddd[_0x25f576(0x110,0xfc)+'S_UPDATE']=_0x25f576(0xf7,0x104)+'UpdateEven'+'t';function _0x25f576(_0x3f7732,_0x56d7a1){return _0x2f7c50(_0x3f7732,_0x56d7a1- -0x27a);}function _0x3f8643(_0x52dd57,_0x2abcb4){return _0x2f7c50(_0x2abcb4,_0x52dd57- -0x5ad);}_0x100ddd[_0x3f8643(-0x236,-0x242)+'ACT_UPDATE']=_0xb78778[_0x25f576(0x11b,0x119)];}(EventType||(EventType={})));