@youdie006/prodex 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -3
- package/dist/chatgpt-browser.d.ts +6 -3
- package/dist/chatgpt-browser.js +131 -19
- package/dist/chatgpt-browser.js.map +1 -1
- package/dist/cli-args.d.ts +52 -0
- package/dist/cli-args.js +332 -0
- package/dist/cli-args.js.map +1 -0
- package/dist/cli-help.d.ts +20 -0
- package/dist/cli-help.js +259 -0
- package/dist/cli-help.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +88 -592
- package/dist/cli.js.map +1 -1
- package/dist/store.d.ts +5 -1
- package/dist/store.js +48 -13
- package/dist/store.js.map +1 -1
- package/package.json +1 -1
package/dist/cli-args.js
ADDED
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
import { realpathSync, statSync } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { ReceiptKindSchema, TaskStatusSchema } from "./schema.js";
|
|
4
|
+
export const TOP_LEVEL_COMMANDS = [
|
|
5
|
+
"help",
|
|
6
|
+
"version",
|
|
7
|
+
"init",
|
|
8
|
+
"setup",
|
|
9
|
+
"start",
|
|
10
|
+
"status",
|
|
11
|
+
"tunnel",
|
|
12
|
+
"doctor",
|
|
13
|
+
"onboard",
|
|
14
|
+
"project",
|
|
15
|
+
"claude",
|
|
16
|
+
"tasks",
|
|
17
|
+
"results",
|
|
18
|
+
"receipts",
|
|
19
|
+
"sessions",
|
|
20
|
+
"pro",
|
|
21
|
+
"release",
|
|
22
|
+
"mcp"
|
|
23
|
+
];
|
|
24
|
+
export function isHelpSubcommand(value) {
|
|
25
|
+
return value === "help" || value === "--help" || value === "-h";
|
|
26
|
+
}
|
|
27
|
+
export function findHelpFlagIndexBeforePromptDelimiter(args) {
|
|
28
|
+
const delimiterIndex = args.indexOf("--");
|
|
29
|
+
const limit = delimiterIndex === -1 ? args.length : delimiterIndex;
|
|
30
|
+
return args.findIndex((arg, index) => index < limit && isHelpSubcommand(arg));
|
|
31
|
+
}
|
|
32
|
+
export function assertHelpRequestArgs(args, command, options) {
|
|
33
|
+
const delimiterIndex = args.indexOf("--");
|
|
34
|
+
const commandArgs = delimiterIndex === -1 ? args : args.slice(0, delimiterIndex);
|
|
35
|
+
const valueFlagSet = new Set(options.valueFlags ?? []);
|
|
36
|
+
const booleanFlagSet = new Set(options.booleanFlags ?? []);
|
|
37
|
+
const maxPositionals = options.maxPositionals ?? 0;
|
|
38
|
+
let positionals = 0;
|
|
39
|
+
for (let index = 0; index < commandArgs.length; index += 1) {
|
|
40
|
+
const arg = commandArgs[index];
|
|
41
|
+
if (isHelpSubcommand(arg))
|
|
42
|
+
continue;
|
|
43
|
+
if (valueFlagSet.has(arg)) {
|
|
44
|
+
const next = commandArgs[index + 1];
|
|
45
|
+
if (next && !isHelpSubcommand(next)) {
|
|
46
|
+
readFlagValue(commandArgs, index, arg);
|
|
47
|
+
index += 1;
|
|
48
|
+
}
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (booleanFlagSet.has(arg))
|
|
52
|
+
continue;
|
|
53
|
+
if (arg.startsWith("-")) {
|
|
54
|
+
throw unknownOptionError(arg, command, [...valueFlagSet, ...booleanFlagSet]);
|
|
55
|
+
}
|
|
56
|
+
if (positionals >= maxPositionals) {
|
|
57
|
+
throw new Error(`Unexpected argument for ${command}: ${arg}`);
|
|
58
|
+
}
|
|
59
|
+
positionals += 1;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export function unknownSubcommandError(command, subcommand, expected) {
|
|
63
|
+
const suggestion = closestSuggestion(subcommand, expected);
|
|
64
|
+
const suggestionText = suggestion ? ` Did you mean \`prodex ${command} ${suggestion}\`?` : "";
|
|
65
|
+
return new Error(`Unknown ${command} subcommand: ${subcommand}.${suggestionText} Expected one of: ${expected.join(", ")}. Run \`prodex ${command} --help\`.`);
|
|
66
|
+
}
|
|
67
|
+
export function unknownTopLevelCommandError(command) {
|
|
68
|
+
const suggestion = closestSuggestion(command, TOP_LEVEL_COMMANDS);
|
|
69
|
+
const suggestionText = suggestion ? ` Did you mean \`prodex ${suggestion}\`?` : "";
|
|
70
|
+
return new Error(`Unknown command: ${command}.${suggestionText} Run \`prodex help\`.`);
|
|
71
|
+
}
|
|
72
|
+
export function unknownOptionError(option, command, candidates) {
|
|
73
|
+
const suggestion = closestSuggestion(option, candidates);
|
|
74
|
+
const suggestionText = suggestion ? `. Did you mean \`${suggestion}\`?` : "";
|
|
75
|
+
const context = command ? ` for ${command}` : "";
|
|
76
|
+
return new Error(`Unknown option${context}: ${option}${suggestionText}`);
|
|
77
|
+
}
|
|
78
|
+
export function closestSuggestion(value, candidates) {
|
|
79
|
+
let best;
|
|
80
|
+
for (const candidate of candidates) {
|
|
81
|
+
const distance = editDistance(value, candidate);
|
|
82
|
+
const prefixMatch = isUsefulPrefixSuggestion(value, candidate);
|
|
83
|
+
if (!best || (prefixMatch && !best.prefixMatch) || (prefixMatch === best.prefixMatch && distance < best.distance)) {
|
|
84
|
+
best = { command: candidate, distance, prefixMatch };
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return best && (best.prefixMatch || best.distance <= 2) ? best.command : undefined;
|
|
88
|
+
}
|
|
89
|
+
export function isUsefulPrefixSuggestion(value, candidate) {
|
|
90
|
+
return value.length >= 5 && candidate.startsWith(value);
|
|
91
|
+
}
|
|
92
|
+
export function editDistance(left, right) {
|
|
93
|
+
const previous = Array.from({ length: right.length + 1 }, (_, index) => index);
|
|
94
|
+
const current = Array.from({ length: right.length + 1 }, () => 0);
|
|
95
|
+
for (let leftIndex = 1; leftIndex <= left.length; leftIndex += 1) {
|
|
96
|
+
current[0] = leftIndex;
|
|
97
|
+
for (let rightIndex = 1; rightIndex <= right.length; rightIndex += 1) {
|
|
98
|
+
const substitutionCost = left[leftIndex - 1] === right[rightIndex - 1] ? 0 : 1;
|
|
99
|
+
current[rightIndex] = Math.min(previous[rightIndex] + 1, current[rightIndex - 1] + 1, previous[rightIndex - 1] + substitutionCost);
|
|
100
|
+
}
|
|
101
|
+
previous.splice(0, previous.length, ...current);
|
|
102
|
+
}
|
|
103
|
+
return previous[right.length];
|
|
104
|
+
}
|
|
105
|
+
export function shellQuote(value) {
|
|
106
|
+
return /^[A-Za-z0-9_./:@=-]+$/.test(value) ? value : `'${value.replaceAll("'", "'\\''")}'`;
|
|
107
|
+
}
|
|
108
|
+
export function formatCliCommand(sourceCli) {
|
|
109
|
+
return sourceCli ? `node ${shellQuote(sourceCli)}` : "prodex";
|
|
110
|
+
}
|
|
111
|
+
export function formatSourceCliOption(sourceCli) {
|
|
112
|
+
return sourceCli ? ` --source-cli ${shellQuote(sourceCli)}` : "";
|
|
113
|
+
}
|
|
114
|
+
export function readFlag(args, flag) {
|
|
115
|
+
const index = args.indexOf(flag);
|
|
116
|
+
if (index === -1)
|
|
117
|
+
return undefined;
|
|
118
|
+
return readFlagValue(args, index, flag);
|
|
119
|
+
}
|
|
120
|
+
export function readPositiveNumberFlag(args, flag) {
|
|
121
|
+
const value = readNumberFlag(args, flag);
|
|
122
|
+
if (value === undefined)
|
|
123
|
+
return undefined;
|
|
124
|
+
if (value <= 0)
|
|
125
|
+
throw new Error(`${flag} must be greater than 0`);
|
|
126
|
+
return value;
|
|
127
|
+
}
|
|
128
|
+
export function readPortFlag(args, flag) {
|
|
129
|
+
const value = readNumberFlag(args, flag);
|
|
130
|
+
if (value === undefined)
|
|
131
|
+
return undefined;
|
|
132
|
+
if (!Number.isInteger(value) || value < 1 || value > 65535) {
|
|
133
|
+
throw new Error(`${flag} must be an integer from 1 to 65535`);
|
|
134
|
+
}
|
|
135
|
+
return value;
|
|
136
|
+
}
|
|
137
|
+
export function readRepeatedFlag(args, flag) {
|
|
138
|
+
const values = [];
|
|
139
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
140
|
+
if (args[index] === flag) {
|
|
141
|
+
values.push(readFlagValue(args, index, flag));
|
|
142
|
+
index += 1;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return values;
|
|
146
|
+
}
|
|
147
|
+
export function resolveCwdFlag(defaultCwd, args) {
|
|
148
|
+
const cwd = readFlag(args, "--cwd");
|
|
149
|
+
if (!cwd)
|
|
150
|
+
return defaultCwd;
|
|
151
|
+
return resolveExistingDirectoryFlag(defaultCwd, cwd, "--cwd");
|
|
152
|
+
}
|
|
153
|
+
export function resolveOptionalFileFlag(defaultCwd, args, flag) {
|
|
154
|
+
const value = readFlag(args, flag);
|
|
155
|
+
return value ? resolveExistingFileFlag(defaultCwd, value, flag) : undefined;
|
|
156
|
+
}
|
|
157
|
+
export function resolveExistingPathFlag(defaultCwd, value, flag) {
|
|
158
|
+
const resolved = path.resolve(defaultCwd, value);
|
|
159
|
+
try {
|
|
160
|
+
return realpathSync(resolved);
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
throw new Error(`${flag} does not exist or is not accessible: ${resolved}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
export function resolveExistingFileFlag(defaultCwd, value, flag) {
|
|
167
|
+
const resolved = resolveExistingPathFlag(defaultCwd, value, flag);
|
|
168
|
+
if (!statSync(resolved).isFile()) {
|
|
169
|
+
throw new Error(`${flag} must be a file: ${resolved}`);
|
|
170
|
+
}
|
|
171
|
+
return resolved;
|
|
172
|
+
}
|
|
173
|
+
export function resolveExistingDirectoryFlag(defaultCwd, value, flag) {
|
|
174
|
+
const resolved = resolveExistingPathFlag(defaultCwd, value, flag);
|
|
175
|
+
if (!statSync(resolved).isDirectory()) {
|
|
176
|
+
throw new Error(`${flag} must be a directory: ${resolved}`);
|
|
177
|
+
}
|
|
178
|
+
return resolved;
|
|
179
|
+
}
|
|
180
|
+
export function assertOnlyOptions(args, command, valueFlags, booleanFlags = []) {
|
|
181
|
+
const valueFlagSet = new Set(valueFlags);
|
|
182
|
+
const booleanFlagSet = new Set(booleanFlags);
|
|
183
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
184
|
+
const arg = args[index];
|
|
185
|
+
if (valueFlagSet.has(arg)) {
|
|
186
|
+
readFlagValue(args, index, arg);
|
|
187
|
+
index += 1;
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
if (booleanFlagSet.has(arg))
|
|
191
|
+
continue;
|
|
192
|
+
if (arg.startsWith("-")) {
|
|
193
|
+
throw unknownOptionError(arg, command, [...valueFlagSet, ...booleanFlagSet]);
|
|
194
|
+
}
|
|
195
|
+
throw new Error(`Unexpected argument for ${command}: ${arg}`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
export function readPositionalsWithOptions(args, command, maxPositionals, valueFlags, booleanFlags = []) {
|
|
199
|
+
const valueFlagSet = new Set(valueFlags);
|
|
200
|
+
const booleanFlagSet = new Set(booleanFlags);
|
|
201
|
+
const positionals = [];
|
|
202
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
203
|
+
const arg = args[index];
|
|
204
|
+
if (valueFlagSet.has(arg)) {
|
|
205
|
+
readFlagValue(args, index, arg);
|
|
206
|
+
index += 1;
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
if (booleanFlagSet.has(arg))
|
|
210
|
+
continue;
|
|
211
|
+
if (arg.startsWith("-")) {
|
|
212
|
+
throw unknownOptionError(arg, command, [...valueFlagSet, ...booleanFlagSet]);
|
|
213
|
+
}
|
|
214
|
+
if (positionals.length >= maxPositionals) {
|
|
215
|
+
throw new Error(`Unexpected argument for ${command}: ${arg}`);
|
|
216
|
+
}
|
|
217
|
+
positionals.push(arg);
|
|
218
|
+
}
|
|
219
|
+
return positionals;
|
|
220
|
+
}
|
|
221
|
+
export function assertNoExtraArgs(args, command, maxPositionals) {
|
|
222
|
+
for (const arg of args.slice(maxPositionals)) {
|
|
223
|
+
if (arg.startsWith("-")) {
|
|
224
|
+
throw new Error(`Unknown option for ${command}: ${arg}`);
|
|
225
|
+
}
|
|
226
|
+
throw new Error(`Unexpected argument for ${command}: ${arg}`);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
export const ASK_PRO_BOOLEAN_FLAGS = new Set(["--dry-run", "--send", "--confirm-target"]);
|
|
230
|
+
export const ASK_PRO_SELECTION_VALUE_FLAGS = ["--project", "--project-new", "--model", "--pro-mode", "--effort"];
|
|
231
|
+
export const ASK_PRO_VALUE_FLAGS = new Set([
|
|
232
|
+
"--cwd",
|
|
233
|
+
"--file",
|
|
234
|
+
"--port",
|
|
235
|
+
"--timeout-ms",
|
|
236
|
+
"--target-url",
|
|
237
|
+
"--source-cli",
|
|
238
|
+
...ASK_PRO_SELECTION_VALUE_FLAGS
|
|
239
|
+
]);
|
|
240
|
+
export const ASK_PRO_PREVIEW_VALUE_FLAGS = new Set([
|
|
241
|
+
"--cwd",
|
|
242
|
+
"--file",
|
|
243
|
+
"--port",
|
|
244
|
+
"--timeout-ms",
|
|
245
|
+
"--target-url",
|
|
246
|
+
...ASK_PRO_SELECTION_VALUE_FLAGS
|
|
247
|
+
]);
|
|
248
|
+
// Setup persists defaults for a subset of the per-ask selection flags. A new
|
|
249
|
+
// project is created per-ask, never as a standing default, so --project-new is
|
|
250
|
+
// intentionally excluded here.
|
|
251
|
+
export const ASK_PRO_SELECTION_DEFAULT_FLAGS = ["--model", "--pro-mode", "--effort", "--project"];
|
|
252
|
+
export const ASK_PRO_SELECTION_CLEAR_FLAGS = ["--clear-model", "--clear-pro-mode", "--clear-effort", "--clear-project"];
|
|
253
|
+
export function parseAskProArgs(args, valueFlags = ASK_PRO_VALUE_FLAGS) {
|
|
254
|
+
const delimiterIndex = args.indexOf("--");
|
|
255
|
+
const optionArgs = delimiterIndex === -1 ? args : args.slice(0, delimiterIndex);
|
|
256
|
+
const promptTail = delimiterIndex === -1 ? [] : args.slice(delimiterIndex + 1);
|
|
257
|
+
const positionalPromptParts = [];
|
|
258
|
+
for (let index = 0; index < optionArgs.length; index += 1) {
|
|
259
|
+
const arg = optionArgs[index];
|
|
260
|
+
if (!arg.startsWith("--")) {
|
|
261
|
+
if (arg.startsWith("-"))
|
|
262
|
+
throw unknownOptionError(arg, undefined, [...valueFlags, ...ASK_PRO_BOOLEAN_FLAGS]);
|
|
263
|
+
positionalPromptParts.push(arg);
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
if (ASK_PRO_BOOLEAN_FLAGS.has(arg))
|
|
267
|
+
continue;
|
|
268
|
+
if (valueFlags.has(arg)) {
|
|
269
|
+
readFlagValue(optionArgs, index, arg);
|
|
270
|
+
index += 1;
|
|
271
|
+
continue;
|
|
272
|
+
}
|
|
273
|
+
throw unknownOptionError(arg, undefined, [...valueFlags, ...ASK_PRO_BOOLEAN_FLAGS]);
|
|
274
|
+
}
|
|
275
|
+
return { optionArgs, promptParts: [...positionalPromptParts, ...promptTail] };
|
|
276
|
+
}
|
|
277
|
+
export function askProOptionArgs(args) {
|
|
278
|
+
const delimiterIndex = args.indexOf("--");
|
|
279
|
+
return delimiterIndex === -1 ? args : args.slice(0, delimiterIndex);
|
|
280
|
+
}
|
|
281
|
+
export function hasAskProMode(args) {
|
|
282
|
+
const optionArgs = askProOptionArgs(args);
|
|
283
|
+
return optionArgs.includes("--send") || optionArgs.includes("--dry-run");
|
|
284
|
+
}
|
|
285
|
+
export function hasAskProSendMode(args) {
|
|
286
|
+
return askProOptionArgs(args).includes("--send");
|
|
287
|
+
}
|
|
288
|
+
export function hasAskProDryRunMode(args) {
|
|
289
|
+
return askProOptionArgs(args).includes("--dry-run");
|
|
290
|
+
}
|
|
291
|
+
export function readFlagValue(args, index, flag) {
|
|
292
|
+
const value = args[index + 1];
|
|
293
|
+
if (!value || value.startsWith("--"))
|
|
294
|
+
throw new Error(`${flag} requires a value`);
|
|
295
|
+
return value;
|
|
296
|
+
}
|
|
297
|
+
export function readSessionStatusFlag(args) {
|
|
298
|
+
const value = readFlag(args, "--status");
|
|
299
|
+
if (value === undefined)
|
|
300
|
+
return undefined;
|
|
301
|
+
if (value === "preview" || value === "running" || value === "done" || value === "blocked")
|
|
302
|
+
return value;
|
|
303
|
+
throw new Error("--status must be one of preview, running, done, blocked");
|
|
304
|
+
}
|
|
305
|
+
export const TASK_STATUSES = TaskStatusSchema.options;
|
|
306
|
+
export function readTaskStatusFlag(args) {
|
|
307
|
+
const value = readFlag(args, "--status");
|
|
308
|
+
if (value === undefined)
|
|
309
|
+
return undefined;
|
|
310
|
+
if (TaskStatusSchema.safeParse(value).success)
|
|
311
|
+
return value;
|
|
312
|
+
throw new Error(`--status must be one of ${TASK_STATUSES.join(", ")}`);
|
|
313
|
+
}
|
|
314
|
+
export function readReceiptKindFlag(args) {
|
|
315
|
+
const value = readFlag(args, "--kind");
|
|
316
|
+
if (value === undefined)
|
|
317
|
+
return undefined;
|
|
318
|
+
if (ReceiptKindSchema.safeParse(value).success)
|
|
319
|
+
return value;
|
|
320
|
+
throw new Error(`--kind must be one of ${RECEIPT_KINDS.join(", ")}`);
|
|
321
|
+
}
|
|
322
|
+
export function readNumberFlag(args, flag) {
|
|
323
|
+
const raw = readFlag(args, flag);
|
|
324
|
+
if (raw === undefined)
|
|
325
|
+
return undefined;
|
|
326
|
+
const value = Number(raw);
|
|
327
|
+
if (!Number.isFinite(value))
|
|
328
|
+
throw new Error(`${flag} requires a finite number`);
|
|
329
|
+
return value;
|
|
330
|
+
}
|
|
331
|
+
export const RECEIPT_KINDS = ReceiptKindSchema.options;
|
|
332
|
+
//# sourceMappingURL=cli-args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-args.js","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const CLI_VERSION: string;
|
|
2
|
+
export declare function printHelp(stdout: (line: string) => void): void;
|
|
3
|
+
export declare function printInitHelp(stdout: (line: string) => void): void;
|
|
4
|
+
export declare function printSetupHelp(stdout: (line: string) => void): void;
|
|
5
|
+
export declare function printStartHelp(stdout: (line: string) => void): void;
|
|
6
|
+
export declare function printStatusHelp(stdout: (line: string) => void): void;
|
|
7
|
+
export declare function printTunnelHelp(stdout: (line: string) => void): void;
|
|
8
|
+
export declare function printTunnelUrlHelp(stdout: (line: string) => void): void;
|
|
9
|
+
export declare function printDoctorHelp(stdout: (line: string) => void): void;
|
|
10
|
+
export declare function printOnboardHelp(stdout: (line: string) => void): void;
|
|
11
|
+
export declare function printMcpHelp(stdout: (line: string) => void): void;
|
|
12
|
+
export declare function printReleaseHelp(stdout: (line: string) => void): void;
|
|
13
|
+
export declare function printProHelp(stdout: (line: string) => void): void;
|
|
14
|
+
export declare function printProjectHelp(stdout: (line: string) => void): void;
|
|
15
|
+
export declare function printClaudeHelp(stdout: (line: string) => void): void;
|
|
16
|
+
export declare function printTasksHelp(stdout: (line: string) => void): void;
|
|
17
|
+
export declare function printResultsHelp(stdout: (line: string) => void): void;
|
|
18
|
+
export declare function printReceiptsHelp(stdout: (line: string) => void): void;
|
|
19
|
+
export declare function printSessionsHelp(stdout: (line: string) => void): void;
|
|
20
|
+
export declare function printProBrowserHelp(stdout: (line: string) => void, sourceCli?: string): void;
|
package/dist/cli-help.js
ADDED
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import { formatCliCommand, formatSourceCliOption } from "./cli-args.js";
|
|
3
|
+
const requirePackageJson = createRequire(import.meta.url);
|
|
4
|
+
const packageJson = requirePackageJson("../package.json");
|
|
5
|
+
export const CLI_VERSION = packageJson.version ?? "0.0.0";
|
|
6
|
+
export function printHelp(stdout) {
|
|
7
|
+
stdout(`prodex v${CLI_VERSION}
|
|
8
|
+
|
|
9
|
+
Commands:
|
|
10
|
+
prodex --version
|
|
11
|
+
prodex init [--cwd /absolute/path/to/repo]
|
|
12
|
+
prodex doctor [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js]
|
|
13
|
+
prodex setup [--cwd /absolute/path/to/repo] [--host 127.0.0.1] [--port 8787] [--token-ttl-hours <hours>] [--model Pro] [--pro-mode 기본|확장] [--effort 즉시|중간|높음|"매우 높음"] [--project "name"] [--clear-model|--clear-pro-mode|--clear-effort|--clear-project] [--interactive]
|
|
14
|
+
prodex start [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js]
|
|
15
|
+
prodex status [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js] [--show-token] [--url-only] [--unsafe-show-non-expiring-token]
|
|
16
|
+
prodex tunnel url [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js] --public-url https://... [--show-token] [--url-only]
|
|
17
|
+
prodex release status [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js]
|
|
18
|
+
prodex release pack [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js] --pack-destination /absolute/path [--keep-workdir]
|
|
19
|
+
prodex onboard [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js]
|
|
20
|
+
prodex project prompt [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js]
|
|
21
|
+
prodex claude prompt [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js]
|
|
22
|
+
prodex claude config [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js]
|
|
23
|
+
prodex pro ask [--dry-run] [--cwd /absolute/path/to/repo] [--file path] "prompt" # dry-run preview
|
|
24
|
+
prodex pro browser login [--cwd /absolute/path/to/repo] [--dry-run] [--source-cli /absolute/path/to/dist/cli.js] [--profile-dir path] [--port 9333] [--url https://chatgpt.com/...] [--launch-timeout-ms 5000] # preview/open visible browser login
|
|
25
|
+
prodex pro browser help [--source-cli /absolute/path/to/dist/cli.js]
|
|
26
|
+
prodex pro browser check [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo] [--port 9333] [--timeout-ms 1500]
|
|
27
|
+
prodex pro browser smoke [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo] [--port 9333] [--timeout-ms 90000]
|
|
28
|
+
prodex pro browser models [--source-cli /absolute/path/to/dist/cli.js] [--port 9333] [--timeout-ms 15000] # read-only list of model menu options
|
|
29
|
+
prodex pro browser ask [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo] [--port 9333] [--timeout-ms 90000] [--target-url url --confirm-target] [--file path] [--model Pro] [--pro-mode 기본|확장] [--effort 즉시|중간|높음|"매우 높음"] [--project "name" | --project-new "name"] "prompt" # explicit visible-browser send
|
|
30
|
+
prodex pro latest [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo]
|
|
31
|
+
prodex pro list [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo]
|
|
32
|
+
prodex pro show <task-id|latest> [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo]
|
|
33
|
+
prodex tasks create [--cwd /absolute/path/to/repo] --title "Title" --prompt "Prompt"
|
|
34
|
+
prodex tasks list [--status new|claimed|done|blocked] [--cwd /absolute/path/to/repo]
|
|
35
|
+
prodex tasks show <task-id|latest> [--cwd /absolute/path/to/repo]
|
|
36
|
+
prodex tasks claim <task-id> [--cwd /absolute/path/to/repo] [--by codex]
|
|
37
|
+
prodex tasks complete <task-id> [--cwd /absolute/path/to/repo] --summary "Summary" [--command "npm test"] [--artifact .bridge/artifacts/results/name.md=text]
|
|
38
|
+
prodex tasks block <task-id> [--cwd /absolute/path/to/repo] --summary "Summary" [--code code] [--next-step "Next step"] [--retryable]
|
|
39
|
+
prodex results show <task-id|latest> [--cwd /absolute/path/to/repo]
|
|
40
|
+
prodex results artifact <task-id|latest> [artifact-path] [--cwd /absolute/path/to/repo]
|
|
41
|
+
prodex results reseal <task-id|latest> --confirm-current-result [--cwd /absolute/path/to/repo]
|
|
42
|
+
prodex receipts list [--kind kind] [--task-id task-id] [--cwd /absolute/path/to/repo]
|
|
43
|
+
prodex receipts show <receipt-id|latest> [--cwd /absolute/path/to/repo]
|
|
44
|
+
prodex receipts rotate-key [--cwd /absolute/path/to/repo]
|
|
45
|
+
prodex sessions list [--status preview|running|done|blocked] [--cwd /absolute/path/to/repo]
|
|
46
|
+
prodex sessions show <session-id|latest> [--cwd /absolute/path/to/repo]
|
|
47
|
+
prodex mcp [--cwd /absolute/path/to/repo]`);
|
|
48
|
+
}
|
|
49
|
+
export function printInitHelp(stdout) {
|
|
50
|
+
stdout(`prodex init
|
|
51
|
+
|
|
52
|
+
Commands:
|
|
53
|
+
prodex init [--cwd /absolute/path/to/repo]
|
|
54
|
+
|
|
55
|
+
Initialize the local .bridge receipt ledger and bridge .gitignore entries.`);
|
|
56
|
+
}
|
|
57
|
+
export function printSetupHelp(stdout) {
|
|
58
|
+
stdout(`prodex setup
|
|
59
|
+
|
|
60
|
+
Commands:
|
|
61
|
+
prodex setup [--cwd /absolute/path/to/repo] [--host 127.0.0.1] [--port 8787] [--token-ttl-hours <hours>] [--model Pro] [--pro-mode 기본|확장] [--effort 즉시|중간|높음|"매우 높음"] [--project "name"] [--clear-model|--clear-pro-mode|--clear-effort|--clear-project] [--interactive]
|
|
62
|
+
|
|
63
|
+
Save a loopback-only HTTP MCP profile in .bridge/config.local.json. Use --token-ttl-hours before tunnels or ChatGPT Project use.
|
|
64
|
+
|
|
65
|
+
Optional visible-browser send defaults (applied by \`pro browser ask\` when the matching per-ask flag is omitted):
|
|
66
|
+
--model Composer model to pick by its exact menu label (verified: Pro)
|
|
67
|
+
--pro-mode Pro sub-mode: 기본 (standard) or 확장 (extended)
|
|
68
|
+
--effort Reasoning effort: 즉시 / 중간 / 높음 / 매우 높음 (English aliases: instant/medium/high/max); picking one deselects Pro
|
|
69
|
+
--project Sidebar project to enter before sending
|
|
70
|
+
Clear a saved default with --clear-model / --clear-pro-mode / --clear-effort / --clear-project.
|
|
71
|
+
--pro-mode and --effort are different model axes and cannot be combined. View saved defaults with \`prodex status\`.`);
|
|
72
|
+
}
|
|
73
|
+
export function printStartHelp(stdout) {
|
|
74
|
+
stdout(`prodex start
|
|
75
|
+
|
|
76
|
+
Commands:
|
|
77
|
+
prodex start [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js]
|
|
78
|
+
|
|
79
|
+
Start the local loopback HTTP MCP server from the saved setup profile.`);
|
|
80
|
+
}
|
|
81
|
+
export function printStatusHelp(stdout) {
|
|
82
|
+
stdout(`prodex status
|
|
83
|
+
|
|
84
|
+
Commands:
|
|
85
|
+
prodex status [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js] [--show-token] [--url-only] [--unsafe-show-non-expiring-token]
|
|
86
|
+
|
|
87
|
+
Show the saved local MCP URL with tokens redacted by default.`);
|
|
88
|
+
}
|
|
89
|
+
export function printTunnelHelp(stdout) {
|
|
90
|
+
stdout(`prodex tunnel
|
|
91
|
+
|
|
92
|
+
Commands:
|
|
93
|
+
prodex tunnel url [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js] --public-url https://... [--show-token] [--url-only]
|
|
94
|
+
|
|
95
|
+
Format a public tunnel MCP URL from an existing local setup. This command does not create a tunnel.`);
|
|
96
|
+
}
|
|
97
|
+
export function printTunnelUrlHelp(stdout) {
|
|
98
|
+
stdout(`prodex tunnel url
|
|
99
|
+
|
|
100
|
+
Commands:
|
|
101
|
+
prodex tunnel url [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js] --public-url https://... [--show-token] [--url-only]
|
|
102
|
+
|
|
103
|
+
This command does not create a tunnel. It only formats your supplied public URL with the saved short-lived MCP token.`);
|
|
104
|
+
}
|
|
105
|
+
export function printDoctorHelp(stdout) {
|
|
106
|
+
stdout(`prodex doctor
|
|
107
|
+
|
|
108
|
+
Commands:
|
|
109
|
+
prodex doctor [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js]
|
|
110
|
+
|
|
111
|
+
Run local bridge, MCP, write/apply/stage, and HTTP MCP smoke checks without opening ChatGPT.`);
|
|
112
|
+
}
|
|
113
|
+
export function printOnboardHelp(stdout) {
|
|
114
|
+
stdout(`prodex onboard
|
|
115
|
+
|
|
116
|
+
Commands:
|
|
117
|
+
prodex onboard [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js]
|
|
118
|
+
|
|
119
|
+
Print a local-first setup guide for Codex, ChatGPT Projects, Claude, and visible-browser Pro consults.`);
|
|
120
|
+
}
|
|
121
|
+
export function printMcpHelp(stdout) {
|
|
122
|
+
stdout(`prodex mcp
|
|
123
|
+
|
|
124
|
+
Commands:
|
|
125
|
+
prodex mcp [--cwd /absolute/path/to/repo]
|
|
126
|
+
|
|
127
|
+
Run the stdio MCP server for local clients such as Claude. This does not reveal HTTP MCP URL tokens.`);
|
|
128
|
+
}
|
|
129
|
+
export function printReleaseHelp(stdout) {
|
|
130
|
+
stdout(`prodex release
|
|
131
|
+
|
|
132
|
+
Commands:
|
|
133
|
+
prodex release status [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js]
|
|
134
|
+
prodex release pack [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js] --pack-destination /absolute/path [--keep-workdir]
|
|
135
|
+
|
|
136
|
+
Release commands are local checks and package preparation helpers; they do not publish or push.`);
|
|
137
|
+
}
|
|
138
|
+
export function printProHelp(stdout) {
|
|
139
|
+
stdout(`prodex pro
|
|
140
|
+
|
|
141
|
+
Commands:
|
|
142
|
+
prodex pro ask [--dry-run] [--cwd /absolute/path/to/repo] [--file path] "prompt"
|
|
143
|
+
prodex pro browser help [--source-cli /absolute/path/to/dist/cli.js]
|
|
144
|
+
prodex pro browser login [--cwd /absolute/path/to/repo] [--dry-run] [--source-cli /absolute/path/to/dist/cli.js] [--launch-timeout-ms 5000]
|
|
145
|
+
prodex pro browser check [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo]
|
|
146
|
+
prodex pro browser smoke [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo]
|
|
147
|
+
prodex pro browser models [--source-cli /absolute/path/to/dist/cli.js]
|
|
148
|
+
prodex pro browser ask [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo] [--target-url url --confirm-target] [--file path] [--model Pro] [--pro-mode 기본|확장] [--effort 즉시|중간|높음|"매우 높음"] [--project "name" | --project-new "name"] "prompt"
|
|
149
|
+
prodex pro latest [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo]
|
|
150
|
+
prodex pro list [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo]
|
|
151
|
+
prodex pro show <task-id|latest> [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo]
|
|
152
|
+
|
|
153
|
+
Use \`prodex pro ask\` for dry-run/manual previews.
|
|
154
|
+
Use \`prodex pro browser ask\` only when you want an explicit visible-browser send.
|
|
155
|
+
Model/project selection (visible-browser send):
|
|
156
|
+
--model "label" Pick the composer model by its exact menu label (verified: Pro). Submenu models (e.g. GPT-5.5 variants) are rejected for now.
|
|
157
|
+
--pro-mode 기본 | 확장 Pro sub-mode (only when the model is Pro); 확장 raises the default timeout to 300000 ms
|
|
158
|
+
--effort 즉시|중간|높음|매우 높음 Reasoning effort (aliases: instant/medium/high/max); picking one deselects Pro
|
|
159
|
+
--project "name" Enter an existing sidebar project first (cannot combine with --target-url)
|
|
160
|
+
Labels are matched in both the Korean and English (US) UI; run \`prodex pro browser models\` to list what your account shows.
|
|
161
|
+
Persist defaults with \`prodex setup --model/--pro-mode/--effort/--project\`; clear them with setup --clear-model/--clear-pro-mode/--clear-effort/--clear-project.
|
|
162
|
+
(Creating a new project from the CLI is planned; for now create it in ChatGPT and pass --project.)`);
|
|
163
|
+
}
|
|
164
|
+
export function printProjectHelp(stdout) {
|
|
165
|
+
stdout(`prodex project
|
|
166
|
+
|
|
167
|
+
Commands:
|
|
168
|
+
prodex project prompt [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js]
|
|
169
|
+
|
|
170
|
+
Print a ChatGPT Project MCP verification prompt. The prompt asks for read/task handoff verification only.`);
|
|
171
|
+
}
|
|
172
|
+
export function printClaudeHelp(stdout) {
|
|
173
|
+
stdout(`prodex claude
|
|
174
|
+
|
|
175
|
+
Commands:
|
|
176
|
+
prodex claude prompt [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js]
|
|
177
|
+
prodex claude config [--cwd /absolute/path/to/repo] [--source-cli /absolute/path/to/dist/cli.js]
|
|
178
|
+
|
|
179
|
+
Print Claude MCP setup and verification helpers. These commands do not start MCP or reveal HTTP tokens.`);
|
|
180
|
+
}
|
|
181
|
+
export function printTasksHelp(stdout) {
|
|
182
|
+
stdout(`prodex tasks
|
|
183
|
+
|
|
184
|
+
Commands:
|
|
185
|
+
prodex tasks create [--cwd /absolute/path/to/repo] --title "Title" --prompt "Prompt"
|
|
186
|
+
prodex tasks list [--status new|claimed|done|blocked] [--cwd /absolute/path/to/repo]
|
|
187
|
+
prodex tasks show <task-id|latest> [--cwd /absolute/path/to/repo]
|
|
188
|
+
prodex tasks claim <task-id> [--cwd /absolute/path/to/repo] [--by codex]
|
|
189
|
+
prodex tasks complete <task-id> [--cwd /absolute/path/to/repo] --summary "Summary" [--command "npm test"] [--artifact .bridge/artifacts/results/name.md=text]
|
|
190
|
+
prodex tasks block <task-id> [--cwd /absolute/path/to/repo] --summary "Summary" [--code code] [--next-step "Next step"] [--retryable]`);
|
|
191
|
+
}
|
|
192
|
+
export function printResultsHelp(stdout) {
|
|
193
|
+
stdout(`prodex results
|
|
194
|
+
|
|
195
|
+
Commands:
|
|
196
|
+
prodex results show <task-id|latest> [--cwd /absolute/path/to/repo]
|
|
197
|
+
prodex results artifact <task-id|latest> [artifact-path] [--cwd /absolute/path/to/repo]
|
|
198
|
+
prodex results reseal <task-id|latest> --confirm-current-result [--cwd /absolute/path/to/repo]`);
|
|
199
|
+
}
|
|
200
|
+
export function printReceiptsHelp(stdout) {
|
|
201
|
+
stdout(`prodex receipts
|
|
202
|
+
|
|
203
|
+
Commands:
|
|
204
|
+
prodex receipts list [--kind kind] [--task-id task-id] [--cwd /absolute/path/to/repo]
|
|
205
|
+
prodex receipts show <receipt-id|latest> [--cwd /absolute/path/to/repo]
|
|
206
|
+
prodex receipts rotate-key [--cwd /absolute/path/to/repo]
|
|
207
|
+
|
|
208
|
+
rotate-key generates a new signing key for receipt integrity seals and keeps the
|
|
209
|
+
previous keys in .bridge/receipt-key.local so receipts signed before the
|
|
210
|
+
rotation still verify.`);
|
|
211
|
+
}
|
|
212
|
+
export function printSessionsHelp(stdout) {
|
|
213
|
+
stdout(`prodex sessions
|
|
214
|
+
|
|
215
|
+
Commands:
|
|
216
|
+
prodex sessions list [--status preview|running|done|blocked] [--cwd /absolute/path/to/repo]
|
|
217
|
+
prodex sessions show <session-id|latest> [--cwd /absolute/path/to/repo]`);
|
|
218
|
+
}
|
|
219
|
+
export function printProBrowserHelp(stdout, sourceCli) {
|
|
220
|
+
const cli = formatCliCommand(sourceCli);
|
|
221
|
+
const sourceCliOption = formatSourceCliOption(sourceCli);
|
|
222
|
+
const loginUsage = sourceCli
|
|
223
|
+
? `${cli} pro browser login${sourceCliOption} [--cwd /absolute/path/to/repo] [--dry-run] [--profile-dir path] [--port 9333] [--url https://chatgpt.com/...] [--launch-timeout-ms 5000]`
|
|
224
|
+
: "prodex pro browser login [--cwd /absolute/path/to/repo] [--dry-run] [--source-cli /absolute/path/to/dist/cli.js] [--profile-dir path] [--port 9333] [--url https://chatgpt.com/...] [--launch-timeout-ms 5000]";
|
|
225
|
+
const checkUsage = sourceCli
|
|
226
|
+
? `${cli} pro browser check${sourceCliOption} [--cwd /absolute/path/to/repo] [--port 9333] [--timeout-ms 1500]`
|
|
227
|
+
: "prodex pro browser check [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo] [--port 9333] [--timeout-ms 1500]";
|
|
228
|
+
const smokeUsage = sourceCli
|
|
229
|
+
? `${cli} pro browser smoke${sourceCliOption} [--cwd /absolute/path/to/repo] [--port 9333] [--timeout-ms 90000]`
|
|
230
|
+
: "prodex pro browser smoke [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo] [--port 9333] [--timeout-ms 90000]";
|
|
231
|
+
const selectionUsage = '[--model Pro] [--pro-mode 기본|확장] [--effort 즉시|중간|높음|"매우 높음"] [--project "name" | --project-new "name"]';
|
|
232
|
+
const askUsage = sourceCli
|
|
233
|
+
? `${cli} pro browser ask${sourceCliOption} [--cwd /absolute/path/to/repo] [--port 9333] [--timeout-ms 90000] [--target-url url --confirm-target] [--file path] ${selectionUsage} "prompt"`
|
|
234
|
+
: `prodex pro browser ask [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo] [--port 9333] [--timeout-ms 90000] [--target-url url --confirm-target] [--file path] ${selectionUsage} "prompt"`;
|
|
235
|
+
const modelsUsage = sourceCli
|
|
236
|
+
? `${cli} pro browser models${sourceCliOption} [--port 9333] [--timeout-ms 15000]`
|
|
237
|
+
: "prodex pro browser models [--source-cli /absolute/path/to/dist/cli.js] [--port 9333] [--timeout-ms 15000]";
|
|
238
|
+
stdout(`${cli} pro browser
|
|
239
|
+
|
|
240
|
+
Commands:
|
|
241
|
+
${loginUsage}
|
|
242
|
+
${checkUsage}
|
|
243
|
+
${smokeUsage}
|
|
244
|
+
${modelsUsage}
|
|
245
|
+
${askUsage}
|
|
246
|
+
|
|
247
|
+
Visible-browser sends require a manual browser session and stop on login, captcha, Cloudflare, permission, rate-limit, or usage-limit blockers.
|
|
248
|
+
Model/project selection (ask):
|
|
249
|
+
--model Composer model to pick by its exact menu label (verified: Pro). Models whose menu entry opens a submenu of variants are rejected with a clear error for now.
|
|
250
|
+
--pro-mode Pro sub-mode: 기본 (standard) or 확장 (extended), used when the model is Pro. 확장 raises the default --timeout-ms to 300000.
|
|
251
|
+
--effort Reasoning effort: 즉시 / 중간 / 높음 / 매우 높음 (aliases: instant/medium/high/max). Picking an effort switches the composer to the standard reasoning model, deselecting Pro.
|
|
252
|
+
--project Enter an existing sidebar project before sending. Cannot be combined with --target-url.
|
|
253
|
+
--pro-mode and --effort cannot be combined. Labels are matched in both the Korean and English (US) ChatGPT UI (e.g. 높음/High, Pro 확장/Pro Extended).
|
|
254
|
+
Run \`${cli} pro browser models${sourceCliOption}\` to list the labels your account currently shows.
|
|
255
|
+
Persist defaults with \`${cli} setup${sourceCliOption}\`; per-ask flags override them.
|
|
256
|
+
Use \`${cli} pro ask\` for dry-run/manual previews.
|
|
257
|
+
\`${cli} pro browser ask${sourceCliOption}\` always attempts an explicit visible-browser send.`);
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=cli-help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-help.js","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"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"}
|