workspai 0.76.0 → 0.78.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.
Files changed (93) hide show
  1. package/README.md +2 -2
  2. package/contracts/create-planner-capabilities.v1.json +50 -2
  3. package/contracts/runtime-command-surface.v1.json +5 -1
  4. package/contracts/workspace-intelligence/workspace-model.v1.json +4 -0
  5. package/contracts/workspace-intelligence-architecture.v1.json +5 -1
  6. package/dist/analyze-X76YV667.js +1 -0
  7. package/dist/autopilot-release-6OV2FLRS.js +1 -0
  8. package/dist/capabilities-command-TIBIKWPK.js +1 -0
  9. package/dist/{chunk-RKFTUIZ4.js → chunk-2CUT4GLE.js} +1 -1
  10. package/dist/chunk-3PGXGAHC.js +2 -0
  11. package/dist/{chunk-AGI46TSQ.js → chunk-4AAXIWYY.js} +1 -1
  12. package/dist/{chunk-FBF767WP.js → chunk-4KAYWMNE.js} +1 -1
  13. package/dist/chunk-4ZUBPFSO.js +6 -0
  14. package/dist/{chunk-2I2A55RE.js → chunk-5FVREPQC.js} +1 -1
  15. package/dist/{chunk-KO4DM2AV.js → chunk-5OKNWBAN.js} +1 -1
  16. package/dist/{chunk-4MXKXHLW.js → chunk-75WJOYWT.js} +1 -1
  17. package/dist/{chunk-H4YHIOCT.js → chunk-7EMG3C3H.js} +3 -3
  18. package/dist/{chunk-TJ3MDZMC.js → chunk-7HV4U2OV.js} +1 -1
  19. package/dist/{chunk-TFFNHWXY.js → chunk-AMGIXK6Z.js} +1 -1
  20. package/dist/{chunk-QIPW3G2H.js → chunk-FLAGHVSH.js} +1 -1
  21. package/dist/chunk-HB3ZYG2Z.js +4737 -0
  22. package/dist/{chunk-IKNWNGLY.js → chunk-HMWZWT7B.js} +1 -1
  23. package/dist/{chunk-PUH3TSPC.js → chunk-IQJL3LBM.js} +1 -1
  24. package/dist/{chunk-HRGIHWYH.js → chunk-KRTVIBPC.js} +1 -1
  25. package/dist/chunk-MD4CHXV3.js +2 -0
  26. package/dist/{chunk-4BBFEHPL.js → chunk-MN5S462C.js} +1 -1
  27. package/dist/{chunk-X7MDTBX5.js → chunk-ONUFNCRN.js} +1 -1
  28. package/dist/chunk-QDM6TWFK.js +1 -0
  29. package/dist/chunk-QLHRGWUW.js +10 -0
  30. package/dist/{chunk-Z2M2XCIB.js → chunk-QMNJTI65.js} +1 -1
  31. package/dist/{chunk-23CNBYIW.js → chunk-RHF2IZOW.js} +1 -1
  32. package/dist/{chunk-UOTOJJI4.js → chunk-RJESUJQF.js} +5 -5
  33. package/dist/chunk-RQXZF7BZ.js +1 -0
  34. package/dist/{chunk-FD2ZGGCQ.js → chunk-TJRVWVAZ.js} +1 -1
  35. package/dist/{chunk-KW35SWG6.js → chunk-UVIBPWOG.js} +2 -2
  36. package/dist/{chunk-BZLDCASY.js → chunk-VEMGICT4.js} +1 -1
  37. package/dist/{chunk-PSQPKK6H.js → chunk-VRZAN3WS.js} +62 -62
  38. package/dist/{chunk-L6VNI4DN.js → chunk-YHQK4S3H.js} +1 -1
  39. package/dist/{chunk-ZXQC36NJ.js → chunk-YWC5MKIL.js} +1 -1
  40. package/dist/{chunk-R3Z4LY3O.js → chunk-ZQ36CTLF.js} +1 -1
  41. package/dist/{create-ZRUQ3KNZ.js → create-WB5YQ7C6.js} +1 -1
  42. package/dist/{doctor-7V7LJLHX.js → doctor-HOSHQ7II.js} +1 -1
  43. package/dist/{goal-lifecycle-EM4DUJCR.js → goal-lifecycle-UEJMTUFV.js} +1 -1
  44. package/dist/{goal-pack-YMWZHAH6.js → goal-pack-YGZMG3RQ.js} +1 -1
  45. package/dist/index.js +261 -251
  46. package/dist/{pipeline-6MBH3MU2.js → pipeline-Z4JOJ4PX.js} +1 -1
  47. package/dist/{project-agent-entry-ZXAE2MAJ.js → project-agent-entry-ZMDQWJ6I.js} +1 -1
  48. package/dist/{project-intelligence-lens-NBTPOK2R.js → project-intelligence-lens-FSWQKY3E.js} +1 -1
  49. package/dist/{project-test-coverage-HOZC72EK.js → project-test-coverage-EJ3MBSZ3.js} +1 -1
  50. package/dist/{proof-carrying-change-WJFAKK3C.js → proof-carrying-change-M2RNYQ7E.js} +1 -1
  51. package/dist/{verified-goal-B7EX2PBE.js → verified-goal-UAUCEDZZ.js} +1 -1
  52. package/dist/{workspace-EBPYCSEM.js → workspace-J5QYWAE3.js} +1 -1
  53. package/dist/{workspace-agent-sync-Y4F6FBBC.js → workspace-agent-sync-GLG36KQZ.js} +1 -1
  54. package/dist/{workspace-context-Y7F7GJCQ.js → workspace-context-BZV4ZFKZ.js} +1 -1
  55. package/dist/{workspace-contract-XJMWMVQE.js → workspace-contract-XDNIB5JX.js} +1 -1
  56. package/dist/{workspace-explain-T2J5ZLY7.js → workspace-explain-V3XDMONQ.js} +1 -1
  57. package/dist/{workspace-foundation-2UP6IMTH.js → workspace-foundation-EDTKW2RB.js} +1 -1
  58. package/dist/{workspace-graph-stream-MZVL3OCX.js → workspace-graph-stream-UPASFCAF.js} +1 -1
  59. package/dist/{workspace-intelligence-FZRQIFFM.js → workspace-intelligence-24MZRG2S.js} +1 -1
  60. package/dist/{workspace-intelligence-runner-IXT62JG7.js → workspace-intelligence-runner-HISKHQLG.js} +1 -1
  61. package/dist/{workspace-knowledge-graph-EFC4TUDZ.js → workspace-knowledge-graph-5EECTGXQ.js} +1 -1
  62. package/dist/workspace-knowledge-graph-snapshot-T6ZJGWLC.js +1 -0
  63. package/dist/{workspace-mcp-serve-C42UUU7W.js → workspace-mcp-serve-S3TWO4RI.js} +1 -1
  64. package/dist/{workspace-model-72SJ6WXT.js → workspace-model-J757KSDE.js} +1 -1
  65. package/dist/{workspace-onboarding-TFDAIHTS.js → workspace-onboarding-3TLME4HP.js} +1 -1
  66. package/dist/{workspace-registry-summary-ZNTXSUI4.js → workspace-registry-summary-ZC5CFZXP.js} +1 -1
  67. package/dist/{workspace-repair-engine-542TAL3Z.js → workspace-repair-engine-C26C7OIB.js} +1 -1
  68. package/dist/workspace-run-2KBTMGG7.js +1 -0
  69. package/dist/{workspace-verify-UXKENOQU.js → workspace-verify-KFBWQ37C.js} +1 -1
  70. package/dist/{workspace-watch-DV5AHLOK.js → workspace-watch-LNP5JPD4.js} +1 -1
  71. package/docs/README.md +2 -0
  72. package/docs/agent-framework-adapters.md +72 -18
  73. package/docs/ci-workflows.md +20 -6
  74. package/docs/commands-reference.md +7 -2
  75. package/docs/create-planner-capabilities.md +1 -0
  76. package/docs/creating-workspaces-and-projects.md +26 -7
  77. package/docs/doctor-command.md +8 -3
  78. package/docs/model-gateways.md +204 -0
  79. package/docs/native-kit-baselines.md +4 -3
  80. package/package.json +6 -1
  81. package/scripts/enterprise-package-smoke.mjs +152 -0
  82. package/dist/analyze-QVRVJB7I.js +0 -1
  83. package/dist/autopilot-release-DOGIETAT.js +0 -1
  84. package/dist/capabilities-command-FYBUVHZ7.js +0 -1
  85. package/dist/chunk-4R44E7HN.js +0 -6
  86. package/dist/chunk-5S6IZ6PY.js +0 -2
  87. package/dist/chunk-NSC4VWV2.js +0 -1
  88. package/dist/chunk-QFDTKOYS.js +0 -2649
  89. package/dist/chunk-QVFIR64T.js +0 -10
  90. package/dist/chunk-VODNLROY.js +0 -1
  91. package/dist/chunk-YLLCZMKP.js +0 -2
  92. package/dist/workspace-knowledge-graph-snapshot-QIMF7TCF.js +0 -1
  93. package/dist/workspace-run-NAPJYNSZ.js +0 -1
