a2a-memory 0.11.5 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/LICENSE +7 -19
  2. package/README.md +1 -1
  3. package/dist/a2a/client.js +1 -252
  4. package/dist/a2a/discovery.js +1 -115
  5. package/dist/a2a/index.js +1 -8
  6. package/dist/a2a/types.js +1 -42
  7. package/dist/adapters/anthropic.js +1 -117
  8. package/dist/chunking/chunker.js +1 -163
  9. package/dist/claude/sync.d.ts +8 -2
  10. package/dist/claude/sync.js +1 -298
  11. package/dist/cli/commands/add.js +1 -80
  12. package/dist/cli/commands/claude-sync.d.ts +3 -3
  13. package/dist/cli/commands/claude-sync.js +1 -70
  14. package/dist/cli/commands/cleanup.js +1 -83
  15. package/dist/cli/commands/config.js +1 -79
  16. package/dist/cli/commands/edit.js +1 -69
  17. package/dist/cli/commands/embed.js +1 -92
  18. package/dist/cli/commands/extract.js +1 -103
  19. package/dist/cli/commands/health.js +1 -105
  20. package/dist/cli/commands/list.js +1 -46
  21. package/dist/cli/commands/migrate-chunks.js +1 -205
  22. package/dist/cli/commands/migrate-file-refs.js +1 -183
  23. package/dist/cli/commands/proficiency.js +1 -146
  24. package/dist/cli/commands/rm.js +1 -64
  25. package/dist/cli/commands/search.js +1 -90
  26. package/dist/cli/commands/setup-wizard.js +1 -387
  27. package/dist/cli/commands/setup.js +1 -170
  28. package/dist/cli/commands/skill.js +1 -151
  29. package/dist/cli/commands/status.js +1 -70
  30. package/dist/cli/commands/sync.js +1 -202
  31. package/dist/cli/commands/team.js +1 -142
  32. package/dist/cli/index.js +1 -87
  33. package/dist/config/manager.js +1 -372
  34. package/dist/db/database.d.ts +36 -0
  35. package/dist/db/database.js +1 -1400
  36. package/dist/embedding/e5-provider.js +1 -147
  37. package/dist/embedding/index.js +1 -34
  38. package/dist/embedding/local-provider.js +1 -157
  39. package/dist/embedding/openai-provider.js +1 -92
  40. package/dist/embedding/quantization.js +1 -89
  41. package/dist/extraction/dedup-manager.js +1 -161
  42. package/dist/extraction/emotion-filter.js +1 -33
  43. package/dist/extraction/extractor.d.ts +0 -3
  44. package/dist/extraction/extractor.js +1 -648
  45. package/dist/extraction/file-reference.js +1 -77
  46. package/dist/extraction/filter.js +1 -86
  47. package/dist/extraction/scorer.js +1 -142
  48. package/dist/extraction/similarity.js +1 -85
  49. package/dist/hooks/client-factory.js +1 -44
  50. package/dist/hooks/post-tool-use.js +1 -518
  51. package/dist/hooks/pre-compact.js +1 -209
  52. package/dist/hooks/session-end.js +1 -633
  53. package/dist/hooks/session-start.js +1 -549
  54. package/dist/hooks/shared.js +1 -110
  55. package/dist/hooks/stop.d.ts +21 -0
  56. package/dist/hooks/stop.js +1 -0
  57. package/dist/hooks/user-prompt-submit.js +1 -316
  58. package/dist/i18n/index.js +1 -2
  59. package/dist/i18n/messages.js +1 -150
  60. package/dist/index.d.ts +1 -1
  61. package/dist/index.js +1 -43
  62. package/dist/lifecycle/cleanup-scheduler.js +1 -137
  63. package/dist/lifecycle/cleanup.d.ts +1 -0
  64. package/dist/lifecycle/cleanup.js +1 -116
  65. package/dist/lifecycle/consolidation.d.ts +22 -0
  66. package/dist/lifecycle/consolidation.js +1 -0
  67. package/dist/lifecycle/index.d.ts +2 -0
  68. package/dist/lifecycle/index.js +1 -13
  69. package/dist/lifecycle/injection-flush.d.ts +24 -0
  70. package/dist/lifecycle/injection-flush.js +1 -0
  71. package/dist/lifecycle/quality-scorer.d.ts +5 -6
  72. package/dist/lifecycle/quality-scorer.js +1 -46
  73. package/dist/lifecycle/tiering.js +1 -246
  74. package/dist/llm/client.js +1 -226
  75. package/dist/llm/index.js +1 -5
  76. package/dist/proficiency/actr-engine.js +1 -106
  77. package/dist/proficiency/detection.js +1 -77
  78. package/dist/proficiency/index.js +1 -9
  79. package/dist/proficiency/tracker.js +1 -173
  80. package/dist/proficiency/types.js +1 -8
  81. package/dist/providers/adapters.js +1 -140
  82. package/dist/providers/detector.js +1 -57
  83. package/dist/search/adaptive-router.js +1 -93
  84. package/dist/search/index.js +1 -9
  85. package/dist/search/ranker.js +1 -171
  86. package/dist/search/reranker.js +1 -155
  87. package/dist/session/parser.js +1 -130
  88. package/dist/skill/evaluator.js +1 -509
  89. package/dist/skill/index.js +1 -7
  90. package/dist/skill/types.js +1 -7
  91. package/dist/sync/client.d.ts +7 -0
  92. package/dist/sync/client.js +1 -597
  93. package/dist/sync/encryption.js +1 -203
  94. package/dist/sync/index.js +1 -12
  95. package/dist/sync/queue.js +1 -214
  96. package/dist/sync/scheduler.js +1 -140
  97. package/dist/sync/synchronizer.js +1 -241
  98. package/dist/sync/team-synchronizer.js +1 -204
  99. package/dist/sync/vector-clock.js +1 -70
  100. package/dist/types/index.d.ts +13 -1
  101. package/dist/types/index.js +1 -132
  102. package/dist/utils/keychain.js +1 -170
  103. package/dist/utils/logger.js +1 -128
  104. package/package.json +15 -10
  105. package/dist/a2a/client.d.ts.map +0 -1
  106. package/dist/a2a/client.js.map +0 -1
  107. package/dist/a2a/discovery.d.ts.map +0 -1
  108. package/dist/a2a/discovery.js.map +0 -1
  109. package/dist/a2a/index.d.ts.map +0 -1
  110. package/dist/a2a/index.js.map +0 -1
  111. package/dist/a2a/types.d.ts.map +0 -1
  112. package/dist/a2a/types.js.map +0 -1
  113. package/dist/adapters/anthropic.d.ts.map +0 -1
  114. package/dist/adapters/anthropic.js.map +0 -1
  115. package/dist/chunking/chunker.d.ts.map +0 -1
  116. package/dist/chunking/chunker.js.map +0 -1
  117. package/dist/claude/sync.d.ts.map +0 -1
  118. package/dist/claude/sync.js.map +0 -1
  119. package/dist/cli/commands/add.d.ts.map +0 -1
  120. package/dist/cli/commands/add.js.map +0 -1
  121. package/dist/cli/commands/claude-sync.d.ts.map +0 -1
  122. package/dist/cli/commands/claude-sync.js.map +0 -1
  123. package/dist/cli/commands/cleanup.d.ts.map +0 -1
  124. package/dist/cli/commands/cleanup.js.map +0 -1
  125. package/dist/cli/commands/config.d.ts.map +0 -1
  126. package/dist/cli/commands/config.js.map +0 -1
  127. package/dist/cli/commands/edit.d.ts.map +0 -1
  128. package/dist/cli/commands/edit.js.map +0 -1
  129. package/dist/cli/commands/embed.d.ts.map +0 -1
  130. package/dist/cli/commands/embed.js.map +0 -1
  131. package/dist/cli/commands/extract.d.ts.map +0 -1
  132. package/dist/cli/commands/extract.js.map +0 -1
  133. package/dist/cli/commands/health.d.ts.map +0 -1
  134. package/dist/cli/commands/health.js.map +0 -1
  135. package/dist/cli/commands/list.d.ts.map +0 -1
  136. package/dist/cli/commands/list.js.map +0 -1
  137. package/dist/cli/commands/migrate-chunks.d.ts.map +0 -1
  138. package/dist/cli/commands/migrate-chunks.js.map +0 -1
  139. package/dist/cli/commands/migrate-file-refs.d.ts.map +0 -1
  140. package/dist/cli/commands/migrate-file-refs.js.map +0 -1
  141. package/dist/cli/commands/proficiency.d.ts.map +0 -1
  142. package/dist/cli/commands/proficiency.js.map +0 -1
  143. package/dist/cli/commands/rm.d.ts.map +0 -1
  144. package/dist/cli/commands/rm.js.map +0 -1
  145. package/dist/cli/commands/search.d.ts.map +0 -1
  146. package/dist/cli/commands/search.js.map +0 -1
  147. package/dist/cli/commands/setup-wizard.d.ts.map +0 -1
  148. package/dist/cli/commands/setup-wizard.js.map +0 -1
  149. package/dist/cli/commands/setup.d.ts.map +0 -1
  150. package/dist/cli/commands/setup.js.map +0 -1
  151. package/dist/cli/commands/skill.d.ts.map +0 -1
  152. package/dist/cli/commands/skill.js.map +0 -1
  153. package/dist/cli/commands/status.d.ts.map +0 -1
  154. package/dist/cli/commands/status.js.map +0 -1
  155. package/dist/cli/commands/sync.d.ts.map +0 -1
  156. package/dist/cli/commands/sync.js.map +0 -1
  157. package/dist/cli/commands/team.d.ts.map +0 -1
  158. package/dist/cli/commands/team.js.map +0 -1
  159. package/dist/cli/index.d.ts.map +0 -1
  160. package/dist/cli/index.js.map +0 -1
  161. package/dist/config/manager.d.ts.map +0 -1
  162. package/dist/config/manager.js.map +0 -1
  163. package/dist/db/database.d.ts.map +0 -1
  164. package/dist/db/database.js.map +0 -1
  165. package/dist/embedding/e5-provider.d.ts.map +0 -1
  166. package/dist/embedding/e5-provider.js.map +0 -1
  167. package/dist/embedding/index.d.ts.map +0 -1
  168. package/dist/embedding/index.js.map +0 -1
  169. package/dist/embedding/local-provider.d.ts.map +0 -1
  170. package/dist/embedding/local-provider.js.map +0 -1
  171. package/dist/embedding/openai-provider.d.ts.map +0 -1
  172. package/dist/embedding/openai-provider.js.map +0 -1
  173. package/dist/embedding/quantization.d.ts.map +0 -1
  174. package/dist/embedding/quantization.js.map +0 -1
  175. package/dist/extraction/dedup-manager.d.ts.map +0 -1
  176. package/dist/extraction/dedup-manager.js.map +0 -1
  177. package/dist/extraction/emotion-filter.d.ts.map +0 -1
  178. package/dist/extraction/emotion-filter.js.map +0 -1
  179. package/dist/extraction/extractor.d.ts.map +0 -1
  180. package/dist/extraction/extractor.js.map +0 -1
  181. package/dist/extraction/file-reference.d.ts.map +0 -1
  182. package/dist/extraction/file-reference.js.map +0 -1
  183. package/dist/extraction/filter.d.ts.map +0 -1
  184. package/dist/extraction/filter.js.map +0 -1
  185. package/dist/extraction/scorer.d.ts.map +0 -1
  186. package/dist/extraction/scorer.js.map +0 -1
  187. package/dist/extraction/similarity.d.ts.map +0 -1
  188. package/dist/extraction/similarity.js.map +0 -1
  189. package/dist/hooks/client-factory.d.ts.map +0 -1
  190. package/dist/hooks/client-factory.js.map +0 -1
  191. package/dist/hooks/post-tool-use.d.ts.map +0 -1
  192. package/dist/hooks/post-tool-use.js.map +0 -1
  193. package/dist/hooks/pre-compact.d.ts.map +0 -1
  194. package/dist/hooks/pre-compact.js.map +0 -1
  195. package/dist/hooks/session-end.d.ts.map +0 -1
  196. package/dist/hooks/session-end.js.map +0 -1
  197. package/dist/hooks/session-start.d.ts.map +0 -1
  198. package/dist/hooks/session-start.js.map +0 -1
  199. package/dist/hooks/shared.d.ts.map +0 -1
  200. package/dist/hooks/shared.js.map +0 -1
  201. package/dist/hooks/user-prompt-submit.d.ts.map +0 -1
  202. package/dist/hooks/user-prompt-submit.js.map +0 -1
  203. package/dist/i18n/index.d.ts.map +0 -1
  204. package/dist/i18n/index.js.map +0 -1
  205. package/dist/i18n/messages.d.ts.map +0 -1
  206. package/dist/i18n/messages.js.map +0 -1
  207. package/dist/index.d.ts.map +0 -1
  208. package/dist/index.js.map +0 -1
  209. package/dist/lifecycle/cleanup-scheduler.d.ts.map +0 -1
  210. package/dist/lifecycle/cleanup-scheduler.js.map +0 -1
  211. package/dist/lifecycle/cleanup.d.ts.map +0 -1
  212. package/dist/lifecycle/cleanup.js.map +0 -1
  213. package/dist/lifecycle/index.d.ts.map +0 -1
  214. package/dist/lifecycle/index.js.map +0 -1
  215. package/dist/lifecycle/quality-scorer.d.ts.map +0 -1
  216. package/dist/lifecycle/quality-scorer.js.map +0 -1
  217. package/dist/lifecycle/tiering.d.ts.map +0 -1
  218. package/dist/lifecycle/tiering.js.map +0 -1
  219. package/dist/llm/client.d.ts.map +0 -1
  220. package/dist/llm/client.js.map +0 -1
  221. package/dist/llm/index.d.ts.map +0 -1
  222. package/dist/llm/index.js.map +0 -1
  223. package/dist/proficiency/actr-engine.d.ts.map +0 -1
  224. package/dist/proficiency/actr-engine.js.map +0 -1
  225. package/dist/proficiency/detection.d.ts.map +0 -1
  226. package/dist/proficiency/detection.js.map +0 -1
  227. package/dist/proficiency/index.d.ts.map +0 -1
  228. package/dist/proficiency/index.js.map +0 -1
  229. package/dist/proficiency/tracker.d.ts.map +0 -1
  230. package/dist/proficiency/tracker.js.map +0 -1
  231. package/dist/proficiency/types.d.ts.map +0 -1
  232. package/dist/proficiency/types.js.map +0 -1
  233. package/dist/providers/adapters.d.ts.map +0 -1
  234. package/dist/providers/adapters.js.map +0 -1
  235. package/dist/providers/detector.d.ts.map +0 -1
  236. package/dist/providers/detector.js.map +0 -1
  237. package/dist/search/adaptive-router.d.ts.map +0 -1
  238. package/dist/search/adaptive-router.js.map +0 -1
  239. package/dist/search/index.d.ts.map +0 -1
  240. package/dist/search/index.js.map +0 -1
  241. package/dist/search/ranker.d.ts.map +0 -1
  242. package/dist/search/ranker.js.map +0 -1
  243. package/dist/search/reranker.d.ts.map +0 -1
  244. package/dist/search/reranker.js.map +0 -1
  245. package/dist/session/parser.d.ts.map +0 -1
  246. package/dist/session/parser.js.map +0 -1
  247. package/dist/skill/evaluator.d.ts.map +0 -1
  248. package/dist/skill/evaluator.js.map +0 -1
  249. package/dist/skill/index.d.ts.map +0 -1
  250. package/dist/skill/index.js.map +0 -1
  251. package/dist/skill/types.d.ts.map +0 -1
  252. package/dist/skill/types.js.map +0 -1
  253. package/dist/sync/client.d.ts.map +0 -1
  254. package/dist/sync/client.js.map +0 -1
  255. package/dist/sync/encryption.d.ts.map +0 -1
  256. package/dist/sync/encryption.js.map +0 -1
  257. package/dist/sync/index.d.ts.map +0 -1
  258. package/dist/sync/index.js.map +0 -1
  259. package/dist/sync/queue.d.ts.map +0 -1
  260. package/dist/sync/queue.js.map +0 -1
  261. package/dist/sync/scheduler.d.ts.map +0 -1
  262. package/dist/sync/scheduler.js.map +0 -1
  263. package/dist/sync/synchronizer.d.ts.map +0 -1
  264. package/dist/sync/synchronizer.js.map +0 -1
  265. package/dist/sync/team-synchronizer.d.ts.map +0 -1
  266. package/dist/sync/team-synchronizer.js.map +0 -1
  267. package/dist/sync/vector-clock.d.ts.map +0 -1
  268. package/dist/sync/vector-clock.js.map +0 -1
  269. package/dist/types/index.d.ts.map +0 -1
  270. package/dist/types/index.js.map +0 -1
  271. package/dist/utils/keychain.d.ts.map +0 -1
  272. package/dist/utils/keychain.js.map +0 -1
  273. package/dist/utils/logger.d.ts.map +0 -1
  274. package/dist/utils/logger.js.map +0 -1
