rapidkit 0.25.2 → 0.25.4

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 CHANGED
@@ -6,11 +6,13 @@ FastAPI, NestJS, Go/Fiber, and Go/Gin scaffolding with production-ready defaults
6
6
  **27+ plug-and-play modules** are available for FastAPI & NestJS projects.
7
7
  Clean architecture • Zero boilerplate • Instant deployment.
8
8
 
9
+ > **💡 Recommended:** Install the [Workspai VS Code extension](https://github.com/getrapidkit/rapidkit-vscode) for AI-powered project creation, a visual workspace explorer, and context-aware coding assistance — all backed by this CLI.
10
+
9
11
  [![npm version](https://img.shields.io/npm/v/rapidkit.svg?style=flat-square)](https://www.npmjs.com/package/rapidkit)
10
12
  [![Downloads](https://img.shields.io/npm/dm/rapidkit.svg?style=flat-square)](https://www.npmjs.com/package/rapidkit)
11
13
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](https://opensource.org/licenses/MIT)
12
14
  [![GitHub Stars](https://img.shields.io/github/stars/getrapidkit/rapidkit-npm.svg?style=flat-square)](https://github.com/getrapidkit/rapidkit-npm/stargazers)
13
- [![Part of RapidKit Platform](https://img.shields.io/badge/Part%20of-RapidKit%20Workspace%20Platform-0f172a?logo=github)](https://github.com/getrapidkit/rapidkit)
15
+ [![Built by RapidKit](https://img.shields.io/badge/Built%20by-RapidKit-0f172a?logo=github)](https://www.getrapidkit.com)
14
16
 
15
17
  Official CLI for creating and operating RapidKit workspaces and projects.
16
18
 
@@ -19,16 +21,18 @@ Official CLI for creating and operating RapidKit workspaces and projects.
19
21
  - Profile + policy enforcement (`warn` / `strict`)
20
22
  - Cache and mirror lifecycle commands for stable environments
21
23
 
22
- ## Part of the RapidKit Ecosystem
24
+ ## RapidKit CLI in the Workspai Ecosystem
25
+
26
+ The `rapidkit` npm package remains the official RapidKit CLI.
23
27
 
24
- RapidKit NPM CLI is the developer entrypoint layer of the platform.
28
+ It works alongside Workspai, which is a product developed by RapidKit.
25
29
 
26
- | Layer | Repository |
27
- |---|---|
28
- | Ecosystem Hub | [getrapidkit/rapidkit](https://github.com/getrapidkit/rapidkit) |
29
- | IDE | [getrapidkit/rapidkit-vscode](https://github.com/getrapidkit/rapidkit-vscode) |
30
- | Core Engine | [getrapidkit/rapidkit-core](https://github.com/getrapidkit/rapidkit-core) |
31
- | Examples | [getrapidkit/rapidkit-examples](https://github.com/getrapidkit/rapidkit-examples) |
30
+ | Component | Repository | Role |
31
+ |---|---|---|
32
+ | CLI | [getrapidkit/rapidkit-npm](https://github.com/getrapidkit/rapidkit-npm) | Official RapidKit npm CLI |
33
+ | VS Code Extension | [getrapidkit/rapidkit-vscode](https://github.com/getrapidkit/rapidkit-vscode) | **Workspai** — visual explorer + AI features (recommended) |
34
+ | Core Engine | [getrapidkit/rapidkit-core](https://github.com/getrapidkit/rapidkit-core) | Official RapidKit Core |
35
+ | Examples | [getrapidkit/rapidkit-examples](https://github.com/getrapidkit/rapidkit-examples) | Example workspaces and starter references |
32
36
 
33
37
  ## Requirements
34
38
 
@@ -87,10 +91,32 @@ npx rapidkit bootstrap [--profile <profile>] [--json]
87
91
  npx rapidkit setup <python|node|go> [--warm-deps]
88
92
  npx rapidkit workspace policy show
89
93
  npx rapidkit workspace policy set <key> <value>
94
+ npx rapidkit doctor
90
95
  npx rapidkit doctor workspace [--fix]
91
96
  npx rapidkit workspace list # Display all workspaces created on this system
92
97
  ```
93
98
 
99
+ ### Command ownership
100
+
101
+ RapidKit keeps the wrapper boundary explicit so users know which layer owns each action.
102
+
103
+ | Command family | Owner | Notes |
104
+ |---|---|---|
105
+ | `create workspace`, `workspace`, `cache`, `mirror` | RapidKit wrapper | Platform-level orchestration |
106
+ | `init` | Wrapper orchestrated | Chooses the right runtime flow for the current project |
107
+ | `dev`, `test`, `build`, `start` | Runtime aware | Delegates to the active project/runtime when available |
108
+ | `doctor` | Wrapper system check | Checks host prerequisites by default |
109
+ | `doctor workspace` | Workspace health | Full workspace scan with project-level details and fixes |
110
+
111
+ Use `npx rapidkit doctor` for a quick host pre-flight and `npx rapidkit doctor workspace` inside a workspace for the full health picture.
112
+
113
+ ### Doctor workspace fix behavior
114
+
115
+ - `npx rapidkit doctor workspace` reuses cached project scans when valid and refreshes evidence under `.rapidkit/reports/doctor-last-run.json`.
116
+ - `npx rapidkit doctor workspace --fix` only executes actionable fix commands.
117
+ - URL-based fixes are recorded as manual guidance (for example, install pages) and are not executed as shell commands.
118
+ - Go project fixes that require `go mod tidy` are skipped when the Go toolchain is not available, with a clear install-and-rerun hint.
119
+
94
120
  ### Project lifecycle
95
121
 
96
122
  ```bash
@@ -157,9 +183,33 @@ Supported keys:
157
183
 
158
184
  Warm-deps behavior is non-fatal by design and reports explicit outcome (`completed` / `failed` / `skipped`).
159
185
 
160
- ## VS Code Extension
186
+ ## VS Code Extension (Recommended)
187
+
188
+ For the best RapidKit experience, use the **Workspai VS Code extension** — it wraps this CLI with a
189
+ visual workspace explorer, AI-powered project creation, and context-aware coding assistance.
190
+
191
+ ### Why use the extension?
192
+
193
+ | Feature | CLI | Extension |
194
+ |---|---|---|
195
+ | Create workspace / project | ✅ | ✅ Visual wizard |
196
+ | AI Create — describe → scaffold | ❌ | ✅ |
197
+ | Project Assistant (context-aware Q&A) | ❌ | ✅ |
198
+ | Workspace tree explorer | ❌ | ✅ |
199
+ | Module catalog browser | ❌ | ✅ |
200
+ | One-click `rapidkit init / dev / test` | ❌ | ✅ |
201
+ | Inline AI on every workspace item | ❌ | ✅ |
202
+
203
+ ### Install
204
+
205
+ Search **Workspai** in the VS Code Extensions marketplace, or:
206
+
207
+ ```bash
208
+ code --install-extension getrapidkit.workspai
209
+ ```
161
210
 
162
- Use the RapidKit VS Code extension for visual workflows and workspace operations.
211
+ > The extension calls this CLI under the hood both tools work together seamlessly.
212
+ > You do **not** need to install the CLI separately when using the extension.
163
213
 
164
214
  - Extension repository: https://github.com/getrapidkit/rapidkit-vscode
165
215
 
@@ -0,0 +1,6 @@
1
+ import o from'chalk';import {execa}from'execa';import {createRequire}from'module';import {promises}from'fs';import p from'path';import b from'os';var d=class{debugEnabled=false;setDebug(r){this.debugEnabled=r;}debug(r,...e){this.debugEnabled&&console.log(o.gray(`[DEBUG] ${r}`),...e);}info(r,...e){console.log(o.blue(r),...e);}success(r,...e){console.log(o.green(r),...e);}warn(r,...e){console.log(o.yellow(r),...e);}error(r,...e){console.error(o.red(r),...e);}step(r,e,n){console.log(o.cyan(`
2
+ [${r}/${e}]`),o.white(n));}},l=new d;var E="rapidkit",U=createRequire(import.meta.url),_=U("../package.json"),i=_?.version??"0.0.0";function k(t){let e=t.trim().match(/^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/);if(!e)return null;let n=e[4]?e[4].split(".").map(a=>a.match(/^\d+$/)?Number(a):a):[];return {major:Number(e[1]),minor:Number(e[2]),patch:Number(e[3]),prerelease:n}}function w(t,r){let e=k(t),n=k(r);if(!e||!n)return 0;if(e.major!==n.major)return e.major>n.major?1:-1;if(e.minor!==n.minor)return e.minor>n.minor?1:-1;if(e.patch!==n.patch)return e.patch>n.patch?1:-1;if(e.prerelease.length===0&&n.prerelease.length===0)return 0;if(e.prerelease.length===0)return 1;if(n.prerelease.length===0)return -1;let a=Math.max(e.prerelease.length,n.prerelease.length);for(let u=0;u<a;u+=1){let s=e.prerelease[u],c=n.prerelease[u];if(s===void 0)return -1;if(c===void 0)return 1;if(s===c)continue;let h=typeof s=="number",f=typeof c=="number";return h&&f?s>c?1:-1:h?-1:f||String(s)>String(c)?1:-1}return 0}var R=14400*1e3;function y(){let t=process.env.RAPIDKIT_CACHE_DIR?.trim()||(process.env.VITEST_WORKER_ID?p.join(b.homedir(),".rapidkit","cache",`vitest-${process.env.VITEST_WORKER_ID}`):p.join(b.homedir(),".rapidkit","cache"));return p.join(t,"update-check.json")}async function j(){try{let t=await promises.readFile(y(),"utf-8"),r=JSON.parse(t);return typeof r.latestVersion=="string"&&typeof r.checkedAt=="number"&&r.currentVersion===i&&Date.now()-r.checkedAt<R?r:null}catch{return null}}async function N(t){try{let r=y();await promises.mkdir(p.dirname(r),{recursive:true}),await promises.writeFile(r,JSON.stringify({latestVersion:t,checkedAt:Date.now(),currentVersion:i}),"utf-8");}catch{}}async function M(){try{l.debug("Checking for updates...");let t=await j();if(t){let n=Math.round((Date.now()-t.checkedAt)/6e4);l.debug(`Update check: cache hit (${n}m old)`),w(t.latestVersion,i)>0&&(console.log(o.yellow(`
3
+ \u26A0\uFE0F Update available: ${i} \u2192 ${t.latestVersion}`)),console.log(o.cyan(`Run: npm install -g rapidkit@latest
4
+ `)));return}let{stdout:r}=await execa("npm",["view",E,"version"],{timeout:3e3}),e=r.trim();await N(e),e&&w(e,i)>0?(console.log(o.yellow(`
5
+ \u26A0\uFE0F Update available: ${i} \u2192 ${e}`)),console.log(o.cyan(`Run: npm install -g rapidkit@latest
6
+ `))):l.debug("You are using the latest version");}catch{l.debug("Could not check for updates");}}function J(){return i}export{l as a,M as b,J as c};
@@ -1,4 +1,4 @@
1
- import {a as a$1,d,b}from'./chunk-RV6HBTFC.js';import {a,c}from'./chunk-N64Z3XVF.js';import {a as a$2,e,d as d$1,f,c as c$1,k}from'./chunk-Z5LKRG57.js';import {promises}from'fs';import*as v from'fs-extra';import m from'path';import B from'inquirer';import n from'chalk';import J from'ora';import {execa}from'execa';import Mt from'os';import {pathToFileURL}from'url';var At=".rapidkitrc.json",Kt=["rapidkit.config.js","rapidkit.config.mjs","rapidkit.config.cjs"];async function Qt(){let t=m.join(Mt.homedir(),At);try{let o=await promises.readFile(t,"utf-8"),e=JSON.parse(o);return a.debug(`Loaded config from ${t}`),e}catch{return a.debug("No user config found, using defaults"),{}}}async function Xt(t=process.cwd()){let o=t,e=m.parse(o).root;for(;o!==e;){for(let r of Kt){let a$1=m.join(o,r);try{await promises.access(a$1),a.debug(`Found config file: ${a$1}`);let p=await import(pathToFileURL(a$1).href),g=p.default||p;return a.debug(`Loaded RapidKit config from ${r}`),g}catch{continue}}o=m.dirname(o);}return a.debug("No RapidKit config file found, using defaults"),{}}function Zt(t,o,e){return {author:e.author||o.workspace?.defaultAuthor||t.author,pythonVersion:e.pythonVersion||o.workspace?.pythonVersion||t.pythonVersion,defaultInstallMethod:e.defaultInstallMethod||o.workspace?.installMethod||t.defaultInstallMethod,defaultKit:e.defaultKit||o.projects?.defaultKit||t.defaultKit,skipGit:e.skipGit??o.projects?.skipGit??t.skipGit,license:e.license||t.license,testRapidKitPath:e.testRapidKitPath||t.testRapidKitPath}}function L(t){return process.env.RAPIDKIT_DEV_PATH||t.testRapidKitPath||void 0}var C=class extends Error{constructor(e,r,a){super(e);this.code=r;this.details=a;this.name="RapidKitError",Error.captureStackTrace(this,this.constructor);}},F=class extends C{constructor(o,e){let r=e?`Python ${o}+ required, found ${e}`:`Python ${o}+ not found`;super(r,"PYTHON_NOT_FOUND","Please install Python from https://www.python.org/downloads/");}},G=class extends C{constructor(){super("Poetry is not installed","POETRY_NOT_FOUND","Install Poetry from https://python-poetry.org/docs/#installation");}},U=class extends C{constructor(){super("pipx is not installed","PIPX_NOT_FOUND","Install pipx from https://pypa.github.io/pipx/installation/");}},q=class extends C{constructor(o){super(`Directory "${o}" already exists`,"DIRECTORY_EXISTS","Please choose a different name or remove the existing directory");}},ht=class extends C{constructor(o,e){super(`Invalid project name: "${o}"`,"INVALID_PROJECT_NAME",e);}},I=class extends C{constructor(o,e){let r=`Installation failed at: ${o}`,a=`${e.message}
1
+ import {a as a$1,d,b}from'./chunk-RV6HBTFC.js';import {a,c}from'./chunk-EDH5S5JF.js';import {a as a$2,e,d as d$1,f,c as c$1,k}from'./chunk-Z5LKRG57.js';import {promises}from'fs';import*as v from'fs-extra';import m from'path';import B from'inquirer';import n from'chalk';import J from'ora';import {execa}from'execa';import Mt from'os';import {pathToFileURL}from'url';var At=".rapidkitrc.json",Kt=["rapidkit.config.js","rapidkit.config.mjs","rapidkit.config.cjs"];async function Qt(){let t=m.join(Mt.homedir(),At);try{let o=await promises.readFile(t,"utf-8"),e=JSON.parse(o);return a.debug(`Loaded config from ${t}`),e}catch{return a.debug("No user config found, using defaults"),{}}}async function Xt(t=process.cwd()){let o=t,e=m.parse(o).root;for(;o!==e;){for(let r of Kt){let a$1=m.join(o,r);try{await promises.access(a$1),a.debug(`Found config file: ${a$1}`);let p=await import(pathToFileURL(a$1).href),g=p.default||p;return a.debug(`Loaded RapidKit config from ${r}`),g}catch{continue}}o=m.dirname(o);}return a.debug("No RapidKit config file found, using defaults"),{}}function Zt(t,o,e){return {author:e.author||o.workspace?.defaultAuthor||t.author,pythonVersion:e.pythonVersion||o.workspace?.pythonVersion||t.pythonVersion,defaultInstallMethod:e.defaultInstallMethod||o.workspace?.installMethod||t.defaultInstallMethod,defaultKit:e.defaultKit||o.projects?.defaultKit||t.defaultKit,skipGit:e.skipGit??o.projects?.skipGit??t.skipGit,license:e.license||t.license,testRapidKitPath:e.testRapidKitPath||t.testRapidKitPath}}function L(t){return process.env.RAPIDKIT_DEV_PATH||t.testRapidKitPath||void 0}var C=class extends Error{constructor(e,r,a){super(e);this.code=r;this.details=a;this.name="RapidKitError",Error.captureStackTrace(this,this.constructor);}},F=class extends C{constructor(o,e){let r=e?`Python ${o}+ required, found ${e}`:`Python ${o}+ not found`;super(r,"PYTHON_NOT_FOUND","Please install Python from https://www.python.org/downloads/");}},G=class extends C{constructor(){super("Poetry is not installed","POETRY_NOT_FOUND","Install Poetry from https://python-poetry.org/docs/#installation");}},U=class extends C{constructor(){super("pipx is not installed","PIPX_NOT_FOUND","Install pipx from https://pypa.github.io/pipx/installation/");}},q=class extends C{constructor(o){super(`Directory "${o}" already exists`,"DIRECTORY_EXISTS","Please choose a different name or remove the existing directory");}},ht=class extends C{constructor(o,e){super(`Invalid project name: "${o}"`,"INVALID_PROJECT_NAME",e);}},I=class extends C{constructor(o,e){let r=`Installation failed at: ${o}`,a=`${e.message}
2
2
 
3
3
  Troubleshooting:
4
4
  - Check your internet connection
@@ -109,7 +109,7 @@ npx rapidkit dev
109
109
  cd <project-name>
110
110
  npx rapidkit init
111
111
  npx rapidkit dev
112
- `)+"```\n","utf-8"),!e){w.start("Initializing git repository");try{await execa("git",["init"],{cwd:i}),await execa("git",["add","."],{cwd:i}),await execa("git",["commit","-m","Initial commit: RapidKit workspace"],{cwd:i}),w.succeed("Git repository initialized");}catch{w.warn("Could not initialize git repository");}}try{let{registerWorkspace:k}=await import('./workspace-M2Y2ZVTK.js');await k(i,d);}catch{}if(console.log(n.green(`
112
+ `)+"```\n","utf-8"),!e){w.start("Initializing git repository");try{await execa("git",["init"],{cwd:i}),await execa("git",["add","."],{cwd:i}),await execa("git",["commit","-m","Initial commit: RapidKit workspace"],{cwd:i}),w.succeed("Git repository initialized");}catch{w.warn("Could not initialize git repository");}}try{let{registerWorkspace:k}=await import('./workspace-KRZ3DWL4.js');await k(i,d);}catch{}if(console.log(n.green(`
113
113
  \u2728 Workspace created!
114
114
  `)),console.log(n.cyan("\u{1F4C2} Location:"),n.white(i)),console.log(n.cyan(`
115
115
  \u{1F680} Get started:
@@ -123,7 +123,7 @@ npx rapidkit dev
123
123
  `)),console.log(n.cyan(`\u{1F4A1} How to install Python:
124
124
  `)),console.log(n.white(" Ubuntu / Debian: sudo apt install python3.10")),console.log(n.white(" macOS (Homebrew): brew install python@3.10")),console.log(n.white(` Windows: https://python.org/downloads
125
125
  `)),console.log(n.gray(` After installing Python, run: npx rapidkit ${d}
126
- `)),process.exit(1));}a.step(1,3,"Setting up RapidKit environment");let b=J("Creating directory").start();try{await v.ensureDir(i),b.succeed("Directory created"),b.start("Detecting Python version");let w=null,_=await _t(x.pythonVersion);if(_)w=await ft(_),w?(a.info(` Detected Python ${w}`),b.succeed(`Python ${w} detected`)):b.warn("Could not detect exact Python version");else {let k=$();w=await ft(k),w?b.succeed(`Python ${w} detected`):b.warn("Could not detect Python version, proceeding with defaults");}if(x.installMethod==="poetry"&&!await It()&&(b.warn("Poetry not found \u2014 auto-fallback to pip + venv"),x.installMethod="venv"),await at(i,d,x.installMethod,w||void 0),w&&await Dt(i,w),await lt(i,d,x.installMethod,w||x.pythonVersion,u||h),await Q(i),await st(i,d),x.installMethod==="poetry")try{await jt(i,x.pythonVersion,b,r,g,p);}catch(k){let j=k?.details||k?.message||String(k);if(j.includes("pyenv")||j.includes("exit status 127")||j.includes("returned non-zero exit status 127")){b.warn("Poetry encountered Python discovery issues, trying venv method"),a.debug(`Poetry error (attempting venv fallback): ${j}`);try{await dt(i,x.pythonVersion,b,r,g),x.installMethod="venv";}catch(pt){throw pt}}else throw k}else x.installMethod==="venv"?await dt(i,x.pythonVersion,b,r,g):await Et(i,b,r,g,p);if(await Rt(i,x.installMethod),await Ct(i,x.installMethod),b.succeed("RapidKit environment ready!"),!o.skipGit){b.start("Initializing git repository");try{await execa("git",["init"],{cwd:i}),await execa("git",["add","."],{cwd:i}),await execa("git",["commit","-m","Initial commit: RapidKit environment"],{cwd:i}),b.succeed("Git repository initialized");}catch{b.warn("Could not initialize git repository");}}try{let{registerWorkspace:k}=await import('./workspace-M2Y2ZVTK.js');await k(i,d);}catch{console.warn(n.gray("Note: Could not register workspace in shared registry"));}if(console.log(n.green(`
126
+ `)),process.exit(1));}a.step(1,3,"Setting up RapidKit environment");let b=J("Creating directory").start();try{await v.ensureDir(i),b.succeed("Directory created"),b.start("Detecting Python version");let w=null,_=await _t(x.pythonVersion);if(_)w=await ft(_),w?(a.info(` Detected Python ${w}`),b.succeed(`Python ${w} detected`)):b.warn("Could not detect exact Python version");else {let k=$();w=await ft(k),w?b.succeed(`Python ${w} detected`):b.warn("Could not detect Python version, proceeding with defaults");}if(x.installMethod==="poetry"&&!await It()&&(b.warn("Poetry not found \u2014 auto-fallback to pip + venv"),x.installMethod="venv"),await at(i,d,x.installMethod,w||void 0),w&&await Dt(i,w),await lt(i,d,x.installMethod,w||x.pythonVersion,u||h),await Q(i),await st(i,d),x.installMethod==="poetry")try{await jt(i,x.pythonVersion,b,r,g,p);}catch(k){let j=k?.details||k?.message||String(k);if(j.includes("pyenv")||j.includes("exit status 127")||j.includes("returned non-zero exit status 127")){b.warn("Poetry encountered Python discovery issues, trying venv method"),a.debug(`Poetry error (attempting venv fallback): ${j}`);try{await dt(i,x.pythonVersion,b,r,g),x.installMethod="venv";}catch(pt){throw pt}}else throw k}else x.installMethod==="venv"?await dt(i,x.pythonVersion,b,r,g):await Et(i,b,r,g,p);if(await Rt(i,x.installMethod),await Ct(i,x.installMethod),b.succeed("RapidKit environment ready!"),!o.skipGit){b.start("Initializing git repository");try{await execa("git",["init"],{cwd:i}),await execa("git",["add","."],{cwd:i}),await execa("git",["commit","-m","Initial commit: RapidKit environment"],{cwd:i}),b.succeed("Git repository initialized");}catch{b.warn("Could not initialize git repository");}}try{let{registerWorkspace:k}=await import('./workspace-KRZ3DWL4.js');await k(i,d);}catch{console.warn(n.gray("Note: Could not register workspace in shared registry"));}if(console.log(n.green(`
127
127
  \u2728 RapidKit environment created successfully!
128
128
  `)),console.log(n.cyan("\u{1F4C2} Location:"),n.white(i)),console.log(n.cyan(`\u{1F680} Get started:
129
129
  `)),console.log(n.white(` cd ${d}`)),x.installMethod==="poetry"){let k="source $(poetry env info --path)/bin/activate";try{T();let{stdout:j}=await execa("poetry",["--version"]),A=j.match(/Poetry.*?(\d+)\.(\d+)/);A&&(parseInt(A[1])>=2?k="source $(poetry env info --path)/bin/activate":k="poetry shell");}catch{}console.log(n.white(` ${k} # Or: poetry run rapidkit`)),console.log(n.white(" rapidkit create # Interactive mode")),console.log(n.white(" cd <project-name>")),console.log(n.white(" rapidkit init")),console.log(n.white(" rapidkit dev"));}else x.installMethod==="venv"?(console.log(n.white(" source .venv/bin/activate # On Windows: .venv\\Scripts\\activate")),console.log(n.white(" rapidkit create # Interactive mode")),console.log(n.white(" cd <project-name>")),console.log(n.white(" rapidkit init")),console.log(n.white(" rapidkit dev"))):(console.log(n.white(" rapidkit create # Interactive mode")),console.log(n.white(" cd <project-name>")),console.log(n.white(" rapidkit init")),console.log(n.white(" rapidkit dev")));console.log(n.white(`
@@ -164,7 +164,7 @@ Possible solutions:
164
164
  1. Check your internet connection
165
165
  2. Try installing manually: cd ${m.basename(t)} && ${f(".venv")} -m pip install rapidkit-core
166
166
  3. Use Poetry instead: npx rapidkit ${m.basename(t)} --install-method=poetry`))}}e.succeed("RapidKit installed in project virtualenv");try{let{checkRapidkitCoreAvailable:y}=await import('./pythonRapidkitExec-K2SFGAYJ.js');if(!await y()&&!r){e.start("Checking optional global pipx installation");let d=await X(e,true);try{e.start("Installing RapidKit globally with pipx for CLI access"),await O(d,["install","rapidkit-core"]),e.succeed("RapidKit installed globally");}catch(i){e.warn("Could not install globally (non-fatal, project virtualenv has RapidKit)"),a.debug(`pipx install failed: ${i}`);}}}catch(y){e.succeed("Skipped optional global pipx installation"),a.debug(`Global install check skipped: ${y}`);}}async function Et(t,o,e,r,a$1=false){let c=await X(o,a$1);if(o.start("Installing RapidKit globally with pipx"),e){let p=L(r||{});if(!p)throw new I("Test mode installation",new Error("No local RapidKit path configured. Set RAPIDKIT_DEV_PATH environment variable."));a.debug(`Installing from local path: ${p}`),o.text="Installing RapidKit from local path (test mode)",await O(c,["install","-e",p]);}else {o.text="Installing RapidKit from PyPI";try{await O(c,["install","rapidkit-core"]);}catch{throw new K}}o.succeed("RapidKit installed globally"),await v.outputFile(m.join(t,".rapidkit-global"),`RapidKit installed globally with pipx
167
- `,"utf-8");}async function xe(t,o){let{skipGit:e=false,testMode:r=false,userConfig:a$1={},yes:c=false,installMethod:p,pythonVersion:g="3.10"}=o||{},y=p||a$1.defaultInstallMethod||await(async()=>{try{return await execa("poetry",["--version"],{timeout:3e3}),"poetry"}catch{return a.warn("Poetry not found \u2014 auto-selecting venv. Pass --install-method poetry to override."),"venv"}})(),h=y==="poetry"&&!await It()?"venv":y;await at(t,m.basename(t),h),await Q(t),await lt(t,m.basename(t),h,g,o?.profile);let d=J("Registering workspace").start();try{h==="poetry"?(await st(t,m.basename(t)),await jt(t,g,d,r,a$1,c)):h==="venv"?await dt(t,g,d,r,a$1):await Et(t,d,r,a$1,c),await Rt(t,h),await Ct(t,h),d.succeed("Workspace registered");try{let{registerWorkspace:i}=await import('./workspace-M2Y2ZVTK.js');await i(t,m.basename(t));}catch{}if(!e){d.start("Initializing git repository");try{await execa("git",["init"],{cwd:t}),await execa("git",["add","."],{cwd:t}),await execa("git",["commit","-m","Initial commit: RapidKit workspace"],{cwd:t}),d.succeed("Git repository initialized");}catch{d.warn("Could not initialize git repository");}}}catch(i){throw d.fail("Failed to register workspace"),i}}async function Ct(t,o){let e=o==="poetry"?`source $(poetry env info --path)/bin/activate
167
+ `,"utf-8");}async function xe(t,o){let{skipGit:e=false,testMode:r=false,userConfig:a$1={},yes:c=false,installMethod:p,pythonVersion:g="3.10"}=o||{},y=p||a$1.defaultInstallMethod||await(async()=>{try{return await execa("poetry",["--version"],{timeout:3e3}),"poetry"}catch{return a.warn("Poetry not found \u2014 auto-selecting venv. Pass --install-method poetry to override."),"venv"}})(),h=y==="poetry"&&!await It()?"venv":y;await at(t,m.basename(t),h),await Q(t),await lt(t,m.basename(t),h,g,o?.profile);let d=J("Registering workspace").start();try{h==="poetry"?(await st(t,m.basename(t)),await jt(t,g,d,r,a$1,c)):h==="venv"?await dt(t,g,d,r,a$1):await Et(t,d,r,a$1,c),await Rt(t,h),await Ct(t,h),d.succeed("Workspace registered");try{let{registerWorkspace:i}=await import('./workspace-KRZ3DWL4.js');await i(t,m.basename(t));}catch{}if(!e){d.start("Initializing git repository");try{await execa("git",["init"],{cwd:t}),await execa("git",["add","."],{cwd:t}),await execa("git",["commit","-m","Initial commit: RapidKit workspace"],{cwd:t}),d.succeed("Git repository initialized");}catch{d.warn("Could not initialize git repository");}}}catch(i){throw d.fail("Failed to register workspace"),i}}async function Ct(t,o){let e=o==="poetry"?`source $(poetry env info --path)/bin/activate
168
168
  # Or simply use: poetry run rapidkit <command>`:o==="venv"?"source .venv/bin/activate # On Windows: .venv\\Scripts\\activate":"N/A (globally installed)",r=o==="poetry"?`# No activation needed (recommended):
169
169
  ./rapidkit --help
170
170
  # or:
@@ -1 +1 @@
1
- export{h as createProject,i as registerWorkspaceAtPath,f as syncWorkspaceFoundationFiles,g as writeWorkspaceLauncher}from'./chunk-CD534JH4.js';
1
+ export{h as createProject,i as registerWorkspaceAtPath,f as syncWorkspaceFoundationFiles,g as writeWorkspaceLauncher}from'./chunk-KAV65WZO.js';