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
|
@@ -1,387 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Setup Wizard
|
|
3
|
-
*
|
|
4
|
-
* One-click interactive setup wizard for A2A Memory Plugin.
|
|
5
|
-
* Automates all 7 manual setup steps into a single guided flow.
|
|
6
|
-
*/
|
|
7
|
-
import { createInterface } from 'node:readline';
|
|
8
|
-
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
9
|
-
import { join } from 'node:path';
|
|
10
|
-
import { homedir } from 'node:os';
|
|
11
|
-
import { execSync } from 'node:child_process';
|
|
12
|
-
import chalk from 'chalk';
|
|
13
|
-
import { ConfigManager } from '../../config/manager.js';
|
|
14
|
-
const CLAUDE_SETTINGS_PATH = join(homedir(), '.claude', 'settings.json');
|
|
15
|
-
const DEFAULT_SERVER_URL = 'https://a2a-api-production-8d17.up.railway.app';
|
|
16
|
-
const AGENT_NAME = 'claude-code-plugin';
|
|
17
|
-
// ──────────────────────────────────────────────
|
|
18
|
-
// readline helpers
|
|
19
|
-
// ──────────────────────────────────────────────
|
|
20
|
-
function createRl() {
|
|
21
|
-
return createInterface({
|
|
22
|
-
input: process.stdin,
|
|
23
|
-
output: process.stdout,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
async function prompt(rl, question) {
|
|
27
|
-
return new Promise((resolve) => {
|
|
28
|
-
rl.question(question, (answer) => {
|
|
29
|
-
resolve(answer.trim());
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
async function promptWithDefault(rl, question, defaultValue) {
|
|
34
|
-
const answer = await prompt(rl, ` ${question} [${chalk.dim(defaultValue)}]: `);
|
|
35
|
-
return answer === '' ? defaultValue : answer;
|
|
36
|
-
}
|
|
37
|
-
async function promptPassword(rl, question) {
|
|
38
|
-
return new Promise((resolve) => {
|
|
39
|
-
// stdin이 TTY일 때만 에코 끄기 시도
|
|
40
|
-
const stdin = process.stdin;
|
|
41
|
-
process.stdout.write(` ${question}: `);
|
|
42
|
-
let password = '';
|
|
43
|
-
if (stdin.setRawMode) {
|
|
44
|
-
stdin.setRawMode(true);
|
|
45
|
-
stdin.resume();
|
|
46
|
-
stdin.setEncoding('utf8');
|
|
47
|
-
const onData = (char) => {
|
|
48
|
-
if (char === '\r' || char === '\n') {
|
|
49
|
-
stdin.setRawMode(false);
|
|
50
|
-
stdin.pause();
|
|
51
|
-
stdin.removeListener('data', onData);
|
|
52
|
-
process.stdout.write('\n');
|
|
53
|
-
resolve(password);
|
|
54
|
-
}
|
|
55
|
-
else if (char === '\u0003') {
|
|
56
|
-
// Ctrl+C
|
|
57
|
-
process.exit(0);
|
|
58
|
-
}
|
|
59
|
-
else if (char === '\u007F') {
|
|
60
|
-
// Backspace
|
|
61
|
-
if (password.length > 0) {
|
|
62
|
-
password = password.slice(0, -1);
|
|
63
|
-
process.stdout.write('\b \b');
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
password += char;
|
|
68
|
-
process.stdout.write('*');
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
stdin.on('data', onData);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
// TTY가 아닌 경우 (테스트/파이프) 일반 readline 사용
|
|
75
|
-
rl.question('', (answer) => {
|
|
76
|
-
resolve(answer.trim());
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
// ──────────────────────────────────────────────
|
|
82
|
-
// Network helpers (testable, injectable)
|
|
83
|
-
// ──────────────────────────────────────────────
|
|
84
|
-
export async function checkServerHealth(serverUrl) {
|
|
85
|
-
try {
|
|
86
|
-
const res = await fetch(`${serverUrl}/api/v1/health`, {
|
|
87
|
-
signal: AbortSignal.timeout(5000),
|
|
88
|
-
});
|
|
89
|
-
return res.ok;
|
|
90
|
-
}
|
|
91
|
-
catch {
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
export async function loginAndGetToken(serverUrl, email, password) {
|
|
96
|
-
try {
|
|
97
|
-
const res = await fetch(`${serverUrl}/api/v1/auth/login`, {
|
|
98
|
-
method: 'POST',
|
|
99
|
-
headers: { 'Content-Type': 'application/json' },
|
|
100
|
-
body: JSON.stringify({ email, password }),
|
|
101
|
-
signal: AbortSignal.timeout(10000),
|
|
102
|
-
});
|
|
103
|
-
if (!res.ok) {
|
|
104
|
-
return null;
|
|
105
|
-
}
|
|
106
|
-
const data = (await res.json());
|
|
107
|
-
return data.token ?? null;
|
|
108
|
-
}
|
|
109
|
-
catch {
|
|
110
|
-
return null;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
export async function findExistingAgent(serverUrl, token, agentName) {
|
|
114
|
-
try {
|
|
115
|
-
const res = await fetch(`${serverUrl}/api/v1/agents?name=${encodeURIComponent(agentName)}`, {
|
|
116
|
-
headers: {
|
|
117
|
-
Authorization: `Bearer ${token}`,
|
|
118
|
-
'Content-Type': 'application/json',
|
|
119
|
-
},
|
|
120
|
-
signal: AbortSignal.timeout(10000),
|
|
121
|
-
});
|
|
122
|
-
if (!res.ok) {
|
|
123
|
-
return null;
|
|
124
|
-
}
|
|
125
|
-
const data = (await res.json());
|
|
126
|
-
const agents = Array.isArray(data) ? data : (data.agents ?? data.items ?? []);
|
|
127
|
-
const match = agents.find((a) => a.name === agentName);
|
|
128
|
-
return match ?? null;
|
|
129
|
-
}
|
|
130
|
-
catch {
|
|
131
|
-
return null;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
export async function createAgent(serverUrl, token, agentName) {
|
|
135
|
-
try {
|
|
136
|
-
const res = await fetch(`${serverUrl}/api/v1/agents`, {
|
|
137
|
-
method: 'POST',
|
|
138
|
-
headers: {
|
|
139
|
-
Authorization: `Bearer ${token}`,
|
|
140
|
-
'Content-Type': 'application/json',
|
|
141
|
-
},
|
|
142
|
-
body: JSON.stringify({
|
|
143
|
-
name: agentName,
|
|
144
|
-
description: 'Claude Code Plugin Agent — auto-registered by setup wizard',
|
|
145
|
-
capabilities: ['memory:read', 'memory:create', 'memory:update', 'memory:delete', 'memory:search'],
|
|
146
|
-
}),
|
|
147
|
-
signal: AbortSignal.timeout(10000),
|
|
148
|
-
});
|
|
149
|
-
if (!res.ok) {
|
|
150
|
-
return null;
|
|
151
|
-
}
|
|
152
|
-
return (await res.json());
|
|
153
|
-
}
|
|
154
|
-
catch {
|
|
155
|
-
return null;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
// ──────────────────────────────────────────────
|
|
159
|
-
// Config / Hook helpers (testable)
|
|
160
|
-
// ──────────────────────────────────────────────
|
|
161
|
-
export function saveServerConfig(configManager, serverUrl, apiKey) {
|
|
162
|
-
const config = configManager.load();
|
|
163
|
-
config.server.url = serverUrl;
|
|
164
|
-
configManager.save(config);
|
|
165
|
-
configManager.setApiKey(apiKey);
|
|
166
|
-
}
|
|
167
|
-
export function getPluginDir() {
|
|
168
|
-
const url = new URL(import.meta.url);
|
|
169
|
-
const filePath = url.pathname;
|
|
170
|
-
const parts = filePath.split('/');
|
|
171
|
-
// dist/cli/commands/setup-wizard.js → plugin/
|
|
172
|
-
return parts.slice(0, -4).join('/');
|
|
173
|
-
}
|
|
174
|
-
export function detectGlobalPluginDir() {
|
|
175
|
-
try {
|
|
176
|
-
const npmRoot = execSync('npm root -g', { encoding: 'utf8', timeout: 5000 }).trim();
|
|
177
|
-
const candidate = join(npmRoot, 'a2a-memory');
|
|
178
|
-
if (existsSync(candidate)) {
|
|
179
|
-
return candidate;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
catch {
|
|
183
|
-
// ignore
|
|
184
|
-
}
|
|
185
|
-
// Fallback: import.meta.url 기반
|
|
186
|
-
return getPluginDir();
|
|
187
|
-
}
|
|
188
|
-
export function registerHooksToSettings(settingsPath, pluginDir, force) {
|
|
189
|
-
let settings = {};
|
|
190
|
-
if (existsSync(settingsPath)) {
|
|
191
|
-
try {
|
|
192
|
-
settings = JSON.parse(readFileSync(settingsPath, 'utf-8'));
|
|
193
|
-
}
|
|
194
|
-
catch {
|
|
195
|
-
// 파싱 실패 시 빈 settings로 시작
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
if (!settings.hooks) {
|
|
199
|
-
settings.hooks = {};
|
|
200
|
-
}
|
|
201
|
-
const hasExisting = Object.values(settings.hooks).some((configs) => configs.some((c) => c.hooks?.some((h) => h.command?.includes('a2a-memory'))));
|
|
202
|
-
if (hasExisting && !force) {
|
|
203
|
-
return { registered: false, alreadyExisted: true };
|
|
204
|
-
}
|
|
205
|
-
const hooksDir = join(pluginDir, 'dist', 'hooks');
|
|
206
|
-
const hookEntries = [
|
|
207
|
-
['SessionStart', join(hooksDir, 'session-start.js')],
|
|
208
|
-
['PostToolUse', join(hooksDir, 'post-tool-use.js')],
|
|
209
|
-
['SessionEnd', join(hooksDir, 'session-end.js')],
|
|
210
|
-
['UserPromptSubmit', join(hooksDir, 'user-prompt-submit.js')],
|
|
211
|
-
['PreCompact', join(hooksDir, 'pre-compact.js')],
|
|
212
|
-
];
|
|
213
|
-
for (const [hookName, hookPath] of hookEntries) {
|
|
214
|
-
settings.hooks[hookName] = [
|
|
215
|
-
...(settings.hooks[hookName] ?? []).filter((c) => !c.hooks?.some((h) => h.command?.includes('a2a-memory'))),
|
|
216
|
-
{
|
|
217
|
-
matcher: '',
|
|
218
|
-
hooks: [{ type: 'command', command: `node ${hookPath}` }],
|
|
219
|
-
},
|
|
220
|
-
];
|
|
221
|
-
}
|
|
222
|
-
const settingsDir = join(homedir(), '.claude');
|
|
223
|
-
if (!existsSync(settingsDir)) {
|
|
224
|
-
mkdirSync(settingsDir, { recursive: true });
|
|
225
|
-
}
|
|
226
|
-
writeFileSync(settingsPath, JSON.stringify(settings, null, 2), 'utf-8');
|
|
227
|
-
return { registered: true, alreadyExisted: false };
|
|
228
|
-
}
|
|
229
|
-
// ──────────────────────────────────────────────
|
|
230
|
-
// Main wizard runner
|
|
231
|
-
// ──────────────────────────────────────────────
|
|
232
|
-
export async function runSetupWizard(options = {}) {
|
|
233
|
-
const result = {
|
|
234
|
-
success: false,
|
|
235
|
-
serverUrl: options.serverUrl ?? DEFAULT_SERVER_URL,
|
|
236
|
-
hooksRegistered: false,
|
|
237
|
-
};
|
|
238
|
-
const rl = createRl();
|
|
239
|
-
try {
|
|
240
|
-
// ── Header ──────────────────────────────
|
|
241
|
-
console.log('');
|
|
242
|
-
console.log(chalk.cyan('╔══════════════════════════════════════╗'));
|
|
243
|
-
console.log(chalk.cyan('║') + chalk.bold(' A2A Memory — Quick Setup Wizard ') + chalk.cyan('║'));
|
|
244
|
-
console.log(chalk.cyan('╚══════════════════════════════════════╝'));
|
|
245
|
-
console.log('');
|
|
246
|
-
// ── Step 1: Server URL ───────────────────
|
|
247
|
-
console.log(chalk.bold('Step 1/4: Server Connection'));
|
|
248
|
-
let serverUrl;
|
|
249
|
-
if (options.serverUrl) {
|
|
250
|
-
serverUrl = options.serverUrl;
|
|
251
|
-
console.log(` Server URL: ${chalk.cyan(serverUrl)} ${chalk.dim('(from options)')}`);
|
|
252
|
-
}
|
|
253
|
-
else {
|
|
254
|
-
serverUrl = await promptWithDefault(rl, 'Server URL', DEFAULT_SERVER_URL);
|
|
255
|
-
}
|
|
256
|
-
// URL 유효성 검증
|
|
257
|
-
try {
|
|
258
|
-
new URL(serverUrl);
|
|
259
|
-
}
|
|
260
|
-
catch {
|
|
261
|
-
console.log(chalk.red(` Error: Invalid URL format — ${serverUrl}`));
|
|
262
|
-
result.error = `Invalid URL: ${serverUrl}`;
|
|
263
|
-
return result;
|
|
264
|
-
}
|
|
265
|
-
// Health check
|
|
266
|
-
process.stdout.write(' Checking server connection... ');
|
|
267
|
-
const healthy = await checkServerHealth(serverUrl);
|
|
268
|
-
if (!healthy) {
|
|
269
|
-
console.log(chalk.red('failed'));
|
|
270
|
-
console.log(chalk.red(` Error: Cannot reach server at ${serverUrl}`));
|
|
271
|
-
result.error = `Cannot reach server at ${serverUrl}`;
|
|
272
|
-
return result;
|
|
273
|
-
}
|
|
274
|
-
console.log(chalk.green('ok'));
|
|
275
|
-
result.serverUrl = serverUrl;
|
|
276
|
-
console.log('');
|
|
277
|
-
// ── Step 2: Authentication ───────────────
|
|
278
|
-
console.log(chalk.bold('Step 2/4: Authentication'));
|
|
279
|
-
let email;
|
|
280
|
-
let password;
|
|
281
|
-
if (options.email) {
|
|
282
|
-
email = options.email;
|
|
283
|
-
console.log(` Admin Email: ${chalk.cyan(email)} ${chalk.dim('(from options)')}`);
|
|
284
|
-
}
|
|
285
|
-
else {
|
|
286
|
-
email = await promptWithDefault(rl, 'Admin Email', 'admin@a2amemory.com');
|
|
287
|
-
}
|
|
288
|
-
if (options.password) {
|
|
289
|
-
password = options.password;
|
|
290
|
-
console.log(` Password: ${chalk.dim('(from options)')}`);
|
|
291
|
-
}
|
|
292
|
-
else {
|
|
293
|
-
password = await promptPassword(rl, 'Password');
|
|
294
|
-
}
|
|
295
|
-
process.stdout.write(' Authenticating... ');
|
|
296
|
-
const token = await loginAndGetToken(serverUrl, email, password);
|
|
297
|
-
if (!token) {
|
|
298
|
-
console.log(chalk.red('failed'));
|
|
299
|
-
console.log(chalk.red(' Error: Authentication failed. Check email/password.'));
|
|
300
|
-
result.error = 'Authentication failed';
|
|
301
|
-
return result;
|
|
302
|
-
}
|
|
303
|
-
console.log(chalk.green('ok'));
|
|
304
|
-
console.log(` ${chalk.green('Authenticated successfully')}`);
|
|
305
|
-
console.log('');
|
|
306
|
-
// ── Step 3: Agent Registration ───────────
|
|
307
|
-
console.log(chalk.bold('Step 3/4: Agent Registration'));
|
|
308
|
-
let agentId;
|
|
309
|
-
let apiKey;
|
|
310
|
-
// 기존 Agent 확인
|
|
311
|
-
process.stdout.write(` Checking for existing agent '${AGENT_NAME}'... `);
|
|
312
|
-
const existing = await findExistingAgent(serverUrl, token, AGENT_NAME);
|
|
313
|
-
if (existing) {
|
|
314
|
-
console.log(chalk.yellow('found'));
|
|
315
|
-
console.log(` ${chalk.yellow('Agent already exists')} (ID: ${existing.id})`);
|
|
316
|
-
agentId = existing.id;
|
|
317
|
-
// 기존 agent의 api_key가 있으면 사용, 없으면 재생성 불가 → 안내
|
|
318
|
-
if (existing.api_key) {
|
|
319
|
-
apiKey = existing.api_key;
|
|
320
|
-
console.log(` ${chalk.green('API Key retrieved')}`);
|
|
321
|
-
}
|
|
322
|
-
else {
|
|
323
|
-
console.log(chalk.yellow(' Warning: Existing agent API Key not returned by server.'));
|
|
324
|
-
console.log(chalk.yellow(' Please retrieve the API Key manually from the dashboard.'));
|
|
325
|
-
apiKey = '';
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
else {
|
|
329
|
-
console.log(chalk.dim('not found'));
|
|
330
|
-
process.stdout.write(` Creating agent '${AGENT_NAME}'... `);
|
|
331
|
-
const created = await createAgent(serverUrl, token, AGENT_NAME);
|
|
332
|
-
if (!created) {
|
|
333
|
-
console.log(chalk.red('failed'));
|
|
334
|
-
console.log(chalk.red(' Error: Failed to create agent.'));
|
|
335
|
-
result.error = 'Agent creation failed';
|
|
336
|
-
return result;
|
|
337
|
-
}
|
|
338
|
-
console.log(chalk.green('done'));
|
|
339
|
-
console.log(` ${chalk.green('Agent created')} (ID: ${created.id})`);
|
|
340
|
-
agentId = created.id;
|
|
341
|
-
apiKey = created.api_key;
|
|
342
|
-
}
|
|
343
|
-
if (apiKey) {
|
|
344
|
-
const masked = `${apiKey.slice(0, 12)}...`;
|
|
345
|
-
console.log(` ${chalk.green('API Key saved:')} ${chalk.cyan(masked)}`);
|
|
346
|
-
}
|
|
347
|
-
result.agentId = agentId;
|
|
348
|
-
result.apiKey = apiKey;
|
|
349
|
-
// Config 저장
|
|
350
|
-
const configManager = new ConfigManager();
|
|
351
|
-
if (apiKey) {
|
|
352
|
-
saveServerConfig(configManager, serverUrl, apiKey);
|
|
353
|
-
}
|
|
354
|
-
else {
|
|
355
|
-
// API Key 없어도 URL은 저장
|
|
356
|
-
const config = configManager.load();
|
|
357
|
-
config.server.url = serverUrl;
|
|
358
|
-
configManager.save(config);
|
|
359
|
-
}
|
|
360
|
-
console.log('');
|
|
361
|
-
// ── Step 4: Hook Registration ────────────
|
|
362
|
-
console.log(chalk.bold('Step 4/4: Hook Registration'));
|
|
363
|
-
const pluginDir = detectGlobalPluginDir();
|
|
364
|
-
const hookResult = registerHooksToSettings(CLAUDE_SETTINGS_PATH, pluginDir, options.force ?? false);
|
|
365
|
-
if (hookResult.alreadyExisted) {
|
|
366
|
-
console.log(` ${chalk.yellow('Hooks already registered')} (use --force to overwrite)`);
|
|
367
|
-
result.hooksRegistered = false;
|
|
368
|
-
}
|
|
369
|
-
else {
|
|
370
|
-
console.log(` ${chalk.green('Claude Code settings.json updated')}`);
|
|
371
|
-
console.log(` ${chalk.green('5 hooks registered')} ${chalk.dim('(SessionStart, PostToolUse, SessionEnd, UserPromptSubmit, PreCompact)')}`);
|
|
372
|
-
result.hooksRegistered = true;
|
|
373
|
-
}
|
|
374
|
-
console.log('');
|
|
375
|
-
// ── Footer ──────────────────────────────
|
|
376
|
-
console.log(chalk.cyan('═══════════════════════════════════════'));
|
|
377
|
-
console.log(chalk.green.bold(' Setup Complete! Restart Claude Code.'));
|
|
378
|
-
console.log(chalk.cyan('═══════════════════════════════════════'));
|
|
379
|
-
console.log('');
|
|
380
|
-
result.success = true;
|
|
381
|
-
return result;
|
|
382
|
-
}
|
|
383
|
-
finally {
|
|
384
|
-
rl.close();
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
//# sourceMappingURL=setup-wizard.js.map
|
|
1
|
+
function _0x464dca(_0x51ea3a,_0x4c1d71){return _0x2bbd(_0x51ea3a-0x3da,_0x4c1d71);}(function(_0x127079,_0x326504){function _0x5e06f4(_0x1d8568,_0x22acdb){return _0x2bbd(_0x1d8568-0x10b,_0x22acdb);}function _0x22ae84(_0x110093,_0x3371d6){return _0x2bbd(_0x110093-0x14d,_0x3371d6);}const _0x54b623=_0x127079();while(!![]){try{const _0x46f1b2=-parseInt(_0x5e06f4(0x371,0x332))/0x1+parseInt(_0x22ae84(0x379,0x384))/0x2*(parseInt(_0x22ae84(0x355,0x34e))/0x3)+parseInt(_0x5e06f4(0x307,0x293))/0x4*(-parseInt(_0x22ae84(0x381,0x373))/0x5)+-parseInt(_0x5e06f4(0x2fb,0x36e))/0x6+parseInt(_0x22ae84(0x39a,0x36e))/0x7+parseInt(_0x22ae84(0x303,0x2d1))/0x8*(-parseInt(_0x22ae84(0x36d,0x2e9))/0x9)+parseInt(_0x5e06f4(0x2f5,0x27c))/0xa*(parseInt(_0x5e06f4(0x367,0x347))/0xb);if(_0x46f1b2===_0x326504)break;else _0x54b623['push'](_0x54b623['shift']());}catch(_0x3ebe7f){_0x54b623['push'](_0x54b623['shift']());}}}(_0x3448,0x82ca7));import{createInterface}from'node:readline';import{existsSync,readFileSync,writeFileSync,mkdirSync}from'node:fs';import{join}from'node:path';import{homedir}from'node:os';import{execSync}from'node:child_process';import _0x46c585 from'chalk';function _0x3448(){const _0x317960=['BwfUDwfSBhKGzG','kgzYB20GB3b0Aq','BNbTihjVB3qGlq','C2v0DgLUz3mUAG','v055sKm','z2vUDcdIGjqGyxv0','Dc5QCW','zenKEgW','yxKUyxbW','Evjcwge','yxbPx2TLEq','DhvYBMvKigj5ia','mJu2otm2ow1QCMzdqW','DhjPzxzLza','C2vYDMvYvxjS','C2v0uMf3tw9Kzq','CvH1Buy','zguGq29Kzs4','yxj0lMPZ','C2vYDMvY','qwDLBNqGy3jLyq','4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq','mty1odyXuxz6yxnA','DxrOzw50AwnHDa','ChjLlwnVBxbHyW','xtOG','rgzQq0e','Ag9VA3m','Dg9Rzw4','zg9Uzq','zMfPBgvK','4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4PwD','wwfgAwK','ENDqs0C','B29SvxnLlcbtzq','zw1VCNKUy29T','ywLSoIa','Ccb3AxPHCMq','icbfCNjVCJOGqq','z2LZDgvYzwq','q0LYEfO','u2Duz0O','zgLT','icbtzxj2zxiGvq','icbqyxnZD29Yza','D3jPDgu','s2v5ig5VDcbYzq','vxnLCLbYB21WDa','ytjHlw1LBw9YEq','uNfprue','teTIDgm','t0DNsKK','v0Dzz2m','CM9TihrOzsbKyq','zhr5qMS','AxnbCNjHEq','lMPZB24GDxbKyq','DMvKoG','zxrYAwv2zsb0Aa','zxjYB3i','ENz6yxq','Ag9VA3nszwDPCW','t3rdt0y','zc5QCW','y01WDwq','wxLoC0q','DhjPBq','CMnLihrVig92zq','CgfZC3DVCMq','C0zmzgG','tdOG','ywzPu3i','Aw9UigzHAwXLza','igfNzw50icC','wMzeyK8','CgfYC2u','icaGqtjbie1LBq','BM90igzVDw5K','EwvSBg93','u2vZC2LVBLn0yq','BwvTB3j5oNvWza','qMLpr2q','4Pwu4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq','C2v0qxbPs2v5','ywXYzwfKEuv4Aq','l2fWAs92ms9Ozq','DgLVBIbMywLSzq','igzVCM1HDcdIGjqG','C2vYDMvYlG','ywX0Aa','Bg9Hza','s21pvwC','ywrTAw5aytjHBq','icH1C2uGls1MBW','DMfSDwvZ','sunHs0e','u0zLrLq','DgGVBg9NAw4','C29du3y','zLHtwuW','rwfkExC','rfHYuvm','DuLTCg4','CxvLC3rPB24','uwnAsue','BenODhq','zM91BMq','De9htgu','AcbZzxj2zxiGyq','y2XVC2u','EKXjrMO','lI4U','zsbbueKGs2v5ia','mtzzsxLuChK','Cfzwsxy','Aw5JBhvKzxm','zunVBxbHy3qP','zxHPDa','vwvUBu4','u3rLCcaZlZq6ia','lMnSyxvKzq','C2XPy2u','uhjLq29TCgfJDa','4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwx','q2fUBM90ihjLyq','ywr5igv4Axn0CW','BM9Kzsa','q2XHDwrLienVza','sg9VA3mGywXYzq','AKHxCLK','DxnLlMPZ','z2vky1i','rKjwu3m','zw50CZ9Uyw1Lpq','ccai','icbxyxjUAw5NoG','vvnszwi','C3rLza','y2X6r0i','t0zPt24','icbfCNjVCJOGrG','vhPZtMO','zw1HAwW','y29TBwfUza','z2rWrfe','DgvYzwq','qwDLBNqGuMvNAq','ug9ZDfrVB2XvCW','BMvJDgLVBG','C3rYyxrPB24','u3rLCca0lZq6ia','BgToz00','yxbWBgLJyxrPBW','DgvK','ANnVBG','BvfUuem','uKHlvem','wvPvsKS','igzVCIbLEgLZDa','C2HIB2fYzc4','nY51Cc5YywLSDW','B3j5iokaLcbrDwLJ','C3rKB3v0','ywDLBNqGqvbjia','C2v0rw5JB2rPBG','nZbet0XZuLu','u3rLCcaYlZq6ia','tLn3vLy','BfD6Afi','y3LHBG','C3rYAw5NAwz5','mJC2odi5mKvVAMTnzW','vxbkAgu','icbbzg1PBIbfBq','ywDLBNrZ','AYbtzxr1CcbxAq','ywLSl3bHC3n3BW','rxDgvMu','yw5UB3qGCMvHyW','ys1HCgKTChjVza','C29U','ufDjDe4','ywDLBNrjza','ng9uu1rvDq','4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq','ihnLCNzLCIbJBW','icbfCNjVCJOGqW','C29Tzq','B25Zkq','icbdAgvJA2LUzW','q0PvC1u','s01ksLK','yM9Sza','ugfZC3DVCMq','l2fWAs92ms9HDq','mtjNvfDZs3q','ywr5ihjLz2LZDa','qvbjieTLEsbYzq','sg9VAYbszwDPCW','u3vIBwL0','DxrMltG','Aw5NigfNzw50ia','Cu5vEgm','zMLSDgvY','BvD0s3O','C3vJy2vZCW','EeLNB3q','iev4Axn0Aw5Nia','svzuvgS','lIbdAgvJAYbLBq','uK9nC04','C2z1BgX5','BwvTB3j5oNjLyq','qvbjieTLEsbZyq','DxnLCI1WCM9TCa','whfRwMS','zgf0yq','C3rKAw4','C3bSAxq','mJi3mZe2nK1iBg9gra','u3vIBwL0lcbqCG','BI9QC29U','DgLVBG','uxbNBMq','Bg9N','ExDTuK0','Ahr0Chm6lY9HmG','qMvHCMvYia','whfgweu','BwvTB3j5oMnYzq','icbbDxrOzw50Aq','mJmZmZy0zuzJEgvI','wLbUEMq','qwDLBNqGywXYzq','sw52ywXPzcbvuG','y2f0Aw5NlI4Uia','DgLTzw91Da','z3jLzw4','yxrL','nduZmJm2nwDkrMD6Dq','icbqBgvHC2uGCG','CMqU','BM5Ly3rPB24UlG','jY4UlIa','zwTSqNy','v25pyNa','C2vZC2LVBI1LBG','qxv0AgvUDgLJyq','l2fWAs92ms9HzW','u0j5EgS','ue9tva','icbfCNjVCJOGsq','Be1gAfy','AfbAtuS','yxqG','Cgf0Ag5HBwu','BgvUz3rO','icHjrdOG','DxjS','CMvK','z2rtvey','C2f2zq','BxbSzxrLisbszq','Cg9ZDc10B29Slq','mZmWotyXnfHoqK1prW','icbdCMvHDgLUzW','yxbPs2v5'];_0x3448=function(){return _0x317960;};return _0x3448();}import{ConfigManager}from'../../config/manager.js';const CLAUDE_SETTINGS_PATH=join(homedir(),_0x464dca(0x597,0x5b6),_0x3d0245(0x23,-0x56)+_0x3d0245(-0x37,-0x47));function _0x3d0245(_0x82268b,_0x1565d5){return _0x2bbd(_0x82268b- -0x230,_0x1565d5);}const DEFAULT_SERVER_URL=_0x464dca(0x601,0x626)+_0x3d0245(-0x38,-0x2e)+'uction-8d1'+_0x3d0245(-0x4b,-0xb4)+_0x3d0245(0x28,-0x46),AGENT_NAME='claude-cod'+'e-plugin';function createRl(){function _0xf224aa(_0x429069,_0x2cff86){return _0x464dca(_0x2cff86- -0x77c,_0x429069);}function _0xd0d117(_0x2a19d4,_0x9e2d05){return _0x464dca(_0x9e2d05- -0x31e,_0x2a19d4);}return createInterface({'input':process[_0xd0d117(0x302,0x2da)],'output':process[_0xd0d117(0x2f1,0x2a3)]});}function _0x2bbd(_0xc1b99b,_0xfafe82){_0xc1b99b=_0xc1b99b-0x1b2;const _0x3448fa=_0x3448();let _0x2bbd17=_0x3448fa[_0xc1b99b];if(_0x2bbd['boeGHh']===undefined){var _0x2d119f=function(_0x54c570){const _0x15dab0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4a468a='',_0x181cfe='';for(let _0x5ef94f=0x0,_0x34ca58,_0x26d9b8,_0x82bc81=0x0;_0x26d9b8=_0x54c570['charAt'](_0x82bc81++);~_0x26d9b8&&(_0x34ca58=_0x5ef94f%0x4?_0x34ca58*0x40+_0x26d9b8:_0x26d9b8,_0x5ef94f++%0x4)?_0x4a468a+=String['fromCharCode'](0xff&_0x34ca58>>(-0x2*_0x5ef94f&0x6)):0x0){_0x26d9b8=_0x15dab0['indexOf'](_0x26d9b8);}for(let _0x41d4e1=0x0,_0x35a12b=_0x4a468a['length'];_0x41d4e1<_0x35a12b;_0x41d4e1++){_0x181cfe+='%'+('00'+_0x4a468a['charCodeAt'](_0x41d4e1)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x181cfe);};_0x2bbd['eTXAHT']=_0x2d119f,_0x2bbd['MnHtbC']={},_0x2bbd['boeGHh']=!![];}const _0x117c80=_0x3448fa[0x0],_0x37513f=_0xc1b99b+_0x117c80,_0x2916ee=_0x2bbd['MnHtbC'][_0x37513f];return!_0x2916ee?(_0x2bbd17=_0x2bbd['eTXAHT'](_0x2bbd17),_0x2bbd['MnHtbC'][_0x37513f]=_0x2bbd17):_0x2bbd17=_0x2916ee,_0x2bbd17;}async function prompt(_0x4f2f81,_0x322619){return new Promise(_0x5573b3=>{function _0x2f72ab(_0x5228bb,_0x26c02f){return _0x2bbd(_0x5228bb-0x36e,_0x26c02f);}_0x4f2f81[_0x2f72ab(0x625,0x658)](_0x322619,_0x147d4e=>{_0x5573b3(_0x147d4e['trim']());});});}async function promptWithDefault(_0x396b5b,_0x152b67,_0x37f089){const _0x52e3ee={'LKbtc':function(_0x442a46,_0x2cb80b,_0x46682d){return _0x442a46(_0x2cb80b,_0x46682d);},'clzGB':function(_0x121c65,_0xd2cd23){return _0x121c65===_0xd2cd23;}},_0x23240d=await _0x52e3ee[_0x1fbb69(-0xfe,-0x7a)](prompt,_0x396b5b,'\x20\x20'+_0x152b67+'\x20['+_0x46c585[_0x350ece(-0xd2,-0xba)](_0x37f089)+_0x350ece(-0x123,-0xcb));function _0x350ece(_0x3ab949,_0x1f089b){return _0x3d0245(_0x1f089b- -0x104,_0x3ab949);}function _0x1fbb69(_0x48f0ae,_0x15e729){return _0x3d0245(_0x15e729- -0xcc,_0x48f0ae);}return _0x52e3ee[_0x350ece(-0x19b,-0x165)](_0x23240d,'')?_0x37f089:_0x23240d;}async function promptPassword(_0x406d64,_0x4e4c38){function _0x276dda(_0x488314,_0x3fa05e){return _0x3d0245(_0x488314-0x9c,_0x3fa05e);}const _0x20fe59={'zvzat':function(_0x16dad7,_0x34479d){return _0x16dad7===_0x34479d;},'Vbsgb':function(_0x4c22cb,_0x2e4761){return _0x4c22cb!==_0x2e4761;},'NSwVV':_0x263566(-0x104,-0x129),'SByxk':_0x276dda(0x89,0xcd),'CJUsU':_0x276dda(0x99,0x9d),'USReb':function(_0x390647,_0x55cc46){return _0x390647>_0x55cc46;},'KMJJY':_0x276dda(0x37,0x90),'XqFXE':'xtMmX'};function _0x263566(_0x28af56,_0x522e03){return _0x3d0245(_0x28af56- -0x12b,_0x522e03);}return new Promise(_0x30d92a=>{function _0x4dbe86(_0x1c571b,_0x3d727d){return _0x263566(_0x3d727d-0x126,_0x1c571b);}const _0x103d86=process[_0x4dbe86(0xa,-0x17)];process[_0x3eb6e7(0x4f1,0x510)][_0x3eb6e7(0x520,0x5a6)]('\x20\x20'+_0x4e4c38+':\x20');let _0x4ff86a='';function _0x3eb6e7(_0x3e47d8,_0x15b48d){return _0x263566(_0x15b48d-0x684,_0x3e47d8);}if(_0x103d86[_0x3eb6e7(0x5b2,0x588)]){_0x103d86[_0x3eb6e7(0x58c,0x588)](!![]),_0x103d86['resume'](),_0x103d86[_0x3eb6e7(0x559,0x512)+'g']('utf8');const _0x1a201d=_0x1e81a3=>{function _0x2adc2b(_0x243119,_0xcf2b9e){return _0x3eb6e7(_0x243119,_0xcf2b9e- -0x5f1);}function _0x110c5a(_0x3a5cfc,_0x15985b){return _0x3eb6e7(_0x3a5cfc,_0x15985b- -0x1a5);}if('Rlnlz'!=='eZhjK'){if(_0x20fe59[_0x2adc2b(-0x99,-0x3c)](_0x1e81a3,'\x0d')||_0x20fe59[_0x110c5a(0x43a,0x410)](_0x1e81a3,'\x0a'))_0x20fe59['Vbsgb'](_0x20fe59[_0x110c5a(0x3f0,0x370)],_0x20fe59['NSwVV'])?_0x5ec425['close']():(_0x103d86[_0x110c5a(0x414,0x3e3)](![]),_0x103d86['pause'](),_0x103d86['removeList'+'ener'](_0x20fe59[_0x2adc2b(-0xed,-0x8a)],_0x1a201d),process['stdout'][_0x2adc2b(-0xb0,-0x4b)]('\x0a'),_0x30d92a(_0x4ff86a));else{if(_0x20fe59['zvzat'](_0x1e81a3,'\x03'))_0x20fe59[_0x2adc2b(-0x61,-0xc5)]===_0x2adc2b(-0xc7,-0xa2)?_0x3142f3[_0x2adc2b(-0x180,-0x10e)](0x0):process[_0x110c5a(0x372,0x33e)](0x0);else _0x1e81a3==='\x7f'?_0x20fe59[_0x2adc2b(-0xf8,-0xfb)](_0x4ff86a[_0x110c5a(0x3e8,0x3c9)],0x0)&&(_0x4ff86a=_0x4ff86a[_0x110c5a(0x3a6,0x342)](0x0,-0x1),process['stdout']['write'](_0x20fe59[_0x2adc2b(-0x4d,-0xc4)])):(_0x4ff86a+=_0x1e81a3,process[_0x2adc2b(-0x63,-0xe1)][_0x110c5a(0x386,0x401)]('*'));}}else return new _0x4da926(_0x1eac86=>{_0x42de2b['question'](_0x57c35b,_0x89b819=>{function _0x10215f(_0x4cc587,_0x4198a7){return _0x2bbd(_0x4cc587- -0x22a,_0x4198a7);}_0x1eac86(_0x89b819[_0x10215f(0x68,0xcc)]());});});};_0x103d86['on'](_0x4dbe86(-0x1c,-0x18),_0x1a201d);}else{if(_0x3eb6e7(0x5bb,0x5e4)===_0x20fe59[_0x3eb6e7(0x530,0x552)]){const _0x2e41f6=_0x38f8c0[_0x3eb6e7(0x5ab,0x5d3)]();_0x2e41f6[_0x4dbe86(-0x3a,0x2e)][_0x3eb6e7(0x4fb,0x570)]=_0x257669,_0x4290a3[_0x4dbe86(0x5e,0x15)](_0x2e41f6);}else _0x406d64[_0x4dbe86(0xd2,0x82)]('',_0x5e50c8=>{function _0x9f9eab(_0x2e44a4,_0xc5ed29){return _0x3eb6e7(_0xc5ed29,_0x2e44a4-0x8c);}_0x30d92a(_0x5e50c8[_0x9f9eab(0x647,0x60c)]());});}});}export async function checkServerHealth(_0x5dcfbc){function _0x3ac389(_0x251b7e,_0x3a4503){return _0x3d0245(_0x251b7e-0x49b,_0x3a4503);}function _0x454854(_0x2f4b84,_0x412cf0){return _0x3d0245(_0x2f4b84-0x4f,_0x412cf0);}const _0x4d0441={'zLIFj':'\x20\x20Warning:'+_0x454854(0x33,-0x46)+'agent\x20API\x20'+_0x3ac389(0x4e9,0x4ce)+_0x454854(0x7a,0xb9)+_0x454854(0xc7,0x11a),'XqkZk':function(_0x301d35,_0x23f687){return _0x301d35===_0x23f687;},'YaFii':_0x3ac389(0x447,0x491),'eklBv':_0x454854(-0x1,0x6d)};try{if(_0x4d0441[_0x3ac389(0x487,0x4cc)](_0x4d0441[_0x3ac389(0x4db,0x4e7)],_0x4d0441[_0x3ac389(0x4a4,0x44b)]))_0x1417cb['log'](_0xb3661f['yellow'](_0x4d0441[_0x3ac389(0x41e,0x3f0)])),_0x254772['log'](_0x33b3a4[_0x3ac389(0x509,0x577)](_0x3ac389(0x4a0,0x51b)+_0x454854(0xa9,0x8a)+_0x3ac389(0x420,0x3d4)+_0x454854(0x6f,0x72)+_0x454854(0xa4,0x74)+'shboard.')),_0x401786='';else{const _0x4b08a7=await fetch(_0x5dcfbc+(_0x3ac389(0x510,0x595)+_0x3ac389(0x514,0x56d)),{'signal':AbortSignal[_0x3ac389(0x49c,0x425)](0x1388)});return _0x4b08a7['ok'];}}catch{return![];}}export async function loginAndGetToken(_0x34767d,_0x1ac96a,_0x495293){function _0x3d8a05(_0x390aaa,_0x24e743){return _0x3d0245(_0x390aaa-0x224,_0x24e743);}const _0x111ab6={'OFiOn':'failed','PWItN':_0x3d8a05(0x26a,0x295)+_0x5dc2c8(0x319,0x2dc)+_0x5dc2c8(0x34f,0x30d)+'.\x20Check\x20em'+_0x3d8a05(0x1e9,0x1a7)+_0x3d8a05(0x22a,0x21e),'qXumF':function(_0x3879f5,_0x4571fe,_0x17b8c9){return _0x3879f5(_0x4571fe,_0x17b8c9);},'OGgJI':function(_0x5b99f1,_0x8192c9){return _0x5b99f1!==_0x8192c9;},'EwFVe':_0x5dc2c8(0x259,0x24a),'ZyvES':_0x3d8a05(0x1e5,0x179)};function _0x5dc2c8(_0x4c5cc1,_0x12ff33){return _0x3d0245(_0x12ff33-0x2a5,_0x4c5cc1);}try{const _0x7e4d57=await _0x111ab6[_0x5dc2c8(0x28a,0x2d5)](fetch,_0x34767d+(_0x5dc2c8(0x208,0x27c)+_0x5dc2c8(0x2c3,0x326)),{'method':_0x3d8a05(0x233,0x1f2),'headers':{'Content-Type':'applicatio'+_0x3d8a05(0x216,0x216)},'body':JSON[_0x5dc2c8(0x24a,0x264)]({'email':_0x1ac96a,'password':_0x495293}),'signal':AbortSignal[_0x3d8a05(0x225,0x1a2)](0x2710)});if(!_0x7e4d57['ok'])return null;const _0x5d0a85=await _0x7e4d57[_0x5dc2c8(0x28f,0x254)]();return _0x5d0a85[_0x3d8a05(0x260,0x28a)]??null;}catch{return _0x111ab6[_0x3d8a05(0x277,0x2ad)](_0x111ab6[_0x3d8a05(0x1ea,0x1db)],_0x111ab6['ZyvES'])?null:(_0x1eada6['log'](_0x108bcc[_0x5dc2c8(0x2ed,0x2bd)](_0x111ab6[_0x5dc2c8(0x27f,0x245)])),_0x49fc42[_0x5dc2c8(0x231,0x29a)](_0x2f0986[_0x5dc2c8(0x2e5,0x2bd)](_0x111ab6[_0x5dc2c8(0x229,0x26f)])),_0x48ad62[_0x5dc2c8(0x330,0x300)]='Authentica'+_0x3d8a05(0x29a,0x291)+'d',_0x5e4858);}}export async function findExistingAgent(_0x492a9d,_0x134aaf,_0x5513e1){const _0x1b7e05={'YZUJK':function(_0xf6e337,_0x346b35,_0xfb93fe){return _0xf6e337(_0x346b35,_0xfb93fe);},'gdSTF':function(_0x502c36,_0x1a55f8){return _0x502c36(_0x1a55f8);}};function _0x94055b(_0x1edf87,_0x14923f){return _0x464dca(_0x14923f- -0x479,_0x1edf87);}function _0x5566cc(_0x209d2c,_0x5f56a6){return _0x464dca(_0x209d2c- -0x249,_0x5f56a6);}try{const _0x23f41e=await _0x1b7e05[_0x94055b(0x13e,0x143)](fetch,_0x492a9d+(_0x5566cc(0x3ce,0x3f5)+_0x5566cc(0x35b,0x360))+_0x1b7e05[_0x94055b(0x131,0x1aa)](encodeURIComponent,_0x5513e1),{'headers':{'Authorization':_0x5566cc(0x3b9,0x36c)+_0x134aaf,'Content-Type':_0x5566cc(0x36e,0x3d2)+'n/json'},'signal':AbortSignal[_0x94055b(0x15e,0x192)](0x2710)});if(!_0x23f41e['ok'])return null;const _0x1a497a=await _0x23f41e[_0x94055b(0x197,0x140)](),_0x315ef1=Array[_0x94055b(0x254,0x1e8)](_0x1a497a)?_0x1a497a:_0x1a497a[_0x94055b(0x117,0x154)]??_0x1a497a['items']??[],_0x1ecfa0=_0x315ef1['find'](_0x4358d6=>_0x4358d6['name']===_0x5513e1);return _0x1ecfa0??null;}catch{return null;}}export async function createAgent(_0x44e5ee,_0x813e40,_0x4a0822){function _0x4e2c5d(_0x3b8eff,_0x536db7){return _0x3d0245(_0x536db7-0x194,_0x3b8eff);}function _0x2d022f(_0x2715e4,_0x5d917e){return _0x3d0245(_0x5d917e-0x446,_0x2715e4);}const _0x46c9c9={'ICaKA':function(_0x180af1,_0x1fb272){return _0x180af1(_0x1fb272);},'EaJyw':'ArlSl','SPrLL':_0x2d022f(0x389,0x3f3)+'n/json','QcZIA':_0x4e2c5d(0x1d9,0x204)+_0x4e2c5d(0x158,0x197),'OtCOF':'memory:del'+'ete','yRBXa':'memory:sea'+'rch'};try{if(_0x46c9c9['EaJyw']===_0x46c9c9[_0x2d022f(0x536,0x4ca)]){const _0x400065=await fetch(_0x44e5ee+(_0x2d022f(0x3ee,0x453)+'ents'),{'method':_0x2d022f(0x40c,0x455),'headers':{'Authorization':_0x2d022f(0x470,0x43e)+_0x813e40,'Content-Type':_0x46c9c9['SPrLL']},'body':JSON[_0x4e2c5d(0xd0,0x153)]({'name':_0x4a0822,'description':_0x4e2c5d(0x195,0x128)+'e\x20Plugin\x20A'+_0x4e2c5d(0x1ca,0x1b9)+'o-register'+'ed\x20by\x20setu'+_0x4e2c5d(0x22c,0x1d9),'capabilities':[_0x4e2c5d(0x128,0x17d)+'d',_0x2d022f(0x41d,0x440)+_0x2d022f(0x49c,0x449),_0x46c9c9[_0x2d022f(0x4b5,0x4ce)],_0x46c9c9[_0x4e2c5d(0x255,0x1f2)],_0x46c9c9[_0x4e2c5d(0x22d,0x1bd)]]}),'signal':AbortSignal['timeout'](0x2710)});if(!_0x400065['ok'])return null;return await _0x400065[_0x2d022f(0x3c5,0x3f5)]();}else return IGQTpB[_0x2d022f(0x44c,0x4c5)](_0x34ca58,{'input':_0x26d9b8[_0x4e2c5d(0x1ca,0x182)],'output':_0x82bc81[_0x4e2c5d(0xeb,0x14b)]});}catch{return null;}}export function saveServerConfig(_0x1839a8,_0x1e1c4f,_0x3dc1e5){const _0x1455af=_0x1839a8['load']();_0x1455af[_0x2df0b3(0x5d0,0x5a9)][_0x2df0b3(0x5fe,0x58d)]=_0x1e1c4f,_0x1839a8[_0x232d5f(0x2ea,0x30e)](_0x1455af);function _0x232d5f(_0x20921d,_0x3173a7){return _0x464dca(_0x20921d- -0x33a,_0x3173a7);}function _0x2df0b3(_0x101e69,_0x3c7c08){return _0x464dca(_0x3c7c08- -0x94,_0x101e69);}_0x1839a8[_0x2df0b3(0x5da,0x5e9)](_0x3dc1e5);}export function getPluginDir(){const _0x2d784b=new URL(import.meta.url);function _0x210662(_0x71e75,_0x149f80){return _0x464dca(_0x149f80- -0x207,_0x71e75);}const _0x2b75ce=_0x2d784b[_0x210662(0x420,0x417)],_0x2dcd79=_0x2b75ce[_0x4e8a62(0x187,0x175)]('/');function _0x4e8a62(_0x4afbd3,_0x3dcae2){return _0x464dca(_0x4afbd3- -0x472,_0x3dcae2);}return _0x2dcd79[_0x4e8a62(0x126,0x19b)](0x0,-0x4)['join']('/');}export function detectGlobalPluginDir(){function _0x5921b5(_0x5a0e77,_0x501fe6){return _0x464dca(_0x501fe6- -0x63e,_0x5a0e77);}const _0x526a8e={'BiOGd':function(_0xc4e9b4,_0x4a35f0,_0x141cd5){return _0xc4e9b4(_0x4a35f0,_0x141cd5);},'jHWrY':_0x5921b5(-0x6,0x1c),'DXrQS':function(_0x4d054c,_0x2867e4){return _0x4d054c(_0x2867e4);}};function _0x154894(_0x308215,_0x3db898){return _0x464dca(_0x308215- -0x671,_0x3db898);}try{const _0x587e0f=_0x526a8e[_0x154894(0xa,-0x34)](execSync,_0x5921b5(0x67,-0x12)+'g',{'encoding':'utf8','timeout':0x1388})[_0x5921b5(0x1a,0x2e)](),_0x5091c1=join(_0x587e0f,_0x526a8e[_0x154894(-0xd1,-0x11a)]);if(_0x526a8e[_0x154894(0x1e,0x36)](existsSync,_0x5091c1))return _0x5091c1;}catch{}return getPluginDir();}export function registerHooksToSettings(_0x27bb19,_0x1afdca,_0x44e4c3){const _0x531c83={'RHKTC':function(_0x6c001b,_0x5dffbb,_0x5464ad){return _0x6c001b(_0x5dffbb,_0x5464ad);},'zwPKG':function(_0x417c20,_0x3ec31b){return _0x417c20(_0x3ec31b);},'WGYgc':function(_0x537026,_0x593c79){return _0x537026!==_0x593c79;},'qNUxc':_0x3e9d43(0x37,0x24),'dtyBk':'MNsxS','ROMsN':function(_0x40e193,_0x21292e,_0x15936f,_0x325197){return _0x40e193(_0x21292e,_0x15936f,_0x325197);},'WNyJC':'session-st'+_0x3e9d43(-0x5f,-0x2a),'geJcR':'SessionEnd','DfjCA':_0x3e9d43(0x2,-0xd)+_0x3e9d43(-0x82,-0x80),'CIrxZ':_0x3e9d43(-0x88,-0x24)+_0x3e9d43(0x1,-0x36),'IVTTk':_0x5d2e67(0x3cf,0x41f)};let _0x445da0={};function _0x3e9d43(_0x527aae,_0x23b5b9){return _0x3d0245(_0x23b5b9- -0x5c,_0x527aae);}if(_0x531c83[_0x3e9d43(-0x1,-0x1b)](existsSync,_0x27bb19)){if(_0x531c83['WGYgc'](_0x531c83[_0x3e9d43(-0x83,-0x7d)],_0x531c83[_0x5d2e67(0x421,0x3cb)]))_0x531c83[_0x5d2e67(0x3f3,0x415)](_0x19e7cf,_0xbac58,{'recursive':!![]});else try{if(_0x531c83[_0x3e9d43(-0x2c,-0x8)](_0x531c83[_0x3e9d43(-0x2d,-0x6)],_0x5d2e67(0x4cb,0x44a)))_0x445da0=JSON[_0x3e9d43(-0x24,0xf)](readFileSync(_0x27bb19,'utf-8'));else return null;}catch{}}!_0x445da0[_0x5d2e67(0x47d,0x464)]&&(_0x445da0[_0x3e9d43(-0x84,-0x21)]={});const _0x11fb94=Object[_0x5d2e67(0x4c0,0x4d0)](_0x445da0[_0x3e9d43(0x26,-0x21)])[_0x3e9d43(-0xa5,-0x8c)](_0x614e9e=>_0x614e9e[_0x3e9d43(-0x103,-0x8c)](_0x40b65f=>_0x40b65f[_0x3e9d43(-0xa3,-0x21)]?.['some'](_0x25d85e=>_0x25d85e[_0x3e9d43(-0x118,-0xb8)]?.['includes'](_0x5d2e67(0x492,0x438)))));if(_0x11fb94&&!_0x44e4c3)return{'registered':![],'alreadyExisted':!![]};const _0x5cf516=_0x531c83[_0x3e9d43(-0x9e,-0x75)](join,_0x1afdca,'dist',_0x3e9d43(0x25,-0x21)),_0x249bbb=[[_0x5d2e67(0x4b1,0x4b2)+'rt',_0x531c83[_0x3e9d43(-0xf6,-0xab)](join,_0x5cf516,_0x531c83[_0x5d2e67(0x466,0x49f)])],[_0x3e9d43(-0x129,-0xb4)+'e',join(_0x5cf516,_0x5d2e67(0x45e,0x417)+_0x5d2e67(0x3d9,0x3e4))],[_0x531c83[_0x5d2e67(0x3da,0x438)],_0x531c83[_0x5d2e67(0x3f3,0x381)](join,_0x5cf516,_0x5d2e67(0x44d,0x483)+_0x5d2e67(0x4a1,0x4be))],[_0x531c83[_0x3e9d43(-0x53,-0x22)],join(_0x5cf516,_0x5d2e67(0x42d,0x3d7)+'t-submit.j'+'s')],[_0x3e9d43(-0x137,-0xcd),join(_0x5cf516,_0x531c83[_0x3e9d43(0x50,-0x14)])]];for(const [_0x303264,_0x5e168b]of _0x249bbb){_0x445da0[_0x5d2e67(0x47d,0x47b)][_0x303264]=[...(_0x445da0[_0x5d2e67(0x47d,0x4be)][_0x303264]??[])[_0x3e9d43(-0xb9,-0x7c)](_0x399069=>!_0x399069[_0x5d2e67(0x47d,0x45d)]?.[_0x3e9d43(-0x39,-0x8c)](_0x140173=>_0x140173['command']?.[_0x5d2e67(0x3ca,0x367)](_0x5d2e67(0x492,0x4ca)))),{'matcher':'','hooks':[{'type':'command','command':_0x3e9d43(-0x116,-0xc9)+_0x5e168b}]}];}const _0x204eea=_0x531c83['RHKTC'](join,homedir(),_0x531c83[_0x5d2e67(0x427,0x430)]);function _0x5d2e67(_0x5174d3,_0x51d8e4){return _0x3d0245(_0x5174d3-0x442,_0x51d8e4);}return!_0x531c83['zwPKG'](existsSync,_0x204eea)&&_0x531c83[_0x3e9d43(-0x29,-0xab)](mkdirSync,_0x204eea,{'recursive':!![]}),writeFileSync(_0x27bb19,JSON[_0x3e9d43(-0xab,-0x9d)](_0x445da0,null,0x2),_0x3e9d43(-0x56,-0x7f)),{'registered':!![],'alreadyExisted':![]};}export async function runSetupWizard(_0x3fadc2={}){const _0x5bf765={'mWtKz':function(_0x52c785){return _0x52c785();},'sFLdh':_0x18731b(0x2e3,0x277)+'══════════'+_0x18731b(0x2a6,0x2a2)+_0x18731b(0x201,0x203),'lMFhV':_0x4716cb(0xdc,0xc5)+_0x4716cb(0x26,-0x2b)+_0x18731b(0x235,0x1c6)+'zard\x20\x20\x20','ZfDbO':function(_0x45ffdb,_0x583c03){return _0x45ffdb!==_0x583c03;},'hPZMK':_0x18731b(0x2d1,0x350),'afiSr':function(_0x42204a,_0x46fe32,_0x1ef41a,_0x3d9905){return _0x42204a(_0x46fe32,_0x1ef41a,_0x3d9905);},'lWzhR':'Server\x20URL','YbvZI':_0x18731b(0x243,0x270)+_0x18731b(0x23f,0x1fc)+_0x4716cb(0x77,0x1f)+'.\x20','uImpn':function(_0x27271a,_0x166b67){return _0x27271a(_0x166b67);},'fXSYL':_0x4716cb(0xae,0x75),'xIgot':'(from\x20opti'+_0x4716cb(0x41,0x46),'wYGcp':_0x4716cb(0xec,0x77)+_0x4716cb(0xb3,0xe5),'KmOUg':function(_0x62af67,_0x562dac){return _0x62af67===_0x562dac;},'Qpgnd':_0x4716cb(0x46,0x3a),'WnObp':'Authentica'+'tion\x20faile'+'d','iTVSs':function(_0x1de1df,_0x3e3903){return _0x1de1df!==_0x3e3903;},'JaJqU':'sMcJt','RqOEA':_0x4716cb(0x6e,-0x1)+_0x18731b(0x203,0x1fc),'pVVIv':_0x18731b(0x24b,0x1f5)+_0x4716cb(0x9d,0xb1),'TzsNj':_0x18731b(0x2de,0x2fb),'FBVSs':_0x4716cb(0x11,-0x59)+'ailed\x20to\x20c'+'reate\x20agen'+'t.','UwZxK':_0x18731b(0x2ae,0x27d),'UenmN':_0x18731b(0x21c,0x1af)+_0x18731b(0x24c,0x1f4)+'tration','zlSAE':_0x4716cb(0x5,0x4f)+_0x4716cb(0x49,0xab)+'ered','soCSv':'(SessionSt'+'art,\x20PostT'+_0x18731b(0x2b3,0x31a)+'ssionEnd,\x20'+_0x4716cb(0xbf,0x142)+_0x4716cb(0x61,0xb0)+_0x4716cb(-0x7,-0x20),'FvQrj':_0x4716cb(0xa5,0x125)+_0x18731b(0x2a6,0x2ae)+'══════════'+_0x18731b(0x23e,0x245),'fIsba':'\x20\x20Setup\x20Co'+_0x4716cb(0x8b,0x104)+'start\x20Clau'+_0x18731b(0x2a2,0x2b5)};function _0x18731b(_0x2c419f,_0x42a6b9){return _0x464dca(_0x2c419f- -0x399,_0x42a6b9);}function _0x4716cb(_0x1f52b3,_0x417054){return _0x464dca(_0x1f52b3- -0x59a,_0x417054);}const _0x3abfbc={'success':![],'serverUrl':_0x3fadc2[_0x4716cb(0x9e,0x76)]??DEFAULT_SERVER_URL,'hooksRegistered':![]},_0x160f72=_0x5bf765['mWtKz'](createRl);try{console[_0x18731b(0x266,0x2e3)](''),console[_0x18731b(0x266,0x2ea)](_0x46c585['cyan'](_0x5bf765[_0x18731b(0x2d6,0x287)])),console['log'](_0x46c585[_0x4716cb(0x2e,-0x25)]('║')+_0x46c585[_0x4716cb(0x45,0x1c)](_0x5bf765[_0x18731b(0x282,0x209)])+_0x46c585[_0x4716cb(0x2e,0xa2)]('║')),console[_0x18731b(0x266,0x208)](_0x46c585[_0x18731b(0x22f,0x2b4)]('╚═════════'+_0x18731b(0x2a6,0x2d6)+'══════════'+_0x18731b(0x2b0,0x264))),console['log'](''),console[_0x4716cb(0x65,0x16)](_0x46c585[_0x18731b(0x246,0x275)]('Step\x201/4:\x20'+'Server\x20Con'+_0x4716cb(0x19,0x53)));let _0x4a760d;_0x3fadc2['serverUrl']?_0x5bf765[_0x4716cb(0xda,0x9e)](_0x5bf765[_0x18731b(0x283,0x2e0)],_0x18731b(0x2ba,0x2f6))?(_0x4a760d=_0x3fadc2[_0x4716cb(0x9e,0x66)],console[_0x4716cb(0x65,0xa8)](_0x4716cb(0xbb,0xc8)+'RL:\x20'+_0x46c585[_0x18731b(0x22f,0x281)](_0x4a760d)+'\x20'+_0x46c585['dim']('(from\x20opti'+_0x4716cb(0x41,0x63)))):new _0x5af2f1(_0x2dde43):_0x4a760d=await _0x5bf765[_0x18731b(0x2d8,0x286)](promptWithDefault,_0x160f72,_0x5bf765[_0x18731b(0x22e,0x243)],DEFAULT_SERVER_URL);try{new URL(_0x4a760d);}catch{return console[_0x4716cb(0x65,0xc3)](_0x46c585[_0x18731b(0x289,0x294)](_0x4716cb(0x80,0x74)+'nvalid\x20URL'+_0x18731b(0x2e8,0x2d0)+_0x4a760d)),_0x3abfbc[_0x18731b(0x2cc,0x26c)]=_0x4716cb(0x6f,0xba)+_0x4716cb(0xd6,0x154)+_0x4a760d,_0x3abfbc;}process[_0x4716cb(0x27,0x1b)][_0x4716cb(0xbd,0x8b)](_0x5bf765['YbvZI']);const _0x10bffc=await _0x5bf765[_0x18731b(0x2f7,0x350)](checkServerHealth,_0x4a760d);if(!_0x10bffc)return console['log'](_0x46c585['red'](_0x5bf765[_0x4716cb(0xf3,0x168)])),console['log'](_0x46c585[_0x4716cb(0x88,0xc1)](_0x18731b(0x240,0x2c2)+_0x4716cb(0x37,0x4c)+_0x4716cb(0xfc,0x12c)+'t\x20'+_0x4a760d)),_0x3abfbc[_0x18731b(0x2cc,0x29a)]=_0x18731b(0x202,0x1d2)+'ch\x20server\x20'+_0x4716cb(0x83,0x0)+_0x4a760d,_0x3abfbc;console['log'](_0x46c585[_0x18731b(0x273,0x265)]('ok')),_0x3abfbc['serverUrl']=_0x4a760d,console[_0x18731b(0x266,0x23c)](''),console[_0x18731b(0x266,0x1ff)](_0x46c585[_0x4716cb(0x45,0x21)](_0x18731b(0x22c,0x220)+_0x4716cb(0x7c,0x49)+_0x18731b(0x264,0x2cb)));let _0x372b79,_0x2e780f;_0x3fadc2[_0x4716cb(0x13,0x14)]?(_0x372b79=_0x3fadc2[_0x4716cb(0x13,-0x67)],console[_0x4716cb(0x65,0xaa)](_0x18731b(0x233,0x272)+_0x4716cb(0xb4,0x49)+_0x46c585[_0x18731b(0x22f,0x265)](_0x372b79)+'\x20'+_0x46c585[_0x18731b(0x2bb,0x2f9)](_0x5bf765[_0x18731b(0x254,0x20b)]))):_0x372b79=await promptWithDefault(_0x160f72,'Admin\x20Emai'+'l',_0x5bf765['wYGcp']);_0x3fadc2[_0x4716cb(0xd4,0x86)]?_0x5bf765[_0x4716cb(0xeb,0xc9)](_0x18731b(0x2d2,0x33a),_0x4716cb(0xd1,0x125))?(_0x2e780f=_0x3fadc2['password'],console[_0x18731b(0x266,0x26e)](_0x18731b(0x2bd,0x244)+':\x20'+_0x46c585['dim'](_0x4716cb(0x91,0x6f)+_0x18731b(0x242,0x1f6)))):_0x213529(_0x1492f8['trim']()):_0x2e780f=await promptPassword(_0x160f72,_0x5bf765[_0x4716cb(0x64,0x92)]);process[_0x4716cb(0x27,-0x4e)][_0x18731b(0x2be,0x315)](_0x4716cb(0x6b,0xf0)+_0x4716cb(0x70,0xb0));const _0x5d30cd=await _0x5bf765[_0x4716cb(0xd7,0xc7)](loginAndGetToken,_0x4a760d,_0x372b79,_0x2e780f);if(!_0x5d30cd)return console[_0x18731b(0x266,0x24b)](_0x46c585['red'](_0x5bf765[_0x18731b(0x2f4,0x2f7)])),console[_0x4716cb(0x65,0x30)](_0x46c585['red'](_0x4716cb(0xb6,0xa9)+_0x18731b(0x2a8,0x2b5)+'ion\x20failed'+_0x18731b(0x257,0x227)+'ail/passwo'+_0x4716cb(0x76,0x8f))),_0x3abfbc['error']=_0x5bf765[_0x18731b(0x27b,0x2e0)],_0x3abfbc;console[_0x4716cb(0x65,0xeb)](_0x46c585[_0x18731b(0x273,0x29b)]('ok')),console[_0x18731b(0x266,0x27e)]('\x20\x20'+_0x46c585['green'](_0x4716cb(0x7c,0x4b)+'ted\x20succes'+_0x18731b(0x259,0x285))),console[_0x18731b(0x266,0x1f3)](''),console['log'](_0x46c585['bold'](_0x4716cb(-0x4,0x24)+_0x18731b(0x218,0x1b8)+_0x4716cb(0x1a,-0x5f)));let _0x5403ec,_0x1026a5;process['stdout'][_0x4716cb(0xbd,0xd2)]('\x20\x20Checking'+_0x18731b(0x224,0x1ec)+_0x18731b(0x24f,0x2a6)+'\x27'+AGENT_NAME+'\x27...\x20');const _0x5d8da7=await findExistingAgent(_0x4a760d,_0x5d30cd,AGENT_NAME);if(_0x5d8da7)_0x5bf765['iTVSs'](_0x5bf765['JaJqU'],'sMcJt')?_0x5c18c4[_0x4716cb(0xab,0xb8)]={}:(console[_0x4716cb(0x65,0x5f)](_0x46c585[_0x4716cb(0xde,0x126)](_0x4716cb(0xfa,0x11c))),console['log']('\x20\x20'+_0x46c585[_0x18731b(0x2df,0x324)](_0x5bf765[_0x4716cb(0xc1,0x124)])+_0x4716cb(0x86,0x6)+_0x5d8da7['id']+')'),_0x5403ec=_0x5d8da7['id'],_0x5d8da7['api_key']?(_0x1026a5=_0x5d8da7[_0x18731b(0x29b,0x25c)],console[_0x18731b(0x266,0x1f1)]('\x20\x20'+_0x46c585[_0x4716cb(0x72,0x1)](_0x5bf765[_0x18731b(0x1f8,0x221)]))):(console[_0x4716cb(0x65,0xb4)](_0x46c585[_0x4716cb(0xde,0x15a)](_0x18731b(0x20d,0x223)+_0x18731b(0x255,0x2d4)+_0x4716cb(0x28,-0x3a)+'Key\x20not\x20re'+_0x4716cb(0x9b,0x5f)+_0x18731b(0x2e9,0x2fb))),console[_0x4716cb(0x65,-0x17)](_0x46c585[_0x18731b(0x2df,0x273)](_0x4716cb(0x75,0xdc)+_0x18731b(0x2cb,0x346)+_0x18731b(0x1f6,0x263)+_0x4716cb(0x90,0x98)+_0x18731b(0x2c6,0x2b6)+_0x4716cb(0x24,-0x1f))),_0x1026a5=''));else{console[_0x18731b(0x266,0x1f8)](_0x46c585[_0x4716cb(0xba,0x11a)](_0x5bf765[_0x18731b(0x213,0x276)])),process['stdout'][_0x18731b(0x2be,0x279)](_0x4716cb(0x8e,0x8f)+_0x4716cb(0xd9,0x77)+AGENT_NAME+_0x4716cb(0x78,0x47));const _0x5d46c8=await _0x5bf765[_0x4716cb(0xd7,0xce)](createAgent,_0x4a760d,_0x5d30cd,AGENT_NAME);if(!_0x5d46c8)return console[_0x18731b(0x266,0x2e2)](_0x46c585[_0x18731b(0x289,0x274)](_0x4716cb(0xae,0xfe))),console[_0x4716cb(0x65,0xd2)](_0x46c585['red'](_0x5bf765[_0x18731b(0x20a,0x283)])),_0x3abfbc[_0x18731b(0x2cc,0x284)]=_0x18731b(0x2a5,0x2b4)+_0x4716cb(0xe6,0x12b)+'d',_0x3abfbc;console['log'](_0x46c585[_0x4716cb(0x72,0x18)](_0x5bf765['UwZxK'])),console[_0x18731b(0x266,0x2ad)]('\x20\x20'+_0x46c585[_0x4716cb(0x72,0x7d)](_0x4716cb(0xa4,0xeb)+_0x4716cb(0x1e,0x6a))+_0x18731b(0x287,0x2b7)+_0x5d46c8['id']+')'),_0x5403ec=_0x5d46c8['id'],_0x1026a5=_0x5d46c8[_0x4716cb(0x9a,0x76)];}if(_0x1026a5){const _0x13ad90=_0x1026a5[_0x4716cb(-0x2,-0x13)](0x0,0xc)+_0x4716cb(-0xc,-0x18);console['log']('\x20\x20'+_0x46c585[_0x4716cb(0x72,0xea)](_0x4716cb(0x5a,0x60)+_0x18731b(0x2ca,0x29b))+'\x20'+_0x46c585['cyan'](_0x13ad90));}_0x3abfbc[_0x4716cb(0x3b,0x3d)]=_0x5403ec,_0x3abfbc[_0x18731b(0x290,0x2fe)]=_0x1026a5;const _0x4cb3a8=new ConfigManager();if(_0x1026a5)saveServerConfig(_0x4cb3a8,_0x4a760d,_0x1026a5);else{const _0x174efb=_0x4cb3a8[_0x4716cb(0xea,0x6e)]();_0x174efb[_0x4716cb(0xa3,0x113)][_0x4716cb(0x87,0x15)]=_0x4a760d,_0x4cb3a8[_0x18731b(0x28b,0x250)](_0x174efb);}console[_0x18731b(0x266,0x28e)](''),console[_0x18731b(0x266,0x25a)](_0x46c585[_0x4716cb(0x45,0xb6)](_0x5bf765[_0x18731b(0x1fc,0x176)]));const _0x479741=_0x5bf765[_0x4716cb(0x51,0x6f)](detectGlobalPluginDir),_0x1dd72c=registerHooksToSettings(CLAUDE_SETTINGS_PATH,_0x479741,_0x3fadc2['force']??![]);return _0x1dd72c[_0x4716cb(0xe4,0x128)+_0x4716cb(0xe,-0x28)]?(console['log']('\x20\x20'+_0x46c585[_0x18731b(0x2df,0x26b)](_0x5bf765['zlSAE'])+(_0x18731b(0x2ee,0x2db)+_0x4716cb(0xd3,0xc2)+'rwrite)')),_0x3abfbc[_0x4716cb(0xcd,0x120)+_0x18731b(0x217,0x220)]=![]):(console[_0x4716cb(0x65,0x9c)]('\x20\x20'+_0x46c585['green'](_0x18731b(0x205,0x1ec)+'e\x20settings'+_0x18731b(0x2c9,0x290)+'ted')),console[_0x4716cb(0x65,0xd6)]('\x20\x20'+_0x46c585[_0x4716cb(0x72,0x0)]('5\x20hooks\x20re'+_0x18731b(0x2b8,0x251))+'\x20'+_0x46c585[_0x4716cb(0xba,0xcf)](_0x5bf765[_0x4716cb(0xf2,0xea)])),_0x3abfbc[_0x4716cb(0xcd,0xf8)+_0x4716cb(0x16,0xf)]=!![]),console['log'](''),console[_0x4716cb(0x65,0xbf)](_0x46c585[_0x18731b(0x22f,0x220)](_0x5bf765['FvQrj'])),console[_0x18731b(0x266,0x294)](_0x46c585[_0x18731b(0x273,0x2d3)][_0x18731b(0x246,0x1e6)](_0x5bf765['fIsba'])),console[_0x4716cb(0x65,0xb2)](_0x46c585['cyan'](_0x4716cb(0xa5,0x90)+_0x4716cb(0xa5,0xdb)+_0x4716cb(0xa5,0xa6)+_0x18731b(0x23e,0x1c9))),console[_0x18731b(0x266,0x229)](''),_0x3abfbc[_0x18731b(0x253,0x277)]=!![],_0x3abfbc;}finally{_0x160f72[_0x18731b(0x1f3,0x23c)]();}}
|