a2a-memory 0.11.4 → 0.11.6
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 +7 -19
- package/README.md +1 -1
- package/dist/a2a/client.js +1 -252
- package/dist/a2a/discovery.js +1 -115
- package/dist/a2a/index.js +1 -8
- package/dist/a2a/types.js +1 -42
- package/dist/adapters/anthropic.js +1 -117
- package/dist/chunking/chunker.js +1 -163
- package/dist/claude/sync.js +1 -294
- package/dist/cli/commands/add.js +1 -80
- package/dist/cli/commands/claude-sync.js +1 -70
- package/dist/cli/commands/cleanup.js +1 -83
- package/dist/cli/commands/config.js +1 -73
- package/dist/cli/commands/edit.js +1 -69
- package/dist/cli/commands/embed.js +1 -92
- package/dist/cli/commands/extract.js +1 -103
- package/dist/cli/commands/health.js +1 -105
- package/dist/cli/commands/list.js +1 -49
- package/dist/cli/commands/migrate-chunks.js +1 -205
- package/dist/cli/commands/migrate-file-refs.js +1 -183
- package/dist/cli/commands/proficiency.js +1 -146
- package/dist/cli/commands/rm.js +1 -64
- package/dist/cli/commands/search.js +1 -89
- package/dist/cli/commands/setup-wizard.js +1 -387
- package/dist/cli/commands/setup.js +1 -170
- package/dist/cli/commands/skill.js +1 -151
- package/dist/cli/commands/status.js +1 -70
- package/dist/cli/commands/sync.js +1 -202
- package/dist/cli/commands/team.js +1 -142
- package/dist/cli/index.js +1 -87
- package/dist/config/manager.js +1 -372
- package/dist/db/database.d.ts +10 -1
- package/dist/db/database.js +1 -1367
- package/dist/embedding/e5-provider.js +1 -147
- package/dist/embedding/index.js +1 -34
- package/dist/embedding/local-provider.js +1 -157
- package/dist/embedding/openai-provider.js +1 -92
- package/dist/embedding/quantization.js +1 -89
- package/dist/extraction/dedup-manager.js +1 -161
- package/dist/extraction/emotion-filter.js +1 -33
- package/dist/extraction/extractor.js +1 -642
- package/dist/extraction/file-reference.js +1 -77
- package/dist/extraction/filter.js +1 -85
- package/dist/extraction/scorer.js +1 -142
- package/dist/extraction/similarity.js +1 -85
- package/dist/hooks/client-factory.js +1 -44
- package/dist/hooks/post-tool-use.js +1 -470
- package/dist/hooks/pre-compact.js +1 -209
- package/dist/hooks/session-end.d.ts +1 -0
- package/dist/hooks/session-end.js +1 -623
- package/dist/hooks/session-start.js +1 -549
- package/dist/hooks/shared.js +1 -110
- package/dist/hooks/user-prompt-submit.js +1 -316
- package/dist/i18n/index.js +1 -2
- package/dist/i18n/messages.js +1 -150
- package/dist/index.js +1 -43
- package/dist/lifecycle/cleanup-scheduler.js +1 -137
- package/dist/lifecycle/cleanup.js +1 -116
- package/dist/lifecycle/index.js +1 -13
- package/dist/lifecycle/quality-scorer.js +1 -46
- package/dist/lifecycle/tiering.js +1 -246
- package/dist/llm/client.js +1 -226
- package/dist/llm/index.js +1 -5
- package/dist/proficiency/actr-engine.js +1 -106
- package/dist/proficiency/detection.js +1 -77
- package/dist/proficiency/index.js +1 -9
- package/dist/proficiency/tracker.js +1 -173
- package/dist/proficiency/types.js +1 -8
- package/dist/providers/adapters.js +1 -140
- package/dist/providers/detector.js +1 -57
- package/dist/search/adaptive-router.js +1 -93
- package/dist/search/index.js +1 -9
- package/dist/search/ranker.js +1 -171
- package/dist/search/reranker.js +1 -155
- package/dist/session/parser.js +1 -130
- package/dist/skill/evaluator.js +1 -509
- package/dist/skill/index.js +1 -7
- package/dist/skill/types.js +1 -7
- package/dist/sync/client.d.ts +1 -0
- package/dist/sync/client.js +1 -597
- package/dist/sync/encryption.js +1 -203
- package/dist/sync/index.js +1 -12
- package/dist/sync/queue.js +1 -199
- package/dist/sync/scheduler.js +1 -140
- package/dist/sync/synchronizer.js +1 -241
- package/dist/sync/team-synchronizer.js +1 -204
- package/dist/sync/vector-clock.js +1 -70
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.js +1 -131
- package/dist/utils/keychain.js +1 -170
- package/dist/utils/logger.js +1 -128
- package/package.json +14 -10
- package/dist/a2a/client.d.ts.map +0 -1
- package/dist/a2a/client.js.map +0 -1
- package/dist/a2a/discovery.d.ts.map +0 -1
- package/dist/a2a/discovery.js.map +0 -1
- package/dist/a2a/index.d.ts.map +0 -1
- package/dist/a2a/index.js.map +0 -1
- package/dist/a2a/types.d.ts.map +0 -1
- package/dist/a2a/types.js.map +0 -1
- package/dist/adapters/anthropic.d.ts.map +0 -1
- package/dist/adapters/anthropic.js.map +0 -1
- package/dist/chunking/chunker.d.ts.map +0 -1
- package/dist/chunking/chunker.js.map +0 -1
- package/dist/claude/sync.d.ts.map +0 -1
- package/dist/claude/sync.js.map +0 -1
- package/dist/cli/commands/add.d.ts.map +0 -1
- package/dist/cli/commands/add.js.map +0 -1
- package/dist/cli/commands/claude-sync.d.ts.map +0 -1
- package/dist/cli/commands/claude-sync.js.map +0 -1
- package/dist/cli/commands/cleanup.d.ts.map +0 -1
- package/dist/cli/commands/cleanup.js.map +0 -1
- package/dist/cli/commands/config.d.ts.map +0 -1
- package/dist/cli/commands/config.js.map +0 -1
- package/dist/cli/commands/edit.d.ts.map +0 -1
- package/dist/cli/commands/edit.js.map +0 -1
- package/dist/cli/commands/embed.d.ts.map +0 -1
- package/dist/cli/commands/embed.js.map +0 -1
- package/dist/cli/commands/extract.d.ts.map +0 -1
- package/dist/cli/commands/extract.js.map +0 -1
- package/dist/cli/commands/health.d.ts.map +0 -1
- package/dist/cli/commands/health.js.map +0 -1
- package/dist/cli/commands/list.d.ts.map +0 -1
- package/dist/cli/commands/list.js.map +0 -1
- package/dist/cli/commands/migrate-chunks.d.ts.map +0 -1
- package/dist/cli/commands/migrate-chunks.js.map +0 -1
- package/dist/cli/commands/migrate-file-refs.d.ts.map +0 -1
- package/dist/cli/commands/migrate-file-refs.js.map +0 -1
- package/dist/cli/commands/proficiency.d.ts.map +0 -1
- package/dist/cli/commands/proficiency.js.map +0 -1
- package/dist/cli/commands/rm.d.ts.map +0 -1
- package/dist/cli/commands/rm.js.map +0 -1
- package/dist/cli/commands/search.d.ts.map +0 -1
- package/dist/cli/commands/search.js.map +0 -1
- package/dist/cli/commands/setup-wizard.d.ts.map +0 -1
- package/dist/cli/commands/setup-wizard.js.map +0 -1
- package/dist/cli/commands/setup.d.ts.map +0 -1
- package/dist/cli/commands/setup.js.map +0 -1
- package/dist/cli/commands/skill.d.ts.map +0 -1
- package/dist/cli/commands/skill.js.map +0 -1
- package/dist/cli/commands/status.d.ts.map +0 -1
- package/dist/cli/commands/status.js.map +0 -1
- package/dist/cli/commands/sync.d.ts.map +0 -1
- package/dist/cli/commands/sync.js.map +0 -1
- package/dist/cli/commands/team.d.ts.map +0 -1
- package/dist/cli/commands/team.js.map +0 -1
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/config/manager.d.ts.map +0 -1
- package/dist/config/manager.js.map +0 -1
- package/dist/db/database.d.ts.map +0 -1
- package/dist/db/database.js.map +0 -1
- package/dist/embedding/e5-provider.d.ts.map +0 -1
- package/dist/embedding/e5-provider.js.map +0 -1
- package/dist/embedding/index.d.ts.map +0 -1
- package/dist/embedding/index.js.map +0 -1
- package/dist/embedding/local-provider.d.ts.map +0 -1
- package/dist/embedding/local-provider.js.map +0 -1
- package/dist/embedding/openai-provider.d.ts.map +0 -1
- package/dist/embedding/openai-provider.js.map +0 -1
- package/dist/embedding/quantization.d.ts.map +0 -1
- package/dist/embedding/quantization.js.map +0 -1
- package/dist/extraction/dedup-manager.d.ts.map +0 -1
- package/dist/extraction/dedup-manager.js.map +0 -1
- package/dist/extraction/emotion-filter.d.ts.map +0 -1
- package/dist/extraction/emotion-filter.js.map +0 -1
- package/dist/extraction/extractor.d.ts.map +0 -1
- package/dist/extraction/extractor.js.map +0 -1
- package/dist/extraction/file-reference.d.ts.map +0 -1
- package/dist/extraction/file-reference.js.map +0 -1
- package/dist/extraction/filter.d.ts.map +0 -1
- package/dist/extraction/filter.js.map +0 -1
- package/dist/extraction/scorer.d.ts.map +0 -1
- package/dist/extraction/scorer.js.map +0 -1
- package/dist/extraction/similarity.d.ts.map +0 -1
- package/dist/extraction/similarity.js.map +0 -1
- package/dist/hooks/client-factory.d.ts.map +0 -1
- package/dist/hooks/client-factory.js.map +0 -1
- package/dist/hooks/post-tool-use.d.ts.map +0 -1
- package/dist/hooks/post-tool-use.js.map +0 -1
- package/dist/hooks/pre-compact.d.ts.map +0 -1
- package/dist/hooks/pre-compact.js.map +0 -1
- package/dist/hooks/session-end.d.ts.map +0 -1
- package/dist/hooks/session-end.js.map +0 -1
- package/dist/hooks/session-start.d.ts.map +0 -1
- package/dist/hooks/session-start.js.map +0 -1
- package/dist/hooks/shared.d.ts.map +0 -1
- package/dist/hooks/shared.js.map +0 -1
- package/dist/hooks/user-prompt-submit.d.ts.map +0 -1
- package/dist/hooks/user-prompt-submit.js.map +0 -1
- package/dist/i18n/index.d.ts.map +0 -1
- package/dist/i18n/index.js.map +0 -1
- package/dist/i18n/messages.d.ts.map +0 -1
- package/dist/i18n/messages.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lifecycle/cleanup-scheduler.d.ts.map +0 -1
- package/dist/lifecycle/cleanup-scheduler.js.map +0 -1
- package/dist/lifecycle/cleanup.d.ts.map +0 -1
- package/dist/lifecycle/cleanup.js.map +0 -1
- package/dist/lifecycle/index.d.ts.map +0 -1
- package/dist/lifecycle/index.js.map +0 -1
- package/dist/lifecycle/quality-scorer.d.ts.map +0 -1
- package/dist/lifecycle/quality-scorer.js.map +0 -1
- package/dist/lifecycle/tiering.d.ts.map +0 -1
- package/dist/lifecycle/tiering.js.map +0 -1
- package/dist/llm/client.d.ts.map +0 -1
- package/dist/llm/client.js.map +0 -1
- package/dist/llm/index.d.ts.map +0 -1
- package/dist/llm/index.js.map +0 -1
- package/dist/proficiency/actr-engine.d.ts.map +0 -1
- package/dist/proficiency/actr-engine.js.map +0 -1
- package/dist/proficiency/detection.d.ts.map +0 -1
- package/dist/proficiency/detection.js.map +0 -1
- package/dist/proficiency/index.d.ts.map +0 -1
- package/dist/proficiency/index.js.map +0 -1
- package/dist/proficiency/tracker.d.ts.map +0 -1
- package/dist/proficiency/tracker.js.map +0 -1
- package/dist/proficiency/types.d.ts.map +0 -1
- package/dist/proficiency/types.js.map +0 -1
- package/dist/providers/adapters.d.ts.map +0 -1
- package/dist/providers/adapters.js.map +0 -1
- package/dist/providers/detector.d.ts.map +0 -1
- package/dist/providers/detector.js.map +0 -1
- package/dist/search/adaptive-router.d.ts.map +0 -1
- package/dist/search/adaptive-router.js.map +0 -1
- package/dist/search/index.d.ts.map +0 -1
- package/dist/search/index.js.map +0 -1
- package/dist/search/ranker.d.ts.map +0 -1
- package/dist/search/ranker.js.map +0 -1
- package/dist/search/reranker.d.ts.map +0 -1
- package/dist/search/reranker.js.map +0 -1
- package/dist/session/parser.d.ts.map +0 -1
- package/dist/session/parser.js.map +0 -1
- package/dist/skill/evaluator.d.ts.map +0 -1
- package/dist/skill/evaluator.js.map +0 -1
- package/dist/skill/index.d.ts.map +0 -1
- package/dist/skill/index.js.map +0 -1
- package/dist/skill/types.d.ts.map +0 -1
- package/dist/skill/types.js.map +0 -1
- package/dist/sync/client.d.ts.map +0 -1
- package/dist/sync/client.js.map +0 -1
- package/dist/sync/encryption.d.ts.map +0 -1
- package/dist/sync/encryption.js.map +0 -1
- package/dist/sync/index.d.ts.map +0 -1
- package/dist/sync/index.js.map +0 -1
- package/dist/sync/queue.d.ts.map +0 -1
- package/dist/sync/queue.js.map +0 -1
- package/dist/sync/scheduler.d.ts.map +0 -1
- package/dist/sync/scheduler.js.map +0 -1
- package/dist/sync/synchronizer.d.ts.map +0 -1
- package/dist/sync/synchronizer.js.map +0 -1
- package/dist/sync/team-synchronizer.d.ts.map +0 -1
- package/dist/sync/team-synchronizer.js.map +0 -1
- package/dist/sync/vector-clock.d.ts.map +0 -1
- package/dist/sync/vector-clock.js.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/utils/keychain.d.ts.map +0 -1
- package/dist/utils/keychain.js.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js.map +0 -1
package/LICENSE
CHANGED
|
@@ -1,21 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
Copyright (c) 2026 A2A Memory. All rights reserved.
|
|
2
2
|
|
|
3
|
-
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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.
|
|
3
|
+
> v0.11.6 — 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
|
|
package/dist/a2a/client.js
CHANGED
|
@@ -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 _0x3f5c(_0x443f80,_0x592272){_0x443f80=_0x443f80-0x9e;const _0xd9e431=_0xd9e4();let _0x3f5c32=_0xd9e431[_0x443f80];if(_0x3f5c['rcftGD']===undefined){var _0x56f838=function(_0x323cff){const _0x5f0d06='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x99f79a='',_0x16ba01='';for(let _0x29d905=0x0,_0x143bfc,_0x521140,_0x464b56=0x0;_0x521140=_0x323cff['charAt'](_0x464b56++);~_0x521140&&(_0x143bfc=_0x29d905%0x4?_0x143bfc*0x40+_0x521140:_0x521140,_0x29d905++%0x4)?_0x99f79a+=String['fromCharCode'](0xff&_0x143bfc>>(-0x2*_0x29d905&0x6)):0x0){_0x521140=_0x5f0d06['indexOf'](_0x521140);}for(let _0x2baf00=0x0,_0x1eefa6=_0x99f79a['length'];_0x2baf00<_0x1eefa6;_0x2baf00++){_0x16ba01+='%'+('00'+_0x99f79a['charCodeAt'](_0x2baf00)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x16ba01);};_0x3f5c['mMJPdl']=_0x56f838,_0x3f5c['Lwvktb']={},_0x3f5c['rcftGD']=!![];}const _0x56e0fe=_0xd9e431[0x0],_0x528749=_0x443f80+_0x56e0fe,_0x1c66eb=_0x3f5c['Lwvktb'][_0x528749];return!_0x1c66eb?(_0x3f5c32=_0x3f5c['mMJPdl'](_0x3f5c32),_0x3f5c['Lwvktb'][_0x528749]=_0x3f5c32):_0x3f5c32=_0x1c66eb,_0x3f5c32;}(function(_0x8a4959,_0x4c938c){const _0x488df3=_0x8a4959();function _0xe3d436(_0x8d0eaf,_0x27b678){return _0x3f5c(_0x8d0eaf-0x270,_0x27b678);}function _0x5bd5f3(_0xbd5836,_0x2e8e54){return _0x3f5c(_0xbd5836- -0x3b0,_0x2e8e54);}while(!![]){try{const _0x3c48ab=-parseInt(_0xe3d436(0x333,0x315))/0x1+parseInt(_0x5bd5f3(-0x2de,-0x307))/0x2+-parseInt(_0x5bd5f3(-0x2e4,-0x311))/0x3+-parseInt(_0xe3d436(0x34e,0x34c))/0x4+parseInt(_0x5bd5f3(-0x2c9,-0x2df))/0x5*(-parseInt(_0xe3d436(0x371,0x39c))/0x6)+parseInt(_0x5bd5f3(-0x303,-0x2d5))/0x7+parseInt(_0xe3d436(0x31a,0x33a))/0x8;if(_0x3c48ab===_0x4c938c)break;else _0x488df3['push'](_0x488df3['shift']());}catch(_0x5d068e){_0x488df3['push'](_0x488df3['shift']());}}}(_0xd9e4,0x39ff3));const DEFAULT_TIMEOUT=0x7530;function _0xd9e4(){const _0xebc26e=['wc1bueKTs2v5','BxrNthq','B25bCNrPzMfJDa','D2fTyvK','z090CwW','C2XPy2u','v0TWyvu','BLfKuey','sxzPsem','otq4ndq0wfD3D3LV','ELnPBgG','C2vUzerHDge','y25JDvC','y29Kzq','C2vUzfrLEhq','zgf0zq','ue9tva','CMvWBgfJzq','mJe1Du9Szwvz','B3i6ia','l2eYys9QC29UCG','Cg93','svbRuM0','Aw5JBhvKzxm','ihn0CMvHBwLUzW','CMvZDwX0','vfHotgy','qxv0Ag9YAxPHDa','y29UzMLN','DgfZA3nhzxq','uwTwqKm','CMvSzwfZzuXVyW','uMvXDwvZDcb0Aq','AND0vg9Rzw4','BwvZC2fNzvnLBG','yMfZzvvYBa','C2LNBMfS','z2v0uMvHzgvY','zsbIB2r5igzVCG','ywjVCNq','ChjVy2vZC1ntrq','CgfYC2u','wuvrswm','CMvXDwvZDeLK','nde3mevLrM9jzG','yxbPs2v5','B1jgAMy','A1fYBvu','C3rHDhvZ','zgLZCgf0y2HtuW','ywjxA28','zxjYB3i6ia','y3rvCgrHDgvfDG','Cg9W','C3rHCNrZv2L0Aa','zxHLy3v0zvjWyW','BwvZC2fNzq','CMvHza','u3rYzwfTigvYCG','DgfZA3mVz2v0','sNjQEeq','tM8GCMvZCg9UCW','vxbKyxrLrxzLBG','vw5RBM93BIbLCG','tKzLrM8','zxzLBNq6','CMvHBq','nJC0nZi5nKrbwg9XBW','tLPVExq','vgfZA1n0yxr1CW','odGYnZe0s29ozg5t','CNbJq2fSBa','yNvPBgrszxf1zq','DxnLCG','B25dB21WBgv0zq','yxbWBgLJyxrPBW','zLbTs04','rK9Ms1K','z2v0sgvHzgvYCW','AeLIquW','BwvZC2fNzs9ZDa','zdOG','CMv0CNLHyMXL','BwvZC2fNzvn0CG','BI9QC29U','qxv0AgvUDgLJyq','zgf0yq','C3rYAw5NAwz5','u3rYzwfTihjLCq','zMLUywW','qMvHCMvYia','u3rYzwfT','mZGXntaWEM1by1PR','B3HtCgq','BwvVDxq','u2vYDMvYigvYCG','Cfn4Cg0','yM9KEq','B25tDgf0DxnvCa','ruv2zw50','zxjYB3i','mZi1otmYshPwqNft','BevYCM9Y','z2v0rw5KCg9PBG','DgLTzw91Da','Aw9U','Ag5yz20','ntaZnJj6s291ALq','ANnVBG','B25fCNjVCG'];_0xd9e4=function(){return _0xebc26e;};return _0xd9e4();}function _0x3d4447(_0x1a1908,_0x4bae57){return _0x3f5c(_0x4bae57- -0xbf,_0x1a1908);}const MAX_RETRIES=0x3,RETRY_BASE_MS=0x3e8;function _0x6da566(_0x17d53a,_0x21ce12){return _0x3f5c(_0x17d53a-0x86,_0x21ce12);}export class A2AProtocolClient{[_0x3d4447(0x1b,0x32)];[_0x3d4447(0x21,0x10)];[_0x6da566(0x186,0x18d)]=0x0;constructor(_0xbe144c){function _0x2b5635(_0x18566a,_0x513022){return _0x6da566(_0x18566a-0x135,_0x513022);}function _0x37b292(_0xd2c2cc,_0x5122f4){return _0x6da566(_0x5122f4- -0x159,_0xd2c2cc);}this[_0x37b292(0x4f,0x1e)]=_0xbe144c,this[_0x37b292(-0x1b,-0x4)]=_0xbe144c[_0x37b292(-0x4,-0x4)]??DEFAULT_TIMEOUT;}async[_0x3d4447(0x61,0x38)+'d'](_0xa2d632){function _0x5db3e5(_0x2573a3,_0xe0045a){return _0x3d4447(_0x2573a3,_0xe0045a-0xf3);}function _0x6d11d0(_0x4baf9b,_0x51f487){return _0x3d4447(_0x4baf9b,_0x51f487-0x444);}const _0x4018e4={'NZoyt':'message/se'+'nd'};return this[_0x5db3e5(0x100,0xe2)](_0x4018e4[_0x6d11d0(0x44c,0x430)],_0xa2d632);}async[_0x3d4447(0x3a,0x24)](_0x57b317,_0x530a50,_0x3c1c71){const _0xa789d9={'role':_0x134255(0x2db,0x2d9),'parts':[{'type':'text','text':_0x530a50}]};function _0x134255(_0x37ca0c,_0x5dd5e7){return _0x3d4447(_0x37ca0c,_0x5dd5e7-0x2e8);}return this['messageSen'+'d']({'id':_0x57b317,'sessionId':_0x3c1c71,'message':_0xa789d9});}async[_0x6da566(0x166,0x161)](_0x28c46a,_0x10aa49,_0x1509ce){const _0x564545={'abWko':'data'};function _0x17199e(_0x12e69f,_0x22f720){return _0x3d4447(_0x22f720,_0x12e69f-0x356);}function _0x3ce806(_0x15549e,_0x3f51c0){return _0x3d4447(_0x15549e,_0x3f51c0-0x1e6);}const _0x3e3582={'role':_0x17199e(0x347,0x317),'parts':[{'type':_0x564545[_0x17199e(0x39e,0x38a)],'data':_0x10aa49}]};return this['messageSen'+'d']({'id':_0x28c46a,'sessionId':_0x1509ce,'message':_0x3e3582});}async[_0x3d4447(0x1c,0x33)](_0x2b071e){function _0x581bf3(_0x502a8c,_0x184485){return _0x6da566(_0x184485- -0x21b,_0x502a8c);}return this['rpcCall'](_0x581bf3(-0x100,-0xf3),_0x2b071e);}async['tasksCance'+'l'](_0x530ca8){function _0x17911c(_0x12e7fa,_0x5bca6a){return _0x3d4447(_0x5bca6a,_0x12e7fa- -0x29b);}const _0x3aa57c={'OSgjv':'tasks/canc'+'el'};return this[_0x17911c(-0x2ac,-0x291)](_0x3aa57c['OSgjv'],_0x530ca8);}async[_0x3d4447(-0xe,-0x5)+'eam'](_0x5f2573,_0x4c22af){function _0x6d3834(_0x1785be,_0x56cc68){return _0x6da566(_0x56cc68-0x45,_0x1785be);}const _0x51370f={'JrjxD':function(_0x573b84,_0x1435fb){return _0x573b84 instanceof _0x1435fb;},'NFeFo':function(_0xcf5860,_0x56330c){return _0xcf5860(_0x56330c);}};function _0x231ad9(_0x15b933,_0x580306){return _0x6da566(_0x580306- -0x6b,_0x15b933);}const _0x1335ed=this['buildReque'+'st'](_0x231ad9(0xb4,0xd2)+_0x231ad9(0xa5,0xc4),_0x5f2573),_0x5119e2=new AbortController(),_0x4e0f04=setTimeout(()=>_0x5119e2[_0x6d3834(0x1a3,0x1c7)](),this[_0x6d3834(0x179,0x19a)]*0x3);try{const _0x4d270c=await fetch(this[_0x231ad9(0x105,0xe9)+'t'](),{'method':_0x6d3834(0x1b1,0x1b0),'headers':this[_0x6d3834(0x186,0x180)](),'body':JSON[_0x231ad9(0xcc,0xd9)](_0x1335ed),'signal':_0x5119e2[_0x6d3834(0x1c5,0x1c4)]});if(!_0x4d270c['ok'])throw new A2AProtocolError(_0x6d3834(0x1b3,0x18a)+'uest\x20faile'+_0x231ad9(0x105,0xd3)+_0x4d270c[_0x6d3834(0x1b6,0x1d0)],-0x7f5b);if(!_0x4d270c[_0x6d3834(0x172,0x193)])throw new A2AProtocolError(_0x231ad9(0xd4,0xbf)+_0x231ad9(0xe6,0x116)+_0x6d3834(0x1ba,0x1b8),-0x7f5b);await this['processSSE'+_0x6d3834(0x194,0x18d)](_0x4d270c[_0x231ad9(0xcc,0xe3)],_0x4c22af);}catch(_0x5d04fa){if(_0x5d04fa instanceof A2AProtocolError)_0x4c22af['onError']?.(_0x5d04fa);else{const _0x6dac78=_0x51370f[_0x6d3834(0x18d,0x16e)](_0x5d04fa,Error)?_0x5d04fa['message']:String(_0x5d04fa);_0x4c22af[_0x6d3834(0x1c6,0x19f)]?.(new A2AProtocolError('Stream\x20err'+_0x231ad9(0x110,0x103)+_0x6dac78,-0x7f5b));}}finally{_0x51370f[_0x6d3834(0x145,0x172)](clearTimeout,_0x4e0f04),_0x4c22af[_0x231ad9(0x96,0xcc)]?.();}}async[_0x3d4447(-0x44,-0x11)](_0x5e72a1,_0x47835c){function _0x3b001e(_0xb12280,_0x4cb7eb){return _0x6da566(_0xb12280- -0x239,_0x4cb7eb);}const _0x164c55={'QkVBC':function(_0x321aaa,_0x22bfa0){return _0x321aaa instanceof _0x22bfa0;},'XrVYt':function(_0x579577,_0xddc9e2){return _0x579577(_0xddc9e2);},'hIbAL':function(_0x28be65,_0x36d931){return _0x28be65<_0x36d931;}},_0xba77ad=this[_0x461e8c(0x21f,0x24a)+'st'](_0x5e72a1,_0x47835c);let _0xb0c326=null;for(let _0x444815=0x0;_0x444815<=MAX_RETRIES;_0x444815++){try{return await this[_0x461e8c(0x227,0x239)](_0xba77ad);}catch(_0x2260ec){_0xb0c326=_0x164c55[_0x3b001e(-0xc0,-0xe6)](_0x2260ec,Error)?_0x2260ec:new Error(_0x164c55['XrVYt'](String,_0x2260ec));if(_0x2260ec instanceof A2AProtocolError&&!_0x2260ec[_0x461e8c(0x277,0x254)])throw _0x2260ec;if(_0x164c55[_0x3b001e(-0xfd,-0x126)](_0x444815,MAX_RETRIES)){const _0x198989=RETRY_BASE_MS*Math[_0x461e8c(0x255,0x285)](0x2,_0x444815);await new Promise(_0x358476=>setTimeout(_0x358476,_0x198989));}}}function _0x461e8c(_0x562ae7,_0xe2fabe){return _0x6da566(_0xe2fabe-0x115,_0x562ae7);}throw _0xb0c326??new A2AProtocolError(_0x3b001e(-0x10d,-0xf6)+'ror',-0x7f5b);}[_0x6da566(0x135,0x153)+'st'](_0x121020,_0x4cb47b){return{'jsonrpc':'2.0','method':_0x121020,'params':_0x4cb47b,'id':++this['requestId']};}[_0x6da566(0x154,0x17c)+'t'](){function _0x46c4fe(_0x34fdcf,_0x3d18ed){return _0x6da566(_0x3d18ed- -0x27b,_0x34fdcf);}function _0x4ea52a(_0x1e1fbe,_0x2245e5){return _0x6da566(_0x1e1fbe- -0x17b,_0x2245e5);}return this[_0x46c4fe(-0x125,-0x104)][_0x46c4fe(-0x10a,-0xfd)][_0x46c4fe(-0x12e,-0x10f)](/\/+$/,'')+(_0x46c4fe(-0xfe,-0x10c)+'pc');}['getHeaders'](){const _0x102d21={'IviHC':_0xcb5cdc(-0x113,-0xfd)+_0x3268cb(0x4a2,0x470)},_0x578f05={'Content-Type':_0x102d21[_0x3268cb(0x492,0x492)],'Accept':_0xcb5cdc(-0x113,-0x134)+'n/json'};function _0x3268cb(_0x3d4ce5,_0x20ce51){return _0x3d4447(_0x3d4ce5,_0x20ce51-0x474);}this[_0xcb5cdc(-0xd4,-0x105)]['apiKey']&&(_0x578f05['X-API-Key']=this[_0x3268cb(0x489,0x4a6)][_0xcb5cdc(-0xc3,-0xae)]);function _0xcb5cdc(_0x33649a,_0x5c89bf){return _0x3d4447(_0x5c89bf,_0x33649a- -0x106);}return this[_0x3268cb(0x47b,0x4a6)][_0x3268cb(0x479,0x4ab)]&&(_0x578f05[_0xcb5cdc(-0xd5,-0xd1)+'ion']=_0xcb5cdc(-0x104,-0x12e)+this[_0xcb5cdc(-0xd4,-0xa3)][_0x3268cb(0x499,0x4ab)]),_0x578f05;}async[_0x6da566(0x124,0x142)](_0x18e3d9){const _0x1181e7={'DPzug':function(_0x1248b4,_0x458601){return _0x1248b4>=_0x458601;},'hnXgm':function(_0x3712f5,_0xb82262){return _0x3712f5 instanceof _0xb82262;},'XwgaL':function(_0x209814,_0x28873d){return _0x209814 instanceof _0x28873d;},'WKpaU':function(_0x193cb2,_0x18a119){return _0x193cb2(_0x18a119);},'fPmKN':_0x33631c(0x249,0x264),'OpUoG':function(_0x2685d6,_0x4468f6){return _0x2685d6!==_0x4468f6;},'cncuW':_0x34a775(-0x54,-0x79)};function _0x33631c(_0x285bcf,_0x20bd2f){return _0x6da566(_0x20bd2f-0xe2,_0x285bcf);}const _0x133ff6=new AbortController(),_0x109cf=setTimeout(()=>_0x133ff6[_0x34a775(-0x56,-0x81)](),this[_0x34a775(-0x83,-0xae)]);function _0x34a775(_0x3ea656,_0x35894e){return _0x6da566(_0x35894e- -0x203,_0x3ea656);}try{const _0x1427be=await fetch(this['getEndpoin'+'t'](),{'method':_0x33631c(0x26a,0x24d),'headers':this[_0x33631c(0x251,0x21d)](),'body':JSON[_0x33631c(0x253,0x226)](_0x18e3d9),'signal':_0x133ff6[_0x33631c(0x296,0x261)]});if(_0x1181e7['DPzug'](_0x1427be[_0x33631c(0x236,0x26d)],0x1f4))throw new A2AProtocolError(_0x34a775(-0xab,-0xb7)+_0x33631c(0x231,0x250)+_0x1427be[_0x33631c(0x23a,0x26d)],-0x7f5b,undefined,!![]);if(_0x1427be[_0x33631c(0x24c,0x26d)]===0x191||_0x1427be[_0x33631c(0x299,0x26d)]===0x193)throw new A2AProtocolError(_0x34a775(-0xb1,-0xc1)+'tion\x20faile'+_0x34a775(-0xd9,-0xc5)+_0x1427be[_0x33631c(0x282,0x26d)],-0x7f5b,undefined,![]);const _0x33a8b2=await _0x1427be[_0x34a775(-0x82,-0xaa)]();if(_0x33a8b2[_0x33631c(0x223,0x233)]){const _0xe5ea01=_0x33a8b2[_0x33631c(0x21e,0x233)][_0x33631c(0x21b,0x24a)]===-0x7f5b;throw new A2AProtocolError(_0x33a8b2[_0x34a775(-0xce,-0xb2)]['message'],_0x33a8b2[_0x34a775(-0xd4,-0xb2)][_0x33631c(0x22b,0x24a)],_0x33a8b2[_0x33631c(0x225,0x233)][_0x34a775(-0xc6,-0xc0)],_0xe5ea01);}return _0x33a8b2[_0x34a775(-0x89,-0x8f)];}catch(_0x4977cd){if(_0x1181e7[_0x34a775(-0xa0,-0xac)](_0x4977cd,A2AProtocolError))throw _0x4977cd;const _0x50ae39=_0x1181e7['XwgaL'](_0x4977cd,Error)?_0x4977cd[_0x34a775(-0x102,-0xde)]:_0x1181e7[_0x33631c(0x21e,0x243)](String,_0x4977cd);if(_0x50ae39[_0x33631c(0x259,0x254)](_0x1181e7[_0x34a775(-0xf0,-0xca)]))throw new A2AProtocolError(_0x34a775(-0xad,-0x88)+_0x34a775(-0xb7,-0xb8),-0x7f5b,undefined,!![]);throw new A2AProtocolError('Network\x20er'+'ror:\x20'+_0x50ae39,-0x7f5b,undefined,!![]);}finally{if(_0x1181e7['OpUoG'](_0x1181e7[_0x34a775(-0x68,-0x9c)],_0x34a775(-0x7e,-0xa7)))clearTimeout(_0x109cf);else throw _0x196671;}}async[_0x3d4447(0x44,0x3e)+_0x6da566(0x148,0x112)](_0x23eb8a,_0x136669){function _0x2cb2ce(_0x536059,_0x343c29){return _0x6da566(_0x536059-0x14f,_0x343c29);}function _0x416511(_0xb10583,_0x249a98){return _0x6da566(_0x249a98- -0x25a,_0xb10583);}const _0x47c32a={'ZGSzc':function(_0x107e49,_0x54b25d){return _0x107e49 instanceof _0x54b25d;},'TXNLf':'zSilh','BbkXf':_0x2cb2ce(0x27d,0x259),'oxSpd':function(_0x5ce08e,_0x5cb473){return _0x5ce08e!==_0x5cb473;},'Dyucg':'data:','YbgCy':_0x416511(-0xdf,-0xd5),'nQdPF':_0x2cb2ce(0x2ad,0x2ad)},_0x2314a9=_0x23eb8a[_0x416511(-0xf3,-0xda)](),_0x249dfa=new TextDecoder();let _0x470e23='',_0x85feba='',_0x220420='';try{while(!![]){if(_0x47c32a[_0x416511(-0x10f,-0xe5)]!==_0x2cb2ce(0x2b4,0x2be)){if(VhnTSb['ZGSzc'](_0xf78a20,_0x13e0df))_0x14c355[_0x2cb2ce(0x2a9,0x28c)]?.(_0xf661a6);else{const _0x50a629=_0x8da1b3 instanceof _0x360ee8?_0x885714[_0x416511(-0x145,-0x135)]:_0x1f39b5(_0x62444c);_0x882dc6[_0x2cb2ce(0x2a9,0x2d0)]?.(new _0x57e96b(_0x416511(-0x14d,-0x133)+_0x416511(-0xf4,-0xec)+_0x50a629,-0x7f5b));}}else{const {done:_0x24983c,value:_0x19ee1f}=await _0x2314a9[_0x416511(-0x169,-0x134)]();if(_0x24983c)break;_0x470e23+=_0x249dfa['decode'](_0x19ee1f,{'stream':!![]});const _0x37861a=_0x470e23['split']('\x0a');_0x470e23=_0x37861a[_0x416511(-0xf8,-0xca)]()??'';for(const _0x5e7981 of _0x37861a){if(_0x5e7981[_0x416511(-0xdb,-0xc9)](_0x47c32a['BbkXf']))_0x47c32a[_0x2cb2ce(0x299,0x2bd)](_0x416511(-0x152,-0x120),'FOfKY')?_0x5db364(_0x405a7b):_0x85feba=_0x5e7981[_0x416511(-0x107,-0xfa)](0x6)['trim']();else{if(_0x5e7981['startsWith'](_0x47c32a['Dyucg']))_0x220420=_0x5e7981[_0x416511(-0x11a,-0xfa)](0x5)['trim']();else _0x5e7981===''&&_0x85feba&&_0x220420&&(_0x47c32a['YbgCy']!==_0x47c32a[_0x2cb2ce(0x2b1,0x2c8)]?(this[_0x416511(-0xf2,-0xce)+_0x2cb2ce(0x29f,0x2ac)](_0x85feba,_0x220420,_0x136669),_0x85feba='',_0x220420=''):_0x385ee0[_0x2cb2ce(0x286,0x28e)]?.());}}}}_0x85feba&&_0x220420&&this[_0x2cb2ce(0x2db,0x2c2)+_0x416511(-0x12d,-0x10a)](_0x85feba,_0x220420,_0x136669);}finally{_0x2314a9[_0x416511(-0xe1,-0xe0)+'k']();}}[_0x6da566(0x18c,0x174)+_0x3d4447(-0x12,0xb)](_0x48927b,_0x5d2ebb,_0xf6fcbd){function _0xd16520(_0x4c0150,_0x1d7870){return _0x3d4447(_0x4c0150,_0x1d7870- -0x90);}function _0x59b510(_0xadaa2a,_0x1b9256){return _0x3d4447(_0x1b9256,_0xadaa2a-0x3a);}const _0x9f3018={'gOtql':_0xd16520(-0x9f,-0x9d)+_0xd16520(-0x75,-0x94),'PRrKE':_0x59b510(0x6b,0x76)+_0x59b510(0x4b,0x62),'oRFjf':function(_0x2538c2,_0x5c773a){return _0x2538c2!==_0x5c773a;},'Ucuyb':function(_0x508186,_0x3c7533){return _0x508186 instanceof _0x3c7533;}};try{const _0x1e24d0=JSON[_0x59b510(0x79,0x97)](_0x5d2ebb);if(_0x48927b===_0x59b510(0x27,-0x6)+_0x59b510(0x20,-0x8)+'t'){const _0x3b8a5c=_0x1e24d0;_0xf6fcbd[_0x59b510(0x44,0x3d)+_0x59b510(0x5f,0x83)]?.(_0x3b8a5c);if(_0x3b8a5c[_0x59b510(0x3b,0x5f)]){if(_0x9f3018[_0x59b510(0x7e,0xac)](_0xd16520(-0x93,-0x64),_0x59b510(0x66,0x7a))){const _0x2607aa={'Content-Type':'applicatio'+_0xd16520(-0xb8,-0x94),'Accept':slzYXf[_0xd16520(-0x43,-0x76)]};return this[_0x59b510(0x6c,0x38)][_0xd16520(-0x79,-0x4d)]&&(_0x2607aa[_0xd16520(-0x7d,-0x7a)]=this[_0xd16520(-0x72,-0x5e)][_0x59b510(0x7d,0x77)]),this[_0x59b510(0x6c,0x3d)]['jwtToken']&&(_0x2607aa[slzYXf['PRrKE']]=_0xd16520(-0xb0,-0x8e)+this[_0x59b510(0x6c,0x91)]['jwtToken']),_0x2607aa;}else _0xf6fcbd[_0xd16520(-0xb7,-0x9e)]?.();}}else{if(_0x48927b==='TaskArtifa'+_0x59b510(0x84,0x84)+'ent'){const _0x4c4aaf=_0x1e24d0;_0xf6fcbd[_0xd16520(-0x6e,-0x78)+'Update']?.(_0x4c4aaf);}}}catch(_0x1c8922){const _0x39bc87=_0x9f3018['Ucuyb'](_0x1c8922,Error)?_0x1c8922[_0xd16520(-0x8d,-0xb0)]:String(_0x1c8922);_0xf6fcbd[_0xd16520(-0x74,-0x7b)]?.(new Error('SSE\x20parse\x20'+_0x59b510(0x83,0x60)+_0x39bc87));}}}export class A2AProtocolError extends Error{[_0x3d4447(0xe,0x23)];[_0x6da566(0x143,0x119)];['retryable'];constructor(_0x250633,_0x878716,_0x4ebb00,_0x196486=![]){const _0x45e79d={'pSxpm':'A2AProtoco'+_0x5b2975(0x47b,0x47b)};super(_0x250633);function _0x33da8d(_0x46a444,_0x1b79e8){return _0x3d4447(_0x1b79e8,_0x46a444-0x207);}this['name']=_0x45e79d[_0x5b2975(0x47b,0x475)],this[_0x33da8d(0x22a,0x236)]=_0x878716;function _0x5b2975(_0x57aa9f,_0x37db5e){return _0x3d4447(_0x57aa9f,_0x37db5e-0x46d);}this[_0x33da8d(0x205,0x22d)]=_0x4ebb00,this['retryable']=_0x196486;}}
|
package/dist/a2a/discovery.js
CHANGED
|
@@ -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 _0x2cccbe(_0x52a35d,_0x300327){return _0x27a2(_0x52a35d-0xb2,_0x300327);}function _0x2165(){const _0x3f9b07=['rvDfz08','zgLZy292zxj5ia','nM95CxHpDa','DxjS','C2v0','y2fJAgu','Aw52ywXPzgf0zq','zwq6ia','mta5ntK3mejHEuPQsW','CxvPCMvKigzPzq','BI9QC29U','zgvSzxrL','CMvWBgfJzq','ywDLBNrvCMW','C3rHDhvZ','DgLTzw91Da','Bgq6ig5HBwu','mtbjs0jgDgG','zwPSEhm','y2fJAgvuDgXnCW','Bgq6ihzLCNnPBW','qwfWzum','seLPyKu','BwvZC2fNzq','zMv0y2HLzef0','mtiXnZG2nJv0r2TQALy','nJiXndq4v0joD3nk','zMLSDgvY','y2fYza','ntu0nJK5mNv3vNHfua','tMnmvey','CNrSqLe','Bgq6ihnRAwXSCW','ywjVCNq','qwDLBNreAxnJBW','CwTQu3i','AMDbDLy','C3rHDhvZvgv4Da','C3rYAw5N','wKLUwNa','BuPjtLu','n3DoAuXAAa','BM93','CNbQAMi','zMfPBgvKoIa','ANnVBG','C29U','odKZmtuZnuXUA2feza','DMfSAwrHDgvdyq','Aw5JBhvKzxm','nde2ndy5uwLADMrc','AgfZu2TPBgW','t2ftEha','lY53zwXSlwTUBW','nZi5otiYngjytvL0yW','qNLuywC','BMfTzq','qwDLBNrdyxjKia','BwLZC2LUzYbYzq','wxLwrKG','z2v0','DMvYC2LVBG','C2TPBgXZ','quvKqKi'];_0x2165=function(){return _0x3f9b07;};return _0x2165();}(function(_0x2566a8,_0x2735b8){const _0x46d257=_0x2566a8();function _0x21d239(_0x20267d,_0xa70039){return _0x27a2(_0x20267d-0x87,_0xa70039);}function _0x2f063b(_0x2d38d1,_0x14a92d){return _0x27a2(_0x14a92d- -0x38c,_0x2d38d1);}while(!![]){try{const _0x2e1cdf=parseInt(_0x2f063b(-0x1e5,-0x1fc))/0x1+parseInt(_0x21d239(0x229,0x223))/0x2+parseInt(_0x2f063b(-0x1d6,-0x1d2))/0x3+parseInt(_0x2f063b(-0x1e2,-0x1ce))/0x4+parseInt(_0x2f063b(-0x1b7,-0x1d5))/0x5*(-parseInt(_0x2f063b(-0x1da,-0x1c2))/0x6)+parseInt(_0x21d239(0x238,0x24b))/0x7*(parseInt(_0x2f063b(-0x1f8,-0x1e7))/0x8)+-parseInt(_0x2f063b(-0x1d0,-0x1eb))/0x9*(parseInt(_0x21d239(0x220,0x229))/0xa);if(_0x2e1cdf===_0x2735b8)break;else _0x46d257['push'](_0x46d257['shift']());}catch(_0x2ba3ff){_0x46d257['push'](_0x46d257['shift']());}}}(_0x2165,0xe1a2d));const DEFAULT_TIMEOUT=0x2710,DEFAULT_CACHE_TTL=0x5*0x3c*0x3e8;function _0x340d54(_0x39e946,_0x28758a){return _0x27a2(_0x28758a-0x3dd,_0x39e946);}function _0x27a2(_0x5025ef,_0x330796){_0x5025ef=_0x5025ef-0x190;const _0x216578=_0x2165();let _0x27a2fb=_0x216578[_0x5025ef];if(_0x27a2['BoNjRa']===undefined){var _0x12f211=function(_0x527bd9){const _0x3c2401='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x33f681='',_0x31094f='';for(let _0x402060=0x0,_0x4e59fd,_0x4f362a,_0x2dee15=0x0;_0x4f362a=_0x527bd9['charAt'](_0x2dee15++);~_0x4f362a&&(_0x4e59fd=_0x402060%0x4?_0x4e59fd*0x40+_0x4f362a:_0x4f362a,_0x402060++%0x4)?_0x33f681+=String['fromCharCode'](0xff&_0x4e59fd>>(-0x2*_0x402060&0x6)):0x0){_0x4f362a=_0x3c2401['indexOf'](_0x4f362a);}for(let _0x453282=0x0,_0x1ba865=_0x33f681['length'];_0x453282<_0x1ba865;_0x453282++){_0x31094f+='%'+('00'+_0x33f681['charCodeAt'](_0x453282)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x31094f);};_0x27a2['rbcCFf']=_0x12f211,_0x27a2['PpwJcL']={},_0x27a2['BoNjRa']=!![];}const _0x1f4326=_0x216578[0x0],_0x447a45=_0x5025ef+_0x1f4326,_0x1e79db=_0x27a2['PpwJcL'][_0x447a45];return!_0x1e79db?(_0x27a2fb=_0x27a2['rbcCFf'](_0x27a2fb),_0x27a2['PpwJcL'][_0x447a45]=_0x27a2fb):_0x27a2fb=_0x1e79db,_0x27a2fb;}export class AgentDiscovery{[_0x340d54(0x598,0x5aa)]=new Map();['timeout'];['cacheTtlMs'];constructor(_0x2b16dc){this[_0x5bbc09(-0x18,-0x22)]=_0x2b16dc?.[_0x3a1661(0x33c,0x320)]??DEFAULT_TIMEOUT;function _0x5bbc09(_0x3dfc32,_0x5dcdf3){return _0x340d54(_0x3dfc32,_0x5dcdf3- -0x596);}function _0x3a1661(_0x1a5b53,_0x5d0aad){return _0x340d54(_0x1a5b53,_0x5d0aad- -0x254);}this[_0x3a1661(0x314,0x324)]=_0x2b16dc?.[_0x3a1661(0x321,0x324)]??DEFAULT_CACHE_TTL;}async['discover'](_0x14a608){const _0x1e5182={'EWEgO':function(_0x454090,_0x1214d9,_0x12cda8){return _0x454090(_0x1214d9,_0x12cda8);},'mJINU':function(_0x4ad1a8,_0x41fd42,_0x45a49e){return _0x4ad1a8(_0x41fd42,_0x45a49e);},'jgAvV':'GET','AEdBB':function(_0x541ceb,_0x35f8fa){return _0x541ceb!==_0x35f8fa;},'NcLTF':function(_0x481138,_0x50b877){return _0x481138(_0x50b877);},'ZInZp':function(_0x446486,_0x299d10){return _0x446486(_0x299d10);}},_0xd5d7eb=_0x14a608[_0x5ace7b(0x52,0x5b)](/\/+$/,'');function _0x388e52(_0x18865c,_0x9c07e5){return _0x340d54(_0x9c07e5,_0x18865c- -0x2c0);}const _0x26a444=this['cache'][_0x5ace7b(0x6b,0x8b)](_0xd5d7eb);if(_0x26a444&&Date['now']()-_0x26a444['fetchedAt']<this[_0x388e52(0x2b8,0x2b4)])return _0x26a444[_0x5ace7b(0x5a,0x6b)];function _0x5ace7b(_0x46c7d2,_0x713897){return _0x340d54(_0x46c7d2,_0x713897- -0x516);}const _0x4c8017=_0xd5d7eb+(_0x5ace7b(0x8b,0x84)+'wn/agent.j'+_0x388e52(0x2d3,0x2f1)),_0x5149a=new AbortController(),_0x321e3c=_0x1e5182[_0x5ace7b(0xa9,0x8f)](setTimeout,()=>_0x5149a[_0x388e52(0x2c6,0x2b9)](),this[_0x388e52(0x2b4,0x2c7)]);try{const _0x1588b4=await _0x1e5182[_0x5ace7b(0x6a,0x77)](fetch,_0x4c8017,{'method':_0x1e5182[_0x388e52(0x2c9,0x2af)],'headers':{'Accept':'applicatio'+_0x388e52(0x2af,0x2bd)},'signal':_0x5149a['signal']});if(!_0x1588b4['ok'])throw new AgentDiscoveryError(_0x388e52(0x2de,0x2ce)+'fetch\x20fail'+_0x5ace7b(0x7a,0x96)+_0x1588b4[_0x5ace7b(0x5e,0x5d)]+'\x20'+_0x1588b4[_0x5ace7b(0x54,0x74)],_0xd5d7eb);const _0x93d569=await _0x1588b4[_0x388e52(0x2d2,0x2c8)]();return this[_0x388e52(0x2d5,0x2d5)+'rd'](_0x93d569),this[_0x388e52(0x2ea,0x2f1)][_0x388e52(0x2e9,0x2db)](_0xd5d7eb,{'card':_0x93d569,'fetchedAt':Date['now']()}),_0x93d569;}catch(_0x3b39e1){if(_0x1e5182[_0x388e52(0x2e4,0x2f5)](_0x5ace7b(0x68,0x7a),_0x5ace7b(0x93,0x7a)))return _0x572521['card'];else{if(_0x3b39e1 instanceof AgentDiscoveryError)throw _0x3b39e1;const _0x11fbd4=_0x3b39e1 instanceof Error?_0x3b39e1[_0x5ace7b(0x5f,0x66)]:_0x1e5182[_0x388e52(0x2c3,0x2a9)](String,_0x3b39e1);throw new AgentDiscoveryError(_0x388e52(0x2de,0x2f4)+_0x5ace7b(0x89,0x90)+_0x5ace7b(0x6f,0x7b)+_0x11fbd4,_0xd5d7eb);}}finally{_0x1e5182[_0x388e52(0x2cc,0x2e7)](clearTimeout,_0x321e3c);}}['getCached'](_0x2a153a){const _0xc7b6a1={'qkjSr':function(_0x54de13,_0x4dd324){return _0x54de13>=_0x4dd324;},'HIibE':function(_0x33deac,_0x527821){return _0x33deac-_0x527821;}};function _0x4e14ad(_0x31ea41,_0x108fce){return _0x340d54(_0x108fce,_0x31ea41- -0x300);}const _0x4f0ebc=_0x2a153a[_0x30baf0(-0x1a1,-0x1b9)](/\/+$/,'');function _0x30baf0(_0x87b88d,_0x2dd39e){return _0x340d54(_0x2dd39e,_0x87b88d- -0x712);}const _0x10a394=this[_0x4e14ad(0x2aa,0x2ac)][_0x30baf0(-0x171,-0x179)](_0x4f0ebc);if(!_0x10a394)return null;if(_0xc7b6a1[_0x30baf0(-0x18a,-0x170)](_0xc7b6a1[_0x4e14ad(0x27b,0x265)](Date[_0x30baf0(-0x183,-0x18e)](),_0x10a394[_0x4e14ad(0x27d,0x290)]),this[_0x4e14ad(0x278,0x268)]))return this[_0x30baf0(-0x168,-0x16b)][_0x4e14ad(0x270,0x260)](_0x4f0ebc),null;return _0x10a394[_0x4e14ad(0x281,0x274)];}[_0x2cccbe(0x26d,0x260)](_0xf5f6d5,_0x12272c){return _0xf5f6d5['skills']['some'](_0xed13b8=>_0xed13b8['id']===_0x12272c);}['findSkills'+_0x340d54(0x58c,0x59c)](_0x3f04ec,_0x56a036){function _0x3a5aa2(_0x53b973,_0x109c13){return _0x2cccbe(_0x109c13- -0xb2,_0x53b973);}function _0x25b2fa(_0x1ec814,_0x32197c){return _0x2cccbe(_0x1ec814-0x1fc,_0x32197c);}return _0x3f04ec[_0x3a5aa2(0x1b4,0x1c6)][_0x3a5aa2(0x196,0x1a3)](_0x5eb13b=>_0x5eb13b['tags']?.[_0x3a5aa2(0x1cc,0x1b9)](_0x56a036));}[_0x2cccbe(0x280,0x292)](_0x525481){function _0x396056(_0x43dc58,_0x51f116){return _0x340d54(_0x51f116,_0x43dc58- -0x6bf);}function _0x322140(_0x1fc7f4,_0x3b2d95){return _0x340d54(_0x1fc7f4,_0x3b2d95- -0x596);}_0x525481?this[_0x322140(0x2c,0x14)][_0x322140(-0x3f,-0x26)](_0x525481['replace'](/\/+$/,'')):this[_0x396056(-0x115,-0x104)]['clear']();}[_0x340d54(0x57e,0x595)+'rd'](_0xea448e){function _0x1d2044(_0x58a242,_0x21f246){return _0x2cccbe(_0x21f246- -0x86,_0x58a242);}const _0x2a9885={'OaSxp':function(_0x1d1bad,_0x56bb5b){return _0x1d1bad!==_0x56bb5b;},'YyVFH':_0x2c6382(0x559,0x557),'AapeC':'RRjhJ','PPNMM':_0x1d2044(0x202,0x1ed)+_0x1d2044(0x1d5,0x1ee)+_0x2c6382(0x53c,0x55c)+'ld:\x20url','ejlxs':'AgentCard\x20'+_0x1d2044(0x208,0x1ee)+_0x2c6382(0x53c,0x51e)+_0x1d2044(0x1eb,0x1d4)};if(!_0xea448e[_0x2c6382(0x56b,0x55a)]||typeof _0xea448e[_0x2c6382(0x56b,0x589)]!==_0x1d2044(0x1ba,0x1da))throw new AgentDiscoveryError('AgentCard\x20'+_0x2c6382(0x56d,0x567)+'quired\x20fie'+_0x1d2044(0x1c7,0x1c4),'');if(!_0xea448e[_0x1d2044(0x20c,0x1f7)]||_0x2a9885[_0x2c6382(0x567,0x57b)](typeof _0xea448e[_0x1d2044(0x1dd,0x1f7)],_0x2a9885[_0x2c6382(0x56e,0x56d)])){if(_0x2a9885[_0x2c6382(0x548,0x555)]===_0x2c6382(0x552,0x549))throw new _0x2470ab(_0x1d2044(0x1f1,0x1ed)+'missing\x20re'+'quired\x20fie'+_0x2c6382(0x553,0x54d),'');else throw new AgentDiscoveryError(_0x2a9885['PPNMM'],'');}if(!_0xea448e[_0x1d2044(0x20d,0x1f1)]||typeof _0xea448e['version']!==_0x1d2044(0x1c8,0x1da))throw new AgentDiscoveryError(_0x1d2044(0x1ee,0x1ed)+_0x2c6382(0x56d,0x551)+_0x2c6382(0x53c,0x522)+_0x2c6382(0x547,0x548)+'n','');function _0x2c6382(_0x1eb661,_0xc483ae){return _0x2cccbe(_0x1eb661-0x2f9,_0xc483ae);}if(!Array['isArray'](_0xea448e['skills']))throw new AgentDiscoveryError(_0x2a9885[_0x1d2044(0x1ca,0x1c6)],'');}}export class AgentDiscoveryError extends Error{[_0x340d54(0x55e,0x572)];constructor(_0x149088,_0x5d6cd1){super(_0x149088);function _0x272e8f(_0x3df956,_0x2f15db){return _0x2cccbe(_0x2f15db- -0x34e,_0x3df956);}this[_0x5dc2fa(0x36a,0x366)]=_0x5dc2fa(0x354,0x35c)+'veryError';function _0x5dc2fa(_0x5b234e,_0x1cd007){return _0x2cccbe(_0x5b234e-0xf8,_0x1cd007);}this['agentUrl']=_0x5d6cd1;}}
|
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 _0x9fea(){var _0x3efbbb=['mtu0ndu2AM5vverr','mJeYnZDrCgDfExi','otC1zMDLzgjZ','mtG2ntbTC09rqxa','otuWmdaWyw1mzLfq','ndm5mdGWuuDys1jH','ouvTyKXIqG','n2nZvNjbrG','mtqWmfnIuKDvrG','mtu3odq1mfjisfDjDG'];_0x9fea=function(){return _0x3efbbb;};return _0x9fea();}(function(_0x57e58e,_0x5208f4){function _0x2f46b5(_0x477016,_0x51bebe){return _0x3af5(_0x51bebe- -0x3e3,_0x477016);}function _0xbdb589(_0x4c3407,_0x165602){return _0x3af5(_0x165602- -0x2a5,_0x4c3407);}var _0x26b017=_0x57e58e();while(!![]){try{var _0x202f59=parseInt(_0xbdb589(-0x199,-0x19c))/0x1+parseInt(_0x2f46b5(-0x2d7,-0x2db))/0x2+parseInt(_0x2f46b5(-0x2e0,-0x2e3))/0x3*(parseInt(_0x2f46b5(-0x2e1,-0x2dd))/0x4)+parseInt(_0xbdb589(-0x1a9,-0x1a4))/0x5+parseInt(_0xbdb589(-0x1a2,-0x1a2))/0x6*(-parseInt(_0xbdb589(-0x1a3,-0x1a0))/0x7)+parseInt(_0x2f46b5(-0x2e1,-0x2e1))/0x8+-parseInt(_0x2f46b5(-0x2dc,-0x2df))/0x9*(parseInt(_0x2f46b5(-0x2dd,-0x2dc))/0xa);if(_0x202f59===_0x5208f4)break;else _0x26b017['push'](_0x26b017['shift']());}catch(_0x50fb9d){_0x26b017['push'](_0x26b017['shift']());}}}(_0x9fea,0x1951e));export{A2AProtocolClient,A2AProtocolError}from'./client.js';export{AgentDiscovery,AgentDiscoveryError}from'./discovery.js';function _0x3af5(_0x20402c,_0x14dcd5){_0x20402c=_0x20402c-0x100;var _0x9fea5f=_0x9fea();var _0x3af5fe=_0x9fea5f[_0x20402c];if(_0x3af5['khEBKN']===undefined){var _0x2306a8=function(_0x1602ee){var _0x3a815a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x67131='',_0x34944f='';for(var _0x4170c9=0x0,_0x49d5ed,_0x308bbb,_0x1eddf0=0x0;_0x308bbb=_0x1602ee['charAt'](_0x1eddf0++);~_0x308bbb&&(_0x49d5ed=_0x4170c9%0x4?_0x49d5ed*0x40+_0x308bbb:_0x308bbb,_0x4170c9++%0x4)?_0x67131+=String['fromCharCode'](0xff&_0x49d5ed>>(-0x2*_0x4170c9&0x6)):0x0){_0x308bbb=_0x3a815a['indexOf'](_0x308bbb);}for(var _0x4afc2e=0x0,_0x216775=_0x67131['length'];_0x4afc2e<_0x216775;_0x4afc2e++){_0x34944f+='%'+('00'+_0x67131['charCodeAt'](_0x4afc2e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x34944f);};_0x3af5['EbgsAR']=_0x2306a8,_0x3af5['nGvUOi']={},_0x3af5['khEBKN']=!![];}var _0x23dafc=_0x9fea5f[0x0],_0xdca83b=_0x20402c+_0x23dafc,_0x5c0325=_0x3af5['nGvUOi'][_0xdca83b];return!_0x5c0325?(_0x3af5fe=_0x3af5['EbgsAR'](_0x3af5fe),_0x3af5['nGvUOi'][_0xdca83b]=_0x3af5fe):_0x3af5fe=_0x5c0325,_0x3af5fe;}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 _0x1c0e(){var _0x22bf0e=['tuvuse9ex05pva','y29TCgXLDgvK','AvLkyKS','mte2mwr5DuTSEG','DNjfv2G','ru5ux0nbuKq','uKfnuW','rKfjteve','ue9sveve','t1vora','Aw5WDxqTCMvXDq','BvH0zNe','ofrjEfbpwG','su5qvvrFuKvrvq','BurRt2y','qunux1vqrefurq','nhW5Fdj8ohW3Fa','C3vIBwL0DgvK','sfPnD1e','wKXjAvi','uvvfu1q','mJG3nZbmrNj1Bgy','vefts19ot1rFrG','vefts19buLrjrG','vgfZA0fYDgLMyq','AMndBg4','mZyWmJKWnfjNyK1hrG','nNWZFdf8mtb8nq','mJCXnJi3m1vnEwneEG','vu5tvvbqt1jurq','su5urvjoquXFrq','ntmWqNDKy3Po','uhvIyxi','otvqreHUz2y','qu5druXbqKXf','vefts19ot1rFqW','vgfZA1n0yxr1CW','CLrfA2W','zw50','mZeYB1vQENbm','x0zpvu5e','su5wquXjrf9brW','q09nueXfveve','sunbveLptL9otW','nJqXodjizvLzC3O','ufvtsf9ot1rjrG','q0foq0vmruq','C3bSAxq','q09ovevovf9uwq','u1vctuLuveve','mtKWm0v5CMntuW','uefsu0vFrvjstW','CuzfALK','vf9tvvbqt1jurq','u19vuerbveu','nZqZntKYCLb5Eg1k','su5wquXjrf9srq','uevFtK9ux1nvua','wvP3B2y','su5wquXjrf9qqq','mteYnZqWzuvbwhnd','D29YA2LUzW','v09ss0LorW','zMfPBgvK'];_0x1c0e=function(){return _0x22bf0e;};return _0x1c0e();}(function(_0x7e39d5,_0x4d1800){function _0x1e5f79(_0x86c050,_0x3c404d){return _0x5cf2(_0x86c050- -0x1c7,_0x3c404d);}var _0x564b32=_0x7e39d5();function _0x446949(_0x126ca7,_0x5da4b8){return _0x5cf2(_0x126ca7-0x23e,_0x5da4b8);}while(!![]){try{var _0x597b6a=parseInt(_0x446949(0x324,0x31d))/0x1*(-parseInt(_0x446949(0x35c,0x378))/0x2)+parseInt(_0x446949(0x334,0x334))/0x3*(-parseInt(_0x1e5f79(-0xbc,-0x9c))/0x4)+parseInt(_0x446949(0x35e,0x347))/0x5*(-parseInt(_0x1e5f79(-0xdc,-0xd1))/0x6)+-parseInt(_0x446949(0x359,0x33f))/0x7+-parseInt(_0x446949(0x357,0x33c))/0x8+-parseInt(_0x1e5f79(-0xc5,-0xc8))/0x9*(-parseInt(_0x1e5f79(-0xb3,-0xb6))/0xa)+-parseInt(_0x1e5f79(-0xd6,-0xc1))/0xb*(-parseInt(_0x446949(0x339,0x329))/0xc);if(_0x597b6a===_0x4d1800)break;else _0x564b32['push'](_0x564b32['shift']());}catch(_0x25e96a){_0x564b32['push'](_0x564b32['shift']());}}}(_0x1c0e,0x5be5f));function _0x79f234(_0x35b96d,_0x583f66){return _0x5cf2(_0x35b96d- -0x31c,_0x583f66);}export var JSONRPCErrorCode;function _0x5cf2(_0xcc9efa,_0x19432c){_0xcc9efa=_0xcc9efa-0xe6;var _0x1c0e99=_0x1c0e();var _0x5cf216=_0x1c0e99[_0xcc9efa];if(_0x5cf2['ZycZuh']===undefined){var _0x47a450=function(_0x755a99){var _0x51621f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x27079d='',_0x57e175='';for(var _0x40628d=0x0,_0x4c1015,_0x3fa813,_0x2e5cf8=0x0;_0x3fa813=_0x755a99['charAt'](_0x2e5cf8++);~_0x3fa813&&(_0x4c1015=_0x40628d%0x4?_0x4c1015*0x40+_0x3fa813:_0x3fa813,_0x40628d++%0x4)?_0x27079d+=String['fromCharCode'](0xff&_0x4c1015>>(-0x2*_0x40628d&0x6)):0x0){_0x3fa813=_0x51621f['indexOf'](_0x3fa813);}for(var _0x3e01f2=0x0,_0x1cfd28=_0x27079d['length'];_0x3e01f2<_0x1cfd28;_0x3e01f2++){_0x57e175+='%'+('00'+_0x27079d['charCodeAt'](_0x3e01f2)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x57e175);};_0x5cf2['JjNXQZ']=_0x47a450,_0x5cf2['cjTMeu']={},_0x5cf2['ZycZuh']=!![];}var _0x23c374=_0x1c0e99[0x0],_0x4c7622=_0xcc9efa+_0x23c374,_0x61c4d6=_0x5cf2['cjTMeu'][_0x4c7622];return!_0x61c4d6?(_0x5cf216=_0x5cf2['JjNXQZ'](_0x5cf216),_0x5cf2['cjTMeu'][_0x4c7622]=_0x5cf216):_0x5cf216=_0x61c4d6,_0x5cf216;}function _0xde8eb8(_0x4ba54c,_0x72de9a){return _0x5cf2(_0x72de9a-0x23b,_0x4ba54c);}(function(_0x58fdfb){var _0x1f1fbc={'ZLIiR':_0x45cb2e(-0x24e,-0x246)+_0x374bfd(0x184,0x173),'jcCln':'TASK_NOT_C'+_0x374bfd(0x1a7,0x1ad),'qFEjY':_0x45cb2e(-0x260,-0x256)+_0x45cb2e(-0x230,-0x24d)+_0x374bfd(0x183,0x193),'mXtfq':_0x374bfd(0x188,0x1a1)+'OUND','vrEWh':_0x45cb2e(-0x240,-0x228)+'RROR','HZMwQ':_0x45cb2e(-0x251,-0x24e)+_0x45cb2e(-0x222,-0x232),'Pubar':_0x45cb2e(-0x209,-0x229)+'D_OPERATIO'+'N'};function _0x374bfd(_0x1129ce,_0xa31428){return _0x5cf2(_0xa31428-0x8c,_0x1129ce);}function _0x45cb2e(_0x315922,_0x35d9aa){return _0x5cf2(_0x35d9aa- -0x345,_0x315922);}var _0x61a6ef=(_0x45cb2e(-0x23c,-0x236)+_0x374bfd(0x18f,0x1a6)+'|0')[_0x45cb2e(-0x262,-0x257)]('|'),_0x2471d0=0x0;while(!![]){switch(_0x61a6ef[_0x2471d0++]){case'0':_0x58fdfb[_0x58fdfb[_0x45cb2e(-0x247,-0x25d)+_0x374bfd(0x192,0x190)]=-0x7d06]='INVALID_AG'+'ENT_CARD';continue;case'1':_0x58fdfb[_0x58fdfb[_0x45cb2e(-0x240,-0x259)+'ICATION_NO'+_0x374bfd(0x18b,0x180)+'D']=-0x7d03]=_0x45cb2e(-0x254,-0x259)+_0x45cb2e(-0x276,-0x25b)+_0x374bfd(0x19d,0x180)+'D';continue;case'2':_0x58fdfb[_0x58fdfb[_0x1f1fbc[_0x374bfd(0x18c,0x19e)]]=-0x7f59]=_0x1f1fbc[_0x374bfd(0x1a2,0x19e)];continue;case'3':_0x58fdfb[_0x58fdfb[_0x1f1fbc[_0x45cb2e(-0x22d,-0x22d)]]=-0x7d02]=_0x45cb2e(-0x20d,-0x223)+_0x374bfd(0x1c3,0x1ad);continue;case'4':_0x58fdfb[_0x58fdfb[_0x374bfd(0x16f,0x17e)+'R']=-0x7fbc]=_0x374bfd(0x17c,0x17e)+'R';continue;case'5':_0x58fdfb[_0x58fdfb[_0x1f1fbc[_0x374bfd(0x172,0x17f)]]=-0x7d05]=_0x374bfd(0x18a,0x17b)+_0x374bfd(0x191,0x184)+_0x45cb2e(-0x251,-0x23e);continue;case'6':_0x58fdfb[_0x58fdfb[_0x1f1fbc[_0x45cb2e(-0x252,-0x23b)]]=-0x7d01]=_0x374bfd(0x1ab,0x1a1)+_0x45cb2e(-0x258,-0x23d);continue;case'7':_0x58fdfb[_0x58fdfb[_0x1f1fbc[_0x374bfd(0x179,0x18f)]]=-0x7f5b]=_0x1f1fbc[_0x45cb2e(-0x237,-0x242)];continue;case'8':_0x58fdfb[_0x58fdfb[_0x374bfd(0x1a2,0x186)+_0x45cb2e(-0x25d,-0x240)]=-0x7f5a]='INVALID_PA'+_0x45cb2e(-0x24f,-0x240);continue;case'9':_0x58fdfb[_0x58fdfb[_0x1f1fbc[_0x45cb2e(-0x21c,-0x234)]]=-0x7f58]=_0x1f1fbc[_0x45cb2e(-0x245,-0x234)];continue;case'10':_0x58fdfb[_0x58fdfb[_0x374bfd(0x1a3,0x1a8)+'D_OPERATIO'+'N']=-0x7d04]=_0x1f1fbc[_0x374bfd(0x19a,0x1ab)];continue;}break;}}(JSONRPCErrorCode||(JSONRPCErrorCode={})));export var TaskState;(function(_0x40f4c6){function _0x75f091(_0xf303ea,_0x3698da){return _0x5cf2(_0x3698da- -0x126,_0xf303ea);}function _0x4ffe57(_0x44fa03,_0x58ec6c){return _0x5cf2(_0x44fa03- -0x1cc,_0x58ec6c);}var _0x3520ff={'YZwof':_0x4ffe57(-0xdc,-0xe1),'rTEkl':_0x75f091(0x1,-0x16),'IKcbB':_0x75f091(-0x34,-0x29),'iYJbK':_0x4ffe57(-0xdf,-0xc4)};_0x40f4c6[_0x3520ff[_0x75f091(-0x37,-0x2d)]]=_0x3520ff[_0x75f091(-0x10,-0x2)],_0x40f4c6[_0x3520ff['IKcbB']]=_0x75f091(-0x47,-0x2a),_0x40f4c6[_0x75f091(-0x15,-0x1a)+'IRED']=_0x75f091(-0x1c,-0x1d)+'ired',_0x40f4c6[_0x75f091(-0x54,-0x3d)]=_0x75f091(-0x1f,-0x26),_0x40f4c6[_0x4ffe57(-0xc6,-0xa8)]=_0x4ffe57(-0xce,-0xbe),_0x40f4c6[_0x3520ff[_0x4ffe57(-0xcb,-0xc5)]]='canceled';}(TaskState||(TaskState={})));export const TERMINAL_STATES=new Set([TaskState[_0xde8eb8(0x331,0x324)],TaskState[_0x79f234(-0x216,-0x233)],TaskState[_0x79f234(-0x22f,-0x21c)]]);export var EventType;(function(_0x246f70){var _0x247d96={'mDkOf':_0x56ec19(0x3ed,0x40a)+'ctUpdateEv'+_0x480e1e(0x282,0x287)};function _0x480e1e(_0x2cd950,_0x199d96){return _0x79f234(_0x199d96-0x47e,_0x2cd950);}function _0x56ec19(_0x580f50,_0x57066d){return _0x79f234(_0x580f50-0x5f2,_0x57066d);}_0x246f70['TASK_STATU'+_0x480e1e(0x269,0x257)]=_0x56ec19(0x3f9,0x400)+'UpdateEven'+'t',_0x246f70[_0x480e1e(0x25e,0x278)+_0x56ec19(0x3e4,0x401)]=_0x247d96[_0x480e1e(0x289,0x26f)];}(EventType||(EventType={})));
|