inquirer-ai 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent.d.ts +7 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +143 -0
- package/dist/agent.js.map +1 -0
- package/dist/choice.d.ts +18 -0
- package/dist/choice.d.ts.map +1 -0
- package/dist/choice.js +29 -0
- package/dist/choice.js.map +1 -0
- package/dist/errors.d.ts +16 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +31 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +66 -0
- package/dist/index.js.map +1 -0
- package/dist/mode.d.ts +2 -0
- package/dist/mode.d.ts.map +1 -0
- package/dist/mode.js +10 -0
- package/dist/mode.js.map +1 -0
- package/dist/prompts/autocomplete.d.ts +13 -0
- package/dist/prompts/autocomplete.d.ts.map +1 -0
- package/dist/prompts/autocomplete.js +29 -0
- package/dist/prompts/autocomplete.js.map +1 -0
- package/dist/prompts/base.d.ts +27 -0
- package/dist/prompts/base.d.ts.map +1 -0
- package/dist/prompts/base.js +107 -0
- package/dist/prompts/base.js.map +1 -0
- package/dist/prompts/checkbox.d.ts +22 -0
- package/dist/prompts/checkbox.d.ts.map +1 -0
- package/dist/prompts/checkbox.js +168 -0
- package/dist/prompts/checkbox.js.map +1 -0
- package/dist/prompts/confirm.d.ts +12 -0
- package/dist/prompts/confirm.d.ts.map +1 -0
- package/dist/prompts/confirm.js +40 -0
- package/dist/prompts/confirm.js.map +1 -0
- package/dist/prompts/editor.d.ts +13 -0
- package/dist/prompts/editor.d.ts.map +1 -0
- package/dist/prompts/editor.js +54 -0
- package/dist/prompts/editor.js.map +1 -0
- package/dist/prompts/expand.d.ts +19 -0
- package/dist/prompts/expand.d.ts.map +1 -0
- package/dist/prompts/expand.js +72 -0
- package/dist/prompts/expand.js.map +1 -0
- package/dist/prompts/number.d.ts +17 -0
- package/dist/prompts/number.d.ts.map +1 -0
- package/dist/prompts/number.js +73 -0
- package/dist/prompts/number.js.map +1 -0
- package/dist/prompts/password.d.ts +14 -0
- package/dist/prompts/password.d.ts.map +1 -0
- package/dist/prompts/password.js +30 -0
- package/dist/prompts/password.js.map +1 -0
- package/dist/prompts/path.d.ts +13 -0
- package/dist/prompts/path.d.ts.map +1 -0
- package/dist/prompts/path.js +29 -0
- package/dist/prompts/path.js.map +1 -0
- package/dist/prompts/rawlist.d.ts +15 -0
- package/dist/prompts/rawlist.d.ts.map +1 -0
- package/dist/prompts/rawlist.js +55 -0
- package/dist/prompts/rawlist.js.map +1 -0
- package/dist/prompts/search.d.ts +17 -0
- package/dist/prompts/search.d.ts.map +1 -0
- package/dist/prompts/search.js +85 -0
- package/dist/prompts/search.js.map +1 -0
- package/dist/prompts/select.d.ts +22 -0
- package/dist/prompts/select.d.ts.map +1 -0
- package/dist/prompts/select.js +137 -0
- package/dist/prompts/select.js.map +1 -0
- package/dist/prompts/text.d.ts +10 -0
- package/dist/prompts/text.d.ts.map +1 -0
- package/dist/prompts/text.js +21 -0
- package/dist/prompts/text.js.map +1 -0
- package/dist/terminal.d.ts +21 -0
- package/dist/terminal.d.ts.map +1 -0
- package/dist/terminal.js +155 -0
- package/dist/terminal.js.map +1 -0
- package/dist/theme.d.ts +22 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +32 -0
- package/dist/theme.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { formatQuestion, readLine } from "../terminal.js";
|
|
2
|
+
import { BasePrompt } from "./base.js";
|
|
3
|
+
export class PathPrompt extends BasePrompt {
|
|
4
|
+
onlyDirectories;
|
|
5
|
+
constructor(config) {
|
|
6
|
+
super(config);
|
|
7
|
+
this.onlyDirectories = config.onlyDirectories ?? false;
|
|
8
|
+
}
|
|
9
|
+
get promptType() {
|
|
10
|
+
return "path";
|
|
11
|
+
}
|
|
12
|
+
validateAnswer(value) {
|
|
13
|
+
if (value == null)
|
|
14
|
+
return this.defaultValue ?? "";
|
|
15
|
+
return String(value);
|
|
16
|
+
}
|
|
17
|
+
toAgentDict() {
|
|
18
|
+
return { ...super.toAgentDict(), only_directories: this.onlyDirectories };
|
|
19
|
+
}
|
|
20
|
+
async executeTerminal() {
|
|
21
|
+
const suffix = this.defaultValue != null ? ` (${this.defaultValue})` : "";
|
|
22
|
+
const prompt = formatQuestion(this.message, suffix);
|
|
23
|
+
const result = await readLine(prompt);
|
|
24
|
+
if (!result && this.defaultValue != null)
|
|
25
|
+
return this.defaultValue;
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/prompts/path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAmB,UAAU,EAAE,MAAM,WAAW,CAAC;AAMxD,MAAM,OAAO,UAAW,SAAQ,UAAkB;IACxC,eAAe,CAAU;IAEjC,YAAY,MAAkB;QAC5B,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,KAAK,CAAC;IACzD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,cAAc,CAAC,KAAc;QACrC,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QAClD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAEkB,WAAW;QAC5B,OAAO,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;IAC5E,CAAC;IAES,KAAK,CAAC,eAAe;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QACnE,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type RawChoice } from "../choice.js";
|
|
2
|
+
import { type BaseConfig, BasePrompt } from "./base.js";
|
|
3
|
+
export interface RawlistConfig extends BaseConfig<unknown> {
|
|
4
|
+
choices: RawChoice[];
|
|
5
|
+
}
|
|
6
|
+
export declare class RawlistPrompt extends BasePrompt<unknown> {
|
|
7
|
+
private choices;
|
|
8
|
+
constructor(config: RawlistConfig);
|
|
9
|
+
get promptType(): string;
|
|
10
|
+
protected validateAnswer(value: unknown): unknown;
|
|
11
|
+
protected formatAnswer(value: unknown): string;
|
|
12
|
+
protected toAgentDict(): Record<string, unknown>;
|
|
13
|
+
protected executeTerminal(): Promise<unknown>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=rawlist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rawlist.d.ts","sourceRoot":"","sources":["../../src/prompts/rawlist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGnG,OAAO,EAAE,KAAK,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,WAAW,aAAc,SAAQ,UAAU,CAAC,OAAO,CAAC;IACxD,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,qBAAa,aAAc,SAAQ,UAAU,CAAC,OAAO,CAAC;IACpD,OAAO,CAAC,OAAO,CAAW;gBAEd,MAAM,EAAE,aAAa;IASjC,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAUjD,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;cAO3B,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;cAIzC,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;CAgBpD"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { choiceToDict, isSeparator, parseChoice } from "../choice.js";
|
|
2
|
+
import { InvalidChoiceError, ValidationError } from "../errors.js";
|
|
3
|
+
import { formatError, formatQuestion, readLine } from "../terminal.js";
|
|
4
|
+
import { BasePrompt } from "./base.js";
|
|
5
|
+
export class RawlistPrompt extends BasePrompt {
|
|
6
|
+
choices;
|
|
7
|
+
constructor(config) {
|
|
8
|
+
super(config);
|
|
9
|
+
if (!config.choices.length)
|
|
10
|
+
throw new InvalidChoiceError("choices cannot be empty");
|
|
11
|
+
this.choices = config.choices
|
|
12
|
+
.map(parseChoice)
|
|
13
|
+
.filter((c) => !isSeparator(c));
|
|
14
|
+
if (!this.choices.length)
|
|
15
|
+
throw new InvalidChoiceError("choices cannot be empty");
|
|
16
|
+
}
|
|
17
|
+
get promptType() {
|
|
18
|
+
return "rawlist";
|
|
19
|
+
}
|
|
20
|
+
validateAnswer(value) {
|
|
21
|
+
if (typeof value === "number" && value >= 1 && value <= this.choices.length) {
|
|
22
|
+
return this.choices[value - 1]?.value;
|
|
23
|
+
}
|
|
24
|
+
for (const c of this.choices) {
|
|
25
|
+
if (value === c.value || value === c.name)
|
|
26
|
+
return c.value;
|
|
27
|
+
}
|
|
28
|
+
throw new ValidationError(`Invalid choice: ${JSON.stringify(value)}`);
|
|
29
|
+
}
|
|
30
|
+
formatAnswer(value) {
|
|
31
|
+
for (const c of this.choices) {
|
|
32
|
+
if (c.value === value)
|
|
33
|
+
return c.short ?? c.name;
|
|
34
|
+
}
|
|
35
|
+
return String(value);
|
|
36
|
+
}
|
|
37
|
+
toAgentDict() {
|
|
38
|
+
return { ...super.toAgentDict(), choices: this.choices.map(choiceToDict) };
|
|
39
|
+
}
|
|
40
|
+
async executeTerminal() {
|
|
41
|
+
for (let i = 0; i < this.choices.length; i++) {
|
|
42
|
+
process.stderr.write(` ${i + 1}) ${this.choices[i]?.name}\n`);
|
|
43
|
+
}
|
|
44
|
+
const prompt = formatQuestion(this.message);
|
|
45
|
+
while (true) {
|
|
46
|
+
const raw = await readLine(prompt);
|
|
47
|
+
const idx = parseInt(raw, 10);
|
|
48
|
+
if (!Number.isNaN(idx) && idx >= 1 && idx <= this.choices.length) {
|
|
49
|
+
return this.choices[idx - 1]?.value;
|
|
50
|
+
}
|
|
51
|
+
process.stderr.write(`${formatError(`Please enter a number between 1 and ${this.choices.length}`)}\n`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=rawlist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rawlist.js","sourceRoot":"","sources":["../../src/prompts/rawlist.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type RawChoice } from "../choice.js";
|
|
2
|
+
import { type BaseConfig, BasePrompt } from "./base.js";
|
|
3
|
+
export interface SearchConfig extends BaseConfig<unknown> {
|
|
4
|
+
source: (term: string) => RawChoice[];
|
|
5
|
+
pageSize?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class SearchPrompt extends BasePrompt<unknown> {
|
|
8
|
+
private source;
|
|
9
|
+
private pageSize;
|
|
10
|
+
constructor(config: SearchConfig);
|
|
11
|
+
get promptType(): string;
|
|
12
|
+
protected validateAnswer(value: unknown): unknown;
|
|
13
|
+
protected toAgentDict(): Record<string, unknown>;
|
|
14
|
+
protected executeTerminal(): Promise<unknown>;
|
|
15
|
+
private getFiltered;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/prompts/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAInG,OAAO,EAAE,KAAK,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,WAAW,YAAa,SAAQ,UAAU,CAAC,OAAO,CAAC;IACvD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,YAAa,SAAQ,UAAU,CAAC,OAAO,CAAC;IACnD,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,YAAY;IAMhC,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;cAI9B,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;cAWzC,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IA+CnD,OAAO,CAAC,WAAW;CAKpB"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { choiceToDict, isSeparator, parseChoice } from "../choice.js";
|
|
2
|
+
import { PromptAbortedError } from "../errors.js";
|
|
3
|
+
import { runListPrompt } from "../terminal.js";
|
|
4
|
+
import { ansi, getTheme, RESET } from "../theme.js";
|
|
5
|
+
import { BasePrompt } from "./base.js";
|
|
6
|
+
export class SearchPrompt extends BasePrompt {
|
|
7
|
+
source;
|
|
8
|
+
pageSize;
|
|
9
|
+
constructor(config) {
|
|
10
|
+
super(config);
|
|
11
|
+
this.source = config.source;
|
|
12
|
+
this.pageSize = config.pageSize ?? 10;
|
|
13
|
+
}
|
|
14
|
+
get promptType() {
|
|
15
|
+
return "search";
|
|
16
|
+
}
|
|
17
|
+
validateAnswer(value) {
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
toAgentDict() {
|
|
21
|
+
const initial = this.source("")
|
|
22
|
+
.map(parseChoice)
|
|
23
|
+
.filter((c) => !isSeparator(c) && !c.disabled);
|
|
24
|
+
return {
|
|
25
|
+
...super.toAgentDict(),
|
|
26
|
+
searchable: true,
|
|
27
|
+
choices: initial.map(choiceToDict),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
async executeTerminal() {
|
|
31
|
+
const t = getTheme();
|
|
32
|
+
const filtered = this.getFiltered("");
|
|
33
|
+
let cursor = 0;
|
|
34
|
+
const getItems = () => {
|
|
35
|
+
const end = Math.min(filtered.length, this.pageSize);
|
|
36
|
+
const result = [];
|
|
37
|
+
for (let i = 0; i < end; i++) {
|
|
38
|
+
const c = filtered[i];
|
|
39
|
+
if (i === cursor) {
|
|
40
|
+
result.push({ text: `${t.symPointer} ${c.name}`, style: ansi(t.highlight) });
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
result.push({ text: ` ${c.name}`, style: "" });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (!filtered.length) {
|
|
47
|
+
result.push({ text: ` ${ansi(t.muted)}No matches${RESET}`, style: "" });
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
};
|
|
51
|
+
const raw = await runListPrompt({
|
|
52
|
+
message: this.message,
|
|
53
|
+
getItems,
|
|
54
|
+
onKey: (key) => {
|
|
55
|
+
if (key === "up") {
|
|
56
|
+
if (filtered.length)
|
|
57
|
+
cursor = (cursor - 1 + filtered.length) % filtered.length;
|
|
58
|
+
return { done: false };
|
|
59
|
+
}
|
|
60
|
+
if (key === "down") {
|
|
61
|
+
if (filtered.length)
|
|
62
|
+
cursor = (cursor + 1) % filtered.length;
|
|
63
|
+
return { done: false };
|
|
64
|
+
}
|
|
65
|
+
if (key === "enter") {
|
|
66
|
+
if (filtered.length)
|
|
67
|
+
return { done: true, result: filtered[cursor]?.value };
|
|
68
|
+
return { done: true, result: null };
|
|
69
|
+
}
|
|
70
|
+
if (key === "ctrl-c")
|
|
71
|
+
return { done: true, result: null };
|
|
72
|
+
return { done: false };
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
if (raw === null)
|
|
76
|
+
throw new PromptAbortedError("Prompt aborted by user");
|
|
77
|
+
return raw;
|
|
78
|
+
}
|
|
79
|
+
getFiltered(term) {
|
|
80
|
+
return this.source(term)
|
|
81
|
+
.map(parseChoice)
|
|
82
|
+
.filter((c) => !isSeparator(c) && !c.disabled);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/prompts/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type RawChoice } from "../choice.js";
|
|
2
|
+
import { type BaseConfig, BasePrompt } from "./base.js";
|
|
3
|
+
export interface SelectConfig<V = unknown> extends BaseConfig<V> {
|
|
4
|
+
choices: RawChoice<V>[];
|
|
5
|
+
pageSize?: number;
|
|
6
|
+
loop?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare class SelectPrompt<V = unknown> extends BasePrompt<V> {
|
|
9
|
+
private items;
|
|
10
|
+
private choices;
|
|
11
|
+
private pageSize;
|
|
12
|
+
private loop;
|
|
13
|
+
constructor(config: SelectConfig<V>);
|
|
14
|
+
get promptType(): string;
|
|
15
|
+
protected validateAnswer(value: unknown): V;
|
|
16
|
+
protected formatAnswer(value: V): string;
|
|
17
|
+
protected toAgentDict(): Record<string, unknown>;
|
|
18
|
+
private selectableIndices;
|
|
19
|
+
private moveCursor;
|
|
20
|
+
protected executeTerminal(): Promise<V>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/prompts/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAIpH,OAAO,EAAE,KAAK,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IAC9D,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,YAAY,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,IAAI,CAAU;gBAEV,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAYnC,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC;IAS3C,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM;cAOrB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIzD,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,UAAU;cAaF,eAAe,IAAI,OAAO,CAAC,CAAC,CAAC;CAoE9C"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { choiceToDict, isSeparator, parseChoice } from "../choice.js";
|
|
2
|
+
import { InvalidChoiceError, PromptAbortedError, ValidationError } from "../errors.js";
|
|
3
|
+
import { runListPrompt } from "../terminal.js";
|
|
4
|
+
import { ansi, getTheme, RESET } from "../theme.js";
|
|
5
|
+
import { BasePrompt } from "./base.js";
|
|
6
|
+
export class SelectPrompt extends BasePrompt {
|
|
7
|
+
items;
|
|
8
|
+
choices;
|
|
9
|
+
pageSize;
|
|
10
|
+
loop;
|
|
11
|
+
constructor(config) {
|
|
12
|
+
super(config);
|
|
13
|
+
if (!config.choices.length)
|
|
14
|
+
throw new InvalidChoiceError("choices cannot be empty");
|
|
15
|
+
this.items = config.choices.map(parseChoice);
|
|
16
|
+
this.choices = this.items.filter((c) => !isSeparator(c));
|
|
17
|
+
if (!this.choices.some((c) => !c.disabled)) {
|
|
18
|
+
throw new InvalidChoiceError("choices must contain at least one selectable item");
|
|
19
|
+
}
|
|
20
|
+
this.pageSize = config.pageSize ?? 10;
|
|
21
|
+
this.loop = config.loop ?? true;
|
|
22
|
+
}
|
|
23
|
+
get promptType() {
|
|
24
|
+
return "select";
|
|
25
|
+
}
|
|
26
|
+
validateAnswer(value) {
|
|
27
|
+
for (const c of this.choices) {
|
|
28
|
+
if (c.disabled)
|
|
29
|
+
continue;
|
|
30
|
+
if (value === c.value || value === c.name)
|
|
31
|
+
return c.value;
|
|
32
|
+
}
|
|
33
|
+
const valid = this.choices.filter((c) => !c.disabled).map((c) => c.value);
|
|
34
|
+
throw new ValidationError(`Invalid choice: ${JSON.stringify(value)}. Valid: ${JSON.stringify(valid)}`);
|
|
35
|
+
}
|
|
36
|
+
formatAnswer(value) {
|
|
37
|
+
for (const c of this.choices) {
|
|
38
|
+
if (c.value === value)
|
|
39
|
+
return c.short ?? c.name;
|
|
40
|
+
}
|
|
41
|
+
return String(value);
|
|
42
|
+
}
|
|
43
|
+
toAgentDict() {
|
|
44
|
+
return { ...super.toAgentDict(), choices: this.items.map(choiceToDict) };
|
|
45
|
+
}
|
|
46
|
+
selectableIndices() {
|
|
47
|
+
return this.items.reduce((acc, item, i) => {
|
|
48
|
+
if (!isSeparator(item) && !item.disabled)
|
|
49
|
+
acc.push(i);
|
|
50
|
+
return acc;
|
|
51
|
+
}, []);
|
|
52
|
+
}
|
|
53
|
+
moveCursor(current, direction) {
|
|
54
|
+
const indices = this.selectableIndices();
|
|
55
|
+
let pos = indices.indexOf(current);
|
|
56
|
+
if (pos === -1)
|
|
57
|
+
return indices[0];
|
|
58
|
+
pos += direction;
|
|
59
|
+
if (this.loop) {
|
|
60
|
+
pos = ((pos % indices.length) + indices.length) % indices.length;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
pos = Math.max(0, Math.min(pos, indices.length - 1));
|
|
64
|
+
}
|
|
65
|
+
return indices[pos];
|
|
66
|
+
}
|
|
67
|
+
async executeTerminal() {
|
|
68
|
+
const t = getTheme();
|
|
69
|
+
const indices = this.selectableIndices();
|
|
70
|
+
let cursor = indices[0];
|
|
71
|
+
if (this.defaultValue != null) {
|
|
72
|
+
for (let i = 0; i < this.items.length; i++) {
|
|
73
|
+
const item = this.items[i];
|
|
74
|
+
if (!isSeparator(item) && !item.disabled && (item.value === this.defaultValue || item.name === String(this.defaultValue))) {
|
|
75
|
+
cursor = i;
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const getItems = () => {
|
|
81
|
+
const total = this.items.length;
|
|
82
|
+
const ps = Math.min(this.pageSize, total);
|
|
83
|
+
const start = Math.max(0, Math.min(cursor - Math.floor(ps / 2), total - ps));
|
|
84
|
+
const end = start + ps;
|
|
85
|
+
const result = [];
|
|
86
|
+
if (start > 0)
|
|
87
|
+
result.push({ text: ` ${ansi(t.muted)}(more above)${RESET}`, style: "" });
|
|
88
|
+
for (let i = start; i < end; i++) {
|
|
89
|
+
const item = this.items[i];
|
|
90
|
+
if (isSeparator(item)) {
|
|
91
|
+
result.push({ text: ` ${item.text}`, style: ansi(t.muted) });
|
|
92
|
+
}
|
|
93
|
+
else if (item.disabled) {
|
|
94
|
+
const reason = typeof item.disabled === "string" ? ` (${item.disabled})` : "";
|
|
95
|
+
result.push({ text: ` ${item.name}${reason} (disabled)`, style: ansi(t.muted) });
|
|
96
|
+
}
|
|
97
|
+
else if (i === cursor) {
|
|
98
|
+
const desc = item.description ? ` - ${item.description}` : "";
|
|
99
|
+
result.push({ text: `${t.symPointer} ${item.name}${desc}`, style: ansi(t.highlight) });
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
result.push({ text: ` ${item.name}`, style: "" });
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (end < total)
|
|
106
|
+
result.push({ text: ` ${ansi(t.muted)}(more below)${RESET}`, style: "" });
|
|
107
|
+
return result;
|
|
108
|
+
};
|
|
109
|
+
const raw = await runListPrompt({
|
|
110
|
+
message: this.message,
|
|
111
|
+
getItems,
|
|
112
|
+
onKey: (key) => {
|
|
113
|
+
if (key === "up" || key === "k") {
|
|
114
|
+
cursor = this.moveCursor(cursor, -1);
|
|
115
|
+
return { done: false };
|
|
116
|
+
}
|
|
117
|
+
if (key === "down" || key === "j") {
|
|
118
|
+
cursor = this.moveCursor(cursor, 1);
|
|
119
|
+
return { done: false };
|
|
120
|
+
}
|
|
121
|
+
if (key === "enter") {
|
|
122
|
+
const item = this.items[cursor];
|
|
123
|
+
if (!isSeparator(item))
|
|
124
|
+
return { done: true, result: item.value };
|
|
125
|
+
return { done: false };
|
|
126
|
+
}
|
|
127
|
+
if (key === "ctrl-c")
|
|
128
|
+
return { done: true, result: null };
|
|
129
|
+
return { done: false };
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
if (raw === null)
|
|
133
|
+
throw new PromptAbortedError("Prompt aborted by user");
|
|
134
|
+
return raw;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/prompts/select.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type BaseConfig, BasePrompt } from "./base.js";
|
|
2
|
+
export interface TextConfig extends BaseConfig<string> {
|
|
3
|
+
default?: string | null;
|
|
4
|
+
}
|
|
5
|
+
export declare class TextPrompt extends BasePrompt<string> {
|
|
6
|
+
get promptType(): string;
|
|
7
|
+
protected validateAnswer(value: unknown): string;
|
|
8
|
+
protected executeTerminal(): Promise<string>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/prompts/text.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,WAAW,UAAW,SAAQ,UAAU,CAAC,MAAM,CAAC;IACpD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,qBAAa,UAAW,SAAQ,UAAU,CAAC,MAAM,CAAC;IAEhD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;cAKhC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;CAOnD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { formatQuestion, readLine } from "../terminal.js";
|
|
2
|
+
import { BasePrompt } from "./base.js";
|
|
3
|
+
export class TextPrompt extends BasePrompt {
|
|
4
|
+
get promptType() {
|
|
5
|
+
return "input";
|
|
6
|
+
}
|
|
7
|
+
validateAnswer(value) {
|
|
8
|
+
if (value == null)
|
|
9
|
+
return this.defaultValue ?? "";
|
|
10
|
+
return String(value);
|
|
11
|
+
}
|
|
12
|
+
async executeTerminal() {
|
|
13
|
+
const suffix = this.defaultValue != null ? ` (${this.defaultValue})` : "";
|
|
14
|
+
const prompt = formatQuestion(this.message, suffix);
|
|
15
|
+
const result = await readLine(prompt);
|
|
16
|
+
if (!result && this.defaultValue != null)
|
|
17
|
+
return this.defaultValue;
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/prompts/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAmB,UAAU,EAAE,MAAM,WAAW,CAAC;AAMxD,MAAM,OAAO,UAAW,SAAQ,UAAkB;IAEhD,IAAI,UAAU;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IAES,cAAc,CAAC,KAAc;QACrC,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QAClD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAES,KAAK,CAAC,eAAe;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QACnE,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare function readLine(prompt: string): Promise<string>;
|
|
2
|
+
export declare function readPassword(prompt: string, mask?: string | null): Promise<string>;
|
|
3
|
+
export declare function formatQuestion(message: string, suffix?: string): string;
|
|
4
|
+
export declare function formatSuccess(message: string, answer: string): string;
|
|
5
|
+
export declare function formatError(msg: string): string;
|
|
6
|
+
export interface ListItem {
|
|
7
|
+
text: string;
|
|
8
|
+
style: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ListConfig {
|
|
11
|
+
message: string;
|
|
12
|
+
getItems: () => ListItem[];
|
|
13
|
+
onKey: (key: string) => {
|
|
14
|
+
done: false;
|
|
15
|
+
} | {
|
|
16
|
+
done: true;
|
|
17
|
+
result: unknown;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export declare function runListPrompt(config: ListConfig): Promise<unknown>;
|
|
21
|
+
//# sourceMappingURL=terminal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAIA,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAa9D;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAsDxF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,MAAM,CAGnE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,QAAQ,EAAE,CAAC;IAC3B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,KAAK,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3E;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAwDxE"}
|
package/dist/terminal.js
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import * as readline from "node:readline";
|
|
2
|
+
import { Writable } from "node:stream";
|
|
3
|
+
import { ansi, BOLD, getTheme, RESET } from "./theme.js";
|
|
4
|
+
export async function readLine(prompt) {
|
|
5
|
+
const rl = readline.createInterface({
|
|
6
|
+
input: process.stdin,
|
|
7
|
+
output: process.stderr,
|
|
8
|
+
terminal: true,
|
|
9
|
+
});
|
|
10
|
+
try {
|
|
11
|
+
return await new Promise((resolve) => {
|
|
12
|
+
rl.question(prompt, (answer) => resolve(answer));
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
finally {
|
|
16
|
+
rl.close();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export async function readPassword(prompt, mask) {
|
|
20
|
+
const mutableOutput = new Writable({
|
|
21
|
+
write(_chunk, _encoding, callback) {
|
|
22
|
+
callback();
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
const rl = readline.createInterface({
|
|
26
|
+
input: process.stdin,
|
|
27
|
+
output: mutableOutput,
|
|
28
|
+
terminal: true,
|
|
29
|
+
});
|
|
30
|
+
process.stderr.write(prompt);
|
|
31
|
+
return new Promise((resolve) => {
|
|
32
|
+
const chars = [];
|
|
33
|
+
process.stdin.setRawMode(true);
|
|
34
|
+
process.stdin.resume();
|
|
35
|
+
const onData = (buf) => {
|
|
36
|
+
const ch = buf.toString("utf8");
|
|
37
|
+
if (ch === "\r" || ch === "\n") {
|
|
38
|
+
process.stdin.setRawMode(false);
|
|
39
|
+
process.stdin.removeListener("data", onData);
|
|
40
|
+
process.stderr.write("\n");
|
|
41
|
+
rl.close();
|
|
42
|
+
resolve(chars.join(""));
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (ch === "\x03") {
|
|
46
|
+
process.stdin.setRawMode(false);
|
|
47
|
+
process.stdin.removeListener("data", onData);
|
|
48
|
+
rl.close();
|
|
49
|
+
process.stderr.write("\n");
|
|
50
|
+
resolve("");
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (ch === "\x7f" || ch === "\b") {
|
|
54
|
+
if (chars.length > 0) {
|
|
55
|
+
chars.pop();
|
|
56
|
+
if (mask) {
|
|
57
|
+
process.stderr.write("\b \b");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
chars.push(ch);
|
|
63
|
+
if (mask) {
|
|
64
|
+
process.stderr.write(mask);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
process.stdin.on("data", onData);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
export function formatQuestion(message, suffix = "") {
|
|
71
|
+
const t = getTheme();
|
|
72
|
+
return `${ansi(t.question)}${t.symQuestion}${RESET} ${BOLD}${message}${suffix}:${RESET} `;
|
|
73
|
+
}
|
|
74
|
+
export function formatSuccess(message, answer) {
|
|
75
|
+
const t = getTheme();
|
|
76
|
+
return `${ansi(t.success)}${t.symSuccess}${RESET} ${message} ${ansi(t.answer)}${answer}${RESET}`;
|
|
77
|
+
}
|
|
78
|
+
export function formatError(msg) {
|
|
79
|
+
const t = getTheme();
|
|
80
|
+
return `${ansi(t.error)} ${msg}${RESET}`;
|
|
81
|
+
}
|
|
82
|
+
export async function runListPrompt(config) {
|
|
83
|
+
const { stdin } = process;
|
|
84
|
+
if (!stdin.setRawMode)
|
|
85
|
+
throw new Error("Terminal does not support raw mode");
|
|
86
|
+
stdin.setRawMode(true);
|
|
87
|
+
stdin.resume();
|
|
88
|
+
stdin.setEncoding("utf8");
|
|
89
|
+
let renderedLines = 0;
|
|
90
|
+
const render = () => {
|
|
91
|
+
if (renderedLines > 0) {
|
|
92
|
+
process.stderr.write(`\x1b[${renderedLines}A`);
|
|
93
|
+
}
|
|
94
|
+
const t = getTheme();
|
|
95
|
+
const header = `${ansi(t.question)}${t.symQuestion}${RESET} ${BOLD}${config.message}${RESET}`;
|
|
96
|
+
const items = config.getItems();
|
|
97
|
+
const lines = [header, ...items.map((it) => `${it.style}${it.text}${RESET}`)];
|
|
98
|
+
for (let i = 0; i < lines.length; i++) {
|
|
99
|
+
process.stderr.write(`\x1b[2K${lines[i]}\n`);
|
|
100
|
+
}
|
|
101
|
+
if (renderedLines > lines.length) {
|
|
102
|
+
for (let i = lines.length; i < renderedLines; i++) {
|
|
103
|
+
process.stderr.write("\x1b[2K\n");
|
|
104
|
+
}
|
|
105
|
+
process.stderr.write(`\x1b[${renderedLines - lines.length}A`);
|
|
106
|
+
}
|
|
107
|
+
renderedLines = lines.length;
|
|
108
|
+
};
|
|
109
|
+
process.stderr.write("\x1b[?25l");
|
|
110
|
+
render();
|
|
111
|
+
return new Promise((resolve) => {
|
|
112
|
+
const onData = (data) => {
|
|
113
|
+
const key = parseKey(typeof data === "string" ? data : data.toString("utf8"));
|
|
114
|
+
const result = config.onKey(key);
|
|
115
|
+
if (result.done) {
|
|
116
|
+
stdin.setRawMode(false);
|
|
117
|
+
stdin.removeListener("data", onData);
|
|
118
|
+
stdin.pause();
|
|
119
|
+
process.stderr.write("\x1b[?25h");
|
|
120
|
+
if (renderedLines > 0) {
|
|
121
|
+
process.stderr.write(`\x1b[${renderedLines}A`);
|
|
122
|
+
for (let i = 0; i < renderedLines; i++) {
|
|
123
|
+
process.stderr.write("\x1b[2K\n");
|
|
124
|
+
}
|
|
125
|
+
process.stderr.write(`\x1b[${renderedLines}A`);
|
|
126
|
+
}
|
|
127
|
+
resolve(result.result);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
render();
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
stdin.on("data", onData);
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
function parseKey(data) {
|
|
137
|
+
if (data === "\x1b[A")
|
|
138
|
+
return "up";
|
|
139
|
+
if (data === "\x1b[B")
|
|
140
|
+
return "down";
|
|
141
|
+
if (data === "\r" || data === "\n")
|
|
142
|
+
return "enter";
|
|
143
|
+
if (data === " ")
|
|
144
|
+
return "space";
|
|
145
|
+
if (data === "\x03")
|
|
146
|
+
return "ctrl-c";
|
|
147
|
+
if (data === "\x1b[H" || data === "\x1b[1~")
|
|
148
|
+
return "home";
|
|
149
|
+
if (data === "\x1b[F" || data === "\x1b[4~")
|
|
150
|
+
return "end";
|
|
151
|
+
if (data.length === 1)
|
|
152
|
+
return data;
|
|
153
|
+
return "";
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=terminal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAc;IAC3C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IACH,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;YAC3C,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,IAAoB;IACrE,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAC;QACjC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ;YAC/B,QAAQ,EAAE,CAAC;QACb,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE7B,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACrC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAEvB,MAAM,MAAM,GAAG,CAAC,GAAW,EAAQ,EAAE;YACnC,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC7C,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,OAAO,CAAC,EAAE,CAAC,CAAC;gBACZ,OAAO;YACT,CAAC;YACD,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBACjC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,KAAK,CAAC,GAAG,EAAE,CAAC;oBACZ,IAAI,IAAI,EAAE,CAAC;wBACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC;gBACD,OAAO;YACT,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC;QACF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,MAAM,GAAG,EAAE;IACzD,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;IACrB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,GAAG,KAAK,IAAI,IAAI,GAAG,OAAO,GAAG,MAAM,IAAI,KAAK,GAAG,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,MAAc;IAC3D,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;IACrB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;IACrB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,KAAK,EAAE,CAAC;AAC5C,CAAC;AAaD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAkB;IACpD,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC1B,IAAI,CAAC,KAAK,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAE7E,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvB,KAAK,CAAC,MAAM,EAAE,CAAC;IACf,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAE1B,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,aAAa,GAAG,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,GAAG,KAAK,IAAI,IAAI,GAAG,MAAM,CAAC,OAAO,GAAG,KAAK,EAAE,CAAC;QAC9F,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACpC,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,aAAa,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAChE,CAAC;QACD,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC;IAC/B,CAAC,CAAC;IAEF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAClC,MAAM,EAAE,CAAC;IAET,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;QACtC,MAAM,MAAM,GAAG,CAAC,IAAqB,EAAQ,EAAE;YAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9E,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACxB,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACrC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAClC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,aAAa,GAAG,CAAC,CAAC;oBAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;wBACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACpC,CAAC;oBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,aAAa,GAAG,CAAC,CAAC;gBACjD,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,CAAC;YACX,CAAC;QACH,CAAC,CAAC;QACF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IACrC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IACnD,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,OAAO,CAAC;IACjC,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC;IACrC,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAC3D,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC1D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,EAAE,CAAC;AACZ,CAAC"}
|