ikarmic-forge 4.4.0 → 4.5.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 (45) hide show
  1. package/README.md +4 -0
  2. package/dist/acp/server.d.ts +3 -1
  3. package/dist/acp/server.d.ts.map +1 -1
  4. package/dist/acp/server.js +45 -4
  5. package/dist/acp/server.js.map +1 -1
  6. package/dist/bin/forge.js +45 -6
  7. package/dist/bin/forge.js.map +1 -1
  8. package/dist/chat-files.d.ts +8 -0
  9. package/dist/chat-files.d.ts.map +1 -1
  10. package/dist/chat-files.js +41 -4
  11. package/dist/chat-files.js.map +1 -1
  12. package/dist/clipboard.d.ts +38 -0
  13. package/dist/clipboard.d.ts.map +1 -0
  14. package/dist/clipboard.js +63 -0
  15. package/dist/clipboard.js.map +1 -0
  16. package/dist/commands/memory.d.ts +10 -0
  17. package/dist/commands/memory.d.ts.map +1 -0
  18. package/dist/commands/memory.js +77 -0
  19. package/dist/commands/memory.js.map +1 -0
  20. package/dist/commands/spec.d.ts +13 -3
  21. package/dist/commands/spec.d.ts.map +1 -1
  22. package/dist/commands/spec.js +76 -5
  23. package/dist/commands/spec.js.map +1 -1
  24. package/dist/components/Approval.d.ts.map +1 -1
  25. package/dist/components/Approval.js +2 -0
  26. package/dist/components/Approval.js.map +1 -1
  27. package/dist/options.d.ts +45 -3
  28. package/dist/options.d.ts.map +1 -1
  29. package/dist/options.js +90 -11
  30. package/dist/options.js.map +1 -1
  31. package/dist/repl-commands.d.ts +39 -0
  32. package/dist/repl-commands.d.ts.map +1 -1
  33. package/dist/repl-commands.js +91 -4
  34. package/dist/repl-commands.js.map +1 -1
  35. package/dist/repl-extras.d.ts +39 -0
  36. package/dist/repl-extras.d.ts.map +1 -0
  37. package/dist/repl-extras.js +120 -0
  38. package/dist/repl-extras.js.map +1 -0
  39. package/dist/repl.d.ts +25 -1
  40. package/dist/repl.d.ts.map +1 -1
  41. package/dist/repl.js +419 -86
  42. package/dist/repl.js.map +1 -1
  43. package/dist/session-checkpoints.js +1 -1
  44. package/dist/session-checkpoints.js.map +1 -1
  45. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../src/clipboard.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,qFAAqF;IACrF,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;AAK9F,kDAAkD;AAClD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,aAAa,EAAE,CAiB/G;AAED,gGAAgG;AAChG,eAAO,MAAM,UAAU,EAAE,aASrB,CAAC;AAEL,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,CAAC,CAAC,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAKjG,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,GAAG,CAAC,EAAE,aAAa,CAAA;CAAO,GACtF,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAU9B;AAED,wBAAsB,aAAa,CACjC,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,GAAG,CAAC,EAAE,aAAa,CAAA;CAAO,GACtF,OAAO,CAAC,eAAe,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAU5C"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * System clipboard access for `/copy` and `/paste`, through whatever command-line tool the
