@bryti/agent 0.1.2 → 0.2.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 (43) hide show
  1. package/README.md +9 -22
  2. package/dist/cli.js +69 -332
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config.d.ts +8 -0
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +25 -2
  7. package/dist/config.js.map +1 -1
  8. package/dist/index.d.ts +5 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +45 -14
  11. package/dist/index.js.map +1 -1
  12. package/dist/memory/embeddings.d.ts +15 -9
  13. package/dist/memory/embeddings.d.ts.map +1 -1
  14. package/dist/memory/embeddings.js +37 -13
  15. package/dist/memory/embeddings.js.map +1 -1
  16. package/dist/memory/search.d.ts +1 -1
  17. package/dist/memory/search.d.ts.map +1 -1
  18. package/dist/memory/search.js +6 -5
  19. package/dist/memory/search.js.map +1 -1
  20. package/dist/memory/store.d.ts +3 -2
  21. package/dist/memory/store.d.ts.map +1 -1
  22. package/dist/memory/store.js +5 -3
  23. package/dist/memory/store.js.map +1 -1
  24. package/dist/model-infra.d.ts.map +1 -1
  25. package/dist/model-infra.js +1 -0
  26. package/dist/model-infra.js.map +1 -1
  27. package/dist/projection/store.d.ts +1 -1
  28. package/dist/projection/store.d.ts.map +1 -1
  29. package/dist/projection/store.js +6 -0
  30. package/dist/projection/store.js.map +1 -1
  31. package/dist/setup.d.ts +9 -0
  32. package/dist/setup.d.ts.map +1 -0
  33. package/dist/setup.js +240 -0
  34. package/dist/setup.js.map +1 -0
  35. package/dist/tools/archival-memory-tool.d.ts +1 -1
  36. package/dist/tools/archival-memory-tool.d.ts.map +1 -1
  37. package/dist/tools/archival-memory-tool.js.map +1 -1
  38. package/dist/update-check.d.ts +16 -0
  39. package/dist/update-check.d.ts.map +1 -0
  40. package/dist/update-check.js +94 -0
  41. package/dist/update-check.js.map +1 -0
  42. package/package.json +10 -6
  43. package/run.sh +15 -5
package/README.md CHANGED
@@ -47,18 +47,6 @@ Bryti is a personal AI agent that lives in Telegram and WhatsApp. It remembers w
47
47
 
48
48
  ### Quick start
49
49
 
50
- **From npm:**
51
- ```bash
52
- npm install -g @bryti/agent
53
-
54
- # Configure
55
- cp "$(npm root -g)/@bryti/agent/config.example.yml" data/config.yml
56
- cp "$(npm root -g)/@bryti/agent/.env.example" .env
57
- # Edit data/config.yml and .env, then:
58
- bryti-start
59
- ```
60
-
61
- **From source:**
62
50
  ```bash
63
51
  git clone git@github.com:larsderidder/bryti.git
64
52
  cd bryti
@@ -69,7 +57,7 @@ cp .env.example .env # add your Telegram bot token
69
57
  cp config.example.yml data/config.yml # edit to taste
70
58
 
71
59
  # Run
72
- ./run.sh
60
+ bryti # or: npm start, or: ./run.sh (auto-restart on crash)
73
61
  ```
74
62
 
75
63
  The embedding model downloads on first run (~300 MB). After that, startups take a few seconds.
@@ -250,17 +238,16 @@ Environment variables are supported via `${VAR}` syntax. The `.env` file loads a
250
238
 
251
239
  ## CLI
252
240
 
253
- Operator tools for managing Bryti without going through chat:
241
+ Operator tools for managing Bryti without going through chat. Safe to run while the server is running.
254
242
 
255
243
  ```bash
256
- npm run cli -- help # all commands
257
- npm run cli -- memory # inspect all memory tiers
258
- npm run cli -- memory projections --all # all projections (including resolved)
259
- npm run cli -- memory archival --query "energy" # search archival memory
260
- npm run cli -- reflect # run reflection pass now
261
- npm run cli -- timeskip "dentist" --minutes 2 # make a projection fire in 2 min
262
- npm run cli -- archive-fact "dentist confirmed" # insert fact, trigger matching projections
263
- npm run cli -- fill-context --turns 20 # inject synthetic conversation for testing
244
+ bryti help # all commands
245
+ bryti memory # inspect all memory tiers
246
+ bryti memory projections --all # all projections (including resolved)
247
+ bryti memory archival --query "energy" # search archival memory
248
+ bryti reflect # run reflection pass now
249
+ bryti archive-fact "dentist confirmed" # insert fact, trigger matching projections
250
+ bryti version # show version
264
251
  ```
265
252
 
266
253
  ## Contributing