@@ -1,4 +1,4 @@
1
- import {a}from'./chunk-HCFOVANQ.js';import {n,h,i}from'./chunk-VODNLROY.js';import {B}from'./chunk-TJ3MDZMC.js';import {d as d$1}from'./chunk-ROOPODG6.js';import {a as a$1}from'./chunk-GR6442P7.js';import {d,c}from'./chunk-EWZZUQBR.js';import {p,t}from'./chunk-ODK4LCEL.js';import u from'path';import {createHash}from'crypto';import {createReadStream}from'fs';import {execFile}from'child_process';import {promisify}from'util';import _ from'fs-extra';import {parseAllDocuments}from'yaml';var Bs=p.knowledgeGraph;function Ls(e,t){if(e.source.kind!=="workspace-model")throw new Error(`Workspace knowledge graph is not bound to the canonical workspace model (source: ${e.source.kind}).`);if(e.source.artifact!==p.model)throw new Error(`Workspace knowledge graph source artifact is ${e.source.artifact}; expected ${p.model}.`);if(e.source.hashAlgorithm!=="sha256")throw new Error(`Workspace knowledge graph source hash algorithm is ${e.source.hashAlgorithm}; expected sha256.`);let s=d(t);if(e.source.hash!==s)throw new Error("Workspace knowledge graph is stale: its source hash does not match the canonical workspace model.");if(e.workspace.name!==t.workspace.name||(e.workspace.profile??void 0)!==(t.workspace.profile??void 0))throw new Error("Workspace knowledge graph identity does not match the canonical workspace model.");let o=n(t);if(!o)throw new Error("Canonical workspace model has no project topology for the workspace knowledge graph.");let i=n=>({...n,generatedAt:"<ignored>"});if(c(i(e.projectTopology))!==c(i(o)))throw new Error("Workspace knowledge graph project topology does not match the canonical workspace model.")}function jt(e){return {path:e.path,...e.runtime!==void 0?{runtime:e.runtime}:{},...e.runtimeCandidates!==void 0?{runtimeCandidates:e.runtimeCandidates}:{},...e.framework!==void 0?{framework:e.framework}:{},...e.kit!==void 0?{kit:e.kit}:{},...e.kind!==void 0?{kind:e.kind}:{},...e.category!==void 0?{category:e.category}:{},...e.governance?{governanceCiStatus:e.governance.ci.status,governanceReleaseStatus:e.governance.release.status,governanceOwnershipStatus:e.governance.ownership.status,governanceProviders:[e.governance.ci.provider,e.governance.release.provider,e.governance.ownership.provider].filter(t=>!!t)}:{}}}var Dt=5e5,qt=2e6;function ke(e,t){if(e!==void 0&&Number.isFinite(e)&&e>0)return Math.floor(e);let s=process.env[t];if(!s)return;let o=Number.parseInt(s,10);return Number.isFinite(o)&&o>0?o:void 0}var It=new Set([".git",".hg",".svn",".workspai",".rapidkit",".venv","venv","vendor","node_modules","dist","build","target","coverage",".next",".turbo",".cache",".vscode-test","graphify-out",".pytest_cache",".mypy_cache",".ruff_cache",".tox",".gradle","fixture","fixtures","__fixtures__","testdata"]),Et=new Set(["AGENTS.md","CLAUDE.md","GEMINI.md","QWEN.md"]),Ct=new Set([".workspai-workspace"]),Zt=[/(?:^|\/)\.agents\/skills\/workspai-[^/]+\//u,/(?:^|\/)\.amazonq\/rules\/workspai-[^/]+\.md$/u,/(?:^|\/)\.claude\/(?:rules|skills)\/(?:workspai-|rapidkit-)[^/]+(?:\/|$)/u,/(?:^|\/)\.cursor\/(?:rules|skills)\/(?:workspai-|rapidkit-)[^/]+(?:\/|$)/u,/(?:^|\/)\.grok\/(?:rules|skills)\/workspai-[^/]+(?:\/|$)/u,/(?:^|\/)\.github\/agents\/workspai-[^/]+\.agent\.md$/u,/(?:^|\/)\.github\/(?:instructions|prompts|skills)\/(?:workspai-|rapidkit-)[^/]+(?:\/|$)/u,/(?:^|\/)\.github\/copilot-instructions\.md$/u,/(?:^|\/)\.windsurf\/rules\/workspai-[^/]+\.md$/u,/(?:^|\/)\.windsurfrules$/u,/(?:^|\/)\.vscode\/(?:workspai|rapidkit)-agent-hooks\.json$/u];function Ke(e,t){let s=D(u.relative(e,t));return Et.has(u.posix.basename(s))||Ct.has(u.posix.basename(s))||Zt.some(o=>o.test(s))}var Ht=new Set(["test","tests","spec","specs","e2e","integration","integration-tests","integration_tests","__tests__","fixture","fixtures","__fixtures__","testdata"]),Ut=new Set(["examples","samples","worked"]);function Ge(e,t){let s=u.relative(e,t).split(u.sep).map(i=>i.toLowerCase()),o=u.basename(t).toLowerCase();return s.some(i=>Ht.has(i))||/(?:\.test|\.spec|_test)\.[a-z0-9]+$/i.test(o)||/^test_.+\.[a-z0-9]+$/i.test(o)||/(?:tests?|specs?)\.(?:cs|fs|vb|java|kt|kts)$/i.test(o)}function De(e,t){return u.relative(e,t).split(u.sep).map(s=>s.toLowerCase()).some(s=>Ut.has(s))}function ee(e,t){return Ge(e,t)||De(e,t)}function he(e,t){return u.relative(e,t).split(u.sep).some(s=>s.toLowerCase()==="generated")}var Le=new Set(["package.json","pyproject.toml","requirements.txt","Pipfile","go.mod","Cargo.toml","pom.xml","build.gradle","build.gradle.kts","composer.json","Gemfile","mix.exs","pubspec.yaml","Package.swift","CMakeLists.txt","deno.json","deno.jsonc","project.clj","deps.edn","build.sbt","BUILD","BUILD.bazel","WORKSPACE.bazel"]),Jt=new Set([...Le,"go.work","go.work.sum"]),Vt=new Set(["get","put","post","delete","options","head","patch","trace"]),te=new Set([".c",".cc",".cpp",".cs",".dart",".ex",".exs",".go",".h",".hpp",".java",".cjs",".cts",".js",".jsx",".kt",".kts",".mjs",".mts",".php",".py",".r",".rb",".rs",".scala",".svelte",".swift",".ts",".tsx",".vue",".clj",".cljs",".fs",".fsx",".lua",".vb"]),nt=new Set([...te,".adb",".ads",".asm",".bash",".bat",".cl",".cob",".cu",".cuh",".erl",".f",".f03",".f08",".f77",".f90",".f95",".fish",".for",".gql",".graphql",".groovy",".hip",".hrl",".hs",".hlsl",".jl",".ll",".m",".metal",".mir",".mlir",".mm",".nim",".pas",".pl",".pm",".proto",".ps1",".s",".sh",".sol",".sql",".sv",".td",".thrift",".v",".vhd",".vhdl",".zig",".zsh"]);function J(e,t){let s=u.extname(e).toLowerCase();return s===".h"&&t==="cpp"?"cpp":{".c":"c",".adb":"ada",".ads":"ada",".asm":"assembly",".bash":"shell",".bat":"batch",".cc":"cpp",".cl":"opencl",".cob":"cobol",".cpp":"cpp",".cs":"csharp",".cu":"cuda",".cuh":"cuda",".dart":"dart",".erl":"erlang",".ex":"elixir",".exs":"elixir",".f":"fortran",".f03":"fortran",".f08":"fortran",".f77":"fortran",".f90":"fortran",".f95":"fortran",".fish":"shell",".for":"fortran",".gql":"graphql",".go":"go",".graphql":"graphql",".groovy":"groovy",".h":"c",".hip":"hip",".hpp":"cpp",".hrl":"erlang",".hs":"haskell",".hlsl":"hlsl",".java":"java",".jl":"julia",".cjs":"javascript",".cts":"typescript",".js":"javascript",".jsx":"javascript",".kt":"kotlin",".kts":"kotlin",".mjs":"javascript",".mts":"typescript",".php":"php",".py":"python",".r":"r",".rb":"ruby",".rs":"rust",".scala":"scala",".svelte":"svelte",".swift":"swift",".ts":"typescript",".tsx":"typescript",".vue":"vue",".clj":"clojure",".cljs":"clojure",".fs":"fsharp",".fsx":"fsharp",".lua":"lua",".ll":"llvm-ir",".m":"objective-c",".metal":"metal",".mir":"llvm-mir",".mlir":"mlir",".mm":"objective-cpp",".nim":"nim",".pas":"pascal",".pl":"perl",".pm":"perl",".proto":"protobuf",".ps1":"powershell",".s":"assembly",".sh":"shell",".sol":"solidity",".sql":"sql",".sv":"systemverilog",".td":"tablegen",".thrift":"thrift",".v":"verilog",".vb":"visual-basic",".vhd":"vhdl",".vhdl":"vhdl",".zig":"zig",".zsh":"shell"}[s]??s.slice(1)}var Yt=new Set(["external","third_party","third-party","vendor","vendors","vendored"]),Qt=new Set(["app","apps","cli","cmd","core","extensions","internal","lib","packages","services","src"]);function at(e,t){let o=D(u.relative(t,e)).split("/").filter(Boolean),i=o[0]?.toLowerCase()??"";return (o.some(l=>Yt.has(l.toLowerCase()))?1e3:0)+(Qt.has(i)?-100:0)+Math.min(o.length,20)}function Xt(e,t,s){if(e.length<=t)return [...e];let o=[...e].sort((c,r)=>at(c,s)-at(r,s)||c.localeCompare(r)),i=new Map;for(let c of o){let r=J(c),d=i.get(r)??[];d.push(c),i.set(r,d);}let n=new Set,l=Math.max(1,Math.min(25,Math.floor(t/Math.max(i.size,1))));for(let c of [...i.values()])for(let r of c.slice(0,l))n.add(r);for(let c of o){if(n.size>=t)break;n.add(c);}return [...n].sort((c,r)=>c.localeCompare(r))}function eo(e,t){let s=D(u.relative(t,e)).split("/").filter(Boolean);if(s.length===0)return "<root>";let o=s[0].toLowerCase();return ["app","apps","cmd","components","crates","modules","packages","plugins","services"].includes(o)&&s[1]?`${o}/${s[1].toLowerCase()}`:o}function $e(e,t,s){let o=[...new Set(e)].sort((d,a)=>d.localeCompare(a));if(o.length<=t)return o;let i=new Set,n=o.filter(d=>Jt.has(u.basename(d))).sort((d,a)=>D(u.relative(s,d)).split("/").length-D(u.relative(s,a)).split("/").length||d.localeCompare(a));for(let d of n){if(i.size>=t)break;i.add(d);}let l=new Map;for(let d of o){if(i.has(d))continue;let a=`${eo(d,s)}\0${J(d)}`,p=l.get(a)??[];p.push(d),l.set(a,p);}let c=[...l.entries()].sort(([d],[a])=>d.localeCompare(a)),r=0;for(;i.size<t;){let d=false;for(let[,a]of c){let p=a[r];if(p&&(i.add(p),d=true,i.size>=t))break}if(!d)break;r+=1;}return [...i].sort((d,a)=>d.localeCompare(a))}function to(e){let t=Math.max(0,e.eligibleFiles),s=Math.min(25e3,Math.max(5e3,Math.ceil(t*.2))),o=Math.max(100,Math.min(e.deepOverride??s,Math.max(t,100),1e5)),i=Math.min(1e5,Math.max(25e3,o*4,Math.ceil(t*.6))),n=Math.max(o,Math.min(e.semanticOverride??i,Math.max(t,o),25e4)),l=Math.min(2e4,Math.max(2e3,Math.ceil(Math.min(t,o)*.25))),c=Math.max(100,Math.min(e.sourceOverride??l,o,5e4));return {semanticFileBudget:n,deepFileBudget:o,sourceExtractionFileBudget:c}}function Oe(e,t,s){let o=[],i=e.split(/\r?\n/);for(let n=0;n<i.length&&o.length<s;n+=1)for(let l of t){let r=i[n].match(l.pattern)?.[1]?.trim();if(r){o.push({name:r,line:n+1,detail:l.detail});break}}return o}var oo=[{pattern:/^\s*(?:export\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)/,detail:"function"},{pattern:/^\s*(?:export\s+)?(?:abstract\s+)?(?:class|interface|enum|type)\s+([A-Za-z_$][\w$]*)/,detail:"type"},{pattern:/^\s*(?:export\s+)?(?:declare\s+)?(?:const|let|var)\s+([A-Za-z_$][\w$]*)/,detail:"value"},{pattern:/^\s*(?:async\s+)?def\s+([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*class\s+([A-Za-z_]\w*)/,detail:"type"},{pattern:/^\s*func\s+(?:\([^)]*\)\s*)?([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*type\s+([A-Za-z_]\w*)\s+/,detail:"type"},{pattern:/^\s*(?:public\s+|private\s+|protected\s+|internal\s+|abstract\s+|final\s+)*(?:class|interface|record|enum)\s+([A-Za-z_]\w*)/,detail:"type"},{pattern:/^\s*(?:public|protected|internal)\s+(?:(?:static|virtual|override|abstract|async|sealed|final|synchronized|native|unsafe|partial|extern|new)\s+)*(?:<[^>]+>\s*)?[A-Za-z_$][\w$<>,.?\[\]: ]*\s+([A-Za-z_$][\w$]*)\s*\(/,detail:"method"},{pattern:/^\s*(?:pub(?:\([^)]*\))?\s+)?(?:async\s+)?fn\s+([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*(?:pub(?:\([^)]*\))?\s+)?(?:struct|trait|enum|type)\s+([A-Za-z_]\w*)/,detail:"type"},{pattern:/^\s*(?:public\s+|private\s+|protected\s+)?function\s+([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*(?:class|module|struct|protocol|mixin)\s+([A-Za-z_]\w*)/,detail:"type"}],Rt=[{pattern:/^\s*import(?:.+?from\s*)?["']([^"']+)["']/,detail:"import"},{pattern:/require\(["']([^"']+)["']\)/,detail:"require"}],St=[{pattern:/^\s*from\s+([A-Za-z0-9_.]+)\s+import\s+/,detail:"import"},{pattern:/^\s*import\s+([A-Za-z0-9_.]+)(?:\s|$)/,detail:"import"}],so=[{pattern:/^\s*#\s*include\s*["<]([^">]+)[">]/,detail:"include"}],io=[{pattern:/^\s*use\s+([A-Za-z0-9_:*.-]+)/,detail:"use"}],ro=[{pattern:/^\s*import\s+(?:static\s+)?([A-Za-z0-9_.*]+)\s*;?/,detail:"import"}],no=[{pattern:/^\s*(?:global\s+)?using\s+([A-Za-z0-9_.]+)/,detail:"using"}],ao=[{pattern:/^\s*import\s+(?:[A-Za-z0-9_.]+\s+)?["']([^"']+)["']/,detail:"import"}],At=[{pattern:/^\s*require(?:_relative)?\s+["']([^"']+)["']/,detail:"require"}],co=[{pattern:/^\s*use\s+([A-Za-z0-9_\\]+)/,detail:"use"}],lo=[{pattern:/^\s*(?:alias|import|require|use)\s+([A-Za-z0-9_.]+)/,detail:"import"}],po=[{pattern:/^\s*import\s+["']([^"']+)["']/,detail:"import"}],uo=[{pattern:/\brequire\s*\(?\s*["']([^"']+)["']/,detail:"require"}],fo=[{pattern:/^\s*(?:library|require)\s*\(\s*["']?([^"')\s]+)["']?/,detail:"import"}],go=[...Rt,...St,{pattern:/^\s*(?:import|using|use)\s+([A-Za-z0-9_:.*\\/.-]+)/,detail:"import"},...At];function mo(e){let t=u.extname(e).toLowerCase();return [".cjs",".cts",".js",".jsx",".mjs",".mts",".ts",".tsx",".vue",".svelte"].includes(t)?Rt:t===".py"?St:[".c",".cc",".cpp",".h",".hpp"].includes(t)?so:t===".rs"?io:[".java",".kt",".kts",".scala"].includes(t)?ro:[".cs",".fs",".fsx",".vb"].includes(t)?no:t===".go"?ao:t===".rb"?At:t===".php"?co:[".ex",".exs"].includes(t)?lo:t===".dart"?po:t===".lua"?uo:t===".r"?fo:go}function ho(e,t,s,o,i){let n=u.extname(e).toLowerCase()===".py",l=[];if(n){let r=t.match(/^\.+/)?.[0].length??0,d=r>0?u.dirname(e):u.resolve(o??"");for(let p=1;p<r;p+=1)d=u.dirname(d);let a=t.slice(r).replace(/\./g,u.sep);l.push(a?u.join(d,a):d);}else if(t.startsWith("."))l.push(u.resolve(u.dirname(e),t));else if(i==="include")l.push(u.resolve(u.dirname(e),t)),o&&l.push(u.resolve(o,t));else return null;let c=new Set;for(let r of l){c.add(r);let d=u.extname(r).toLowerCase(),a=te.has(d);if(n&&(c.add(`${r}.py`),c.add(u.join(r,"__init__.py"))),a){let p=r.slice(0,-d.length);if([".js",".jsx",".mjs"].includes(d))for(let f of [".ts",".tsx",".js",".jsx",".mjs"])c.add(`${p}${f}`);}else for(let p of te)c.add(`${r}${p}`),c.add(u.join(r,`index${p}`));}return [...c].find(r=>s.has(u.resolve(r)))??null}function vo(e,t){let s=t.trimStart(),o=u.extname(e).toLowerCase();return [".py",".rb",".sh",".bash",".zsh"].includes(o)?s.startsWith("#"):[".sql",".lua",".hs"].includes(o)?s.startsWith("--"):s.startsWith("//")||s.startsWith("/*")||s.startsWith("*")}function yo(e,t){if(u.extname(e).toLowerCase()!==".py")return t;let s=null;return t.split(/\r?\n/).map(o=>{let i=0,n="";for(;i<o.length;){if(s){let a=o.indexOf(s,i);if(a<0)return n;i=a+3,s=null;continue}let l=o.indexOf("'''",i),c=o.indexOf('"""',i),r=o.indexOf("#",i),d=l<0?c:c<0?l:Math.min(l,c);if(r>=0&&(d<0||r<d)){n+=o.slice(i,r);break}if(d<0){n+=o.slice(i);break}n+=o.slice(i,d),s=o.startsWith("'''",d)?"'''":'"""',i=d+3;}return n}).join(`
1
+ import {a}from'./chunk-HCFOVANQ.js';import {n,h,i}from'./chunk-QDM6TWFK.js';import {B}from'./chunk-7HV4U2OV.js';import {d as d$1}from'./chunk-ROOPODG6.js';import {a as a$1}from'./chunk-GR6442P7.js';import {d,c}from'./chunk-EWZZUQBR.js';import {p,t}from'./chunk-ODK4LCEL.js';import u from'path';import {createHash}from'crypto';import {createReadStream}from'fs';import {execFile}from'child_process';import {promisify}from'util';import _ from'fs-extra';import {parseAllDocuments}from'yaml';var Bs=p.knowledgeGraph;function Ls(e,t){if(e.source.kind!=="workspace-model")throw new Error(`Workspace knowledge graph is not bound to the canonical workspace model (source: ${e.source.kind}).`);if(e.source.artifact!==p.model)throw new Error(`Workspace knowledge graph source artifact is ${e.source.artifact}; expected ${p.model}.`);if(e.source.hashAlgorithm!=="sha256")throw new Error(`Workspace knowledge graph source hash algorithm is ${e.source.hashAlgorithm}; expected sha256.`);let s=d(t);if(e.source.hash!==s)throw new Error("Workspace knowledge graph is stale: its source hash does not match the canonical workspace model.");if(e.workspace.name!==t.workspace.name||(e.workspace.profile??void 0)!==(t.workspace.profile??void 0))throw new Error("Workspace knowledge graph identity does not match the canonical workspace model.");let o=n(t);if(!o)throw new Error("Canonical workspace model has no project topology for the workspace knowledge graph.");let i=n=>({...n,generatedAt:"<ignored>"});if(c(i(e.projectTopology))!==c(i(o)))throw new Error("Workspace knowledge graph project topology does not match the canonical workspace model.")}function jt(e){return {path:e.path,...e.runtime!==void 0?{runtime:e.runtime}:{},...e.runtimeCandidates!==void 0?{runtimeCandidates:e.runtimeCandidates}:{},...e.framework!==void 0?{framework:e.framework}:{},...e.kit!==void 0?{kit:e.kit}:{},...e.kind!==void 0?{kind:e.kind}:{},...e.category!==void 0?{category:e.category}:{},...e.governance?{governanceCiStatus:e.governance.ci.status,governanceReleaseStatus:e.governance.release.status,governanceOwnershipStatus:e.governance.ownership.status,governanceProviders:[e.governance.ci.provider,e.governance.release.provider,e.governance.ownership.provider].filter(t=>!!t)}:{}}}var Dt=5e5,qt=2e6;function ke(e,t){if(e!==void 0&&Number.isFinite(e)&&e>0)return Math.floor(e);let s=process.env[t];if(!s)return;let o=Number.parseInt(s,10);return Number.isFinite(o)&&o>0?o:void 0}var It=new Set([".git",".hg",".svn",".workspai",".rapidkit",".venv","venv","vendor","node_modules","dist","build","target","coverage",".next",".turbo",".cache",".vscode-test","graphify-out",".pytest_cache",".mypy_cache",".ruff_cache",".tox",".gradle","fixture","fixtures","__fixtures__","testdata"]),Et=new Set(["AGENTS.md","CLAUDE.md","GEMINI.md","QWEN.md"]),Ct=new Set([".workspai-workspace"]),Zt=[/(?:^|\/)\.agents\/skills\/workspai-[^/]+\//u,/(?:^|\/)\.amazonq\/rules\/workspai-[^/]+\.md$/u,/(?:^|\/)\.claude\/(?:rules|skills)\/(?:workspai-|rapidkit-)[^/]+(?:\/|$)/u,/(?:^|\/)\.cursor\/(?:rules|skills)\/(?:workspai-|rapidkit-)[^/]+(?:\/|$)/u,/(?:^|\/)\.grok\/(?:rules|skills)\/workspai-[^/]+(?:\/|$)/u,/(?:^|\/)\.github\/agents\/workspai-[^/]+\.agent\.md$/u,/(?:^|\/)\.github\/(?:instructions|prompts|skills)\/(?:workspai-|rapidkit-)[^/]+(?:\/|$)/u,/(?:^|\/)\.github\/copilot-instructions\.md$/u,/(?:^|\/)\.windsurf\/rules\/workspai-[^/]+\.md$/u,/(?:^|\/)\.windsurfrules$/u,/(?:^|\/)\.vscode\/(?:workspai|rapidkit)-agent-hooks\.json$/u];function Ke(e,t){let s=D(u.relative(e,t));return Et.has(u.posix.basename(s))||Ct.has(u.posix.basename(s))||Zt.some(o=>o.test(s))}var Ht=new Set(["test","tests","spec","specs","e2e","integration","integration-tests","integration_tests","__tests__","fixture","fixtures","__fixtures__","testdata"]),Ut=new Set(["examples","samples","worked"]);function Ge(e,t){let s=u.relative(e,t).split(u.sep).map(i=>i.toLowerCase()),o=u.basename(t).toLowerCase();return s.some(i=>Ht.has(i))||/(?:\.test|\.spec|_test)\.[a-z0-9]+$/i.test(o)||/^test_.+\.[a-z0-9]+$/i.test(o)||/(?:tests?|specs?)\.(?:cs|fs|vb|java|kt|kts)$/i.test(o)}function De(e,t){return u.relative(e,t).split(u.sep).map(s=>s.toLowerCase()).some(s=>Ut.has(s))}function ee(e,t){return Ge(e,t)||De(e,t)}function he(e,t){return u.relative(e,t).split(u.sep).some(s=>s.toLowerCase()==="generated")}var Le=new Set(["package.json","pyproject.toml","requirements.txt","Pipfile","go.mod","Cargo.toml","pom.xml","build.gradle","build.gradle.kts","composer.json","Gemfile","mix.exs","pubspec.yaml","Package.swift","CMakeLists.txt","deno.json","deno.jsonc","project.clj","deps.edn","build.sbt","BUILD","BUILD.bazel","WORKSPACE.bazel"]),Jt=new Set([...Le,"go.work","go.work.sum"]),Vt=new Set(["get","put","post","delete","options","head","patch","trace"]),te=new Set([".c",".cc",".cpp",".cs",".dart",".ex",".exs",".go",".h",".hpp",".java",".cjs",".cts",".js",".jsx",".kt",".kts",".mjs",".mts",".php",".py",".r",".rb",".rs",".scala",".svelte",".swift",".ts",".tsx",".vue",".clj",".cljs",".fs",".fsx",".lua",".vb"]),nt=new Set([...te,".adb",".ads",".asm",".bash",".bat",".cl",".cob",".cu",".cuh",".erl",".f",".f03",".f08",".f77",".f90",".f95",".fish",".for",".gql",".graphql",".groovy",".hip",".hrl",".hs",".hlsl",".jl",".ll",".m",".metal",".mir",".mlir",".mm",".nim",".pas",".pl",".pm",".proto",".ps1",".s",".sh",".sol",".sql",".sv",".td",".thrift",".v",".vhd",".vhdl",".zig",".zsh"]);function J(e,t){let s=u.extname(e).toLowerCase();return s===".h"&&t==="cpp"?"cpp":{".c":"c",".adb":"ada",".ads":"ada",".asm":"assembly",".bash":"shell",".bat":"batch",".cc":"cpp",".cl":"opencl",".cob":"cobol",".cpp":"cpp",".cs":"csharp",".cu":"cuda",".cuh":"cuda",".dart":"dart",".erl":"erlang",".ex":"elixir",".exs":"elixir",".f":"fortran",".f03":"fortran",".f08":"fortran",".f77":"fortran",".f90":"fortran",".f95":"fortran",".fish":"shell",".for":"fortran",".gql":"graphql",".go":"go",".graphql":"graphql",".groovy":"groovy",".h":"c",".hip":"hip",".hpp":"cpp",".hrl":"erlang",".hs":"haskell",".hlsl":"hlsl",".java":"java",".jl":"julia",".cjs":"javascript",".cts":"typescript",".js":"javascript",".jsx":"javascript",".kt":"kotlin",".kts":"kotlin",".mjs":"javascript",".mts":"typescript",".php":"php",".py":"python",".r":"r",".rb":"ruby",".rs":"rust",".scala":"scala",".svelte":"svelte",".swift":"swift",".ts":"typescript",".tsx":"typescript",".vue":"vue",".clj":"clojure",".cljs":"clojure",".fs":"fsharp",".fsx":"fsharp",".lua":"lua",".ll":"llvm-ir",".m":"objective-c",".metal":"metal",".mir":"llvm-mir",".mlir":"mlir",".mm":"objective-cpp",".nim":"nim",".pas":"pascal",".pl":"perl",".pm":"perl",".proto":"protobuf",".ps1":"powershell",".s":"assembly",".sh":"shell",".sol":"solidity",".sql":"sql",".sv":"systemverilog",".td":"tablegen",".thrift":"thrift",".v":"verilog",".vb":"visual-basic",".vhd":"vhdl",".vhdl":"vhdl",".zig":"zig",".zsh":"shell"}[s]??s.slice(1)}var Yt=new Set(["external","third_party","third-party","vendor","vendors","vendored"]),Qt=new Set(["app","apps","cli","cmd","core","extensions","internal","lib","packages","services","src"]);function at(e,t){let o=D(u.relative(t,e)).split("/").filter(Boolean),i=o[0]?.toLowerCase()??"";return (o.some(l=>Yt.has(l.toLowerCase()))?1e3:0)+(Qt.has(i)?-100:0)+Math.min(o.length,20)}function Xt(e,t,s){if(e.length<=t)return [...e];let o=[...e].sort((c,r)=>at(c,s)-at(r,s)||c.localeCompare(r)),i=new Map;for(let c of o){let r=J(c),d=i.get(r)??[];d.push(c),i.set(r,d);}let n=new Set,l=Math.max(1,Math.min(25,Math.floor(t/Math.max(i.size,1))));for(let c of [...i.values()])for(let r of c.slice(0,l))n.add(r);for(let c of o){if(n.size>=t)break;n.add(c);}return [...n].sort((c,r)=>c.localeCompare(r))}function eo(e,t){let s=D(u.relative(t,e)).split("/").filter(Boolean);if(s.length===0)return "<root>";let o=s[0].toLowerCase();return ["app","apps","cmd","components","crates","modules","packages","plugins","services"].includes(o)&&s[1]?`${o}/${s[1].toLowerCase()}`:o}function $e(e,t,s){let o=[...new Set(e)].sort((d,a)=>d.localeCompare(a));if(o.length<=t)return o;let i=new Set,n=o.filter(d=>Jt.has(u.basename(d))).sort((d,a)=>D(u.relative(s,d)).split("/").length-D(u.relative(s,a)).split("/").length||d.localeCompare(a));for(let d of n){if(i.size>=t)break;i.add(d);}let l=new Map;for(let d of o){if(i.has(d))continue;let a=`${eo(d,s)}\0${J(d)}`,p=l.get(a)??[];p.push(d),l.set(a,p);}let c=[...l.entries()].sort(([d],[a])=>d.localeCompare(a)),r=0;for(;i.size<t;){let d=false;for(let[,a]of c){let p=a[r];if(p&&(i.add(p),d=true,i.size>=t))break}if(!d)break;r+=1;}return [...i].sort((d,a)=>d.localeCompare(a))}function to(e){let t=Math.max(0,e.eligibleFiles),s=Math.min(25e3,Math.max(5e3,Math.ceil(t*.2))),o=Math.max(100,Math.min(e.deepOverride??s,Math.max(t,100),1e5)),i=Math.min(1e5,Math.max(25e3,o*4,Math.ceil(t*.6))),n=Math.max(o,Math.min(e.semanticOverride??i,Math.max(t,o),25e4)),l=Math.min(2e4,Math.max(2e3,Math.ceil(Math.min(t,o)*.25))),c=Math.max(100,Math.min(e.sourceOverride??l,o,5e4));return {semanticFileBudget:n,deepFileBudget:o,sourceExtractionFileBudget:c}}function Oe(e,t,s){let o=[],i=e.split(/\r?\n/);for(let n=0;n<i.length&&o.length<s;n+=1)for(let l of t){let r=i[n].match(l.pattern)?.[1]?.trim();if(r){o.push({name:r,line:n+1,detail:l.detail});break}}return o}var oo=[{pattern:/^\s*(?:export\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)/,detail:"function"},{pattern:/^\s*(?:export\s+)?(?:abstract\s+)?(?:class|interface|enum|type)\s+([A-Za-z_$][\w$]*)/,detail:"type"},{pattern:/^\s*(?:export\s+)?(?:declare\s+)?(?:const|let|var)\s+([A-Za-z_$][\w$]*)/,detail:"value"},{pattern:/^\s*(?:async\s+)?def\s+([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*class\s+([A-Za-z_]\w*)/,detail:"type"},{pattern:/^\s*func\s+(?:\([^)]*\)\s*)?([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*type\s+([A-Za-z_]\w*)\s+/,detail:"type"},{pattern:/^\s*(?:public\s+|private\s+|protected\s+|internal\s+|abstract\s+|final\s+)*(?:class|interface|record|enum)\s+([A-Za-z_]\w*)/,detail:"type"},{pattern:/^\s*(?:public|protected|internal)\s+(?:(?:static|virtual|override|abstract|async|sealed|final|synchronized|native|unsafe|partial|extern|new)\s+)*(?:<[^>]+>\s*)?[A-Za-z_$][\w$<>,.?\[\]: ]*\s+([A-Za-z_$][\w$]*)\s*\(/,detail:"method"},{pattern:/^\s*(?:pub(?:\([^)]*\))?\s+)?(?:async\s+)?fn\s+([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*(?:pub(?:\([^)]*\))?\s+)?(?:struct|trait|enum|type)\s+([A-Za-z_]\w*)/,detail:"type"},{pattern:/^\s*(?:public\s+|private\s+|protected\s+)?function\s+([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*(?:class|module|struct|protocol|mixin)\s+([A-Za-z_]\w*)/,detail:"type"}],Rt=[{pattern:/^\s*import(?:.+?from\s*)?["']([^"']+)["']/,detail:"import"},{pattern:/require\(["']([^"']+)["']\)/,detail:"require"}],St=[{pattern:/^\s*from\s+([A-Za-z0-9_.]+)\s+import\s+/,detail:"import"},{pattern:/^\s*import\s+([A-Za-z0-9_.]+)(?:\s|$)/,detail:"import"}],so=[{pattern:/^\s*#\s*include\s*["<]([^">]+)[">]/,detail:"include"}],io=[{pattern:/^\s*use\s+([A-Za-z0-9_:*.-]+)/,detail:"use"}],ro=[{pattern:/^\s*import\s+(?:static\s+)?([A-Za-z0-9_.*]+)\s*;?/,detail:"import"}],no=[{pattern:/^\s*(?:global\s+)?using\s+([A-Za-z0-9_.]+)/,detail:"using"}],ao=[{pattern:/^\s*import\s+(?:[A-Za-z0-9_.]+\s+)?["']([^"']+)["']/,detail:"import"}],At=[{pattern:/^\s*require(?:_relative)?\s+["']([^"']+)["']/,detail:"require"}],co=[{pattern:/^\s*use\s+([A-Za-z0-9_\\]+)/,detail:"use"}],lo=[{pattern:/^\s*(?:alias|import|require|use)\s+([A-Za-z0-9_.]+)/,detail:"import"}],po=[{pattern:/^\s*import\s+["']([^"']+)["']/,detail:"import"}],uo=[{pattern:/\brequire\s*\(?\s*["']([^"']+)["']/,detail:"require"}],fo=[{pattern:/^\s*(?:library|require)\s*\(\s*["']?([^"')\s]+)["']?/,detail:"import"}],go=[...Rt,...St,{pattern:/^\s*(?:import|using|use)\s+([A-Za-z0-9_:.*\\/.-]+)/,detail:"import"},...At];function mo(e){let t=u.extname(e).toLowerCase();return [".cjs",".cts",".js",".jsx",".mjs",".mts",".ts",".tsx",".vue",".svelte"].includes(t)?Rt:t===".py"?St:[".c",".cc",".cpp",".h",".hpp"].includes(t)?so:t===".rs"?io:[".java",".kt",".kts",".scala"].includes(t)?ro:[".cs",".fs",".fsx",".vb"].includes(t)?no:t===".go"?ao:t===".rb"?At:t===".php"?co:[".ex",".exs"].includes(t)?lo:t===".dart"?po:t===".lua"?uo:t===".r"?fo:go}function ho(e,t,s,o,i){let n=u.extname(e).toLowerCase()===".py",l=[];if(n){let r=t.match(/^\.+/)?.[0].length??0,d=r>0?u.dirname(e):u.resolve(o??"");for(let p=1;p<r;p+=1)d=u.dirname(d);let a=t.slice(r).replace(/\./g,u.sep);l.push(a?u.join(d,a):d);}else if(t.startsWith("."))l.push(u.resolve(u.dirname(e),t));else if(i==="include")l.push(u.resolve(u.dirname(e),t)),o&&l.push(u.resolve(o,t));else return null;let c=new Set;for(let r of l){c.add(r);let d=u.extname(r).toLowerCase(),a=te.has(d);if(n&&(c.add(`${r}.py`),c.add(u.join(r,"__init__.py"))),a){let p=r.slice(0,-d.length);if([".js",".jsx",".mjs"].includes(d))for(let f of [".ts",".tsx",".js",".jsx",".mjs"])c.add(`${p}${f}`);}else for(let p of te)c.add(`${r}${p}`),c.add(u.join(r,`index${p}`));}return [...c].find(r=>s.has(u.resolve(r)))??null}function vo(e,t){let s=t.trimStart(),o=u.extname(e).toLowerCase();return [".py",".rb",".sh",".bash",".zsh"].includes(o)?s.startsWith("#"):[".sql",".lua",".hs"].includes(o)?s.startsWith("--"):s.startsWith("//")||s.startsWith("/*")||s.startsWith("*")}function yo(e,t){if(u.extname(e).toLowerCase()!==".py")return t;let s=null;return t.split(/\r?\n/).map(o=>{let i=0,n="";for(;i<o.length;){if(s){let a=o.indexOf(s,i);if(a<0)return n;i=a+3,s=null;continue}let l=o.indexOf("'''",i),c=o.indexOf('"""',i),r=o.indexOf("#",i),d=l<0?c:c<0?l:Math.min(l,c);if(r>=0&&(d<0||r<d)){n+=o.slice(i,r);break}if(d<0){n+=o.slice(i);break}n+=o.slice(i,d),s=o.startsWith("'''",d)?"'''":'"""',i=d+3;}return n}).join(`
2
2
  `)}function bo(e,t){if(![".js",".jsx",".mjs",".ts",".tsx"].includes(u.extname(e).toLowerCase()))return t;let s=false,o=false;return t.split(/\r?\n/).map(i=>{let n="",l=null,c=false;for(let r=0;r<i.length;r+=1){let d=i[r],a=i[r+1];if(s){n+=" ",d==="*"&&a==="/"&&(n+=" ",r+=1,s=false);continue}if(o){n+=" ",d==="`"&&!c&&(o=false),c=d==="\\"&&!c,d!=="\\"&&(c=false);continue}if(l){n+=d,d===l&&!c&&(l=null),c=d==="\\"&&!c,d!=="\\"&&(c=false);continue}if(d==="/"&&a==="/")return n.padEnd(i.length," ");if(d==="/"&&a==="*"){n+=" ",r+=1,s=true;continue}if(d==="`"){n+=" ",o=true,c=false;continue}(d==="'"||d==='"')&&(l=d),n+=d;}return n}).join(`
3
3
  `)}function Ft(e,t){return bo(e,yo(e,t))}var we=[{pattern:/@(?:Get|Post|Put|Delete|Patch|Options|Head)\s*\(\s*["']([^"']*)["']/i,detail:"decorated route"},{pattern:/\b(?:app|router|server|api|route|fastify|fiber)\.(?:get|post|put|delete|patch|options|head)\s*\(\s*["']([^"']+)["']/i,detail:"router route"},{pattern:/@(?:GetMapping|PostMapping|PutMapping|DeleteMapping|PatchMapping|RequestMapping)\s*\([^"']*["']([^"']*)["']/,detail:"mapped route"},{pattern:/\[Http(?:Get|Post|Put|Delete|Patch)\s*\(\s*["']([^"']*)["']/i,detail:"HTTP route"},{pattern:/^\s*(?:get|post|put|delete|patch)\s+["']([^"']+)["']/i,detail:"HTTP route"}],ko=[{pattern:/@Router\s+([^\s]+)\s+\[(?:get|post|put|delete|patch|options|head)\]/i,detail:"swagger route"},{pattern:/\b[A-Za-z_]\w*\.(?:GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD)\s*\(\s*["']([^"']+)["']/,detail:"go router route"}],wo=[{pattern:/\.route\s*\(\s*["']([^"']+)["']\s*,\s*(?:routing::)?(?:get|post|put|delete|patch|options|head)\s*\(/i,detail:"rust router route"}],Po=[{pattern:/\b[A-Za-z_]\w*\.Map(?:Get|Post|Put|Delete|Patch|Methods)\s*\(\s*["']([^"']+)["']/i,detail:"dotnet route"},{pattern:/\b[A-Za-z_]\w*\.MapHealthChecks\s*\(\s*["']([^"']+)["']/i,detail:"dotnet health route"}];function $o(e){let t=u.extname(e).toLowerCase();return t===".go"?[...we,...ko]:t===".rs"?[...we,...wo]:t===".cs"?[...we,...Po]:we}function jo(e,t){return t==="swagger route"?e.match(/\[(get|post|put|delete|patch|options|head)\]/i)?.[1]?.toUpperCase()??"HTTP":t==="rust router route"?e.match(/,\s*(?:routing::)?(get|post|put|delete|patch|options|head)\s*\(/i)?.[1]?.toUpperCase()??"HTTP":t==="dotnet health route"?"GET":t==="dotnet route"?e.match(/\.Map(Get|Post|Put|Delete|Patch|Methods)\s*\(/i)?.[1]?.toUpperCase()??"HTTP":e.match(/(?:@|\.|\[|^\s*)(get|post|put|delete|patch|options|head)/i)?.[1]?.toUpperCase()??"HTTP"}function je(e){return createHash("sha256").update(e).digest("hex")}function R(e,t){return `wkg:${e}:${je(`${e}\0${t}`).slice(0,20)}`}function D(e){return e.replace(/\\/g,"/")}function me(e){let t=D(e).replace(/^\.\//,"");return !t||t.startsWith("/")||/^[A-Za-z]:\//.test(t)||t.split("/").includes("..")?"unknown":t}function C(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function P(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function H(e){if(Array.isArray(e))return e.filter(s=>typeof s=="string").map(s=>s.trim()).filter(Boolean).sort();let t=C(e);return t?Object.keys(t).map(s=>s.trim()).filter(Boolean).sort():[]}function Io(e){if(Array.isArray(e))return e.map(s=>typeof s=="string"?s.split("=",1)[0]?.trim():"").filter(s=>!!s).sort();let t=C(e);return t?Object.keys(t).sort():[]}function Eo(e){return Object.fromEntries(Object.entries(e).filter(t=>t[1]!==void 0).sort(([t],[s])=>t.localeCompare(s)))}async function Co(e,t,s=[]){let o=[],i=[e],n=s.map(r=>u.resolve(r)),l=r=>{let d=u.resolve(r);return n.some(a=>d===a||d.startsWith(`${a}${u.sep}`))},c=0;for(;c<i.length&&o.length<t;){let r=i[c++],d;try{d=await _.readdir(r,{withFileTypes:true});}catch{continue}d.sort((a,p)=>a.name.localeCompare(p.name));for(let a of d){if(o.length>=t)break;if(a.isSymbolicLink())continue;let p=u.join(r,a.name);l(p)||(a.isDirectory()?!It.has(a.name)&&!a$1(a.name)&&i.push(p):a.isFile()&&(Ke(e,p)||o.push(p)));}}return o.sort((r,d)=>r.localeCompare(d))}function ve(e,t,s){let o=s?.projects.find(i=>i.relativePath===t.path||t.id!==void 0&&(i.slug===t.id||i.relativePath===`external/${t.id}`));return d$1(e,t.path,{...t.absolutePath||o?.externalPath?{absolutePath:t.absolutePath??o?.externalPath}:{}})}async function qe(e){return new Promise(t=>{let s=createHash("sha256"),o=createReadStream(e);o.on("data",i=>s.update(i)),o.on("error",i=>{t(`unreadable:${i.code??"unknown"}`);}),o.on("end",()=>t(s.digest("hex")));})}var Ro=promisify(execFile);async function Z(e,t){let s=await Ro("git",t,{cwd:e,encoding:"buffer",maxBuffer:268435456,windowsHide:true});return Buffer.isBuffer(s.stdout)?s.stdout:Buffer.from(s.stdout)}function Ze(){return [".",...[...It].sort((e,t)=>e.localeCompare(t)).map(e=>`:(exclude,glob)**/${e}/**`),...[...Et].sort((e,t)=>e.localeCompare(t)).map(e=>`:(exclude,glob)**/${e}`),...[...Ct].sort((e,t)=>e.localeCompare(t)).map(e=>`:(exclude,glob)**/${e}`),":(exclude,glob)**/.agents/skills/workspai-*/**",":(exclude,glob)**/.amazonq/rules/workspai-*.md",":(exclude,glob)**/.claude/rules/workspai-*.md",":(exclude,glob)**/.claude/rules/rapidkit-*.md",":(exclude,glob)**/.claude/skills/workspai-*/**",":(exclude,glob)**/.cursor/rules/workspai-*.*",":(exclude,glob)**/.cursor/rules/rapidkit-*.*",":(exclude,glob)**/.cursor/skills/workspai-*/**",":(exclude,glob)**/.grok/rules/workspai-*.md",":(exclude,glob)**/.grok/skills/workspai-*/**",":(exclude,glob)**/.github/agents/workspai-*.agent.md",":(exclude,glob)**/.github/copilot-instructions.md",":(exclude,glob)**/.github/instructions/workspai-*.md",":(exclude,glob)**/.github/instructions/rapidkit-*.md",":(exclude,glob)**/.github/prompts/workspai-*.md",":(exclude,glob)**/.github/prompts/rapidkit-*.md",":(exclude,glob)**/.github/skills/workspai-*/**",":(exclude,glob)**/.github/skills/rapidkit-*/**",":(exclude,glob)**/.windsurf/rules/workspai-*.md",":(exclude,glob)**/.windsurfrules",":(exclude,glob)**/.vscode/workspai-agent-hooks.json",":(exclude,glob)**/.vscode/rapidkit-agent-hooks.json"]}function We(e){return e.toString("utf8").split("\0").filter(Boolean).map(t=>t.replace(/\\/gu,"/"))}async function So(e,t,s=[]){try{await Z(e,["rev-parse","--show-toplevel"]);let o=Ze(),[i,n,l]=await Promise.all([Z(e,["ls-files","--stage","-z","--",...o]),Z(e,["ls-files","--deleted","-z","--",...o]),Z(e,["ls-files","--others","--exclude-standard","-z","--",...o])]),c=new Set(We(n)),r=i.toString("utf8").split("\0").filter(Boolean).flatMap(v=>{let m=v.match(/^(\d{6}) [0-9a-f]+ \d\t([\s\S]+)$/u);if(!m)return [];let[,h,y]=m,b=y.replace(/\\/gu,"/");return h==="120000"||h==="160000"||c.has(b)?[]:[b]}),p=(await Ce([...new Set([...r,...We(l)])],64,async v=>{let m=u.normalize(v);if(u.isAbsolute(m)||m===".."||m.startsWith(`..${u.sep}`))return null;let h=u.resolve(e,m);try{let y=await _.lstat(h);return y.isFile()&&!y.isSymbolicLink()?v:null}catch{return null}})).filter(v=>v!==null).map(v=>u.resolve(e,...v.split("/").filter(Boolean))).filter(v=>!Ke(e,v)).filter(v=>!s.some(m=>v===u.resolve(m)||v.startsWith(`${u.resolve(m)}${u.sep}`))).sort((v,m)=>v.localeCompare(m)),f=p.length>t;return {files:f?$e(p,t,e):p,eligibleFileCount:p.length,eligibleFileCountExact:true,truncated:f,fileLimit:t,strategy:"git-index-worktree-v1"}}catch{return null}}async function ye(e,t,s=[]){let o=await So(e,t,s);if(o)return o;let i=await Co(e,t+1,s),n=i.length>t;return {files:n?$e(i,t,e):i,eligibleFileCount:i.length,eligibleFileCountExact:!n,truncated:n,fileLimit:t,strategy:"filesystem-bfs-v1"}}async function Ao(e){try{let t=(await Z(e.root,["rev-parse","--show-prefix"])).toString("utf8").trim().replace(/\\/gu,"/"),s=t?`${t.replace(/^\/+|\/+$/gu,"")}/`:"";if(u.posix.isAbsolute(s)||s==="../"||s.startsWith("../")||s.includes("/../"))return null;let o=Ze(),[i,n,l,c,r,d]=await Promise.all([Z(e.root,["ls-files","--full-name","-s","--",...o]),Z(e.root,["diff","--no-ext-diff","--no-textconv","--binary","HEAD","--",...o]),Z(e.root,["ls-files","--full-name","--others","--exclude-standard","-z","--",...o]),Z(e.root,["ls-files","--full-name","--others","--ignored","--exclude-standard","-z","--",...o]),Z(e.root,["ls-files","-v","--",...o]),Z(e.root,["ls-files","--full-name","-s","--",...o])]);if(r.toString("utf8").split(/\r?\n/u).some(y=>/^[a-z] /u.test(y)))return null;let a=e.files.map(y=>{let b=D(u.relative(e.root,y));return `${s}${b}`});if(d.toString("utf8").split(/\r?\n/u).filter(y=>y.startsWith("160000 ")).map(y=>y.split(" ",2)[1]).filter(y=>!!y).map(y=>y.replace(/\\/gu,"/").replace(/\/$/u,"")).some(y=>a.some(b=>b.startsWith(`${y}/`))))return null;let f=new Set(a),v=Buffer.concat([l,c]).toString("utf8").split("\0").filter(Boolean).map(y=>y.replace(/\\/gu,"/")).filter(y=>f.has(y)),m=await Ce([...new Set(v)].sort((y,b)=>y.localeCompare(b)),16,async y=>{let b=s?y.slice(s.length):y;return {path:b,hash:await qe(u.resolve(e.root,...b.split("/").filter(Boolean)))}}),h=createHash("sha256");h.update(`git-worktree-v2\0${e.kind}\0${e.id}\0${e.fileLimit}\0`),h.update(i),h.update(createHash("sha256").update(n).digest());for(let y of m)h.update(`${y.path}\0${y.hash}\0`);return {kind:e.kind,id:e.id,strategy:"git-worktree-v2",hash:h.digest("hex"),fileCount:e.files.length,fileLimit:e.fileLimit,truncated:e.files.length>=e.fileLimit}}catch{return null}}async function Fo(e){try{let t=(await Z(e.root,["rev-parse","--show-prefix"])).toString("utf8").trim().replace(/\\/gu,"/"),s=t?`${t.replace(/^\/+|\/+$/gu,"")}/`:"";if(u.posix.isAbsolute(s)||s==="../"||s.startsWith("../")||s.includes("/../"))return null;let o=Ze(),[i,n,l,c]=await Promise.all([Z(e.root,["ls-files","--full-name","-s","--",...o]),Z(e.root,["diff","--no-ext-diff","--no-textconv","--binary","HEAD","--",...o]),Z(e.root,["ls-files","--full-name","--others","--exclude-standard","-z","--",...o]),Z(e.root,["ls-files","-v","--",...o])]);if(c.toString("utf8").split(/\r?\n/u).some(p=>/^[a-z] /u.test(p)))return null;let r=(e.excludedRoots??[]).map(p=>u.resolve(p)),d=(await Ce([...new Set(We(l))].sort((p,f)=>p.localeCompare(f)),16,async p=>{if(s&&!p.startsWith(s))return null;let f=s?p.slice(s.length):p,v=u.normalize(f);if(!f||u.isAbsolute(v)||v===".."||v.startsWith(`..${u.sep}`))return null;let m=u.resolve(e.root,v);if(r.some(h=>m===h||m.startsWith(`${h}${u.sep}`))||Ke(e.root,m))return null;try{let h=await _.lstat(m);if(!h.isFile()||h.isSymbolicLink())return null}catch{return null}return {path:f,hash:await qe(m)}})).filter(p=>p!==null),a=createHash("sha256");a.update(`git-worktree-v2\0${e.kind}\0${e.id}\0${e.fileLimit}\0`),a.update(i),a.update(createHash("sha256").update(n).digest());for(let p of d)a.update(`${p.path}\0${p.hash}\0`);return a.digest("hex")===e.expectedHash}catch{return null}}async function Ce(e,t,s){let o=new Array(e.length),i=0,n=Array.from({length:Math.min(t,Math.max(e.length,1))},async()=>{for(;i<e.length;){let l=i++;o[l]=await s(e[l]);}});return await Promise.all(n),o}async function xe(e){let t=[...new Set(e.files)].sort((d,a)=>d.localeCompare(a)),s=e.eligibleFileCount??t.length,o=s>e.fileLimit||t.length>e.fileLimit,i=t.slice(0,e.fileLimit),n=await Ao({...e,files:i}),l={eligibleFileCount:s,eligibleFileCountExact:e.eligibleFileCountExact??!o,inventoryMode:o?"emergency-bounded":"complete",...e.inventoryStrategy?{inventoryStrategy:e.inventoryStrategy}:{},...e.selection?{selection:e.selection}:{}};if(n)return {...n,fileCount:i.length,truncated:o,...l};let c=await Ce(i,16,async d=>({path:D(u.relative(e.root,d)),hash:await qe(d)}));c.sort((d,a)=>d.path.localeCompare(a.path));let r=createHash("sha256");r.update(`content-merkle-v1\0${e.kind}\0${e.id}\0${e.fileLimit}\0`);for(let d of c)r.update(`${d.path}\0${d.hash}\0`);return {kind:e.kind,id:e.id,strategy:"content-merkle-v1",hash:r.digest("hex"),fileCount:c.length,fileLimit:e.fileLimit,truncated:o,...l}}async function _o(e){let t=u.resolve(e.workspacePath),s=[...e.projects].sort((r,d)=>r.id.localeCompare(d.id)),o=s.map(r=>ve(t,r)),i=e.inventories?.workspaceInventory??(e.inventories?.workspaceFiles?{files:[...e.inventories.workspaceFiles],eligibleFileCount:e.inventories.workspaceFiles.length,eligibleFileCountExact:e.inventories.workspaceFiles.length<=e.workspaceFileLimit,truncated:e.inventories.workspaceFiles.length>e.workspaceFileLimit,fileLimit:e.workspaceFileLimit,strategy:"filesystem-bfs-v1"}:await ye(t,e.workspaceFileLimit,o)),n=i.files.filter(r=>!o.some(d=>r===d||r.startsWith(`${d}${u.sep}`))),l={...i,files:n,eligibleFileCount:i.eligibleFileCountExact&&!i.truncated?n.length:i.eligibleFileCount},c=await Promise.all([xe({kind:"workspace",id:"workspace",root:t,files:l.files,fileLimit:e.workspaceFileLimit,eligibleFileCount:l.eligibleFileCount,eligibleFileCountExact:l.eligibleFileCountExact,inventoryStrategy:l.strategy}),...s.map(async r=>{let d=ve(t,r),a=e.inventories?.projectFiles?.get(r.id),p=e.inventories?.projectInventories?.get(r.id)??(a?{files:[...a],eligibleFileCount:a.length,eligibleFileCountExact:a.length<=e.projectFileLimit,strategy:"filesystem-bfs-v1"}:await ye(d,e.projectFileLimit)),f=e.inventories?.scanBudgetsByProject?.get(r.id);return xe({kind:"project",id:r.id,root:d,files:p.files,fileLimit:e.projectFileLimit,eligibleFileCount:p.eligibleFileCount,eligibleFileCountExact:p.eligibleFileCountExact,inventoryStrategy:p.strategy,...f?{selection:{strategy:"component-language-round-robin-v1",semanticFileCount:Math.min(p.files.length,f.semanticFileBudget),semanticFileBudget:f.semanticFileBudget,deepFileCount:Math.min(p.files.length,f.deepFileBudget),deepFileBudget:f.deepFileBudget,sourceExtractionFileBudget:f.sourceExtractionFileBudget}}:{}})})]);return c.sort((r,d)=>r.kind.localeCompare(d.kind)||r.id.localeCompare(d.id)),_t(c)}function _t(e){let t=[...e].sort((o,i)=>o.kind.localeCompare(i.kind)||o.id.localeCompare(i.id)),s=createHash("sha256");s.update("workspace-knowledge-graph-inputs.v1\0hybrid-git-content-v2\0");for(let o of t)s.update(`${o.kind}\0${o.id}\0${o.hash}\0${o.fileCount}\0${o.fileLimit}\0${o.truncated}\0${o.eligibleFileCount??o.fileCount}\0${o.eligibleFileCountExact??!o.truncated}\0${o.inventoryMode??(o.truncated?"emergency-bounded":"complete")}\0${o.inventoryStrategy??"unknown"}\0${o.selection?c(o.selection):""}\0`);return {schemaVersion:"workspace-knowledge-graph-inputs.v1",strategy:"hybrid-git-content-v2",hashAlgorithm:"sha256",hash:s.digest("hex"),scopes:t}}async function Ws(e){if(_t(e.expected.scopes).hash!==e.expected.hash)return false;let t=u.resolve(e.workspacePath),s=[...e.projects].sort((n,l)=>n.id.localeCompare(l.id)),o=s.map(n=>ve(t,n)),i=new Map(s.map(n=>[n.id,n]));for(let n of e.expected.scopes){let l=n.kind==="project"?i.get(n.id):void 0;if(n.kind==="project"&&!l)return false;let c$1=l?ve(t,l):t;if(n.strategy==="git-worktree-v2"){let v=await Fo({kind:n.kind,id:n.id,root:c$1,fileLimit:n.fileLimit,expectedHash:n.hash,...n.kind==="workspace"?{excludedRoots:o}:{}});if(v!==null){if(!v)return false;continue}}let r=await ye(c$1,n.fileLimit,n.kind==="workspace"?o:[]),d=n.kind==="workspace"?r.files.filter(v=>!o.some(m=>v===m||v.startsWith(`${m}${u.sep}`))):r.files,a={...r,files:d,eligibleFileCount:r.eligibleFileCountExact&&!r.truncated?d.length:r.eligibleFileCount},p=n.selection?{strategy:"component-language-round-robin-v1",semanticFileCount:Math.min(a.files.length,n.selection.semanticFileBudget),semanticFileBudget:n.selection.semanticFileBudget,deepFileCount:Math.min(a.files.length,n.selection.deepFileBudget),deepFileBudget:n.selection.deepFileBudget,sourceExtractionFileBudget:n.selection.sourceExtractionFileBudget}:void 0,f=await xe({kind:n.kind,id:n.id,root:c$1,files:a.files,fileLimit:n.fileLimit,eligibleFileCount:a.eligibleFileCount,eligibleFileCountExact:a.eligibleFileCountExact,inventoryStrategy:a.strategy,...p?{selection:p}:{}});if(c(f)!==c(n))return false}return true}async function ae(e){let t=await _.readFile(e,"utf8");if(e.toLowerCase().endsWith(".json")){let s=JSON.parse(t),o=C(s);return o?[o]:[]}return parseAllDocuments(t,{logLevel:"silent"}).map(s=>C(s.toJSON())).filter(s=>s!==null)}function ue(e){return [...new Set([...e.workspaceFiles,...e.projects.flatMap(t=>e.filesByProject.get(t.id)??[])])].sort((t,s)=>t.localeCompare(s))}function Ie(e){return /^(?:openapi|swagger)(?:\.[^.]+)?\.(?:json|ya?ml)$/i.test(u.basename(e))}function ct(e){let t=u.basename(e).toLowerCase();return /\.(?:graphql|gql|proto)$/.test(t)||/^asyncapi(?:\.[^.]+)?\.(?:json|ya?ml)$/.test(t)}function dt(e){let t=u.basename(e),s=D(e);return !/(?:^|\/)\.devcontainer(?:\/|$)/i.test(s)&&/^Dockerfile(?:\..+)?$/i.test(t)||/\.tf$/i.test(t)||t==="Chart.yaml"}function lt(e){return /(?:^|[\\/])(?:README|ARCHITECTURE|CONTRIBUTING|SECURITY)\.md$/i.test(e)}function To(e,t){let s=D(u.relative(e,t));return /^\.github\/workflows\/.+\.ya?ml$/i.test(s)||/^(?:\.gitlab-ci\.ya?ml|azure-pipelines\.ya?ml|Jenkinsfile|bitbucket-pipelines\.ya?ml|\.woodpecker\.ya?ml|\.drone\.ya?ml|\.travis\.ya?ml|appveyor\.ya?ml)$/i.test(s)||/^\.circleci\/config\.ya?ml$/i.test(s)||/^\.buildkite\/pipeline\.ya?ml$/i.test(s)||/^\.tekton\/.+\.ya?ml$/i.test(s)||/^prow\/[^/]+\.(?:sh|py)$/i.test(s)}function pt(e,t){let s=D(u.relative(e,t));return /(?:^|\/)(?:adr|adrs|decisions)(?:\/).+\.md$/i.test(s)||/(?:^|\/)ADR[-_0-9].+\.md$/i.test(s)}async function ut(e){let t=new Set;for(let s of [e.workspacePath,...e.projects.map(o=>o.root)])for(let o of ["compose.yml","compose.yaml","docker-compose.yml","docker-compose.yaml"]){let i=u.join(s,o);await _.pathExists(i)&&t.add(i);}for(let s of ue(e))/^(?:docker-)?compose(?:\.[a-z0-9_-]+)*\.ya?ml$/i.test(u.basename(s))&&t.add(s);return [...t].sort((s,o)=>s.localeCompare(o))}async function ft(e){let s=[e.workspacePath,...e.projects.map(i=>i.root)].flatMap(i=>[u.join(i,"CODEOWNERS"),u.join(i,".github","CODEOWNERS"),u.join(i,".gitlab","CODEOWNERS"),u.join(i,"docs","CODEOWNERS")]);for(let i of ue(e))u.basename(i)==="OWNERS"&&s.push(i);let o=await Promise.all(s.map(async i=>await _.pathExists(i)?i:null));return [...new Set(o.filter(i=>!!i))].sort((i,n)=>i.localeCompare(n))}function gt(e){let t=[{root:e.workspacePath,files:e.workspaceFiles},...e.projects.map(s=>({root:s.root,files:e.filesByProject.get(s.id)??[]}))];return [...new Set(t.flatMap(s=>s.files.filter(o=>To(s.root,o))))].sort((s,o)=>s.localeCompare(o))}async function mt(e){let t=[];for(let s of ue(e))if(/\.ya?ml$/i.test(s))try{(await ae(s)).some(i=>{let n=C(i.metadata);return !!(P(i.apiVersion)&&P(i.kind)&&P(n?.name))})&&t.push(s);}catch{}return t.sort((s,o)=>s.localeCompare(o))}function ie(e,t){let s=u.resolve(t);return e.filter(o=>s===o.root||s.startsWith(`${o.root}${u.sep}`)).sort((o,i)=>i.root.length-o.root.length)[0]??null}var ze=class{constructor(t,s,o){this.workspacePath=t;this.now=s;this.workspaceName=o;}workspacePath;now;workspaceName;entities=new Map;relations=new Map;proofs=new Map;providers=[];diagnostics=[];contentHashes=new Map;attributeConflicts=new Set;emptyLabelDiagnostics=new Set;artifactPath(t,s){if(s){let o=D(u.relative(s.root,t));return me(u.posix.join(s.artifactPrefix,o))}return me(u.relative(this.workspacePath,t))}async addProof(t){let s;if(t.absolutePath){if(!this.contentHashes.has(t.absolutePath))try{this.contentHashes.set(t.absolutePath,je(await _.readFile(t.absolutePath)));}catch{this.contentHashes.set(t.absolutePath,null);}s=this.contentHashes.get(t.absolutePath)??void 0;}let o=me(t.artifact),i=R("proof",[t.provider,o,t.pointer??"",t.line??"",t.detail??""].join("\0"));return this.proofs.has(i)||this.proofs.set(i,{id:i,provider:t.provider,artifact:o,...t.pointer?{pointer:t.pointer}:{},...t.line?{line:t.line}:{},...t.column?{column:t.column}:{},...s?{contentHash:s}:{},observedAt:this.now.toISOString(),derivation:t.derivation??"extracted",trust:t.trust??"observed",confidence:t.confidence??"high",freshness:"fresh",...t.detail?{detail:t.detail}:{}}),i}addEntity(t){let s=R(t.kind,t.key),o=Eo(t.attributes??{}),i=this.entities.get(s),n=t.label.trim(),l=n||i?.label||t.key.trim()||t.kind;!n&&!this.emptyLabelDiagnostics.has(s)&&(this.emptyLabelDiagnostics.add(s),this.diagnostics.push({code:"graph.knowledge.empty_label_normalized",severity:"warning",message:`An empty ${t.kind} label was normalized to ${l}.`,entityIds:[s],recommendation:"Inspect the provider proof and preserve a non-empty source identifier before publishing the entity."}));let c={...i?.attributes??{}};for(let[a,p]of Object.entries(o)){if(a in c&&JSON.stringify(c[a])!==JSON.stringify(p)){if(t.mergeArrayAttributes?.includes(a)&&Array.isArray(c[a])&&Array.isArray(p)){c[a]=p;continue}let f=`${s}\0${a}`;this.attributeConflicts.has(f)||(this.attributeConflicts.add(f),this.diagnostics.push({code:"graph.knowledge.attribute_conflict",severity:"warning",message:`Conflicting ${a} values were observed for ${t.kind} ${l}.`,entityIds:[s],recommendation:"Inspect the entity proof paths and make the authoritative source explicit."}));continue}c[a]=p;}let r=[...new Set([...i?.identity.aliases??[],...t.aliases??[]].map(a=>a.trim()).filter(Boolean))].sort(),d=[...new Set([...i?.proofIds??[],...t.proofIds??[]])].sort();return this.entities.set(s,{id:s,kind:t.kind,label:l,...t.projectId?{projectId:t.projectId}:{},identity:{key:t.key,scope:t.projectId?"project":"workspace",aliases:r,fingerprint:je(JSON.stringify({kind:t.kind,key:t.key,attributes:c}))},attributes:c,proofIds:d}),s}addRelation(t){let s=R("relation",`${t.from}\0${t.kind}\0${t.to}`),o=this.relations.get(s),i=[...new Set([...o?.proofIds??[],...t.proofIds])].sort(),n=new Set(i.map(r=>this.proofs.get(r)?.provider).filter(Boolean)).size,l=t.trust??o?.trust??"observed",c=n>=2&&l!=="ambiguous"?"corroborated":l;return this.relations.set(s,{id:s,from:t.from,to:t.to,kind:t.kind,derivation:t.derivation??o?.derivation??"extracted",trust:c,confidence:c==="corroborated"?"high":t.confidence??o?.confidence??"high",proofIds:i}),s}};function pe(e){let t=[],s=null;for(let o of e.split(/\r?\n/)){let i=o.match(/^\s*\[\[([^\]]+)\]\]\s*(?:#.*)?$/)?.[1]?.trim()??o.match(/^\s*\[([^\]]+)\]\s*(?:#.*)?$/)?.[1]?.trim();if(i){s&&t.push({name:s.name,body:s.lines.join(`
4
4
  `)}),s={name:i,lines:[]};continue}s?.lines.push(o);}return s&&t.push({name:s.name,body:s.lines.join(`
@@ -1 +1 @@
1
- import {a as a$2}from'./chunk-TFFNHWXY.js';import {j,l as l$1}from'./chunk-R3Z4LY3O.js';import {g}from'./chunk-KW35SWG6.js';import {a as a$1}from'./chunk-Z2M2XCIB.js';import {v}from'./chunk-PSQPKK6H.js';import {j as j$1,e}from'./chunk-RU3UT7GJ.js';import {b,c as c$1}from'./chunk-FBF767WP.js';import {c,d}from'./chunk-FD2ZGGCQ.js';import {a}from'./chunk-COICGD62.js';import {f as f$1,g as g$1,h as h$2}from'./chunk-PUH3TSPC.js';import {k,l,h as h$1,m,n,p as p$1,q as q$1}from'./chunk-BZLDCASY.js';import {a as a$3}from'./chunk-AGI46TSQ.js';import {o as o$1,r as r$1,u}from'./chunk-VODNLROY.js';import {o,r as r$2,s}from'./chunk-YLLCZMKP.js';import {f,h}from'./chunk-BLEIUQL6.js';import {b as b$1}from'./chunk-VN2MKTQO.js';import {c as c$2}from'./chunk-EFHSRPW7.js';import {p,q,z,A,y,x}from'./chunk-ODK4LCEL.js';import ge from'path';import pe from'fs-extra';function r(t,s){if(!t)throw new Error(`Workspace Intelligence run semantic violation: ${s}`)}function de(t,s){return t.length===s.length&&t.every((m,u)=>m===s[u])}function ue(t){b$1(p.intelligenceRun,t,"Workspace Intelligence run report"),r(t.chainSchemaVersion===a,`chainSchemaVersion must be ${a}`),r(t.artifactPath===p.intelligenceRun,`artifactPath must be ${p.intelligenceRun}`),r(t.preflight.length===y.length,`preflight must contain exactly ${y.length} entries`);for(let[d,n]of y.entries()){let a=t.preflight[d];r(a?.id===n,`preflight[${d}].id must be ${n}`),r(de(a.artifacts,z[n]),`${n} preflight artifacts must match the runtime registry`),n==="sync"?r(a.status==="passed"&&a.result==="synchronized"||a.status==="failed"&&a.result==="failed","sync preflight status and result are incoherent"):r(a.status==="passed"&&(a.result==="created"||a.result==="reused")||a.status==="failed"&&a.result==="failed"||a.status==="skipped"&&a.result==="skipped","baseline preflight status and result are incoherent");}let s=t.preflight[1];r(t.baselineCreated===(s?.result==="created"),"baselineCreated must match the baseline preflight result"),r(t.stages.length===x.length,`stages must contain exactly ${x.length} canonical steps`);let m=t.preflight[0],u=m?.status==="failed";for(let[d,n]of x.entries()){let a=t.stages[d];r(a?.id===n,`stages[${d}].id must be ${n}`),r(de(a.artifacts,A[n].produces),`${n} artifacts must match the runtime registry`),u&&r(a.status==="skipped",`${n} must be skipped after a hard failure`),a.status==="passed"?r(a.exitCode===0,`${n} passed stage must have exitCode 0`):a.status==="blocked"?r(a.exitCode!==0,`${n} blocked stage must have a non-zero exitCode`):a.status==="failed"?(r(a.exitCode===1,`${n} failed stage must have exitCode 1`),u=true):(r(a.exitCode===0,`${n} skipped stage must have exitCode 0`),r(a.durationMs===0,`${n} skipped stage must have durationMs 0`)),d===0&&((m?.status==="failed"||a.status==="failed")&&r(s?.status==="skipped","baseline must be skipped when sync or model fails"),s?.status==="skipped"&&r(m?.status==="failed"||a.status==="failed"||a.status==="skipped","baseline may be skipped only after an upstream failure"),s?.status!=="passed"&&(u=true));}let h=t.preflight.some(d=>d.status==="failed")||t.stages.some(d=>d.status==="failed"),y$1=t.stages.some(d=>d.status==="blocked"),l=h?"failed":y$1?"blocked":"passed",p$1=l==="failed"?1:l==="blocked"?2:0;r(t.status===l,`status must be ${l}`),r(t.exitCode===p$1,`exitCode must be ${p$1}`);}var we=p.intelligenceRun,Ee=q.intelligenceRun,L=we;function I(t){c$2({action:"intelligence",status:t.status==="started"?"started":t.status==="passed"?"succeeded":t.status==="failed"?"failed":"warn",message:t.message,metadata:{phase:`workspace.intelligence.${t.kind}.${t.id}`,intelligenceMilestoneId:t.id,intelligenceMilestoneKind:t.kind,intelligenceMilestoneStatus:t.status}});}async function Ue(t){let s=ge.resolve(t.workspacePath);return f(s,L,()=>ye({...t,workspacePath:s}),{timeoutMs:15*6e4,staleAfterMs:3e4})}async function ye(t){let s$1=t.workspacePath,m$1=[],u$1=[],h$3=false,y=async(e,o)=>{let c=[...z[e]];if(h$3){I({id:e,kind:"preflight",status:"skipped",message:`${e} prerequisite skipped after an upstream failure`}),m$1.push({id:e,status:"skipped",result:"skipped",durationMs:0,artifacts:c,message:"skipped because a required upstream operation failed"});return}let k=Date.now();I({id:e,kind:"preflight",status:"started",message:`${e} prerequisite started`});try{let i=await o();I({id:e,kind:"preflight",status:"passed",message:i.message}),m$1.push({id:e,status:"passed",result:i.result,durationMs:Date.now()-k,artifacts:c,message:i.message});}catch(i){h$3=true;let f=i instanceof Error?i.message:String(i);I({id:e,kind:"preflight",status:"failed",message:f}),m$1.push({id:e,status:"failed",result:"failed",durationMs:Date.now()-k,artifacts:c,message:f});}},l$2=async(e,o)=>{let c=[...A[e].produces];if(h$3){I({id:e,kind:"stage",status:"skipped",message:`${e} skipped after an upstream failure`}),u$1.push({id:e,status:"skipped",durationMs:0,artifacts:c,exitCode:0,message:"skipped because a required upstream stage failed"});return}let k=Date.now();I({id:e,kind:"stage",status:"started",message:`${e} started`});try{let i=await o(),f=i.exitCode??0,w=i.blocked||f!==0?"blocked":"passed";I({id:e,kind:"stage",status:w,message:i.message}),u$1.push({id:e,status:w,durationMs:Date.now()-k,artifacts:c,exitCode:f,message:i.message});}catch(i){h$3=true;let f=i instanceof Error?i.message:String(i);I({id:e,kind:"stage",status:"failed",message:f}),u$1.push({id:e,status:"failed",durationMs:Date.now()-k,artifacts:c,exitCode:1,message:f});}};await y("sync",async()=>{let e=await g(s$1,true),o$1=await o({workspacePath:s$1});return {result:"synchronized",message:`registry ${e.added.length} added/${e.skipped} existing; contract ${o$1.contract.projects.length} projects`}});let p$2,d$1=()=>{if(!p$2)throw new Error("canonical workspace model is unavailable");return p$2};await l$2("model",async()=>(p$2={...await r$1({workspacePath:s$1,includeEvidence:true}),build:o$1({mode:"full",engineStatus:"disabled"})},await u(p$2,s$1),{message:`${p$2.summary.projectCount} projects modeled`}));let n$1=ge.join(s$1,p.snapshot),a$4=false;await y("baseline",async()=>{if(!await pe.pathExists(n$1)){let c=await k({workspacePath:s$1,model:d$1()});return await l(c,s$1),a$4=true,{result:"created",message:"initial structural baseline created"}}let e=await pe.readJson(n$1),o=h$1(e);return o?(await l(o,s$1),{result:"reused",message:"legacy structural baseline migrated and reused"}):{result:"reused",message:"existing structural baseline reused"}}),await l$2("diff",async()=>{let e=await m({workspacePath:s$1,fromPath:p.snapshot,model:d$1()});return await n(e,s$1),{message:e.summary.changed?"workspace changes detected":"no workspace changes"}}),await l$2("impact",async()=>{let e=await p$1({workspacePath:s$1,fromPath:p.diff});return await q$1(e,s$1),{message:`${e.summary.risk} risk; ${e.summary.affectedProjects} affected`}}),await l$2("doctor-evidence",async()=>{let e=await v({workspace:s$1,json:true,quiet:true,profile:t.strict===true?"enterprise-strict":"local"});return {exitCode:e,blocked:e!==0,message:`doctor exit ${e}`}}),await l$2("contract-evidence",async()=>{let e=await r$2({workspacePath:s$1,strict:true});return await s({workspacePath:s$1,result:e}),{exitCode:e.status==="passed"?0:1,blocked:e.status!=="passed",message:`contract ${e.status}`}}),await l$2("analyze-evidence",async()=>{let e=await a$1({workspacePath:s$1,json:true,strict:t.strict===true});return {blocked:e.summary.verdict==="blocked"||t.strict===true&&e.summary.verdict==="needs-attention",exitCode:e.summary.verdict==="blocked"||t.strict===true&&e.summary.verdict==="needs-attention"?1:0,message:`analyze ${e.summary.verdict} (${e.summary.score}/100)`}}),await l$2("readiness-evidence",async()=>{let e=await a$2({startPath:s$1,writeReport:true,skipVerify:true});return {blocked:e.overallStatus==="fail"||t.strict===true&&e.overallStatus==="warn",exitCode:e.overallStatus==="fail"||t.strict===true&&e.overallStatus==="warn"?1:0,message:`pre-verify readiness ${e.overallStatus}`}}),await l$2("verify",async()=>{let e$1=await f$1({workspacePath:s$1,fromImpactPath:p.impact});await g$1(e$1,s$1);let o=h$2(e$1,{strict:t.strict===true});return await j$1(s$1,e(e$1,o.passed)),{blocked:!o.passed,exitCode:o.exitCode,message:`${e$1.summary.verdict}; gate ${o.passed?"passed":"blocked"}`}}),await l$2("context",async()=>{let e=await c({workspacePath:s$1,model:d$1(),agent:t.agent??"generic",includeEvidence:true});return await d(e,s$1),{message:`context grounded for ${e.agent}`}}),await l$2("agent-sync",async()=>{let e=await l$1({workspacePath:s$1,agent:t.agent??"generic",targets:["all"],write:true,refreshContext:false,strict:t.strict===true,preset:"enterprise"}),o=false,c$1=await a$3(s$1);if(c$1.status==="miss"){if(c$1.reason!=="live-input-mismatch")throw new Error(`Agent grounding left canonical evidence invalid (${c$1.reason}).`);p$2={...await r$1({workspacePath:s$1,includeEvidence:true}),build:o$1({mode:"full",engineStatus:"disabled"})},await u(p$2,s$1);let f=await c({workspacePath:s$1,model:p$2,agent:t.agent??"generic",includeEvidence:true});await d(f,s$1);let w=await l$1({workspacePath:s$1,agent:t.agent??"generic",targets:["all"],write:true,refreshContext:false,strict:t.strict===true,preset:"enterprise"});e={...w,writtenFiles:[...new Set([...e.writtenFiles,...w.writtenFiles])].sort(),strictViolations:[...new Set([...e.strictViolations??[],...w.strictViolations??[]])].sort()};let O=await a$3(s$1);if(O.status==="miss")throw new Error(`Agent grounding reconciliation did not produce fresh canonical evidence (${O.reason}).`);o=true;}let k=e.strictViolations??[],i=t.strict===true&&k.length>0;return {blocked:i,exitCode:i?2:0,message:i?`${e.writtenFiles.length} grounding files written; ${k.length} strict grounding violation(s): ${k.join("; ")}`:`${e.writtenFiles.length} grounding files written; portable entry surfaces prepared for all supported hosts${o?"; canonical Model/Graph freshness sealed":""}`}}),await l$2("explain",async()=>{let e=await b({workspacePath:s$1,target:{kind:"release-blocked"}});await c$1(e,s$1);let o=t.strict===true?u$1.filter(c=>c.status==="blocked").map(c=>c.id):[];return {message:o.length>0&&e.blocking!==true?`Strict policy blocked advisory or incomplete evidence in ${o.join(", ")}. ${e.summary}`:e.summary}});let me=u$1.some(e=>e.status==="blocked"),G=h$3?"failed":me?"blocked":"passed",fe=h$3?1:G==="blocked"?2:0,b$1={schemaVersion:Ee,chainSchemaVersion:a,generatedAt:new Date().toISOString(),workspacePath:s$1,baselineCreated:a$4,preflight:m$1,status:G,exitCode:fe,stages:u$1,artifactPath:L};ue(b$1),await h(s$1,L,b$1);let ke=await j({workspacePath:s$1});return await h(s$1,p.agentIndex,ke),b$1}export{we as a,Ee as b,Ue as c};
1
+ import {a as a$2}from'./chunk-AMGIXK6Z.js';import {j,l as l$1}from'./chunk-ZQ36CTLF.js';import {g}from'./chunk-UVIBPWOG.js';import {a as a$1}from'./chunk-QMNJTI65.js';import {v}from'./chunk-VRZAN3WS.js';import {j as j$1,e}from'./chunk-RU3UT7GJ.js';import {b,c as c$1}from'./chunk-4KAYWMNE.js';import {c,d}from'./chunk-TJRVWVAZ.js';import {a}from'./chunk-COICGD62.js';import {f as f$1,g as g$1,h as h$2}from'./chunk-IQJL3LBM.js';import {k,l,h as h$1,m,n,p as p$1,q as q$1}from'./chunk-VEMGICT4.js';import {a as a$3}from'./chunk-4AAXIWYY.js';import {o as o$1,r as r$1,u}from'./chunk-QDM6TWFK.js';import {o,r as r$2,s}from'./chunk-MD4CHXV3.js';import {f,h}from'./chunk-BLEIUQL6.js';import {b as b$1}from'./chunk-VN2MKTQO.js';import {c as c$2}from'./chunk-EFHSRPW7.js';import {p,q,z,A,y,x}from'./chunk-ODK4LCEL.js';import ge from'path';import pe from'fs-extra';function r(t,s){if(!t)throw new Error(`Workspace Intelligence run semantic violation: ${s}`)}function de(t,s){return t.length===s.length&&t.every((m,u)=>m===s[u])}function ue(t){b$1(p.intelligenceRun,t,"Workspace Intelligence run report"),r(t.chainSchemaVersion===a,`chainSchemaVersion must be ${a}`),r(t.artifactPath===p.intelligenceRun,`artifactPath must be ${p.intelligenceRun}`),r(t.preflight.length===y.length,`preflight must contain exactly ${y.length} entries`);for(let[d,n]of y.entries()){let a=t.preflight[d];r(a?.id===n,`preflight[${d}].id must be ${n}`),r(de(a.artifacts,z[n]),`${n} preflight artifacts must match the runtime registry`),n==="sync"?r(a.status==="passed"&&a.result==="synchronized"||a.status==="failed"&&a.result==="failed","sync preflight status and result are incoherent"):r(a.status==="passed"&&(a.result==="created"||a.result==="reused")||a.status==="failed"&&a.result==="failed"||a.status==="skipped"&&a.result==="skipped","baseline preflight status and result are incoherent");}let s=t.preflight[1];r(t.baselineCreated===(s?.result==="created"),"baselineCreated must match the baseline preflight result"),r(t.stages.length===x.length,`stages must contain exactly ${x.length} canonical steps`);let m=t.preflight[0],u=m?.status==="failed";for(let[d,n]of x.entries()){let a=t.stages[d];r(a?.id===n,`stages[${d}].id must be ${n}`),r(de(a.artifacts,A[n].produces),`${n} artifacts must match the runtime registry`),u&&r(a.status==="skipped",`${n} must be skipped after a hard failure`),a.status==="passed"?r(a.exitCode===0,`${n} passed stage must have exitCode 0`):a.status==="blocked"?r(a.exitCode!==0,`${n} blocked stage must have a non-zero exitCode`):a.status==="failed"?(r(a.exitCode===1,`${n} failed stage must have exitCode 1`),u=true):(r(a.exitCode===0,`${n} skipped stage must have exitCode 0`),r(a.durationMs===0,`${n} skipped stage must have durationMs 0`)),d===0&&((m?.status==="failed"||a.status==="failed")&&r(s?.status==="skipped","baseline must be skipped when sync or model fails"),s?.status==="skipped"&&r(m?.status==="failed"||a.status==="failed"||a.status==="skipped","baseline may be skipped only after an upstream failure"),s?.status!=="passed"&&(u=true));}let h=t.preflight.some(d=>d.status==="failed")||t.stages.some(d=>d.status==="failed"),y$1=t.stages.some(d=>d.status==="blocked"),l=h?"failed":y$1?"blocked":"passed",p$1=l==="failed"?1:l==="blocked"?2:0;r(t.status===l,`status must be ${l}`),r(t.exitCode===p$1,`exitCode must be ${p$1}`);}var we=p.intelligenceRun,Ee=q.intelligenceRun,L=we;function I(t){c$2({action:"intelligence",status:t.status==="started"?"started":t.status==="passed"?"succeeded":t.status==="failed"?"failed":"warn",message:t.message,metadata:{phase:`workspace.intelligence.${t.kind}.${t.id}`,intelligenceMilestoneId:t.id,intelligenceMilestoneKind:t.kind,intelligenceMilestoneStatus:t.status}});}async function Ue(t){let s=ge.resolve(t.workspacePath);return f(s,L,()=>ye({...t,workspacePath:s}),{timeoutMs:15*6e4,staleAfterMs:3e4})}async function ye(t){let s$1=t.workspacePath,m$1=[],u$1=[],h$3=false,y=async(e,o)=>{let c=[...z[e]];if(h$3){I({id:e,kind:"preflight",status:"skipped",message:`${e} prerequisite skipped after an upstream failure`}),m$1.push({id:e,status:"skipped",result:"skipped",durationMs:0,artifacts:c,message:"skipped because a required upstream operation failed"});return}let k=Date.now();I({id:e,kind:"preflight",status:"started",message:`${e} prerequisite started`});try{let i=await o();I({id:e,kind:"preflight",status:"passed",message:i.message}),m$1.push({id:e,status:"passed",result:i.result,durationMs:Date.now()-k,artifacts:c,message:i.message});}catch(i){h$3=true;let f=i instanceof Error?i.message:String(i);I({id:e,kind:"preflight",status:"failed",message:f}),m$1.push({id:e,status:"failed",result:"failed",durationMs:Date.now()-k,artifacts:c,message:f});}},l$2=async(e,o)=>{let c=[...A[e].produces];if(h$3){I({id:e,kind:"stage",status:"skipped",message:`${e} skipped after an upstream failure`}),u$1.push({id:e,status:"skipped",durationMs:0,artifacts:c,exitCode:0,message:"skipped because a required upstream stage failed"});return}let k=Date.now();I({id:e,kind:"stage",status:"started",message:`${e} started`});try{let i=await o(),f=i.exitCode??0,w=i.blocked||f!==0?"blocked":"passed";I({id:e,kind:"stage",status:w,message:i.message}),u$1.push({id:e,status:w,durationMs:Date.now()-k,artifacts:c,exitCode:f,message:i.message});}catch(i){h$3=true;let f=i instanceof Error?i.message:String(i);I({id:e,kind:"stage",status:"failed",message:f}),u$1.push({id:e,status:"failed",durationMs:Date.now()-k,artifacts:c,exitCode:1,message:f});}};await y("sync",async()=>{let e=await g(s$1,true),o$1=await o({workspacePath:s$1});return {result:"synchronized",message:`registry ${e.added.length} added/${e.skipped} existing; contract ${o$1.contract.projects.length} projects`}});let p$2,d$1=()=>{if(!p$2)throw new Error("canonical workspace model is unavailable");return p$2};await l$2("model",async()=>(p$2={...await r$1({workspacePath:s$1,includeEvidence:true}),build:o$1({mode:"full",engineStatus:"disabled"})},await u(p$2,s$1),{message:`${p$2.summary.projectCount} projects modeled`}));let n$1=ge.join(s$1,p.snapshot),a$4=false;await y("baseline",async()=>{if(!await pe.pathExists(n$1)){let c=await k({workspacePath:s$1,model:d$1()});return await l(c,s$1),a$4=true,{result:"created",message:"initial structural baseline created"}}let e=await pe.readJson(n$1),o=h$1(e);return o?(await l(o,s$1),{result:"reused",message:"legacy structural baseline migrated and reused"}):{result:"reused",message:"existing structural baseline reused"}}),await l$2("diff",async()=>{let e=await m({workspacePath:s$1,fromPath:p.snapshot,model:d$1()});return await n(e,s$1),{message:e.summary.changed?"workspace changes detected":"no workspace changes"}}),await l$2("impact",async()=>{let e=await p$1({workspacePath:s$1,fromPath:p.diff});return await q$1(e,s$1),{message:`${e.summary.risk} risk; ${e.summary.affectedProjects} affected`}}),await l$2("doctor-evidence",async()=>{let e=await v({workspace:s$1,json:true,quiet:true,profile:t.strict===true?"enterprise-strict":"local"});return {exitCode:e,blocked:e!==0,message:`doctor exit ${e}`}}),await l$2("contract-evidence",async()=>{let e=await r$2({workspacePath:s$1,strict:true});return await s({workspacePath:s$1,result:e}),{exitCode:e.status==="passed"?0:1,blocked:e.status!=="passed",message:`contract ${e.status}`}}),await l$2("analyze-evidence",async()=>{let e=await a$1({workspacePath:s$1,json:true,strict:t.strict===true});return {blocked:e.summary.verdict==="blocked"||t.strict===true&&e.summary.verdict==="needs-attention",exitCode:e.summary.verdict==="blocked"||t.strict===true&&e.summary.verdict==="needs-attention"?1:0,message:`analyze ${e.summary.verdict} (${e.summary.score}/100)`}}),await l$2("readiness-evidence",async()=>{let e=await a$2({startPath:s$1,writeReport:true,skipVerify:true});return {blocked:e.overallStatus==="fail"||t.strict===true&&e.overallStatus==="warn",exitCode:e.overallStatus==="fail"||t.strict===true&&e.overallStatus==="warn"?1:0,message:`pre-verify readiness ${e.overallStatus}`}}),await l$2("verify",async()=>{let e$1=await f$1({workspacePath:s$1,fromImpactPath:p.impact});await g$1(e$1,s$1);let o=h$2(e$1,{strict:t.strict===true});return await j$1(s$1,e(e$1,o.passed)),{blocked:!o.passed,exitCode:o.exitCode,message:`${e$1.summary.verdict}; gate ${o.passed?"passed":"blocked"}`}}),await l$2("context",async()=>{let e=await c({workspacePath:s$1,model:d$1(),agent:t.agent??"generic",includeEvidence:true});return await d(e,s$1),{message:`context grounded for ${e.agent}`}}),await l$2("agent-sync",async()=>{let e=await l$1({workspacePath:s$1,agent:t.agent??"generic",targets:["all"],write:true,refreshContext:false,strict:t.strict===true,preset:"enterprise"}),o=false,c$1=await a$3(s$1);if(c$1.status==="miss"){if(c$1.reason!=="live-input-mismatch")throw new Error(`Agent grounding left canonical evidence invalid (${c$1.reason}).`);p$2={...await r$1({workspacePath:s$1,includeEvidence:true}),build:o$1({mode:"full",engineStatus:"disabled"})},await u(p$2,s$1);let f=await c({workspacePath:s$1,model:p$2,agent:t.agent??"generic",includeEvidence:true});await d(f,s$1);let w=await l$1({workspacePath:s$1,agent:t.agent??"generic",targets:["all"],write:true,refreshContext:false,strict:t.strict===true,preset:"enterprise"});e={...w,writtenFiles:[...new Set([...e.writtenFiles,...w.writtenFiles])].sort(),strictViolations:[...new Set([...e.strictViolations??[],...w.strictViolations??[]])].sort()};let O=await a$3(s$1);if(O.status==="miss")throw new Error(`Agent grounding reconciliation did not produce fresh canonical evidence (${O.reason}).`);o=true;}let k=e.strictViolations??[],i=t.strict===true&&k.length>0;return {blocked:i,exitCode:i?2:0,message:i?`${e.writtenFiles.length} grounding files written; ${k.length} strict grounding violation(s): ${k.join("; ")}`:`${e.writtenFiles.length} grounding files written; portable entry surfaces prepared for all supported hosts${o?"; canonical Model/Graph freshness sealed":""}`}}),await l$2("explain",async()=>{let e=await b({workspacePath:s$1,target:{kind:"release-blocked"}});await c$1(e,s$1);let o=t.strict===true?u$1.filter(c=>c.status==="blocked").map(c=>c.id):[];return {message:o.length>0&&e.blocking!==true?`Strict policy blocked advisory or incomplete evidence in ${o.join(", ")}. ${e.summary}`:e.summary}});let me=u$1.some(e=>e.status==="blocked"),G=h$3?"failed":me?"blocked":"passed",fe=h$3?1:G==="blocked"?2:0,b$1={schemaVersion:Ee,chainSchemaVersion:a,generatedAt:new Date().toISOString(),workspacePath:s$1,baselineCreated:a$4,preflight:m$1,status:G,exitCode:fe,stages:u$1,artifactPath:L};ue(b$1),await h(s$1,L,b$1);let ke=await j({workspacePath:s$1});return await h(s$1,p.agentIndex,ke),b$1}export{we as a,Ee as b,Ue as c};
@@ -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 y(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 y(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 y(f,"high","manifest")}return y(p,"high","manifest")}if(o.fileHints.length>0&&ue(e,o.fileHints)){if(p==="vite"){let f=E(d);if(f)return y(f,"high","manifest")}return y(p,"high","manifest")}if(o.scriptHints.some(f=>de(c,f)))return y(p,"medium","manifest")}return y("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"]},"google-adk":{key:"google-adk",runtime:"python",displayName:"Google Agent Development Kit",supportTier:"extended",importStack:"unknown",aliases:["google-adk","google adk","google agent development kit","adk"],kitPrefixes:["agent.google-adk","agent.google."]},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 g(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"||e==="google-adk"}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 pe(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 Be(e,n){let t=me(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=pe(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=ke(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{xe as a,we as b,L as c,_ as d,ce as e,Te as f,I as g,he as h,M as i,me as j,pe as k,X as l,Be as m};
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"),(g(e,".csproj")||g(e,".sln"))&&t("dotnet"),a.existsSync(s.join(e,"package.json"))&&t("node"),(a.existsSync(s.join(e,"Gemfile"))||g(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"))||g(e,".cpp",3)||g(e,".cc",3)||g(e,".cxx",3)||g(e,".hpp",3)||g(e,".hh",3)||g(e,".hxx",3))&&t("cpp"),(g(e,".c",3)||g(e,".h",3))&&t("c"),(a.existsSync(s.join(e,"settings.gradle.kts"))||g(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=g(e,".cpp",3)||g(e,".cc",3)||g(e,".cxx",3),D=g(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};
@@ -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-7EMG3C3H.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(`