@@ -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(_0x2cdb70,_0x4d655f){function _0x2936e0(_0x32a002,_0x531fa3){return _0x4e34(_0x32a002-0x3a0,_0x531fa3);}const _0x529a12=_0x2cdb70();function _0xcf22b9(_0x557d41,_0x428b61){return _0x4e34(_0x557d41-0x262,_0x428b61);}while(!![]){try{const _0x395b6a=-parseInt(_0x2936e0(0x5ee,0x5bb))/0x1+-parseInt(_0x2936e0(0x527,0x573))/0x2*(-parseInt(_0x2936e0(0x604,0x635))/0x3)+-parseInt(_0x2936e0(0x546,0x581))/0x4+parseInt(_0xcf22b9(0x4ba,0x4d8))/0x5+parseInt(_0x2936e0(0x629,0x672))/0x6*(-parseInt(_0xcf22b9(0x46a,0x486))/0x7)+parseInt(_0x2936e0(0x5a4,0x5c2))/0x8+-parseInt(_0xcf22b9(0x477,0x46a))/0x9*(-parseInt(_0x2936e0(0x5dd,0x5ed))/0xa);if(_0x395b6a===_0x4d655f)break;else _0x529a12['push'](_0x529a12['shift']());}catch(_0x5e2082){_0x529a12['push'](_0x529a12['shift']());}}}(_0xb7f5,0x3e112));import{createInterface}from'node:readline';import{existsSync,readFileSync,writeFileSync,mkdirSync}from'node:fs';import{join}from'node:path';function _0xb7f5(){const _0x322646=['zg9Uzq','qwrTAw4Grw1HAq','DKnqqvm','icbxyxjUAw5NoG','ytjHlw1LBw9YEq','zgLSEeu','wvbjsvm','zwqGyNKGC2v0Dq','t01XC3G','tMnYr3q','C3rYAw5NAwz5','BxPADge','ANnVBG','sMvuyKq','C2vYDMvYvxjS','ugHsyKK','CeXvq1e','Dwn0Aw9UltHKmq','t3zxzLu','uxDVvxi','q2fUBM90ihjLyq','kgzYB20GB3b0Aq','ywr5igv4Axn0CW','AvzvwNO','CvDkvKq','yxj0lMPZ','EfvbtvG','zw5LCG','q3rlu0C','q2XHDwrLienVza','DgLVBG','y2fuDvK','mJCWvMTPrerL','C29U','ihnLCNzLCIbJBW','nY51Cc5YywLSDW','CNDYAxrLkq','CxvLC3rPB24','sMnWqNG','BMvJDgLVBG','Dg9Rzw4','s2v5ig5VDcbYzq','CLfjBLa','CuXqDvi','C3nPB25fBMqSia','ywLSl3bHC3n3BW','zsbbueKGs2v5ia','icbfCNjVCJOGqW','C3rYyxrPB24','mJmYmZL1CeTfyuu','vhPMB0i','C2v0rw5JB2rPBG','AYbtzxr1CcbxAq','DgvYzwq','D2nNv2m','zsbqBhvNAw4Gqq','C3rKAw4','ue9tva','icbtzxj2zxiGvq','nJuZmdG1B3fACe9h','DMnoweO','C3rLza','yxbWBgLJyxrPBW','rMzXBvi','BwvTB3j5oMrLBa','wxbMy3e','zMfPBgvK','CMnO','vhrvqxq','y1vOv1q','BNzHBgLKifvsta','mJG3mJj5tMHKDNe','CMvHDguGywDLBG','uuz5r1a','ywXYzwfKEuv4Aq','zgf0yq','vgjfvMy','CMqU','icbdAgvJA2LUzW','xtOG','DMvKoG','C2v0qxbPs2v5','C29Tzq','zw5mvKu','icbbzg1PBIbfBq','CMvZDw1L','DxnLCI1WCM9TCa','y3LHBG','ExvRAem','zMLSDgvY','wwLWrMK','u3rLCcaYlZq6ia','AcbZzxj2zxiGyq','4PwA4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq','zs1WBhvNAw4','yxbPx2TLEq','C2vYDMvY','Ccb3AxPHCMq','ywLSzwqGDg8GyW','DhjPBq','CMnLihrVig92zq','ywDLBNqGqvbjia','icaGqtjbie1LBq','B29SvxnLlcbtzq','CgfZC3DVCMq','rMDwwK8','4Pwu4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq','Cgf1C2u','mJq3ogz6CvbTua','zxDsEge','C2v0uMf3tw9Kzq','BM90igzVDw5K','Bg9N','C3bSAxq','EvnftuW','AxnbCNjHEq','zsbZzxr0Aw5NCW','qu93DLK','Aw5JBhvKzxm','AMDgsvC','yvzfveW','zM91BMq','CfDIu00','q2Drq0O','yxqG','C2v2Afa','C2vYDMvYlG','uhjLq29TCgfJDa','zw1VCNKUy29T','igzVCM1HDcdIGjqG','A3nis1u','q2PWsxq','Ahr0Chm6lY9HmG','mJr0shDPvw4','y0PPCfO','rg91vfC','C3vJy2vZCW','Bw5kBgG','DgvKihn1y2nLCW','zxHPDa','rg1KtxC','zunVBxbHy3qP','Ag9VA3nszwDPCW','DxnLlMPZ','AevZzNC','yxj0lcbqB3n0va','sw52ywXPzcbvuG','C2z1BgX5','EvrRzKO','DunABei','s1riyvG','C3rHCNqGq2XHDq','sg9VA3mGywXYzq','sMHwANm','z2vUDcdIGjqGyxv0','BI9QC29U','vxnLCLbYB21WDa','qxv0AgvUDgLJyq','ug9ZDfrVB2XvCW','B25Zkq','l2fWAs92ms9HzW','DxjS','uKW6ia','CgfYC2u','mtKXodu0nfnsC2jXra','yxKUyxbW','rfnIANK','ywrTAw5aytjHBq','DgLTzw91Da','qvbjieTLEsbYzq','ywDLBNrjza','DxrOzw50AwnHDa','AM9PBG','EMfYzcaGia','vfrJzeS','qvbjieTLEsbZyq','ugfZC3DVCMq','EwfYCvO','BxbSzxrLisbszq','ANHJC0W','rwDtreK','Dc5QCW','icbqyxnZD29Yza','DhjHDgLVBG','AxrLBxm','zw1HAwW','t3fqr2e','BwfUDwfSBhKGzG','t2TurgG','Ag9VA3m','BvvND3K','r3znvNm','swrOAxu','rfnbAeG','zw50CZ9Uyw1Lpq','zxrYAwv2zsb0Aa','s1jbwLq','icbfCNjVCJOGsq','igfNzw50icC','y2GGC2vYDMvYia','yxbPs2v5','u3rLCcaZlZq6ia','ue15y1a','yu9xBxa','u3rLCcaXlZq6ia','4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwx','yw5UB3qGCMvHyW','Cgf0Ag5HBwu','4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq4Pwq','rgLkCNG','mxWYFdn8nhWW','y2f0Aw5NlI4Uia','t0fzzNe','iev4Axn0Aw5Nia','jY4UlIa','ExnADMy','icbtzxr1CcbdBW','Aw5NigfNzw50ia','AgzpwNm','u2XssMe','qMvHCMvYia','zgLT','C3rKB3v0','u2vYDMvYienVBG','z3jLzw4','BY1YzwDPC3rLCG','C2HIB2fYzc4','zM9Yy2u','ccai','EwvSBg93','igzVCIbLEgLZDa','vMjMr2S','ys1HCgKTChjVza','wxrHB0i','zgLZDa','u3vIBwL0lcbqCG','qLjWBu0','y29TBwfUza','C2f2zq','u1vjsfK','y2XVC2u','CMvK','BgvUz3rO','D3jPDgu','DhjPzxzLza','t1bSExi','zc5QCW','yxrL','DgvK','BNbTihjVB3qGlq','yM9Sza','z2LZDgvYzwq','BxjVEuC','zguGq29Kzs4','ywLSoIa','zxjYB3i','tuL2teW','shnor04','mJyYndu5mLfws1jvBa','u2vYDMvYifvsta','DxrMoa','DxrMltG','mJf2uhzeEKS','lI4U','DgLVBIbMywLSzq','lMnSyxvKzq','u2vZC2LVBLn0yq','zw50CW','qwDLBNqGy3jLyq','C2XPy2u','tdOG','icHjrdOG','BwvTB3j5oNjLyq','C2vZC2LVBI1LBG','sg9VAYbszwDPCW','nJe1odDyyvPjBNK','icbbDxrOzw50Aq','uhjczgy','CxrRrNq','kfnLC3nPB25tDa','zfnwt3O','BM5Ly3rPB24UlG','Dc1ZDwjTAxqUAG'];_0xb7f5=function(){return _0x322646;};return _0xb7f5();}import{homedir}from'node:os';import{execSync}from'node:child_process';function _0x32a77c(_0x453a2e,_0x514df7){return _0x4e34(_0x453a2e-0x2c9,_0x514df7);}import _0x33395b from'chalk';import{ConfigManager}from'../../config/manager.js';const CLAUDE_SETTINGS_PATH=join(homedir(),_0xd9b4de(0x2de,0x2d9),'settings.j'+_0xd9b4de(0x36c,0x30c)),DEFAULT_SERVER_URL=_0xd9b4de(0x267,0x254)+_0xd9b4de(0x28b,0x2b8)+_0x32a77c(0x4f7,0x551)+_0x32a77c(0x509,0x4cd)+_0x32a77c(0x470,0x452),AGENT_NAME='claude-cod'+_0x32a77c(0x544,0x4c2);function _0xd9b4de(_0x15b564,_0x2c7565){return _0x4e34(_0x2c7565-0xce,_0x15b564);}function createRl(){function _0x52aae5(_0x100b4c,_0x3c07fb){return _0x32a77c(_0x100b4c-0xb3,_0x3c07fb);}return createInterface({'input':process['stdin'],'output':process[_0x52aae5(0x55c,0x555)]});}function _0x4e34(_0x5837c8,_0x24bb51){_0x5837c8=_0x5837c8-0x171;const _0xb7f599=_0xb7f5();let _0x4e34ab=_0xb7f599[_0x5837c8];if(_0x4e34['VjqdhK']===undefined){var _0x538b81=function(_0x471b0d){const _0x5166b1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x51bf38='',_0x1ba245='';for(let _0x4211c0=0x0,_0x3bba50,_0x11edce,_0x25f713=0x0;_0x11edce=_0x471b0d['charAt'](_0x25f713++);~_0x11edce&&(_0x3bba50=_0x4211c0%0x4?_0x3bba50*0x40+_0x11edce:_0x11edce,_0x4211c0++%0x4)?_0x51bf38+=String['fromCharCode'](0xff&_0x3bba50>>(-0x2*_0x4211c0&0x6)):0x0){_0x11edce=_0x5166b1['indexOf'](_0x11edce);}for(let _0x383e97=0x0,_0x5bc95b=_0x51bf38['length'];_0x383e97<_0x5bc95b;_0x383e97++){_0x1ba245+='%'+('00'+_0x51bf38['charCodeAt'](_0x383e97)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1ba245);};_0x4e34['FyKLDJ']=_0x538b81,_0x4e34['AtYgAt']={},_0x4e34['VjqdhK']=!![];}const _0x116774=_0xb7f599[0x0],_0x5211e4=_0x5837c8+_0x116774,_0x20ad99=_0x4e34['AtYgAt'][_0x5211e4];return!_0x20ad99?(_0x4e34ab=_0x4e34['FyKLDJ'](_0x4e34ab),_0x4e34['AtYgAt'][_0x5211e4]=_0x4e34ab):_0x4e34ab=_0x20ad99,_0x4e34ab;}async function prompt(_0x5c3951,_0x1ac68d){return new Promise(_0x2032b3=>{function _0x9f049b(_0x1be1e5,_0x3fd363){return _0x4e34(_0x1be1e5- -0x2b5,_0x3fd363);}_0x5c3951[_0x9f049b(-0x73,-0x8d)](_0x1ac68d,_0x21a44f=>{function _0x47d560(_0x1d7974,_0x380803){return _0x9f049b(_0x1d7974-0x5b6,_0x380803);}_0x2032b3(_0x21a44f[_0x47d560(0x581,0x606)]());});});}async function promptWithDefault(_0x599c12,_0x59e58f,_0x1e8fb1){function _0xf5b451(_0x1e8401,_0x114eff){return _0x32a77c(_0x1e8401- -0x29,_0x114eff);}const _0x3e39ee={'jgTNU':function(_0x3faac8,_0x4b8aa6,_0x5d3720){return _0x3faac8(_0x4b8aa6,_0x5d3720);}},_0x1700fa=await _0x3e39ee['jgTNU'](prompt,_0x599c12,'\x20\x20'+_0x59e58f+'\x20['+_0x33395b[_0x1b899b(0x131,0x181)](_0x1e8fb1)+_0xf5b451(0x50c,0x53c));function _0x1b899b(_0x222784,_0xc00b5d){return _0x32a77c(_0xc00b5d- -0x327,_0x222784);}return _0x1700fa===''?_0x1e8fb1:_0x1700fa;}async function promptPassword(_0x3336a3,_0x247501){function _0x5755e4(_0x4ad140,_0x258fc7){return _0x32a77c(_0x4ad140- -0x258,_0x258fc7);}const _0x2cbd38={'OMqsx':function(_0x4fcda7,_0x472ba9){return _0x4fcda7===_0x472ba9;},'TzfoB':_0x5755e4(0x257,0x2cf)};return new Promise(_0x4a91e5=>{const _0x2a8b5c={'DouTW':function(_0x592d60,_0x270546){function _0x43be18(_0x4dbdc2,_0x4762e8){return _0x4e34(_0x4dbdc2- -0x40,_0x4762e8);}return _0x2cbd38[_0x43be18(0x1e5,0x219)](_0x592d60,_0x270546);},'SUIHY':function(_0x29420b,_0x4db8ad){return _0x29420b(_0x4db8ad);},'bSVfb':function(_0x6ea6cc,_0x337290){return _0x6ea6cc>_0x337290;},'boMwD':_0x2cbd38[_0x7711e0(0x117,0x15b)]},_0x193910=process[_0x581a2d(0x429,0x4aa)];function _0x7711e0(_0x3ebc13,_0x1bedb3){return _0x5755e4(_0x1bedb3- -0x165,_0x3ebc13);}process[_0x7711e0(0xd4,0xec)][_0x7711e0(0xef,0x101)]('\x20\x20'+_0x247501+':\x20');function _0x581a2d(_0x10ac10,_0x45c49b){return _0x5755e4(_0x10ac10-0x163,_0x45c49b);}let _0x15d610='';if(_0x193910[_0x581a2d(0x45f,0x4e0)]){_0x193910[_0x581a2d(0x45f,0x44a)](!![]),_0x193910[_0x581a2d(0x446,0x40f)](),_0x193910[_0x581a2d(0x424,0x3be)+'g'](_0x7711e0(0x109,0x112));const _0x3efeb2=_0x4769a0=>{function _0x3482e8(_0x2b443f,_0x305fab){return _0x7711e0(_0x2b443f,_0x305fab-0x2b);}function _0x5424d2(_0x2bf4a7,_0xaf8f9b){return _0x7711e0(_0x2bf4a7,_0xaf8f9b- -0x107);}if(_0x4769a0==='\x0d'||_0x2a8b5c[_0x5424d2(-0x62,-0x72)](_0x4769a0,'\x0a')){const _0x15ae8e=_0x5424d2(-0xb3,-0x27)[_0x3482e8(0xe4,0xaa)]('|');let _0x42f0c9=0x0;while(!![]){switch(_0x15ae8e[_0x42f0c9++]){case'0':_0x2a8b5c[_0x3482e8(0x111,0x128)](_0x4a91e5,_0x15d610);continue;case'1':_0x193910[_0x5424d2(0x109,0x90)](![]);continue;case'2':_0x193910[_0x3482e8(0x144,0x1bf)]();continue;case'3':_0x193910['removeList'+_0x5424d2(-0xe,0x3d)](_0x3482e8(0x1c8,0x19f),_0x3efeb2);continue;case'4':process[_0x5424d2(-0x2c,-0x1b)][_0x3482e8(0x140,0x12c)]('\x0a');continue;}break;}}else{if(_0x4769a0==='\x03')process[_0x5424d2(-0xc,-0x6e)](0x0);else _0x2a8b5c[_0x5424d2(-0xe,-0x72)](_0x4769a0,'\x7f')?_0x3482e8(0x144,0x163)!==_0x5424d2(0x97,0x31)?_0x1c510e['close']():_0x2a8b5c['bSVfb'](_0x15d610[_0x5424d2(-0x67,-0x7)],0x0)&&(_0x15d610=_0x15d610[_0x5424d2(-0x42,0x14)](0x0,-0x1),process['stdout']['write'](_0x2a8b5c['boMwD'])):(_0x15d610+=_0x4769a0,process[_0x5424d2(0x2c,-0x1b)][_0x5424d2(-0x90,-0x6)]('*'));}};_0x193910['on'](_0x581a2d(0x43c,0x474),_0x3efeb2);}else _0x3336a3['question']('',_0x1afd63=>{function _0x59a65d(_0x3cc305,_0x3d2a7b){return _0x7711e0(_0x3d2a7b,_0x3cc305-0x3ea);}_0x2a8b5c['SUIHY'](_0x4a91e5,_0x1afd63[_0x59a65d(0x576,0x589)]());});});}export async function checkServerHealth(_0x156ed8){function _0x399f73(_0x98495a,_0x2b5492){return _0x32a77c(_0x98495a- -0x30a,_0x2b5492);}const _0x5e6054={'cROgp':function(_0x384c8a,_0x485f67,_0x46b28a){return _0x384c8a(_0x485f67,_0x46b28a);}};try{const _0x4da0f6=await _0x5e6054['cROgp'](fetch,_0x156ed8+('/api/v1/he'+'alth'),{'signal':AbortSignal[_0x399f73(0x169,0x120)](0x1388)});return _0x4da0f6['ok'];}catch{return![];}}export async function loginAndGetToken(_0x3070e5,_0x5dfc8b,_0x2b4080){function _0x4d8145(_0x56e22c,_0x513806){return _0x32a77c(_0x56e22c- -0x121,_0x513806);}const _0x3c6134={'jxcsL':_0x2af311(0x145,0xf1)};function _0x2af311(_0x3466a4,_0x24a9ed){return _0x32a77c(_0x3466a4- -0x3da,_0x24a9ed);}try{const _0x1164fa=await fetch(_0x3070e5+('/api/v1/au'+'th/login'),{'method':_0x3c6134[_0x2af311(0xa4,0xfb)],'headers':{'Content-Type':'applicatio'+_0x4d8145(0x345,0x3a4)},'body':JSON['stringify']({'email':_0x5dfc8b,'password':_0x2b4080}),'signal':AbortSignal[_0x2af311(0x99,0x10d)](0x2710)});if(!_0x1164fa['ok'])return null;const _0x3d31c0=await _0x1164fa[_0x4d8145(0x3d1,0x3ca)]();return _0x3d31c0[_0x4d8145(0x3ed,0x3de)]??null;}catch{return null;}}export async function findExistingAgent(_0x4d2e5d,_0x43ffe6,_0x1e1f5d){function _0x27f22b(_0x462cfa,_0x4c113a){return _0x32a77c(_0x462cfa- -0x5bc,_0x4c113a);}const _0x2e1e12={'JeTbD':function(_0x5d2ed4,_0x584f8f,_0xff8a54){return _0x5d2ed4(_0x584f8f,_0xff8a54);},'uCZlB':_0x4909f1(0x29a,0x308),'CjpIt':function(_0x22a1eb,_0x24591d){return _0x22a1eb??_0x24591d;},'cUhWT':function(_0x2cf36f,_0x207393){return _0x2cf36f!==_0x207393;}};function _0x4909f1(_0x573852,_0x5a3089){return _0x32a77c(_0x5a3089- -0x21d,_0x573852);}try{const _0xbc043=await _0x2e1e12[_0x27f22b(-0xc9,-0x148)](fetch,_0x4d2e5d+('/api/v1/ag'+_0x27f22b(-0x12f,-0x1a4))+encodeURIComponent(_0x1e1f5d),{'headers':{'Authorization':_0x4909f1(0x2b4,0x28a)+_0x43ffe6,'Content-Type':_0x4909f1(0x36b,0x307)+'n/json'},'signal':AbortSignal[_0x4909f1(0x2ba,0x256)](0x2710)});if(!_0xbc043['ok'])return _0x2e1e12[_0x27f22b(-0x15c,-0xdb)]!==_0x2e1e12[_0x4909f1(0x1e7,0x243)]?(_0x3ec4f0[_0x27f22b(-0x181,-0x156)](_0x40199a[_0x27f22b(-0x100,-0x12f)](_0x4909f1(0x218,0x273)+_0x27f22b(-0x90,-0x34)+_0x4909f1(0x1e8,0x22f)+_0x6298c)),_0x463482[_0x27f22b(-0xf2,-0xa7)]=_0x27f22b(-0x15f,-0x10e)+'L:\x20'+_0x2b60c3,_0x2f2676):null;const _0x26e368=await _0xbc043[_0x27f22b(-0xca,-0xae)](),_0x4817e4=Array[_0x4909f1(0x266,0x221)](_0x26e368)?_0x26e368:_0x26e368['agents']??_0x26e368[_0x4909f1(0x200,0x266)]??[],_0x11296c=_0x4817e4['find'](_0xed11ea=>_0xed11ea['name']===_0x1e1f5d);return _0x2e1e12[_0x4909f1(0x21c,0x231)](_0x11296c,null);}catch{return _0x2e1e12[_0x27f22b(-0x91,-0x26)](_0x27f22b(-0x108,-0xc3),_0x4909f1(0x243,0x289))?null:null;}}export async function createAgent(_0x17e017,_0x344f2c,_0x5baa66){function _0x1b2736(_0x270847,_0x1e1ce2){return _0x32a77c(_0x1e1ce2- -0x300,_0x270847);}const _0xe7b780={'enLVE':_0x1b2736(0x1cd,0x228),'qtkFt':_0x1b2736(0x1d7,0x1f8),'aVETL':_0x4ce171(0x47c,0x455),'FgVZO':_0x4ce171(0x489,0x48d)+_0x4ce171(0x4a3,0x473)+_0x1b2736(0x146,0x165)+_0x1b2736(0x133,0x1ac)+_0x4ce171(0x473,0x49f)+_0x1b2736(0x27b,0x247),'OmogC':_0x4ce171(0x461,0x497)+'d','ysZvf':'memory:sea'+_0x4ce171(0x4af,0x449),'aOWmp':_0x1b2736(0x245,0x200),'DSAhH':_0x1b2736(0x205,0x195)};function _0x4ce171(_0x3a7eff,_0xa0096){return _0x32a77c(_0x3a7eff- -0x7a,_0xa0096);}try{if(_0xe7b780[_0x4ce171(0x467,0x4a8)]===_0xe7b780[_0x1b2736(0x166,0x143)])return _0x4c2875[_0x4ce171(0x3c1,0x41e)](_0x43610d[_0x4ce171(0x442,0x3e2)](_0xe7b780[_0x4ce171(0x4bf,0x4c0)])),_0x82e13d['log'](_0x1b06c1['red']('\x20\x20Error:\x20C'+_0x1b2736(0x12b,0x199)+_0x4ce171(0x4c8,0x48a)+'t\x20'+_0x21c1d9)),_0x520248[_0x1b2736(0x156,0x1ca)]='Cannot\x20rea'+_0x1b2736(0x1aa,0x192)+_0x1b2736(0x15e,0x147)+_0x5562b6,_0x4cd55c;else{const _0x4a461d=await fetch(_0x17e017+(_0x4ce171(0x3f1,0x3eb)+_0x1b2736(0x224,0x1d6)),{'method':_0x4ce171(0x4a5,0x44a),'headers':{'Authorization':_0x1b2736(0x186,0x1a7)+_0x344f2c,'Content-Type':_0x1b2736(0x1ab,0x224)+_0x1b2736(0xf0,0x166)},'body':JSON[_0x4ce171(0x476,0x4b5)]({'name':_0x5baa66,'description':_0xe7b780[_0x1b2736(0x2b3,0x24f)],'capabilities':[_0xe7b780['OmogC'],'memory:cre'+_0x1b2736(0x1a6,0x1c2),'memory:upd'+_0x1b2736(0x225,0x1c2),_0x1b2736(0x26d,0x226)+'ete',_0xe7b780[_0x4ce171(0x428,0x461)]]}),'signal':AbortSignal[_0x1b2736(0x121,0x173)](0x2710)});if(!_0x4a461d['ok']){if(_0xe7b780[_0x1b2736(0x1e9,0x196)]===_0x1b2736(0x1af,0x1e3))_0x3e2a13[_0x4ce171(0x491,0x4ab)](_0x32a698,_0x4d72ab=>{_0x32bcde(_0x4d72ab['trim']());});else return null;}return await _0x4a461d[_0x4ce171(0x478,0x4a3)]();}}catch{if(_0xe7b780[_0x1b2736(0x1b8,0x18c)]===_0xe7b780['DSAhH'])return null;else{const _0x29a06c=new _0x1377f4(import.meta.url),_0x5a4dd3=_0x29a06c[_0x1b2736(0x1f8,0x19a)],_0x391e5f=_0x5a4dd3[_0x4ce171(0x3c2,0x38d)]('/');return _0x391e5f['slice'](0x0,-0x4)[_0x4ce171(0x3fd,0x419)]('/');}}}export function saveServerConfig(_0xda46e,_0x5a1790,_0x660e6c){const _0x35a3b9=_0xda46e['load']();_0x35a3b9[_0x576341(0x260,0x2a9)][_0x1906f2(-0x19d,-0x1ca)]=_0x5a1790;function _0x576341(_0x5c70d3,_0x336376){return _0x32a77c(_0x5c70d3- -0x2e6,_0x336376);}_0xda46e[_0x576341(0x1d3,0x1ec)](_0x35a3b9);function _0x1906f2(_0x569754,_0x206f83){return _0x32a77c(_0x569754- -0x609,_0x206f83);}_0xda46e[_0x576341(0x251,0x2ac)](_0x660e6c);}export function getPluginDir(){const _0x3432d4=new URL(import.meta.url),_0x173754=_0x3432d4[_0xcfc79(0x31c,0x321)];function _0x1ef205(_0x1e08eb,_0x13dacd){return _0xd9b4de(_0x1e08eb,_0x13dacd-0x165);}function _0xcfc79(_0x2b0a43,_0x138e70){return _0xd9b4de(_0x2b0a43,_0x138e70-0x82);}const _0x103292=_0x173754['split']('/');return _0x103292[_0xcfc79(0x2da,0x35f)](0x0,-0x4)[_0xcfc79(0x359,0x2fe)]('/');}export function detectGlobalPluginDir(){const _0x5013c1={'giAal':_0x3aac72(0x430,0x42c)+'g','NcrGt':_0x3724d1(-0x1ac,-0x13d)};try{const _0x2559c0=execSync(_0x5013c1['giAal'],{'encoding':_0x5013c1[_0x3aac72(0x446,0x457)],'timeout':0x1388})[_0x3724d1(-0x132,-0x19c)](),_0x412f76=join(_0x2559c0,_0x3724d1(-0x191,-0x120));if(existsSync(_0x412f76))return _0x412f76;}catch{}function _0x3724d1(_0xe03462,_0x43a250){return _0x32a77c(_0xe03462- -0x67b,_0x43a250);}function _0x3aac72(_0x31f699,_0x16b252){return _0x32a77c(_0x16b252- -0x98,_0x31f699);}return getPluginDir();}export function registerHooksToSettings(_0x2c3680,_0x2c95c9,_0x2ce5f7){function _0x1de2d1(_0xcb0c8d,_0x3884a5){return _0x32a77c(_0xcb0c8d- -0x2,_0x3884a5);}const _0x66c179={'vCPAS':_0x1de2d1(0x526,0x4ca),'mUgwy':_0x1de2d1(0x4d5,0x54d)+_0x1de2d1(0x4d1,0x47d)+'d','BRpmM':function(_0x572473,_0x171dd3){return _0x572473(_0x171dd3);},'JcpBx':function(_0x224761,_0x61d52a){return _0x224761!==_0x61d52a;},'CtKSG':'GdFLx','mzZta':function(_0x487dbd,_0x4ca638,_0x33c88b){return _0x487dbd(_0x4ca638,_0x33c88b);},'MIvLL':function(_0x45179e,_0x59aacd){return _0x45179e===_0x59aacd;},'hfOZs':_0x1de2d1(0x440,0x42b),'TtUAt':function(_0x30034c,_0x5be8be){return _0x30034c&&_0x5be8be;},'mroyG':_0x1552bd(0x39f,0x368),'rQInP':_0x1552bd(0x3bf,0x446)+'rt','OPlyr':function(_0x6536ae,_0x5ebe3b,_0x3eac21){return _0x6536ae(_0x5ebe3b,_0x3eac21);},'yukhC':'session-st'+_0x1de2d1(0x4fd,0x499),'pWbSM':_0x1552bd(0x353,0x3d0)+'e','OAYfq':'SessionEnd','sevhP':function(_0x2bb58b,_0x4b93aa,_0x3699fb){return _0x2bb58b(_0x4b93aa,_0x3699fb);},'iVUZz':_0x1552bd(0x3c6,0x3b2)+_0x1de2d1(0x4bf,0x511),'OqPGa':_0x1552bd(0x351,0x3de)+'Submit','JhVjs':function(_0x16899b,_0x41079a,_0x520b67){return _0x16899b(_0x41079a,_0x520b67);},'TbEVf':_0x1de2d1(0x53a,0x538)+_0x1de2d1(0x4e3,0x4ff)+'s','YPIIS':function(_0x2f5577,_0x50f039,_0x12629b){return _0x2f5577(_0x50f039,_0x12629b);},'hEsfw':_0x1552bd(0x3a2,0x3dd),'TTcdK':function(_0x53d590,_0x365a77,_0x1ecc45){return _0x53d590(_0x365a77,_0x1ecc45);},'iEscV':_0x1de2d1(0x4d2,0x4c1),'qLPuR':_0x1552bd(0x369,0x37b),'OkTDh':function(_0x3d38be,_0x2fcbf5,_0x22967a,_0x53af68){return _0x3d38be(_0x2fcbf5,_0x22967a,_0x53af68);}};let _0x5641e9={};if(_0x66c179[_0x1552bd(0x3a1,0x3fe)](existsSync,_0x2c3680)){if(_0x66c179[_0x1de2d1(0x50a,0x4ca)](_0x66c179[_0x1de2d1(0x500,0x48b)],_0x1de2d1(0x551,0x5c8)))try{_0x5641e9=JSON[_0x1de2d1(0x46c,0x3e1)](_0x66c179[_0x1de2d1(0x4ef,0x520)](readFileSync,_0x2c3680,'utf-8'));}catch{}else _0x18614b['question']('',_0x3c5840=>{function _0x1e08a0(_0x2c0003,_0x44912b){return _0x1552bd(_0x2c0003- -0x181,_0x44912b);}_0x913146(_0x3c5840[_0x1e08a0(0x2b2,0x2c0)]());});}!_0x5641e9[_0x1552bd(0x372,0x3a0)]&&(_0x66c179[_0x1de2d1(0x4c9,0x487)](_0x66c179['hfOZs'],_0x66c179[_0x1de2d1(0x4a3,0x476)])?_0x5641e9[_0x1de2d1(0x486,0x419)]={}:(_0x40b0bd=_0x2c9b0a[_0x1de2d1(0x4f2,0x540)],_0x3543aa['log'](_0x1552bd(0x40a,0x3c0)+_0x1de2d1(0x46b,0x473)+_0x1784f2[_0x1552bd(0x427,0x4a6)](_0x2cb857)+'\x20'+_0x4d1361['dim']('(from\x20opti'+_0x1552bd(0x354,0x2cc)))));const _0x20a8ac=Object['values'](_0x5641e9[_0x1552bd(0x372,0x3b5)])[_0x1552bd(0x422,0x3fd)](_0x46395e=>_0x46395e['some'](_0x4ce545=>_0x4ce545[_0x1552bd(0x372,0x3e0)]?.['some'](_0x7f04fc=>_0x7f04fc[_0x1552bd(0x3a2,0x342)]?.[_0x1552bd(0x32b,0x368)](_0x1de2d1(0x4e8,0x520)))));if(_0x66c179[_0x1552bd(0x414,0x462)](_0x20a8ac,!_0x2ce5f7))return{'registered':![],'alreadyExisted':!![]};const _0x523d11=join(_0x2c95c9,_0x66c179[_0x1552bd(0x3b1,0x368)],_0x1552bd(0x372,0x3cf)),_0x5e8b6b=[[_0x66c179[_0x1de2d1(0x50e,0x4ae)],_0x66c179[_0x1552bd(0x3aa,0x393)](join,_0x523d11,_0x66c179[_0x1552bd(0x428,0x498)])],[_0x66c179[_0x1552bd(0x32f,0x3b5)],join(_0x523d11,'post-tool-'+_0x1de2d1(0x458,0x456))],[_0x66c179[_0x1de2d1(0x49d,0x4ba)],_0x66c179[_0x1552bd(0x332,0x2cd)](join,_0x523d11,_0x66c179[_0x1552bd(0x3e7,0x41e)])],[_0x66c179[_0x1552bd(0x36f,0x3a7)],_0x66c179[_0x1de2d1(0x462,0x4ba)](join,_0x523d11,_0x66c179[_0x1552bd(0x41c,0x49f)])],[_0x1552bd(0x334,0x2b3),_0x66c179[_0x1de2d1(0x4ea,0x56c)](join,_0x523d11,'pre-compac'+_0x1552bd(0x36a,0x361))]];for(const [_0x3618e7,_0x506ef2]of _0x5e8b6b){_0x5641e9['hooks'][_0x3618e7]=[...(_0x5641e9[_0x1552bd(0x372,0x3a0)][_0x3618e7]??[])[_0x1de2d1(0x53d,0x4ea)](_0x5e43aa=>!_0x5e43aa['hooks']?.['some'](_0x29e1c4=>_0x29e1c4[_0x1de2d1(0x4b6,0x538)]?.['includes']('a2a-memory'))),{'matcher':'','hooks':[{'type':_0x66c179[_0x1de2d1(0x459,0x3cf)],'command':'node\x20'+_0x506ef2}]}];}const _0xfbc905=_0x66c179[_0x1552bd(0x363,0x343)](join,homedir(),_0x66c179['iEscV']);function _0x1552bd(_0x522efd,_0x21a252){return _0x32a77c(_0x522efd- -0x116,_0x21a252);}if(!existsSync(_0xfbc905)){if(_0x66c179[_0x1de2d1(0x50f,0x548)]!==_0x66c179[_0x1de2d1(0x50f,0x522)])return _0x4256ea[_0x1de2d1(0x439,0x407)](_0x23d57b['red'](_0x66c179[_0x1de2d1(0x4e6,0x4ea)])),_0x245a8b[_0x1552bd(0x325,0x39e)](_0x37e200['red']('\x20\x20Error:\x20F'+_0x1de2d1(0x546,0x5c0)+'reate\x20agen'+'t.')),_0x499154[_0x1de2d1(0x4c8,0x462)]=_0x66c179[_0x1de2d1(0x487,0x406)],_0x205bf0;else _0x66c179[_0x1de2d1(0x4ef,0x4d3)](mkdirSync,_0xfbc905,{'recursive':!![]});}return _0x66c179[_0x1552bd(0x371,0x3ad)](writeFileSync,_0x2c3680,JSON['stringify'](_0x5641e9,null,0x2),_0x1de2d1(0x4ce,0x458)),{'registered':!![],'alreadyExisted':![]};}export async function runSetupWizard(_0x11cb25={}){const _0x200222={'tWadz':'npm\x20root\x20-'+'g','GvMVs':_0x4a2608(0x4bc,0x4b5),'YipFi':function(_0xf07f95,_0x34575){return _0xf07f95(_0x34575);},'qWJVD':_0x3d54c9(-0xb9,-0xbe)+_0x4a2608(0x523,0x4b7),'fCPBX':function(_0x28fe2c){return _0x28fe2c();},'PrBdf':_0x3d54c9(0x72,0x18)+_0x3d54c9(-0x76,-0x9d)+_0x3d54c9(-0x87,-0x9d)+_0x3d54c9(-0x93,-0xa0),'ksHKU':function(_0x1fee96,_0x52660c){return _0x1fee96+_0x52660c;},'CCcBc':_0x4a2608(0x530,0x4ca)+_0x4a2608(0x488,0x4e5)+_0x3d54c9(-0xa2,-0x9d)+'═════════╝','QwoUr':function(_0x1136f1,_0xbfabb1,_0x5d301d,_0x4ba209){return _0x1136f1(_0xbfabb1,_0x5d301d,_0x4ba209);},'Ypfcq':_0x3d54c9(-0x65,-0x6a),'yarqZ':function(_0x3caf8b,_0x174b4f){return _0x3caf8b(_0x174b4f);},'caTuY':function(_0x26f548,_0x444e99,_0x5d5471,_0x582235){return _0x26f548(_0x444e99,_0x5d5471,_0x582235);},'AOwvY':_0x3d54c9(-0xb3,-0xc6)+_0x3d54c9(-0x126,-0xed),'cJipZ':function(_0x3a46f8,_0x4004c2){return _0x3a46f8===_0x4004c2;},'wcgWc':_0x3d54c9(-0xb5,-0x9c),'ySEML':_0x4a2608(0x4e8,0x575)+_0x3d54c9(-0x13d,-0xce),'HsNGN':_0x3d54c9(-0x107,-0xbd),'vcNXJ':'\x20\x20Error:\x20A'+_0x4a2608(0x463,0x3e5)+'ion\x20failed'+'.\x20Check\x20em'+_0x3d54c9(0x31,-0x25)+_0x3d54c9(0x28,-0x5),'KTHaX':_0x3d54c9(-0x143,-0xd0)+_0x4a2608(0x4c0,0x4af)+'d','NNhpA':'Authentica'+_0x3d54c9(-0xfa,-0xe3)+_0x3d54c9(-0xa0,-0xda),'VbfGk':_0x3d54c9(-0x132,-0xf4),'KRAZT':_0x3d54c9(-0x84,-0x4d),'DSbjy':_0x3d54c9(-0xbd,-0xc4)+_0x4a2608(0x4ac,0x539),'CgQCJ':_0x4a2608(0x4d6,0x455)+_0x4a2608(0x48d,0x45e)+_0x4a2608(0x538,0x514)+_0x4a2608(0x4fc,0x573)+'turned\x20by\x20'+_0x4a2608(0x436,0x402),'Idhiu':'\x20\x20Error:\x20F'+'ailed\x20to\x20c'+_0x3d54c9(0x65,-0xa)+'t.','hEpcm':_0x4a2608(0x4d3,0x4d8),'QFyGP':'Step\x204/4:\x20'+_0x3d54c9(-0xb0,-0x5b)+_0x3d54c9(-0xaa,-0xb6),'RvhGj':function(_0x47cbc4){return _0x47cbc4();},'yTkfJ':_0x4a2608(0x450,0x46f)+'ady\x20regist'+'ered','mnJlh':'5\x20hooks\x20re'+_0x4a2608(0x4b3,0x4e0),'DmdMw':_0x4a2608(0x488,0x482)+'══════════'+_0x3d54c9(-0xd9,-0x9d)+'═════════'};function _0x3d54c9(_0x5ba87c,_0x2835c5){return _0xd9b4de(_0x5ba87c,_0x2835c5- -0x33d);}const _0xed1f01={'success':![],'serverUrl':_0x11cb25['serverUrl']??DEFAULT_SERVER_URL,'hooksRegistered':![]};function _0x4a2608(_0x13436c,_0x4bdc69){return _0xd9b4de(_0x4bdc69,_0x13436c-0x1e8);}const _0x47686a=_0x200222['fCPBX'](createRl);try{console['log'](''),console[_0x3d54c9(-0xfe,-0xfd)](_0x33395b[_0x3d54c9(-0x27,0x5)](_0x200222[_0x3d54c9(-0x98,-0x58)])),console[_0x3d54c9(-0x80,-0xfd)](_0x200222[_0x3d54c9(-0x8c,-0xeb)](_0x33395b[_0x4a2608(0x52a,0x5a9)]('║'),_0x33395b[_0x3d54c9(-0xeb,-0x73)](_0x4a2608(0x539,0x4f0)+'ory\x20—\x20Quic'+_0x3d54c9(-0x38,-0x1e)+_0x4a2608(0x465,0x406)))+_0x33395b['cyan']('║')),console[_0x4a2608(0x428,0x3aa)](_0x33395b[_0x4a2608(0x52a,0x526)](_0x200222['CCcBc'])),console[_0x4a2608(0x428,0x459)](''),console['log'](_0x33395b[_0x4a2608(0x4b2,0x515)](_0x4a2608(0x484,0x4de)+_0x3d54c9(-0x82,-0x8e)+_0x3d54c9(-0x82,-0x2b)));let _0x2b6c65;_0x11cb25[_0x3d54c9(-0xc0,-0x44)]?(_0x2b6c65=_0x11cb25[_0x3d54c9(-0x96,-0x44)],console['log']('\x20\x20Server\x20U'+_0x4a2608(0x45a,0x46f)+_0x33395b['cyan'](_0x2b6c65)+'\x20'+_0x33395b['dim'](_0x4a2608(0x4e8,0x4af)+'ons)'))):_0x2b6c65=await _0x200222[_0x3d54c9(-0xb4,-0x3f)](promptWithDefault,_0x47686a,_0x200222[_0x4a2608(0x514,0x566)],DEFAULT_SERVER_URL);try{new URL(_0x2b6c65);}catch{return console[_0x4a2608(0x428,0x3f3)](_0x33395b[_0x3d54c9(-0x38,-0x7c)](_0x3d54c9(-0xde,-0xa8)+'nvalid\x20URL'+_0x4a2608(0x439,0x487)+_0x2b6c65)),_0xed1f01['error']='Invalid\x20UR'+_0x3d54c9(-0xb9,-0x5f)+_0x2b6c65,_0xed1f01;}process[_0x4a2608(0x496,0x510)][_0x4a2608(0x4ab,0x44a)](_0x3d54c9(0x7e,-0x4)+_0x4a2608(0x4f5,0x56c)+_0x3d54c9(0x39,-0x54)+'.\x20');const _0x5088bf=await _0x200222[_0x4a2608(0x469,0x494)](checkServerHealth,_0x2b6c65);if(!_0x5088bf)return console[_0x3d54c9(-0x10f,-0xfd)](_0x33395b[_0x3d54c9(-0x27,-0x7c)](_0x3d54c9(0x6d,-0x10))),console[_0x3d54c9(-0x96,-0xfd)](_0x33395b[_0x4a2608(0x4a9,0x4f2)](_0x4a2608(0x502,0x524)+_0x3d54c9(-0xe3,-0x9f)+'h\x20server\x20a'+'t\x20'+_0x2b6c65)),_0xed1f01[_0x4a2608(0x4b7,0x4b7)]=_0x3d54c9(0x24,-0x3e)+_0x4a2608(0x47f,0x4df)+_0x4a2608(0x434,0x4a7)+_0x2b6c65,_0xed1f01;console[_0x3d54c9(-0x121,-0xfd)](_0x33395b[_0x4a2608(0x498,0x4c0)]('ok')),_0xed1f01[_0x3d54c9(-0xb9,-0x44)]=_0x2b6c65,console['log'](''),console[_0x3d54c9(-0x158,-0xfd)](_0x33395b[_0x4a2608(0x4b2,0x452)](_0x4a2608(0x52e,0x573)+'Authentica'+_0x4a2608(0x4f1,0x496)));let _0x5050cd,_0x39e464;_0x11cb25[_0x4a2608(0x471,0x454)]?(_0x5050cd=_0x11cb25[_0x3d54c9(-0xfe,-0xb4)],console[_0x3d54c9(-0x88,-0xfd)](_0x4a2608(0x527,0x54d)+_0x4a2608(0x4b6,0x488)+_0x33395b['cyan'](_0x5050cd)+'\x20'+_0x33395b[_0x4a2608(0x495,0x43d)](_0x3d54c9(-0x5d,-0x3d)+'ons)'))):_0x5050cd=await _0x200222['caTuY'](promptWithDefault,_0x47686a,_0x4a2608(0x4d4,0x53f)+'l',_0x200222[_0x4a2608(0x42d,0x4a3)]);if(_0x11cb25[_0x3d54c9(-0x30,0x16)]){if(_0x200222[_0x4a2608(0x43e,0x47b)](_0x200222[_0x4a2608(0x509,0x47d)],_0x200222[_0x3d54c9(0x4d,-0x1c)]))_0x39e464=_0x11cb25['password'],console['log'](_0x3d54c9(-0x4b,-0xb7)+':\x20'+_0x33395b[_0x3d54c9(-0xdd,-0x90)](_0x200222[_0x3d54c9(-0x93,-0xfb)]));else{const _0x55a3a0=_0x4f489c(osUxSG['tWadz'],{'encoding':osUxSG[_0x4a2608(0x477,0x459)],'timeout':0x1388})[_0x4a2608(0x536,0x4cb)](),_0xe30633=_0x4e1cea(_0x55a3a0,'a2a-memory');if(osUxSG[_0x4a2608(0x52d,0x4a3)](_0x5d8914,_0xe30633))return _0xe30633;}}else _0x39e464=await promptPassword(_0x47686a,_0x200222[_0x4a2608(0x4b9,0x4cf)]);process[_0x3d54c9(-0x16,-0x8f)][_0x4a2608(0x4ab,0x4d8)](_0x4a2608(0x4cc,0x536)+_0x3d54c9(-0x95,-0x9a));const _0x5dbc32=await _0x200222[_0x3d54c9(-0x37,-0x3f)](loginAndGetToken,_0x2b6c65,_0x5050cd,_0x39e464);if(!_0x5dbc32)return console['log'](_0x33395b[_0x4a2608(0x4a9,0x520)](_0x3d54c9(-0x6c,-0x10))),console[_0x4a2608(0x428,0x46a)](_0x33395b[_0x3d54c9(-0x87,-0x7c)](_0x200222[_0x3d54c9(0xe,-0x16)])),_0xed1f01[_0x4a2608(0x4b7,0x484)]=_0x200222[_0x4a2608(0x44e,0x47e)],_0xed1f01;console['log'](_0x33395b['green']('ok')),console['log']('\x20\x20'+_0x33395b[_0x4a2608(0x498,0x42c)](_0x200222['NNhpA'])),console[_0x3d54c9(-0x14c,-0xfd)](''),console[_0x3d54c9(-0x9e,-0xfd)](_0x33395b[_0x4a2608(0x4b2,0x4b2)](_0x3d54c9(-0x68,-0xa4)+'Agent\x20Regi'+_0x3d54c9(-0x60,-0x22)));let _0x3d7fb6,_0x326a03;process[_0x4a2608(0x496,0x420)][_0x3d54c9(-0xcb,-0x7a)]('\x20\x20Checking'+_0x4a2608(0x49e,0x4ea)+_0x3d54c9(-0xe1,-0x94)+'\x27'+AGENT_NAME+_0x3d54c9(-0x2c,-0x97));const _0x544d92=await findExistingAgent(_0x2b6c65,_0x5dbc32,AGENT_NAME);if(_0x544d92){console[_0x3d54c9(-0x138,-0xfd)](_0x33395b[_0x3d54c9(-0x41,-0x88)](_0x200222[_0x3d54c9(-0x112,-0x86)])),console[_0x4a2608(0x428,0x45f)]('\x20\x20'+_0x33395b[_0x4a2608(0x49d,0x44b)]('Agent\x20alre'+_0x3d54c9(-0xc9,-0x3c))+_0x3d54c9(-0xbb,-0x5e)+_0x544d92['id']+')'),_0x3d7fb6=_0x544d92['id'];if(_0x544d92[_0x3d54c9(0x82,0xd)]){if('dilxE'===_0x200222[_0x3d54c9(-0x4f,-0xa9)])_0x326a03=_0x544d92[_0x4a2608(0x532,0x56a)],console[_0x3d54c9(-0x88,-0xfd)]('\x20\x20'+_0x33395b[_0x3d54c9(-0xc0,-0x8d)](_0x200222[_0x4a2608(0x45e,0x4e9)]));else{const _0x1ba9d0=_0x1ec06b[_0x4a2608(0x4c5,0x503)](0x0,0xc)+_0x3d54c9(-0x23,-0x66);_0x37a09f[_0x3d54c9(-0x16f,-0xfd)]('\x20\x20'+_0x2865a7[_0x4a2608(0x498,0x4a7)](_0x200222[_0x3d54c9(-0xac,-0x3a)])+'\x20'+_0x916e72[_0x4a2608(0x52a,0x4c6)](_0x1ba9d0));}}else console['log'](_0x33395b[_0x3d54c9(-0xf8,-0x88)](_0x200222[_0x3d54c9(-0xf1,-0xf2)])),console['log'](_0x33395b[_0x4a2608(0x49d,0x444)]('\x20\x20Please\x20r'+_0x3d54c9(-0xe9,-0xaa)+_0x4a2608(0x501,0x4ac)+_0x3d54c9(-0xd7,-0xb2)+'rom\x20the\x20da'+_0x3d54c9(-0x14,-0x8b))),_0x326a03='';}else{console['log'](_0x33395b[_0x3d54c9(-0x1c,-0x90)](_0x3d54c9(-0x174,-0xfe))),process[_0x3d54c9(-0x93,-0x8f)]['write']('\x20\x20Creating'+_0x3d54c9(-0xc4,-0xa7)+AGENT_NAME+_0x3d54c9(-0x101,-0x97));const _0x5a9c61=await createAgent(_0x2b6c65,_0x5dbc32,AGENT_NAME);if(!_0x5a9c61)return console['log'](_0x33395b[_0x4a2608(0x4a9,0x4b9)](_0x3d54c9(-0x98,-0x10))),console[_0x4a2608(0x428,0x411)](_0x33395b[_0x4a2608(0x4a9,0x4fd)](_0x200222[_0x3d54c9(-0x47,-0xad)])),_0xed1f01[_0x4a2608(0x4b7,0x541)]=_0x4a2608(0x4c4,0x47b)+_0x4a2608(0x4c0,0x50a)+'d',_0xed1f01;console[_0x3d54c9(-0x107,-0xfd)](_0x33395b[_0x4a2608(0x498,0x4bf)](_0x200222['hEpcm'])),console[_0x3d54c9(-0x15f,-0xfd)]('\x20\x20'+_0x33395b['green'](_0x4a2608(0x4c4,0x504)+_0x3d54c9(-0xec,-0x75))+_0x4a2608(0x4c7,0x513)+_0x5a9c61['id']+')'),_0x3d7fb6=_0x5a9c61['id'],_0x326a03=_0x5a9c61[_0x3d54c9(-0x28,0xd)];}if(_0x326a03){const _0x57d5e1=_0x326a03[_0x4a2608(0x4c5,0x4c7)](0x0,0xc)+_0x4a2608(0x4bf,0x456);console[_0x3d54c9(-0x127,-0xfd)]('\x20\x20'+_0x33395b[_0x3d54c9(-0xa1,-0x8d)](_0x3d54c9(-0xd2,-0xbe)+_0x4a2608(0x523,0x59f))+'\x20'+_0x33395b[_0x3d54c9(-0x34,0x5)](_0x57d5e1));}_0xed1f01[_0x4a2608(0x462,0x3dd)]=_0x3d7fb6,_0xed1f01[_0x3d54c9(-0xbe,-0xa5)]=_0x326a03;const _0x713281=new ConfigManager();if(_0x326a03)_0x200222[_0x4a2608(0x4e6,0x46f)](saveServerConfig,_0x713281,_0x2b6c65,_0x326a03);else{const _0x46fb34=_0x713281['load']();_0x46fb34[_0x3d54c9(0x5c,0xe)]['url']=_0x2b6c65,_0x713281['save'](_0x46fb34);}console[_0x4a2608(0x428,0x48b)](''),console[_0x3d54c9(-0x123,-0xfd)](_0x33395b[_0x4a2608(0x4b2,0x45d)](_0x200222[_0x4a2608(0x51c,0x52d)]));const _0x30d83d=_0x200222['RvhGj'](detectGlobalPluginDir),_0x145c61=_0x200222[_0x4a2608(0x4f2,0x474)](registerHooksToSettings,CLAUDE_SETTINGS_PATH,_0x30d83d,_0x11cb25[_0x4a2608(0x49b,0x42c)]??![]);return _0x145c61[_0x4a2608(0x51d,0x4bc)+_0x3d54c9(0x2,-0x15)]?(console[_0x3d54c9(-0x129,-0xfd)]('\x20\x20'+_0x33395b[_0x4a2608(0x49d,0x4ee)](_0x200222[_0x4a2608(0x44c,0x42c)])+('\x20(use\x20--fo'+_0x3d54c9(0x10,0x12)+_0x4a2608(0x4f7,0x4d7))),_0xed1f01[_0x4a2608(0x446,0x446)+_0x3d54c9(-0x56,-0x1d)]=![]):(console['log']('\x20\x20'+_0x33395b[_0x3d54c9(-0x18,-0x8d)](_0x3d54c9(-0x18,-0x35)+_0x3d54c9(-0xca,-0xf9)+'.json\x20upda'+'ted')),console[_0x4a2608(0x428,0x43e)]('\x20\x20'+_0x33395b[_0x3d54c9(-0x9d,-0x8d)](_0x200222[_0x4a2608(0x441,0x3f7)])+'\x20'+_0x33395b['dim'](_0x3d54c9(-0x4d,-0x56)+_0x4a2608(0x449,0x47e)+_0x3d54c9(-0x21,0x15)+_0x3d54c9(-0xa9,-0x26)+_0x4a2608(0x454,0x400)+_0x4a2608(0x4a3,0x50d)+_0x4a2608(0x445,0x425))),_0xed1f01['hooksRegis'+_0x4a2608(0x508,0x595)]=!![]),console[_0x3d54c9(-0xa1,-0xfd)](''),console['log'](_0x33395b[_0x3d54c9(0x87,0x5)](_0x200222[_0x3d54c9(-0xae,-0xe1)])),console['log'](_0x33395b[_0x3d54c9(-0x76,-0x8d)]['bold'](_0x4a2608(0x490,0x4f5)+_0x4a2608(0x46a,0x409)+_0x4a2608(0x44f,0x47f)+_0x3d54c9(-0x67,-0x70))),console['log'](_0x33395b['cyan'](_0x200222[_0x3d54c9(-0x58,-0xe1)])),console[_0x3d54c9(-0x98,-0xfd)](''),_0xed1f01[_0x3d54c9(-0x152,-0xe5)]=!![],_0xed1f01;}finally{_0x47686a[_0x3d54c9(-0xb2,-0x7d)]();}}