package/dist/cli.js CHANGED
@@ -5,22 +5,25 @@ try {
5
5
  }
6
6
  catch { /* not present, fine */ }
7
7
  /**
8
- * Bryti management CLI. Single entry point for all operator tasks.
9
- * Run via: bryti <command> [options]
8
+ * Bryti CLI. Starts the server or runs management commands.
10
9
  *
11
- * The CLI bypasses the running application entirely and reads/writes SQLite
12
- * directly. This is safe to do while the bot is running because SQLite WAL
13
- * mode allows concurrent readers alongside a live writer without blocking.
10
+ * `bryti` (no args) or `bryti serve` starts the server.
11
+ * `bryti <command>` runs a management command. Management commands bypass
12
+ * the running application and read/write SQLite directly (safe to run
13
+ * while the server is running, thanks to WAL mode).
14
14
  *
15
- * See `npm run cli -- help` for full command listing.
15
+ * See `bryti help` for full command listing.
16
16
  */
17
17
  import fs from "node:fs";
18
18
  import path from "node:path";
19
- import crypto from "node:crypto";
20
19
  import Database from "better-sqlite3";
21
- import { loadConfig } from "./config.js";
20
+ import { loadConfig, resolveDataDir as defaultDataDir } from "./config.js";
22
21
  import { runReflection } from "./projection/index.js";
23
22
  // ---------------------------------------------------------------------------
23
+ // Version
24
+ // ---------------------------------------------------------------------------
25
+ const VERSION = JSON.parse(fs.readFileSync(new URL("../package.json", import.meta.url), "utf-8")).version;
26
+ // ---------------------------------------------------------------------------
24
27
  // Arg parsing helpers
25
28
  // ---------------------------------------------------------------------------
26
29
  const argv = process.argv.slice(2);
@@ -32,7 +35,6 @@ function opt(name, fallback) {
32
35
  return idx !== -1 ? argv[idx + 1] : fallback;
33
36
  }
34
37
  function positional(afterFlags) {
35
- // Return the Nth non-flag argument
36
38
  const nonFlags = argv.filter((a) => !a.startsWith("--"));
37
39
  return nonFlags[afterFlags];
38
40
  }
