lynxprompt 1.2.12 → 1.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +95 -47
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3587,7 +3587,7 @@ function generateYamlConfig(options, platform2) {
|
|
|
3587
3587
|
|
|
3588
3588
|
// src/commands/wizard.ts
|
|
3589
3589
|
var DRAFTS_DIR = ".lynxprompt/drafts";
|
|
3590
|
-
var CLI_VERSION = "1.2.
|
|
3590
|
+
var CLI_VERSION = "1.2.13";
|
|
3591
3591
|
async function saveDraftLocally(name, config2, stepReached) {
|
|
3592
3592
|
const draftsPath = join4(process.cwd(), DRAFTS_DIR);
|
|
3593
3593
|
await mkdir3(draftsPath, { recursive: true });
|
|
@@ -3857,19 +3857,42 @@ var CICD_OPTIONS = [
|
|
|
3857
3857
|
{ id: "drone", label: "Drone", icon: "\u{1F681}" },
|
|
3858
3858
|
{ id: "buildkite", label: "Buildkite", icon: "\u{1F9F1}" }
|
|
3859
3859
|
];
|
|
3860
|
-
var
|
|
3860
|
+
var CLOUD_TARGETS = [
|
|
3861
3861
|
{ id: "vercel", label: "Vercel", icon: "\u25B2 " },
|
|
3862
3862
|
{ id: "netlify", label: "Netlify", icon: "\u{1F310}" },
|
|
3863
|
-
{ id: "
|
|
3864
|
-
{ id: "
|
|
3865
|
-
{ id: "
|
|
3866
|
-
{ id: "
|
|
3867
|
-
{ id: "
|
|
3868
|
-
{ id: "
|
|
3869
|
-
{ id: "
|
|
3863
|
+
{ id: "cloudflare_pages", label: "Cloudflare Pages", icon: "\u{1F536}" },
|
|
3864
|
+
{ id: "cloudflare_workers", label: "Cloudflare Workers", icon: "\u{1F536}" },
|
|
3865
|
+
{ id: "aws_lambda", label: "AWS Lambda", icon: "\u2601\uFE0F " },
|
|
3866
|
+
{ id: "aws_ecs", label: "AWS ECS", icon: "\u2601\uFE0F " },
|
|
3867
|
+
{ id: "aws_ec2", label: "AWS EC2", icon: "\u2601\uFE0F " },
|
|
3868
|
+
{ id: "gcp_cloudrun", label: "GCP Cloud Run", icon: "\u{1F308}" },
|
|
3869
|
+
{ id: "gcp_appengine", label: "GCP App Engine", icon: "\u{1F308}" },
|
|
3870
|
+
{ id: "azure_appservice", label: "Azure App Service", icon: "\u{1F537}" },
|
|
3871
|
+
{ id: "azure_functions", label: "Azure Functions", icon: "\u{1F537}" },
|
|
3870
3872
|
{ id: "railway", label: "Railway", icon: "\u{1F682}" },
|
|
3873
|
+
{ id: "render", label: "Render", icon: "\u{1F3A8}" },
|
|
3871
3874
|
{ id: "fly", label: "Fly.io", icon: "\u2708\uFE0F " },
|
|
3872
|
-
{ id: "
|
|
3875
|
+
{ id: "heroku", label: "Heroku", icon: "\u{1F7E3}" },
|
|
3876
|
+
{ id: "digitalocean_app", label: "DigitalOcean App Platform", icon: "\u{1F535}" },
|
|
3877
|
+
{ id: "deno_deploy", label: "Deno Deploy", icon: "\u{1F995}" }
|
|
3878
|
+
];
|
|
3879
|
+
var SELF_HOSTED_TARGETS = [
|
|
3880
|
+
{ id: "docker", label: "Docker", icon: "\u{1F433}" },
|
|
3881
|
+
{ id: "docker_compose", label: "Docker Compose", icon: "\u{1F433}" },
|
|
3882
|
+
{ id: "kubernetes", label: "Kubernetes", icon: "\u2638\uFE0F " },
|
|
3883
|
+
{ id: "k3s", label: "K3s", icon: "\u2638\uFE0F " },
|
|
3884
|
+
{ id: "podman", label: "Podman", icon: "\u{1F9AD}" },
|
|
3885
|
+
{ id: "bare_metal", label: "Bare Metal", icon: "\u{1F5A5}\uFE0F " },
|
|
3886
|
+
{ id: "vm", label: "Virtual Machine", icon: "\u{1F4BB}" },
|
|
3887
|
+
{ id: "proxmox", label: "Proxmox", icon: "\u{1F537}" },
|
|
3888
|
+
{ id: "unraid", label: "Unraid", icon: "\u{1F7E0}" },
|
|
3889
|
+
{ id: "truenas", label: "TrueNAS", icon: "\u{1F535}" },
|
|
3890
|
+
{ id: "synology", label: "Synology NAS", icon: "\u{1F4C1}" },
|
|
3891
|
+
{ id: "coolify", label: "Coolify", icon: "\u2744\uFE0F " },
|
|
3892
|
+
{ id: "dokku", label: "Dokku", icon: "\u{1F433}" },
|
|
3893
|
+
{ id: "caprover", label: "CapRover", icon: "\u{1F6A2}" },
|
|
3894
|
+
{ id: "portainer", label: "Portainer", icon: "\u{1F40B}" },
|
|
3895
|
+
{ id: "rancher", label: "Rancher", icon: "\u{1F404}" }
|
|
3873
3896
|
];
|
|
3874
3897
|
var CONTAINER_REGISTRIES = [
|
|
3875
3898
|
{ id: "dockerhub", label: "Docker Hub", icon: "\u{1F433}" },
|
|
@@ -5446,14 +5469,14 @@ async function runInteractiveWizard(options, detected, userTier) {
|
|
|
5446
5469
|
name: "changelogTool",
|
|
5447
5470
|
message: chalk7.white("Changelog management:"),
|
|
5448
5471
|
choices: [
|
|
5449
|
-
{ title: "Manual", value: "manual" },
|
|
5450
|
-
{ title: "Conventional Changelog", value: "conventional_changelog" },
|
|
5451
|
-
{ title: "Release Please", value: "release_please" },
|
|
5452
|
-
{ title: "Semantic Release", value: "semantic_release" },
|
|
5453
|
-
{ title: "Changesets", value: "changesets" },
|
|
5454
|
-
{ title: "GitHub Releases", value: "github_releases" },
|
|
5455
|
-
{ title: "Keep a Changelog", value: "keep_a_changelog" },
|
|
5456
|
-
{ title: "Other", value: "other" }
|
|
5472
|
+
{ title: "Manual - Write CHANGELOG.md by hand", value: "manual" },
|
|
5473
|
+
{ title: "Conventional Changelog - Auto-generate from commit messages", value: "conventional_changelog" },
|
|
5474
|
+
{ title: "Release Please - Google's automated release management", value: "release_please" },
|
|
5475
|
+
{ title: "Semantic Release - Fully automated versioning & publishing", value: "semantic_release" },
|
|
5476
|
+
{ title: "Changesets - Monorepo-friendly version management", value: "changesets" },
|
|
5477
|
+
{ title: "GitHub Releases - Use GitHub's built-in release notes", value: "github_releases" },
|
|
5478
|
+
{ title: "Keep a Changelog - Manual following keepachangelog.com format", value: "keep_a_changelog" },
|
|
5479
|
+
{ title: "Other - Custom changelog tooling", value: "other" }
|
|
5457
5480
|
],
|
|
5458
5481
|
initial: 0
|
|
5459
5482
|
}, promptConfig);
|
|
@@ -5473,13 +5496,15 @@ async function runInteractiveWizard(options, detected, userTier) {
|
|
|
5473
5496
|
name: "branchStrategy",
|
|
5474
5497
|
message: chalk7.white("Branch strategy:"),
|
|
5475
5498
|
choices: [
|
|
5499
|
+
{ title: "\u{1F3AE} None (toy project) - No branching, commit directly to main", value: "none" },
|
|
5476
5500
|
{ title: "\u{1F30A} GitHub Flow - Simple: main + feature branches", value: "github_flow" },
|
|
5477
5501
|
{ title: "\u{1F333} Gitflow - develop, feature, release, hotfix branches", value: "gitflow" },
|
|
5478
5502
|
{ title: "\u{1F682} Trunk-Based - Short-lived branches, continuous integration", value: "trunk_based" },
|
|
5479
5503
|
{ title: "\u{1F98A} GitLab Flow - Environment branches (staging, production)", value: "gitlab_flow" },
|
|
5480
5504
|
{ title: "\u{1F680} Release Flow - main + release branches", value: "release_flow" }
|
|
5481
5505
|
],
|
|
5482
|
-
initial:
|
|
5506
|
+
initial: 1
|
|
5507
|
+
// Default to GitHub Flow (index 1 after adding "none")
|
|
5483
5508
|
}, promptConfig);
|
|
5484
5509
|
answers.branchStrategy = branchStrategyResponse.branchStrategy || "github_flow";
|
|
5485
5510
|
const defaultBranchResponse = await prompts3({
|
|
@@ -5495,18 +5520,7 @@ async function runInteractiveWizard(options, detected, userTier) {
|
|
|
5495
5520
|
initial: 0
|
|
5496
5521
|
}, promptConfig);
|
|
5497
5522
|
answers.defaultBranch = defaultBranchResponse.defaultBranch || "main";
|
|
5498
|
-
|
|
5499
|
-
type: "select",
|
|
5500
|
-
name: "commitWorkflow",
|
|
5501
|
-
message: chalk7.white("Commit workflow preference:"),
|
|
5502
|
-
choices: [
|
|
5503
|
-
{ title: "\u{1F500} Branch + PR - Create branches and open pull requests", value: "branch_pr" },
|
|
5504
|
-
{ title: "\u2B06\uFE0F Direct to main - Commit directly to main/master branch", value: "direct_main" }
|
|
5505
|
-
],
|
|
5506
|
-
initial: 0
|
|
5507
|
-
// Default to branch + PR
|
|
5508
|
-
}, promptConfig);
|
|
5509
|
-
answers.commitWorkflow = commitWorkflowResponse.commitWorkflow || "branch_pr";
|
|
5523
|
+
answers.commitWorkflow = answers.branchStrategy === "none" ? "direct_main" : "branch_pr";
|
|
5510
5524
|
const cicdChoices = [
|
|
5511
5525
|
{ title: chalk7.gray("\u23ED Skip"), value: "" },
|
|
5512
5526
|
...CICD_OPTIONS.map((c) => ({
|
|
@@ -5523,27 +5537,61 @@ async function runInteractiveWizard(options, detected, userTier) {
|
|
|
5523
5537
|
initial: detectedCicdIndex > 0 ? detectedCicdIndex : 0
|
|
5524
5538
|
}, promptConfig);
|
|
5525
5539
|
answers.cicd = cicdResponse.cicd || "";
|
|
5526
|
-
const
|
|
5527
|
-
|
|
5528
|
-
|
|
5529
|
-
|
|
5530
|
-
|
|
5531
|
-
|
|
5532
|
-
|
|
5533
|
-
|
|
5534
|
-
|
|
5535
|
-
|
|
5536
|
-
|
|
5537
|
-
instructions: false
|
|
5540
|
+
const deployTypeResponse = await prompts3({
|
|
5541
|
+
type: "select",
|
|
5542
|
+
name: "deployType",
|
|
5543
|
+
message: chalk7.white("Deployment environment:"),
|
|
5544
|
+
choices: [
|
|
5545
|
+
{ title: "\u2601\uFE0F Cloud only - PaaS, serverless, managed services", value: "cloud" },
|
|
5546
|
+
{ title: "\u{1F3E0} Self-hosted only - On-premise, homelab, VPS", value: "self_hosted" },
|
|
5547
|
+
{ title: "\u{1F504} Both cloud and self-hosted", value: "both" },
|
|
5548
|
+
{ title: chalk7.gray("\u23ED Skip"), value: "skip" }
|
|
5549
|
+
],
|
|
5550
|
+
initial: 0
|
|
5538
5551
|
}, promptConfig);
|
|
5539
|
-
|
|
5540
|
-
|
|
5552
|
+
const deployType = deployTypeResponse.deployType || "skip";
|
|
5553
|
+
let allDeployTargets = [];
|
|
5554
|
+
if (deployType === "cloud" || deployType === "both") {
|
|
5555
|
+
const cloudChoices = CLOUD_TARGETS.map((t) => ({
|
|
5556
|
+
title: `${t.icon}${t.label}`,
|
|
5557
|
+
value: t.id
|
|
5558
|
+
}));
|
|
5559
|
+
const cloudResponse = await prompts3({
|
|
5560
|
+
type: "autocompleteMultiselect",
|
|
5561
|
+
name: "cloudTargets",
|
|
5562
|
+
message: chalk7.white("Cloud deployment targets (type to search):"),
|
|
5563
|
+
choices: cloudChoices,
|
|
5564
|
+
hint: chalk7.gray("type to filter \u2022 space select \u2022 enter confirm"),
|
|
5565
|
+
instructions: false
|
|
5566
|
+
}, promptConfig);
|
|
5567
|
+
allDeployTargets = [...cloudResponse.cloudTargets || []];
|
|
5568
|
+
}
|
|
5569
|
+
if (deployType === "self_hosted" || deployType === "both") {
|
|
5570
|
+
const selfHostedChoices = sortSelectedFirst(SELF_HOSTED_TARGETS.map((t) => ({
|
|
5571
|
+
title: t.id === "docker" && detected?.hasDocker ? `${t.icon}${t.label} ${chalk7.green("(detected)")}` : `${t.icon}${t.label}`,
|
|
5572
|
+
selected: t.id === "docker" && detected?.hasDocker,
|
|
5573
|
+
value: t.id
|
|
5574
|
+
})));
|
|
5575
|
+
const selfHostedResponse = await prompts3({
|
|
5576
|
+
type: "autocompleteMultiselect",
|
|
5577
|
+
name: "selfHostedTargets",
|
|
5578
|
+
message: chalk7.white("Self-hosted deployment targets (type to search):"),
|
|
5579
|
+
choices: selfHostedChoices,
|
|
5580
|
+
hint: chalk7.gray("type to filter \u2022 space select \u2022 enter confirm"),
|
|
5581
|
+
instructions: false
|
|
5582
|
+
}, promptConfig);
|
|
5583
|
+
allDeployTargets = [...allDeployTargets, ...selfHostedResponse.selfHostedTargets || []];
|
|
5584
|
+
}
|
|
5585
|
+
answers.deploymentTargets = allDeployTargets;
|
|
5586
|
+
const dockerSelected = (answers.deploymentTargets || []).some(
|
|
5587
|
+
(t) => ["docker", "docker_compose", "kubernetes", "k3s", "podman"].includes(t)
|
|
5588
|
+
) || detected?.hasDocker;
|
|
5541
5589
|
const containerResponse = await prompts3({
|
|
5542
5590
|
type: "toggle",
|
|
5543
5591
|
name: "buildContainer",
|
|
5544
5592
|
message: chalk7.white("Build container images (Docker)?"),
|
|
5545
5593
|
initial: dockerSelected,
|
|
5546
|
-
// Default Yes if
|
|
5594
|
+
// Default Yes if container platform selected
|
|
5547
5595
|
active: "Yes",
|
|
5548
5596
|
inactive: "No"
|
|
5549
5597
|
}, promptConfig);
|
|
@@ -8810,7 +8858,7 @@ function handleError2(error) {
|
|
|
8810
8858
|
}
|
|
8811
8859
|
|
|
8812
8860
|
// src/index.ts
|
|
8813
|
-
var CLI_VERSION2 = "1.2.
|
|
8861
|
+
var CLI_VERSION2 = "1.2.13";
|
|
8814
8862
|
var program = new Command();
|
|
8815
8863
|
program.name("lynxprompt").description("CLI for LynxPrompt - Generate AI IDE configuration files").version(CLI_VERSION2);
|
|
8816
8864
|
program.command("wizard").description("Generate AI IDE configuration (recommended for most users)").option("-n, --name <name>", "Project name").option("-d, --description <description>", "Project description").option("-s, --stack <stack>", "Tech stack (comma-separated)").option("-f, --format <format>", "Output format: agents, cursor, or comma-separated for multiple").option("-p, --platforms <platforms>", "Alias for --format (deprecated)").option("--persona <persona>", "AI persona (fullstack, backend, frontend, devops, data, security)").option("--boundaries <level>", "Boundary preset (conservative, standard, permissive)").option("-y, --yes", "Skip prompts, use defaults (generates AGENTS.md)").option("-o, --output <dir>", "Output directory (default: current directory)").option("--repo-url <url>", "Analyze remote repository URL (GitHub/GitLab supported)").option("--blueprint", "Generate with [[VARIABLE|default]] placeholders for templates").option("--license <type>", "License type (mit, apache-2.0, gpl-3.0, etc.)").option("--ci-cd <platform>", "CI/CD platform (github_actions, gitlab_ci, jenkins, etc.)").option("--project-type <type>", "Project type (work, leisure, opensource, learning)").option("--detect-only", "Only detect project info, don't generate files").option("--load-draft <name>", "Load a saved wizard draft").option("--save-draft <name>", "Save wizard state as a draft (auto-saves at end)").option("--vars <values>", "Fill variables: VAR1=value1,VAR2=value2").action(wizardCommand);
|