3
+ * platform has. Each candidate is tried in order; one that is not installed is skipped.
4
+ */
5
+ import { spawn } from 'node:child_process';
6
+ const PS_UTF8_OUT = '[Console]::OutputEncoding=[Text.Encoding]::UTF8;';
7
+ const PS_UTF8_IN = '[Console]::InputEncoding=[Text.Encoding]::UTF8;';
8
+ /** Candidate tools for `platform`, best first. */
9
+ export function clipboardTools(platform, env = process.env) {
10
+ if (platform === 'darwin')
11
+ return [{ copy: { cmd: 'pbcopy', args: [] }, paste: { cmd: 'pbpaste', args: [] } }];
12
+ if (platform === 'win32') {
13
+ return [
14
+ {
15
+ copy: { cmd: 'powershell', args: ['-NoProfile', '-Command', `${PS_UTF8_IN} Set-Clipboard -Value ([Console]::In.ReadToEnd())`] },
16
+ paste: { cmd: 'powershell', args: ['-NoProfile', '-Command', `${PS_UTF8_OUT} Get-Clipboard -Raw`] },
17
+ },
18
+ ];
19
+ }
20
+ const tools = [];
21
+ if (env.WAYLAND_DISPLAY)
22
+ tools.push({ copy: { cmd: 'wl-copy', args: [] }, paste: { cmd: 'wl-paste', args: ['--no-newline'] } });
23
+ tools.push({ copy: { cmd: 'xclip', args: ['-selection', 'clipboard'] }, paste: { cmd: 'xclip', args: ['-selection', 'clipboard', '-o'] } }, { copy: { cmd: 'xsel', args: ['--clipboard', '--input'] }, paste: { cmd: 'xsel', args: ['--clipboard', '--output'] } });
24
+ return tools;
25
+ }
26
+ /** Run a command, optionally feeding `input` to stdin. A missing program gives `code: null`. */
27
+ export const runCommand = (command, input) => new Promise((resolve) => {
28
+ const child = spawn(command.cmd, command.args, { stdio: ['pipe', 'pipe', 'ignore'], windowsHide: true });
29
+ let stdout = '';
30
+ child.stdout.on('data', (d) => (stdout += d.toString('utf8')));
31
+ child.on('error', () => resolve({ code: null, stdout: '' }));
32
+ child.on('close', (code) => resolve({ code, stdout }));
33
+ child.stdin.on('error', () => undefined); // the tool may exit before reading everything
34
+ child.stdin.end(input ?? '');
35
+ });
36
+ const NONE_FOUND = (platform) => platform === 'linux' ? 'no clipboard tool found (install wl-clipboard, xclip or xsel)' : 'no clipboard tool found';
37
+ export async function copyToClipboard(text, opts = {}) {
38
+ const platform = opts.platform ?? process.platform;
39
+ const run = opts.run ?? runCommand;
40
+ for (const tool of clipboardTools(platform, opts.env)) {
41
+ const res = await run(tool.copy, text);
42
+ if (res.code === null)
43
+ continue; // not installed
44
+ if (res.code === 0)
45
+ return { ok: true, tool: tool.copy.cmd };
46
+ return { ok: false, error: `${tool.copy.cmd} failed (exit ${res.code})` };
47
+ }
48
+ return { ok: false, error: NONE_FOUND(platform) };
49
+ }
50
+ export async function readClipboard(opts = {}) {
51
+ const platform = opts.platform ?? process.platform;
52
+ const run = opts.run ?? runCommand;
53
+ for (const tool of clipboardTools(platform, opts.env)) {
54
+ const res = await run(tool.paste);
55
+ if (res.code === null)
56
+ continue;
57
+ if (res.code === 0)
58
+ return { ok: true, tool: tool.paste.cmd, text: res.stdout };
59
+ return { ok: false, error: `${tool.paste.cmd} failed (exit ${res.code})` };
60
+ }
61
+ return { ok: false, error: NONE_FOUND(platform) };
62
+ }
63
+ //# sourceMappingURL=clipboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../src/clipboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `forge memory list|check|forget` subcommand: inspect and prune project
3
+ * memory (`.forge/MEMORY.md` and `~/.forge/MEMORY.md`).
4
+ *
5
+ * Needs no AI provider. Exit codes: 0 ok, 1 `check` found stale sections or
6
+ * `forget` found nothing, 2 usage error.
7
+ */
8
+ import type { ParsedMemoryCommand } from '../options.js';
9
+ export declare function handleMemoryCommand(cmd: ParsedMemoryCommand, cwd: string): Promise<number>;
10
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgBH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAKzD,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMhG"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * `forge memory list|check|forget` subcommand: inspect and prune project
3
+ * memory (`.forge/MEMORY.md` and `~/.forge/MEMORY.md`).
4
+ *
5
+ * Needs no AI provider. Exit codes: 0 ok, 1 `check` found stale sections or
6
+ * `forget` found nothing, 2 usage error.
7
+ */
8
+ import { checkStale, findProjectMemoryRoot, globalMemoryPath, loadMemory, projectMemoryPath, readMemoryFile, removeSection, staleKey, tokenize, writeMemoryFile, } from '@ikarmic/forge-core';
9
+ /** Two sections whose heading+body word sets overlap at least this much are flagged as likely duplicates. */
10
+ const DUPLICATE_SIMILARITY = 0.6;
11
+ export async function handleMemoryCommand(cmd, cwd) {
12
+ if (cmd.list)
13
+ return listMemory(cwd);
14
+ if (cmd.check)
15
+ return checkMemory(cwd);
16
+ if (cmd.forget)
17
+ return forgetSection(cwd, cmd.forget.heading, cmd.forget.global);
18
+ process.stderr.write('forge memory: expected one of list|check|forget <heading> [--global].\n');
19
+ return 2;
20
+ }
21
+ const day = (ms) => new Date(ms).toISOString().slice(0, 10);
22
+ const scopeOf = (s) => (s.source === globalMemoryPath() ? 'global' : 'project');
23
+ async function listMemory(cwd) {
24
+ const { sections } = await loadMemory(cwd);
25
+ if (sections.length === 0) {
26
+ process.stdout.write('(no memory found)\n');
27
+ return 0;
28
+ }
29
+ for (const s of sections) {
30
+ process.stdout.write(`${scopeOf(s)} ${s.type} ${day(s.updatedAt)} ${s.heading}\n`);
31
+ }
32
+ return 0;
33
+ }
34
+ function similarity(a, b) {
35
+ const wa = new Set(tokenize(`${a.heading} ${a.body}`));
36
+ const wb = new Set(tokenize(`${b.heading} ${b.body}`));
37
+ if (wa.size === 0 || wb.size === 0)
38
+ return 0;
39
+ let shared = 0;
40
+ for (const w of wa)
41
+ if (wb.has(w))
42
+ shared++;
43
+ return shared / (wa.size + wb.size - shared);
44
+ }
45
+ async function checkMemory(cwd) {
46
+ const { sections } = await loadMemory(cwd);
47
+ const root = (await findProjectMemoryRoot(cwd)) ?? cwd;
48
+ const stale = await checkStale(sections, root);
49
+ for (const s of sections) {
50
+ const reasons = stale.get(staleKey(s));
51
+ if (reasons)
52
+ process.stdout.write(`stale: ${s.heading} — ${reasons.join('; ')}\n`);
53
+ }
54
+ for (let i = 0; i < sections.length; i++) {
55
+ for (let j = i + 1; j < sections.length; j++) {
56
+ if (similarity(sections[i], sections[j]) >= DUPLICATE_SIMILARITY) {
57
+ process.stdout.write(`duplicate?: ${sections[i].heading} ~ ${sections[j].heading}\n`);
58
+ }
59
+ }
60
+ }
61
+ if (stale.size === 0)
62
+ process.stdout.write('no stale sections\n');
63
+ return stale.size > 0 ? 1 : 0;
64
+ }
65
+ async function forgetSection(cwd, heading, global) {
66
+ const root = await findProjectMemoryRoot(cwd);
67
+ const target = global ? globalMemoryPath() : projectMemoryPath(root ?? cwd);
68
+ const { content, removed } = removeSection(await readMemoryFile(target), heading);
69
+ if (!removed) {
70
+ process.stderr.write(`forge memory: no section named "${heading}" in ${target}\n`);
71
+ return 1;
72
+ }
73
+ await writeMemoryFile(target, content);
74
+ process.stdout.write(`removed "${heading}" from ${target}\n`);
75
+ return 0;
76
+ }
77
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
- * `forge spec …` subcommand: list / show / cancel already-approved
3
- * spec-driven-planning-mode output (`.forge/specs/<id>/`).
2
+ * `forge spec …` subcommand: list / show / cancel / sync already-approved
3
+ * spec-driven-planning-mode output (`.forge/specs/<id>/`). `sync` is the one
4
+ * that needs a model: it re-reads the code and updates the documents.
4
5
  *
