specrails-core 4.11.2 → 4.12.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 +56 -20
- package/bin/specrails-core.mjs +343 -20
- package/bin/tui-installer.mjs +103 -52
- package/dist/installer/cli.js +1 -1
- package/dist/installer/cli.js.map +1 -1
- package/dist/installer/commands/doctor.js +486 -24
- package/dist/installer/commands/doctor.js.map +1 -1
- package/dist/installer/commands/framework.js +49 -7
- package/dist/installer/commands/framework.js.map +1 -1
- package/dist/installer/commands/init.js +423 -25
- package/dist/installer/commands/init.js.map +1 -1
- package/dist/installer/commands/update.js +36 -9
- package/dist/installer/commands/update.js.map +1 -1
- package/dist/installer/phases/framework-lifecycle.js +125 -0
- package/dist/installer/phases/framework-lifecycle.js.map +1 -0
- package/dist/installer/phases/install-config.js +157 -5
- package/dist/installer/phases/install-config.js.map +1 -1
- package/dist/installer/phases/manifest.js +27 -2
- package/dist/installer/phases/manifest.js.map +1 -1
- package/dist/installer/phases/prereqs.js +57 -2
- package/dist/installer/phases/prereqs.js.map +1 -1
- package/dist/installer/phases/provider-detect.js +116 -6
- package/dist/installer/phases/provider-detect.js.map +1 -1
- package/dist/installer/phases/scaffold.js +1222 -12
- package/dist/installer/phases/scaffold.js.map +1 -1
- package/dist/installer/runtime/kimi.js +255 -0
- package/dist/installer/runtime/kimi.js.map +1 -0
- package/dist/installer/util/paths.js +12 -0
- package/dist/installer/util/paths.js.map +1 -1
- package/dist/installer/util/registry.js +234 -14
- package/dist/installer/util/registry.js.map +1 -1
- package/docs/README.md +1 -0
- package/docs/deployment.md +6 -7
- package/docs/getting-started.md +11 -7
- package/docs/installation.md +34 -16
- package/docs/plugin-architecture.md +11 -8
- package/docs/updating.md +21 -3
- package/docs/user-docs/cli-reference.md +43 -22
- package/docs/user-docs/codex-vs-claude-code.md +11 -9
- package/docs/user-docs/faq.md +1 -1
- package/docs/user-docs/getting-started-codex.md +5 -8
- package/docs/user-docs/getting-started-kimi.md +423 -0
- package/docs/user-docs/installation.md +49 -14
- package/docs/user-docs/quick-start.md +11 -8
- package/docs/windows.md +29 -4
- package/integration-contract.json +85 -13
- package/package.json +9 -5
- package/schemas/profile.v1.json +67 -5
- package/templates/codex-skills/batch-implement/SKILL.md +4 -0
- package/templates/commands/specrails/batch-implement.md +11 -0
- package/templates/gemini-commands/batch-implement.toml +4 -0
- package/templates/kimi/specrails/run-skill.mjs +3005 -0
- package/templates/kimi/specrails/vendor/js-yaml/LICENSE +21 -0
- package/templates/kimi/specrails/vendor/js-yaml/NOTICE.md +16 -0
- package/templates/kimi/specrails/vendor/js-yaml/js-yaml.mjs +3856 -0
- package/templates/profiles/kimi-default.json +15 -0
package/bin/tui-installer.mjs
CHANGED
|
@@ -10,9 +10,10 @@
|
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
import { checkbox, select, Separator } from '@inquirer/prompts';
|
|
13
|
-
import { writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
13
|
+
import { writeFileSync, mkdirSync, existsSync, readFileSync } from 'node:fs';
|
|
14
14
|
import { execSync } from 'node:child_process';
|
|
15
15
|
import { resolve } from 'node:path';
|
|
16
|
+
import { fileURLToPath } from 'node:url';
|
|
16
17
|
|
|
17
18
|
// ─── Alternate screen buffer (fullscreen mode) ──────────────────────────────
|
|
18
19
|
|
|
@@ -72,10 +73,10 @@ const DEFAULT_SELECTED = new Set([
|
|
|
72
73
|
...CORE_AGENTS,
|
|
73
74
|
]);
|
|
74
75
|
|
|
75
|
-
// ─── Model presets
|
|
76
|
-
// Claude
|
|
77
|
-
//
|
|
78
|
-
//
|
|
76
|
+
// ─── Model presets ──────────────────────────────────────────────────────────────
|
|
77
|
+
// Claude exposes distinct Core-defined cost/quality tiers. Other providers use
|
|
78
|
+
// an explicit provider-native default for every named preset; preset names never
|
|
79
|
+
// imply that Claude aliases should be copied into another provider's config.
|
|
79
80
|
|
|
80
81
|
const MODEL_PRESETS = {
|
|
81
82
|
balanced: {
|
|
@@ -95,16 +96,24 @@ const MODEL_PRESETS = {
|
|
|
95
96
|
},
|
|
96
97
|
};
|
|
97
98
|
|
|
98
|
-
// Per-provider default agent model.
|
|
99
|
-
//
|
|
100
|
-
// model instead of a Claude-flavoured preset. Keep in sync with scaffold.ts
|
|
101
|
-
// (GEMINI_DEFAULT_MODEL / the codex config.toml model).
|
|
99
|
+
// Per-provider default agent model. Keep in sync with install-config.ts and the
|
|
100
|
+
// provider renderers.
|
|
102
101
|
const PROVIDER_DEFAULT_MODEL = {
|
|
103
102
|
claude: 'sonnet',
|
|
104
103
|
codex: 'gpt-5.5-mini',
|
|
105
104
|
gemini: 'gemini-3.5-flash',
|
|
105
|
+
kimi: 'k3',
|
|
106
106
|
};
|
|
107
107
|
|
|
108
|
+
function resolveProviderModelPreset(provider, preset = 'balanced') {
|
|
109
|
+
if (provider === 'claude') return MODEL_PRESETS[preset];
|
|
110
|
+
return {
|
|
111
|
+
label: `${PROVIDER_DEFAULT_MODEL[provider]} for all agents`,
|
|
112
|
+
defaults: PROVIDER_DEFAULT_MODEL[provider],
|
|
113
|
+
overrides: {},
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
|
|
108
117
|
// ─── Provider registry ─────────────────────────────────────────────────────────
|
|
109
118
|
// Single source of truth for the AI CLIs the TUI can target. Add a provider here
|
|
110
119
|
// and it flows through detection, the --provider flag, and the interactive picker.
|
|
@@ -112,8 +121,19 @@ const PROVIDERS = [
|
|
|
112
121
|
{ id: 'claude', label: 'Claude Code (recommended)', versionCmd: 'claude --version', installLabel: 'Claude Code', installUrl: 'https://claude.ai/download' },
|
|
113
122
|
{ id: 'codex', label: 'Codex (OpenAI)', versionCmd: 'codex --version', installLabel: 'Codex CLI', installUrl: 'https://developers.openai.com/codex' },
|
|
114
123
|
{ id: 'gemini', label: 'Gemini CLI (Google)', versionCmd: 'gemini --version', installLabel: 'Gemini CLI', installUrl: 'https://github.com/google-gemini/gemini-cli' },
|
|
124
|
+
{ id: 'kimi', label: 'Kimi Code', versionCmd: 'kimi --version', installLabel: 'Kimi Code', installUrl: 'https://www.kimi.com/code/docs/en/' },
|
|
115
125
|
];
|
|
116
126
|
const VALID_PROVIDER_IDS = new Set(PROVIDERS.map(p => p.id));
|
|
127
|
+
const providerProbeTimeoutOverride = Number.parseInt(
|
|
128
|
+
process.env.SPECRAILS_PROVIDER_PROBE_TIMEOUT_MS ?? '',
|
|
129
|
+
10,
|
|
130
|
+
);
|
|
131
|
+
const PROVIDER_PROBE_TIMEOUT_MS =
|
|
132
|
+
Number.isFinite(providerProbeTimeoutOverride) &&
|
|
133
|
+
providerProbeTimeoutOverride >= 100 &&
|
|
134
|
+
providerProbeTimeoutOverride <= 30_000
|
|
135
|
+
? providerProbeTimeoutOverride
|
|
136
|
+
: 3_000;
|
|
117
137
|
|
|
118
138
|
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
119
139
|
|
|
@@ -121,25 +141,46 @@ const VALID_PROVIDER_IDS = new Set(PROVIDERS.map(p => p.id));
|
|
|
121
141
|
function detectInstalledProviders() {
|
|
122
142
|
const installed = new Set();
|
|
123
143
|
for (const p of PROVIDERS) {
|
|
124
|
-
try {
|
|
144
|
+
try {
|
|
145
|
+
execSync(p.versionCmd, {
|
|
146
|
+
stdio: 'ignore',
|
|
147
|
+
timeout: PROVIDER_PROBE_TIMEOUT_MS,
|
|
148
|
+
});
|
|
149
|
+
installed.add(p.id);
|
|
150
|
+
} catch { /* absent, broken, or hung — do not block the installer */ }
|
|
125
151
|
}
|
|
126
152
|
return installed;
|
|
127
153
|
}
|
|
128
154
|
|
|
129
|
-
// Parse `--provider <id>` or `--provider=<id>` from process.argv.
|
|
130
|
-
//
|
|
131
|
-
//
|
|
132
|
-
function parseProviderArg() {
|
|
133
|
-
const args = process.argv.slice(2);
|
|
155
|
+
// Parse `--provider <id>` or `--provider=<id>` from process.argv. An explicit
|
|
156
|
+
// but invalid value is a configuration error, never an invitation to silently
|
|
157
|
+
// open a picker and install a different provider.
|
|
158
|
+
function parseProviderArg(args = process.argv.slice(2)) {
|
|
134
159
|
for (let i = 0; i < args.length; i++) {
|
|
135
160
|
const a = args[i];
|
|
136
|
-
if (a === '--provider'
|
|
161
|
+
if (a === '--provider') {
|
|
162
|
+
if (!args[i + 1] || args[i + 1].startsWith('-')) {
|
|
163
|
+
throw new Error(
|
|
164
|
+
`--provider requires one of: ${[...VALID_PROVIDER_IDS].join(', ')}`,
|
|
165
|
+
);
|
|
166
|
+
}
|
|
137
167
|
const v = args[i + 1].trim().toLowerCase();
|
|
138
|
-
|
|
168
|
+
if (!VALID_PROVIDER_IDS.has(v)) {
|
|
169
|
+
throw new Error(
|
|
170
|
+
`unsupported --provider '${args[i + 1]}' (expected: ${[...VALID_PROVIDER_IDS].join(', ')})`,
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
return v;
|
|
139
174
|
}
|
|
140
175
|
if (a.startsWith('--provider=')) {
|
|
141
176
|
const v = a.slice('--provider='.length).trim().toLowerCase();
|
|
142
|
-
|
|
177
|
+
if (!VALID_PROVIDER_IDS.has(v)) {
|
|
178
|
+
throw new Error(
|
|
179
|
+
`unsupported --provider '${a.slice('--provider='.length)}' ` +
|
|
180
|
+
`(expected: ${[...VALID_PROVIDER_IDS].join(', ')})`,
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
return v;
|
|
143
184
|
}
|
|
144
185
|
}
|
|
145
186
|
return null;
|
|
@@ -205,23 +246,47 @@ function writeInstallConfig(specrailsDir, cfg) {
|
|
|
205
246
|
function writeDefaultConfig(specrailsDir, provider) {
|
|
206
247
|
const defaultSelected = [...DEFAULT_SELECTED];
|
|
207
248
|
const defaultExcluded = ALL_AGENT_IDS.filter(id => !DEFAULT_SELECTED.has(id));
|
|
249
|
+
const modelSelection = resolveProviderModelPreset(provider);
|
|
208
250
|
writeInstallConfig(specrailsDir, {
|
|
209
251
|
provider,
|
|
210
252
|
tier: 'full',
|
|
211
253
|
selectedAgents: defaultSelected,
|
|
212
254
|
excludedAgents: defaultExcluded,
|
|
213
255
|
modelPreset: 'balanced',
|
|
214
|
-
modelDefaults:
|
|
215
|
-
modelOverrides:
|
|
256
|
+
modelDefaults: modelSelection.defaults,
|
|
257
|
+
modelOverrides: modelSelection.overrides,
|
|
216
258
|
});
|
|
217
259
|
}
|
|
218
260
|
|
|
261
|
+
function scaffoldDefaultProfile(specrailsDir, provider) {
|
|
262
|
+
try {
|
|
263
|
+
const scriptDir = fileURLToPath(new URL('..', import.meta.url));
|
|
264
|
+
const templateName = provider === 'kimi' ? 'kimi-default.json' : 'default.json';
|
|
265
|
+
const templatePath = resolve(scriptDir, 'templates/profiles', templateName);
|
|
266
|
+
const profilesDir = resolve(specrailsDir, 'profiles');
|
|
267
|
+
// Provider-bound defaults must coexist in a multi-provider project. Keep
|
|
268
|
+
// the historical filename for Claude and give Kimi its own stable fallback.
|
|
269
|
+
const targetName = provider === 'kimi' ? 'kimi-default.json' : 'project-default.json';
|
|
270
|
+
const targetPath = resolve(profilesDir, targetName);
|
|
271
|
+
if (existsSync(templatePath) && !existsSync(targetPath)) {
|
|
272
|
+
mkdirSync(profilesDir, { recursive: true });
|
|
273
|
+
writeFileSync(targetPath, readFileSync(templatePath));
|
|
274
|
+
console.log(` ✓ Profile scaffolded at .specrails/profiles/${targetName}`);
|
|
275
|
+
} else if (existsSync(targetPath)) {
|
|
276
|
+
console.log(` ↷ Profile already exists at .specrails/profiles/${targetName} — skipped`);
|
|
277
|
+
}
|
|
278
|
+
} catch (e) {
|
|
279
|
+
console.warn(` ⚠ Could not scaffold profile: ${e.message}`);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
219
283
|
// ─── Main ─────────────────────────────────────────────────────────────────────
|
|
220
284
|
|
|
221
285
|
async function run() {
|
|
222
286
|
const rawArgs = process.argv.slice(2);
|
|
223
287
|
const autoYes = rawArgs.includes('--yes') || rawArgs.includes('-y');
|
|
224
288
|
const withProfiles = rawArgs.includes('--with-profiles');
|
|
289
|
+
const argvProvider = parseProviderArg(rawArgs);
|
|
225
290
|
// First positional arg (skipping flag values that follow `--provider`,
|
|
226
291
|
// `--root-dir`, etc.) is the target directory.
|
|
227
292
|
const FLAGS_WITH_VALUES = new Set(['--provider', '--root-dir', '--from-config']);
|
|
@@ -246,35 +311,12 @@ async function run() {
|
|
|
246
311
|
|
|
247
312
|
const specrailsDir = resolve(rootDir, '.specrails');
|
|
248
313
|
|
|
249
|
-
// Optional: scaffold .specrails/profiles/project-default.json from the shipped template.
|
|
250
|
-
// Off by default to keep standalone installs zero-noise.
|
|
251
|
-
if (withProfiles) {
|
|
252
|
-
try {
|
|
253
|
-
const { readFileSync, writeFileSync, existsSync, mkdirSync } = await import('node:fs');
|
|
254
|
-
const { dirname } = await import('node:path');
|
|
255
|
-
const scriptDir = new URL('..', import.meta.url).pathname;
|
|
256
|
-
const templatePath = resolve(scriptDir, 'templates/profiles/default.json');
|
|
257
|
-
const profilesDir = resolve(specrailsDir, 'profiles');
|
|
258
|
-
const targetPath = resolve(profilesDir, 'project-default.json');
|
|
259
|
-
if (existsSync(templatePath) && !existsSync(targetPath)) {
|
|
260
|
-
mkdirSync(profilesDir, { recursive: true });
|
|
261
|
-
writeFileSync(targetPath, readFileSync(templatePath));
|
|
262
|
-
console.log(` ✓ Profile scaffolded at .specrails/profiles/project-default.json`);
|
|
263
|
-
} else if (existsSync(targetPath)) {
|
|
264
|
-
console.log(` ↷ Profile already exists at .specrails/profiles/project-default.json — skipped`);
|
|
265
|
-
}
|
|
266
|
-
} catch (e) {
|
|
267
|
-
console.warn(` ⚠ Could not scaffold profile: ${e.message}`);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
|
|
271
314
|
// Auto-yes: write defaults and exit (no TUI needed)
|
|
272
315
|
//
|
|
273
316
|
// Honours an explicit --provider <id> argv flag when present; otherwise
|
|
274
317
|
// picks claude → codex → first-detected. Errors only when none detected.
|
|
275
318
|
if (autoYes) {
|
|
276
319
|
const installed = detectInstalledProviders();
|
|
277
|
-
const argvProvider = parseProviderArg();
|
|
278
320
|
let provider;
|
|
279
321
|
if (argvProvider) {
|
|
280
322
|
if (!installed.has(argvProvider)) {
|
|
@@ -291,12 +333,13 @@ async function run() {
|
|
|
291
333
|
provider = PROVIDERS.find(p => installed.has(p.id))?.id;
|
|
292
334
|
if (!provider) {
|
|
293
335
|
console.error('');
|
|
294
|
-
console.error(' ⚠ No supported AI CLI detected on PATH (Claude Code, Codex, or
|
|
336
|
+
console.error(' ⚠ No supported AI CLI detected on PATH (Claude Code, Codex, Gemini CLI, or Kimi Code).');
|
|
295
337
|
for (const p of PROVIDERS) console.error(` Install ${p.installLabel}: ${p.installUrl}`);
|
|
296
338
|
console.error('');
|
|
297
339
|
process.exit(1);
|
|
298
340
|
}
|
|
299
341
|
}
|
|
342
|
+
if (withProfiles) scaffoldDefaultProfile(specrailsDir, provider);
|
|
300
343
|
writeDefaultConfig(specrailsDir, provider);
|
|
301
344
|
console.log(` ✓ Default config written to .specrails/install-config.yaml`);
|
|
302
345
|
console.log(` ✓ Provider: ${provider}, Tier: full, Agents: ${DEFAULT_SELECTED.size}/${ALL_AGENT_IDS.length}, Preset: balanced\n`);
|
|
@@ -328,7 +371,6 @@ async function run() {
|
|
|
328
371
|
// ── Step 1: Provider ────────────────────────────────────────────────────────
|
|
329
372
|
|
|
330
373
|
const installed = detectInstalledProviders();
|
|
331
|
-
const argvProvider = parseProviderArg();
|
|
332
374
|
let provider;
|
|
333
375
|
|
|
334
376
|
if (argvProvider) {
|
|
@@ -359,6 +401,7 @@ async function run() {
|
|
|
359
401
|
});
|
|
360
402
|
}
|
|
361
403
|
}
|
|
404
|
+
if (withProfiles) scaffoldDefaultProfile(specrailsDir, provider);
|
|
362
405
|
|
|
363
406
|
// ── Step 2: Installation tier ───────────────────────────────────────────────
|
|
364
407
|
|
|
@@ -377,7 +420,10 @@ async function run() {
|
|
|
377
420
|
{
|
|
378
421
|
value: 'full',
|
|
379
422
|
name: 'Full — AI-powered setup',
|
|
380
|
-
description:
|
|
423
|
+
description:
|
|
424
|
+
provider === 'kimi'
|
|
425
|
+
? 'After install, run /skill:specrails-enrich to AI-customize all agents for your codebase'
|
|
426
|
+
: 'After install, run /specrails:enrich to AI-customize all agents for your codebase',
|
|
381
427
|
},
|
|
382
428
|
],
|
|
383
429
|
});
|
|
@@ -409,11 +455,13 @@ async function run() {
|
|
|
409
455
|
clearScreen();
|
|
410
456
|
console.log(` Provider: ${provider} | Tier: ${tier} | Agents: ${selectedAgents.length}/${ALL_AGENT_IDS.length}\n`);
|
|
411
457
|
|
|
412
|
-
// Claude exposes real model tiers
|
|
413
|
-
//
|
|
458
|
+
// Claude exposes real model tiers. Other providers retain the same config
|
|
459
|
+
// shape but resolve the preset through their provider-native catalog.
|
|
414
460
|
let modelPreset = 'balanced';
|
|
415
|
-
let
|
|
416
|
-
|
|
461
|
+
let {
|
|
462
|
+
defaults: modelDefaults,
|
|
463
|
+
overrides: modelOverrides,
|
|
464
|
+
} = resolveProviderModelPreset(provider, modelPreset);
|
|
417
465
|
if (provider === 'claude') {
|
|
418
466
|
modelPreset = await select({
|
|
419
467
|
message: 'Model configuration:',
|
|
@@ -424,7 +472,7 @@ async function run() {
|
|
|
424
472
|
});
|
|
425
473
|
({ defaults: modelDefaults, overrides: modelOverrides } = MODEL_PRESETS[modelPreset]);
|
|
426
474
|
} else {
|
|
427
|
-
console.log(` → Model: ${modelDefaults} (${provider}
|
|
475
|
+
console.log(` → Model: ${modelDefaults} (${provider} provider preset)\n`);
|
|
428
476
|
}
|
|
429
477
|
|
|
430
478
|
// ── Write config & exit fullscreen ──────────────────────────────────────────
|
|
@@ -444,7 +492,10 @@ async function run() {
|
|
|
444
492
|
console.log(`\n ✓ Config written to .specrails/install-config.yaml`);
|
|
445
493
|
console.log(` ✓ Provider: ${provider} | Tier: ${tier} | Agents: ${selectedAgents.length}/${ALL_AGENT_IDS.length} | Preset: ${modelPreset}`);
|
|
446
494
|
if (tier === 'full') {
|
|
447
|
-
|
|
495
|
+
const enrichCommand = provider === 'kimi'
|
|
496
|
+
? '/skill:specrails-enrich --from-config'
|
|
497
|
+
: '/specrails:enrich --from-config';
|
|
498
|
+
console.log(`\n Next: run ${enrichCommand} inside ${provider} to AI-customize your agents.\n`);
|
|
448
499
|
} else {
|
|
449
500
|
console.log(`\n Agents will be installed with template defaults.\n`);
|
|
450
501
|
}
|
package/dist/installer/cli.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/installer/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAEvD,OAAO,EAAE,SAAS,EAAoB,MAAM,sBAAsB,CAAA;AAClE,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,cAAc,GAIf,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,OAAO,EAAkB,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAoB,MAAM,sBAAsB,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAQxC;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,KAAK,GAAqC,EAAE,CAAA;IAClD,MAAM,WAAW,GAAa,EAAE,CAAA;IAChC,IAAI,UAAU,GAAkB,IAAI,CAAA;IAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAE,CAAA;QACtB,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAC5B,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBACZ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;YAC/C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACxB,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChD,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;oBAClB,CAAC,EAAE,CAAA;gBACL,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,GAAG,IAAI,CAAA;QACnB,CAAC;aAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAA;QACtB,CAAC;aAAM,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,UAAU,GAAG,KAAK,CAAA;YACpB,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;AAC3C,CAAC;AAED,SAAS,SAAS;IAChB,OAAO;QACL,EAAE;QACF,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/installer/cli.ts"],"names":[],"mappings":"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"}
|