workspai 0.76.0 → 0.77.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 +2 -2
- package/contracts/create-planner-capabilities.v1.json +24 -0
- package/contracts/runtime-command-surface.v1.json +3 -1
- package/contracts/workspace-intelligence/workspace-model.v1.json +4 -0
- package/contracts/workspace-intelligence-architecture.v1.json +3 -1
- package/dist/analyze-TJM66CPF.js +1 -0
- package/dist/autopilot-release-C7Q4OTPY.js +1 -0
- package/dist/capabilities-command-TIBIKWPK.js +1 -0
- package/dist/{chunk-Z2M2XCIB.js → chunk-223SWPTL.js} +1 -1
- package/dist/{chunk-RKFTUIZ4.js → chunk-3EMAC3MF.js} +1 -1
- package/dist/{chunk-BZLDCASY.js → chunk-3EPR3D5Q.js} +1 -1
- package/dist/{chunk-PUH3TSPC.js → chunk-3SQIV3F4.js} +1 -1
- package/dist/{chunk-HRGIHWYH.js → chunk-475GQJ2D.js} +1 -1
- package/dist/{chunk-FBF767WP.js → chunk-47UR6ZH4.js} +1 -1
- package/dist/{chunk-AGI46TSQ.js → chunk-4CXV3PPV.js} +1 -1
- package/dist/chunk-4ZUBPFSO.js +6 -0
- package/dist/chunk-5KXOV7W4.js +1 -0
- package/dist/{chunk-4MXKXHLW.js → chunk-DWKCFHHL.js} +1 -1
- package/dist/{chunk-L6VNI4DN.js → chunk-E7WJ2QX7.js} +1 -1
- package/dist/{chunk-KW35SWG6.js → chunk-GLBFY7AB.js} +2 -2
- package/dist/{chunk-KO4DM2AV.js → chunk-HRVHQBTA.js} +1 -1
- package/dist/{chunk-X7MDTBX5.js → chunk-IAXRGH4Q.js} +1 -1
- package/dist/{chunk-QIPW3G2H.js → chunk-IDETNYCF.js} +1 -1
- package/dist/{chunk-YLLCZMKP.js → chunk-IHWS3ALP.js} +1 -1
- package/dist/{chunk-R3Z4LY3O.js → chunk-J2MPBSQJ.js} +1 -1
- package/dist/{chunk-FD2ZGGCQ.js → chunk-JVZA35OL.js} +1 -1
- package/dist/{chunk-H4YHIOCT.js → chunk-LUPKDFQ3.js} +3 -3
- package/dist/chunk-N7DOKE7V.js +2 -0
- package/dist/{chunk-TJ3MDZMC.js → chunk-O3TVVQ6X.js} +1 -1
- package/dist/{chunk-4BBFEHPL.js → chunk-QCX6BO2M.js} +1 -1
- package/dist/{chunk-PSQPKK6H.js → chunk-SC43A6LH.js} +52 -52
- package/dist/chunk-SEZTSMRR.js +1 -0
- package/dist/{chunk-TFFNHWXY.js → chunk-TGNPMOM6.js} +1 -1
- package/dist/chunk-UNEK3VVR.js +2684 -0
- package/dist/{chunk-2I2A55RE.js → chunk-UP3UWAJV.js} +1 -1
- package/dist/{chunk-IKNWNGLY.js → chunk-UTIK3K3M.js} +1 -1
- package/dist/{chunk-UOTOJJI4.js → chunk-V6HVDVKJ.js} +5 -5
- package/dist/chunk-WC2K5QFI.js +10 -0
- package/dist/{chunk-ZXQC36NJ.js → chunk-X5XFT5UZ.js} +1 -1
- package/dist/{chunk-23CNBYIW.js → chunk-ZIWWE4BQ.js} +1 -1
- package/dist/{create-ZRUQ3KNZ.js → create-YPAZJYCE.js} +1 -1
- package/dist/{doctor-7V7LJLHX.js → doctor-W5PXJ5FL.js} +1 -1
- package/dist/{goal-lifecycle-EM4DUJCR.js → goal-lifecycle-5R55CA7H.js} +1 -1
- package/dist/{goal-pack-YMWZHAH6.js → goal-pack-IS6GGJPH.js} +1 -1
- package/dist/index.js +256 -247
- package/dist/{pipeline-6MBH3MU2.js → pipeline-LW3SW2WT.js} +1 -1
- package/dist/{project-agent-entry-ZXAE2MAJ.js → project-agent-entry-5TYKK5IV.js} +1 -1
- package/dist/{project-intelligence-lens-NBTPOK2R.js → project-intelligence-lens-TEOSTKNU.js} +1 -1
- package/dist/{project-test-coverage-HOZC72EK.js → project-test-coverage-T4TIWGKN.js} +1 -1
- package/dist/{proof-carrying-change-WJFAKK3C.js → proof-carrying-change-2TKRADCW.js} +1 -1
- package/dist/{verified-goal-B7EX2PBE.js → verified-goal-RN4TOV34.js} +1 -1
- package/dist/{workspace-EBPYCSEM.js → workspace-A33YMF2N.js} +1 -1
- package/dist/{workspace-agent-sync-Y4F6FBBC.js → workspace-agent-sync-VCA4G4DT.js} +1 -1
- package/dist/{workspace-context-Y7F7GJCQ.js → workspace-context-YBWLSKR6.js} +1 -1
- package/dist/{workspace-contract-XJMWMVQE.js → workspace-contract-3QUZDBMM.js} +1 -1
- package/dist/{workspace-explain-T2J5ZLY7.js → workspace-explain-NXYRAQFI.js} +1 -1
- package/dist/{workspace-foundation-2UP6IMTH.js → workspace-foundation-DZ52PECX.js} +1 -1
- package/dist/{workspace-graph-stream-MZVL3OCX.js → workspace-graph-stream-4VT46HZ7.js} +1 -1
- package/dist/{workspace-intelligence-FZRQIFFM.js → workspace-intelligence-FKYQQDJ6.js} +1 -1
- package/dist/{workspace-intelligence-runner-IXT62JG7.js → workspace-intelligence-runner-3K2JZH6Q.js} +1 -1
- package/dist/{workspace-knowledge-graph-EFC4TUDZ.js → workspace-knowledge-graph-CPBKNXQI.js} +1 -1
- package/dist/workspace-knowledge-graph-snapshot-67XDXUOT.js +1 -0
- package/dist/{workspace-mcp-serve-C42UUU7W.js → workspace-mcp-serve-UXPKX7K6.js} +1 -1
- package/dist/{workspace-model-72SJ6WXT.js → workspace-model-POCPMNRT.js} +1 -1
- package/dist/{workspace-onboarding-TFDAIHTS.js → workspace-onboarding-KLG3GG7S.js} +1 -1
- package/dist/{workspace-registry-summary-ZNTXSUI4.js → workspace-registry-summary-M4WMFDQ4.js} +1 -1
- package/dist/{workspace-repair-engine-542TAL3Z.js → workspace-repair-engine-2VGN42QD.js} +1 -1
- package/dist/workspace-run-5YQR7GEZ.js +1 -0
- package/dist/{workspace-verify-UXKENOQU.js → workspace-verify-PLAKTF3J.js} +1 -1
- package/dist/{workspace-watch-DV5AHLOK.js → workspace-watch-VNU4KVYN.js} +1 -1
- package/docs/README.md +2 -0
- package/docs/agent-framework-adapters.md +4 -0
- package/docs/ci-workflows.md +12 -1
- package/docs/commands-reference.md +2 -0
- package/docs/create-planner-capabilities.md +1 -0
- package/docs/creating-workspaces-and-projects.md +24 -7
- package/docs/doctor-command.md +3 -0
- package/docs/model-gateways.md +204 -0
- package/docs/native-kit-baselines.md +2 -1
- package/package.json +3 -1
- package/scripts/enterprise-package-smoke.mjs +102 -0
- package/dist/analyze-QVRVJB7I.js +0 -1
- package/dist/autopilot-release-DOGIETAT.js +0 -1
- package/dist/capabilities-command-FYBUVHZ7.js +0 -1
- package/dist/chunk-4R44E7HN.js +0 -6
- package/dist/chunk-5S6IZ6PY.js +0 -2
- package/dist/chunk-NSC4VWV2.js +0 -1
- package/dist/chunk-QFDTKOYS.js +0 -2649
- package/dist/chunk-QVFIR64T.js +0 -10
- package/dist/chunk-VODNLROY.js +0 -1
- package/dist/workspace-knowledge-graph-snapshot-QIMF7TCF.js +0 -1
- package/dist/workspace-run-NAPJYNSZ.js +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {a as a$1}from'./chunk-GR6442P7.js';import a from'fs';import s from'path';var v={nextjs:{key:"nextjs",runtime:"node",displayName:"Next.js",supportTier:"extended",importStack:"nextjs",aliases:["next","nextjs","next.js"],dependencyHints:["next"],scriptHints:["next dev","next build","next start"],fileHints:["next.config.js","next.config.mjs","next.config.ts"]},remix:{key:"remix",runtime:"node",displayName:"Remix",supportTier:"extended",importStack:"remix",aliases:["remix"],dependencyHints:["@remix-run/react","@remix-run/node","@remix-run/dev"],scriptHints:["remix dev","remix vite:dev"],fileHints:["remix.config.js","remix.config.mjs"]},nuxt:{key:"nuxt",runtime:"node",displayName:"Nuxt",supportTier:"extended",importStack:"nuxt",aliases:["nuxt","nuxtjs","nuxt.js"],dependencyHints:["nuxt","nuxt3"],scriptHints:["nuxt dev","nuxt build","nuxi dev","nuxi build"],fileHints:["nuxt.config.js","nuxt.config.ts","nuxt.config.mjs"]},react:{key:"react",runtime:"node",displayName:"React",supportTier:"extended",importStack:"react",aliases:["react"],dependencyHints:["react","react-dom"],scriptHints:["react-scripts start","react-scripts build"],fileHints:[]},vite:{key:"vite",runtime:"node",displayName:"Vite",supportTier:"extended",importStack:"vite",aliases:["vite"],dependencyHints:["vite"],scriptHints:["vite","vite dev","vite build"],fileHints:["vite.config.js","vite.config.ts","vite.config.mjs"]},vue:{key:"vue",runtime:"node",displayName:"Vue",supportTier:"extended",importStack:"vue",aliases:["vue","vuejs","vue.js"],dependencyHints:["vue","@vue/cli-service"],scriptHints:["vue-cli-service serve","vue-cli-service build"],fileHints:["vue.config.js"]},sveltekit:{key:"sveltekit",runtime:"node",displayName:"SvelteKit",supportTier:"extended",importStack:"sveltekit",aliases:["sveltekit","svelte-kit"],dependencyHints:["@sveltejs/kit"],scriptHints:["svelte-kit dev","svelte-kit build"],fileHints:["svelte.config.js"]},svelte:{key:"svelte",runtime:"node",displayName:"Svelte",supportTier:"extended",importStack:"svelte",aliases:["svelte"],dependencyHints:["svelte"],scriptHints:["svelte"],fileHints:[]},angular:{key:"angular",runtime:"node",displayName:"Angular",supportTier:"extended",importStack:"angular",aliases:["angular","@angular/core"],dependencyHints:["@angular/core","@angular/cli"],scriptHints:["ng serve","ng build"],fileHints:["angular.json"]},astro:{key:"astro",runtime:"node",displayName:"Astro",supportTier:"extended",importStack:"astro",aliases:["astro"],dependencyHints:["astro"],scriptHints:["astro dev","astro build"],fileHints:["astro.config.js","astro.config.ts","astro.config.mjs"]},solid:{key:"solid",runtime:"node",displayName:"Solid",supportTier:"extended",importStack:"solid",aliases:["solid","solidjs","solid-js"],dependencyHints:["solid-js"],scriptHints:[],fileHints:[]},unknown:{key:"unknown",runtime:"unknown",displayName:"Unknown frontend",supportTier:"observed",importStack:"unknown",aliases:["unknown"],dependencyHints:[],scriptHints:[],fileHints:[]}},se={nextjs:{dev:["dev"],start:["start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},remix:{dev:["dev"],start:["start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},nuxt:{dev:["dev"],start:["start","preview"],build:["build"],test:["test"],lint:["lint"],format:["format"]},react:{dev:["dev","start"],start:["serve"],build:["build"],test:["test"],lint:["lint"],format:["format"]},vite:{dev:["dev"],start:["preview","start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},vue:{dev:["dev","serve"],start:["preview","start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},sveltekit:{dev:["dev"],start:["start","preview"],build:["build"],test:["test"],lint:["lint"],format:["format"]},svelte:{dev:["dev"],start:["preview","start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},angular:{dev:["start","serve"],start:["serve"],build:["build"],test:["test"],lint:["lint"],format:["format"]},astro:{dev:["dev"],start:["start","preview"],build:["build"],test:["test"],lint:["lint"],format:["format"]},solid:{dev:["dev"],start:["preview","start"],build:["build"],test:["test"],lint:["lint"],format:["format"]}};function xe(e,n){let t=typeof e=="string"?L(e):e;return t==="unknown"?[]:se[t]?.[n]??[]}function oe(e){try{return a.existsSync(e)?JSON.parse(a.readFileSync(e,"utf8")):null}catch{return null}}function ae(e){let n=oe(s.join(e,"package.json"));if(!n)return {dependencies:{},scriptText:""};let t=n.dependencies??{},l=n.private===true&&(Array.isArray(n.workspaces)||n.workspaces!==null&&typeof n.workspaces=="object"||a.existsSync(s.join(e,"pnpm-workspace.yaml")))?t:{...t,...n.devDependencies??{},...n.peerDependencies??{}},m=n.scripts??{},d=Object.values(m).filter(c=>typeof c=="string").join(" ").toLowerCase();return {dependencies:l,scriptText:d}}function ue(e,n){return n.some(t=>a.existsSync(s.join(e,t)))}function de(e,n){let t=n.trim().split(/\s+/u).map(i=>i.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")).join("\\s+");return new RegExp(`(?:^|[\\s;&|])${t}(?=$|[\\s;&|])`,"u").test(e)}function E(e){return e.vite?e.react||e["react-dom"]||e["@vitejs/plugin-react"]?"react":e.vue||e["@vitejs/plugin-vue"]?"vue":e.svelte||e["@sveltejs/vite-plugin-svelte"]?"svelte":e["solid-js"]||e["vite-plugin-solid"]?"solid":null:null}function g(e,n,t){let i=v[e]??v.unknown;return {key:i.key,runtime:i.runtime,displayName:i.displayName,supportTier:i.supportTier,importStack:i.importStack,confidence:n,source:t}}function we(e){return v[e]??v.unknown}function L(e){let n=(e??"").trim().toLowerCase().replace(/[_\s]+/g,"-");if(!n)return "unknown";for(let t of Object.values(v))if(t.aliases.includes(n))return t.key;return "unknown"}function _(e,n){let t=n?.adoption,i=n?.import,l=t!==null&&typeof t=="object"&&!Array.isArray(t)&&t.managed_by==="workspai"&&t.mode==="linked"||i!==null&&typeof i=="object"&&!Array.isArray(i)&&i.managed_by==="workspai",m=L(l?void 0:typeof n?.framework=="string"?n.framework:typeof n?.kit_name=="string"?n.kit_name:typeof n?.kit=="string"?n.kit:void 0);if(m!=="unknown")return g(m,"high","framework");let{dependencies:d,scriptText:c}=ae(e);for(let p of ["nextjs","remix","nuxt","sveltekit","angular","astro","vue","solid","vite","react","svelte"]){let o=v[p];if(o.dependencyHints.some(f=>d[f])){if(p==="vite"){let f=E(d);if(f)return g(f,"high","manifest")}return g(p,"high","manifest")}if(o.fileHints.length>0&&ue(e,o.fileHints)){if(p==="vite"){let f=E(d);if(f)return g(f,"high","manifest")}return g(p,"high","manifest")}if(o.scriptHints.some(f=>de(c,f)))return g(p,"medium","manifest")}return g("unknown","low","unknown")}var x={"microsoft-agent-framework":{key:"microsoft-agent-framework",runtime:"python",displayName:"Microsoft Agent Framework",supportTier:"extended",importStack:"unknown",aliases:["microsoft-agent-framework","microsoft agent framework"],kitPrefixes:["agent.microsoft"]},"openai-agents":{key:"openai-agents",runtime:"python",displayName:"OpenAI Agents SDK",supportTier:"extended",importStack:"unknown",aliases:["openai-agents","openai agents","openai agents sdk"],kitPrefixes:["agent.openai"]},fastapi:{key:"fastapi",runtime:"python",displayName:"FastAPI",supportTier:"first-class",importStack:"fastapi",aliases:["fastapi"],kitPrefixes:["fastapi"]},django:{key:"django",runtime:"python",displayName:"Django",supportTier:"extended",importStack:"django",aliases:["django"]},flask:{key:"flask",runtime:"python",displayName:"Flask",supportTier:"extended",importStack:"flask",aliases:["flask"]},python:{key:"python",runtime:"python",displayName:"Python",supportTier:"observed",importStack:"unknown",aliases:["python"]},nestjs:{key:"nestjs",runtime:"node",displayName:"NestJS",supportTier:"first-class",importStack:"nestjs",aliases:["nestjs","nest"],kitPrefixes:["nestjs"]},nextjs:{key:"nextjs",runtime:"node",displayName:"Next.js",supportTier:"extended",importStack:"nextjs",aliases:["nextjs","next.js","next"]},remix:{key:"remix",runtime:"node",displayName:"Remix",supportTier:"extended",importStack:"remix",aliases:["remix"]},nuxt:{key:"nuxt",runtime:"node",displayName:"Nuxt",supportTier:"extended",importStack:"nuxt",aliases:["nuxt","nuxtjs","nuxt.js"]},react:{key:"react",runtime:"node",displayName:"React",supportTier:"extended",importStack:"react",aliases:["react"]},vite:{key:"vite",runtime:"node",displayName:"Vite",supportTier:"extended",importStack:"vite",aliases:["vite"]},vue:{key:"vue",runtime:"node",displayName:"Vue",supportTier:"extended",importStack:"vue",aliases:["vue","vuejs","vue.js"]},sveltekit:{key:"sveltekit",runtime:"node",displayName:"SvelteKit",supportTier:"extended",importStack:"sveltekit",aliases:["sveltekit","svelte-kit"]},svelte:{key:"svelte",runtime:"node",displayName:"Svelte",supportTier:"extended",importStack:"svelte",aliases:["svelte"]},angular:{key:"angular",runtime:"node",displayName:"Angular",supportTier:"extended",importStack:"angular",aliases:["angular","@angular/core"]},astro:{key:"astro",runtime:"node",displayName:"Astro",supportTier:"extended",importStack:"astro",aliases:["astro"]},solid:{key:"solid",runtime:"node",displayName:"Solid",supportTier:"extended",importStack:"solid",aliases:["solid","solidjs","solid-js"]},express:{key:"express",runtime:"node",displayName:"Express",supportTier:"extended",importStack:"express",aliases:["express"]},fastify:{key:"fastify",runtime:"node",displayName:"Fastify",supportTier:"extended",importStack:"unknown",aliases:["fastify"]},koa:{key:"koa",runtime:"node",displayName:"Koa",supportTier:"extended",importStack:"koa",aliases:["koa"]},node:{key:"node",runtime:"node",displayName:"Node.js",supportTier:"observed",importStack:"unknown",aliases:["node","nodejs","typescript","javascript"]},gofiber:{key:"gofiber",runtime:"go",displayName:"Go/Fiber",supportTier:"extended",importStack:"go",aliases:["gofiber","fiber","go-fiber","go/fiber"],kitPrefixes:["gofiber"]},gogin:{key:"gogin",runtime:"go",displayName:"Go/Gin",supportTier:"extended",importStack:"go",aliases:["gogin","gin","go-gin","go/gin"],kitPrefixes:["gogin"]},echo:{key:"echo",runtime:"go",displayName:"Echo",supportTier:"extended",importStack:"go",aliases:["echo"]},go:{key:"go",runtime:"go",displayName:"Go",supportTier:"observed",importStack:"go",aliases:["go","golang"],kitPrefixes:["go"]},springboot:{key:"springboot",runtime:"java",displayName:"Spring Boot",supportTier:"extended",importStack:"springboot",aliases:["springboot","spring","spring-boot"],kitPrefixes:["springboot"]},java:{key:"java",runtime:"java",displayName:"Java",supportTier:"observed",importStack:"unknown",aliases:["java"]},laravel:{key:"laravel",runtime:"php",displayName:"Laravel",supportTier:"extended",importStack:"unknown",aliases:["laravel"]},symfony:{key:"symfony",runtime:"php",displayName:"Symfony",supportTier:"extended",importStack:"unknown",aliases:["symfony"]},php:{key:"php",runtime:"php",displayName:"PHP",supportTier:"observed",importStack:"unknown",aliases:["php"]},rails:{key:"rails",runtime:"ruby",displayName:"Ruby on Rails",supportTier:"extended",importStack:"rails",aliases:["rails","ruby-on-rails","ruby on rails"]},sinatra:{key:"sinatra",runtime:"ruby",displayName:"Sinatra",supportTier:"extended",importStack:"unknown",aliases:["sinatra"]},ruby:{key:"ruby",runtime:"ruby",displayName:"Ruby",supportTier:"observed",importStack:"unknown",aliases:["ruby"]},dotnet:{key:"dotnet",runtime:"dotnet",displayName:"ASP.NET Core",supportTier:"extended",importStack:"dotnet",aliases:["dotnet","asp.net","aspnet","asp.net core","csharp","c#"],kitPrefixes:["dotnet","aspnet","aspnetcore"]},actix:{key:"actix",runtime:"rust",displayName:"Actix-web",supportTier:"extended",importStack:"unknown",aliases:["actix","actix-web"]},axum:{key:"axum",runtime:"rust",displayName:"Axum",supportTier:"extended",importStack:"unknown",aliases:["axum"]},rocket:{key:"rocket",runtime:"rust",displayName:"Rocket",supportTier:"extended",importStack:"unknown",aliases:["rocket"]},rust:{key:"rust",runtime:"rust",displayName:"Rust",supportTier:"observed",importStack:"unknown",aliases:["rust"]},phoenix:{key:"phoenix",runtime:"elixir",displayName:"Phoenix",supportTier:"extended",importStack:"unknown",aliases:["phoenix"]},elixir:{key:"elixir",runtime:"elixir",displayName:"Elixir",supportTier:"observed",importStack:"unknown",aliases:["elixir"]},clojure:{key:"clojure",runtime:"clojure",displayName:"Clojure",supportTier:"extended",importStack:"unknown",aliases:["clojure"]},scala:{key:"scala",runtime:"scala",displayName:"Scala",supportTier:"extended",importStack:"unknown",aliases:["scala"]},kotlin:{key:"kotlin",runtime:"kotlin",displayName:"Kotlin",supportTier:"extended",importStack:"unknown",aliases:["kotlin"]},deno:{key:"deno",runtime:"deno",displayName:"Deno",supportTier:"extended",importStack:"unknown",aliases:["deno"]},bun:{key:"bun",runtime:"bun",displayName:"Bun",supportTier:"extended",importStack:"unknown",aliases:["bun"]},tauri:{key:"tauri",runtime:"node",displayName:"Tauri",supportTier:"extended",importStack:"unknown",aliases:["tauri","tauri-app"],kitPrefixes:["desktop.tauri"]},electron:{key:"electron",runtime:"node",displayName:"Electron",supportTier:"extended",importStack:"unknown",aliases:["electron","electron-forge"],kitPrefixes:["desktop.electron"]},"vscode-extension":{key:"vscode-extension",runtime:"node",displayName:"VS Code Extension",supportTier:"extended",importStack:"unknown",aliases:["vscode-extension","visual-studio-code-extension"],kitPrefixes:["extension.vscode"]},c:{key:"c",runtime:"c",displayName:"C",supportTier:"observed",importStack:"unknown",aliases:["c","clang","gcc"]},cpp:{key:"cpp",runtime:"cpp",displayName:"C++",supportTier:"observed",importStack:"unknown",aliases:["cpp","c++","cplusplus","cc","clang++","g++"]},unknown:{key:"unknown",runtime:"unknown",displayName:"Unknown",supportTier:"observed",importStack:"unknown",aliases:["unknown"]}},Z=new Map;for(let e of Object.values(x))for(let n of e.aliases)Z.set(n,e.key);function r(e,n,t){let i=x[e]??x.unknown;return {key:i.key,runtime:i.runtime,displayName:i.displayName,supportTier:i.supportTier,importStack:i.importStack,confidence:n,source:t}}function J(e){return e.trim().toLowerCase().replace(/[_\s]+/g,"-")}function k(e){try{return a.existsSync(e)?a.readFileSync(e,"utf8").toLowerCase():""}catch{return ""}}function P(e){try{return a.existsSync(e)?JSON.parse(a.readFileSync(e,"utf8")):null}catch{return null}}var ee=new Set([".git",".hg",".svn",".workspai",".rapidkit",".venv","venv","node_modules","vendor","dist","build","target","coverage",".next",".cache","test","tests","spec","specs","testdata","fixtures","__fixtures__"]);function B(e,n){if(n<0||!a.existsSync(e))return [];let t=[],i=[];try{i=a.readdirSync(e,{withFileTypes:true});}catch{return []}for(let l of i){let m=s.join(e,l.name);l.isDirectory()?t.push(...B(m,n-1)):t.push(m);}return t}function ne(e,n){if(n<0||!a.existsSync(e))return [];let t=[];try{t=a.readdirSync(e,{withFileTypes:true});}catch{return []}let i=[];for(let l of t){let m=s.join(e,l.name);if(l.isDirectory()){if(ee.has(l.name)||a$1(l.name))continue;i.push(...ne(m,n-1));}else i.push(m);}return i}function y(e,n,t=2){return B(e,t).some(i=>i.toLowerCase().endsWith(n.toLowerCase()))}function ce(e){let n;try{n=a.readdirSync(e,{withFileTypes:true});}catch{return false}let t=0;for(let i of n){if(!i.isDirectory()||ee.has(i.name)||a$1(i.name))continue;let l=s.join(e,i.name);if((a.existsSync(s.join(l,"CMakeLists.txt"))||a.existsSync(s.join(l,"meson.build")))&&(t+=1,t>=3))return true}return false}function h(e,n,t=2){return B(e,t).filter(i=>i.toLowerCase().endsWith(n.toLowerCase()))}function le(e){let n=J(e??"");if(!n)return "unknown";for(let t of Object.values(x))if(t.kitPrefixes?.some(i=>n.startsWith(i)))return t.key;return "unknown"}function b(e){return e?Z.get(J(e))??"unknown":"unknown"}function Te(e){return b(e)}function I(e){let n=b(e);return n!=="unknown"?x[n].runtime:"unknown"}function he(e){let n=x[e]??x.unknown;return {key:n.key,runtime:n.runtime,displayName:n.displayName,supportTier:n.supportTier,importStack:n.importStack}}function O(e){return e==="microsoft-agent-framework"||e==="openai-agents"}function M(e){let n=le(e.kitName);if(n!=="unknown"){let l=r(n,"high","kit");return O(n)&&e.runtime?{...l,runtime:I(e.runtime)}:l}let t=b(e.framework);if(t!=="unknown"){let l=r(t,"high","framework");return O(t)&&e.runtime?{...l,runtime:I(e.runtime)}:l}let i=b(e.runtime);return i!=="unknown"?r(i,"medium","runtime"):r("unknown","low","unknown")}function me(e){let n=e?.adoption;if(n&&typeof n=="object"&&!Array.isArray(n)){let i=n;if(i.managed_by==="workspai"&&i.mode==="linked")return true}let t=e?.import;return t!==null&&typeof t=="object"&&!Array.isArray(t)&&t.managed_by==="workspai"}function W(e){let n=P(s.join(e,"package.json"));if(!n)return r("unknown","low","unknown");let t=n.dependencies??{},i=n.devDependencies??{},m=n.private===true&&(Array.isArray(n.workspaces)||n.workspaces!==null&&typeof n.workspaces=="object"||a.existsSync(s.join(e,"pnpm-workspace.yaml")))?t:{...t,...i},d=n.scripts??{},c=Object.values(d).filter(p=>typeof p=="string").join(" ").toLowerCase();return m["@nestjs/core"]||c.includes("nest start")?r("nestjs","high","manifest"):m.express?r("express","high","manifest"):m.fastify?r("fastify","high","manifest"):m.koa?r("koa","high","manifest"):r("node","medium","marker")}function ke(e){let n=P(s.join(e,"package.json"));if(!n)return r("unknown","low","unknown");let t={...n.dependencies??{},...n.devDependencies??{}},i=n.engines??{},l=n.scripts??{},m=Object.values(l).filter(d=>typeof d=="string").join(" ").toLowerCase();return t["@tauri-apps/api"]||t["@tauri-apps/cli"]||a.existsSync(s.join(e,"src-tauri","Cargo.toml"))?r("tauri","high","manifest"):t.electron||t["@electron-forge/cli"]||m.includes("electron-forge")||m.includes("electron ")?r("electron","high","manifest"):typeof i.vscode=="string"&&(n.activationEvents!==void 0||n.contributes!==void 0)?r("vscode-extension","high","manifest"):r("unknown","low","unknown")}function G(e){let n=[k(s.join(e,"pyproject.toml")),k(s.join(e,"requirements.txt")),k(s.join(e,"requirements.in"))].join(`
|
|
1
|
+
import {a as a$1}from'./chunk-GR6442P7.js';import a from'fs';import s from'path';var v={nextjs:{key:"nextjs",runtime:"node",displayName:"Next.js",supportTier:"extended",importStack:"nextjs",aliases:["next","nextjs","next.js"],dependencyHints:["next"],scriptHints:["next dev","next build","next start"],fileHints:["next.config.js","next.config.mjs","next.config.ts"]},remix:{key:"remix",runtime:"node",displayName:"Remix",supportTier:"extended",importStack:"remix",aliases:["remix"],dependencyHints:["@remix-run/react","@remix-run/node","@remix-run/dev"],scriptHints:["remix dev","remix vite:dev"],fileHints:["remix.config.js","remix.config.mjs"]},nuxt:{key:"nuxt",runtime:"node",displayName:"Nuxt",supportTier:"extended",importStack:"nuxt",aliases:["nuxt","nuxtjs","nuxt.js"],dependencyHints:["nuxt","nuxt3"],scriptHints:["nuxt dev","nuxt build","nuxi dev","nuxi build"],fileHints:["nuxt.config.js","nuxt.config.ts","nuxt.config.mjs"]},react:{key:"react",runtime:"node",displayName:"React",supportTier:"extended",importStack:"react",aliases:["react"],dependencyHints:["react","react-dom"],scriptHints:["react-scripts start","react-scripts build"],fileHints:[]},vite:{key:"vite",runtime:"node",displayName:"Vite",supportTier:"extended",importStack:"vite",aliases:["vite"],dependencyHints:["vite"],scriptHints:["vite","vite dev","vite build"],fileHints:["vite.config.js","vite.config.ts","vite.config.mjs"]},vue:{key:"vue",runtime:"node",displayName:"Vue",supportTier:"extended",importStack:"vue",aliases:["vue","vuejs","vue.js"],dependencyHints:["vue","@vue/cli-service"],scriptHints:["vue-cli-service serve","vue-cli-service build"],fileHints:["vue.config.js"]},sveltekit:{key:"sveltekit",runtime:"node",displayName:"SvelteKit",supportTier:"extended",importStack:"sveltekit",aliases:["sveltekit","svelte-kit"],dependencyHints:["@sveltejs/kit"],scriptHints:["svelte-kit dev","svelte-kit build"],fileHints:["svelte.config.js"]},svelte:{key:"svelte",runtime:"node",displayName:"Svelte",supportTier:"extended",importStack:"svelte",aliases:["svelte"],dependencyHints:["svelte"],scriptHints:["svelte"],fileHints:[]},angular:{key:"angular",runtime:"node",displayName:"Angular",supportTier:"extended",importStack:"angular",aliases:["angular","@angular/core"],dependencyHints:["@angular/core","@angular/cli"],scriptHints:["ng serve","ng build"],fileHints:["angular.json"]},astro:{key:"astro",runtime:"node",displayName:"Astro",supportTier:"extended",importStack:"astro",aliases:["astro"],dependencyHints:["astro"],scriptHints:["astro dev","astro build"],fileHints:["astro.config.js","astro.config.ts","astro.config.mjs"]},solid:{key:"solid",runtime:"node",displayName:"Solid",supportTier:"extended",importStack:"solid",aliases:["solid","solidjs","solid-js"],dependencyHints:["solid-js"],scriptHints:[],fileHints:[]},unknown:{key:"unknown",runtime:"unknown",displayName:"Unknown frontend",supportTier:"observed",importStack:"unknown",aliases:["unknown"],dependencyHints:[],scriptHints:[],fileHints:[]}},se={nextjs:{dev:["dev"],start:["start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},remix:{dev:["dev"],start:["start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},nuxt:{dev:["dev"],start:["start","preview"],build:["build"],test:["test"],lint:["lint"],format:["format"]},react:{dev:["dev","start"],start:["serve"],build:["build"],test:["test"],lint:["lint"],format:["format"]},vite:{dev:["dev"],start:["preview","start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},vue:{dev:["dev","serve"],start:["preview","start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},sveltekit:{dev:["dev"],start:["start","preview"],build:["build"],test:["test"],lint:["lint"],format:["format"]},svelte:{dev:["dev"],start:["preview","start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},angular:{dev:["start","serve"],start:["serve"],build:["build"],test:["test"],lint:["lint"],format:["format"]},astro:{dev:["dev"],start:["start","preview"],build:["build"],test:["test"],lint:["lint"],format:["format"]},solid:{dev:["dev"],start:["preview","start"],build:["build"],test:["test"],lint:["lint"],format:["format"]}};function we(e,n){let t=typeof e=="string"?L(e):e;return t==="unknown"?[]:se[t]?.[n]??[]}function oe(e){try{return a.existsSync(e)?JSON.parse(a.readFileSync(e,"utf8")):null}catch{return null}}function ae(e){let n=oe(s.join(e,"package.json"));if(!n)return {dependencies:{},scriptText:""};let t=n.dependencies??{},l=n.private===true&&(Array.isArray(n.workspaces)||n.workspaces!==null&&typeof n.workspaces=="object"||a.existsSync(s.join(e,"pnpm-workspace.yaml")))?t:{...t,...n.devDependencies??{},...n.peerDependencies??{}},m=n.scripts??{},d=Object.values(m).filter(c=>typeof c=="string").join(" ").toLowerCase();return {dependencies:l,scriptText:d}}function ue(e,n){return n.some(t=>a.existsSync(s.join(e,t)))}function de(e,n){let t=n.trim().split(/\s+/u).map(i=>i.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")).join("\\s+");return new RegExp(`(?:^|[\\s;&|])${t}(?=$|[\\s;&|])`,"u").test(e)}function E(e){return e.vite?e.react||e["react-dom"]||e["@vitejs/plugin-react"]?"react":e.vue||e["@vitejs/plugin-vue"]?"vue":e.svelte||e["@sveltejs/vite-plugin-svelte"]?"svelte":e["solid-js"]||e["vite-plugin-solid"]?"solid":null:null}function g(e,n,t){let i=v[e]??v.unknown;return {key:i.key,runtime:i.runtime,displayName:i.displayName,supportTier:i.supportTier,importStack:i.importStack,confidence:n,source:t}}function ve(e){return v[e]??v.unknown}function L(e){let n=(e??"").trim().toLowerCase().replace(/[_\s]+/g,"-");if(!n)return "unknown";for(let t of Object.values(v))if(t.aliases.includes(n))return t.key;return "unknown"}function _(e,n){let t=n?.adoption,i=n?.import,l=t!==null&&typeof t=="object"&&!Array.isArray(t)&&t.managed_by==="workspai"&&t.mode==="linked"||i!==null&&typeof i=="object"&&!Array.isArray(i)&&i.managed_by==="workspai",m=L(l?void 0:typeof n?.framework=="string"?n.framework:typeof n?.kit_name=="string"?n.kit_name:typeof n?.kit=="string"?n.kit:void 0);if(m!=="unknown")return g(m,"high","framework");let{dependencies:d,scriptText:c}=ae(e);for(let p of ["nextjs","remix","nuxt","sveltekit","angular","astro","vue","solid","vite","react","svelte"]){let o=v[p];if(o.dependencyHints.some(f=>d[f])){if(p==="vite"){let f=E(d);if(f)return g(f,"high","manifest")}return g(p,"high","manifest")}if(o.fileHints.length>0&&ue(e,o.fileHints)){if(p==="vite"){let f=E(d);if(f)return g(f,"high","manifest")}return g(p,"high","manifest")}if(o.scriptHints.some(f=>de(c,f)))return g(p,"medium","manifest")}return g("unknown","low","unknown")}var x={"microsoft-agent-framework":{key:"microsoft-agent-framework",runtime:"python",displayName:"Microsoft Agent Framework",supportTier:"extended",importStack:"unknown",aliases:["microsoft-agent-framework","microsoft agent framework"],kitPrefixes:["agent.microsoft"]},"openai-agents":{key:"openai-agents",runtime:"python",displayName:"OpenAI Agents SDK",supportTier:"extended",importStack:"unknown",aliases:["openai-agents","openai agents","openai agents sdk"],kitPrefixes:["agent.openai"]},openrouter:{key:"openrouter",runtime:"node",displayName:"OpenRouter",supportTier:"extended",importStack:"unknown",aliases:["openrouter"],kitPrefixes:["gateway.openrouter"]},fastapi:{key:"fastapi",runtime:"python",displayName:"FastAPI",supportTier:"first-class",importStack:"fastapi",aliases:["fastapi"],kitPrefixes:["fastapi"]},django:{key:"django",runtime:"python",displayName:"Django",supportTier:"extended",importStack:"django",aliases:["django"]},flask:{key:"flask",runtime:"python",displayName:"Flask",supportTier:"extended",importStack:"flask",aliases:["flask"]},python:{key:"python",runtime:"python",displayName:"Python",supportTier:"observed",importStack:"unknown",aliases:["python"]},nestjs:{key:"nestjs",runtime:"node",displayName:"NestJS",supportTier:"first-class",importStack:"nestjs",aliases:["nestjs","nest"],kitPrefixes:["nestjs"]},nextjs:{key:"nextjs",runtime:"node",displayName:"Next.js",supportTier:"extended",importStack:"nextjs",aliases:["nextjs","next.js","next"]},remix:{key:"remix",runtime:"node",displayName:"Remix",supportTier:"extended",importStack:"remix",aliases:["remix"]},nuxt:{key:"nuxt",runtime:"node",displayName:"Nuxt",supportTier:"extended",importStack:"nuxt",aliases:["nuxt","nuxtjs","nuxt.js"]},react:{key:"react",runtime:"node",displayName:"React",supportTier:"extended",importStack:"react",aliases:["react"]},vite:{key:"vite",runtime:"node",displayName:"Vite",supportTier:"extended",importStack:"vite",aliases:["vite"]},vue:{key:"vue",runtime:"node",displayName:"Vue",supportTier:"extended",importStack:"vue",aliases:["vue","vuejs","vue.js"]},sveltekit:{key:"sveltekit",runtime:"node",displayName:"SvelteKit",supportTier:"extended",importStack:"sveltekit",aliases:["sveltekit","svelte-kit"]},svelte:{key:"svelte",runtime:"node",displayName:"Svelte",supportTier:"extended",importStack:"svelte",aliases:["svelte"]},angular:{key:"angular",runtime:"node",displayName:"Angular",supportTier:"extended",importStack:"angular",aliases:["angular","@angular/core"]},astro:{key:"astro",runtime:"node",displayName:"Astro",supportTier:"extended",importStack:"astro",aliases:["astro"]},solid:{key:"solid",runtime:"node",displayName:"Solid",supportTier:"extended",importStack:"solid",aliases:["solid","solidjs","solid-js"]},express:{key:"express",runtime:"node",displayName:"Express",supportTier:"extended",importStack:"express",aliases:["express"]},fastify:{key:"fastify",runtime:"node",displayName:"Fastify",supportTier:"extended",importStack:"unknown",aliases:["fastify"]},koa:{key:"koa",runtime:"node",displayName:"Koa",supportTier:"extended",importStack:"koa",aliases:["koa"]},node:{key:"node",runtime:"node",displayName:"Node.js",supportTier:"observed",importStack:"unknown",aliases:["node","nodejs","typescript","javascript"]},gofiber:{key:"gofiber",runtime:"go",displayName:"Go/Fiber",supportTier:"extended",importStack:"go",aliases:["gofiber","fiber","go-fiber","go/fiber"],kitPrefixes:["gofiber"]},gogin:{key:"gogin",runtime:"go",displayName:"Go/Gin",supportTier:"extended",importStack:"go",aliases:["gogin","gin","go-gin","go/gin"],kitPrefixes:["gogin"]},echo:{key:"echo",runtime:"go",displayName:"Echo",supportTier:"extended",importStack:"go",aliases:["echo"]},go:{key:"go",runtime:"go",displayName:"Go",supportTier:"observed",importStack:"go",aliases:["go","golang"],kitPrefixes:["go"]},springboot:{key:"springboot",runtime:"java",displayName:"Spring Boot",supportTier:"extended",importStack:"springboot",aliases:["springboot","spring","spring-boot"],kitPrefixes:["springboot"]},java:{key:"java",runtime:"java",displayName:"Java",supportTier:"observed",importStack:"unknown",aliases:["java"]},laravel:{key:"laravel",runtime:"php",displayName:"Laravel",supportTier:"extended",importStack:"unknown",aliases:["laravel"]},symfony:{key:"symfony",runtime:"php",displayName:"Symfony",supportTier:"extended",importStack:"unknown",aliases:["symfony"]},php:{key:"php",runtime:"php",displayName:"PHP",supportTier:"observed",importStack:"unknown",aliases:["php"]},rails:{key:"rails",runtime:"ruby",displayName:"Ruby on Rails",supportTier:"extended",importStack:"rails",aliases:["rails","ruby-on-rails","ruby on rails"]},sinatra:{key:"sinatra",runtime:"ruby",displayName:"Sinatra",supportTier:"extended",importStack:"unknown",aliases:["sinatra"]},ruby:{key:"ruby",runtime:"ruby",displayName:"Ruby",supportTier:"observed",importStack:"unknown",aliases:["ruby"]},dotnet:{key:"dotnet",runtime:"dotnet",displayName:"ASP.NET Core",supportTier:"extended",importStack:"dotnet",aliases:["dotnet","asp.net","aspnet","asp.net core","csharp","c#"],kitPrefixes:["dotnet","aspnet","aspnetcore"]},actix:{key:"actix",runtime:"rust",displayName:"Actix-web",supportTier:"extended",importStack:"unknown",aliases:["actix","actix-web"]},axum:{key:"axum",runtime:"rust",displayName:"Axum",supportTier:"extended",importStack:"unknown",aliases:["axum"]},rocket:{key:"rocket",runtime:"rust",displayName:"Rocket",supportTier:"extended",importStack:"unknown",aliases:["rocket"]},rust:{key:"rust",runtime:"rust",displayName:"Rust",supportTier:"observed",importStack:"unknown",aliases:["rust"]},phoenix:{key:"phoenix",runtime:"elixir",displayName:"Phoenix",supportTier:"extended",importStack:"unknown",aliases:["phoenix"]},elixir:{key:"elixir",runtime:"elixir",displayName:"Elixir",supportTier:"observed",importStack:"unknown",aliases:["elixir"]},clojure:{key:"clojure",runtime:"clojure",displayName:"Clojure",supportTier:"extended",importStack:"unknown",aliases:["clojure"]},scala:{key:"scala",runtime:"scala",displayName:"Scala",supportTier:"extended",importStack:"unknown",aliases:["scala"]},kotlin:{key:"kotlin",runtime:"kotlin",displayName:"Kotlin",supportTier:"extended",importStack:"unknown",aliases:["kotlin"]},deno:{key:"deno",runtime:"deno",displayName:"Deno",supportTier:"extended",importStack:"unknown",aliases:["deno"]},bun:{key:"bun",runtime:"bun",displayName:"Bun",supportTier:"extended",importStack:"unknown",aliases:["bun"]},tauri:{key:"tauri",runtime:"node",displayName:"Tauri",supportTier:"extended",importStack:"unknown",aliases:["tauri","tauri-app"],kitPrefixes:["desktop.tauri"]},electron:{key:"electron",runtime:"node",displayName:"Electron",supportTier:"extended",importStack:"unknown",aliases:["electron","electron-forge"],kitPrefixes:["desktop.electron"]},"vscode-extension":{key:"vscode-extension",runtime:"node",displayName:"VS Code Extension",supportTier:"extended",importStack:"unknown",aliases:["vscode-extension","visual-studio-code-extension"],kitPrefixes:["extension.vscode"]},c:{key:"c",runtime:"c",displayName:"C",supportTier:"observed",importStack:"unknown",aliases:["c","clang","gcc"]},cpp:{key:"cpp",runtime:"cpp",displayName:"C++",supportTier:"observed",importStack:"unknown",aliases:["cpp","c++","cplusplus","cc","clang++","g++"]},unknown:{key:"unknown",runtime:"unknown",displayName:"Unknown",supportTier:"observed",importStack:"unknown",aliases:["unknown"]}},Z=new Map;for(let e of Object.values(x))for(let n of e.aliases)Z.set(n,e.key);function r(e,n,t){let i=x[e]??x.unknown;return {key:i.key,runtime:i.runtime,displayName:i.displayName,supportTier:i.supportTier,importStack:i.importStack,confidence:n,source:t}}function J(e){return e.trim().toLowerCase().replace(/[_\s]+/g,"-")}function k(e){try{return a.existsSync(e)?a.readFileSync(e,"utf8").toLowerCase():""}catch{return ""}}function P(e){try{return a.existsSync(e)?JSON.parse(a.readFileSync(e,"utf8")):null}catch{return null}}var ee=new Set([".git",".hg",".svn",".workspai",".rapidkit",".venv","venv","node_modules","vendor","dist","build","target","coverage",".next",".cache","test","tests","spec","specs","testdata","fixtures","__fixtures__"]);function B(e,n){if(n<0||!a.existsSync(e))return [];let t=[],i=[];try{i=a.readdirSync(e,{withFileTypes:true});}catch{return []}for(let l of i){let m=s.join(e,l.name);l.isDirectory()?t.push(...B(m,n-1)):t.push(m);}return t}function ne(e,n){if(n<0||!a.existsSync(e))return [];let t=[];try{t=a.readdirSync(e,{withFileTypes:true});}catch{return []}let i=[];for(let l of t){let m=s.join(e,l.name);if(l.isDirectory()){if(ee.has(l.name)||a$1(l.name))continue;i.push(...ne(m,n-1));}else i.push(m);}return i}function y(e,n,t=2){return B(e,t).some(i=>i.toLowerCase().endsWith(n.toLowerCase()))}function ce(e){let n;try{n=a.readdirSync(e,{withFileTypes:true});}catch{return false}let t=0;for(let i of n){if(!i.isDirectory()||ee.has(i.name)||a$1(i.name))continue;let l=s.join(e,i.name);if((a.existsSync(s.join(l,"CMakeLists.txt"))||a.existsSync(s.join(l,"meson.build")))&&(t+=1,t>=3))return true}return false}function h(e,n,t=2){return B(e,t).filter(i=>i.toLowerCase().endsWith(n.toLowerCase()))}function le(e){let n=J(e??"");if(!n)return "unknown";for(let t of Object.values(x))if(t.kitPrefixes?.some(i=>n.startsWith(i)))return t.key;return "unknown"}function b(e){return e?Z.get(J(e))??"unknown":"unknown"}function he(e){return b(e)}function I(e){let n=b(e);return n!=="unknown"?x[n].runtime:"unknown"}function Be(e){let n=x[e]??x.unknown;return {key:n.key,runtime:n.runtime,displayName:n.displayName,supportTier:n.supportTier,importStack:n.importStack}}function me(e){return e==="microsoft-agent-framework"||e==="openai-agents"}function O(e){return me(e)||e==="openrouter"}function M(e){let n=le(e.kitName);if(n!=="unknown"){let l=r(n,"high","kit");return O(n)&&e.runtime?{...l,runtime:I(e.runtime)}:l}let t=b(e.framework);if(t!=="unknown"){let l=r(t,"high","framework");return O(t)&&e.runtime?{...l,runtime:I(e.runtime)}:l}let i=b(e.runtime);return i!=="unknown"?r(i,"medium","runtime"):r("unknown","low","unknown")}function ke(e){let n=e?.adoption;if(n&&typeof n=="object"&&!Array.isArray(n)){let i=n;if(i.managed_by==="workspai"&&i.mode==="linked")return true}let t=e?.import;return t!==null&&typeof t=="object"&&!Array.isArray(t)&&t.managed_by==="workspai"}function W(e){let n=P(s.join(e,"package.json"));if(!n)return r("unknown","low","unknown");let t=n.dependencies??{},i=n.devDependencies??{},m=n.private===true&&(Array.isArray(n.workspaces)||n.workspaces!==null&&typeof n.workspaces=="object"||a.existsSync(s.join(e,"pnpm-workspace.yaml")))?t:{...t,...i},d=n.scripts??{},c=Object.values(d).filter(p=>typeof p=="string").join(" ").toLowerCase();return m["@nestjs/core"]||c.includes("nest start")?r("nestjs","high","manifest"):m.express?r("express","high","manifest"):m.fastify?r("fastify","high","manifest"):m.koa?r("koa","high","manifest"):r("node","medium","marker")}function pe(e){let n=P(s.join(e,"package.json"));if(!n)return r("unknown","low","unknown");let t={...n.dependencies??{},...n.devDependencies??{}},i=n.engines??{},l=n.scripts??{},m=Object.values(l).filter(d=>typeof d=="string").join(" ").toLowerCase();return t["@tauri-apps/api"]||t["@tauri-apps/cli"]||a.existsSync(s.join(e,"src-tauri","Cargo.toml"))?r("tauri","high","manifest"):t.electron||t["@electron-forge/cli"]||m.includes("electron-forge")||m.includes("electron ")?r("electron","high","manifest"):typeof i.vscode=="string"&&(n.activationEvents!==void 0||n.contributes!==void 0)?r("vscode-extension","high","manifest"):r("unknown","low","unknown")}function G(e){let n=[k(s.join(e,"pyproject.toml")),k(s.join(e,"requirements.txt")),k(s.join(e,"requirements.in"))].join(`
|
|
2
2
|
`);return n.includes("fastapi")?r("fastapi","high","manifest"):n.includes("django")?r("django","high","manifest"):n.includes("flask")?r("flask","high","manifest"):n.trim()?r("python","medium","marker"):r("unknown","low","unknown")}function q(e){let n=k(s.join(e,"go.mod")),t=k(s.join(e,"main.go")),i=[n,t].join(`
|
|
3
3
|
`);return i.includes("github.com/gofiber/fiber")?r("gofiber","high","manifest"):i.includes("github.com/gin-gonic/gin")?r("gogin","high","manifest"):i.includes("github.com/labstack/echo")?r("echo","high","manifest"):n.trim()?r("go","high","manifest"):t.trim()?r("go","medium","marker"):r("unknown","low","unknown")}function V(e){let n=[k(s.join(e,"pom.xml")),k(s.join(e,"build.gradle")),k(s.join(e,"build.gradle.kts"))].join(`
|
|
4
4
|
`);return n.includes("spring-boot")||n.includes("org.springframework")?r("springboot","high","manifest"):n.trim()?r("java","medium","marker"):r("unknown","low","unknown")}function z(e){let n=k(s.join(e,"composer.json"));return n.includes("laravel/framework")?r("laravel","high","manifest"):n.includes("symfony/")?r("symfony","high","manifest"):n.trim()?r("php","medium","marker"):r("unknown","low","unknown")}function $(e){let n=k(s.join(e,"Gemfile")),t=h(e,".gemspec",0).map(i=>k(i)).join(`
|
|
5
5
|
`);return n.includes("gem 'rails'")||n.includes('gem "rails"')?r("rails","high","manifest"):n.includes("gem 'sinatra'")||n.includes('gem "sinatra"')?r("sinatra","high","manifest"):n.trim()||t.trim()?r("ruby","medium","marker"):r("unknown","low","unknown")}function U(e){let t=[...h(e,".csproj",3),...h(e,".sln",2)].map(i=>k(i)).join(`
|
|
6
|
-
`);return t.includes("microsoft.net.sdk.web")||t.includes("microsoft.aspnetcore")||t.includes("swashbuckle.aspnetcore")?r("dotnet","high","manifest"):t.trim()?r("dotnet","medium","marker"):r("unknown","low","unknown")}function Y(e){let n=k(s.join(e,"Cargo.toml"));return n.includes("actix-web")?r("actix","high","manifest"):n.includes("axum")?r("axum","high","manifest"):n.includes("rocket")?r("rocket","high","manifest"):n.trim()?r("rust","medium","marker"):r("unknown","low","unknown")}function Q(e){let n=k(s.join(e,"mix.exs"));return n.includes("phoenix")?r("phoenix","high","manifest"):n.trim()?r("elixir","medium","marker"):r("unknown","low","unknown")}function
|
|
7
|
-
${R}`);if((H||te)&&o.includes("cpp")&&(F||K))return r("cpp","high","manifest");if(H&&o.includes("c")&&D&&!F&&!K)return r("c","high","manifest");if(o.includes("rust")&&/\[workspace\]/u.test(C)&&/^default-members\s*=/mu.test(C))return r("rust","high","manifest");if(o.includes("bun"))return r("bun","high","marker");if(o.includes("deno"))return r("deno","high","marker");if(o.includes("kotlin"))return r("kotlin","medium","marker");if(o.includes("node")){let u=
|
|
6
|
+
`);return t.includes("microsoft.net.sdk.web")||t.includes("microsoft.aspnetcore")||t.includes("swashbuckle.aspnetcore")?r("dotnet","high","manifest"):t.trim()?r("dotnet","medium","marker"):r("unknown","low","unknown")}function Y(e){let n=k(s.join(e,"Cargo.toml"));return n.includes("actix-web")?r("actix","high","manifest"):n.includes("axum")?r("axum","high","manifest"):n.includes("rocket")?r("rocket","high","manifest"):n.trim()?r("rust","medium","marker"):r("unknown","low","unknown")}function Q(e){let n=k(s.join(e,"mix.exs"));return n.includes("phoenix")?r("phoenix","high","manifest"):n.trim()?r("elixir","medium","marker"):r("unknown","low","unknown")}function fe(e){let n=[],t=i=>{n.includes(i)||n.push(i);};return a.existsSync(s.join(e,"go.mod"))&&t("go"),(a.existsSync(s.join(e,"Cargo.toml"))||a.existsSync(s.join(e,"src-tauri","Cargo.toml")))&&t("rust"),(a.existsSync(s.join(e,"pom.xml"))||a.existsSync(s.join(e,"build.gradle"))||a.existsSync(s.join(e,"build.gradle.kts")))&&t("java"),a.existsSync(s.join(e,"mix.exs"))&&t("elixir"),a.existsSync(s.join(e,"composer.json"))&&t("php"),(y(e,".csproj")||y(e,".sln"))&&t("dotnet"),a.existsSync(s.join(e,"package.json"))&&t("node"),(a.existsSync(s.join(e,"Gemfile"))||y(e,".gemspec",0))&&t("ruby"),(a.existsSync(s.join(e,"pyproject.toml"))||a.existsSync(s.join(e,"setup.py"))||a.existsSync(s.join(e,"requirements.txt"))||a.existsSync(s.join(e,"requirements.in")))&&t("python"),(a.existsSync(s.join(e,"deps.edn"))||a.existsSync(s.join(e,"project.clj")))&&t("clojure"),a.existsSync(s.join(e,"build.sbt"))&&t("scala"),(a.existsSync(s.join(e,"deno.json"))||a.existsSync(s.join(e,"deno.jsonc")))&&t("deno"),(a.existsSync(s.join(e,"bun.lockb"))||a.existsSync(s.join(e,"bun.lock"))||a.existsSync(s.join(e,"bunfig.toml"))||a.existsSync(s.join(e,".bunfig.toml")))&&t("bun"),(a.existsSync(s.join(e,"CMakeLists.txt"))||a.existsSync(s.join(e,"meson.build"))||y(e,".cpp",3)||y(e,".cc",3)||y(e,".cxx",3)||y(e,".hpp",3)||y(e,".hh",3)||y(e,".hxx",3))&&t("cpp"),(y(e,".c",3)||y(e,".h",3))&&t("c"),(a.existsSync(s.join(e,"settings.gradle.kts"))||y(s.join(e,"src"),".kt",3)||k(s.join(e,"build.gradle.kts")).includes("kotlin"))&&t("kotlin"),n}function X(e,n=4){let t=ne(e,Math.max(0,Math.min(12,n))),i=new Set(t.map(o=>s.basename(o))),l=t.map(o=>o.toLowerCase()),m=[],d=o=>{m.includes(o)||m.push(o);},c=(...o)=>o.some(f=>i.has(f)),p=(...o)=>l.some(f=>o.some(S=>f.endsWith(S)));return c("go.mod")&&d("go"),c("Cargo.toml")&&d("rust"),c("pom.xml","build.gradle","build.gradle.kts")&&d("java"),c("mix.exs")&&d("elixir"),c("composer.json")&&d("php"),p(".csproj",".sln")&&d("dotnet"),c("package.json")&&d("node"),(c("Gemfile")||p(".gemspec"))&&d("ruby"),c("pyproject.toml","setup.py","requirements.txt","requirements.in")&&d("python"),c("deps.edn","project.clj")&&d("clojure"),c("build.sbt")&&d("scala"),c("deno.json","deno.jsonc")&&d("deno"),c("bun.lockb","bun.lock","bunfig.toml",".bunfig.toml")&&d("bun"),(c("CMakeLists.txt","meson.build")||p(".cpp",".cc",".cxx",".hpp",".hh",".hxx"))&&d("cpp"),p(".c",".h")&&d("c"),(c("settings.gradle.kts")||p(".kt")||t.some(o=>s.basename(o)==="build.gradle.kts"&&k(o).includes("kotlin")))&&d("kotlin"),m}function Re(e,n){let t=ke(n),i=(()=>{try{return a.readdirSync(e,{withFileTypes:true})}catch{return []}})(),l=new Set(["package.json","Gemfile","go.mod","Cargo.toml","pom.xml","build.gradle","build.gradle.kts","mix.exs","composer.json","pyproject.toml","setup.py","requirements.txt","requirements.in","deps.edn","project.clj","build.sbt","deno.json","deno.jsonc","CMakeLists.txt","meson.build"]),m=i.some(u=>u.isFile()&&(l.has(u.name)||/\.(?:csproj|slnx?|gemspec)$/iu.test(u.name))),d=t&&!m?M({framework:typeof n?.framework=="string"?n.framework:void 0,runtime:typeof n?.runtime=="string"?n.runtime:void 0,kitName:typeof n?.kit_name=="string"?n.kit_name:typeof n?.kit=="string"?n.kit:void 0}):null;if(d?.runtime&&d.runtime!=="unknown"&&X(e).includes(d.runtime))return d;let c=t?null:n,p=M({framework:typeof c?.framework=="string"?c.framework:void 0,runtime:typeof c?.runtime=="string"?c.runtime:void 0,kitName:typeof c?.kit_name=="string"?c.kit_name:typeof c?.kit=="string"?c.kit:void 0});if(p.key!=="unknown")return p;let o=fe(e),f=X(e);if(o.length===0&&f.length===1)return r(b(f[0]),"medium","runtime");let S=k(s.join(e,"CMakeLists.txt")),R=k(s.join(e,"meson.build")),C=k(s.join(e,"Cargo.toml")),H=S.trim().length>0||R.trim().length>0,te=ce(e),F=y(e,".cpp",3)||y(e,".cc",3)||y(e,".cxx",3),D=y(e,".c",3),K=/(?:\bcxx\b|\bcplusplus\b|\bc\+\+\b)/u.test(`${S}
|
|
7
|
+
${R}`);if((H||te)&&o.includes("cpp")&&(F||K))return r("cpp","high","manifest");if(H&&o.includes("c")&&D&&!F&&!K)return r("c","high","manifest");if(o.includes("rust")&&/\[workspace\]/u.test(C)&&/^default-members\s*=/mu.test(C))return r("rust","high","manifest");if(o.includes("bun"))return r("bun","high","marker");if(o.includes("deno"))return r("deno","high","marker");if(o.includes("kotlin"))return r("kotlin","medium","marker");if(o.includes("node")){let u=pe(e);if(u.key!=="unknown")return u;let w=W(e);if(w.key!=="unknown"&&w.key!=="node")return w}let A=[o.includes("python")?G(e):null,o.includes("go")?q(e):null,o.includes("java")?V(e):null,o.includes("php")?z(e):null,o.includes("ruby")?$(e):null,o.includes("rust")?Y(e):null,o.includes("elixir")?Q(e):null,o.includes("dotnet")?U(e):null].filter(u=>u!==null).find(u=>u.key!=="unknown"&&u.key!==u.runtime);if(A)return A;if(o.includes("node")){let u=_(e,c);if(u.key!=="unknown")return u;let w=W(e);if(w.key!=="unknown")return w}if(o.includes("python")){let u=G(e);if(u.key!=="unknown")return u}if(o.includes("go")){let u=q(e);if(u.key!=="unknown")return u}if(o.includes("java")){let u=V(e);if(u.key!=="unknown")return u}if(o.includes("php")){let u=z(e);if(u.key!=="unknown")return u}if(o.includes("ruby")){let u=$(e);if(u.key!=="unknown")return u}if(o.includes("rust")){let u=Y(e);if(u.key!=="unknown")return u}if(o.includes("elixir")){let u=Q(e);if(u.key!=="unknown")return u}if(o.includes("dotnet")){let u=U(e);if(u.key!=="unknown")return u}return o.includes("clojure")?r("clojure","medium","marker"):o.includes("scala")?r("scala","medium","marker"):o.includes("c")&&D&&!F?r("c","medium","marker"):o.includes("cpp")?r("cpp","medium","marker"):o.includes("c")?r("c","medium","marker"):o.length>0?r(b(o[0]),"medium","runtime"):r("unknown","low","unknown")}export{we as a,ve as b,L as c,_ as d,ce as e,he as f,I as g,Be as h,M as i,ke as j,fe as k,X as l,Re as m};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {b as b$1}from'./chunk-B6FJ6RG6.js';import {O as O$1,N,k as k$1,q as q$1,G,I,P}from'./chunk-UNEK3VVR.js';import {c}from'./chunk-O3TVVQ6X.js';import {e,f as f$1}from'./chunk-EFHSRPW7.js';import {b}from'./chunk-UJXE4UAX.js';import {m,l}from'./chunk-VQZ5PI5J.js';import {promises}from'fs';import c$1 from'path';import L,{homedir}from'os';import {pathToFileURL}from'url';import p from'process';import ie from'fs-extra';var y={schemaVersion:"workspai.model-gateway-qualification.v1",workspaiReleaseAuthority:"source-ready",attach:"unsupported",adapters:[{adapterId:"openrouter-typescript",status:"source-ready",platforms:[]},{adapterId:"openrouter-python",status:"source-ready",platforms:[]}]};var R=["ubuntu-latest","macos-latest","windows-latest"];function B(e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Model gateway qualification document must be an object.");let t=e;if(!Array.isArray(t.adapters)||t.adapters.length===0)throw new Error("Model gateway qualification document contains no adapters.");let o=new Set;for(let a of t.adapters){if(!a||typeof a.adapterId!="string")throw new Error("Model gateway qualification adapter is missing adapterId.");if(o.has(a.adapterId))throw new Error(`Duplicate model gateway qualification adapter: ${a.adapterId}`);o.add(a.adapterId);let n=O$1(a.adapterId);if(!n)throw new Error(`Qualification adapter ${a.adapterId} is not in the version baseline.`);if(a.status!=="source-ready"&&a.status!=="qualified")throw new Error(`Invalid qualification status for ${a.adapterId}.`);if(!Array.isArray(a.platforms))throw new Error(`Qualification platforms missing for ${a.adapterId}.`);if(a.status==="source-ready"){if(a.platforms.length!==0)throw new Error(`Source-ready adapter ${a.adapterId} must not record platform qualification.`);continue}let s=new Set;for(let r of a.platforms){if(!r||!R.includes(r.os)||r.result!=="pass"||r.skippedRequiredStage!==false||r.sdkVersion!==n.sdkVersion)throw new Error(`Qualified adapter ${a.adapterId} is missing a valid platform record bound to ${n.sdkVersion}.`);if(s.has(r.os))throw new Error(`Duplicate platform ${r.os} for ${a.adapterId}.`);s.add(r.os);}for(let r of R)if(!s.has(r))throw new Error(`Qualified adapter ${a.adapterId} is missing ${r} evidence.`)}for(let a of N)if(!o.has(a.adapterId))throw new Error(`Baseline adapter ${a.adapterId} has no qualification record.`);let i=t.adapters.every(a=>a.status==="qualified");if(i)throw new Error("All adapters are qualified; release authority must match.")}B(y);var f=y,W=Object.freeze({schemaVersion:f.schemaVersion,workspaiReleaseAuthority:f.workspaiReleaseAuthority,attach:f.attach,adapters:Object.freeze(f.adapters.map(e=>Object.freeze({...e,platforms:Object.freeze(e.platforms.map(t=>Object.freeze(t)))})))}),z=W.workspaiReleaseAuthority;function K(e){return `${e} \xB7 ${z}`}var w=["backend","frontend","desktop","agent","gateway","extension","gaming"],J=[{id:"backend",label:"Backend",hint:"APIs and services"},{id:"frontend",label:"Frontend",hint:"Web applications"},{id:"desktop",label:"Desktop",hint:"Native desktop applications"},{id:"agent",label:"AI Agent",hint:"Governed agent runtimes"},{id:"gateway",label:"AI Gateway",hint:"Unified model access and routing"},{id:"extension",label:"Extension",hint:"Editor and platform extensions"},{id:"gaming",label:"Gaming",hint:"Game runtimes and tooling"}];function X(e){let o=e.label.indexOf(" \u2014 ");return o>=0?e.label.slice(o+3).trim():e.label.trim()}function Z(e){return w.includes(e.category)?e.category:null}function T(e){let t=c().flatMap(r=>{let l=Z(r);return l?[{value:r.id,label:`${D(l)} \xB7 ${X(r)}`,hint:`${r.runtime} \xB7 tested baseline`,name:r.label,category:l}]:[]}),o=k$1().map(r=>({value:r.kitId,label:`Frontend \xB7 ${r.displayName}`,hint:"official \xB7 latest stable",name:`${r.displayName} \u2014 ${r.framework}`,category:"frontend"})),i=q$1().map(r=>({value:r.kitId,label:`${D(r.category)} \xB7 ${r.displayName}`,hint:`${r.runtimeCandidates.join(" + ")} \xB7 official latest stable`,name:`${r.displayName} \u2014 ${r.category}`,category:r.category})),a=G().map(r=>({value:r.id,label:`AI Agent \xB7 ${r.label}`,hint:`${r.runtime} \xB7 ${I(r)?"release-admitted baseline":"published baseline"}`,name:r.label,category:"agent"})),n=P().map(r=>({value:r.id,label:`AI Gateway \xB7 ${r.label}`,hint:K(r.runtime),name:r.label,category:"gateway"})),s=[...t,...o,...i,...a,...n].filter(r=>!e||r.category===e).sort((r,l)=>{let Q=w.indexOf(r.category),V=w.indexOf(l.category);return Q-V||(r.label??"").localeCompare(l.label??"")});return O(s),s}function Ae(){let e=new Set(T().map(t=>t.category));return J.filter(t=>e.has(t.id)).map(t=>({value:t.id,label:t.label,hint:t.hint}))}function D(e){return e.charAt(0).toUpperCase()+e.slice(1)}function O(e){let t=new Set,o=new Set;for(let i of e){let a=i.label??i.name??String(i.value),n=String(i.value);if(t.has(a))throw new Error(`Duplicate kit picker label: ${a}`);if(o.has(n))throw new Error(`Duplicate kit picker value: ${n}`);t.add(a),o.add(n);}}var te=".workspairc.json",oe=".rapidkitrc.json",re=["workspai.config.js","workspai.config.mjs","workspai.config.cjs","rapidkit.config.js","rapidkit.config.mjs","rapidkit.config.cjs"],ae=["workspai.config.json","rapidkit.config.json"];function F(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="ENOENT"}function k(e,t){let o=t instanceof Error?t.message:String(t),i=e.endsWith(".js")&&/module is not defined in ES module scope/i.test(o)?' CommonJS syntax in a .js config is not valid when the project package uses "type": "module"; rename the file to .cjs or use export default.':"";return `Failed to load Workspai config at ${e}.${i} Cause: ${o}`}async function et(){for(let e$1 of [c$1.join(L.homedir(),te),c$1.join(L.homedir(),oe)])try{let t=await promises.readFile(e$1,"utf-8"),o=JSON.parse(t);return e.debug(`Loaded config from ${e$1}`),o}catch{}return e.debug("No user config found, using defaults"),{}}async function tt(e$1=process.cwd(),t={}){let o=e$1,i=c$1.parse(o).root;for(;o!==i;){for(let a of ae){let n=c$1.join(o,a);try{let s=await promises.readFile(n,"utf-8"),r=JSON.parse(s);if(!r||typeof r!="object"||Array.isArray(r))throw new Error("configuration root must be a JSON object");return e.debug(`Loaded data-only Workspai config from ${a}`),r}catch(s){if(F(s))continue;throw new Error(k(n,s))}}for(let a of re){let n=c$1.join(o,a);try{await promises.access(n);}catch(s){if(F(s))continue;throw new Error(k(n,s))}if(e.debug(`Found config file: ${n}`),!t.trustExecutableConfig)throw new Error(`Refusing to execute Workspai config at ${n} without explicit trust. Use a data-only workspai.config.json file, pass --trust-config, or set WORKSPAI_TRUST_CONFIG=1.`);try{let r=await import(pathToFileURL(n).href),l=r.default||r;return e.debug(`Loaded Workspai config from ${a}`),l}catch(s){throw new Error(k(n,s))}}o=c$1.dirname(o);}return e.debug("No Workspai config file found, using defaults"),{}}function ot(e,t,o){return {author:o.author||t.workspace?.defaultAuthor||e.author,pythonVersion:o.pythonVersion||t.workspace?.pythonVersion||e.pythonVersion,defaultInstallMethod:o.defaultInstallMethod||t.workspace?.installMethod||e.defaultInstallMethod,defaultKit:o.defaultKit||t.projects?.defaultKit||e.defaultKit,skipGit:o.skipGit??t.projects?.skipGit??e.skipGit,license:o.license||e.license,testRapidKitPath:o.testRapidKitPath||e.testRapidKitPath}}function rt(e){return f$1("DEV_PATH")||e.testRapidKitPath||void 0}var C=class extends Error{constructor(o,i){super(["Workspai workspaces cannot be nested.",`Target: ${o}`,`Containing workspace: ${i}`,"Choose Managed home or pass --output <path> with a location outside the current workspace."].join(`
|
|
2
|
+
`));this.targetPath=o;this.containingWorkspacePath=i;this.name="NestedWorkspaceCreationError";}targetPath;containingWorkspacePath;code="WORKSPACE_NESTING_NOT_SUPPORTED"};async function ne(e){try{return !!await ie.stat(e)}catch{return false}}function se(e,t){let o=e.indexOf(t);if(o>=0&&o+1<e.length)return e[o+1];let i=e.find(a=>a.startsWith(`${t}=`));if(i)return i.slice(t.length+1)}function ce(e){return e.includes("--here")}async function U(e){let t=c$1.resolve(e);for(;;){let o=[c$1.join(t,".workspai-workspace"),c$1.join(t,".rapidkit-workspace"),c$1.join(t,".workspai","workspace.json"),c$1.join(t,".rapidkit","workspace.json")];if((await Promise.all(o.map(ne))).some(Boolean))return t;let i=c$1.dirname(t);if(i===t)return;t=i;}}async function ft(e){let t=c$1.resolve(e),o=await U(c$1.dirname(t));if(o)throw new C(t,o)}async function le(e,t=homedir()){let i=[{value:"managed",label:"Managed home",hint:l(t)}];return await U(e)||i.push({value:"here",label:"Current directory",hint:e}),i}function q(e,t=p.cwd()){if(ce(e))return c$1.resolve(t);let o=se(e,"--output");if(o)return c$1.resolve(o)}function gt(e,t=p.cwd()){let o=c$1.resolve(e),i=c$1.resolve(t),a=c$1.relative(i,o);return a.length>0&&!a.startsWith("..")&&!c$1.isAbsolute(a)?`cd ${a}`:`cd ${o}`}function mt(e,t={}){let o=t.argv??[],i=t.outputParent??q(o,p.cwd());return m(e.trim(),{homeDir:t.homeDir,outputDir:i})}function ht(e,t,o={}){return e?c$1.resolve(e)===c$1.resolve(t)?true:o.outputParent===void 0:false}async function yt(e,t={}){let o=t.cwd??p.cwd(),i=t.homeDir??homedir(),a=q(e,o);if(a!==void 0)return a;let n=t.hasYes??(e.includes("--yes")||e.includes("-y"));if(!(t.interactive??(!n&&!!p.stdin.isTTY&&!b())))return;let r=await le(o,i);if(r.length===1)return;let{location:l}=await b$1([{type:"rawlist",name:"location",message:"Where should the workspace be created?",choices:r,default:0}]);if(l==="here")return c$1.resolve(o)}export{T as a,Ae as b,et as c,tt as d,ot as e,rt as f,ft as g,gt as h,mt as i,ht as j,yt as k};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {h,j as j$1,i,m,a as a$1,c,l as l$1,k}from'./chunk-H4YHIOCT.js';import {q,m as m$1,r,s,i as i$1,n}from'./chunk-6BO4QHKA.js';import {u,v}from'./chunk-VQZ5PI5J.js';import f from'fs';import l from'path';import A from'fs-extra';var xe=[{id:"fastapi.standard",aliases:["fastapi","fastapi.standard"],label:"fastapi \u2014 FastAPI Standard Kit",description:"Core-backed FastAPI service scaffold.",owner:"core",runtime:"python",framework:"fastapi",category:"backend",moduleSupport:true,workspacePythonEngine:"required",stability:"stable",versionPolicy:"tested-baseline"},{id:"fastapi.ddd",aliases:["fastapi.ddd","fastapi-ddd"],label:"fastapi \u2014 FastAPI DDD Kit",description:"Core-backed FastAPI DDD service scaffold.",owner:"core",runtime:"python",framework:"fastapi",category:"backend",moduleSupport:true,workspacePythonEngine:"required",stability:"stable",versionPolicy:"tested-baseline"},{id:"nestjs.standard",aliases:["nestjs","nest","nestjs.standard"],label:"nestjs \u2014 NestJS Standard Kit",description:"Core-backed NestJS service scaffold.",owner:"core",runtime:"node",framework:"nestjs",category:"backend",moduleSupport:true,workspacePythonEngine:"optional",stability:"stable",versionPolicy:"tested-baseline"},{id:"springboot.standard",aliases:["spring","springboot","springboot.standard","java"],label:"spring \u2014 Spring Boot Standard Kit",description:"npm-backed Spring Boot service scaffold.",owner:"npm",runtime:"java",framework:"springboot",category:"backend",moduleSupport:false,workspacePythonEngine:"none",stability:"stable",versionPolicy:"tested-baseline",generator:"springboot",createUsage:"workspai create project springboot.standard <name> [--java-version <major>] [--spring-boot-version <semver>] [--group-id <com.example>] [--package-name <com.example.app>] [--port <number>]"},{id:"gofiber.standard",aliases:["go","go.standard","fiber","gofiber","gofiber.standard","go/fiber"],label:"go/fiber \u2014 Go Fiber Standard Kit",description:"npm-backed Go Fiber service scaffold.",owner:"npm",runtime:"go",framework:"gofiber",category:"backend",moduleSupport:false,workspacePythonEngine:"none",stability:"stable",versionPolicy:"tested-baseline",generator:"gofiber",createUsage:"workspai create project gofiber.standard <name> [--output <dir>]"},{id:"gogin.standard",aliases:["gin","gogin","gogin.standard","go/gin"],label:"go/gin \u2014 Go Gin Standard Kit",description:"npm-backed Go Gin service scaffold.",owner:"npm",runtime:"go",framework:"gogin",category:"backend",moduleSupport:false,workspacePythonEngine:"none",stability:"stable",versionPolicy:"tested-baseline",generator:"gogin",createUsage:"workspai create project gogin.standard <name> [--output <dir>]"},{id:"dotnet.webapi.clean",aliases:["dotnet","dotnet.webapi","dotnet.webapi.clean","aspnet","aspnetcore","asp.net","asp.net-core","csharp","c#"],label:"dotnet \u2014 ASP.NET Core Clean Web API",description:"npm-backed ASP.NET Core Web API with clean architecture boundaries.",owner:"npm",runtime:"dotnet",framework:"dotnet",category:"backend",moduleSupport:false,workspacePythonEngine:"none",stability:"preview",versionPolicy:"tested-baseline",generator:"dotnet-webapi-clean",createUsage:"workspai create project dotnet.webapi.clean <name> [--target-framework net8.0] [--root-namespace <Company.Product>] [--port <number>]"},{id:"rust.axum",aliases:["rust.axum","axum","rust-axum"],label:"rust/axum \u2014 Rust Axum API",description:"Workspai-owned Axum service with health, tests, CI, and container baseline.",owner:"npm",runtime:"rust",framework:"axum",category:"backend",moduleSupport:false,workspacePythonEngine:"none",stability:"preview",versionPolicy:"tested-baseline",generator:"rust-axum",createUsage:"workspai create project rust.axum <name> [--port <number>] [--output <dir>] [--skip-git]"}],ne=new Map;for(let e of xe){ne.set(e.id.toLowerCase(),e);for(let t of e.aliases)ne.set(t.toLowerCase(),e);}function W(e){return e?ne.get(e.trim().toLowerCase())??null:null}function Vt(e){return W(e)?.id??e}function Ht(){return xe.filter(e=>e.owner==="core"||e.generator)}function zt(e){return W(e)?.owner==="npm"}async function Xt(e,t){if(!e.generator)throw new Error(`Kit is not backed by an npm generator: ${e.id}`);if(e.generator==="gofiber"){let{generateGoFiberKit:n}=await import('./gofiber-standard-PFBIAMGR.js');await n(t.projectPath,{project_name:t.projectName,module_path:t.projectName,skipGit:t.skipGit,skipInstall:t.skipInstall});return}if(e.generator==="gogin"){let{generateGoGinKit:n}=await import('./gogin-standard-DW5GL7YG.js');await n(t.projectPath,{project_name:t.projectName,module_path:t.projectName,skipGit:t.skipGit,skipInstall:t.skipInstall});return}if(e.generator==="springboot"){let{generateSpringBootKit:n}=await import('./springboot-standard-CZH24KWD.js');await n(t.projectPath,{project_name:t.projectName,artifact_id:t.projectName,java_version:j(t.args,"--java-version")?.trim(),spring_boot_version:j(t.args,"--spring-boot-version")?.trim(),springdoc_version:j(t.args,"--springdoc-version")?.trim(),group_id:j(t.args,"--group-id")?.trim(),package_name:j(t.args,"--package-name")?.trim(),description:j(t.args,"--description")?.trim(),port:j(t.args,"--port")?.trim(),skipGit:t.skipGit,skipInstall:t.skipInstall});return}if(e.generator==="dotnet-webapi-clean"){let{generateDotnetWebApiCleanKit:n}=await import('./dotnet-webapi-clean-GXTNZMKO.js');await n(t.projectPath,{project_name:t.projectName,target_framework:j(t.args,"--target-framework")?.trim(),root_namespace:j(t.args,"--root-namespace")?.trim(),description:j(t.args,"--description")?.trim(),port:j(t.args,"--port")?.trim(),skipGit:t.skipGit,skipInstall:t.skipInstall});return}if(e.generator==="rust-axum"){let{generateRustAxumKit:n}=await import('./rust-axum-L7UAYARA.js');await n(t.projectPath,{project_name:t.projectName,description:j(t.args,"--description")?.trim(),port:j(t.args,"--port")?.trim(),skipGit:t.skipGit,skipInstall:t.skipInstall});return}throw new Error(`Unhandled npm kit generator: ${e.generator}`)}function j(e,t){let n=e.indexOf(t);if(n>=0&&n+1<e.length)return e[n+1];let r=e.find(o=>o.startsWith(`${t}=`));return r?r.slice(t.length+1):void 0}var N=["init","dev","start","build","test","lint","format","help"],we={python:{runtime:"python",displayName:"Python",tier:"first-class",scaffoldSupport:true,importSupport:true,lifecycleCommands:N,moduleCommands:true,doctorSupport:"full",notes:["Core-backed Python projects support RapidKit Core modules and lifecycle commands."]},node:{runtime:"node",displayName:"Node.js",tier:"extended",scaffoldSupport:true,importSupport:true,lifecycleCommands:N,moduleCommands:true,doctorSupport:"full",notes:["Node projects support npm-owned lifecycle commands; NestJS is the first-class Node framework."]},go:{runtime:"go",displayName:"Go",tier:"extended",scaffoldSupport:true,importSupport:true,lifecycleCommands:N,moduleCommands:false,doctorSupport:"readiness",notes:["Go projects support workspace governance and lifecycle commands via Go tooling."]},java:{runtime:"java",displayName:"Java / Spring Boot",tier:"extended",scaffoldSupport:true,importSupport:true,lifecycleCommands:N,moduleCommands:false,doctorSupport:"readiness",notes:["Java projects support Maven/Gradle lifecycle commands and workspace governance."]},dotnet:{runtime:"dotnet",displayName:".NET / ASP.NET Core",tier:"extended",scaffoldSupport:true,importSupport:true,lifecycleCommands:N,moduleCommands:false,doctorSupport:"readiness",notes:[".NET projects support dotnet CLI lifecycle commands and workspace governance."]},php:{runtime:"php",displayName:"PHP",tier:"extended",scaffoldSupport:true,importSupport:true,lifecycleCommands:N,moduleCommands:false,doctorSupport:"readiness",notes:["Laravel projects use the official Composer generator and PHP/Composer lifecycle adapter."]},ruby:{runtime:"ruby",displayName:"Ruby",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["help"],moduleCommands:false,doctorSupport:"observed",notes:["Ruby projects are importable and governed as observed projects until a kit exists."]},rust:{runtime:"rust",displayName:"Rust",tier:"extended",scaffoldSupport:true,importSupport:true,lifecycleCommands:N,moduleCommands:false,doctorSupport:"readiness",notes:["Rust projects support Axum and Tauri scaffolding plus Cargo lifecycle commands."]},elixir:{runtime:"elixir",displayName:"Elixir",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["help"],moduleCommands:false,doctorSupport:"observed",notes:["Elixir projects are importable and governed as observed projects until a kit exists."]},clojure:{runtime:"clojure",displayName:"Clojure",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["help"],moduleCommands:false,doctorSupport:"observed",notes:["Clojure projects are importable and governed as observed projects until a kit exists."]},scala:{runtime:"scala",displayName:"Scala",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["help"],moduleCommands:false,doctorSupport:"observed",notes:["Scala projects are importable and governed as observed projects until a kit exists."]},kotlin:{runtime:"kotlin",displayName:"Kotlin",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["help"],moduleCommands:false,doctorSupport:"observed",notes:["Kotlin projects are importable and governed as observed projects until a kit exists."]},deno:{runtime:"deno",displayName:"Deno",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["help"],moduleCommands:false,doctorSupport:"observed",notes:["Deno projects are importable and governed as observed projects until a kit exists."]},bun:{runtime:"bun",displayName:"Bun",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["init","dev","start","build","test","lint","format","help"],moduleCommands:false,doctorSupport:"observed",notes:["Bun projects are importable and governed as observed projects until a kit exists.","Declared package scripts execute through the Bun-aware npm wrapper; undeclared lifecycle commands remain unavailable."]},c:{runtime:"c",displayName:"C",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["help"],moduleCommands:false,doctorSupport:"observed",notes:["C projects are importable and receive manifest, test, quality, security, and coverage evidence without assuming a package manager."]},cpp:{runtime:"cpp",displayName:"C++",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["help"],moduleCommands:false,doctorSupport:"observed",notes:["C++ projects are importable and receive manifest, test, quality, security, and coverage evidence without assuming a package manager."]},unknown:{runtime:"unknown",displayName:"Unknown",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["help"],moduleCommands:false,doctorSupport:"observed",notes:["Unknown projects are tracked safely but require manual command configuration."]}};function O(e){return we[e||"unknown"]??we.unknown}function ve(e){return h(e).supportTier}function Pe(e){let t=O(e.runtime);return {lifecycleCommands:t.lifecycleCommands,moduleCommands:e.moduleSupport&&t.moduleCommands,unsupportedLifecycleCommands:N.filter(n=>!t.lifecycleCommands.includes(n))}}var Xe=["python","node","bun","go","java","dotnet","rust","php"];function M(e){return !!e&&Xe.includes(e)}function J(e,t){return t!=="lint"&&t!=="format"&&t!=="docs"?false:e==="python"}function Ne(e){let t=O(e),n=M(t.runtime),r=Ze[t.runtime]??[],o=Qe[t.runtime]??[];return {runtime:t.runtime,displayName:t.displayName,lifecycleCommands:t.lifecycleCommands,hasExecutor:n,packageManagers:r,primaryFiles:o,notes:t.notes}}var Ze={python:["poetry","pip","uv"],node:["npm","pnpm","yarn","bun"],go:["go"],java:["maven","gradle"],dotnet:["dotnet"],php:["composer"],ruby:["bundle"],rust:["cargo"],elixir:["mix"],kotlin:["gradle"],deno:["deno"],bun:["bun"]},Qe={python:["pyproject.toml","requirements.txt","requirements.in"],node:["package.json"],go:["go.mod"],java:["pom.xml","build.gradle","build.gradle.kts"],dotnet:["*.csproj","*.sln"],php:["composer.json"],ruby:["Gemfile"],rust:["Cargo.toml"],elixir:["mix.exs"],kotlin:["settings.gradle.kts"],deno:["deno.json","deno.jsonc"],bun:["package.json","bunfig.toml",".bunfig.toml"]};function D(e,t){let n=j$1(e)?null:e,r=i({runtime:typeof n?.runtime=="string"?n.runtime:void 0,framework:typeof n?.framework=="string"?n.framework:void 0,kitName:typeof n?.kit_name=="string"?n.kit_name:typeof n?.kit=="string"?n.kit:void 0});return r.runtime!=="unknown"?r.runtime:m(t,n).runtime}function Ee(e,t={}){let n=e;for(;;){for(let o of u(n,"project.json"))if(f.existsSync(o))try{return JSON.parse(f.readFileSync(o,"utf8"))}catch{return null}if(t.searchParents===false)break;let r=l.dirname(n);if(r===n)break;n=r;}return null}function pn(e,t){return D(e,t)==="go"}function mn(e,t){return D(e,t)==="node"}function dn(e,t){return D(e,t)==="java"}function fn(e,t){return D(e,t)==="dotnet"}function gn(e,t){return D(e,t)==="python"}var tt=["project.json","context.json","file-hashes.json"];async function vn(e){let t=l.resolve(e),n=[];for(let r of tt){let o=v(t,r);if(await A.pathExists(o))continue;let i=l.join(t,".rapidkit",r);if(!await A.pathExists(i))continue;let u=await A.readJson(i);await A.ensureDir(l.dirname(o));let g=`${o}.${process.pid}.${Date.now()}.tmp`;try{await A.writeJson(g,u,{spaces:2}),await A.move(g,o,{overwrite:false}),n.push(o);}finally{await A.remove(g).catch(()=>{});}}return n}function nt(e){for(let t of u(e,"context.json"))if(f.existsSync(t))try{return JSON.parse(f.readFileSync(t,"utf8"))}catch{return null}return null}function rt(e){let t=e?.engine;return t==="npm"||t==="pip"||t==="python"||t==="poetry"||t==="venv"||t==="pipx"||t==="uv"?t:"unknown"}function ot(e,t){if(e?.module_support===false||t?.module_support===false||!e&&t)return false;let n=typeof e?.kit_name=="string"?e.kit_name:typeof e?.kit=="string"?e.kit:typeof t?.kit=="string"?t.kit:void 0,r=n?W(n):void 0;return r?.owner==="core"&&r.moduleSupport===true}function it(e,t,n){let r=j$1(t)?null:t,o=i({runtime:typeof r?.runtime=="string"?r.runtime:typeof n?.runtime=="string"?n.runtime:void 0,framework:typeof r?.framework=="string"?r.framework:typeof n?.framework=="string"?n.framework:void 0,kitName:typeof r?.kit_name=="string"?r.kit_name:typeof r?.kit=="string"?r.kit:typeof n?.kit=="string"?n.kit:void 0});return o.key!=="unknown"?o:m(e,r)}function Me(e){let t=l.resolve(e);if(![...u(t,"project.json"),...u(t,"context.json")].some(u=>f.existsSync(u)))return null;let r=Ee(t,{searchParents:false}),o=nt(t),i=it(t,r,o);return {projectRoot:t,projectJson:r,contextJson:o,detection:i,moduleSupport:ot(r,o),engine:rt(o)}}var st=["build","dev","start","test","lint","format"],oe=["init","test","build","start"],Rn=["lint","format","docs"];function En(e){return !!e&&st.includes(e)}var at={dev:["dev","start:dev","watch"],start:["start","start:prod","preview"],build:["build","compile"],test:["test","test:unit","test:ci"],lint:["lint","eslint"],format:["format","prettier"]},Le={nestjs:{dev:["dev","start:dev"],start:["start","start:prod"],build:["build"],test:["test","test:e2e"],lint:["lint"],format:["format"]},express:{dev:["dev","start:dev"],start:["start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},fastify:{dev:["dev","start:dev"],start:["start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},koa:{dev:["dev","start:dev"],start:["start"],build:["build"],test:["test"],lint:["lint"],format:["format"]}};function ct(e){let t=l.join(e,"package.json");if(!f.existsSync(t))return {};try{let r=JSON.parse(f.readFileSync(t,"utf8")).scripts??{};return Object.fromEntries(Object.entries(r).filter(o=>typeof o[1]=="string"))}catch{return {}}}function lt(e,t){let n=t?c(t):"unknown",r=n!=="unknown"?a$1(n,e):[],o=t?Le[t]?.[e]??[]:[],i=at[e]??[],u=[...r,...o,...i];return [...new Set(u)]}function _e(e,t,n){let r=ct(e),o=new Set(Object.keys(r));if(o.has(t))return {scriptName:t,source:"package.json"};for(let i of lt(t,n?.framework))if(o.has(i))return {scriptName:i,source:a$1(c(n?.framework??"unknown"),t).includes(i)||Le[n?.framework??""]?.[t]?.includes(i)?"framework-candidate":"generic-candidate"};return null}function se(e){return f.existsSync(l.join(e,"package.json"))}function ut(e){try{let t=JSON.parse(f.readFileSync(l.join(e,"package.json"),"utf8"));return typeof t.packageManager!="string"?null:t.packageManager.trim().match(/^(npm|pnpm|yarn|bun)(?:@|$)/)?.[1]??null}catch{return null}}function Y(e){let t=ut(e);return t||(f.existsSync(l.join(e,"bun.lock"))||f.existsSync(l.join(e,"bunfig.toml"))?"bun":f.existsSync(l.join(e,"pnpm-lock.yaml"))?"pnpm":f.existsSync(l.join(e,"yarn.lock"))?"yarn":f.existsSync(l.join(e,"package-lock.json"))?"npm":f.existsSync(l.join(e,"pnpm-workspace.yaml"))?"pnpm":"npm")}function $n(e,t,n=Y(e)){return n==="npm"?`npm run ${t}`:`${n} run ${t}`}function Bn(e,t=Y(e)){return `${t} install`}var pt="polyglot-lifecycle-plan.v1",$e=new Set([".git",".workspai",".rapidkit",".venv","bin","build","dist","node_modules","obj","target","third_party","vendor","fixture","fixtures","__fixtures__","testdata"]);function I(e,t){return l.relative(e,t).split(l.sep).join("/")||"."}function mt(e){let t=new Set,n=(r,o)=>{if(o>4)return;let i=[];try{i=f.readdirSync(r,{withFileTypes:true});}catch{return}for(let u of i){if(u.isDirectory()){$e.has(u.name)||n(l.join(r,u.name),o+1);continue}if(!u.isFile()||!u.name.endsWith(".go")||u.name.endsWith("_test.go"))continue;let g=l.join(r,u.name);try{let s=f.readFileSync(g,"utf8");/^\s*package\s+main\b/m.test(s)&&/^\s*func\s+main\s*\(/m.test(s)&&t.add(I(e,r));}catch{}}};return n(e,0),t.size===1?[...t][0]:null}function Fe(e,t,n){let r=false;for(let o of e.split(/\r?\n/)){let i=o.match(/^\s*\[([^\]]+)\]\s*(?:#.*)?$/)?.[1]?.trim();if(i!==void 0){r=i===t;continue}if(r&&new RegExp(`^\\s*${n}\\s*=`).test(o))return true}return false}function dt(e,t){let n=[],r=(o,i)=>{if(i>t)return;let u=[];try{u=f.readdirSync(o,{withFileTypes:true});}catch{return}for(let g of u.sort((s,d)=>s.name.localeCompare(d.name))){let s=l.join(o,g.name);if(g.isDirectory()){$e.has(g.name)||r(s,i+1);continue}g.isFile()&&(["package.json","deno.json","deno.jsonc","pyproject.toml","go.mod","Cargo.toml","pom.xml","build.gradle","build.gradle.kts","build.sbt","deps.edn","composer.json","Gemfile","mix.exs","CMakeLists.txt","meson.build"].includes(g.name)||/\.(?:cs|fs|vb)proj$/i.test(g.name))&&n.push(s);}};return r(e,0),n}function ft(e,t){if(l.dirname(t)!==e)return false;let n,r;try{n=JSON.parse(f.readFileSync(l.join(e,".workspai","project.json"),"utf8")),r=f.readFileSync(t,"utf8").replace(/\r\n/g,`
|
|
1
|
+
import {h,j as j$1,i,m,a as a$1,c,l as l$1,k}from'./chunk-LUPKDFQ3.js';import {q,m as m$1,r,s,i as i$1,n}from'./chunk-6BO4QHKA.js';import {u,v}from'./chunk-VQZ5PI5J.js';import f from'fs';import l from'path';import A from'fs-extra';var xe=[{id:"fastapi.standard",aliases:["fastapi","fastapi.standard"],label:"fastapi \u2014 FastAPI Standard Kit",description:"Core-backed FastAPI service scaffold.",owner:"core",runtime:"python",framework:"fastapi",category:"backend",moduleSupport:true,workspacePythonEngine:"required",stability:"stable",versionPolicy:"tested-baseline"},{id:"fastapi.ddd",aliases:["fastapi.ddd","fastapi-ddd"],label:"fastapi \u2014 FastAPI DDD Kit",description:"Core-backed FastAPI DDD service scaffold.",owner:"core",runtime:"python",framework:"fastapi",category:"backend",moduleSupport:true,workspacePythonEngine:"required",stability:"stable",versionPolicy:"tested-baseline"},{id:"nestjs.standard",aliases:["nestjs","nest","nestjs.standard"],label:"nestjs \u2014 NestJS Standard Kit",description:"Core-backed NestJS service scaffold.",owner:"core",runtime:"node",framework:"nestjs",category:"backend",moduleSupport:true,workspacePythonEngine:"optional",stability:"stable",versionPolicy:"tested-baseline"},{id:"springboot.standard",aliases:["spring","springboot","springboot.standard","java"],label:"spring \u2014 Spring Boot Standard Kit",description:"npm-backed Spring Boot service scaffold.",owner:"npm",runtime:"java",framework:"springboot",category:"backend",moduleSupport:false,workspacePythonEngine:"none",stability:"stable",versionPolicy:"tested-baseline",generator:"springboot",createUsage:"workspai create project springboot.standard <name> [--java-version <major>] [--spring-boot-version <semver>] [--group-id <com.example>] [--package-name <com.example.app>] [--port <number>]"},{id:"gofiber.standard",aliases:["go","go.standard","fiber","gofiber","gofiber.standard","go/fiber"],label:"go/fiber \u2014 Go Fiber Standard Kit",description:"npm-backed Go Fiber service scaffold.",owner:"npm",runtime:"go",framework:"gofiber",category:"backend",moduleSupport:false,workspacePythonEngine:"none",stability:"stable",versionPolicy:"tested-baseline",generator:"gofiber",createUsage:"workspai create project gofiber.standard <name> [--output <dir>]"},{id:"gogin.standard",aliases:["gin","gogin","gogin.standard","go/gin"],label:"go/gin \u2014 Go Gin Standard Kit",description:"npm-backed Go Gin service scaffold.",owner:"npm",runtime:"go",framework:"gogin",category:"backend",moduleSupport:false,workspacePythonEngine:"none",stability:"stable",versionPolicy:"tested-baseline",generator:"gogin",createUsage:"workspai create project gogin.standard <name> [--output <dir>]"},{id:"dotnet.webapi.clean",aliases:["dotnet","dotnet.webapi","dotnet.webapi.clean","aspnet","aspnetcore","asp.net","asp.net-core","csharp","c#"],label:"dotnet \u2014 ASP.NET Core Clean Web API",description:"npm-backed ASP.NET Core Web API with clean architecture boundaries.",owner:"npm",runtime:"dotnet",framework:"dotnet",category:"backend",moduleSupport:false,workspacePythonEngine:"none",stability:"preview",versionPolicy:"tested-baseline",generator:"dotnet-webapi-clean",createUsage:"workspai create project dotnet.webapi.clean <name> [--target-framework net8.0] [--root-namespace <Company.Product>] [--port <number>]"},{id:"rust.axum",aliases:["rust.axum","axum","rust-axum"],label:"rust/axum \u2014 Rust Axum API",description:"Workspai-owned Axum service with health, tests, CI, and container baseline.",owner:"npm",runtime:"rust",framework:"axum",category:"backend",moduleSupport:false,workspacePythonEngine:"none",stability:"preview",versionPolicy:"tested-baseline",generator:"rust-axum",createUsage:"workspai create project rust.axum <name> [--port <number>] [--output <dir>] [--skip-git]"}],ne=new Map;for(let e of xe){ne.set(e.id.toLowerCase(),e);for(let t of e.aliases)ne.set(t.toLowerCase(),e);}function W(e){return e?ne.get(e.trim().toLowerCase())??null:null}function Vt(e){return W(e)?.id??e}function Ht(){return xe.filter(e=>e.owner==="core"||e.generator)}function zt(e){return W(e)?.owner==="npm"}async function Xt(e,t){if(!e.generator)throw new Error(`Kit is not backed by an npm generator: ${e.id}`);if(e.generator==="gofiber"){let{generateGoFiberKit:n}=await import('./gofiber-standard-PFBIAMGR.js');await n(t.projectPath,{project_name:t.projectName,module_path:t.projectName,skipGit:t.skipGit,skipInstall:t.skipInstall});return}if(e.generator==="gogin"){let{generateGoGinKit:n}=await import('./gogin-standard-DW5GL7YG.js');await n(t.projectPath,{project_name:t.projectName,module_path:t.projectName,skipGit:t.skipGit,skipInstall:t.skipInstall});return}if(e.generator==="springboot"){let{generateSpringBootKit:n}=await import('./springboot-standard-CZH24KWD.js');await n(t.projectPath,{project_name:t.projectName,artifact_id:t.projectName,java_version:j(t.args,"--java-version")?.trim(),spring_boot_version:j(t.args,"--spring-boot-version")?.trim(),springdoc_version:j(t.args,"--springdoc-version")?.trim(),group_id:j(t.args,"--group-id")?.trim(),package_name:j(t.args,"--package-name")?.trim(),description:j(t.args,"--description")?.trim(),port:j(t.args,"--port")?.trim(),skipGit:t.skipGit,skipInstall:t.skipInstall});return}if(e.generator==="dotnet-webapi-clean"){let{generateDotnetWebApiCleanKit:n}=await import('./dotnet-webapi-clean-GXTNZMKO.js');await n(t.projectPath,{project_name:t.projectName,target_framework:j(t.args,"--target-framework")?.trim(),root_namespace:j(t.args,"--root-namespace")?.trim(),description:j(t.args,"--description")?.trim(),port:j(t.args,"--port")?.trim(),skipGit:t.skipGit,skipInstall:t.skipInstall});return}if(e.generator==="rust-axum"){let{generateRustAxumKit:n}=await import('./rust-axum-L7UAYARA.js');await n(t.projectPath,{project_name:t.projectName,description:j(t.args,"--description")?.trim(),port:j(t.args,"--port")?.trim(),skipGit:t.skipGit,skipInstall:t.skipInstall});return}throw new Error(`Unhandled npm kit generator: ${e.generator}`)}function j(e,t){let n=e.indexOf(t);if(n>=0&&n+1<e.length)return e[n+1];let r=e.find(o=>o.startsWith(`${t}=`));return r?r.slice(t.length+1):void 0}var N=["init","dev","start","build","test","lint","format","help"],we={python:{runtime:"python",displayName:"Python",tier:"first-class",scaffoldSupport:true,importSupport:true,lifecycleCommands:N,moduleCommands:true,doctorSupport:"full",notes:["Core-backed Python projects support RapidKit Core modules and lifecycle commands."]},node:{runtime:"node",displayName:"Node.js",tier:"extended",scaffoldSupport:true,importSupport:true,lifecycleCommands:N,moduleCommands:true,doctorSupport:"full",notes:["Node projects support npm-owned lifecycle commands; NestJS is the first-class Node framework."]},go:{runtime:"go",displayName:"Go",tier:"extended",scaffoldSupport:true,importSupport:true,lifecycleCommands:N,moduleCommands:false,doctorSupport:"readiness",notes:["Go projects support workspace governance and lifecycle commands via Go tooling."]},java:{runtime:"java",displayName:"Java / Spring Boot",tier:"extended",scaffoldSupport:true,importSupport:true,lifecycleCommands:N,moduleCommands:false,doctorSupport:"readiness",notes:["Java projects support Maven/Gradle lifecycle commands and workspace governance."]},dotnet:{runtime:"dotnet",displayName:".NET / ASP.NET Core",tier:"extended",scaffoldSupport:true,importSupport:true,lifecycleCommands:N,moduleCommands:false,doctorSupport:"readiness",notes:[".NET projects support dotnet CLI lifecycle commands and workspace governance."]},php:{runtime:"php",displayName:"PHP",tier:"extended",scaffoldSupport:true,importSupport:true,lifecycleCommands:N,moduleCommands:false,doctorSupport:"readiness",notes:["Laravel projects use the official Composer generator and PHP/Composer lifecycle adapter."]},ruby:{runtime:"ruby",displayName:"Ruby",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["help"],moduleCommands:false,doctorSupport:"observed",notes:["Ruby projects are importable and governed as observed projects until a kit exists."]},rust:{runtime:"rust",displayName:"Rust",tier:"extended",scaffoldSupport:true,importSupport:true,lifecycleCommands:N,moduleCommands:false,doctorSupport:"readiness",notes:["Rust projects support Axum and Tauri scaffolding plus Cargo lifecycle commands."]},elixir:{runtime:"elixir",displayName:"Elixir",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["help"],moduleCommands:false,doctorSupport:"observed",notes:["Elixir projects are importable and governed as observed projects until a kit exists."]},clojure:{runtime:"clojure",displayName:"Clojure",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["help"],moduleCommands:false,doctorSupport:"observed",notes:["Clojure projects are importable and governed as observed projects until a kit exists."]},scala:{runtime:"scala",displayName:"Scala",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["help"],moduleCommands:false,doctorSupport:"observed",notes:["Scala projects are importable and governed as observed projects until a kit exists."]},kotlin:{runtime:"kotlin",displayName:"Kotlin",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["help"],moduleCommands:false,doctorSupport:"observed",notes:["Kotlin projects are importable and governed as observed projects until a kit exists."]},deno:{runtime:"deno",displayName:"Deno",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["help"],moduleCommands:false,doctorSupport:"observed",notes:["Deno projects are importable and governed as observed projects until a kit exists."]},bun:{runtime:"bun",displayName:"Bun",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["init","dev","start","build","test","lint","format","help"],moduleCommands:false,doctorSupport:"observed",notes:["Bun projects are importable and governed as observed projects until a kit exists.","Declared package scripts execute through the Bun-aware npm wrapper; undeclared lifecycle commands remain unavailable."]},c:{runtime:"c",displayName:"C",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["help"],moduleCommands:false,doctorSupport:"observed",notes:["C projects are importable and receive manifest, test, quality, security, and coverage evidence without assuming a package manager."]},cpp:{runtime:"cpp",displayName:"C++",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["help"],moduleCommands:false,doctorSupport:"observed",notes:["C++ projects are importable and receive manifest, test, quality, security, and coverage evidence without assuming a package manager."]},unknown:{runtime:"unknown",displayName:"Unknown",tier:"observed",scaffoldSupport:false,importSupport:true,lifecycleCommands:["help"],moduleCommands:false,doctorSupport:"observed",notes:["Unknown projects are tracked safely but require manual command configuration."]}};function O(e){return we[e||"unknown"]??we.unknown}function ve(e){return h(e).supportTier}function Pe(e){let t=O(e.runtime);return {lifecycleCommands:t.lifecycleCommands,moduleCommands:e.moduleSupport&&t.moduleCommands,unsupportedLifecycleCommands:N.filter(n=>!t.lifecycleCommands.includes(n))}}var Xe=["python","node","bun","go","java","dotnet","rust","php"];function M(e){return !!e&&Xe.includes(e)}function J(e,t){return t!=="lint"&&t!=="format"&&t!=="docs"?false:e==="python"}function Ne(e){let t=O(e),n=M(t.runtime),r=Ze[t.runtime]??[],o=Qe[t.runtime]??[];return {runtime:t.runtime,displayName:t.displayName,lifecycleCommands:t.lifecycleCommands,hasExecutor:n,packageManagers:r,primaryFiles:o,notes:t.notes}}var Ze={python:["poetry","pip","uv"],node:["npm","pnpm","yarn","bun"],go:["go"],java:["maven","gradle"],dotnet:["dotnet"],php:["composer"],ruby:["bundle"],rust:["cargo"],elixir:["mix"],kotlin:["gradle"],deno:["deno"],bun:["bun"]},Qe={python:["pyproject.toml","requirements.txt","requirements.in"],node:["package.json"],go:["go.mod"],java:["pom.xml","build.gradle","build.gradle.kts"],dotnet:["*.csproj","*.sln"],php:["composer.json"],ruby:["Gemfile"],rust:["Cargo.toml"],elixir:["mix.exs"],kotlin:["settings.gradle.kts"],deno:["deno.json","deno.jsonc"],bun:["package.json","bunfig.toml",".bunfig.toml"]};function D(e,t){let n=j$1(e)?null:e,r=i({runtime:typeof n?.runtime=="string"?n.runtime:void 0,framework:typeof n?.framework=="string"?n.framework:void 0,kitName:typeof n?.kit_name=="string"?n.kit_name:typeof n?.kit=="string"?n.kit:void 0});return r.runtime!=="unknown"?r.runtime:m(t,n).runtime}function Ee(e,t={}){let n=e;for(;;){for(let o of u(n,"project.json"))if(f.existsSync(o))try{return JSON.parse(f.readFileSync(o,"utf8"))}catch{return null}if(t.searchParents===false)break;let r=l.dirname(n);if(r===n)break;n=r;}return null}function pn(e,t){return D(e,t)==="go"}function mn(e,t){return D(e,t)==="node"}function dn(e,t){return D(e,t)==="java"}function fn(e,t){return D(e,t)==="dotnet"}function gn(e,t){return D(e,t)==="python"}var tt=["project.json","context.json","file-hashes.json"];async function vn(e){let t=l.resolve(e),n=[];for(let r of tt){let o=v(t,r);if(await A.pathExists(o))continue;let i=l.join(t,".rapidkit",r);if(!await A.pathExists(i))continue;let u=await A.readJson(i);await A.ensureDir(l.dirname(o));let g=`${o}.${process.pid}.${Date.now()}.tmp`;try{await A.writeJson(g,u,{spaces:2}),await A.move(g,o,{overwrite:false}),n.push(o);}finally{await A.remove(g).catch(()=>{});}}return n}function nt(e){for(let t of u(e,"context.json"))if(f.existsSync(t))try{return JSON.parse(f.readFileSync(t,"utf8"))}catch{return null}return null}function rt(e){let t=e?.engine;return t==="npm"||t==="pip"||t==="python"||t==="poetry"||t==="venv"||t==="pipx"||t==="uv"?t:"unknown"}function ot(e,t){if(e?.module_support===false||t?.module_support===false||!e&&t)return false;let n=typeof e?.kit_name=="string"?e.kit_name:typeof e?.kit=="string"?e.kit:typeof t?.kit=="string"?t.kit:void 0,r=n?W(n):void 0;return r?.owner==="core"&&r.moduleSupport===true}function it(e,t,n){let r=j$1(t)?null:t,o=i({runtime:typeof r?.runtime=="string"?r.runtime:typeof n?.runtime=="string"?n.runtime:void 0,framework:typeof r?.framework=="string"?r.framework:typeof n?.framework=="string"?n.framework:void 0,kitName:typeof r?.kit_name=="string"?r.kit_name:typeof r?.kit=="string"?r.kit:typeof n?.kit=="string"?n.kit:void 0});return o.key!=="unknown"?o:m(e,r)}function Me(e){let t=l.resolve(e);if(![...u(t,"project.json"),...u(t,"context.json")].some(u=>f.existsSync(u)))return null;let r=Ee(t,{searchParents:false}),o=nt(t),i=it(t,r,o);return {projectRoot:t,projectJson:r,contextJson:o,detection:i,moduleSupport:ot(r,o),engine:rt(o)}}var st=["build","dev","start","test","lint","format"],oe=["init","test","build","start"],Rn=["lint","format","docs"];function En(e){return !!e&&st.includes(e)}var at={dev:["dev","start:dev","watch"],start:["start","start:prod","preview"],build:["build","compile"],test:["test","test:unit","test:ci"],lint:["lint","eslint"],format:["format","prettier"]},Le={nestjs:{dev:["dev","start:dev"],start:["start","start:prod"],build:["build"],test:["test","test:e2e"],lint:["lint"],format:["format"]},express:{dev:["dev","start:dev"],start:["start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},fastify:{dev:["dev","start:dev"],start:["start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},koa:{dev:["dev","start:dev"],start:["start"],build:["build"],test:["test"],lint:["lint"],format:["format"]}};function ct(e){let t=l.join(e,"package.json");if(!f.existsSync(t))return {};try{let r=JSON.parse(f.readFileSync(t,"utf8")).scripts??{};return Object.fromEntries(Object.entries(r).filter(o=>typeof o[1]=="string"))}catch{return {}}}function lt(e,t){let n=t?c(t):"unknown",r=n!=="unknown"?a$1(n,e):[],o=t?Le[t]?.[e]??[]:[],i=at[e]??[],u=[...r,...o,...i];return [...new Set(u)]}function _e(e,t,n){let r=ct(e),o=new Set(Object.keys(r));if(o.has(t))return {scriptName:t,source:"package.json"};for(let i of lt(t,n?.framework))if(o.has(i))return {scriptName:i,source:a$1(c(n?.framework??"unknown"),t).includes(i)||Le[n?.framework??""]?.[t]?.includes(i)?"framework-candidate":"generic-candidate"};return null}function se(e){return f.existsSync(l.join(e,"package.json"))}function ut(e){try{let t=JSON.parse(f.readFileSync(l.join(e,"package.json"),"utf8"));return typeof t.packageManager!="string"?null:t.packageManager.trim().match(/^(npm|pnpm|yarn|bun)(?:@|$)/)?.[1]??null}catch{return null}}function Y(e){let t=ut(e);return t||(f.existsSync(l.join(e,"bun.lock"))||f.existsSync(l.join(e,"bunfig.toml"))?"bun":f.existsSync(l.join(e,"pnpm-lock.yaml"))?"pnpm":f.existsSync(l.join(e,"yarn.lock"))?"yarn":f.existsSync(l.join(e,"package-lock.json"))?"npm":f.existsSync(l.join(e,"pnpm-workspace.yaml"))?"pnpm":"npm")}function $n(e,t,n=Y(e)){return n==="npm"?`npm run ${t}`:`${n} run ${t}`}function Bn(e,t=Y(e)){return `${t} install`}var pt="polyglot-lifecycle-plan.v1",$e=new Set([".git",".workspai",".rapidkit",".venv","bin","build","dist","node_modules","obj","target","third_party","vendor","fixture","fixtures","__fixtures__","testdata"]);function I(e,t){return l.relative(e,t).split(l.sep).join("/")||"."}function mt(e){let t=new Set,n=(r,o)=>{if(o>4)return;let i=[];try{i=f.readdirSync(r,{withFileTypes:true});}catch{return}for(let u of i){if(u.isDirectory()){$e.has(u.name)||n(l.join(r,u.name),o+1);continue}if(!u.isFile()||!u.name.endsWith(".go")||u.name.endsWith("_test.go"))continue;let g=l.join(r,u.name);try{let s=f.readFileSync(g,"utf8");/^\s*package\s+main\b/m.test(s)&&/^\s*func\s+main\s*\(/m.test(s)&&t.add(I(e,r));}catch{}}};return n(e,0),t.size===1?[...t][0]:null}function Fe(e,t,n){let r=false;for(let o of e.split(/\r?\n/)){let i=o.match(/^\s*\[([^\]]+)\]\s*(?:#.*)?$/)?.[1]?.trim();if(i!==void 0){r=i===t;continue}if(r&&new RegExp(`^\\s*${n}\\s*=`).test(o))return true}return false}function dt(e,t){let n=[],r=(o,i)=>{if(i>t)return;let u=[];try{u=f.readdirSync(o,{withFileTypes:true});}catch{return}for(let g of u.sort((s,d)=>s.name.localeCompare(d.name))){let s=l.join(o,g.name);if(g.isDirectory()){$e.has(g.name)||r(s,i+1);continue}g.isFile()&&(["package.json","deno.json","deno.jsonc","pyproject.toml","go.mod","Cargo.toml","pom.xml","build.gradle","build.gradle.kts","build.sbt","deps.edn","composer.json","Gemfile","mix.exs","CMakeLists.txt","meson.build"].includes(g.name)||/\.(?:cs|fs|vb)proj$/i.test(g.name))&&n.push(s);}};return r(e,0),n}function ft(e,t){if(l.dirname(t)!==e)return false;let n,r;try{n=JSON.parse(f.readFileSync(l.join(e,".workspai","project.json"),"utf8")),r=f.readFileSync(t,"utf8").replace(/\r\n/g,`
|
|
2
2
|
`).trim();}catch{return false}if(n.generated_by!=="workspai")return false;let o=String(n.kit??n.kit_name??"");if(o==="agent.microsoft.python"&&l.basename(t)==="pyproject.toml"){let i=typeof n.name=="string"?n.name:"",u=["[project]",`name = ${JSON.stringify(i)}`,'version = "0.1.0"','requires-python = ">=3.10"',"dependencies = []","","[tool.uv]","package = false"].join(`
|
|
3
3
|
`);return i.length>0&&r===u&&f.existsSync(l.join(e,"agents","primary","pyproject.toml"))}if(o==="agent.microsoft.dotnet"&&/\.(?:cs|fs|vb)proj$/iu.test(t)){let i=['<Project Sdk="Microsoft.NET.Sdk">'," <PropertyGroup>"," <TargetFramework>net8.0</TargetFramework>"," <ImplicitUsings>enable</ImplicitUsings>"," <Nullable>enable</Nullable>"," </PropertyGroup>","</Project>"].join(`
|
|
4
4
|
`);return r===i&&f.existsSync(l.join(e,"agents","primary","Primary.csproj"))}return false}function gt(e,t){let n=I(e,t).toLowerCase().split("/"),r=n.findIndex(o=>["test","tests","spec","specs","e2e","integration","integration-tests","eval","evals","bench","benchmark","benchmarks","benchmark-app","benchmark-apps"].includes(o));return r<0?false:n.length-r>2}function yt(e){if(l.basename(e)!=="package.json")return true;try{let t=l.dirname(e),n=JSON.parse(f.readFileSync(e,"utf8")),r=i=>{let u=n[i];return !!(u&&typeof u=="object"&&Object.keys(u).length>0)},o=n.scripts&&typeof n.scripts=="object"?n.scripts:{};return ["dependencies","devDependencies","optionalDependencies","peerDependencies"].some(r)||["preinstall","install","postinstall","prepare","init","test","build","start"].some(i=>typeof o[i]=="string")||["package-lock.json","pnpm-lock.yaml","yarn.lock","bun.lock","bun.lockb"].some(i=>f.existsSync(l.join(t,i)))||Be(e).length>0||f.existsSync(l.join(t,"pnpm-workspace.yaml"))}catch{return true}}function bt(e,t){let n=l.basename(t);return n!=="build.gradle"&&n!=="build.gradle.kts"||l.dirname(t)===e?false:f.existsSync(l.join(e,"settings.gradle"))||f.existsSync(l.join(e,"settings.gradle.kts"))}function kt(e,t){if(l.basename(t)!=="CMakeLists.txt")return false;let n=l.dirname(t),r=l.dirname(n);for(;r.startsWith(`${e}${l.sep}`)||r===e;){let o=l.join(r,"CMakeLists.txt");if(f.existsSync(o))try{let i=f.readFileSync(o,"utf8");for(let u of i.matchAll(/add_subdirectory\s*\(\s*["']?([^\s)"']+)/giu)){let g=u[1];if(g&&l.resolve(r,g)===n)return true}}catch{}if(r===e)break;r=l.dirname(r);}return false}function Te(e,t){let n=e.match(new RegExp(`^\\s*${t}\\s*=\\s*\\[([\\s\\S]*?)\\]`,"m"));return n?.[1]?[...n[1].matchAll(/["']([^"']+)["']/g)].map(r=>r[1]??""):[]}function Be(e){try{let t=JSON.parse(f.readFileSync(e,"utf8"));if(Array.isArray(t.workspaces))return t.workspaces.filter(n=>typeof n=="string");if(t.workspaces&&typeof t.workspaces=="object"&&!Array.isArray(t.workspaces)){let n=t.workspaces.packages;return Array.isArray(n)?n.filter(r=>typeof r=="string"):[]}}catch{}return []}function ht(e){if(!f.existsSync(e))return [];try{let t=f.readFileSync(e,"utf8"),n=t.match(/^packages\s*:\s*\[([^\]]*)\]/m)?.[1];return n!==void 0?[...n.matchAll(/["']([^"']+)["']/g)].map(o=>o[1]??""):[...(t.match(/^packages\s*:\s*\n((?:^[ \t]+-.*\n?)*)/m)?.[1]??"").matchAll(/^[ \t]+-[ \t]+["']?([^"'#\n]+?)["']?[ \t]*$/gm)].map(o=>(o[1]??"").trim())}catch{return []}}function Oe(e,t){let n=t.replace(/^\.\//,"").replace(/\/$/,""),r="^";for(let o=0;o<n.length;o+=1){let i=n[o]??"";i==="*"&&n[o+1]==="*"?(r+=".*",o+=1):i==="*"?r+="[^/]*":i==="?"?r+="[^/]":r+=i.replace(/[|\\{}()[\]^$+?.]/g,"\\$&");}return new RegExp(`${r}$`).test(e)}function Ct(e,t){let n=I(e.root,t);return n==="."||n.startsWith("../")||!e.patterns.some(o=>!o.startsWith("!")&&Oe(n,o))?false:!e.exclusions.some(o=>Oe(n,o))}function St(e){return e.filter(t=>l.basename(t)==="package.json").map(t=>{let n=l.dirname(t),r=[...Be(t),...ht(l.join(n,"pnpm-workspace.yaml"))];return {root:n,patterns:r.filter(o=>!o.startsWith("!")),exclusions:r.filter(o=>o.startsWith("!")).map(o=>o.slice(1))}}).filter(t=>t.patterns.length>0)}function jt(e){return e.filter(t=>l.basename(t)==="Cargo.toml").map(t=>{try{let n=f.readFileSync(t,"utf8");return /^\s*\[workspace\]\s*$/m.test(n)?{root:l.dirname(t),patterns:Te(n,"members"),exclusions:Te(n,"exclude")}:null}catch{return null}}).filter(t=>!!t?.patterns.length)}function De(e,t,n){if(l.basename(e)!==n)return false;let r=l.dirname(e);return t.some(o=>o.root!==r&&Ct(o,r))}function Ie(e){return /^[A-Za-z0-9_./:@%+,=\\-]+$/.test(e)?e:`"${e.replace(/(["\\])/g,"\\$1")}"`}function xt(e){return e.map(t=>[Ie(t.executable),...t.args.map(Ie)].join(" ")).join(" && ")}function a(e,t,n="high",r){return {stage:e,command:t,confidence:n,preflight:"executable-and-inputs",...r&&r.length>0?{argvSequence:r}:{}}}function wt(e){let{unitRoot:t,contents:n$1,poetryManaged:r$1}=e,o=q({unitRoot:t,projectRoot:e.projectRoot}),i=Fe(n$1,"tool.poetry.scripts","start")||Fe(n$1,"project.scripts","start"),u=f.existsSync(l.join(t,"main.py")),g=/^\s*\[tool\.workspai\]\s*$[\s\S]*?^\s*lifecycle-lock-tool\s*=\s*["']uv["']\s*$/m.test(n$1),s$1=m$1(o.venvPath),d=r(t,s$1),b=s(t,s$1),k=r$1?i$1():d,p=Pt(t,n$1,r$1,k);if(r$1)return [a("init","poetry install"),...p?[a("test",p)]:[],...u?[a("build",`${k} -m compileall .`)]:/\[build-system\]/.test(n$1)?[a("build","poetry build","medium")]:[],...u?[a("start",`${k} main.py`)]:i?[a("start","poetry run start","medium")]:[]];let h=s(t,o.venvPath),v=o.pipAvailable||f.existsSync(n(o.venvPath)),C=[];o.venvExists||C.push({executable:i$1(),args:["-m","venv",h]}),(!o.venvExists||!v)&&C.push({executable:b,args:["-m","ensurepip","--upgrade"]}),C.push({executable:b,args:["-m","pip","install","-e","."]}),g&&C.push({executable:"uv",args:["lock"]});let K=!!(p&&(p.includes(" -m pytest")||p.includes("pytest")));return [a("init",xt(C),"high",C),...p?[a("test",p,"high",[{executable:b,args:K?["-m","pytest"]:["-m","unittest","discover","-s","tests"]}])]:[],...u?[a("build",`${d} -m compileall .`,"high",[{executable:b,args:["-m","compileall","."]}])]:/\[build-system\]/.test(n$1)?[a("build",`${d} -m build`,"medium",[{executable:b,args:["-m","build"]}])]:[],...u?[a("start",`${d} main.py`,"high",[{executable:b,args:["main.py"]}])]:i?[a("start","start","medium")]:[]]}function vt(e,t){let n={};try{let i=JSON.parse(t);i.scripts&&typeof i.scripts=="object"&&!Array.isArray(i.scripts)&&(n=i.scripts);}catch{}let r=Y(e),o=i=>`${r} run ${i}`;return [a("init",r==="yarn"?"yarn install":`${r} install`),...typeof n.test=="string"?[a("test",o("test"))]:[],...typeof n.build=="string"?[a("build",o("build"))]:[],...typeof n.start=="string"?[a("start",o("start"))]:[]]}function Pt(e,t,n,r){let o=f.existsSync(l.join(e,"tests")),i=["requirements.txt","requirements-dev.txt","requirements-test.txt"].some(g=>{try{return /^\s*pytest(?:\[|\s|[<>=~!])/im.test(f.readFileSync(l.join(e,g),"utf8"))}catch{return false}});return /\[tool\.pytest(?:\.|\])/i.test(t)||/["']pytest(?:\[|[<>=~!]|["'])/i.test(t)||f.existsSync(l.join(e,"pytest.ini"))||f.existsSync(l.join(e,"conftest.py"))||i?n?"poetry run pytest":`${r} -m pytest`:o?n?"poetry run python -m unittest discover -s tests":`${r} -m unittest discover -s tests`:null}function Nt(e,t){let n=l.basename(t),r=l.dirname(t),o=I(e,r),i=I(e,t),u=i.toLowerCase().split("/"),g=u.some(p=>["example","examples","sample","samples","worked","eval","evals","bench","benchmark","benchmarks","benchmark-app","benchmark-apps"].includes(p))?"example":u.some(p=>["test","tests","e2e","integration","integration-tests"].includes(p))?"test":u.some(p=>["script","scripts","tool","tools","tooling"].includes(p))?"tooling":"production",s="";try{s=f.readFileSync(t,"utf8");}catch{return null}let d,b,k;if(n==="package.json"){let p=f.existsSync(l.join(r,"bun.lock"))||f.existsSync(l.join(r,"bun.lockb"))||f.existsSync(l.join(r,"bunfig.toml"))||f.existsSync(l.join(r,".bunfig.toml"));d=p?"bun":"node",b=p?"bun":"npm",k=vt(r,s);}else if(n==="deno.json"||n==="deno.jsonc"){d="deno",b="deno";let p={};try{let h=JSON.parse(s);h.tasks&&typeof h.tasks=="object"&&!Array.isArray(h.tasks)&&(p=h.tasks);}catch{}k=[...typeof p.test=="string"?[a("test","deno task test")]:[a("test","deno test","medium")],...typeof p.build=="string"?[a("build","deno task build")]:[],...typeof p.start=="string"?[a("start","deno task start")]:typeof p.dev=="string"?[a("start","deno task dev","medium")]:[]];}else if(n==="pyproject.toml"){d="python",b="python";let p=/^\s*\[tool\.poetry\]\s*$/m.test(s);k=wt({projectRoot:e,unitRoot:r,contents:s,poetryManaged:p});}else if(n==="go.mod"){d="go",b="go";let p=mt(r);k=[a("init","go mod download"),a("test","go test ./..."),a("build","go build ./..."),...p?[a("start",p==="."?"go run .":`go run ./${p}`)]:[]];}else if(n==="Cargo.toml")d="rust",b="cargo",k=[a("init","cargo fetch"),a("test","cargo test"),a("build","cargo build"),...f.existsSync(l.join(r,"src","main.rs"))?[a("start","cargo run")]:[]];else if(n==="pom.xml"){d="java",b="maven";let p=f.existsSync(l.join(r,"mvnw"))?"./mvnw":"mvn";k=[a("init",`${p} dependency:go-offline`),a("test",`${p} test`),a("build",`${p} package`)];}else if(n==="build.gradle"||n==="build.gradle.kts"){d=/(?:kotlin|org\.jetbrains\.kotlin)/i.test(s)?"kotlin":"java",b="gradle";let p=f.existsSync(l.join(r,"gradlew"))?"./gradlew":"gradle";k=[a("init",`${p} dependencies`),a("test",`${p} test`),a("build",`${p} build`)];}else if(n==="build.sbt")d="scala",b="sbt",k=[a("init","sbt update"),a("test","sbt test"),a("build","sbt compile")];else if(n==="deps.edn")d="clojure",b="clojure-cli",k=[a("init","clojure -P"),.../:test\b/.test(s)?[a("test","clojure -X:test","medium")]:[]];else if(/\.(?:cs|fs|vb)proj$/i.test(n)){d="dotnet",b="nuget";let p=g==="test"||/<IsTestProject>\s*true\s*<\/IsTestProject>/i.test(s)||/PackageReference\s+Include=["']Microsoft\.NET\.Test\.Sdk["']/i.test(s);k=[a("init",`dotnet restore ${n}`),...p?[a("test",`dotnet test ${n}`)]:[],a("build",`dotnet build ${n}`),...!p&&(/<Project\s+Sdk=["']Microsoft\.NET\.Sdk\.Web["']/i.test(s)||/<OutputType>\s*(?:Exe|WinExe)\s*<\/OutputType>/i.test(s))?[a("start",`dotnet run --project ${n}`)]:[]];}else if(n==="composer.json"){d="php",b="composer";let p={};try{let h=JSON.parse(s);h.scripts&&typeof h.scripts=="object"&&!Array.isArray(h.scripts)&&(p=h.scripts);}catch{}k=[a("init","composer install"),...typeof p.test<"u"?[a("test","composer test")]:f.existsSync(l.join(r,"vendor","bin","phpunit"))||f.existsSync(l.join(r,"phpunit.xml"))||f.existsSync(l.join(r,"phpunit.xml.dist"))?[a("test","vendor/bin/phpunit","medium")]:[],...typeof p.build<"u"?[a("build","composer build")]:[],...typeof p.start<"u"?[a("start","composer start")]:[]];}else if(n==="Gemfile"){d="ruby",b="bundler";let p=f.existsSync(l.join(r,"bin","rails")),h=p||/\bgem\s+['\"]rails['\"]/.test(s),v=f.existsSync(l.join(r,"spec"))||/\bgem\s+['\"]rspec(?:-rails)?['\"]/.test(s),C=f.existsSync(l.join(r,"test"));k=[a("init","bundle install"),...C&&h?[a("test","bundle exec rails test")]:v?[a("test","bundle exec rspec")]:f.existsSync(l.join(r,"Rakefile"))?[a("test","bundle exec rake test","medium")]:[],...p?[a("start","bundle exec rails server")]:[]];}else if(n==="mix.exs")d="elixir",b="mix",k=[a("init","mix deps.get"),a("test","mix test"),a("build","mix compile"),.../(?:phoenix|phx\.server)/i.test(s)?[a("start","mix phx.server")]:[]];else if(n==="CMakeLists.txt")d=/(?:\bcxx\b|\bcplusplus\b|\bc\+\+\b)/iu.test(s)?"cpp":"c",b="cmake",k=[a("init","cmake -S . -B build"),a("test","ctest --test-dir build --output-on-failure","medium"),a("build","cmake --build build")];else if(n==="meson.build")d=/(?:cpp|c\+\+)/iu.test(s)?"cpp":"c",b="meson",k=[a("init","meson setup build"),a("test","meson test -C build","medium"),a("build","meson compile -C build")];else return null;return {id:`${d}:${o}:${l.basename(i)}`,runtime:d,ecosystem:b,role:g,root:o,manifest:i,stages:k}}function Ke(e,t={}){let n=l.resolve(e),r=dt(n,Math.max(0,Math.min(t.maxDepth??4,12))),o=St(r),i=jt(r),u=r.filter(s=>!ft(n,s)).filter(s=>!gt(n,s)).filter(s=>!bt(n,s)).filter(s=>!kt(n,s)).filter(s=>yt(s)).filter(s=>!De(s,o,"package.json")).filter(s=>!De(s,i,"Cargo.toml")).map(s=>Nt(n,s)).filter(s=>!!s).filter(s=>t.includeExamples===true||s.role!=="example").sort((s,d)=>s.runtime.localeCompare(d.runtime)||s.root.localeCompare(d.root)||s.manifest.localeCompare(d.manifest)),g=[...new Set(u.map(s=>s.runtime))].sort();return {schemaVersion:pt,projectRoot:".",polyglot:g.length>1,runtimes:g,units:u}}function Ge(e){let t=Ne(e);return t.runtime==="unknown"&&e!=="unknown"?null:{runtime:t.runtime,displayName:t.displayName,supportedCommands:t.lifecycleCommands,packageManagers:t.packageManagers,primaryFiles:t.primaryFiles,notes:t.notes,hasExecutor:t.hasExecutor}}function ae(e){try{let t=f.readFileSync(e,"utf8");return /^\s*package\s+main\b/m.test(t)&&/\bfunc\s+main\s*\(/m.test(t)}catch{return false}}function le(e){let t=l.join(e,"main.go");if(ae(t))return "./.";try{if(f.readdirSync(e,{withFileTypes:true}).filter(o=>o.isFile()&&o.name.endsWith(".go")).map(o=>l.join(e,o.name)).filter(ae).length>0)return "./."}catch{}let n=l.join(e,"cmd");try{let r=f.readdirSync(n,{withFileTypes:true}).filter(o=>o.isDirectory()).map(o=>({name:o.name,mainPath:l.join(n,o.name,"main.go")})).filter(o=>ae(o.mainPath)).map(o=>`./cmd/${o.name}`).sort();return r.length===1?r[0]:null}catch{return null}}function Et(e){try{let t=l.join(e,"Makefile");return f.existsSync(t)?f.readFileSync(t,"utf8"):""}catch{return ""}}function R(e,t){let n=Et(e);return n?new RegExp(`^${t}\\s*:`,"m").test(n):false}function y(e){try{return f.existsSync(e)}catch{return false}}function E(e){try{return y(e)?f.readFileSync(e,"utf8"):""}catch{return ""}}function Mt(e){let t=[e];for(;t.length>0;){let n=t.shift();if(!n)break;let r=[];try{r=f.readdirSync(n,{withFileTypes:true});}catch{continue}for(let o of r){if(o.name==="node_modules"||o.name===".git"||o.name==="dist")continue;let i=l.join(n,o.name);if(o.isFile()&&o.name.endsWith(".csproj"))return true;o.isDirectory()&&t.push(i);}}return false}function We(e,t){let n=y(l.join(e,"pyproject.toml")),r=y(l.join(e,"requirements.txt"))||y(l.join(e,"requirements.in")),o=y(l.join(e,"manage.py")),i=y(l.join(e,".workspai","cli.py"))||y(l.join(e,".rapidkit","cli.py")),u=E(l.join(e,"pyproject.toml")),g=y(l.join(e,"tests"))||y(l.join(e,"test"))||/\[tool\.pytest/i.test(u),s=/^\s*\[build-system\]\s*$/m.test(u),d=/^\s*\[(?:project\.scripts|tool\.poetry\.scripts)\]\s*$/m.test(u)&&/^\s*(?:start|serve)\s*=/m.test(u);switch(t){case "init":return n||r;case "dev":case "start":return o||d||i;case "test":return g||i;case "build":return s||i;case "lint":case "format":return n||r||o||y(l.join(e,"setup.py"))||y(l.join(e,"setup.cfg"));default:return false}}function At(e,t){if(!y(l.join(e,"go.mod")))return false;switch(t){case "init":return true;case "dev":return R(e,"run")||le(e)!==null;case "test":return true;case "build":return true;case "start":return R(e,"run")||le(e)!==null;case "lint":return y(l.join(e,".golangci.yml"))||y(l.join(e,".golangci.yaml"))||R(e,"lint");case "format":return true;default:return false}}function Lt(e,t,n){let r=y(l.join(e,"pom.xml")),o=y(l.join(e,"build.gradle"))||y(l.join(e,"build.gradle.kts"));if(!r&&!o)return false;let i=E(l.join(e,"pom.xml")),u=[E(l.join(e,"build.gradle")),E(l.join(e,"build.gradle.kts"))].join(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a as a$1}from'./chunk-A5FBGRJA.js';import {g as g$1,p}from'./chunk-
|
|
1
|
+
import {a as a$1}from'./chunk-A5FBGRJA.js';import {g as g$1,p}from'./chunk-IHWS3ALP.js';import {g,h}from'./chunk-BLEIUQL6.js';import {y,w as w$1}from'./chunk-6BO4QHKA.js';import {t as t$1}from'./chunk-VQZ5PI5J.js';import {t,s}from'./chunk-ODK4LCEL.js';import a from'path';import {existsSync}from'fs';import m from'fs-extra';var f=t.workspaceRegistry,w=s.workspaceRegistry.schemaVersion;function E(r){return {slug:r.slug,relativePath:r.relativePath,framework:r.framework,kit:r.kit,source:r.source}}async function b(r){let e=t$1(r,"workspace.json").find(t=>existsSync(t));if(!e)return {exists:false,legacyProjectCount:0};try{let t=await m.readJson(e),c=Array.isArray(t.projects)?t.projects.length:0,o=typeof t.workspace_name=="string"&&t.workspace_name.trim()||typeof t.name=="string"&&t.name.trim()||a.basename(r);return {exists:true,manifestPath:e,workspaceName:o,profile:typeof t.profile=="string"?t.profile:void 0,legacyProjectCount:c}}catch{return {exists:true,manifestPath:e,legacyProjectCount:0,workspaceName:a.basename(r)}}}async function _(r){let e=a$1(r);for(let t of y())if(await m.pathExists(t))try{let o=((await m.readJson(t)).workspaces||[]).find(s=>a$1(s.path)===e);if(o)return {exists:true,projectCount:Array.isArray(o.projects)?o.projects.length:0,registryPath:t}}catch{continue}return {exists:false,projectCount:0,registryPath:a.join(w$1(),"workspaces.json")}}async function T(r,e){let t=a.resolve(r),c=await g(t,g$1),o=await b(t),s=await _(t),i=e?.contract!==void 0||!!c,n=[];if(e?.contract)n=e.contract.projects||[];else if(i)try{let{contract:A}=await p({workspacePath:t});n=A.projects||[];}catch{n=[];}let d={contract:{exists:i,projectCount:n.length,path:g$1},globalRegistry:{exists:s.exists,projectCount:s.projectCount,path:s.registryPath},legacyWorkspaceJson:{exists:o.exists,projectCount:o.legacyProjectCount,path:o.manifestPath?a.relative(t,o.manifestPath):void 0}},p$1="none",u=[],y=0;return i?(p$1="workspace.contract.json",u=n.map(E),y=u.length):s.projectCount>0?(p$1="global-registry",y=s.projectCount):o.legacyProjectCount>0&&(p$1="legacy-workspace.json",y=o.legacyProjectCount),{contractExists:i,summary:{schemaVersion:w,kind:"rapidkit.workspace.registry",workspacePath:t,workspaceName:o.workspaceName||a.basename(t),profile:o.profile,projectCount:y,authority:p$1,contractPath:g$1,projects:u,sources:d}}}async function U(r){let e=await g(r,f);if(!e)return null;try{let t=await m.readJson(e);return t?.schemaVersion!==w?null:t}catch{return null}}async function D(r,e){let t=await M(r,e);return await h(r,f,t),t}async function M(r,e){return {...(await T(r,{contract:e?.contract})).summary,generatedAt:(e?.now??new Date).toISOString(),registrySummaryPath:f}}function F(r,e=""){return r.projectCount>0?r.authority==="workspace.contract.json"?`${r.projectCount} project(s) registered in workspace contract${e}.`:r.authority==="global-registry"?`${r.projectCount} project(s) registered in global workspace registry${e}.`:`${r.projectCount} project(s) registered in legacy workspace manifest${e}.`:`Workspace state exists, but no projects are registered yet${e}.`}export{f as a,w as b,T as c,U as d,D as e,M as f,F as g};
|