aamp-cli 0.1.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.
- package/README.md +54 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +339 -0
- package/dist/index.js.map +1 -0
- package/package.json +27 -0
package/README.md
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# aamp-cli
|
|
2
|
+
|
|
3
|
+
Command-line mailbox client for AAMP, built on top of [aamp-sdk](../sdk/README.md).
|
|
4
|
+
|
|
5
|
+
## What it does
|
|
6
|
+
|
|
7
|
+
- Connect an arbitrary mailbox identity to AAMP from the terminal
|
|
8
|
+
- Listen for `task.dispatch`, `task.help`, `task.result`, `task.ack`, and human replies
|
|
9
|
+
- Send `task.dispatch`, `task.help`, and `task.result`
|
|
10
|
+
- Store reusable mailbox profiles under `~/.aamp-cli/profiles/`
|
|
11
|
+
|
|
12
|
+
## Install
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install -g aamp-cli
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Quick start
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
aamp-cli login
|
|
22
|
+
aamp-cli listen
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
`login` will prompt for:
|
|
26
|
+
|
|
27
|
+
- mailbox email
|
|
28
|
+
- mailbox password
|
|
29
|
+
|
|
30
|
+
JMAP base URL and SMTP host are derived automatically from the mailbox domain.
|
|
31
|
+
For example, `agent@meshmail.ai` defaults to:
|
|
32
|
+
|
|
33
|
+
- `jmapUrl = https://meshmail.ai`
|
|
34
|
+
- `smtpHost = meshmail.ai`
|
|
35
|
+
- `smtpPort = 587`
|
|
36
|
+
|
|
37
|
+
The profile is stored at:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
~/.aamp-cli/profiles/default.json
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Commands
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
aamp-cli login [--profile NAME]
|
|
47
|
+
aamp-cli init [--profile NAME]
|
|
48
|
+
aamp-cli listen [--profile NAME]
|
|
49
|
+
aamp-cli status [--profile NAME]
|
|
50
|
+
aamp-cli inbox [--profile NAME] [--limit N]
|
|
51
|
+
aamp-cli dispatch --to EMAIL --title TEXT [--body TEXT] [--timeout SECS] [--context-link URL]...
|
|
52
|
+
aamp-cli result --to EMAIL --task-id ID --status completed|rejected [--output TEXT] [--error TEXT]
|
|
53
|
+
aamp-cli help --to EMAIL --task-id ID --question TEXT [--reason TEXT] [--option TEXT]...
|
|
54
|
+
```
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import os from 'node:os';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import readline from 'node:readline/promises';
|
|
7
|
+
import { stdin as input, stdout as output } from 'node:process';
|
|
8
|
+
import { AampClient } from 'aamp-sdk';
|
|
9
|
+
const DEFAULT_PROFILE = 'default';
|
|
10
|
+
const DEFAULT_JMAP_URL = 'https://meshmail.ai';
|
|
11
|
+
function deriveServiceDefaults(email) {
|
|
12
|
+
const domain = email.split('@')[1]?.trim();
|
|
13
|
+
if (!domain) {
|
|
14
|
+
return { jmapUrl: DEFAULT_JMAP_URL, smtpHost: new URL(DEFAULT_JMAP_URL).hostname };
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
jmapUrl: `https://${domain}`,
|
|
18
|
+
smtpHost: domain,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function printUsage() {
|
|
22
|
+
console.log(`AAMP CLI
|
|
23
|
+
|
|
24
|
+
Usage:
|
|
25
|
+
aamp-cli login [--profile NAME]
|
|
26
|
+
aamp-cli init [--profile NAME]
|
|
27
|
+
aamp-cli listen [--profile NAME]
|
|
28
|
+
aamp-cli status [--profile NAME]
|
|
29
|
+
aamp-cli inbox [--profile NAME] [--limit N]
|
|
30
|
+
aamp-cli dispatch --to EMAIL --title TEXT [--body TEXT] [--timeout SECS] [--context-link URL]...
|
|
31
|
+
aamp-cli result --to EMAIL --task-id ID --status completed|rejected [--output TEXT] [--error TEXT]
|
|
32
|
+
aamp-cli help --to EMAIL --task-id ID --question TEXT [--reason TEXT] [--option TEXT]...
|
|
33
|
+
|
|
34
|
+
Examples:
|
|
35
|
+
aamp-cli login
|
|
36
|
+
aamp-cli listen --profile default
|
|
37
|
+
aamp-cli dispatch --to agent@meshmail.ai --title "Review this patch" --body "Please review PR #42"
|
|
38
|
+
aamp-cli result --to meego@meshmail.ai --task-id 123 --status completed --output "Done"
|
|
39
|
+
aamp-cli help --to meego@meshmail.ai --task-id 123 --question "Which environment?" --option staging --option production
|
|
40
|
+
`);
|
|
41
|
+
}
|
|
42
|
+
function parseArgs(argv) {
|
|
43
|
+
const [rawCommand, ...rest] = argv;
|
|
44
|
+
const command = (rawCommand ?? 'unknown');
|
|
45
|
+
const positionals = [];
|
|
46
|
+
const values = {};
|
|
47
|
+
const booleans = new Set();
|
|
48
|
+
for (let i = 0; i < rest.length; i++) {
|
|
49
|
+
const token = rest[i];
|
|
50
|
+
if (!token.startsWith('--')) {
|
|
51
|
+
positionals.push(token);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const key = token.slice(2);
|
|
55
|
+
const next = rest[i + 1];
|
|
56
|
+
if (!next || next.startsWith('--')) {
|
|
57
|
+
booleans.add(key);
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
if (!values[key])
|
|
61
|
+
values[key] = [];
|
|
62
|
+
values[key].push(next);
|
|
63
|
+
i++;
|
|
64
|
+
}
|
|
65
|
+
return { command, positionals, values, booleans };
|
|
66
|
+
}
|
|
67
|
+
function firstArg(args, key) {
|
|
68
|
+
return args.values[key]?.[0];
|
|
69
|
+
}
|
|
70
|
+
function allArgs(args, key) {
|
|
71
|
+
return args.values[key] ?? [];
|
|
72
|
+
}
|
|
73
|
+
function requireArg(args, key) {
|
|
74
|
+
const value = firstArg(args, key);
|
|
75
|
+
if (!value)
|
|
76
|
+
throw new Error(`Missing required --${key}`);
|
|
77
|
+
return value;
|
|
78
|
+
}
|
|
79
|
+
function getProfilesDir() {
|
|
80
|
+
return path.join(os.homedir(), '.aamp-cli', 'profiles');
|
|
81
|
+
}
|
|
82
|
+
function getProfilePath(profile = DEFAULT_PROFILE) {
|
|
83
|
+
return path.join(getProfilesDir(), `${profile}.json`);
|
|
84
|
+
}
|
|
85
|
+
async function loadProfile(profile = DEFAULT_PROFILE) {
|
|
86
|
+
const file = getProfilePath(profile);
|
|
87
|
+
if (!existsSync(file)) {
|
|
88
|
+
throw new Error(`Profile "${profile}" not found. Run "aamp-cli login${profile === DEFAULT_PROFILE ? '' : ` --profile ${profile}`}" first.`);
|
|
89
|
+
}
|
|
90
|
+
const raw = await readFile(file, 'utf8');
|
|
91
|
+
return JSON.parse(raw);
|
|
92
|
+
}
|
|
93
|
+
async function saveProfile(profile, data) {
|
|
94
|
+
const dir = getProfilesDir();
|
|
95
|
+
await mkdir(dir, { recursive: true });
|
|
96
|
+
const file = getProfilePath(profile);
|
|
97
|
+
await writeFile(file, `${JSON.stringify(data, null, 2)}\n`, 'utf8');
|
|
98
|
+
return file;
|
|
99
|
+
}
|
|
100
|
+
function resolveSmtpHost(jmapUrl, explicit) {
|
|
101
|
+
return explicit || new URL(jmapUrl).hostname;
|
|
102
|
+
}
|
|
103
|
+
function createClient(profile) {
|
|
104
|
+
return new AampClient({
|
|
105
|
+
email: profile.email,
|
|
106
|
+
jmapToken: profile.jmapToken,
|
|
107
|
+
jmapUrl: profile.jmapUrl,
|
|
108
|
+
smtpHost: resolveSmtpHost(profile.jmapUrl, profile.smtpHost),
|
|
109
|
+
smtpPort: profile.smtpPort ?? 587,
|
|
110
|
+
smtpPassword: profile.smtpPassword,
|
|
111
|
+
rejectUnauthorized: profile.rejectUnauthorized,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
function formatTransport(client) {
|
|
115
|
+
return client.isUsingPollingFallback() ? 'polling fallback' : 'websocket';
|
|
116
|
+
}
|
|
117
|
+
async function prompt(question, defaultValue = '') {
|
|
118
|
+
const rl = readline.createInterface({ input, output });
|
|
119
|
+
try {
|
|
120
|
+
const suffix = defaultValue ? ` (${defaultValue})` : '';
|
|
121
|
+
const answer = await rl.question(`${question}${suffix}: `);
|
|
122
|
+
return answer.trim() || defaultValue;
|
|
123
|
+
}
|
|
124
|
+
finally {
|
|
125
|
+
rl.close();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
async function runInit(args) {
|
|
129
|
+
const profile = firstArg(args, 'profile') ?? DEFAULT_PROFILE;
|
|
130
|
+
const existingFile = getProfilePath(profile);
|
|
131
|
+
const existing = existsSync(existingFile) ? await loadProfile(profile) : null;
|
|
132
|
+
const email = firstArg(args, 'email') ?? await prompt('Mailbox email', existing?.email ?? '');
|
|
133
|
+
const smtpPassword = firstArg(args, 'password') ?? firstArg(args, 'smtp-password') ?? await prompt('Mailbox password', existing?.smtpPassword ?? '');
|
|
134
|
+
const jmapToken = Buffer.from(`${email}:${smtpPassword}`).toString('base64');
|
|
135
|
+
const inferred = deriveServiceDefaults(email);
|
|
136
|
+
const jmapUrl = firstArg(args, 'jmap-url') ?? existing?.jmapUrl ?? inferred.jmapUrl;
|
|
137
|
+
const smtpHost = firstArg(args, 'smtp-host') ?? existing?.smtpHost ?? inferred.smtpHost;
|
|
138
|
+
const smtpPort = Number(firstArg(args, 'smtp-port') ?? String(existing?.smtpPort ?? 587));
|
|
139
|
+
const rejectUnauthorized = (firstArg(args, 'reject-unauthorized') ?? String(existing?.rejectUnauthorized ?? true)) !== 'false';
|
|
140
|
+
const file = await saveProfile(profile, {
|
|
141
|
+
email,
|
|
142
|
+
jmapToken,
|
|
143
|
+
smtpPassword,
|
|
144
|
+
jmapUrl,
|
|
145
|
+
smtpHost,
|
|
146
|
+
smtpPort,
|
|
147
|
+
rejectUnauthorized,
|
|
148
|
+
});
|
|
149
|
+
console.log(`Saved profile "${profile}" to ${file}`);
|
|
150
|
+
console.log(`Derived JMAP URL: ${jmapUrl}`);
|
|
151
|
+
console.log(`Derived SMTP host: ${smtpHost}:${smtpPort}`);
|
|
152
|
+
}
|
|
153
|
+
async function runLogin(args) {
|
|
154
|
+
await runInit(args);
|
|
155
|
+
}
|
|
156
|
+
function printDispatch(task) {
|
|
157
|
+
console.log(`\n[AAMP] <- task.dispatch ${task.taskId}`);
|
|
158
|
+
console.log(` from: ${task.from}`);
|
|
159
|
+
console.log(` title: ${task.title}`);
|
|
160
|
+
if (task.timeoutSecs)
|
|
161
|
+
console.log(` timeout: ${task.timeoutSecs}s`);
|
|
162
|
+
if (task.contextLinks?.length)
|
|
163
|
+
console.log(` contextLinks: ${task.contextLinks.join(', ')}`);
|
|
164
|
+
if (task.dispatchContext && Object.keys(task.dispatchContext).length) {
|
|
165
|
+
console.log(` dispatchContext: ${JSON.stringify(task.dispatchContext)}`);
|
|
166
|
+
}
|
|
167
|
+
if (task.attachments?.length) {
|
|
168
|
+
console.log(` attachments: ${task.attachments.map((item) => item.filename).join(', ')}`);
|
|
169
|
+
}
|
|
170
|
+
if (task.bodyText?.trim()) {
|
|
171
|
+
console.log(' body:');
|
|
172
|
+
console.log(task.bodyText.split('\n').map((line) => ` ${line}`).join('\n'));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
async function runListen(args) {
|
|
176
|
+
const profile = firstArg(args, 'profile') ?? DEFAULT_PROFILE;
|
|
177
|
+
const client = createClient(await loadProfile(profile));
|
|
178
|
+
let lastErrorSignature = '';
|
|
179
|
+
client.on('connected', () => {
|
|
180
|
+
console.log(`[AAMP] connected as ${client.email} (${formatTransport(client)})`);
|
|
181
|
+
});
|
|
182
|
+
client.on('disconnected', (reason) => {
|
|
183
|
+
console.log(`[AAMP] disconnected: ${reason}`);
|
|
184
|
+
});
|
|
185
|
+
client.on('error', (err) => {
|
|
186
|
+
const isFallbackActive = client.isUsingPollingFallback();
|
|
187
|
+
const isHandshakeNoise = err.message.startsWith('JMAP WebSocket handshake failed:');
|
|
188
|
+
const isFallbackTransition = err.message.startsWith('JMAP WebSocket unavailable, falling back to polling:');
|
|
189
|
+
if (isFallbackTransition) {
|
|
190
|
+
console.log(`[AAMP] websocket unavailable, using polling fallback`);
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
if (isFallbackActive && isHandshakeNoise)
|
|
194
|
+
return;
|
|
195
|
+
if (err.message === lastErrorSignature)
|
|
196
|
+
return;
|
|
197
|
+
lastErrorSignature = err.message;
|
|
198
|
+
console.error(`[AAMP] error: ${err.message}`);
|
|
199
|
+
});
|
|
200
|
+
client.on('task.dispatch', (task) => {
|
|
201
|
+
printDispatch(task);
|
|
202
|
+
});
|
|
203
|
+
client.on('task.ack', (ack) => {
|
|
204
|
+
console.log(`\n[AAMP] <- task.ack ${ack.taskId} from=${ack.from}`);
|
|
205
|
+
});
|
|
206
|
+
client.on('task.help_needed', (help) => {
|
|
207
|
+
console.log(`\n[AAMP] <- task.help_needed ${help.taskId} from=${help.from}`);
|
|
208
|
+
console.log(` question: ${help.question}`);
|
|
209
|
+
if (help.blockedReason)
|
|
210
|
+
console.log(` blockedReason: ${help.blockedReason}`);
|
|
211
|
+
if (help.suggestedOptions?.length)
|
|
212
|
+
console.log(` suggestedOptions: ${help.suggestedOptions.join(', ')}`);
|
|
213
|
+
});
|
|
214
|
+
client.on('task.result', (result) => {
|
|
215
|
+
console.log(`\n[AAMP] <- task.result ${result.taskId} from=${result.from} status=${result.status}`);
|
|
216
|
+
if (result.output)
|
|
217
|
+
console.log(` output: ${result.output}`);
|
|
218
|
+
if (result.errorMsg)
|
|
219
|
+
console.log(` error: ${result.errorMsg}`);
|
|
220
|
+
if (result.attachments?.length)
|
|
221
|
+
console.log(` attachments: ${result.attachments.map((item) => item.filename).join(', ')}`);
|
|
222
|
+
});
|
|
223
|
+
client.on('reply', (reply) => {
|
|
224
|
+
console.log(`\n[AAMP] <- human reply inReplyTo=${reply.inReplyTo} from=${reply.from}`);
|
|
225
|
+
console.log(` body: ${reply.bodyText}`);
|
|
226
|
+
});
|
|
227
|
+
await client.connect();
|
|
228
|
+
console.log(`[AAMP] listening as ${client.email}; press Ctrl+C to stop`);
|
|
229
|
+
const shutdown = () => {
|
|
230
|
+
client.disconnect();
|
|
231
|
+
process.exit(0);
|
|
232
|
+
};
|
|
233
|
+
process.on('SIGINT', shutdown);
|
|
234
|
+
process.on('SIGTERM', shutdown);
|
|
235
|
+
await new Promise(() => { });
|
|
236
|
+
}
|
|
237
|
+
async function runStatus(args) {
|
|
238
|
+
const profile = firstArg(args, 'profile') ?? DEFAULT_PROFILE;
|
|
239
|
+
const cfg = await loadProfile(profile);
|
|
240
|
+
const client = createClient(cfg);
|
|
241
|
+
const smtpOk = await client.verifySmtp().catch(() => false);
|
|
242
|
+
await client.connect();
|
|
243
|
+
console.log(JSON.stringify({
|
|
244
|
+
profile,
|
|
245
|
+
email: cfg.email,
|
|
246
|
+
jmapUrl: cfg.jmapUrl,
|
|
247
|
+
smtpHost: resolveSmtpHost(cfg.jmapUrl, cfg.smtpHost),
|
|
248
|
+
smtpPort: cfg.smtpPort ?? 587,
|
|
249
|
+
transport: formatTransport(client),
|
|
250
|
+
smtpVerified: smtpOk,
|
|
251
|
+
}, null, 2));
|
|
252
|
+
client.disconnect();
|
|
253
|
+
}
|
|
254
|
+
async function runInbox(args) {
|
|
255
|
+
const profile = firstArg(args, 'profile') ?? DEFAULT_PROFILE;
|
|
256
|
+
const limit = Number(firstArg(args, 'limit') ?? '20');
|
|
257
|
+
const client = createClient(await loadProfile(profile));
|
|
258
|
+
const processed = await client.reconcileRecentEmails(limit);
|
|
259
|
+
console.log(`Reconciled ${processed} recent email(s)`);
|
|
260
|
+
}
|
|
261
|
+
async function runDispatch(args) {
|
|
262
|
+
const profile = firstArg(args, 'profile') ?? DEFAULT_PROFILE;
|
|
263
|
+
const client = createClient(await loadProfile(profile));
|
|
264
|
+
const payload = {
|
|
265
|
+
to: requireArg(args, 'to'),
|
|
266
|
+
title: requireArg(args, 'title'),
|
|
267
|
+
bodyText: firstArg(args, 'body'),
|
|
268
|
+
timeoutSecs: firstArg(args, 'timeout') ? Number(firstArg(args, 'timeout')) : undefined,
|
|
269
|
+
contextLinks: allArgs(args, 'context-link'),
|
|
270
|
+
};
|
|
271
|
+
const result = await client.sendTask(payload);
|
|
272
|
+
console.log(JSON.stringify(result, null, 2));
|
|
273
|
+
}
|
|
274
|
+
async function runResult(args) {
|
|
275
|
+
const profile = firstArg(args, 'profile') ?? DEFAULT_PROFILE;
|
|
276
|
+
const client = createClient(await loadProfile(profile));
|
|
277
|
+
const payload = {
|
|
278
|
+
to: requireArg(args, 'to'),
|
|
279
|
+
taskId: requireArg(args, 'task-id'),
|
|
280
|
+
status: requireArg(args, 'status'),
|
|
281
|
+
output: firstArg(args, 'output') ?? '',
|
|
282
|
+
errorMsg: firstArg(args, 'error'),
|
|
283
|
+
};
|
|
284
|
+
await client.sendResult(payload);
|
|
285
|
+
console.log(`Sent task.result for ${payload.taskId}`);
|
|
286
|
+
}
|
|
287
|
+
async function runHelp(args) {
|
|
288
|
+
const profile = firstArg(args, 'profile') ?? DEFAULT_PROFILE;
|
|
289
|
+
const client = createClient(await loadProfile(profile));
|
|
290
|
+
const payload = {
|
|
291
|
+
to: requireArg(args, 'to'),
|
|
292
|
+
taskId: requireArg(args, 'task-id'),
|
|
293
|
+
question: requireArg(args, 'question'),
|
|
294
|
+
blockedReason: firstArg(args, 'reason') ?? '',
|
|
295
|
+
suggestedOptions: allArgs(args, 'option'),
|
|
296
|
+
};
|
|
297
|
+
await client.sendHelp(payload);
|
|
298
|
+
console.log(`Sent task.help_needed for ${payload.taskId}`);
|
|
299
|
+
}
|
|
300
|
+
async function main() {
|
|
301
|
+
const args = parseArgs(process.argv.slice(2));
|
|
302
|
+
if (args.booleans.has('help') || args.command === 'unknown') {
|
|
303
|
+
printUsage();
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
switch (args.command) {
|
|
307
|
+
case 'login':
|
|
308
|
+
await runLogin(args);
|
|
309
|
+
return;
|
|
310
|
+
case 'init':
|
|
311
|
+
await runInit(args);
|
|
312
|
+
return;
|
|
313
|
+
case 'listen':
|
|
314
|
+
await runListen(args);
|
|
315
|
+
return;
|
|
316
|
+
case 'status':
|
|
317
|
+
await runStatus(args);
|
|
318
|
+
return;
|
|
319
|
+
case 'inbox':
|
|
320
|
+
await runInbox(args);
|
|
321
|
+
return;
|
|
322
|
+
case 'dispatch':
|
|
323
|
+
await runDispatch(args);
|
|
324
|
+
return;
|
|
325
|
+
case 'result':
|
|
326
|
+
await runResult(args);
|
|
327
|
+
return;
|
|
328
|
+
case 'help':
|
|
329
|
+
await runHelp(args);
|
|
330
|
+
return;
|
|
331
|
+
default:
|
|
332
|
+
printUsage();
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
main().catch((err) => {
|
|
336
|
+
console.error(`[aamp-cli] ${err instanceof Error ? err.message : String(err)}`);
|
|
337
|
+
process.exit(1);
|
|
338
|
+
});
|
|
339
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,QAAQ,MAAM,wBAAwB,CAAA;AAC7C,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,UAAU,EAA+F,MAAM,UAAU,CAAA;AAqBlI,MAAM,eAAe,GAAG,SAAS,CAAA;AACjC,MAAM,gBAAgB,GAAG,qBAAqB,CAAA;AAE9C,SAAS,qBAAqB,CAAC,KAAa;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAA;IAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAA;IACpF,CAAC;IACD,OAAO;QACL,OAAO,EAAE,WAAW,MAAM,EAAE;QAC5B,QAAQ,EAAE,MAAM;KACjB,CAAA;AACH,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;CAkBb,CAAC,CAAA;AACF,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IAClC,MAAM,OAAO,GAAG,CAAC,UAAU,IAAI,SAAS,CAAgB,CAAA;IACxD,MAAM,WAAW,GAAa,EAAE,CAAA;IAChC,MAAM,MAAM,GAA6B,EAAE,CAAA;IAC3C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAA;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACrB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACvB,SAAQ;QACV,CAAC;QAED,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACxB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACjB,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;QAClC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC,EAAE,CAAA;IACL,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;AACnD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAgB,EAAE,GAAW;IAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAC9B,CAAC;AAED,SAAS,OAAO,CAAC,IAAgB,EAAE,GAAW;IAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;AAC/B,CAAC;AAED,SAAS,UAAU,CAAC,IAAgB,EAAE,GAAW;IAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACjC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAA;IACxD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,UAAU,CAAC,CAAA;AACzD,CAAC;AAED,SAAS,cAAc,CAAC,OAAO,GAAG,eAAe;IAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,GAAG,OAAO,OAAO,CAAC,CAAA;AACvD,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAO,GAAG,eAAe;IAClD,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,mCAAmC,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,OAAO,EAAE,UAAU,CAAC,CAAA;IAC7I,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACxC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAA;AACtC,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,IAAgB;IAC1D,MAAM,GAAG,GAAG,cAAc,EAAE,CAAA;IAC5B,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACrC,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IACpC,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACnE,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,QAAiB;IACzD,OAAO,QAAQ,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAA;AAC9C,CAAC;AAED,SAAS,YAAY,CAAC,OAAmB;IACvC,OAAO,IAAI,UAAU,CAAC;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC;QAC5D,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,GAAG;QACjC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;KAC/C,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,MAAkB;IACzC,OAAO,MAAM,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,CAAA;AAC3E,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,QAAgB,EAAE,YAAY,GAAG,EAAE;IACvD,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IACtD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QACvD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,MAAM,IAAI,CAAC,CAAA;QAC1D,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,YAAY,CAAA;IACtC,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAgB;IACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,eAAe,CAAA;IAC5D,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAE7E,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,MAAM,CAAC,eAAe,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAA;IAC7F,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,MAAM,MAAM,CAAC,kBAAkB,EAAE,QAAQ,EAAE,YAAY,IAAI,EAAE,CAAC,CAAA;IACpJ,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAC5E,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,QAAQ,EAAE,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAA;IACnF,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAA;IACvF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAA;IACzF,MAAM,kBAAkB,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,kBAAkB,IAAI,IAAI,CAAC,CAAC,KAAK,OAAO,CAAA;IAE9H,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE;QACtC,KAAK;QACL,SAAS;QACT,YAAY;QACZ,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,kBAAkB;KACnB,CAAC,CAAA;IAEF,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,QAAQ,IAAI,EAAE,CAAC,CAAA;IACpD,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAA;IAC3C,OAAO,CAAC,GAAG,CAAC,sBAAsB,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAA;AAC3D,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAgB;IACtC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;AACrB,CAAC;AAED,SAAS,aAAa,CAAC,IAStB;IACC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACvD,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACnC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IACrC,IAAI,IAAI,CAAC,WAAW;QAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;IACpE,IAAI,IAAI,CAAC,YAAY,EAAE,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7F,IAAI,IAAI,CAAC,eAAe,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;IAC3E,CAAC;IACD,IAAI,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC3F,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAChF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAgB;IACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,eAAe,CAAA;IAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;IACvD,IAAI,kBAAkB,GAAG,EAAE,CAAA;IAE3B,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,KAAK,KAAK,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACjF,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE;QACnC,OAAO,CAAC,GAAG,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACzB,MAAM,gBAAgB,GAAG,MAAM,CAAC,sBAAsB,EAAE,CAAA;QACxD,MAAM,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAA;QACnF,MAAM,oBAAoB,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,sDAAsD,CAAC,CAAA;QAC3G,IAAI,oBAAoB,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAA;YACnE,OAAM;QACR,CAAC;QACD,IAAI,gBAAgB,IAAI,gBAAgB;YAAE,OAAM;QAChD,IAAI,GAAG,CAAC,OAAO,KAAK,kBAAkB;YAAE,OAAM;QAC9C,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAAA;QAChC,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE;QAClC,aAAa,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;QAC5B,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IACpE,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;QACrC,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,CAAC,MAAM,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QAC5E,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC3C,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,aAAa,EAAE,CAAC,CAAA;QAC7E,IAAI,IAAI,CAAC,gBAAgB,EAAE,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC3G,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;QAClC,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QACnG,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QAC5D,IAAI,MAAM,CAAC,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC/D,IAAI,MAAM,CAAC,WAAW,EAAE,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7H,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,qCAAqC,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QACtF,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;IACtB,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,KAAK,wBAAwB,CAAC,CAAA;IAExE,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,MAAM,CAAC,UAAU,EAAE,CAAA;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAA;IACD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAE/B,MAAM,IAAI,OAAO,CAAO,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;AACnC,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAgB;IACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,eAAe,CAAA;IAC5D,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;IACtC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;IAChC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;IAC3D,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;IACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;QACzB,OAAO;QACP,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,QAAQ,EAAE,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC;QACpD,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,GAAG;QAC7B,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC;QAClC,YAAY,EAAE,MAAM;KACrB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACZ,MAAM,CAAC,UAAU,EAAE,CAAA;AACrB,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAgB;IACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,eAAe,CAAA;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,CAAA;IACrD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;IACvD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAA;IAC3D,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,kBAAkB,CAAC,CAAA;AACxD,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAgB;IACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,eAAe,CAAA;IAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;IACvD,MAAM,OAAO,GAAoB;QAC/B,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;QAC1B,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;QAChC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAChC,WAAW,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QACtF,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC;KAC5C,CAAA;IACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC9C,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAgB;IACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,eAAe,CAAA;IAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;IACvD,MAAM,OAAO,GAAsB;QACjC,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;QAC1B,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;QACnC,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAA6B;QAC9D,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;QACtC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;KAClC,CAAA;IACD,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAChC,OAAO,CAAC,GAAG,CAAC,wBAAwB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;AACvD,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAgB;IACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,eAAe,CAAA;IAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;IACvD,MAAM,OAAO,GAAoB;QAC/B,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;QAC1B,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;QACnC,QAAQ,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC;QACtC,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;QAC7C,gBAAgB,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;KAC1C,CAAA;IACD,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC9B,OAAO,CAAC,GAAG,CAAC,6BAA6B,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;AAC5D,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC5D,UAAU,EAAE,CAAA;QACZ,OAAM;IACR,CAAC;IAED,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,KAAK,OAAO;YACV,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAA;YACpB,OAAM;QACR,KAAK,MAAM;YACT,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;YACnB,OAAM;QACR,KAAK,QAAQ;YACX,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;YACrB,OAAM;QACR,KAAK,QAAQ;YACX,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;YACrB,OAAM;QACR,KAAK,OAAO;YACV,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAA;YACpB,OAAM;QACR,KAAK,UAAU;YACb,MAAM,WAAW,CAAC,IAAI,CAAC,CAAA;YACvB,OAAM;QACR,KAAK,QAAQ;YACX,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;YACrB,OAAM;QACR,KAAK,MAAM;YACT,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;YACnB,OAAM;QACR;YACE,UAAU,EAAE,CAAA;IAChB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "aamp-cli",
|
|
3
|
+
"files": [
|
|
4
|
+
"dist"
|
|
5
|
+
],
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"version": "0.1.0",
|
|
8
|
+
"description": "CLI for connecting any agent mailbox to the AAMP network via aamp-sdk",
|
|
9
|
+
"type": "module",
|
|
10
|
+
"main": "dist/index.js",
|
|
11
|
+
"bin": {
|
|
12
|
+
"aamp-cli": "dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"dev": "tsx src/index.ts",
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"start": "node dist/index.js"
|
|
18
|
+
},
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"aamp-sdk": "^0.1.10"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@types/node": "^20.11.30",
|
|
24
|
+
"tsx": "^4.7.1",
|
|
25
|
+
"typescript": "^5.4.3"
|
|
26
|
+
}
|
|
27
|
+
}
|