5
6
  * Mirrors `commands/checkpoint.ts`'s soft-prefix shape: no AI provider
6
7
  * required, exits 0/1/2. Generation itself happens via `--spec "<task>"`
@@ -9,5 +10,14 @@
9
10
  * here.
10
11
  */
11
12
  import type { ParsedSpecCommand } from '../options.js';
12
- export declare function handleSpecCommand(cmd: ParsedSpecCommand, cwd: string): Promise<number>;
13
+ export interface SpecCommandDeps {
14
+ /** Runs a read-only spec-mode agent on `task` and returns its final text and end reason. */
15
+ runSpecAgent?: (task: string) => Promise<{
16
+ finalText: string;
17
+ reason: string;
18
+ }>;
19
+ /** Asks a yes/no question; defaults to a terminal prompt (no when stdin is not a TTY). */
20
+ confirm?: (question: string) => Promise<boolean>;
21
+ }
22
+ export declare function handleSpecCommand(cmd: ParsedSpecCommand, cwd: string, deps?: SpecCommandDeps): Promise<number>;
13
23
  //# sourceMappingURL=spec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../src/commands/spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgB5F"}
1
+ {"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../src/commands/spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmBH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,4FAA4F;IAC5F,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChF,0FAA0F;IAC1F,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAClD;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBxH"}
@@ -1,6 +1,7 @@
1
1
  /**
2
- * `forge spec …` subcommand: list / show / cancel already-approved
3
- * spec-driven-planning-mode output (`.forge/specs/<id>/`).
2
+ * `forge spec …` subcommand: list / show / cancel / sync already-approved
3
+ * spec-driven-planning-mode output (`.forge/specs/<id>/`). `sync` is the one
4
+ * that needs a model: it re-reads the code and updates the documents.
4
5
  *
5
6
  * Mirrors `commands/checkpoint.ts`'s soft-prefix shape: no AI provider
6
7
  * required, exits 0/1/2. Generation itself happens via `--spec "<task>"`
@@ -11,8 +12,9 @@
11
12
  import process from 'node:process';
12
13
  import { readFile } from 'node:fs/promises';
13
14
  import path from 'node:path';
14
- import { SpecStore } from '@ikarmic/forge-core';
15
- export async function handleSpecCommand(cmd, cwd) {
15
+ import { createInterface } from 'node:readline/promises';
16
+ import { changeSize, convertToCheckboxes, keepDoneTasks, SpecStore, specDrift, splitSpecSections, syncSpecTask, } from '@ikarmic/forge-core';
17
+ export async function handleSpecCommand(cmd, cwd, deps = {}) {
16
18
  const store = new SpecStore(cwd);
17
19
  if (cmd.list) {
18
20
  return listSpecs(store);
@@ -23,7 +25,10 @@ export async function handleSpecCommand(cmd, cwd) {
23
25
  if (cmd.cancel) {
24
26
  return cancelSpec(store, cmd.cancel.id, cmd.cancel.yes);
25
27
  }
26
- process.stderr.write('forge spec: expected one of list|show|cancel. Generate a new spec with `forge --spec "<task>"` or `/spec <task>` in the REPL.\n');
28
+ if (cmd.sync) {
29
+ return syncSpec(store, cwd, cmd.sync.id, cmd.sync.yes, deps);
30
+ }
31
+ process.stderr.write('forge spec: expected one of list|show|cancel|sync. Generate a new spec with `forge --spec "<task>"` or `/spec <task>` in the REPL.\n');
27
32
  return 2;
28
33
  }
29
34
  async function listSpecs(store) {
@@ -73,4 +78,70 @@ async function cancelSpec(store, id, yes) {
73
78
  process.stdout.write(removed ? `deleted spec ${id}\n` : `forge spec: failed to delete "${id}"\n`);
74
79
  return removed ? 0 : 1;
75
80
  }
81
+ async function askInTerminal(question) {
82
+ if (!process.stdin.isTTY)
83
+ return false;
84
+ const rl = createInterface({ input: process.stdin, output: process.stderr });
85
+ try {
86
+ return /^y(es)?$/i.test((await rl.question(`${question} [y/N] `)).trim());
87
+ }
88
+ finally {
89
+ rl.close();
90
+ }
91
+ }
92
+ /** Re-read the code and bring the spec's documents up to date; the old ones go to history/. */
93
+ async function syncSpec(store, cwd, id, yes, deps) {
94
+ const spec = await store.get(id);
95
+ const docs = spec ? await store.readDocs(id) : null;
96
+ if (!spec || !docs) {
97
+ process.stderr.write(`forge spec: no spec with id "${id}"\n`);
98
+ return 2;
99
+ }
100
+ if (!deps.runSpecAgent) {
101
+ process.stderr.write('forge spec sync: no model available\n');
102
+ return 2;
103
+ }
104
+ const confirm = deps.confirm ?? askInTerminal;
105
+ // Ask for --yes before spending on a model run whose result could not be written.
106
+ if (!yes && !deps.confirm && !process.stdin.isTTY) {
107
+ process.stderr.write('forge spec sync: not a terminal, so pass --yes to write the updated documents.\n');
108
+ return 2;
109
+ }
110
+ const drift = await specDrift(cwd, spec, docs);
111
+ process.stderr.write(`Spec ${id}: ${drift.changedFiles.length} file(s) changed since ${drift.since.slice(0, 10)}, ` +
112
+ `${drift.missingPaths.length} mentioned path(s) gone, ${drift.tasks.done}/${drift.tasks.total} tasks ticked.\n` +
113
+ 'Re-reading the code (read-only)…\n');
114
+ const result = await deps.runSpecAgent(syncSpecTask(spec, docs, drift));
115
+ if (result.reason !== 'spec' && result.reason !== 'completed') {
116
+ process.stderr.write(`forge spec sync: the run ended (${result.reason}); nothing was changed.\n`);
117
+ return 1;
118
+ }
119
+ let next;
120
+ try {
121
+ next = splitSpecSections(result.finalText);
122
+ }
123
+ catch (err) {
124
+ process.stderr.write(`forge spec sync: ${err.message}; nothing was changed.\n`);
125
+ return 1;
126
+ }
127
+ next = { ...next, tasks: keepDoneTasks(docs.tasks, convertToCheckboxes(next.tasks)) };
128
+ let any = false;
129
+ for (const file of ['requirements', 'design', 'tasks']) {
130
+ const { added, removed } = changeSize(docs[file], next[file]);
131
+ if (added || removed)
132
+ any = true;
133
+ process.stdout.write(` ${file}.md: ${added || removed ? `+${added} -${removed} lines` : 'unchanged'}\n`);
134
+ }
135
+ if (!any) {
136
+ process.stdout.write(`spec ${id} already matches the code\n`);
137
+ return 0;
138
+ }
139
+ if (!yes && !(await confirm(`Write the updated documents to ${spec.dir}?`))) {
140
+ process.stdout.write('not written\n');
141
+ return 1;
142
+ }
143
+ const updated = await store.update(id, next);
144
+ process.stdout.write(`updated spec ${id} (previous version in ${path.join(updated.dir, 'history')})\n`);
145
+ return 0;
146
+ }
76
147
  //# sourceMappingURL=spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/commands/spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/commands/spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Approval.d.ts","sourceRoot":"","sources":["../../src/components/Approval.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,eAAe,CAAC;IACzB,4EAA4E;IAC5E,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,aAAa,GAAG,KAAK,CAAC,YAAY,CAoDlF"}