@@ -40,22 +42,21 @@ function positional(afterFlags) {
40
42
  // Config / environment
41
43
  // ---------------------------------------------------------------------------
42
44
  function resolveDataDir() {
43
- return opt("--data-dir") ?? process.env.BRYTI_DATA_DIR ?? "./data";
45
+ return opt("--data-dir") ?? defaultDataDir();
44
46
  }
45
- function resolveUserId(dataDir) {
47
+ function resolveUserId(_dataDir) {
46
48
  if (opt("--user-id"))
47
49
  return opt("--user-id");
48
50
  if (process.env.BRYTI_USER_ID)
49
51
  return process.env.BRYTI_USER_ID;
50
- // Try to read from config
51
52
  try {
52
- const config = loadConfig(path.join(dataDir, "config.yml"));
53
+ const config = loadConfig();
53
54
  const first = config.telegram.allowed_users[0];
54
55
  if (first)
55
56
  return String(first);
56
57
  }
57
58
  catch {
58
- // Config may not exist in dev environments
59
+ // Config may not exist yet
59
60
  }
60
61
  return "default-user";
61
62
  }
@@ -184,7 +185,6 @@ async function cmdReflect(dataDir, userId, windowMinutes) {
184
185
  console.error(`Failed to load config: ${err.message}`);
185
186
  process.exit(1);
186
187
  }
187
- // Override data_dir in case --data-dir was passed
188
188
  config.data_dir = dataDir;
189
189
  const result = await runReflection(config, userId, windowMinutes);
190
190
  if (result.skipped) {
@@ -201,264 +201,11 @@ async function cmdReflect(dataDir, userId, windowMinutes) {
201
201
  }
202
202
  }
203
203
  // ---------------------------------------------------------------------------
204
- // Command: timeskip
205
- // ---------------------------------------------------------------------------
206
- function cmdTimeskipList(dataDir, userId) {
207
- const dbPath = path.join(dataDir, "users", userId, "memory.db");
208
- if (!fs.existsSync(dbPath)) {
209
- console.error(`No memory.db found at ${dbPath}`);
210
- process.exit(1);
211
- }
212
- const db = new Database(dbPath, { readonly: true });
213
- const rows = db.prepare(`SELECT id, summary, resolved_when, resolution, status
214
- FROM projections ORDER BY
215
- CASE status WHEN 'pending' THEN 0 ELSE 1 END,
216
- resolved_when ASC`).all();
217
- db.close();
218
- if (rows.length === 0) {
219
- console.log("No projections found.");
220
- return;
221
- }
222
- const statusIcon = { pending: "⏳", done: "✅", cancelled: "❌", passed: "🔕" };
223
- console.log("Projections:\n");
224
- for (const row of rows) {
225
- const icon = statusIcon[row.status] ?? "?";
226
- console.log(`${icon} [${row.resolution}] ${row.summary}`);
227
- console.log(` id: ${row.id}`);
228
- console.log(` when: ${row.resolved_when ?? "(someday)"}`);
229
- console.log("");
230
- }
231
- }
232
- function cmdTimeskip(dataDir, userId, summaryOrId, minutes) {
233
- const dbPath = path.join(dataDir, "users", userId, "memory.db");
234
- if (!fs.existsSync(dbPath)) {
235
- console.error(`No memory.db found at ${dbPath}`);
236
- process.exit(1);
237
- }
238
- const db = new Database(dbPath);
239
- // Users may reference projections by summary substring (human-friendly) or
240
- // by full UUID (copy-pasted from 'timeskip --list'). The regex distinguishes
241
- // them: UUIDs match the standard 8-4-4-4-12 hex pattern, everything else is
242
- // treated as a summary substring.
243
- const isUuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(summaryOrId);
244
- const row = isUuid
245
- ? db.prepare("SELECT * FROM projections WHERE id = ?").get(summaryOrId)
246
- : db.prepare("SELECT * FROM projections WHERE summary LIKE ? AND status = 'pending' LIMIT 1")
247
- .get(`%${summaryOrId}%`);
248
- if (!row) {
249
- console.error(`No pending projection found matching: ${summaryOrId}`);
250
- db.close();
251
- process.exit(1);
252
- }
253
- const newTime = new Date(Date.now() + minutes * 60 * 1000);
254
- const newTimeStr = newTime.toISOString().slice(0, 16).replace("T", " ");
255
- db.prepare("UPDATE projections SET resolved_when = ?, resolution = 'exact' WHERE id = ?").run(newTimeStr, row.id);
256
- db.close();
257
- console.log(`Timeskipped projection:`);
258
- console.log(` Summary: ${row.summary}`);
259
- console.log(` Old when: ${row.resolved_when ?? "(none)"}`);
260
- console.log(` New when: ${newTimeStr} UTC (fires in ~${minutes} min)`);
261
- console.log(`\nThe scheduler will pick it up on the next 5-minute tick.`);
262
- }
263
- // ---------------------------------------------------------------------------
264
- // Command: import-openclaw
265
- // ---------------------------------------------------------------------------
266
- // One-time migration tool for importing Lars's OpenClaw memory files into
267
- // bryti's archival memory. Specific to Lars's local setup (/home/lars/clawd).
268
- // Not a general-purpose import command.
269
- function cmdImportOpenclaw(dataDir, userId, dryRun) {
270
- const clawdDir = "/home/lars/clawd";
271
- console.log(`Importing OpenClaw memory into bryti`);
272
- console.log(` User ID: ${userId}`);
273
- console.log(` Data dir: ${dataDir}`);
274
- console.log(` Dry run: ${dryRun}`);
275
- console.log("");
276
- // Core memory
277
- const userMd = path.join(clawdDir, "USER.md");
278
- if (!fs.existsSync(userMd)) {
279
- console.log("[core] USER.md not found, skipping");
280
- }
281
- else {
282
- const corePath = path.join(dataDir, "core-memory.md");
283
- const existing = fs.existsSync(corePath) ? fs.readFileSync(corePath, "utf-8") : "";
284
- if (existing.includes("## About Lars")) {
285
- console.log("[core] Already contains Lars profile, skipping");
286
- }
287
- else {
288
- const userContent = fs.readFileSync(userMd, "utf-8");
289
- const sectionText = "\n\n## About Lars\n" + userContent.replace(/^# USER\.md.*\n/, "").trim();
290
- if (dryRun) {
291
- console.log("[core] DRY RUN — would append to core-memory.md:");
292
- console.log(sectionText.slice(0, 300) + "...");
293
- }
294
- else {
295
- fs.appendFileSync(corePath, sectionText, "utf-8");
296
- console.log(`[core] Appended USER.md to core-memory.md (${sectionText.length} chars)`);
297
- }
298
- }
299
- }
300
- // Archival memory
301
- const memoryDir = path.join(clawdDir, "memory");
302
- if (!fs.existsSync(memoryDir)) {
303
- console.log("[archival] memory/ directory not found, skipping");
304
- console.log("\nDone.");
305
- return;
306
- }
307
- const files = fs.readdirSync(memoryDir).filter((f) => f.endsWith(".md")).sort();
308
- console.log(`[archival] Found ${files.length} memory files`);
309
- if (dryRun) {
310
- for (const file of files) {
311
- const content = fs.readFileSync(path.join(memoryDir, file), "utf-8");
312
- const sections = splitIntoSections(content, file);
313
- console.log(`[archival] DRY RUN — ${file}: ${sections.length} section(s)`);
314
- }
315
- console.log("\nDone (dry run).");
316
- return;
317
- }
318
- const userDir = path.join(dataDir, "users", userId);
319
- fs.mkdirSync(userDir, { recursive: true });
320
- const db = new Database(path.join(userDir, "memory.db"));
321
- db.pragma("journal_mode = WAL");
322
- db.exec(`
323
- CREATE TABLE IF NOT EXISTS facts (
324
- id TEXT PRIMARY KEY, content TEXT NOT NULL, source TEXT NOT NULL,
325
- timestamp INTEGER NOT NULL, hash TEXT NOT NULL
326
- );
327
- CREATE VIRTUAL TABLE IF NOT EXISTS facts_fts USING fts5(content, content='facts', content_rowid='rowid');
328
- CREATE TRIGGER IF NOT EXISTS facts_ai AFTER INSERT ON facts BEGIN
329
- INSERT INTO facts_fts(rowid, content) VALUES (NEW.rowid, NEW.content);
330
- END;
331
- `);
332
- const insertStmt = db.prepare("INSERT OR IGNORE INTO facts (id, content, source, timestamp, hash) VALUES (?, ?, ?, ?, ?)");
333
- const existsStmt = db.prepare("SELECT hash FROM facts WHERE hash = ?");
334
- let inserted = 0;
335
- let skipped = 0;
336
- for (const file of files) {
337
- const filePath = path.join(memoryDir, file);
338
- const content = fs.readFileSync(filePath, "utf-8");
339
- const sections = splitIntoSections(content, file);
340
- const timestamp = fs.statSync(filePath).mtimeMs;
341
- for (const sec of sections) {
342
- const hash = crypto.createHash("sha256").update(sec).digest("hex").slice(0, 16);
343
- if (existsStmt.get(hash)) {
344
- skipped++;
345
- continue;
346
- }
347
- insertStmt.run(crypto.randomUUID(), sec, `openclaw:memory/${file}`, timestamp, hash);
348
- inserted++;
349
- }
350
- console.log(`[archival] ${file}: ${sections.length} section(s)`);
351
- }
352
- db.close();
353
- console.log(`[archival] Done: ${inserted} inserted, ${skipped} skipped`);
354
- console.log("\nDone. Restart bryti for core memory changes to take effect.");
355
- }
356
- /**
357
- * Split a markdown document into granular facts by ## headings.
358
- *
359
- * Each ## section is stored as a separate archival fact so that semantic
360
- * search can retrieve the relevant section rather than returning the entire
361
- * document. The date prefix (derived from the filename) is prepended to each
362
- * section so temporal context is preserved after the split.
363
- */
364
- function splitIntoSections(content, filename) {
365
- const date = path.basename(filename, ".md");
366
- const parts = content.split(/^## /m);
367
- const sections = [];
368
- for (const part of parts) {
369
- const trimmed = part.trim();
370
- if (!trimmed || trimmed.length < 50)
371
- continue;
372
- sections.push(`[${date}] ## ${trimmed}`);
373
- }
374
- if (sections.length === 0 && content.trim().length > 50) {
375
- sections.push(`[${date}] ${content.trim()}`);
376
- }
377
- return sections;
378
- }
379
- // ---------------------------------------------------------------------------
380
- // Command: fill-context
381
- // ---------------------------------------------------------------------------
382
- const DEFAULT_DATASET = path.join("/home/lars/xithing/contextpatterns-content/synthetic-agent-conversations", "dataset/memory-context.jsonl");
383
- /**
384
- * Inject synthetic conversations into history for compaction testing.
385
- * Back-dates entries so they look like real history. Prioritises
386
- * context-window-pressure subcategory conversations.
387
- *
388
- * This is a testing/development tool only. It writes synthetic entries with
389
- * _synthetic: true markers but those entries are otherwise indistinguishable
390
- * from real history as far as the compaction and reflection passes are
391
- * concerned. Do not run in production.
392
- */
393
- function cmdFillContext(dataDir, count, datasetPath, dryRun) {
394
- if (!fs.existsSync(datasetPath)) {
395
- console.error(`Dataset not found: ${datasetPath}`);
396
- process.exit(1);
397
- }
398
- const lines = fs.readFileSync(datasetPath, "utf-8").split("\n").filter(Boolean);
399
- const all = lines.map((l) => JSON.parse(l));
400
- // Prefer context-window-pressure, then fall back to all
401
- const pressure = all.filter((c) => c.subcategory === "context-window-pressure");
402
- const pool = pressure.length >= count ? pressure : all;
403
- const selected = pool.slice(0, count);
404
- // Count total turns we'll inject
405
- const totalTurns = selected.reduce((n, c) => n + c.turns.filter((t) => t.role === "user" || t.role === "assistant").length, 0);
406
- console.log(`Injecting ${selected.length} conversation(s), ${totalTurns} turns total`);
407
- if (dryRun)
408
- console.log("(dry run — nothing will be written)\n");
409
- // Back-date entries starting from 2 hours ago, spreading turns across time
410
- const now = Date.now();
411
- const startMs = now - 2 * 60 * 60 * 1000;
412
- const stepMs = Math.floor((2 * 60 * 60 * 1000) / Math.max(totalTurns, 1));
413
- const historyDir = path.join(dataDir, "history");
414
- if (!dryRun)
415
- fs.mkdirSync(historyDir, { recursive: true });
416
- let turnIdx = 0;
417
- const byDay = new Map();
418
- for (const conv of selected) {
419
- console.log(` [${conv.id}] ${conv.description}`);
420
- for (const turn of conv.turns) {
421
- if (turn.role !== "user" && turn.role !== "assistant")
422
- continue;
423
- const ts = new Date(startMs + turnIdx * stepMs);
424
- const day = ts.toISOString().slice(0, 10);
425
- const entry = JSON.stringify({
426
- role: turn.role,
427
- content: turn.content,
428
- timestamp: ts.toISOString(),
429
- _synthetic: true,
430
- });
431
- if (!byDay.has(day))
432
- byDay.set(day, []);
433
- byDay.get(day).push(entry);
434
- turnIdx++;
435
- }
436
- }
437
- if (!dryRun) {
438
- for (const [day, entries] of byDay) {
439
- const filePath = path.join(historyDir, `${day}.jsonl`);
440
- fs.appendFileSync(filePath, entries.join("\n") + "\n", "utf-8");
441
- console.log(` Written ${entries.length} entries to history/${day}.jsonl`);
442
- }
443
- console.log(`\nDone. Restart bryti to pick up the new history in context.`);
444
- }
445
- else {
446
- for (const [day, entries] of byDay) {
447
- console.log(` Would write ${entries.length} entries to history/${day}.jsonl`);
448
- }
449
- console.log("\nDone (dry run).");
450
- }
451
- }
452
- // ---------------------------------------------------------------------------
453
204
  // Command: archive-fact
454
205
  // ---------------------------------------------------------------------------
455
206
  async function cmdArchiveFact(dataDir, userId, content) {
456
207
  console.log(`Archiving fact for user ${userId}...`);
457
208
  console.log(`Content: "${content}"\n`);
458
- // Lazy-import the embedding model and memory store. The embedding model is
459
- // 300MB+ and takes several seconds to load. Importing at the top of the file
460
- // would add that startup cost to every CLI command, including fast read-only
461
- // ones like 'memory' and 'reflect'. Deferring to here keeps the CLI snappy.
462
209
  const { embed } = await import("./memory/embeddings.js");
463
210
  const { createMemoryStore } = await import("./memory/store.js");
464
211
  const { createProjectionStore } = await import("./projection/index.js");
@@ -466,11 +213,9 @@ async function cmdArchiveFact(dataDir, userId, content) {
466
213
  const memoryStore = createMemoryStore(userId, dataDir);
467
214
  const projStore = createProjectionStore(userId, dataDir);
468
215
  try {
469
- // Embed and store the fact.
470
216
  const embedding = await embed(content, modelsDir);
471
217
  memoryStore.addFact(content, "cli", embedding);
472
218
  console.log("Fact archived.");
473
- // Check triggers (keyword + embedding fallback).
474
219
  const triggered = await projStore.checkTriggers(content, (text) => embed(text, modelsDir));
475
220
  if (triggered.length > 0) {
476
221
  console.log(`\nTriggered ${triggered.length} projection(s):`);
@@ -493,72 +238,88 @@ async function cmdArchiveFact(dataDir, userId, content) {
493
238
  // Help
494
239
  // ---------------------------------------------------------------------------
495
240
  function showHelp() {
241
+ const dataDir = resolveDataDir();
496
242
  console.log(`
497
- bryti CLImanagement commands
243
+ bryti ${VERSION}AI colleague in your messaging apps
498
244
 
499
245
  Usage:
500
- npm run cli -- <command> [options]
246
+ bryti Start the server (Telegram/WhatsApp bridges, scheduler)
247
+ bryti serve Same as above (explicit)
248
+ bryti <command> Run a management command (safe while server is running)
501
249
 
502
250
  Commands:
503
- help
504
- Show this help text.
251
+ hail [<path>]
252
+ First-run setup. Walks you through creating a config.
253
+ Alias: init
505
254
 
506
- memory
507
- Inspect all memory tiers (core + projections + archival).
255
+ serve
256
+ Start the bryti server.
508
257
 
509
- memory core
510
- Show the core memory file.
258
+ memory [core|projections|archival|all]
259
+ Inspect memory tiers. No subcommand shows all tiers.
511
260
 
512
261
  memory projections [--all]
513
- Show pending projections. Pass --all to include resolved ones.
262
+ Show pending projections. --all includes resolved ones.
514
263
 
515
264
  memory archival [--query <text>] [--limit <n>]
516
- Show recent archival facts, or search by keyword.
517
- Default limit: 20.
265
+ Show recent archival facts, or search by keyword. Default limit: 20.
518
266
 
519
267
  reflect [--window <minutes>]
520
- Run the reflection pass on demand. Scans recent conversation history
521
- for future references the agent may have missed.
522
- Default window: 30 minutes.
523
-
524
- timeskip <summary|id> [--minutes <n>]
525
- Move a projection's resolved_when to now + N minutes so the
526
- exact-time scheduler fires it on the next 5-minute tick.
527
- Matches by summary substring or exact UUID.
528
- Default: 2 minutes.
529
-
530
- timeskip --list
531
- List all projections with their IDs and times.
268
+ Run the reflection pass on demand. Default window: 30 minutes.
532
269
 
533
- import-openclaw [--dry-run]
534
- Import /home/lars/clawd/USER.md into core memory and
535
- /home/lars/clawd/memory/*.md into archival memory.
270
+ archive-fact "<content>"
271
+ Insert a fact into archival memory and check trigger-based projections.
536
272
 
537
- fill-context [--count <n>] [--dataset <path>] [--dry-run]
538
- Inject synthetic conversations into history to fill the context window.
539
- Used to test compaction and archival memory retrieval under context pressure.
540
- Prioritises context-window-pressure conversations from the dataset.
541
- Default count: 10. Default dataset: synthetic-agent-conversations/dataset/memory-context.jsonl
273
+ version
274
+ Show version number.
542
275
 
543
- archive-fact "<content>"
544
- Insert a fact into archival memory and check if any trigger-based
545
- projections fire. Uses keyword matching + embedding similarity fallback.
546
- Useful for testing trigger_on_fact without going through the agent.
276
+ help
277
+ Show this help text.
547
278
 
548
279
  Global options:
549
280
  --user-id <id> User ID (default: first entry in telegram.allowed_users)
550
- --data-dir <path> Data directory (default: BRYTI_DATA_DIR env or ./data)
281
+ --data-dir <path> Data directory (default: ${dataDir})
551
282
  `);
552
283
  }
553
284
  // ---------------------------------------------------------------------------
554
285
  // Main dispatcher
555
286
  // ---------------------------------------------------------------------------
556
287
  async function main() {
288
+ // Flags that work without a command
289
+ if (flag("--version") || flag("-v")) {
290
+ console.log(VERSION);
291
+ return;
292
+ }
293
+ if (flag("--help") || flag("-h")) {
294
+ showHelp();
295
+ return;
296
+ }
557
297
  const command = positional(0);
558
- if (!command || command === "help" || flag("--help") || flag("-h")) {
298
+ // No args or "serve": start the server (or suggest hail if no config)
299
+ if (!command || command === "serve") {
300
+ const configPath = path.join(resolveDataDir(), "config.yml");
301
+ if (!fs.existsSync(configPath)) {
302
+ console.log(`\n No config found at ${configPath}`);
303
+ console.log(` Run 'bryti hail' to set up your steward.\n`);
304
+ return;
305
+ }
306
+ const { startServer } = await import("./index.js");
307
+ await startServer();
308
+ return;
309
+ }
310
+ if (command === "version") {
311
+ console.log(VERSION);
312
+ return;
313
+ }
314
+ if (command === "help") {
559
315
  showHelp();
560
316
  return;
561
317
  }
318
+ if (command === "hail" || command === "init") {
319
+ const { runSetup } = await import("./setup.js");
320
+ await runSetup(positional(1));
321
+ return;
322
+ }
562
323
  const dataDir = resolveDataDir();
563
324
  const userId = resolveUserId(dataDir);
564
325
  switch (command) {
@@ -593,30 +354,6 @@ async function main() {
593
354
  await cmdReflect(dataDir, userId, window);
594
355
  break;
595
356
  }
596
- case "timeskip": {
597
- if (flag("--list")) {
598
- cmdTimeskipList(dataDir, userId);
599
- break;
600
- }
601
- const summaryOrId = positional(1);
602
- if (!summaryOrId) {
603
- console.error("Usage: timeskip <summary|id> [--minutes <n>] | timeskip --list");
604
- process.exit(1);
605
- }
606
- const minutes = Number(opt("--minutes", "2"));
607
- cmdTimeskip(dataDir, userId, summaryOrId, minutes);
608
- break;
609
- }
610
- case "import-openclaw": {
611
- cmdImportOpenclaw(dataDir, userId, flag("--dry-run"));
612
- break;
613
- }
614
- case "fill-context": {
615
- const count = Number(opt("--count", "10"));
616
- const dataset = opt("--dataset", DEFAULT_DATASET);
617
- cmdFillContext(dataDir, count, dataset, flag("--dry-run"));
618
- break;
619
- }
620
357
  case "archive-fact": {
621
358
  const content = positional(1);
622
359
  if (!content) {
@@ -628,7 +365,7 @@ async function main() {
628
365
  }
629
366
  default:
630
367
  console.error(`Unknown command: ${command}`);
631
- console.error("Run 'npm run cli -- help' for usage.");
368
+ console.error("Run 'bryti help' for usage.");
632
369
  process.exit(1);
633
370
  }
634
371
  console.log("");
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,wEAAwE;AACxE,IAAI,CAAC;IAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC,CAAC,uBAAuB,CAAC,CAAC;AAEtE;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,GAAG,CAAC,IAAY,EAAE,QAAiB;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/C,CAAC;AAED,SAAS,UAAU,CAAC,UAAkB;IACpC,mCAAmC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC9B,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,SAAS,cAAc;IACrB,OAAO,GAAG,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,QAAQ,CAAC;AACrE,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,IAAI,GAAG,CAAC,WAAW,CAAC;QAAE,OAAO,GAAG,CAAC,WAAW,CAAE,CAAC;IAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAChE,0BAA0B;IAC1B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,KAAK;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,SAAS,EAAE,CAAC,IAAI,GAAG,GAAG,EAAE,KAAK,GAAG,EAAE;IAChC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,OAAO,CAAC,KAAa;IAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,GAAG,GAAG,GAAG;IACvC,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,SAAS,aAAa,CAAC,OAAe;IACpC,OAAO,CAAC,aAAa,CAAC,CAAC;IACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,WAAW,CAAC,CAAC;AACtC,CAAC;AAED,8EAA8E;AAC9E,8BAA8B;AAC9B,8EAA8E;AAE9E,SAAS,oBAAoB,CAAC,OAAe,EAAE,MAAc,EAAE,OAAgB;IAC7E,OAAO,CAAC,aAAa,CAAC,CAAC;IAEvB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAChE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC;IACxD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB;wBACoB,KAAK;;;;yBAIJ,CACtB,CAAC,GAAG,EAAmC,CAAC;IACzC,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAA2B;QACzC,OAAO,EAAE,GAAG;QACZ,IAAI,EAAE,GAAG;QACT,SAAS,EAAE,GAAG;QACd,MAAM,EAAE,IAAI;KACb,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;QAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,QAAQ,IAAI,SAAS,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,KAAK,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;QACvD,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,eAAe,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,aAAa,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC;AAC9D,CAAC;AAED,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,SAAS,iBAAiB,CAAC,OAAe,EAAE,MAAc,EAAE,KAAyB,EAAE,KAAa;IAClG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,8BAA8B,KAAK,GAAG,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;IAErF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAChE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,IAAI,IAAoC,CAAC;IAEzC,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC;YACH,IAAI,GAAG,EAAE,CAAC,OAAO,CACf;;;;;iBAKS,CACV,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAmC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,GAAG,EAAE,CAAC,OAAO,CACf;8DACsD,CACvD,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,KAAK,CAAmC,CAAC;QAC/D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,EAAE,CAAC,OAAO,CACf,kFAAkF,CACnF,CAAC,GAAG,CAAC,KAAK,CAAmC,CAAC;IACjD,CAAC;IAED,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,YAAY,CAAC,CAAC;AAC9C,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,MAAc,EAAE,aAAqB;IAC9E,OAAO,CAAC,GAAG,CAAC,oCAAoC,aAAa,eAAe,MAAM,MAAM,CAAC,CAAC;IAE1F,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,0BAA2B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kDAAkD;IAClD,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC;IAE1B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IAElE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/C,CAAC;SAAM,IAAI,MAAM,CAAC,gBAAgB,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,gBAAgB,iBAAiB,CAAC,CAAC;QAC/D,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,SAAS,eAAe,CAAC,OAAe,EAAE,MAAc;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAChE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB;;;yBAGqB,CACtB,CAAC,GAAG,EAAmC,CAAC;IACzC,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAA2B,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACrG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,aAAa,IAAI,WAAW,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,MAAc,EAAE,WAAmB,EAAE,OAAe;IACxF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAChE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEhC,2EAA2E;IAC3E,6EAA6E;IAC7E,4EAA4E;IAC5E,kCAAkC;IAClC,MAAM,MAAM,GAAG,iEAAiE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnG,MAAM,GAAG,GAAG,MAAM;QAChB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAuC;QAC7G,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,+EAA+E,CAAC;aACxF,GAAG,CAAC,IAAI,WAAW,GAAG,CAAuC,CAAC;IAErE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,yCAAyC,WAAW,EAAE,CAAC,CAAC;QACtE,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAExE,EAAE,CAAC,OAAO,CACR,6EAA6E,CAC9E,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1B,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,aAAa,IAAI,QAAQ,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,eAAe,UAAU,mBAAmB,OAAO,OAAO,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;AAC5E,CAAC;AAED,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,0EAA0E;AAC1E,8EAA8E;AAC9E,wCAAwC;AACxC,SAAS,iBAAiB,CAAC,OAAe,EAAE,MAAc,EAAE,MAAe;IACzE,MAAM,QAAQ,GAAG,kBAAkB,CAAC;IAEpC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,cAAc;IACd,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,IAAI,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,WAAW,GAAG,qBAAqB,GAAG,WAAW,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9F,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;gBAChE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,8CAA8C,WAAW,CAAC,MAAM,SAAS,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,CAAC,MAAM,eAAe,CAAC,CAAC;IAE7D,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YACrE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,KAAK,QAAQ,CAAC,MAAM,aAAa,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACpD,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3C,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IACzD,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;GASP,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAC3B,2FAA2F,CAC5F,CAAC;IACF,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;IAEvE,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;QAEhD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChF,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,OAAO,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YACD,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,mBAAmB,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YACrF,QAAQ,EAAE,CAAC;QACb,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,KAAK,QAAQ,CAAC,MAAM,aAAa,CAAC,CAAC;IACnE,CAAC;IAED,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,OAAO,CAAC,GAAG,CAAC,oBAAoB,QAAQ,cAAc,OAAO,UAAU,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;AAC/E,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,iBAAiB,CAAC,OAAe,EAAE,QAAgB;IAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE;YAAE,SAAS;QAC9C,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,QAAQ,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACxD,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAC/B,0EAA0E,EAC1E,8BAA8B,CAC/B,CAAC;AAeF;;;;;;;;;GASG;AACH,SAAS,cAAc,CACrB,OAAe,EACf,KAAa,EACb,WAAmB,EACnB,MAAe;IAEf,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,sBAAsB,WAAW,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChF,MAAM,GAAG,GAA4B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAErE,wDAAwD;IACxD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,yBAAyB,CAAC,CAAC;IAChF,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEtC,iCAAiC;IACjC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/H,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,MAAM,qBAAqB,UAAU,cAAc,CAAC,CAAC;IACvF,IAAI,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IAEjE,2EAA2E;IAC3E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;IAE1E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM;QAAE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3D,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAElD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;gBAAE,SAAS;YAEhE,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;YAChD,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE;gBAC3B,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,GAAG,QAAQ,CAAC,CAAC;YACvD,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,MAAc,EAAE,OAAe;IAC5E,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,KAAK,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,KAAK,CAAC,CAAC;IAEvC,2EAA2E;IAC3E,6EAA6E;IAC7E,6EAA6E;IAC7E,4EAA4E;IAC5E,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACzD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAChE,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAExE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,4BAA4B;QAC5B,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAClD,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAE9B,iDAAiD;QACjD,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,aAAa,CAC7C,OAAO,EACP,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CACjC,CAAC;QAEF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,eAAe,SAAS,CAAC,MAAM,iBAAiB,CAAC,CAAC;YAC9D,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;YAAS,CAAC;QACT,WAAW,CAAC,KAAK,EAAE,CAAC;QACpB,SAAS,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,OAAO;AACP,8EAA8E;AAE9E,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDb,CAAC,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAE9B,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,QAAQ,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEtC,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;YAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;YAE3C,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBAC1B,aAAa,CAAC,OAAO,CAAC,CAAC;gBACvB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC/C,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC;iBAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBAC1B,aAAa,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;iBAAM,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;gBACjC,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC;iBAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;gBAC9B,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC;gBACnD,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;YAC7C,MAAM,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1C,MAAM;QACR,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnB,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACjC,MAAM;YACR,CAAC;YACD,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;gBAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;YAC9C,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YACnD,MAAM;QACR,CAAC;QAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACtD,MAAM;QACR,CAAC;QAED,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,eAAe,CAAE,CAAC;YACnD,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YAC3D,MAAM;QACR,CAAC;QAED,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC/C,MAAM;QACR,CAAC;QAED;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}