ptbk 0.119.0-21 → 0.119.0-26
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 +16 -9
- package/dist/browser/browser.d.ts +50 -36
- package/dist/browser/browser.js +162 -118
- package/dist/browser/browser.js.map +1 -1
- package/dist/browser/fleet.d.ts +59 -0
- package/dist/browser/fleet.js +148 -0
- package/dist/browser/fleet.js.map +1 -0
- package/dist/browser/recording.js +2 -2
- package/dist/browser/recording.js.map +1 -1
- package/dist/chats/conversation.d.ts +1 -1
- package/dist/chats/conversation.js +8 -6
- package/dist/chats/conversation.js.map +1 -1
- package/dist/chats/local.js +5 -5
- package/dist/chats/local.js.map +1 -1
- package/dist/cli/commands/add.js +1 -1
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/boilerplates.js +1 -1
- package/dist/cli/commands/boilerplates.js.map +1 -1
- package/dist/cli/commands/find.js +1 -1
- package/dist/cli/commands/find.js.map +1 -1
- package/dist/cli/commands/fix.js +9 -4
- package/dist/cli/commands/fix.js.map +1 -1
- package/dist/cli/commands/init.d.ts +5 -0
- package/dist/cli/commands/init.js +279 -118
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/migrate.js +1 -1
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/ping.js +20 -12
- package/dist/cli/commands/ping.js.map +1 -1
- package/dist/cli/commands/plan.js +20 -12
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/recover.js +1 -1
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/restart.js +6 -5
- package/dist/cli/commands/restart.js.map +1 -1
- package/dist/cli/commands/run.js +26 -15
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/start.js +11 -7
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/tool.d.ts +19 -0
- package/dist/cli/commands/tool.js +320 -0
- package/dist/cli/commands/tool.js.map +1 -0
- package/dist/cli/commands/verify.js +1 -1
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/common.d.ts +7 -1
- package/dist/cli/common.js +37 -20
- package/dist/cli/common.js.map +1 -1
- package/dist/cli/compatibility.d.ts +8 -0
- package/dist/cli/compatibility.js +32 -0
- package/dist/cli/compatibility.js.map +1 -0
- package/dist/cli/parser.js +7 -3
- package/dist/cli/parser.js.map +1 -1
- package/dist/cli/registry.js +182 -7
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli/service-view.js +1 -1
- package/dist/cli/service-view.js.map +1 -1
- package/dist/cli/sources.js +2 -0
- package/dist/cli/sources.js.map +1 -1
- package/dist/cli/spec.js +8 -6
- package/dist/cli/spec.js.map +1 -1
- package/dist/common/naming.d.ts +53 -0
- package/dist/common/naming.js +90 -0
- package/dist/common/naming.js.map +1 -0
- package/dist/engine/agenda.d.ts +70 -9
- package/dist/engine/agenda.js +294 -61
- package/dist/engine/agenda.js.map +1 -1
- package/dist/engine/executor.d.ts +5 -0
- package/dist/engine/executor.js +24 -11
- package/dist/engine/executor.js.map +1 -1
- package/dist/engine/harnesses.d.ts +82 -18
- package/dist/engine/harnesses.js +191 -39
- package/dist/engine/harnesses.js.map +1 -1
- package/dist/engine/preview.js +2 -2
- package/dist/engine/preview.js.map +1 -1
- package/dist/engine/routing.d.ts +10 -0
- package/dist/engine/routing.js +67 -28
- package/dist/engine/routing.js.map +1 -1
- package/dist/engine/snapshot.d.ts +107 -7
- package/dist/engine/state.d.ts +4 -2
- package/dist/engine/state.js.map +1 -1
- package/dist/engine/sync.d.ts +96 -0
- package/dist/engine/sync.js +199 -0
- package/dist/engine/sync.js.map +1 -0
- package/dist/engine/team.d.ts +1 -0
- package/dist/engine/team.js +12 -8
- package/dist/engine/team.js.map +1 -1
- package/dist/expert/_main.md +96 -67
- package/dist/expert/agents/_index.md +10 -7
- package/dist/expert/agents/core-agents.md +4 -2
- package/dist/expert/agents/fixer.md +15 -12
- package/dist/expert/cli/acceptance.md +96 -78
- package/dist/expert/cli/api.md +26 -14
- package/dist/expert/cli/autonomous-operation.md +17 -19
- package/dist/expert/cli/browser.md +24 -24
- package/dist/expert/cli/checks.md +18 -10
- package/dist/expert/cli/cli.md +48 -41
- package/dist/expert/cli/configuration-migrations.md +43 -0
- package/dist/expert/cli/configuration.md +24 -14
- package/dist/expert/cli/controls.md +23 -11
- package/dist/expert/cli/dashboard-details.md +28 -10
- package/dist/expert/cli/dashboard-layout.md +15 -15
- package/dist/expert/cli/dashboard.md +8 -10
- package/dist/expert/cli/environment.md +33 -0
- package/dist/expert/cli/execution.md +10 -8
- package/dist/expert/cli/git-persistence.md +27 -21
- package/dist/expert/cli/git-preflight.md +8 -4
- package/dist/expert/cli/git-synchronization.md +32 -6
- package/dist/expert/cli/harness-plugins.md +12 -12
- package/dist/expert/cli/harnesses.md +22 -16
- package/dist/expert/cli/initialization-ui.md +14 -14
- package/dist/expert/cli/initialization.md +31 -21
- package/dist/expert/cli/installation.md +6 -0
- package/dist/expert/cli/isolation.md +5 -3
- package/dist/expert/cli/releasing.md +17 -3
- package/dist/expert/cli/retries.md +10 -8
- package/dist/expert/cli/run.md +7 -5
- package/dist/expert/cli/start.md +21 -15
- package/dist/expert/cli/status-view.md +15 -17
- package/dist/expert/cli/synchronization-setup.md +24 -0
- package/dist/expert/cli/terminal.md +14 -16
- package/dist/expert/cli/tool-management.md +60 -0
- package/dist/expert/cli/tool-runtime.md +35 -0
- package/dist/expert/cli/tools-migration.md +50 -0
- package/dist/expert/cli/tools.md +73 -0
- package/dist/expert/cli/trace-configuration.md +9 -11
- package/dist/expert/cli/updates.md +7 -7
- package/dist/expert/cli/windows-installer.md +67 -0
- package/dist/expert/cli/workspace.md +2 -0
- package/dist/expert/coding-standards/_index.md +11 -0
- package/dist/expert/coding-standards/naming.md +30 -0
- package/dist/expert/coding-standards/shared-logic.md +27 -0
- package/dist/expert/concepts/automatic-repair.md +33 -0
- package/dist/expert/concepts/engine-and-project.md +7 -5
- package/dist/expert/dictionary.md +18 -18
- package/dist/harness/plugins/claude-code/index.js +4 -2
- package/dist/harness/plugins/claude-code/index.js.map +1 -1
- package/dist/harness/plugins/cline/index.js +1 -0
- package/dist/harness/plugins/cline/index.js.map +1 -1
- package/dist/harness/plugins/gemini/index.js +2 -0
- package/dist/harness/plugins/gemini/index.js.map +1 -1
- package/dist/harness/plugins/github-copilot/index.js +1 -0
- package/dist/harness/plugins/github-copilot/index.js.map +1 -1
- package/dist/harness/plugins/openai-codex/index.js +13 -9
- package/dist/harness/plugins/openai-codex/index.js.map +1 -1
- package/dist/harness/plugins/opencode/index.js +1 -0
- package/dist/harness/plugins/opencode/index.js.map +1 -1
- package/dist/harness/plugins/qwen-code/index.js +1 -0
- package/dist/harness/plugins/qwen-code/index.js.map +1 -1
- package/dist/harness/types.d.ts +16 -5
- package/dist/project/config.d.ts +135 -48
- package/dist/project/config.js +331 -119
- package/dist/project/config.js.map +1 -1
- package/dist/project/configuration.d.ts +43 -0
- package/dist/project/configuration.js +165 -0
- package/dist/project/configuration.js.map +1 -0
- package/dist/project/defaults.d.ts +4 -2
- package/dist/project/defaults.js +10 -5
- package/dist/project/defaults.js.map +1 -1
- package/dist/project/git.d.ts +28 -0
- package/dist/project/git.js +81 -0
- package/dist/project/git.js.map +1 -1
- package/dist/project/migrations.d.ts +96 -0
- package/dist/project/migrations.js +301 -0
- package/dist/project/migrations.js.map +1 -0
- package/dist/project/publication.d.ts +57 -0
- package/dist/project/publication.js +117 -0
- package/dist/project/publication.js.map +1 -0
- package/dist/project/readiness.d.ts +14 -5
- package/dist/project/readiness.js +23 -22
- package/dist/project/readiness.js.map +1 -1
- package/dist/project/setup.js +2 -0
- package/dist/project/setup.js.map +1 -1
- package/dist/service/actions.d.ts +12 -4
- package/dist/service/actions.js +32 -2
- package/dist/service/actions.js.map +1 -1
- package/dist/service/control.d.ts +1 -1
- package/dist/service/control.js +1 -1
- package/dist/service/host.d.ts +5 -2
- package/dist/service/host.js +26 -16
- package/dist/service/host.js.map +1 -1
- package/dist/service/http.js +7 -2
- package/dist/service/http.js.map +1 -1
- package/dist/service/launcher.d.ts +2 -1
- package/dist/service/launcher.js +1 -0
- package/dist/service/launcher.js.map +1 -1
- package/dist/service/records.d.ts +3 -0
- package/dist/service/records.js +1 -1
- package/dist/service/records.js.map +1 -1
- package/dist/service/spa/app.css +39 -0
- package/dist/service/spa/app.js +242 -39
- package/dist/service/worker.js +1 -0
- package/dist/service/worker.js.map +1 -1
- package/dist/tools/environment.d.ts +122 -0
- package/dist/tools/environment.js +199 -0
- package/dist/tools/environment.js.map +1 -0
- package/dist/tools/model.d.ts +180 -0
- package/dist/tools/model.js +111 -0
- package/dist/tools/model.js.map +1 -0
- package/dist/tools/normalize.d.ts +51 -0
- package/dist/tools/normalize.js +321 -0
- package/dist/tools/normalize.js.map +1 -0
- package/dist/tools/operations.d.ts +198 -0
- package/dist/tools/operations.js +378 -0
- package/dist/tools/operations.js.map +1 -0
- package/dist/tools/readiness.d.ts +72 -0
- package/dist/tools/readiness.js +160 -0
- package/dist/tools/readiness.js.map +1 -0
- package/dist/ui/dashboard.d.ts +3 -0
- package/dist/ui/dashboard.js +173 -2
- package/dist/ui/dashboard.js.map +1 -1
- package/dist/ui/details.d.ts +35 -1
- package/dist/ui/details.js +103 -2
- package/dist/ui/details.js.map +1 -1
- package/dist/ui/secret.d.ts +8 -0
- package/dist/ui/secret.js +41 -0
- package/dist/ui/secret.js.map +1 -0
- package/dist/ui/status-view.d.ts +1 -0
- package/dist/ui/status-view.js +33 -8
- package/dist/ui/status-view.js.map +1 -1
- package/dist/ui/tool-forms.d.ts +24 -0
- package/dist/ui/tool-forms.js +133 -0
- package/dist/ui/tool-forms.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import { EXIT, PtbkError, usageError } from '../../common/errors.js';
|
|
2
|
+
import { loadSettings, setting } from '../../project/config.js';
|
|
3
|
+
import { inspectGit, snapshotDirty } from '../../project/git.js';
|
|
4
|
+
import { SyncCoordinator } from '../../engine/sync.js';
|
|
5
|
+
import { maintainProjectConfiguration } from '../../project/configuration.js';
|
|
6
|
+
import { HarnessPool } from '../../engine/harnesses.js';
|
|
7
|
+
import { lookupService } from '../../service/control.js';
|
|
8
|
+
import { applyToolOperation, commandOf } from '../../tools/operations.js';
|
|
9
|
+
import { inspectInventory } from '../../tools/readiness.js';
|
|
10
|
+
import { confirm } from '../../ui/prompts.js';
|
|
11
|
+
import { readConcealed } from '../../ui/secret.js';
|
|
12
|
+
import { symbols } from '../../ui/terminal.js';
|
|
13
|
+
import { printJson, readStdin, selectedProject } from '../common.js';
|
|
14
|
+
import { flag, option } from '../context.js';
|
|
15
|
+
/**
|
|
16
|
+
* Width of the field labels of `ptbk tool show`.
|
|
17
|
+
*/
|
|
18
|
+
const FIELD_LABEL_WIDTH = 12;
|
|
19
|
+
/**
|
|
20
|
+
* How long a tool operation routed through the running engine may take (it can wait for the Git lock of a commit).
|
|
21
|
+
*/
|
|
22
|
+
const TOOL_OPERATION_TIMEOUT_MS = 120_000;
|
|
23
|
+
/**
|
|
24
|
+
* Reads a secret without echoing it (concealed terminal input) or from piped standard input.
|
|
25
|
+
*/
|
|
26
|
+
async function readSecret(context, variable) {
|
|
27
|
+
if (!process.stdin.isTTY)
|
|
28
|
+
return (await readStdin()).replace(/\r?\n$/, '');
|
|
29
|
+
return await readConcealed(context.terminal, `Value of ${variable}`);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Parses a `true`/`false` option value.
|
|
33
|
+
*/
|
|
34
|
+
function booleanOption(context, name) {
|
|
35
|
+
const value = option(context, name);
|
|
36
|
+
if (value === undefined)
|
|
37
|
+
return undefined;
|
|
38
|
+
if (/^(true|yes|1)$/i.test(value))
|
|
39
|
+
return true;
|
|
40
|
+
if (/^(false|no|0)$/i.test(value))
|
|
41
|
+
return false;
|
|
42
|
+
throw usageError(`--${name} expects true or false (got "${value}").`, context.path.join(' '));
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Field options shared by add and modify (tolerant enum input; canonical values are saved).
|
|
46
|
+
*/
|
|
47
|
+
function fieldOptions(context) {
|
|
48
|
+
const models = option(context, 'models');
|
|
49
|
+
return {
|
|
50
|
+
...(option(context, 'variant') !== undefined ? { variant: option(context, 'variant') } : {}),
|
|
51
|
+
...(option(context, 'description') !== undefined ? { description: option(context, 'description') } : {}),
|
|
52
|
+
...(option(context, 'profile-source') !== undefined ? { profileSource: option(context, 'profile-source') } : {}),
|
|
53
|
+
...(option(context, 'profile-path') !== undefined ? { profilePath: option(context, 'profile-path') } : {}),
|
|
54
|
+
...(booleanOption(context, 'is-headless') !== undefined ? { isHeadless: booleanOption(context, 'is-headless') } : {}),
|
|
55
|
+
...(option(context, 'executable') !== undefined ? { executable: option(context, 'executable') } : {}),
|
|
56
|
+
...(option(context, 'authentication') !== undefined ? { authentication: option(context, 'authentication') } : {}),
|
|
57
|
+
...(option(context, 'api-key-env') !== undefined ? { apiKeyEnv: option(context, 'api-key-env') } : {}),
|
|
58
|
+
...(option(context, 'account-profile') !== undefined ? { accountProfile: option(context, 'account-profile') } : {}),
|
|
59
|
+
...(option(context, 'model') !== undefined ? { model: option(context, 'model') } : {}),
|
|
60
|
+
...(option(context, 'thinking-level') !== undefined ? { thinkingLevel: option(context, 'thinking-level') } : {}),
|
|
61
|
+
...(models !== undefined ? { models: models.split(',').map((model) => model.trim()).filter(Boolean) } : {}),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The operation an invocation describes.
|
|
66
|
+
*/
|
|
67
|
+
function operationOf(context) {
|
|
68
|
+
const sub = context.path[1];
|
|
69
|
+
const [first, second] = context.positionals;
|
|
70
|
+
const name = () => {
|
|
71
|
+
if (!first)
|
|
72
|
+
throw usageError(`ptbk tool ${sub} needs the tool name.`, context.path.join(' '));
|
|
73
|
+
return first;
|
|
74
|
+
};
|
|
75
|
+
switch (sub) {
|
|
76
|
+
case 'add': {
|
|
77
|
+
if (!first)
|
|
78
|
+
throw usageError('ptbk tool add needs the tool type (BROWSER or HARNESS).', context.path.join(' '));
|
|
79
|
+
const variant = option(context, 'variant');
|
|
80
|
+
const toolName = option(context, 'name') ?? second;
|
|
81
|
+
if (!variant)
|
|
82
|
+
throw usageError('ptbk tool add needs --variant (e.g. CHROME or OPENAI_CODEX).', context.path.join(' '));
|
|
83
|
+
if (!toolName)
|
|
84
|
+
throw usageError('ptbk tool add needs --name (a kebab-case identifier such as work-browser).', context.path.join(' '));
|
|
85
|
+
const { variant: _variant, ...fields } = fieldOptions(context);
|
|
86
|
+
void _variant;
|
|
87
|
+
return { kind: 'add', tool: { type: first, variant, name: toolName, ...fields }, before: option(context, 'before'), after: option(context, 'after') };
|
|
88
|
+
}
|
|
89
|
+
case 'modify': {
|
|
90
|
+
const fields = fieldOptions(context);
|
|
91
|
+
const changes = {
|
|
92
|
+
...fields,
|
|
93
|
+
...(flag(context, 'clear-description') ? { description: null } : {}),
|
|
94
|
+
...(flag(context, 'clear-model') ? { model: null } : {}),
|
|
95
|
+
...(flag(context, 'clear-executable') ? { executable: null } : {}),
|
|
96
|
+
};
|
|
97
|
+
const rename = option(context, 'rename');
|
|
98
|
+
if (!Object.keys(changes).length && !rename && !flag(context, 'api-key-stdin'))
|
|
99
|
+
throw usageError('Nothing to modify: give the fields to change (see `ptbk tool modify --help`).', context.path.join(' '));
|
|
100
|
+
return { kind: 'modify', name: name(), changes, rename };
|
|
101
|
+
}
|
|
102
|
+
case 'enable':
|
|
103
|
+
case 'disable':
|
|
104
|
+
return { kind: sub, name: name() };
|
|
105
|
+
case 'remove':
|
|
106
|
+
case 'delete':
|
|
107
|
+
return { kind: 'remove', name: name() };
|
|
108
|
+
case 'move': {
|
|
109
|
+
const before = option(context, 'before');
|
|
110
|
+
const after = option(context, 'after');
|
|
111
|
+
if (!before && !after)
|
|
112
|
+
throw usageError('ptbk tool move needs --before <other> or --after <other>.', context.path.join(' '));
|
|
113
|
+
return { kind: 'move', name: name(), before, after };
|
|
114
|
+
}
|
|
115
|
+
default:
|
|
116
|
+
throw usageError(`Unknown tool subcommand "${sub ?? ''}".`, 'tool');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* The tool inventory: from the running engine (live in-use state) or inspected locally (read-only).
|
|
121
|
+
*/
|
|
122
|
+
async function inventory(context, project) {
|
|
123
|
+
const lookup = await lookupService(project);
|
|
124
|
+
if (lookup.state === 'running' && lookup.engine.compatible) {
|
|
125
|
+
const snapshot = await lookup.client.request('snapshot');
|
|
126
|
+
if (snapshot.tools)
|
|
127
|
+
return { view: snapshot.tools, live: true, current: snapshot.current };
|
|
128
|
+
}
|
|
129
|
+
const settings = await loadSettings(project, { env: context.env });
|
|
130
|
+
return { view: await inspectInventory(project, settings, context.env, new HarnessPool(project.root, settings, context.env)), live: false };
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* One inventory row.
|
|
134
|
+
*/
|
|
135
|
+
function row(context, item) {
|
|
136
|
+
const { style } = context.terminal;
|
|
137
|
+
const marks = symbols(context.terminal.unicode);
|
|
138
|
+
const mark = item.state === 'usable' ? style.success(marks.ok) : item.state === 'disabled' ? style.muted('–') : item.state === 'unknown' ? style.muted('?') : style.warning(marks.warn);
|
|
139
|
+
const flags = [item.isEnabled ? 'enabled' : 'disabled', item.inUse ? 'in use' : '', item.retained ? 'retained by current work' : '', item.overridden ? 'overridden for this invocation' : ''].filter(Boolean).join(', ');
|
|
140
|
+
return `${String(item.order).padStart(2)}. ${mark} ${style.bold(item.name)} ${style.muted(`${item.type} ${item.variant}`)} · ${flags}${item.description ? style.muted(` · ${item.description}`) : ''}\n ${item.summary}${item.nextAction && item.state !== 'usable' ? style.muted(` → ${item.nextAction}`) : ''}`;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* `ptbk tool list`: the ordered inventory with enabled, usable and in-use state (read-only).
|
|
144
|
+
*
|
|
145
|
+
* @private command
|
|
146
|
+
*/
|
|
147
|
+
export async function list(context) {
|
|
148
|
+
const project = await selectedProject(context);
|
|
149
|
+
const { view, live } = await inventory(context, project);
|
|
150
|
+
if (flag(context, 'json')) {
|
|
151
|
+
printJson({ ...view, source: live ? 'running engine' : 'local inspection' });
|
|
152
|
+
return EXIT.success;
|
|
153
|
+
}
|
|
154
|
+
const lines = [`Tools of ${project.root} (${live ? 'live from the running engine' : 'inspected now; no engine is running'}):`];
|
|
155
|
+
if (!view.items.length)
|
|
156
|
+
lines.push(' No tools are configured. Add one with `ptbk tool add BROWSER …` or `ptbk tool add HARNESS …`.');
|
|
157
|
+
for (const item of view.items)
|
|
158
|
+
lines.push(row(context, item));
|
|
159
|
+
for (const problem of view.problems)
|
|
160
|
+
lines.push(context.terminal.style.warning(`Problem: ${problem}`));
|
|
161
|
+
if (view.waiting)
|
|
162
|
+
lines.push(context.terminal.style.warning(`New work waits for tools: ${view.waiting.reason} → ${view.waiting.action}`));
|
|
163
|
+
context.terminal.write(`${lines.join('\n')}\n`);
|
|
164
|
+
return EXIT.success;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* `ptbk tool show <name>`: non-secret configuration and actual diagnostics of one instance (read-only).
|
|
168
|
+
*
|
|
169
|
+
* @private command
|
|
170
|
+
*/
|
|
171
|
+
export async function show(context) {
|
|
172
|
+
const project = await selectedProject(context);
|
|
173
|
+
const name = context.positionals[0];
|
|
174
|
+
if (!name)
|
|
175
|
+
throw usageError('ptbk tool show needs the tool name.', 'tool show');
|
|
176
|
+
const { view, live, current } = await inventory(context, project);
|
|
177
|
+
const item = view.items.find((candidate) => candidate.name === name);
|
|
178
|
+
if (!item)
|
|
179
|
+
throw new PtbkError(`No tool is named "${name}".`, { kind: 'not-found', next: [view.items.length ? `Configured tools: ${view.items.map((candidate) => candidate.name).join(', ')}.` : 'Add one with `ptbk tool add`.'] });
|
|
180
|
+
if (flag(context, 'json')) {
|
|
181
|
+
printJson(item);
|
|
182
|
+
return EXIT.success;
|
|
183
|
+
}
|
|
184
|
+
const lines = [
|
|
185
|
+
`${item.name} — ${item.variantLabel} (${item.type} ${item.variant}), position ${item.order}`,
|
|
186
|
+
...(item.description ? [`Description ${item.description}`] : []),
|
|
187
|
+
`Enabled ${item.isEnabled ? 'yes' : 'no (configuration and credentials are kept)'}`,
|
|
188
|
+
`State ${item.state} — ${item.summary}`,
|
|
189
|
+
...(item.nextAction && item.state !== 'usable' ? [`Next action ${item.nextAction}`] : []),
|
|
190
|
+
`In use ${item.inUse ? `yes${current?.tool === item.name ? ` (by "${current.taskTitle}")` : ''}` : live ? 'no' : 'no engine is running'}${item.retained ? ' · the current work keeps its acquired configuration' : ''}`,
|
|
191
|
+
...Object.entries(item.fields).map(([key, value]) => `${key.padEnd(FIELD_LABEL_WIDTH)} ${value}`),
|
|
192
|
+
];
|
|
193
|
+
context.terminal.write(`${lines.join('\n')}\n`);
|
|
194
|
+
return EXIT.success;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Prints an operation outcome; returns the exit code.
|
|
198
|
+
*/
|
|
199
|
+
function report(context, operation, outcome) {
|
|
200
|
+
const { terminal } = context;
|
|
201
|
+
const marks = symbols(terminal.unicode);
|
|
202
|
+
if (flag(context, 'json')) {
|
|
203
|
+
printJson(outcome);
|
|
204
|
+
return outcome.status === 'needs-acknowledgement' ? EXIT.incomplete : EXIT.success;
|
|
205
|
+
}
|
|
206
|
+
if (outcome.status === 'needs-acknowledgement') {
|
|
207
|
+
const lines = [terminal.style.warning(`${marks.warn} Nothing was changed.`)];
|
|
208
|
+
for (const requirement of outcome.requirements) {
|
|
209
|
+
lines.push(requirement.message);
|
|
210
|
+
lines.push(requirement.kind === 'in-use' ? 'Choose one:' : 'To proceed:');
|
|
211
|
+
requirement.alternatives.forEach((alternative, index) => lines.push(` ${requirement.alternatives.length > 1 ? `${index + 1}. ` : ''}${alternative}`));
|
|
212
|
+
}
|
|
213
|
+
if (outcome.requirements.length > 1)
|
|
214
|
+
lines.push(terminal.style.muted('Both acknowledgements are required: --yes does not imply --force, and --force does not waive the last-tool warning.'));
|
|
215
|
+
terminal.write(`${lines.join('\n')}\n`);
|
|
216
|
+
return EXIT.incomplete;
|
|
217
|
+
}
|
|
218
|
+
const head = outcome.status === 'no-op' ? `${marks.ok} ${outcome.summary}` : `${terminal.style.success(marks.ok)} ${outcome.summary}${outcome.commit ? ` — committed ${outcome.commit.slice(0, 8)}` : ''}`;
|
|
219
|
+
terminal.write(`${[head, ...outcome.notes.map((note) => terminal.style.muted(` ${note}`))].join('\n')}\n`);
|
|
220
|
+
void operation;
|
|
221
|
+
return EXIT.success;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Runs one saved operation: through the running engine (coordinated ownership, live in-use state) or, without one,
|
|
225
|
+
* through the same shared implementation directly. Interactive terminals confirm a required acknowledgement once.
|
|
226
|
+
*/
|
|
227
|
+
async function apply(context) {
|
|
228
|
+
if (context.explicit.has('commit'))
|
|
229
|
+
throw usageError('Saved tool management always commits its own change; --commit/--no-commit do not apply.', context.path.join(' '));
|
|
230
|
+
const project = await selectedProject(context);
|
|
231
|
+
const operation = operationOf(context);
|
|
232
|
+
const request = {
|
|
233
|
+
operation,
|
|
234
|
+
acknowledgements: { force: flag(context, 'force') === true, confirmLastOfType: flag(context, 'yes') === true },
|
|
235
|
+
via: 'cli',
|
|
236
|
+
};
|
|
237
|
+
if (flag(context, 'api-key-stdin')) {
|
|
238
|
+
const variable = option(context, 'api-key-env') ?? (operation.kind === 'modify' ? await existingReference(context, project, operation.name) : undefined);
|
|
239
|
+
if (!variable)
|
|
240
|
+
throw usageError('--api-key-stdin needs --api-key-env NAME (the variable that will hold the key in .env).', context.path.join(' '));
|
|
241
|
+
if (operation.kind === 'modify' && !option(context, 'api-key-env'))
|
|
242
|
+
operation.changes.apiKeyEnv = variable;
|
|
243
|
+
const value = await readSecret(context, variable);
|
|
244
|
+
if (!value)
|
|
245
|
+
throw usageError('No secret was supplied; nothing was changed.', context.path.join(' '));
|
|
246
|
+
request.secret = { variable, value };
|
|
247
|
+
}
|
|
248
|
+
for (let round = 0; round < 3; round++) {
|
|
249
|
+
const outcome = await execute(context, project, request);
|
|
250
|
+
if (outcome.status !== 'needs-acknowledgement' || !context.terminal.interactive || flag(context, 'json'))
|
|
251
|
+
return report(context, operation, outcome);
|
|
252
|
+
// Interactive: the last-of-type warning can be confirmed here; an in-use tool still needs the explicit choice.
|
|
253
|
+
const lastOfType = outcome.requirements.find((requirement) => requirement.kind === 'last-of-type');
|
|
254
|
+
if (!lastOfType || outcome.requirements.some((requirement) => requirement.kind === 'in-use'))
|
|
255
|
+
return report(context, operation, outcome);
|
|
256
|
+
const answer = await confirm(context.terminal, { frame: { title: 'ptbk tool', step: commandOf(operation) }, question: `${lastOfType.message} Continue?`, defaultYes: false });
|
|
257
|
+
if (answer !== true) {
|
|
258
|
+
context.terminal.write('Nothing was changed.\n');
|
|
259
|
+
return EXIT.incomplete;
|
|
260
|
+
}
|
|
261
|
+
request.acknowledgements = { ...request.acknowledgements, confirmLastOfType: true };
|
|
262
|
+
}
|
|
263
|
+
return EXIT.incomplete;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* The current `apiKey` variable of a harness tool.
|
|
267
|
+
*/
|
|
268
|
+
async function existingReference(context, project, name) {
|
|
269
|
+
const settings = await loadSettings(project, { env: context.env });
|
|
270
|
+
const tool = settings.tools.find((candidate) => candidate.name === name);
|
|
271
|
+
return tool?.type === 'HARNESS' ? /env\.([A-Za-z_][A-Za-z0-9_]*)/.exec(tool.apiKey ?? '')?.[1] : undefined;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Executes a request with the right owner.
|
|
275
|
+
*/
|
|
276
|
+
async function execute(context, project, request) {
|
|
277
|
+
const lookup = await lookupService(project);
|
|
278
|
+
if (lookup.state === 'running') {
|
|
279
|
+
if (!lookup.engine.compatible) {
|
|
280
|
+
throw new PtbkError(`The running engine (ptbk ${lookup.engine.version}) cannot apply tool changes from this ptbk.`, { kind: 'unsupported', project: project.root, next: [`Use its own CLI (npx ptbk@${lookup.engine.version} tool …), or restart it with this version.`] });
|
|
281
|
+
}
|
|
282
|
+
return await lookup.client.request('tool-operation', request, TOOL_OPERATION_TIMEOUT_MS);
|
|
283
|
+
}
|
|
284
|
+
if (lookup.state === 'unreachable')
|
|
285
|
+
throw new PtbkError('A ptbk service owns this project but is not reachable.', { kind: 'conflict', project: project.root, reason: lookup.reason, effect: 'Nothing was changed.', next: ['Run `ptbk status`, or stop the service first.'] });
|
|
286
|
+
// Without a running engine the same implementation runs here, after the required committed configuration pass.
|
|
287
|
+
await maintainProjectConfiguration(project, { commit: true, env: context.env });
|
|
288
|
+
const settings = await loadSettings(project, { env: context.env });
|
|
289
|
+
const gitInfo = await inspectGit(project.root);
|
|
290
|
+
let sync;
|
|
291
|
+
if (setting(settings, 'isAutoSync') && gitInfo.state === 'repository') {
|
|
292
|
+
// The same coordinator as the engine's: attempts around this operation's commit, never prerequisites.
|
|
293
|
+
const coordinator = new SyncCoordinator({
|
|
294
|
+
repositoryRoot: () => gitInfo.root,
|
|
295
|
+
env: context.env,
|
|
296
|
+
gitLock: async (action) => await action(),
|
|
297
|
+
enabled: () => true,
|
|
298
|
+
integrationBlocker: async (files) => {
|
|
299
|
+
const dirty = await snapshotDirty(project.root, gitInfo.root);
|
|
300
|
+
const overlap = files.filter((file) => Object.keys(dirty).some((path) => path.endsWith(file)));
|
|
301
|
+
return overlap.length ? `uncommitted local changes of ${overlap.join(', ')} are preserved` : undefined;
|
|
302
|
+
},
|
|
303
|
+
onConflict: async (conflict) => context.terminal.write(`Synchronization conflict with ${conflict.upstream} (${conflict.files.join(', ')}); the local branch is unchanged. The running engine hands it to Fixer.\n`),
|
|
304
|
+
onIntegrated: async () => undefined,
|
|
305
|
+
onChange: () => undefined,
|
|
306
|
+
log: (text, level) => level !== 'info' && context.terminal.write(`${text}\n`),
|
|
307
|
+
});
|
|
308
|
+
sync = { before: async () => void (await coordinator.request('boundary')), after: async () => void (await coordinator.request('post-commit')) };
|
|
309
|
+
}
|
|
310
|
+
return await applyToolOperation(project, request, { env: context.env, sync, timeZone: setting(settings, 'timezone') });
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* `ptbk tool add|modify|enable|disable|remove|delete|move`.
|
|
314
|
+
*
|
|
315
|
+
* @private command
|
|
316
|
+
*/
|
|
317
|
+
export default async function tool(context) {
|
|
318
|
+
return await apply(context);
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/cli/commands/tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,7 +42,7 @@ export default async function verify(context) {
|
|
|
42
42
|
}
|
|
43
43
|
const results = await new StateStore(project.runtime.state).recentResults(500).catch(() => []);
|
|
44
44
|
const gitInfo = await inspectGit(project.root);
|
|
45
|
-
const commit = flag(context, 'commit') ?? setting(settings, 'execution.
|
|
45
|
+
const commit = flag(context, 'commit') ?? setting(settings, 'execution.isCommitEnabled');
|
|
46
46
|
if (commit && gitInfo.state !== 'repository')
|
|
47
47
|
throw new PtbkError('Not a Git working tree.', { kind: 'setup', next: ['Run `ptbk init` or use --no-commit.'] });
|
|
48
48
|
const archived = new Set();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/cli/commands/verify.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/cli/commands/verify.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/common.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type EffectiveSettings } from '../project/config.js';
|
|
1
|
+
import { type BrowserOverrides, type EffectiveSettings } from '../project/config.js';
|
|
2
2
|
import type { Project } from '../project/workspace.js';
|
|
3
3
|
import { type CommandContext } from './context.js';
|
|
4
4
|
/**
|
|
@@ -19,6 +19,12 @@ export declare function tasksOverride(context: CommandContext): string | undefin
|
|
|
19
19
|
* @private CLI helpers
|
|
20
20
|
*/
|
|
21
21
|
export declare function settingOverrides(context: CommandContext): Record<string, unknown>;
|
|
22
|
+
/**
|
|
23
|
+
* Temporary browser overrides of this invocation (`--browser-mode`, `--browser-profile`, targeted by `--browser-tool`).
|
|
24
|
+
*
|
|
25
|
+
* @private CLI helpers
|
|
26
|
+
*/
|
|
27
|
+
export declare function browserOverrides(context: CommandContext): BrowserOverrides | undefined;
|
|
22
28
|
/**
|
|
23
29
|
* Validates option combinations before any work (contradictions are never silently resolved).
|
|
24
30
|
*
|
package/dist/cli/common.js
CHANGED
|
@@ -38,31 +38,30 @@ export function settingOverrides(context) {
|
|
|
38
38
|
set('execution.check', option(context, 'check'));
|
|
39
39
|
set('execution.checkBefore', option(context, 'check-before'));
|
|
40
40
|
set('execution.gitChanges', option(context, 'git-changes'));
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
set('
|
|
44
|
-
set('execution.
|
|
45
|
-
set('execution.
|
|
46
|
-
set('execution.
|
|
47
|
-
set('execution.
|
|
48
|
-
set('execution.
|
|
41
|
+
// --auto-pull/--auto-push are documented compatibility opt-ins to the one combined synchronization policy.
|
|
42
|
+
const autoSync = flag(context, 'auto-sync') ?? (flag(context, 'auto-pull') || flag(context, 'auto-push') ? true : undefined);
|
|
43
|
+
set('isAutoSync', autoSync);
|
|
44
|
+
set('execution.isIsolated', flag(context, 'isolate'));
|
|
45
|
+
set('execution.isLineEndingNormalizationEnabled', flag(context, 'normalize-line-endings'));
|
|
46
|
+
set('execution.isQuestionsEnabled', flag(context, 'questions'));
|
|
47
|
+
set('execution.isCreditFallbackAllowed', flag(context, 'allow-credits'));
|
|
48
|
+
set('execution.isLogPreservationEnabled', flag(context, 'preserve-logs'));
|
|
49
|
+
set('execution.isAutoMigrateEnabled', flag(context, 'auto-migrate'));
|
|
49
50
|
set('execution.waitBetweenPrompts', option(context, 'wait-between-prompts'));
|
|
50
51
|
set('execution.waitAfterPrompt', option(context, 'wait-after-prompt'));
|
|
51
52
|
set('execution.waitAfterError', option(context, 'wait-after-error'));
|
|
52
|
-
set('execution.
|
|
53
|
-
set('
|
|
54
|
-
set('browser.profile', option(context, 'browser-profile'));
|
|
55
|
-
set('server.enabled', flag(context, 'server'));
|
|
53
|
+
set('execution.isCommitEnabled', flag(context, 'commit'));
|
|
54
|
+
set('server.isEnabled', flag(context, 'server'));
|
|
56
55
|
set('server.port', option(context, 'port'));
|
|
57
|
-
set('server.tunnel.
|
|
56
|
+
set('server.tunnel.isEnabled', flag(context, 'tunnel'));
|
|
58
57
|
set('server.tunnel.provider', option(context, 'tunnel-provider'));
|
|
59
|
-
set('service.
|
|
58
|
+
set('service.isPersistent', flag(context, 'persist'));
|
|
60
59
|
if (flag(context, 'harness-updates') === false)
|
|
61
60
|
overrides['service.harnessUpdates'] = 'off';
|
|
62
|
-
set('service.
|
|
63
|
-
set('traces.
|
|
64
|
-
set('traces.
|
|
65
|
-
set('traces.
|
|
61
|
+
set('service.isQrShown', flag(context, 'qr'));
|
|
62
|
+
set('traces.isCommitted', flag(context, 'commit-traces'));
|
|
63
|
+
set('traces.isVideoIgnored', flag(context, 'ignore-trace-videos'));
|
|
64
|
+
set('traces.isVideoRecordingEnabled', flag(context, 'record-video'));
|
|
66
65
|
const contextFile = option(context, 'context');
|
|
67
66
|
if (contextFile !== undefined)
|
|
68
67
|
overrides['paths.context'] = contextFile === '' ? null : contextFile;
|
|
@@ -71,6 +70,22 @@ export function settingOverrides(context) {
|
|
|
71
70
|
}
|
|
72
71
|
return overrides;
|
|
73
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Temporary browser overrides of this invocation (`--browser-mode`, `--browser-profile`, targeted by `--browser-tool`).
|
|
75
|
+
*
|
|
76
|
+
* @private CLI helpers
|
|
77
|
+
*/
|
|
78
|
+
export function browserOverrides(context) {
|
|
79
|
+
const mode = option(context, 'browser-mode');
|
|
80
|
+
const profile = option(context, 'browser-profile');
|
|
81
|
+
const tool = option(context, 'browser-tool');
|
|
82
|
+
if (!mode && !profile) {
|
|
83
|
+
if (tool)
|
|
84
|
+
throw usageError('--browser-tool selects the browser of --browser-mode/--browser-profile; give one of them too.', context.path.join(' '));
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
return { tool, mode, profile };
|
|
88
|
+
}
|
|
74
89
|
/**
|
|
75
90
|
* Validates option combinations before any work (contradictions are never silently resolved).
|
|
76
91
|
*
|
|
@@ -103,8 +118,10 @@ export function validateCombinations(context) {
|
|
|
103
118
|
}
|
|
104
119
|
if (gitChanges === 'continue' && option(context, 'check-before') === 'yes-and-fix')
|
|
105
120
|
throw usageError('--git-changes continue conflicts with --check-before yes-and-fix.', path);
|
|
106
|
-
if (
|
|
107
|
-
throw usageError('--no-
|
|
121
|
+
if (flag(context, 'auto-sync') === false && (flag(context, 'auto-pull') || flag(context, 'auto-push')))
|
|
122
|
+
throw usageError('--no-auto-sync contradicts --auto-pull/--auto-push (compatibility aliases of --auto-sync).', path);
|
|
123
|
+
if (noCommit && (flag(context, 'auto-sync') || flag(context, 'auto-pull') || flag(context, 'auto-push')))
|
|
124
|
+
throw usageError('--no-commit conflicts with automatic synchronization (--auto-sync, --auto-pull, --auto-push): synchronization publishes commits.', path);
|
|
108
125
|
if (flag(context, 'daemon') && flag(context, 'foreground'))
|
|
109
126
|
throw usageError('--daemon and --foreground are mutually exclusive.', path);
|
|
110
127
|
if (flag(context, 'tunnel') === true && flag(context, 'server') === false)
|
package/dist/cli/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/cli/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/cli/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CommandContext } from './context.js';
|
|
2
|
+
/**
|
|
3
|
+
* The project was configured by a newer engine: offer the ordinary self-update of this installation (interactive)
|
|
4
|
+
* and stop either way — the project is never downgraded or started with an older engine.
|
|
5
|
+
*
|
|
6
|
+
* @private CLI compatibility gate
|
|
7
|
+
*/
|
|
8
|
+
export declare function requireEngineUpdate(context: CommandContext, saved: string): Promise<never>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { PtbkError } from '../common/errors.js';
|
|
2
|
+
import { compareVersions } from '../common/semver.js';
|
|
3
|
+
import { ENGINE_VERSION } from '../common/version.js';
|
|
4
|
+
import { checkForEngineUpdate, updateEngine } from '../project/self-update.js';
|
|
5
|
+
import { confirm } from '../ui/prompts.js';
|
|
6
|
+
/**
|
|
7
|
+
* The project was configured by a newer engine: offer the ordinary self-update of this installation (interactive)
|
|
8
|
+
* and stop either way — the project is never downgraded or started with an older engine.
|
|
9
|
+
*
|
|
10
|
+
* @private CLI compatibility gate
|
|
11
|
+
*/
|
|
12
|
+
export async function requireEngineUpdate(context, saved) {
|
|
13
|
+
const { terminal } = context;
|
|
14
|
+
if (terminal.interactive) {
|
|
15
|
+
const check = await checkForEngineUpdate().catch(() => undefined);
|
|
16
|
+
if (check?.newer && check.latest && (compareVersions(check.latest, saved) ?? -1) >= 0) {
|
|
17
|
+
const answer = await confirm(terminal, { frame: { title: 'ptbk', step: 'Update required' }, question: `This project was configured by ptbk ${saved}; this ptbk is ${ENGINE_VERSION}. Update this ${check.installation.scope} installation to ${check.latest} now?`, defaultYes: true });
|
|
18
|
+
if (answer === true) {
|
|
19
|
+
const message = await updateEngine(check, (line) => terminal.write(` ${line}\n`));
|
|
20
|
+
throw new PtbkError(message, { kind: 'incomplete', effect: 'Nothing in the project was changed.', next: ['Run the same command again with the updated ptbk.'] });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
throw new PtbkError(`This project was configured by ptbk ${saved}; the running ptbk ${ENGINE_VERSION} is older.`, {
|
|
25
|
+
kind: 'unsupported',
|
|
26
|
+
project: context.cwd,
|
|
27
|
+
reason: 'An older engine never downgrades or rewrites a newer configuration.',
|
|
28
|
+
effect: 'Nothing was started or changed.',
|
|
29
|
+
next: [`Update ptbk to ${saved} or newer (\`npm install -g ptbk@latest\`, or the project's local dependency), then rerun.`],
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=compatibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../src/cli/compatibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG3C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAuB,EAAE,KAAa;IAC5E,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC7B,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,oBAAoB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAClE,IAAI,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACpF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,QAAQ,EAAE,uCAAuC,KAAK,kBAAkB,cAAc,iBAAiB,KAAK,CAAC,YAAY,CAAC,KAAK,oBAAoB,KAAK,CAAC,MAAM,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YACxR,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;gBACrF,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,qCAAqC,EAAE,IAAI,EAAE,CAAC,mDAAmD,CAAC,EAAE,CAAC,CAAC;YACrK,CAAC;QACL,CAAC;IACL,CAAC;IACD,MAAM,IAAI,SAAS,CAAC,uCAAuC,KAAK,sBAAsB,cAAc,YAAY,EAAE;QAC9G,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO,CAAC,GAAG;QACpB,MAAM,EAAE,qEAAqE;QAC7E,MAAM,EAAE,iCAAiC;QACzC,IAAI,EAAE,CAAC,kBAAkB,KAAK,4FAA4F,CAAC;KAC9H,CAAC,CAAC;AACP,CAAC"}
|
package/dist/cli/parser.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { parseDuration } from '../common/duration.js';
|
|
2
2
|
import { usageError } from '../common/errors.js';
|
|
3
|
+
import { matchEnum } from '../common/naming.js';
|
|
3
4
|
import { allOptions } from './spec.js';
|
|
4
5
|
/**
|
|
5
6
|
* Finds a command or subcommand by name or alias.
|
|
@@ -76,10 +77,13 @@ function convertValue(option, raw, commandPath) {
|
|
|
76
77
|
throw usageError(`--${option.name}: ${parsed.reason}`, commandPath);
|
|
77
78
|
return parsed.ms;
|
|
78
79
|
}
|
|
79
|
-
case 'enum':
|
|
80
|
-
|
|
80
|
+
case 'enum': {
|
|
81
|
+
// Tolerant input (case and separators, e.g. YES_AND_FAIL for yes-and-fail); the documented spelling is kept.
|
|
82
|
+
const value = matchEnum(raw, option.values);
|
|
83
|
+
if (!value)
|
|
81
84
|
throw usageError(`--${option.name} must be one of ${option.values.join(', ')} (got "${raw}").`, commandPath);
|
|
82
|
-
return
|
|
85
|
+
return value;
|
|
86
|
+
}
|
|
83
87
|
case 'boolean':
|
|
84
88
|
if (raw === 'true' || raw === 'false')
|
|
85
89
|
return raw === 'true';
|