1
+ {"version":3,"file":"Approval.d.ts","sourceRoot":"","sources":["../../src/components/Approval.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,eAAe,CAAC;IACzB,4EAA4E;IAC5E,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,aAAa,GAAG,KAAK,CAAC,YAAY,CA8DlF"}
@@ -17,6 +17,7 @@ export function Approval({ request, onResolve }) {
17
17
  });
18
18
  const argPreview = JSON.stringify(request.args);
19
19
  const argSummary = argPreview.length > 200 ? argPreview.slice(0, 197) + '...' : argPreview;
20
+ const previewLines = request.preview ? request.preview.split(/\r?\n/).slice(0, 14) : [];
20
21
  return (React.createElement(Box, { flexDirection: "column", marginTop: 1, borderStyle: "round", borderColor: "yellow", paddingX: 1 },
21
22
  React.createElement(Box, null,
22
23
  React.createElement(Text, { color: request.destructive ? 'red' : 'yellow', bold: true }, "\u26A0 approval required"),
@@ -27,6 +28,7 @@ export function Approval({ request, onResolve }) {
27
28
  React.createElement(Text, { color: "red", bold: true }, "destructive")))),
28
29
  React.createElement(Box, { marginLeft: 2, marginTop: 1 },
29
30
  React.createElement(Text, { color: "gray" }, argSummary)),
31
+ previewLines.length > 0 && (React.createElement(Box, { marginLeft: 2, marginTop: 1, flexDirection: "column" }, previewLines.map((line, i) => (React.createElement(Text, { key: i, color: line.startsWith('+') ? 'green' : line.startsWith('-') ? 'red' : 'gray' }, line))))),
30
32
  React.createElement(Box, { marginTop: 1 }, answered === null ? (React.createElement(Text, null,
31
33
  "Allow? ",
32
34
  React.createElement(Text, { color: "green", bold: true }, "Y"),
@@ -1 +1 @@
1
- {"version":3,"file":"Approval.js","sourceRoot":"","sources":["../../src/components/Approval.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAa,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAU1C,MAAM,UAAU,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,EAAiB;IAC5D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IAEjE,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,QAAQ;YAAE,OAAO;QACrB,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;YAC7B,WAAW,CAAC,GAAG,CAAC,CAAC;YACjB,SAAS,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG,CAAC,EAAE,CAAC;YAChF,WAAW,CAAC,GAAG,CAAC,CAAC;YACjB,SAAS,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;IAE3F,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,EAAE,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC;QAC5F,oBAAC,GAAG;YACF,oBAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,qCAElD;YACP,oBAAC,IAAI,mBAAW;YAChB,oBAAC,IAAI,IAAC,IAAI,UAAE,OAAO,CAAC,IAAI,CAAQ;YAC/B,OAAO,CAAC,WAAW,IAAI,CACtB;gBACE,oBAAC,IAAI,mBAAW;gBAChB,oBAAC,IAAI,IAAC,KAAK,EAAC,KAAK,EAAC,IAAI,wBAAmB,CACxC,CACJ,CACG;QACN,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;YAC9B,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,IAAE,UAAU,CAAQ,CAClC;QACN,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC,IACd,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,CACnB,oBAAC,IAAI;;YACI,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,cAAS;YACxC,oBAAC,IAAI,gBAAa;YAClB,oBAAC,IAAI,IAAC,KAAK,EAAC,KAAK,EAAC,IAAI,cAAS;YAC/B,oBAAC,IAAI,kBAAe,CACf,CACR,CAAC,CAAC,CAAC,CACF,oBAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAC5C,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CACxC,CACR,CACG,CACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Approval.js","sourceRoot":"","sources":["../../src/components/Approval.tsx"],"names":[],"mappings":"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"}
package/dist/options.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Command } from 'commander';
2
+ import { type GitHubConfig, type WebSearchConfig, type WebSearchProvider } from '@ikarmic/forge-core';
2
3
  import type { AgentConfig, ModelAliases, ModelConfig, ProviderName, ToolSandbox } from '@ikarmic/forge-core';
3
4
  type ReasoningEffort = NonNullable<ModelConfig['reasoningEffort']>;
4
5
  export interface CliOptions {
@@ -32,10 +33,16 @@ export interface CliOptions {
32
33
  gitCommitVerify: boolean;
33
34
  /** `--map-tokens <n>`: put a ranked repo map of about this many tokens in the system prompt (null/0 = off). */
34
35
  mapTokens: number | null;
36
+ /** `--web-search [provider]`: 'auto' takes the backend from the environment. */
37
+ webSearch: WebSearchProvider | 'auto' | null;
35
38
  /** `--auto-lint`: syntax-check each file the agent writes and feed problems back. */
36
39
  autoLint: boolean;
37
- /** `--lint-cmd [ext:] <cmd>` (repeatable), parsed by extension (`*` = any file); implies auto-lint. */
38
- lintCommands: Record<string, string>;
40
+ /** `--auto-lint-cmd [ext:] <cmd>` (repeatable), parsed by extension (`*` = any file); implies auto-lint. */
41
+ autoLintCommands: Record<string, string>;
42
+ /** `--lint-cmd <cmd>` (repeatable): lint checks run after edits, like `--verify`; also used by `/lint`. */
43
+ lintCmds: string[];
44
+ /** `--test-cmd <cmd>` (repeatable): test checks run after edits, like `--verify`; also used by `/test`. */
45
+ testCmds: string[];
39
46
  /** `--verify <cmd>` (repeatable): checks run after edits; failures are fed back to the model. */
40
47
  verify: string[];
41
48
  /** `--verify-lsp`: also feed language-server errors for edited files back to the model. */
@@ -56,6 +63,8 @@ export interface CliOptions {
56
63
  semanticSearch: boolean;
57
64
  /** `--browser`: add the browser / browser_act tools (needs Chrome, Edge or Chromium). */
58
65
  browser: boolean;
66
+ /** `--github`: add the GitHub pull-request tools. */
67
+ github: boolean;
59
68
  /** `--audit`: append every run and tool call to ~/.forge/audit.log. */
60
69
  audit: boolean;
61
70
  verbose: boolean;
@@ -137,10 +146,21 @@ export declare function buildProgram(): Command;
137
146
  * (i.e. when an agent run is about to start). This lets `forge session list`,
138
147
  * `forge session show`, etc. work without an AI provider configured.
139
148
  */
149
+ /** Every post-edit check, in order: `--verify`, then `--lint-cmd`, then `--test-cmd`. */
150
+ export declare function checkCommands(options: Pick<CliOptions, 'verify' | 'lintCmds' | 'testCmds'>): string[];
151
+ /**
152
+ * The token for `--github`: GITHUB_TOKEN / GH_TOKEN, else the GitHub CLI's login
153
+ * (`gh auth token`), else an error saying what to set.
154
+ */
155
+ export declare function resolveGitHub(env?: NodeJS.ProcessEnv, ghToken?: () => string): GitHubConfig;
156
+ /** `--web-search` alone means auto; with a value it must name a backend. */
157
+ export declare function parseWebSearch(raw: unknown): WebSearchProvider | 'auto' | null;
158
+ /** The backend for `--web-search`, or an error naming the variable to set. */
159
+ export declare function resolveWebSearch(choice: WebSearchProvider | 'auto', env?: NodeJS.ProcessEnv): WebSearchConfig;
140
160
  /** `--map-tokens`: a non-negative integer; 0 or absent means off. */
141
161
  export declare function parseMapTokens(raw: unknown): number | null;
142
162
  /**
143
- * `--lint-cmd` values into extension -> command. `"ts: eslint"` and `"typescript: eslint"`
163
+ * `--auto-lint-cmd` values into extension -> command. `"ts: eslint"` and `"typescript: eslint"`
144
164
  * apply to those files only; a value with no `name:` prefix applies to every file (`*`).
145
165
  * A colon not followed by a space (a Windows path) is part of the command.
146
166
  */
@@ -153,6 +173,7 @@ export declare function parseOptions(argv: string[]): {
153
173
  skillCommand: ParsedSkillCommand | null;
154
174
  pluginCommand: ParsedPluginCommand | null;
155
175
  hookCommand: ParsedHookCommand | null;
176
+ memoryCommand: ParsedMemoryCommand | null;
156
177
  mcpCommand: ParsedMcpCommand | null;
157
178
  checkpointCommand: ParsedCheckpointCommand | null;
158
179
  specCommand: ParsedSpecCommand | null;
@@ -213,6 +234,11 @@ export interface ParsedSessionCommand {
213
234
  tail?: {
214
235
  id: string;
215
236
  };
237
+ /** `forge session search <words…>`: sessions whose messages contain every word. */
238
+ search?: {
239
+ query: string;
240
+ limit: number;
241
+ };
216
242
  }
217
243
  /**
218
244
  * `forge skill …` subcommand. Soft prefix like `session` so it doesn't
@@ -233,6 +259,17 @@ export interface ParsedSkillCommand {
233
259
  };
234
260
  browse?: true;
235
261
  }
262
+ /**
263
+ * `forge memory list|check|forget <heading> [--global]`.
264
+ */
265
+ export interface ParsedMemoryCommand {
266
+ list?: true;
267
+ check?: true;
268
+ forget?: {
269
+ heading: string;
270
+ global: boolean;
271
+ };
272
+ }
236
273
  /**
237
274
  * `forge plugin list|show <name>|install <source> [--force] [--project]|remove <name> [--project]`.
238
275
  * `<source>` is a local directory, a git URL or `owner/repo`.
@@ -324,6 +361,11 @@ export interface ParsedSpecCommand {
324
361
  id: string;
325
362
  yes: boolean;
326
363
  };
364
+ /** `forge spec sync <id> [--yes]`: update the documents to match the code. */
365
+ sync?: {
366
+ id: string;
367
+ yes: boolean;
368
+ };
327
369
  }
328
370
  /**
329
371
  * `forge orchestrator …` subcommand.
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAoB5C,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE7G,KAAK,eAAe,GAAG,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAGnE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,gBAAgB,EAAE,OAAO,CAAC;IAC1B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,uEAAuE;IACvE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iFAAiF;IACjF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,qEAAqE;IACrE,cAAc,EAAE,OAAO,CAAC;IACxB,oFAAoF;IACpF,SAAS,EAAE,OAAO,CAAC;IACnB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,6HAA6H;IAC7H,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,6FAA6F;IAC7F,UAAU,EAAE,OAAO,CAAC;IACpB,mHAAmH;IACnH,cAAc,EAAE,OAAO,CAAC;IACxB,2EAA2E;IAC3E,WAAW,EAAE,OAAO,CAAC;IACrB,oEAAoE;IACpE,eAAe,EAAE,OAAO,CAAC;IACzB,+GAA+G;IAC/G,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,qFAAqF;IACrF,QAAQ,EAAE,OAAO,CAAC;IAClB,uGAAuG;IACvG,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,iGAAiG;IACjG,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,2FAA2F;IAC3F,SAAS,EAAE,OAAO,CAAC;IACnB,yGAAyG;IACzG,YAAY,EAAE,OAAO,CAAC;IACtB,wGAAwG;IACxG,MAAM,EAAE,OAAO,CAAC;IAChB,mEAAmE;IACnE,aAAa,EAAE,OAAO,CAAC;IACvB,8GAA8G;IAC9G,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,oFAAoF;IACpF,UAAU,EAAE,OAAO,CAAC;IACpB,yFAAyF;IACzF,qBAAqB,EAAE,OAAO,CAAC;IAC/B,gGAAgG;IAChG,cAAc,EAAE,OAAO,CAAC;IACxB,yFAAyF;IACzF,OAAO,EAAE,OAAO,CAAC;IACjB,uEAAuE;IACvE,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,6CAA6C;IAC7C,MAAM,EAAE,OAAO,CAAC;IAChB,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,IAAI,EAAE,OAAO,CAAC;IACd;;;;;;;;;OASG;IACH,IAAI,EAAE,OAAO,CAAC;IACd,iEAAiE;IACjE,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uEAAuE;IACvE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,0FAA0F;IAC1F,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,8EAA8E;IAC9E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iGAAiG;IACjG,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oFAAoF;IACpF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,6EAA6E;IAC7E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,wEAAwE;IACxE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,uEAAuE;IACvE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iEAAiE;IACjE,aAAa,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,qBAAqB,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACnD;;;;OAIG;IACH,2BAA2B,EAAE,OAAO,CAAC;IACrC,gHAAgH;IAChH,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAkHtC;AAED;;;;;GAKG;AACH,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAK1D;AAYD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAc1E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAC5C,OAAO,EAAE,UAAU,CAAC;IACpB,YAAY,EAAE,MAAM,WAAW,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,aAAa,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,iBAAiB,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAClD,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,mBAAmB,EAAE,yBAAyB,GAAG,IAAI,CAAC;IACtD,eAAe,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC9C,aAAa,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,6DAA6D;IAC7D,UAAU,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,aAAa,EAAE,OAAO,CAAC;IACvB,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;CACjB,CAsIA;AAED,mEAAmE;AACnE,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,IAAI,CAAC;CACX;AASD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,CAK9F;AA2CD,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/B;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,gHAAgH;IAChH,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,OAAO,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAC9C,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACjD,MAAM,CAAC,EAAE,IAAI,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACnE,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,GAAG,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IACjD,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,IAAI,CAAC;CACf;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAChC,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACtB,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;IACvC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAChC,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACtB,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;CACvC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,GAAG,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IACpD,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CAC5B;AAiRD;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,EAC/B,UAAU,GAAE,WAAW,CAAC,YAAY,CAAM,GACzC,OAAO,CAAC,WAAW,CAAC,CA6EtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS,CAwDzE;AAyBD,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,UAA4E,CAAC"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAE5C,OAAO,EAkBL,KAAK,YAAY,EAGjB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE7G,KAAK,eAAe,GAAG,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAGnE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,gBAAgB,EAAE,OAAO,CAAC;IAC1B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,uEAAuE;IACvE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iFAAiF;IACjF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,qEAAqE;IACrE,cAAc,EAAE,OAAO,CAAC;IACxB,oFAAoF;IACpF,SAAS,EAAE,OAAO,CAAC;IACnB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,6HAA6H;IAC7H,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,6FAA6F;IAC7F,UAAU,EAAE,OAAO,CAAC;IACpB,mHAAmH;IACnH,cAAc,EAAE,OAAO,CAAC;IACxB,2EAA2E;IAC3E,WAAW,EAAE,OAAO,CAAC;IACrB,oEAAoE;IACpE,eAAe,EAAE,OAAO,CAAC;IACzB,+GAA+G;IAC/G,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gFAAgF;IAChF,SAAS,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAAC;IAC7C,qFAAqF;IACrF,QAAQ,EAAE,OAAO,CAAC;IAClB,4GAA4G;IAC5G,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,2GAA2G;IAC3G,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,2GAA2G;IAC3G,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iGAAiG;IACjG,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,2FAA2F;IAC3F,SAAS,EAAE,OAAO,CAAC;IACnB,yGAAyG;IACzG,YAAY,EAAE,OAAO,CAAC;IACtB,wGAAwG;IACxG,MAAM,EAAE,OAAO,CAAC;IAChB,mEAAmE;IACnE,aAAa,EAAE,OAAO,CAAC;IACvB,8GAA8G;IAC9G,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,oFAAoF;IACpF,UAAU,EAAE,OAAO,CAAC;IACpB,yFAAyF;IACzF,qBAAqB,EAAE,OAAO,CAAC;IAC/B,gGAAgG;IAChG,cAAc,EAAE,OAAO,CAAC;IACxB,yFAAyF;IACzF,OAAO,EAAE,OAAO,CAAC;IACjB,qDAAqD;IACrD,MAAM,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,6CAA6C;IAC7C,MAAM,EAAE,OAAO,CAAC;IAChB,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,IAAI,EAAE,OAAO,CAAC;IACd;;;;;;;;;OASG;IACH,IAAI,EAAE,OAAO,CAAC;IACd,iEAAiE;IACjE,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uEAAuE;IACvE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,0FAA0F;IAC1F,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,8EAA8E;IAC9E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iGAAiG;IACjG,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oFAAoF;IACpF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,6EAA6E;IAC7E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,wEAAwE;IACxE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,uEAAuE;IACvE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iEAAiE;IACjE,aAAa,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,qBAAqB,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACnD;;;;OAIG;IACH,2BAA2B,EAAE,OAAO,CAAC;IACrC,gHAAgH;IAChH,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAwHtC;AAED;;;;;GAKG;AACH,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG,MAAM,EAAE,CAErG;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,OAAO,GAAE,MAAM,MAAoB,GAAG,YAAY,CAMrH;AAUD,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAM9E;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,eAAe,CAS1H;AAED,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAK1D;AAYD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAc1E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAC5C,OAAO,EAAE,UAAU,CAAC;IACpB,YAAY,EAAE,MAAM,WAAW,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,aAAa,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,aAAa,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,iBAAiB,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAClD,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,mBAAmB,EAAE,yBAAyB,GAAG,IAAI,CAAC;IACtD,eAAe,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC9C,aAAa,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,6DAA6D;IAC7D,UAAU,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,aAAa,EAAE,OAAO,CAAC;IACvB,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;CACjB,CA4IA;AAED,mEAAmE;AACnE,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,IAAI,CAAC;CACX;AASD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,CAK9F;AA2CD,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/B;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,gHAAgH;IAChH,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACtB,mFAAmF;IACnF,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,OAAO,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAC9C,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACjD,MAAM,CAAC,EAAE,IAAI,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;CAC/C;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACnE,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,GAAG,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IACjD,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,IAAI,CAAC;CACf;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAChC,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACtB,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;IACvC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAChC,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACtB,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;IACtC,8EAA8E;IAC9E,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;CACrC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,GAAG,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IACpD,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CAC5B;AA8RD;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,EAC/B,UAAU,GAAE,WAAW,CAAC,YAAY,CAAM,GACzC,OAAO,CAAC,WAAW,CAAC,CA+EtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS,CAwDzE;AAyBD,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,UAA8G,CAAC"}