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,22 @@
|
|
|
1
|
+
import { type RawChoice } from "../choice.js";
|
|
2
|
+
import { type BaseConfig, BasePrompt } from "./base.js";
|
|
3
|
+
export interface CheckboxConfig<V = unknown> extends BaseConfig<V[]> {
|
|
4
|
+
choices: RawChoice<V>[];
|
|
5
|
+
pageSize?: number;
|
|
6
|
+
loop?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare class CheckboxPrompt<V = unknown> extends BasePrompt<V[]> {
|
|
9
|
+
private items;
|
|
10
|
+
private choices;
|
|
11
|
+
private pageSize;
|
|
12
|
+
private loop;
|
|
13
|
+
constructor(config: CheckboxConfig<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=checkbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../src/prompts/checkbox.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,cAAc,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,UAAU,CAAC,CAAC,EAAE,CAAC;IAClE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,cAAc,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,UAAU,CAAC,CAAC,EAAE,CAAC;IAC9D,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,IAAI,CAAU;gBAEV,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IAYrC,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,EAAE;IAmB7C,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,MAAM;cAKvB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIzD,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,UAAU;cAaF,eAAe,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;CAoFhD"}
|
|
@@ -0,0 +1,168 @@
|
|
|
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 CheckboxPrompt extends BasePrompt {
|
|
7
|
+
items;
|
|
8
|
+
choices;
|
|
9
|
+
pageSize;
|
|
10
|
+
loop;
|
|
11
|
+
constructor(config) {
|
|
12
|
+
super({ ...config, default: config.default ?? [] });
|
|
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 "checkbox";
|
|
25
|
+
}
|
|
26
|
+
validateAnswer(value) {
|
|
27
|
+
if (!Array.isArray(value))
|
|
28
|
+
throw new ValidationError(`Expected an array, got ${typeof value}`);
|
|
29
|
+
const enabled = this.choices.filter((c) => !c.disabled);
|
|
30
|
+
const validValues = new Set(enabled.map((c) => c.value));
|
|
31
|
+
const validNames = new Set(enabled.map((c) => c.name));
|
|
32
|
+
const result = [];
|
|
33
|
+
for (const v of value) {
|
|
34
|
+
if (validValues.has(v)) {
|
|
35
|
+
result.push(v);
|
|
36
|
+
}
|
|
37
|
+
else if (validNames.has(String(v))) {
|
|
38
|
+
const match = enabled.find((c) => c.name === v);
|
|
39
|
+
if (match)
|
|
40
|
+
result.push(match.value);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
throw new ValidationError(`Invalid choice: ${JSON.stringify(v)}. Valid: ${JSON.stringify([...validValues])}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
formatAnswer(value) {
|
|
49
|
+
const names = this.choices.filter((c) => value.includes(c.value)).map((c) => c.short ?? c.name);
|
|
50
|
+
return names.length ? names.join(", ") : "none";
|
|
51
|
+
}
|
|
52
|
+
toAgentDict() {
|
|
53
|
+
return { ...super.toAgentDict(), choices: this.items.map(choiceToDict) };
|
|
54
|
+
}
|
|
55
|
+
selectableIndices() {
|
|
56
|
+
return this.items.reduce((acc, item, i) => {
|
|
57
|
+
if (!isSeparator(item) && !item.disabled)
|
|
58
|
+
acc.push(i);
|
|
59
|
+
return acc;
|
|
60
|
+
}, []);
|
|
61
|
+
}
|
|
62
|
+
moveCursor(current, direction) {
|
|
63
|
+
const indices = this.selectableIndices();
|
|
64
|
+
let pos = indices.indexOf(current);
|
|
65
|
+
if (pos === -1)
|
|
66
|
+
return indices[0];
|
|
67
|
+
pos += direction;
|
|
68
|
+
if (this.loop) {
|
|
69
|
+
pos = ((pos % indices.length) + indices.length) % indices.length;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
pos = Math.max(0, Math.min(pos, indices.length - 1));
|
|
73
|
+
}
|
|
74
|
+
return indices[pos];
|
|
75
|
+
}
|
|
76
|
+
async executeTerminal() {
|
|
77
|
+
const t = getTheme();
|
|
78
|
+
const indices = this.selectableIndices();
|
|
79
|
+
let cursor = indices[0];
|
|
80
|
+
const checked = new Set();
|
|
81
|
+
const defaults = this.defaultValue ?? [];
|
|
82
|
+
for (let i = 0; i < this.items.length; i++) {
|
|
83
|
+
const item = this.items[i];
|
|
84
|
+
if (!isSeparator(item) && !item.disabled) {
|
|
85
|
+
if (defaults.includes(item.value) || defaults.includes(item.name)) {
|
|
86
|
+
checked.add(i);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const getItems = () => {
|
|
91
|
+
const total = this.items.length;
|
|
92
|
+
const ps = Math.min(this.pageSize, total);
|
|
93
|
+
const start = Math.max(0, Math.min(cursor - Math.floor(ps / 2), total - ps));
|
|
94
|
+
const end = start + ps;
|
|
95
|
+
const result = [];
|
|
96
|
+
if (start > 0)
|
|
97
|
+
result.push({ text: ` ${ansi(t.muted)}(more above)${RESET}`, style: "" });
|
|
98
|
+
for (let i = start; i < end; i++) {
|
|
99
|
+
const item = this.items[i];
|
|
100
|
+
if (isSeparator(item)) {
|
|
101
|
+
result.push({ text: ` ${item.text}`, style: ansi(t.muted) });
|
|
102
|
+
}
|
|
103
|
+
else if (item.disabled) {
|
|
104
|
+
const reason = typeof item.disabled === "string" ? ` (${item.disabled})` : "";
|
|
105
|
+
result.push({ text: ` ${t.symUnchecked} ${item.name}${reason} (disabled)`, style: ansi(t.muted) });
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
const arrow = i === cursor ? t.symPointer : " ";
|
|
109
|
+
const mark = checked.has(i) ? t.symChecked : t.symUnchecked;
|
|
110
|
+
let style = "";
|
|
111
|
+
if (i === cursor)
|
|
112
|
+
style = ansi(t.highlight);
|
|
113
|
+
else if (checked.has(i))
|
|
114
|
+
style = ansi(t.selected);
|
|
115
|
+
result.push({ text: `${arrow} ${mark} ${item.name}`, style });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (end < total)
|
|
119
|
+
result.push({ text: ` ${ansi(t.muted)}(more below)${RESET}`, style: "" });
|
|
120
|
+
return result;
|
|
121
|
+
};
|
|
122
|
+
const raw = await runListPrompt({
|
|
123
|
+
message: this.message,
|
|
124
|
+
getItems,
|
|
125
|
+
onKey: (key) => {
|
|
126
|
+
if (key === "up" || key === "k") {
|
|
127
|
+
cursor = this.moveCursor(cursor, -1);
|
|
128
|
+
return { done: false };
|
|
129
|
+
}
|
|
130
|
+
if (key === "down" || key === "j") {
|
|
131
|
+
cursor = this.moveCursor(cursor, 1);
|
|
132
|
+
return { done: false };
|
|
133
|
+
}
|
|
134
|
+
if (key === "space") {
|
|
135
|
+
if (checked.has(cursor))
|
|
136
|
+
checked.delete(cursor);
|
|
137
|
+
else
|
|
138
|
+
checked.add(cursor);
|
|
139
|
+
return { done: false };
|
|
140
|
+
}
|
|
141
|
+
if (key === "a") {
|
|
142
|
+
if (checked.size === indices.length)
|
|
143
|
+
checked.clear();
|
|
144
|
+
else
|
|
145
|
+
for (const i of indices)
|
|
146
|
+
checked.add(i);
|
|
147
|
+
return { done: false };
|
|
148
|
+
}
|
|
149
|
+
if (key === "enter") {
|
|
150
|
+
const result = [];
|
|
151
|
+
for (const i of [...checked].sort((a, b) => a - b)) {
|
|
152
|
+
const item = this.items[i];
|
|
153
|
+
if (!isSeparator(item))
|
|
154
|
+
result.push(item.value);
|
|
155
|
+
}
|
|
156
|
+
return { done: true, result };
|
|
157
|
+
}
|
|
158
|
+
if (key === "ctrl-c")
|
|
159
|
+
return { done: true, result: null };
|
|
160
|
+
return { done: false };
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
if (raw === null)
|
|
164
|
+
throw new PromptAbortedError("Prompt aborted by user");
|
|
165
|
+
return raw;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../src/prompts/checkbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type BaseConfig, BasePrompt } from "./base.js";
|
|
2
|
+
export interface ConfirmConfig extends BaseConfig<boolean> {
|
|
3
|
+
default?: boolean | null;
|
|
4
|
+
}
|
|
5
|
+
export declare class ConfirmPrompt extends BasePrompt<boolean> {
|
|
6
|
+
constructor(config: ConfirmConfig);
|
|
7
|
+
get promptType(): string;
|
|
8
|
+
protected validateAnswer(value: unknown): boolean;
|
|
9
|
+
protected formatAnswer(value: boolean): string;
|
|
10
|
+
protected executeTerminal(): Promise<boolean>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=confirm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirm.d.ts","sourceRoot":"","sources":["../../src/prompts/confirm.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,WAAW,aAAc,SAAQ,UAAU,CAAC,OAAO,CAAC;IACxD,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC1B;AAED,qBAAa,aAAc,SAAQ,UAAU,CAAC,OAAO,CAAC;gBACxC,MAAM,EAAE,aAAa;IAIjC,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAWjD,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;cAI9B,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;CAYpD"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { formatError, formatQuestion, readLine } from "../terminal.js";
|
|
2
|
+
import { BasePrompt } from "./base.js";
|
|
3
|
+
export class ConfirmPrompt extends BasePrompt {
|
|
4
|
+
constructor(config) {
|
|
5
|
+
super({ ...config, default: config.default ?? false });
|
|
6
|
+
}
|
|
7
|
+
get promptType() {
|
|
8
|
+
return "confirm";
|
|
9
|
+
}
|
|
10
|
+
validateAnswer(value) {
|
|
11
|
+
if (typeof value === "boolean")
|
|
12
|
+
return value;
|
|
13
|
+
if (typeof value === "string") {
|
|
14
|
+
return ["y", "yes", "true", "1"].includes(value.toLowerCase());
|
|
15
|
+
}
|
|
16
|
+
if (typeof value === "number") {
|
|
17
|
+
return Number.isFinite(value) && value !== 0;
|
|
18
|
+
}
|
|
19
|
+
return Boolean(value);
|
|
20
|
+
}
|
|
21
|
+
formatAnswer(value) {
|
|
22
|
+
return value ? "Yes" : "No";
|
|
23
|
+
}
|
|
24
|
+
async executeTerminal() {
|
|
25
|
+
const hint = this.defaultValue ? "Y/n" : "y/N";
|
|
26
|
+
const prompt = formatQuestion(this.message, ` (${hint})`);
|
|
27
|
+
while (true) {
|
|
28
|
+
const result = await readLine(prompt);
|
|
29
|
+
if (!result)
|
|
30
|
+
return this.defaultValue ?? false;
|
|
31
|
+
const lower = result.trim().toLowerCase();
|
|
32
|
+
if (lower === "y" || lower === "yes")
|
|
33
|
+
return true;
|
|
34
|
+
if (lower === "n" || lower === "no")
|
|
35
|
+
return false;
|
|
36
|
+
process.stderr.write(`${formatError("Invalid input. Please enter y or n.")}\n`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=confirm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../src/prompts/confirm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAmB,UAAU,EAAE,MAAM,WAAW,CAAC;AAMxD,MAAM,OAAO,aAAc,SAAQ,UAAmB;IACpD,YAAY,MAAqB;QAC/B,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,cAAc,CAAC,KAAc;QACrC,IAAI,OAAO,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAES,YAAY,CAAC,KAAc;QACnC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9B,CAAC;IAES,KAAK,CAAC,eAAe;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/C,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC;QAC1D,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;YAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC1C,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,KAAK;gBAAE,OAAO,IAAI,CAAC;YAClD,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,qCAAqC,CAAC,IAAI,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type BaseConfig, BasePrompt } from "./base.js";
|
|
2
|
+
export interface EditorConfig extends BaseConfig<string> {
|
|
3
|
+
postfix?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare class EditorPrompt extends BasePrompt<string> {
|
|
6
|
+
private postfix;
|
|
7
|
+
constructor(config: EditorConfig);
|
|
8
|
+
get promptType(): string;
|
|
9
|
+
protected validateAnswer(value: unknown): string;
|
|
10
|
+
protected toAgentDict(): Record<string, unknown>;
|
|
11
|
+
protected executeTerminal(): Promise<string>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../src/prompts/editor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,WAAW,YAAa,SAAQ,UAAU,CAAC,MAAM,CAAC;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,YAAa,SAAQ,UAAU,CAAC,MAAM,CAAC;IAClD,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,YAAY;IAKhC,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;cAK7B,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;cAIzC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;CA8BnD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { mkdtempSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { EditorError } from "../errors.js";
|
|
6
|
+
import { BasePrompt } from "./base.js";
|
|
7
|
+
export class EditorPrompt extends BasePrompt {
|
|
8
|
+
postfix;
|
|
9
|
+
constructor(config) {
|
|
10
|
+
super(config);
|
|
11
|
+
this.postfix = config.postfix ?? ".txt";
|
|
12
|
+
}
|
|
13
|
+
get promptType() {
|
|
14
|
+
return "editor";
|
|
15
|
+
}
|
|
16
|
+
validateAnswer(value) {
|
|
17
|
+
if (value == null)
|
|
18
|
+
return this.defaultValue ?? "";
|
|
19
|
+
return String(value);
|
|
20
|
+
}
|
|
21
|
+
toAgentDict() {
|
|
22
|
+
return { ...super.toAgentDict(), postfix: this.postfix };
|
|
23
|
+
}
|
|
24
|
+
async executeTerminal() {
|
|
25
|
+
const editor = process.env.VISUAL || process.env.EDITOR || "vi";
|
|
26
|
+
const dir = mkdtempSync(join(tmpdir(), "inquirer-"));
|
|
27
|
+
const tmpPath = join(dir, `edit${this.postfix}`);
|
|
28
|
+
try {
|
|
29
|
+
writeFileSync(tmpPath, this.defaultValue ?? "");
|
|
30
|
+
const parts = editor.split(/\s+/);
|
|
31
|
+
const cmd = parts[0];
|
|
32
|
+
const args = [...parts.slice(1), tmpPath];
|
|
33
|
+
const result = spawnSync(cmd, args, {
|
|
34
|
+
stdio: "inherit",
|
|
35
|
+
});
|
|
36
|
+
if (result.error) {
|
|
37
|
+
throw new EditorError(`Editor not found: ${JSON.stringify(editor)}. Set $VISUAL or $EDITOR.`);
|
|
38
|
+
}
|
|
39
|
+
if (result.status !== 0) {
|
|
40
|
+
throw new EditorError(`Editor exited with code ${result.status}`);
|
|
41
|
+
}
|
|
42
|
+
return readFileSync(tmpPath, "utf8");
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
try {
|
|
46
|
+
unlinkSync(tmpPath);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// ignore cleanup errors
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/prompts/editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAmB,UAAU,EAAE,MAAM,WAAW,CAAC;AAMxD,MAAM,OAAO,YAAa,SAAQ,UAAkB;IAC1C,OAAO,CAAS;IAExB,YAAY,MAAoB;QAC9B,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;IAC1C,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,QAAQ,CAAC;IAClB,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,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IAC3D,CAAC;IAES,KAAK,CAAC,eAAe;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC;QAChE,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAEjD,IAAI,CAAC;YACH,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;YAChD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YACtB,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE;gBAClC,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,IAAI,WAAW,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;YAChG,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,WAAW,CAAC,2BAA2B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACpE,CAAC;YAED,OAAO,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBACH,UAAU,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type BaseConfig, BasePrompt } from "./base.js";
|
|
2
|
+
export interface ExpandChoice {
|
|
3
|
+
key: string;
|
|
4
|
+
name: string;
|
|
5
|
+
value: unknown;
|
|
6
|
+
}
|
|
7
|
+
export interface ExpandConfig extends BaseConfig<unknown> {
|
|
8
|
+
choices: (ExpandChoice | Record<string, unknown>)[];
|
|
9
|
+
}
|
|
10
|
+
export declare class ExpandPrompt extends BasePrompt<unknown> {
|
|
11
|
+
private expandChoices;
|
|
12
|
+
constructor(config: ExpandConfig);
|
|
13
|
+
get promptType(): string;
|
|
14
|
+
protected validateAnswer(value: unknown): unknown;
|
|
15
|
+
protected formatAnswer(value: unknown): string;
|
|
16
|
+
protected toAgentDict(): Record<string, unknown>;
|
|
17
|
+
protected executeTerminal(): Promise<unknown>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=expand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expand.d.ts","sourceRoot":"","sources":["../../src/prompts/expand.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,YAAa,SAAQ,UAAU,CAAC,OAAO,CAAC;IACvD,OAAO,EAAE,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;CACrD;AAaD,qBAAa,YAAa,SAAQ,UAAU,CAAC,OAAO,CAAC;IACnD,OAAO,CAAC,aAAa,CAAiB;gBAE1B,MAAM,EAAE,YAAY;IAShC,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;cAOzC,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;CAkBpD"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { InvalidChoiceError, ValidationError } from "../errors.js";
|
|
2
|
+
import { formatError, formatQuestion, readLine } from "../terminal.js";
|
|
3
|
+
import { BasePrompt } from "./base.js";
|
|
4
|
+
function parseExpandChoice(raw) {
|
|
5
|
+
if ("key" in raw && typeof raw.key === "string") {
|
|
6
|
+
return {
|
|
7
|
+
key: raw.key.toLowerCase(),
|
|
8
|
+
name: raw.name ?? raw.key,
|
|
9
|
+
value: raw.value ?? raw.key,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
throw new InvalidChoiceError("ExpandChoice must have a 'key' field");
|
|
13
|
+
}
|
|
14
|
+
export class ExpandPrompt extends BasePrompt {
|
|
15
|
+
expandChoices;
|
|
16
|
+
constructor(config) {
|
|
17
|
+
super(config);
|
|
18
|
+
if (!config.choices.length)
|
|
19
|
+
throw new InvalidChoiceError("choices cannot be empty");
|
|
20
|
+
this.expandChoices = config.choices.map(parseExpandChoice);
|
|
21
|
+
const keys = this.expandChoices.map((c) => c.key);
|
|
22
|
+
const dupes = keys.filter((k, i) => keys.indexOf(k) !== i);
|
|
23
|
+
if (dupes.length)
|
|
24
|
+
throw new InvalidChoiceError(`Duplicate expand keys: ${[...new Set(dupes)]}`);
|
|
25
|
+
}
|
|
26
|
+
get promptType() {
|
|
27
|
+
return "expand";
|
|
28
|
+
}
|
|
29
|
+
validateAnswer(value) {
|
|
30
|
+
if (typeof value === "string") {
|
|
31
|
+
const lower = value.toLowerCase();
|
|
32
|
+
for (const c of this.expandChoices) {
|
|
33
|
+
if (lower === c.key || value === c.value || value === c.name)
|
|
34
|
+
return c.value;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
throw new ValidationError(`Invalid choice: ${JSON.stringify(value)}`);
|
|
38
|
+
}
|
|
39
|
+
formatAnswer(value) {
|
|
40
|
+
for (const c of this.expandChoices) {
|
|
41
|
+
if (c.value === value)
|
|
42
|
+
return c.name;
|
|
43
|
+
}
|
|
44
|
+
return String(value);
|
|
45
|
+
}
|
|
46
|
+
toAgentDict() {
|
|
47
|
+
return {
|
|
48
|
+
...super.toAgentDict(),
|
|
49
|
+
choices: this.expandChoices.map((c) => ({ key: c.key, name: c.name, value: c.value })),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
async executeTerminal() {
|
|
53
|
+
const keys = this.expandChoices.map((c) => c.key).join("/");
|
|
54
|
+
const prompt = formatQuestion(this.message, ` (${keys})`);
|
|
55
|
+
while (true) {
|
|
56
|
+
const raw = await readLine(prompt);
|
|
57
|
+
const lower = raw.trim().toLowerCase();
|
|
58
|
+
if (lower === "h" || lower === "help") {
|
|
59
|
+
for (const c of this.expandChoices) {
|
|
60
|
+
process.stderr.write(` ${c.key}) ${c.name}\n`);
|
|
61
|
+
}
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
for (const c of this.expandChoices) {
|
|
65
|
+
if (lower === c.key)
|
|
66
|
+
return c.value;
|
|
67
|
+
}
|
|
68
|
+
process.stderr.write(`${formatError("Invalid key. Press h for help.")}\n`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=expand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expand.js","sourceRoot":"","sources":["../../src/prompts/expand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type BaseConfig, BasePrompt } from "./base.js";
|
|
2
|
+
export interface NumberConfig extends BaseConfig<number> {
|
|
3
|
+
min?: number | null;
|
|
4
|
+
max?: number | null;
|
|
5
|
+
floatAllowed?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare class NumberPrompt extends BasePrompt<number> {
|
|
8
|
+
private min;
|
|
9
|
+
private max;
|
|
10
|
+
private floatAllowed;
|
|
11
|
+
constructor(config: NumberConfig);
|
|
12
|
+
get promptType(): string;
|
|
13
|
+
protected validateAnswer(value: unknown): number;
|
|
14
|
+
protected toAgentDict(): Record<string, unknown>;
|
|
15
|
+
protected executeTerminal(): Promise<number>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=number.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/prompts/number.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,WAAW,YAAa,SAAQ,UAAU,CAAC,MAAM,CAAC;IACtD,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,YAAa,SAAQ,UAAU,CAAC,MAAM,CAAC;IAClD,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,YAAY,CAAU;gBAElB,MAAM,EAAE,YAAY;IAOhC,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;cAqB7B,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;cASzC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;CAiBnD"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { ValidationError } from "../errors.js";
|
|
2
|
+
import { formatError, formatQuestion, readLine } from "../terminal.js";
|
|
3
|
+
import { BasePrompt } from "./base.js";
|
|
4
|
+
export class NumberPrompt extends BasePrompt {
|
|
5
|
+
min;
|
|
6
|
+
max;
|
|
7
|
+
floatAllowed;
|
|
8
|
+
constructor(config) {
|
|
9
|
+
super(config);
|
|
10
|
+
this.min = config.min ?? null;
|
|
11
|
+
this.max = config.max ?? null;
|
|
12
|
+
this.floatAllowed = config.floatAllowed ?? true;
|
|
13
|
+
}
|
|
14
|
+
get promptType() {
|
|
15
|
+
return "number";
|
|
16
|
+
}
|
|
17
|
+
validateAnswer(value) {
|
|
18
|
+
if (value == null && this.defaultValue != null)
|
|
19
|
+
return this.defaultValue;
|
|
20
|
+
let num;
|
|
21
|
+
if (typeof value === "number" && typeof value !== "boolean") {
|
|
22
|
+
num = value;
|
|
23
|
+
}
|
|
24
|
+
else if (typeof value === "string") {
|
|
25
|
+
num = value.includes(".") ? parseFloat(value) : parseInt(value, 10);
|
|
26
|
+
if (Number.isNaN(num))
|
|
27
|
+
throw new ValidationError(`Not a valid number: ${JSON.stringify(value)}`);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
throw new ValidationError(`Expected a number, got ${typeof value}`);
|
|
31
|
+
}
|
|
32
|
+
if (!Number.isFinite(num))
|
|
33
|
+
throw new ValidationError(`Not a valid number: ${JSON.stringify(value)}`);
|
|
34
|
+
if (!this.floatAllowed && num !== Math.trunc(num)) {
|
|
35
|
+
throw new ValidationError("Decimal numbers are not allowed");
|
|
36
|
+
}
|
|
37
|
+
if (!this.floatAllowed)
|
|
38
|
+
num = Math.trunc(num);
|
|
39
|
+
if (this.min != null && num < this.min)
|
|
40
|
+
throw new ValidationError(`Must be at least ${this.min}`);
|
|
41
|
+
if (this.max != null && num > this.max)
|
|
42
|
+
throw new ValidationError(`Must be at most ${this.max}`);
|
|
43
|
+
return num;
|
|
44
|
+
}
|
|
45
|
+
toAgentDict() {
|
|
46
|
+
return {
|
|
47
|
+
...super.toAgentDict(),
|
|
48
|
+
min: this.min,
|
|
49
|
+
max: this.max,
|
|
50
|
+
float_allowed: this.floatAllowed,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
async executeTerminal() {
|
|
54
|
+
const suffix = this.defaultValue != null ? ` (${this.defaultValue})` : "";
|
|
55
|
+
const prompt = formatQuestion(this.message, suffix);
|
|
56
|
+
while (true) {
|
|
57
|
+
const raw = await readLine(prompt);
|
|
58
|
+
if (!raw && this.defaultValue != null)
|
|
59
|
+
return this.defaultValue;
|
|
60
|
+
try {
|
|
61
|
+
return this.validateAnswer(raw);
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
if (e instanceof ValidationError) {
|
|
65
|
+
process.stderr.write(`${formatError(e.message)}\n`);
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
throw e;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=number.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/prompts/number.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type BaseConfig, BasePrompt } from "./base.js";
|
|
2
|
+
export interface PasswordConfig extends BaseConfig<string> {
|
|
3
|
+
mask?: string | null;
|
|
4
|
+
}
|
|
5
|
+
export declare class PasswordPrompt extends BasePrompt<string> {
|
|
6
|
+
private mask;
|
|
7
|
+
constructor(config: PasswordConfig);
|
|
8
|
+
get promptType(): string;
|
|
9
|
+
protected validateAnswer(value: unknown): string;
|
|
10
|
+
protected formatAnswer(value: string): string;
|
|
11
|
+
protected toAgentDict(): Record<string, unknown>;
|
|
12
|
+
protected executeTerminal(): Promise<string>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=password.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../src/prompts/password.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,WAAW,cAAe,SAAQ,UAAU,CAAC,MAAM,CAAC;IACxD,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,qBAAa,cAAe,SAAQ,UAAU,CAAC,MAAM,CAAC;IACpD,OAAO,CAAC,IAAI,CAAgB;gBAEhB,MAAM,EAAE,cAAc;IAKlC,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAKhD,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;cAK1B,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;cAIzC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;CAInD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { formatQuestion, readPassword } from "../terminal.js";
|
|
2
|
+
import { BasePrompt } from "./base.js";
|
|
3
|
+
export class PasswordPrompt extends BasePrompt {
|
|
4
|
+
mask;
|
|
5
|
+
constructor(config) {
|
|
6
|
+
super(config);
|
|
7
|
+
this.mask = config.mask === undefined ? "*" : config.mask;
|
|
8
|
+
}
|
|
9
|
+
get promptType() {
|
|
10
|
+
return "password";
|
|
11
|
+
}
|
|
12
|
+
validateAnswer(value) {
|
|
13
|
+
if (value == null)
|
|
14
|
+
return this.defaultValue ?? "";
|
|
15
|
+
return String(value);
|
|
16
|
+
}
|
|
17
|
+
formatAnswer(value) {
|
|
18
|
+
if (this.mask)
|
|
19
|
+
return this.mask.repeat(value.length);
|
|
20
|
+
return "****";
|
|
21
|
+
}
|
|
22
|
+
toAgentDict() {
|
|
23
|
+
return { ...super.toAgentDict(), mask: this.mask };
|
|
24
|
+
}
|
|
25
|
+
async executeTerminal() {
|
|
26
|
+
const prompt = formatQuestion(this.message);
|
|
27
|
+
return readPassword(prompt, this.mask);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=password.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"password.js","sourceRoot":"","sources":["../../src/prompts/password.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAmB,UAAU,EAAE,MAAM,WAAW,CAAC;AAMxD,MAAM,OAAO,cAAe,SAAQ,UAAkB;IAC5C,IAAI,CAAgB;IAE5B,YAAY,MAAsB;QAChC,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5D,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,UAAU,CAAC;IACpB,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,YAAY,CAAC,KAAa;QAClC,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEkB,WAAW;QAC5B,OAAO,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACrD,CAAC;IAES,KAAK,CAAC,eAAe;QAC7B,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,OAAO,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type BaseConfig, BasePrompt } from "./base.js";
|
|
2
|
+
export interface PathConfig extends BaseConfig<string> {
|
|
3
|
+
onlyDirectories?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare class PathPrompt extends BasePrompt<string> {
|
|
6
|
+
private onlyDirectories;
|
|
7
|
+
constructor(config: PathConfig);
|
|
8
|
+
get promptType(): string;
|
|
9
|
+
protected validateAnswer(value: unknown): string;
|
|
10
|
+
protected toAgentDict(): Record<string, unknown>;
|
|
11
|
+
protected executeTerminal(): Promise<string>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/prompts/path.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,WAAW,UAAW,SAAQ,UAAU,CAAC,MAAM,CAAC;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,UAAW,SAAQ,UAAU,CAAC,MAAM,CAAC;IAChD,OAAO,CAAC,eAAe,CAAU;gBAErB,MAAM,EAAE,UAAU;IAK9B,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;cAK7B,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;cAIzC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;CAOnD"}
|