workspai 0.75.0 → 0.75.2

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 (105) hide show
  1. package/dist/analyze-6UEBC5OJ.js +1 -0
  2. package/dist/{artifact-remediation-plan-HD5K52UJ.js → artifact-remediation-plan-SRH2Q6N2.js} +1 -1
  3. package/dist/autopilot-release-H5TO6NYY.js +1 -0
  4. package/dist/chunk-2DZLCINC.js +1 -0
  5. package/dist/{chunk-W7I65IXY.js → chunk-3HXEPDFF.js} +2 -2
  6. package/dist/chunk-3N27P3KO.js +7 -0
  7. package/dist/{chunk-J4J3RYCL.js → chunk-3RNWBFRP.js} +1 -1
  8. package/dist/{chunk-GE46XKD2.js → chunk-4JXJRIJM.js} +1 -1
  9. package/dist/chunk-5HNQIMGW.js +1 -0
  10. package/dist/chunk-5K4O3TAW.js +4 -0
  11. package/dist/{chunk-CGNMS32W.js → chunk-66O62XNJ.js} +49 -49
  12. package/dist/{chunk-GIFAGOMK.js → chunk-ADHX7D3F.js} +1 -1
  13. package/dist/chunk-DTNOF3MP.js +1 -0
  14. package/dist/{chunk-OH6LV5JP.js → chunk-E42IFQFR.js} +4 -4
  15. package/dist/{chunk-6B7L4NZE.js → chunk-EFHSRPW7.js} +6 -6
  16. package/dist/{chunk-CK73SQFF.js → chunk-EP7SUMAX.js} +1 -1
  17. package/dist/chunk-EWD6QTAM.js +2 -0
  18. package/dist/{chunk-HLSOZOL3.js → chunk-FNVWDXK2.js} +3 -3
  19. package/dist/{chunk-RX3U7JKF.js → chunk-FZWLWFR4.js} +1 -1
  20. package/dist/chunk-G5UCEXP6.js +1 -0
  21. package/dist/{chunk-WOPZX56J.js → chunk-GDOO2YZW.js} +1 -1
  22. package/dist/{chunk-V5WVGPOP.js → chunk-IKBE3HOH.js} +1 -1
  23. package/dist/{chunk-NGU7RYXA.js → chunk-K52IQX3J.js} +1 -1
  24. package/dist/{chunk-DT3LRKZQ.js → chunk-KDVNRNDU.js} +1 -1
  25. package/dist/chunk-LARREYZN.js +1 -0
  26. package/dist/{chunk-MXI2DWLL.js → chunk-LFY7KTPD.js} +1 -1
  27. package/dist/{chunk-SRCZX2KC.js → chunk-P36TACKN.js} +1 -1
  28. package/dist/{chunk-4KEZQLBU.js → chunk-PFAGXI3G.js} +1 -1
  29. package/dist/chunk-ROOPODG6.js +2 -0
  30. package/dist/{chunk-G3ZC5W4U.js → chunk-SZHRPELL.js} +1 -1
  31. package/dist/{chunk-DJH2CH42.js → chunk-UHIN3RS6.js} +1 -1
  32. package/dist/{chunk-FS3WLRQ4.js → chunk-VWBWDDU2.js} +1 -1
  33. package/dist/chunk-VXFIMEC6.js +2 -0
  34. package/dist/{chunk-ZW4QV6SB.js → chunk-WHBKKJ7L.js} +1 -1
  35. package/dist/chunk-WXUCAVFT.js +681 -0
  36. package/dist/chunk-X7OI24LO.js +418 -0
  37. package/dist/{chunk-RPM67N7A.js → chunk-XHUM372O.js} +1 -1
  38. package/dist/chunk-ZGVODK5C.js +12 -0
  39. package/dist/{create-7UENFCJK.js → create-ZFSFWAW3.js} +1 -1
  40. package/dist/{demo-kit-ALW6OSQV.js → demo-kit-QNGY4KQ5.js} +1 -1
  41. package/dist/{doctor-KGADT4PI.js → doctor-4KL4XUCS.js} +1 -1
  42. package/dist/{dotnet-webapi-clean-6Z4EXEJY.js → dotnet-webapi-clean-GXTNZMKO.js} +1 -1
  43. package/dist/{goal-lifecycle-HIQGDEEP.js → goal-lifecycle-EXQZD7IA.js} +1 -1
  44. package/dist/{goal-pack-63PEP2ND.js → goal-pack-DKJU2DEP.js} +1 -1
  45. package/dist/{gofiber-standard-TDJQIVQZ.js → gofiber-standard-PFBIAMGR.js} +1 -1
  46. package/dist/{gogin-standard-UEF3IHSJ.js → gogin-standard-DW5GL7YG.js} +1 -1
  47. package/dist/index.js +182 -174
  48. package/dist/{pipeline-VFI35PR4.js → pipeline-4GVAOCEN.js} +1 -1
  49. package/dist/{project-agent-entry-Z3OY3S7T.js → project-agent-entry-7QKNEEXP.js} +1 -1
  50. package/dist/{project-intelligence-lens-YWICXW6P.js → project-intelligence-lens-IHRYCLNU.js} +1 -1
  51. package/dist/{proof-carrying-change-BAP2C3KV.js → proof-carrying-change-O37XUPIZ.js} +1 -1
  52. package/dist/{rust-axum-4TRVPFMB.js → rust-axum-L7UAYARA.js} +1 -1
  53. package/dist/{springboot-standard-COWL75GT.js → springboot-standard-CZH24KWD.js} +1 -1
  54. package/dist/verified-goal-XI4RQESU.js +1 -0
  55. package/dist/{workspace-PAXTJCMH.js → workspace-EYXAKMVI.js} +1 -1
  56. package/dist/{workspace-agent-sync-MGCEF4ON.js → workspace-agent-sync-SN55KT6N.js} +1 -1
  57. package/dist/{workspace-context-2G6QZ6D3.js → workspace-context-PW6ESEHH.js} +1 -1
  58. package/dist/{workspace-contract-VWPOIYHJ.js → workspace-contract-FPLFL4G3.js} +1 -1
  59. package/dist/{workspace-explain-HLEBUK4K.js → workspace-explain-TVQ5IF5D.js} +1 -1
  60. package/dist/{workspace-foundation-X7LOGTS3.js → workspace-foundation-DWIJPZRH.js} +1 -1
  61. package/dist/{workspace-graph-stream-XGSRDRLI.js → workspace-graph-stream-RUTNWLQB.js} +1 -1
  62. package/dist/workspace-graph-token-efficiency-WF6TGSK7.js +1 -0
  63. package/dist/{workspace-intelligence-GFJKIWBX.js → workspace-intelligence-4CA2CSPZ.js} +1 -1
  64. package/dist/{workspace-intelligence-benchmark-R5MEGJQS.js → workspace-intelligence-benchmark-V6AEVDMB.js} +1 -1
  65. package/dist/{workspace-intelligence-runner-BU6JKNUD.js → workspace-intelligence-runner-VM5SXXAT.js} +1 -1
  66. package/dist/{workspace-knowledge-graph-OUTCLYS2.js → workspace-knowledge-graph-JXN2ZOAF.js} +1 -1
  67. package/dist/workspace-knowledge-graph-query-BROIV27M.js +1 -0
  68. package/dist/workspace-knowledge-graph-snapshot-KBNUXA64.js +1 -0
  69. package/dist/{workspace-mcp-serve-JYUKX3YS.js → workspace-mcp-serve-4WN4CSD7.js} +1 -1
  70. package/dist/{workspace-model-DUGPW5IB.js → workspace-model-D4IECQML.js} +1 -1
  71. package/dist/{workspace-onboarding-C4CKWTJ3.js → workspace-onboarding-6XWDKLM5.js} +1 -1
  72. package/dist/{workspace-registry-summary-4KX4QD55.js → workspace-registry-summary-Y3ET36NH.js} +1 -1
  73. package/dist/{workspace-repair-engine-OVW4J3DI.js → workspace-repair-engine-HBUXRHDY.js} +1 -1
  74. package/dist/workspace-run-VN7KV4BU.js +1 -0
  75. package/dist/{workspace-verify-B7HEFYO6.js → workspace-verify-OOAZ3NMZ.js} +1 -1
  76. package/dist/{workspace-watch-TQYAMLIV.js → workspace-watch-BNM5B6HU.js} +1 -1
  77. package/docs/README.md +1 -1
  78. package/docs/agent-framework-adapters.md +33 -14
  79. package/docs/ci-workflows.md +31 -8
  80. package/docs/commands-reference.md +24 -11
  81. package/docs/creating-workspaces-and-projects.md +28 -10
  82. package/docs/doctor-command.md +4 -0
  83. package/docs/native-kit-baselines.md +3 -0
  84. package/docs/workspace-operations.md +12 -2
  85. package/docs/workspace-run.md +8 -0
  86. package/package.json +5 -4
  87. package/dist/analyze-FRQVJ3VJ.js +0 -1
  88. package/dist/autopilot-release-D3UES53H.js +0 -1
  89. package/dist/chunk-36VNERGC.js +0 -1
  90. package/dist/chunk-4DX4HBG3.js +0 -4
  91. package/dist/chunk-CMLLERGG.js +0 -418
  92. package/dist/chunk-D4AMCZJU.js +0 -7
  93. package/dist/chunk-LMOTDLJF.js +0 -2
  94. package/dist/chunk-NFWUAEVQ.js +0 -12
  95. package/dist/chunk-O2CFT2A3.js +0 -1
  96. package/dist/chunk-O5XQP5E7.js +0 -1
  97. package/dist/chunk-P5RZO5BY.js +0 -681
  98. package/dist/chunk-TXVMHEJS.js +0 -1
  99. package/dist/chunk-YP436V7Q.js +0 -2
  100. package/dist/chunk-ZKYH44ER.js +0 -1
  101. package/dist/verified-goal-A6WOMNTU.js +0 -1
  102. package/dist/workspace-graph-token-efficiency-YHXFGH3Z.js +0 -1
  103. package/dist/workspace-knowledge-graph-query-TT2KK3SF.js +0 -1
  104. package/dist/workspace-knowledge-graph-snapshot-XWJRUMAC.js +0 -1
  105. package/dist/workspace-run-NVQGRZYO.js +0 -1
@@ -0,0 +1,12 @@
1
+ import {a}from'./chunk-HCFOVANQ.js';import {n,h,i}from'./chunk-LARREYZN.js';import {B}from'./chunk-E42IFQFR.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
+ `)}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
+ `)}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
+ `)}),s={name:i,lines:[]};continue}s?.lines.push(o);}return s&&t.push({name:s.name,body:s.lines.join(`
5
+ `)}),t}function Mo(e){return [...e.matchAll(/["']([^"']+)["']/g)].map(t=>t[1])}function Ee(e,t){let s=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),o=new RegExp(`^\\s*${s}\\s*=\\s*\\[`,"m").exec(e);if(!o)return [];let i=o.index+o[0].lastIndexOf("["),n=null,l=false;for(let c=i+1;c<e.length;c+=1){let r=e[c];if(n){r===n&&!l&&(n=null),l=r==="\\"&&!l,r!=="\\"&&(l=false);continue}if(r==="'"||r==='"'){n=r;continue}if(r==="]")return Mo(e.slice(i+1,c))}return []}function ht(e){return e.trim().match(/^([A-Za-z0-9][A-Za-z0-9_.-]*)/)?.[1]??""}function He(e){return e.replace(/\.(?:workspace|version|path|git|optional|features|default-features|package)$/,"")}function Oo(e){let t=pe(e).find(({name:o})=>o==="workspace.package")?.body;if(!t)return {};let s=o=>{let i=o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return t.match(new RegExp(`^\\s*${i}\\s*=\\s*["']([^"']+)["']`,"m"))?.[1]};return {edition:s("edition"),rustVersion:s("rust-version"),version:s("version")}}function Pe(e,t,s){let o=pe(e).find(({name:c})=>c==="package")?.body;if(!o)return s;let i=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),n=o.match(new RegExp(`^\\s*${i}\\s*=\\s*["']([^"']+)["']`,"m"))?.[1];return n||(new RegExp(`^\\s*${i}(?:\\.workspace\\s*=\\s*true|\\s*=\\s*\\{[^}]*\\bworkspace\\s*=\\s*true[^}]*\\})`,"m").test(o)?s:void 0)}function Bo(e){let t=pe(e).find(({name:o})=>o==="toolchain")?.body;if(!t)return {components:[],targets:[]};let s=o=>{let i=o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return t.match(new RegExp(`^\\s*${i}\\s*=\\s*["']([^"']+)["']`,"m"))?.[1]};return {channel:s("channel"),profile:s("profile"),components:Ee(t,"components").sort(),targets:Ee(t,"targets").sort()}}function Lo(e,t,s={}){let o=u.basename(e);try{if(o==="package.json"||o==="composer.json"){let c=JSON.parse(t);return {ecosystem:o==="package.json"?"npm":"composer",name:P(c.name),version:P(c.version),dependencies:[...H(c.dependencies),...H(c.devDependencies),...H(c.require),...H(c["require-dev"])].filter((r,d,a)=>a.indexOf(r)===d).sort(),metadata:o==="package.json"?{entrypoints:[P(c.main),P(c.module),P(c.types)].filter(r=>!!r),exports:C(c.exports)?Object.keys(C(c.exports)).sort():P(c.exports)?["."]:[],executables:C(c.bin)?Object.keys(C(c.bin)).sort():P(c.bin)?[P(c.name)??"default"]:[],runtimeConstraints:Object.entries(C(c.engines)??{}).map(([r,d])=>`${r}:${String(d)}`).sort()}:void 0}}if(o==="deno.json"||o==="deno.jsonc"){let c=JSON.parse(t.replace(/\/\*[\s\S]*?\*\/|^\s*\/\/.*$/gm,""));return {ecosystem:"deno",name:P(c.name),version:P(c.version),dependencies:H(c.imports)}}}catch{}let i=c=>t.match(c)?.[1]?.trim();if(o==="pyproject.toml"){let r=pe(t).filter(({name:d})=>d==="project"||d==="project.optional-dependencies"||d==="dependency-groups"||d==="tool.poetry.dependencies"||/^tool\.poetry\.group\.[^.]+\.dependencies$/.test(d)).flatMap(({name:d,body:a})=>d==="project"?Ee(a,"dependencies").map(ht):d==="project.optional-dependencies"||d==="dependency-groups"?[...a.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=\s*\[/gm)].flatMap(p=>Ee(a,p[1]??p[2])).map(ht):[...a.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=/gm)].map(p=>p[1]??p[2]).filter(p=>p!=="python"));return {ecosystem:"python",name:i(/^(?:name)\s*=\s*["']([^"']+)["']/m),version:i(/^(?:version)\s*=\s*["']([^"']+)["']/m),dependencies:r.filter(Boolean).filter((d,a,p)=>p.indexOf(d)===a).sort(),metadata:{requiresPython:i(/^requires-python\s*=\s*["']([^"']+)["']/m)??"unknown"}}}if(o==="go.mod")return {ecosystem:"go",name:i(/^module\s+(\S+)/m),dependencies:[...t.matchAll(/^\s*([A-Za-z0-9_.~/-]+)\s+v\d+/gm)].map(c=>c[1]).sort(),metadata:{goVersion:i(/^go\s+(\S+)/m)??"unknown"}};if(o==="Cargo.toml"){let c=pe(t).filter(({name:r})=>/(?:^|\.)(?:dev-|build-)?dependencies$/.test(r)).map(({body:r})=>r).join(`
6
+ `);return {ecosystem:"cargo",name:Pe(t,"name",void 0),version:Pe(t,"version",s.version),dependencies:[...c.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=/gm)].map(r=>r[1]??r[2]).map(He).filter((r,d,a)=>a.indexOf(r)===d).sort(),metadata:{edition:Pe(t,"edition",s.edition)??"unknown",rustVersion:Pe(t,"rust-version",s.rustVersion)??"unknown",features:pe(t).find(({name:r})=>r==="features")?.body.match(/^\s*([A-Za-z0-9_.-]+)\s*=/gm)?.map(r=>r.split("=",1)[0].trim()).sort()??[]}}}if(o==="pom.xml"){let c=[...t.matchAll(/<dependency>([\s\S]*?)<\/dependency>/g)].map(r=>{let d=r[1].match(/<groupId>([^<]+)<\/groupId>/)?.[1]?.trim(),a=r[1].match(/<artifactId>([^<]+)<\/artifactId>/)?.[1]?.trim();return d&&a?`${d}:${a}`:a}).filter(r=>!!r);return {ecosystem:"maven",name:i(/<artifactId>([^<]+)<\/artifactId>/),version:i(/<version>([^<]+)<\/version>/),dependencies:c.filter((r,d,a)=>a.indexOf(r)===d).sort(),metadata:{groupId:i(/<groupId>([^<]+)<\/groupId>/)??"unknown",packaging:i(/<packaging>([^<]+)<\/packaging>/)??"jar"}}}if(/\.(?:cs|fs|vb)proj$/i.test(o))return {ecosystem:"nuget",name:i(/<AssemblyName>([^<]+)<\/AssemblyName>/)??o.replace(/\.[^.]+$/,""),version:i(/<Version>([^<]+)<\/Version>/),dependencies:[...t.matchAll(/<PackageReference\s+Include=["']([^"']+)["']/g)].map(c=>c[1]).sort(),metadata:{targetFrameworks:(i(/<TargetFrameworks?>([^<]+)<\/TargetFrameworks?>/)??"unknown").split(";"),rootNamespace:i(/<RootNamespace>([^<]+)<\/RootNamespace>/)??"unknown"}};let n={"requirements.txt":"python",Pipfile:"python","build.gradle":"gradle","build.gradle.kts":"gradle",Gemfile:"ruby","mix.exs":"elixir","pubspec.yaml":"dart","Package.swift":"swift","CMakeLists.txt":"cmake","deno.json":"deno","deno.jsonc":"deno","project.clj":"clojure","deps.edn":"clojure","build.sbt":"scala",BUILD:"bazel","BUILD.bazel":"bazel","WORKSPACE.bazel":"bazel"},l=o==="requirements.txt"?t.split(/\r?\n/).map(c=>c.trim().match(/^([A-Za-z0-9_.-]+)/)?.[1]):o.startsWith("build.gradle")?[...t.matchAll(/(?:implementation|api|compileOnly|runtimeOnly|testImplementation)\s*\(?["']([^:"']+):([^:"']+)/g)].map(c=>`${c[1]}:${c[2]}`):o==="Gemfile"?[...t.matchAll(/^\s*gem\s+["']([^"']+)["']/gm)].map(c=>c[1]):o==="mix.exs"?[...t.matchAll(/\{:\s*([A-Za-z0-9_]+)\s*,/g)].map(c=>c[1]):o==="pubspec.yaml"?[...t.matchAll(/^\s{2}([A-Za-z0-9_]+):\s+/gm)].map(c=>c[1]):o==="Package.swift"?[...t.matchAll(/\.package\s*\(\s*url:\s*["']([^"']+)["']/g)].map(c=>c[1]):o==="CMakeLists.txt"?[...t.matchAll(/find_package\s*\(\s*([A-Za-z0-9_.+-]+)/gi)].map(c=>c[1]):o==="project.clj"||o==="deps.edn"?[...t.matchAll(/\[?([A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+)\s+/g)].map(c=>c[1]):o==="build.sbt"?[...t.matchAll(/["']([^"']+)["']\s*%%?\s*["']([^"']+)["']/g)].map(c=>`${c[1]}:${c[2]}`):[];return {ecosystem:n[o]??"unknown",dependencies:l.filter(c=>!!c).filter((c,r,d)=>d.indexOf(c)===r).sort()}}function Wo(e){let t=new Set,s=o=>{let i=o.replace(/\/\/.*$/u,"").trim().replace(/^["']|["']$/gu,"").replace(/\\/gu,"/");i&&i!=="("&&i!==")"&&t.add(i);};for(let o of e.matchAll(/^\s*use\s*\(([\s\S]*?)^\s*\)/gmu))for(let i of (o[1]??"").split(/\r?\n/u))s(i);for(let o of e.matchAll(/^\s*use\s+([^\s(][^\r\n]*)$/gmu))s(o[1]??"");return [...t].sort((o,i)=>o.localeCompare(i))}function vt(e,t){let s=e==="cargo"?He(t):t;return e==="cargo"?s.toLowerCase().replace(/[-_]/g,""):s.toLowerCase()}function xo(e,t){let s=[...e.entities.values()].filter(i=>i.kind==="package"&&i.projectId===t),o=new Map;for(let i of s){let n=String(i.attributes.ecosystem??"unknown");for(let l of new Set([i.label,...i.identity.aliases])){let c=`${n}\0${vt(n,l)}`,r=o.get(c)??[];r.push(i),o.set(c,r);}}for(let i of s){let n=String(i.attributes.ecosystem??"unknown"),l=Array.isArray(i.attributes.dependencies)?i.attributes.dependencies.filter(c=>typeof c=="string"):[];for(let c of l){let r=`${n}\0${vt(n,c)}`,d=(o.get(r)??[]).filter(f=>f.id!==i.id);if(d.length!==1)continue;let a=d[0];e.addRelation({from:i.id,to:a.id,kind:"depends-on",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:i.proofIds});let p=R("module",`dependency:${n}:${He(c)}`);e.relations.delete(R("relation",`${i.id}\0depends-on\0${p}`));}}for(let i of [...e.entities.values()]){if(i.kind!=="module"||i.projectId)continue;[...e.relations.values()].some(l=>l.from===i.id||l.to===i.id)||e.entities.delete(i.id);}}var zo={id:"workspace-foundation",version:"1.0.0",scanTier:"complete-inventory",async run(e){let{state:t$1}=e,s=await t$1.addProof({provider:this.id,artifact:t.workspaceContract,absolutePath:u.join(e.workspacePath,".workspai","workspace.contract.json"),trust:"authoritative",derivation:"authored",detail:"Workspace identity and project registry boundary"}),o=t$1.addEntity({kind:"workspace",key:`workspace:${t$1.workspaceName}`,label:t$1.workspaceName,aliases:[t$1.workspaceName],proofIds:[s]});for(let i of e.projects){let n=e.filesByProject.get(i.id)??[],l=n.find(b=>/[\\/]\.(?:workspai|rapidkit)[\\/](?:project|context)\.json$/.test(b)),c=n.find(b=>Le.has(u.basename(b))),r=l??c,d=await t$1.addProof({provider:this.id,artifact:r?t$1.artifactPath(r,i):me(u.posix.join(i.artifactPrefix,".workspai/project.json")),...r?{absolutePath:r}:{},trust:l?"authoritative":"observed",derivation:l?"authored":"inferred",detail:`Project ${i.id}`}),a=t$1.addEntity({kind:"project",key:`project:${i.id}`,label:i.id,projectId:i.id,aliases:[i.id,i.path],attributes:jt(i),proofIds:[d]});t$1.addRelation({from:o,to:a,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[d]});let p=new Set,f=[],v=n.find(b=>u.resolve(b)===u.resolve(i.root,"go.work")),m;if(v)try{let b=await _.readFile(v,"utf8"),k=Wo(b),S=t$1.artifactPath(v,i),j=await t$1.addProof({provider:this.id,artifact:S,absolutePath:v,pointer:"/use",trust:"authoritative",derivation:"authored",confidence:"high",detail:`Go workspace with ${k.length} member(s)`}),w=t$1.addEntity({kind:"module",key:`go-workspace:${i.id}:${S}`,label:`${i.id} Go workspace`,projectId:i.id,aliases:["go.work"],attributes:{ecosystem:"go",manifest:S,members:k},proofIds:[j]});t$1.addRelation({from:a,to:w,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[j]}),m={entityId:w,members:k,proofId:j};}catch{}let h={},y=n.find(b=>u.resolve(b)===u.resolve(i.root,"Cargo.toml"));if(y)try{h=Oo(await _.readFile(y,"utf8"));}catch{}for(let b of n){let k=u.basename(b);if(/^(?:\.env\.example|\.env\.sample|\.env\.template)$/i.test(k))try{let j=await _.readFile(b,"utf8");for(let w of j.split(/\r?\n/)){let A=w.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=/)?.[1];A&&p.add(A);}}catch{}let S=Ge(i.root,b);if(S&&f.push(b),!(S||De(i.root,b))&&!(!Le.has(k)&&!/\.(?:cs|fs|vb)proj$/i.test(k)))try{let j=await _.readFile(b,"utf8"),w=Lo(b,j,h),A=t$1.artifactPath(b,i),I=await t$1.addProof({provider:this.id,artifact:A,absolutePath:b,pointer:"/",confidence:w.name?"high":"medium",detail:`${w.ecosystem} manifest`}),E=t$1.addEntity({kind:"package",key:`package:${i.id}:${w.ecosystem}:${w.name??"anonymous"}:${A}`,label:w.name??`${i.id}/${D(u.relative(i.root,b))}`,projectId:i.id,aliases:[k,...w.name?[w.name]:[]],attributes:{ecosystem:w.ecosystem,version:w.version,manifest:A,dependencies:w.dependencies,...w.metadata??{}},proofIds:[I]});t$1.addRelation({from:a,to:E,kind:"contains",proofIds:[I]});for(let B of w.dependencies.slice(0,500)){let T=t$1.addEntity({kind:"module",key:`dependency:${w.ecosystem}:${B}`,label:B,aliases:[B],attributes:{ecosystem:w.ecosystem,external:true},proofIds:[I]});t$1.addRelation({from:E,to:T,kind:"depends-on",trust:"authoritative",derivation:"authored",proofIds:[I]});}}catch{}}if(m){let b=[...t$1.entities.values()].filter(k=>k.kind==="package"&&k.projectId===i.id);for(let k of m.members){let S=t$1.artifactPath(u.join(i.root,k,"go.mod"),i),j=b.find(w=>w.attributes.manifest===S);j&&t$1.addRelation({from:m.entityId,to:j.id,kind:"contains",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:[...new Set([m.proofId,...j.proofIds])]});}}if(xo(t$1,i.id),p.size>0){let b=n.find(k=>/^\.env\.(?:example|sample|template)$/i.test(u.basename(k)));if(b){let k=await t$1.addProof({provider:this.id,artifact:t$1.artifactPath(b,i),absolutePath:b,detail:"Public environment template keys only; values are intentionally excluded"}),S=t$1.addEntity({kind:"environment",key:`environment:${i.id}:template`,label:`${i.id} environment contract`,projectId:i.id,attributes:{keys:[...p].sort(),valuesEmitted:false},proofIds:[k]});t$1.addRelation({from:a,to:S,kind:"configured-by",proofIds:[k]});}}if(f.length>0){let b=await t$1.addProof({provider:this.id,artifact:t$1.artifactPath(f[0],i),absolutePath:f[0],detail:`${f.length} test file(s) discovered`}),k=t$1.addEntity({kind:"test-suite",key:`tests:${i.id}`,label:`${i.id} tests`,projectId:i.id,attributes:{fileCount:f.length},proofIds:[b]});t$1.addRelation({from:k,to:a,kind:"tests",proofIds:[b]});let S=new Map;for(let j of f){if(!te.has(u.extname(j).toLowerCase()))continue;let w=J(j,i.runtime),A=S.get(w)??[];A.push(j),S.set(w,A);}for(let[j,w]of [...S].sort(([A],[I])=>A.localeCompare(I))){let A=await t$1.addProof({provider:this.id,artifact:t$1.artifactPath(w[0],i),absolutePath:w[0],detail:`${w.length} ${j} test source file(s) discovered`}),I=t$1.addEntity({kind:"test-suite",key:`tests:${i.id}:${j}`,label:`${i.id} ${j} tests`,projectId:i.id,attributes:{fileCount:w.length,language:j},proofIds:[A]});t$1.addRelation({from:I,to:a,kind:"tests",proofIds:[A]});}}}}};function Be(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function yt(e){if(Array.isArray(e))return e.length;let t=C(e);return t?Object.keys(t).length:0}var No={id:"vscode-extension-manifest",version:"1.2.0",scanTier:"complete-inventory",async applicable(e){for(let t of e.projects){let s=(e.filesByProject.get(t.id)??[]).filter(o=>u.basename(o).toLowerCase()==="package.json");for(let o of s)try{let i=C(await _.readJson(o));if(P(C(i?.engines)?.vscode)||C(i?.contributes))return true}catch{}}return false},async run(e){for(let t of e.projects){let s=(e.filesByProject.get(t.id)??[]).filter(o=>u.basename(o).toLowerCase()==="package.json").sort((o,i)=>o.localeCompare(i));for(let o of s){let i=null;try{i=C(await _.readJson(o));}catch{continue}let n=C(i?.contributes),l=P(C(i?.engines)?.vscode);if(!l&&!n)continue;let c=u.dirname(o),r=u.resolve(c)===u.resolve(t.root),d=u.relative(t.root,c).split(u.sep).join("/"),a=P(i?.name)??(d&&d!=="."?d:t.id),p=e.state.artifactPath(o,t),f=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:"/",trust:"authoritative",derivation:"authored",confidence:"high",detail:`VS Code extension manifest for ${a}`}),v=e.state.addEntity({kind:"project",key:`project:${t.id}`,label:t.id,projectId:t.id}),m=r?e.state.addEntity({kind:"project",key:`project:${t.id}`,label:t.id,projectId:t.id,attributes:{vscodeExtension:true,vscodeEngine:l,extensionEntry:P(i?.main)??P(i?.browser),extensionKind:H(i?.extensionKind),activationEvents:H(i?.activationEvents),contributionCounts:Object.entries(n??{}).map(([E,B])=>`${E}:${yt(B)}`).sort()},proofIds:[f]}):e.state.addEntity({kind:"package",key:`vscode-extension:${t.id}:${d}`,label:a,projectId:t.id,attributes:{surface:"vscode-extension",extensionPath:d,manifest:p,vscodeEngine:l,extensionEntry:P(i?.main)??P(i?.browser),extensionKind:H(i?.extensionKind),activationEvents:H(i?.activationEvents),contributionCounts:Object.entries(n??{}).map(([E,B])=>`${E}:${yt(B)}`).sort()},proofIds:[f]});r||e.state.addRelation({from:v,to:m,kind:"contains",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:[f]});let h=Array.isArray(n?.commands)?n.commands:[],y=C(n?.menus),b=Object.values(y??{}).flatMap(E=>Array.isArray(E)?E:[]),k=Array.isArray(n?.keybindings)?n.keybindings:[];for(let[E,B]of h.entries()){let T=C(B),L=P(T?.command);if(!L)continue;let M=`/contributes/commands/${E}`,x=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:M,trust:"authoritative",derivation:"authored",confidence:"high",detail:`VS Code command ${L}`}),q=b.filter(N=>P(C(N)?.command)===L).length,K=k.filter(N=>P(C(N)?.command)===L).length,U=e.state.addEntity({kind:"api",key:`vscode-command:${t.id}:${L}`,label:L,projectId:t.id,aliases:[P(T?.title),P(T?.shortTitle)].filter(N=>!!N),attributes:{surface:"vscode-command",runtimeRegistrationRequired:false,title:P(T?.title),shortTitle:P(T?.shortTitle),category:P(T?.category),enablement:P(T?.enablement),icon:P(T?.icon),menuCount:q,keybindingCount:K,manifest:p,pointer:M},proofIds:[x]});e.state.addRelation({from:m,to:U,kind:"exposes",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:[x]});}let S=C(n?.viewsContainers),j=new Map;for(let[E,B]of Object.entries(S??{}))if(Array.isArray(B))for(let[T,L]of B.entries()){let M=C(L),x=P(M?.id);if(!x)continue;let q=`/contributes/viewsContainers/${Be(E)}/${T}`,K=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:q,trust:"authoritative",derivation:"authored",detail:`VS Code view container ${x}`}),U=e.state.addEntity({kind:"service",key:`vscode-view-container:${t.id}:${x}`,label:x,projectId:t.id,aliases:[P(M?.title)].filter(N=>!!N),attributes:{surface:"vscode-view-container",title:P(M?.title),location:E,icon:P(M?.icon),manifest:p,pointer:q},proofIds:[K]});j.set(x,U),e.state.addRelation({from:m,to:U,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[K]});}let w=C(n?.views);for(let[E,B]of Object.entries(w??{}))if(Array.isArray(B))for(let[T,L]of B.entries()){let M=C(L),x=P(M?.id);if(!x)continue;let q=`/contributes/views/${Be(E)}/${T}`,K=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:q,trust:"authoritative",derivation:"authored",detail:`VS Code view ${x}`}),U=e.state.addEntity({kind:"service",key:`vscode-view:${t.id}:${x}`,label:x,projectId:t.id,aliases:[P(M?.name),P(M?.contextualTitle)].filter(N=>!!N),attributes:{surface:M?.type==="webview"?"vscode-webview":"vscode-view",name:P(M?.name),contextualTitle:P(M?.contextualTitle),containerId:E,viewType:P(M?.type)??"tree",manifest:p,pointer:q},proofIds:[K]});e.state.addRelation({from:j.get(E)??m,to:U,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[K]});}let A=Array.isArray(n?.configuration)?n.configuration:n?.configuration?[n.configuration]:[];for(let[E,B]of A.entries()){let T=C(B),L=C(T?.properties);for(let[M,x]of Object.entries(L??{})){let q=C(x),U=`${Array.isArray(n?.configuration)?`/contributes/configuration/${E}`:"/contributes/configuration"}/properties/${Be(M)}`,N=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:U,trust:"authoritative",derivation:"authored",detail:`VS Code configuration ${M}`}),fe=e.state.addEntity({kind:"schema",key:`vscode-configuration:${t.id}:${M}`,label:M,projectId:t.id,attributes:{surface:"vscode-configuration",title:P(T?.title),type:P(q?.type),scope:P(q?.scope),description:P(q?.description)??P(q?.markdownDescription),manifest:p,pointer:U},proofIds:[N]});e.state.addRelation({from:m,to:fe,kind:"configured-by",trust:"authoritative",derivation:"authored",proofIds:[N]});}}let I=Array.isArray(n?.chatParticipants)?n.chatParticipants:[];for(let[E,B]of I.entries()){let T=C(B),L=P(T?.id);if(!L)continue;let M=`/contributes/chatParticipants/${E}`,x=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:M,trust:"authoritative",derivation:"authored",detail:`VS Code chat participant ${L}`}),q=e.state.addEntity({kind:"api",key:`vscode-chat-participant:${t.id}:${L}`,label:L,projectId:t.id,aliases:[P(T?.name),P(T?.fullName)].filter(K=>!!K),attributes:{surface:"vscode-chat-participant",runtimeRegistrationRequired:false,name:P(T?.name),fullName:P(T?.fullName),description:P(T?.description),manifest:p,pointer:M},proofIds:[x]});e.state.addRelation({from:m,to:q,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[x]});}}}}};function bt(e,t){let s=[],o=false;for(let i of e.split(/\r?\n/)){let n=i.match(/^\s*\[([^\]]+)\]\s*(?:#.*)?$/)?.[1]?.trim();if(n){o=n===t;continue}if(!o||/^\s*(?:#|$)/.test(i))continue;let l=i.match(/^\s*(?:"([^"]+)"|'([^']+)'|([A-Za-z0-9_.-]+))\s*=\s*["']([^"']+)["']/),c=l?.[1]??l?.[2]??l?.[3],r=l?.[4];c&&r&&s.push([c,r]);}return s}var Ko={id:"python-project-manifest",version:"1.1.0",scanTier:"complete-inventory",async applicable(e){for(let t of e.projects){let s=(e.filesByProject.get(t.id)??[]).find(o=>u.dirname(o)===t.root&&u.basename(o).toLowerCase()==="pyproject.toml");if(s)try{if(bt(await _.readFile(s,"utf8"),"project.scripts").length>0)return true}catch{}}return false},async run(e){for(let t of e.projects){let s=(e.filesByProject.get(t.id)??[]).find(r=>u.dirname(r)===t.root&&u.basename(r).toLowerCase()==="pyproject.toml");if(!s)continue;let o=await _.readFile(s,"utf8"),i=bt(o,"project.scripts"),n=e.state.artifactPath(s,t),l=await e.state.addProof({provider:this.id,artifact:n,absolutePath:s,pointer:"/project",trust:"authoritative",derivation:"authored",detail:"Python project manifest"}),c=e.state.addEntity({kind:"project",key:`project:${t.id}`,label:t.id,projectId:t.id,attributes:{pythonProject:true,requiresPython:o.match(/^requires-python\s*=\s*["']([^"']+)["']/m)?.[1],buildBackend:o.match(/^build-backend\s*=\s*["']([^"']+)["']/m)?.[1],consoleScriptCount:i.length},proofIds:[l]});for(let[r,d]of i){let a=`/project/scripts/${r}`,p=await e.state.addProof({provider:this.id,artifact:n,absolutePath:s,pointer:a,trust:"authoritative",derivation:"authored",detail:`Python console script ${r}`}),f=e.state.addEntity({kind:"api",key:`python-console-script:${t.id}:${r}`,label:r,projectId:t.id,aliases:[d],attributes:{surface:"python-console-script",runtimeRegistrationRequired:false,entrypoint:d,manifest:n,pointer:a},proofIds:[p]});e.state.addRelation({from:c,to:f,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[p]});}}}},Go={id:"source-language-inventory",version:"1.2.0",scanTier:"complete-inventory",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(s=>nt.has(u.extname(s).toLowerCase())))},async run(e){for(let t of e.projects){let s=e.filesByProject.get(t.id)??[],o=e.inventoryByProject.get(t.id),i=(e.filesByProject.get(t.id)??[]).find(a=>/^rust-toolchain(?:\.toml)?$/i.test(u.basename(a))),n,l;if(i)try{n=Bo(await _.readFile(i,"utf8")),l=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(i,t),absolutePath:i,pointer:"/toolchain",derivation:"authored",trust:"authoritative",confidence:"high",detail:"Rust toolchain contract"});}catch{}let c=s.filter(a=>nt.has(u.extname(a).toLowerCase())),r=new Map;for(let a of c){let p=J(a,t.runtime),f=r.get(p)??{files:[],production:[],tests:[],examples:[],generated:[],extensions:new Set};f.files.push(a),f.extensions.add(u.extname(a).toLowerCase()),he(t.root,a)&&f.generated.push(a),Ge(t.root,a)?f.tests.push(a):De(t.root,a)?f.examples.push(a):f.production.push(a),r.set(p,f);}let d=R("project",`project:${t.id}`);for(let[a,p]of [...r].sort(([f],[v])=>f.localeCompare(v))){let f=[p.production[0],p.tests[0],p.examples[0],p.generated[0],p.files[0]].filter((b,k,S)=>!!b&&S.indexOf(b)===k),v=await Promise.all(f.map(b=>e.state.addProof({provider:this.id,artifact:e.state.artifactPath(b,t),absolutePath:b,derivation:"extracted",trust:"observed",confidence:"high",detail:`${a} source-language inventory evidence`}))),m=[...p.production.length>0?["production"]:[],...p.tests.length>0?["test"]:[],...p.examples.length>0?["example"]:[],...p.generated.length>0?["generated"]:[]],h=a==="rust"&&l?[...v,l]:v,y=e.state.addEntity({kind:"language",key:`language:${t.id}:${a}`,label:`${t.id} programming language: ${a}`,projectId:t.id,aliases:[a,`${a} source`,`${a} programming language`,"programming languages actually used"],attributes:{language:a,usage:"source-build-test",roles:m,fileCount:p.files.length,productionFileCount:p.production.length,testFileCount:p.tests.length,exampleFileCount:p.examples.length,generatedFileCount:p.generated.length,extensions:[...p.extensions].sort(),inventoryTruncated:o?.truncated??false,...a==="rust"&&n?{toolchainChannel:n.channel,toolchainProfile:n.profile,toolchainComponents:n.components,toolchainTargets:n.targets}:{}},proofIds:h});e.state.addRelation({from:d,to:y,kind:"uses-language",derivation:"extracted",trust:"observed",confidence:o?.truncated?"medium":"high",proofIds:h});}o?.truncated&&e.state.diagnostics.push({code:"graph.provider.source_language_inventory.limit_reached",severity:"warning",message:`Language inventory for ${t.id} reached the ${o.fileLimit}-file emergency bound. Counts are lower bounds.`,recommendation:"Increase inventoryFileLimitPerProject or split the repository into explicit project boundaries before treating language counts as complete."});}}},Do={id:"source-structure",version:"1.2.1",scanTier:"adaptive-deep",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(s=>te.has(u.extname(s).toLowerCase())&&!ee(t.root,s)))},async run(e){for(let t of e.projects){let s=(e.deepFilesByProject.get(t.id)??[]).filter(f=>!ee(t.root,f)),o=e.filesByProject.get(t.id)??s,i=e.scanBudgetsByProject.get(t.id)?.sourceExtractionFileBudget??2e3,n=Math.min(1e5,Math.max(1e4,i*10)),l=o.filter(f=>te.has(u.extname(f).toLowerCase())&&!ee(t.root,f)),c=Xt(l,i,t.root),r=new Set(o.filter(f=>!ee(t.root,f)).map(f=>u.resolve(f))),d=new Map;await Promise.all(s.map(async f=>{try{let v=await _.stat(f);if(v.isFile()&&v.size<=2*1024*1024){let m=u.resolve(f);r.add(m),d.set(m,v.size);}}catch{}}));let a=0,p=0;for(let f of c){let v;try{if((await _.stat(f)).size>2*1024*1024)continue;v=await _.readFile(f,"utf8");}catch{continue}let m=Ft(f,v),h=he(t.root,f)||Tt(v)!==null,y=e.state.artifactPath(f,t),b=await e.state.addProof({provider:this.id,artifact:y,absolutePath:f,derivation:"extracted",trust:"observed",confidence:"high",detail:`${J(f,t.runtime)} source file`}),k=e.state.addEntity({kind:"file",key:`file:${t.id}:${y}`,label:y,projectId:t.id,aliases:[u.basename(f)],attributes:{artifact:y,language:J(f,t.runtime),bytes:Buffer.byteLength(v),...h?{generated:true}:{}},proofIds:[b]});e.state.addRelation({from:R("project",`project:${t.id}`),to:k,kind:"contains",proofIds:[b]});let S=Oe(m,mo(f),250);for(let w of S){let A=await e.state.addProof({provider:this.id,artifact:y,absolutePath:f,line:w.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${w.detail}: ${w.name}`}),I=ho(f,w.name,r,t.root,w.detail);if(I){let E=e.state.artifactPath(I,t),B=R("file",`file:${t.id}:${E}`);if(!e.state.entities.has(B)){let T=await _.stat(I).catch(()=>null),L=await e.state.addProof({provider:this.id,artifact:E,...T?.isFile()&&T.size<=2*1024*1024?{absolutePath:I}:{},derivation:"extracted",trust:"observed",confidence:"high",detail:"Locally imported artifact resolved from the project inventory"}),M=e.state.addEntity({kind:"file",key:`file:${t.id}:${E}`,label:E,projectId:t.id,aliases:[u.basename(I)],attributes:{artifact:E,language:J(I,t.runtime),bytes:d.get(u.resolve(I))??(T?.isFile()?T.size:void 0)},proofIds:[L]});e.state.addRelation({from:R("project",`project:${t.id}`),to:M,kind:"contains",proofIds:[L]});}e.state.addRelation({from:k,to:B,kind:"imports",confidence:"high",proofIds:[A]});}else {let E=w.name.startsWith(".");E&&(p+=1);let B=J(f,t.runtime),T=!E&&(B==="javascript"||B==="typescript")?w.name.startsWith("@")?w.name.split("/").slice(0,2).join("/"):w.name.split("/")[0]:null,L=T?R("module",`dependency:npm:${T}`):null,M=L?e.state.entities.get(L):void 0,x=M?e.state.addEntity({kind:"module",key:M.identity.key,label:M.label,aliases:[...M.identity.aliases,w.name],attributes:M.attributes,proofIds:[...M.proofIds,A]}):e.state.addEntity({kind:"module",key:`module:${t.id}:${w.name}`,label:w.name,projectId:t.id,aliases:[w.name],attributes:{specifier:w.name,resolution:E?"unresolved-local":"external"},proofIds:[A]});e.state.addRelation({from:k,to:x,kind:"imports",confidence:E?"low":"medium",proofIds:[A]});}}if(a<n){let w=Oe(m,oo,Math.min(100,n-a));a+=w.length;for(let A of w){let I=await e.state.addProof({provider:this.id,artifact:y,absolutePath:f,line:A.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${A.detail}: ${A.name}`}),E=e.state.addEntity({kind:"symbol",key:`symbol:${t.id}:${y}:${A.detail}:${A.name}`,label:A.name,projectId:t.id,attributes:{symbolKind:A.detail,language:J(f,t.runtime),...h?{generated:true}:{}},proofIds:[I]});e.state.addRelation({from:k,to:E,kind:"defines",confidence:"medium",proofIds:[I]});}}let j=t.framework!=="vscode-extension"&&t.kind!=="extension";for(let w of j?Oe(m,$o(f),100):[]){let A=v.split(/\r?\n/)[w.line-1]??"";if(w.detail!=="swagger route"&&vo(f,A))continue;let I=jo(A,w.detail),E=await e.state.addProof({provider:this.id,artifact:y,absolutePath:f,line:w.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${I} ${w.name}`}),B=e.state.addEntity({kind:"endpoint",key:`source-endpoint:${t.id}:${y}:${I}:${w.name}`,label:`${I} ${w.name||"/"}`,projectId:t.id,attributes:{method:I,path:w.name||"/",source:y},proofIds:[E]});e.state.addRelation({from:k,to:B,kind:"defines",confidence:"medium",proofIds:[E]});}}c.length<l.length&&e.state.diagnostics.push({code:"graph.provider.source_structure.limit_reached",severity:"info",message:`Source extraction for ${t.id} sampled ${c.length} file(s) from ${l.length} complete-inventory source candidate(s).`,recommendation:"Use bounded graph search, evidence, and path queries for proof-backed retrieval; do not treat the sampled symbol inventory as exhaustive."}),a>=n&&e.state.diagnostics.push({code:"graph.provider.source_structure.symbol_limit_reached",severity:"info",message:`Symbol extraction for ${t.id} reached its adaptive ${n}-symbol budget across ${c.length} selected source file(s).`,recommendation:"Increase graphSourceBudget when a more exhaustive symbol inventory is worth the additional graph size and extraction cost."}),p>0&&e.state.diagnostics.push({code:"graph.provider.source_structure.unresolved_local_imports",severity:"warning",message:`${p} local import(s) in ${t.id} could not be resolved to an indexed source file.`,recommendation:"Check path aliases, generated sources, extension mapping, or provider limits before treating the import graph as complete."});}}},qo={id:"source-symbol-binding",version:"1.0.0",scanTier:"derived",applicable(e){return [...e.state.entities.values()].some(t=>t.kind==="symbol")},async run(e){let t=0;for(let s of e.projects){let o=e.scanBudgetsByProject.get(s.id)?.sourceExtractionFileBudget??2e3,i=Math.min(1e5,Math.max(1e4,o*10)),n=0,l=[...e.state.entities.values()].filter(p=>p.projectId===s.id),c=l.filter(p=>p.kind==="file"),r=new Map(l.filter(p=>p.kind==="symbol").map(p=>[p.id,p])),d=new Map,a=new Map;for(let p of e.state.relations.values()){if(p.kind==="defines"&&r.has(p.to)){let f=d.get(p.from)??[];f.push(r.get(p.to)),d.set(p.from,f);}if(p.kind==="imports"){let f=e.state.entities.get(p.to);if(f?.kind!=="file"||f.projectId!==s.id)continue;let v=a.get(p.from)??new Set;v.add(p.to),a.set(p.from,v);}}for(let p of c){if(n>=i)break;let f=P(p.attributes.artifact);if(!f)continue;let v=f.startsWith(`${s.artifactPrefix}/`)?f.slice(s.artifactPrefix.length+1):f,m=u.resolve(s.root,...v.split("/")),h;try{let k=await _.stat(m);if(!k.isFile()||k.size>2*1024*1024)continue;h=Ft(m,await _.readFile(m,"utf8"));}catch{continue}let y=[...d.get(p.id)??[],...[...a.get(p.id)??[]].flatMap(k=>d.get(k)??[])],b=new Map;for(let k of y){if(k.label.length<3)continue;let S=b.get(k.label)??[];S.some(j=>j.id===k.id)||S.push(k),b.set(k.label,S);}for(let[k,S]of b){let j=k.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),w=new RegExp(`\\b${j}\\s*\\(`,"g"),A=[...h.matchAll(w)];if(A.length===0)continue;if(S.length!==1){t+=A.length;continue}let I=S[0];for(let E of A.slice(0,20)){if(n>=i)break;let B=h.slice(0,E.index??0).split(/\r?\n/).length;if(I.proofIds.some(L=>e.state.proofs.get(L)?.line===B))continue;let T=await e.state.addProof({provider:this.id,artifact:f,absolutePath:m,line:B,derivation:"extracted",trust:"observed",confidence:"medium",detail:`Unambiguous local call to ${k}`});e.state.addRelation({from:p.id,to:I.id,kind:"calls",derivation:"extracted",trust:"observed",confidence:"medium",proofIds:[T]}),n+=1;}}}n>=i&&e.state.diagnostics.push({code:"graph.provider.source_symbol_binding.limit_reached",severity:"info",message:`Source call binding for ${s.id} reached its adaptive ${i}-relation budget.`,recommendation:"Increase graphSourceBudget or use compiler/language-server semantic evidence when more exhaustive call topology is required."});}t>0&&e.state.diagnostics.push({code:"graph.provider.source_symbol_binding.ambiguous_calls",severity:"info",message:`${t} call site(s) were left unbound because more than one proven local symbol matched.`,recommendation:"Provide compiler or language-server semantic evidence when exact overload or dynamic dispatch resolution is required."});}};function Tt(e){let o=e.slice(0,12e3).match(/^[\t ]*(?:\/\/|#|\/\*+|\*|<!--|--)[\t ]*(?:code generated by|generated from:|this file is autogenerated from:|@generated by)\s*(?:(?:\/\/|#|\*|--)[\t ]*)?[`"']?([^`"'\s;*,]+)/im)?.[1]?.replace(/^\.\//,"").replace(/[.,:]+$/,"")??"";return !o||!u.posix.basename(o.replace(/\\/g,"/"))?null:o}function Zo(e,t){let s=0,o=null,i=false;for(let n=t;n<e.length;n+=1){let l=e[n];if(o){l===o&&!i&&(o=null),i=l==="\\"&&!i,l!=="\\"&&(i=false);continue}if(l==='"'){o=l;continue}if(l==="("&&(s+=1),l===")"&&(s-=1,s===0))return e.slice(t+1,n)}return null}function Ho(e){let t=[],s=/(?<![A-Za-z0-9_:])(?:deno_core::)?extension!\s*\(/g;for(let o of e.matchAll(s)){let i=(o.index??0)+o[0].lastIndexOf("("),n=Zo(e,i);if(!n)continue;let l=n.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*,/)?.[1];if(!l)continue;let c=[...new Set([...n.matchAll(/\bops\s*=\s*\[([\s\S]*?)\]/g)].flatMap(d=>[...d[1].matchAll(/\b(op_[A-Za-z0-9_]+)\b/g)].map(a=>a[1])))].sort(),r=[...new Set([...n.matchAll(/\b(?:esm|js|lazy_loaded_esm|lazy_loaded_js)\s*=\s*\[([\s\S]*?)\]/g)].flatMap(d=>[...d[1].matchAll(/["']([^"']+\.(?:[cm]?[jt]s|tsx?|jsx?))["']/g)].map(a=>a[1])))].sort();t.push({name:l,line:e.slice(0,o.index??0).split(/\r?\n/).length,operations:c,scripts:r});}return t}function kt(e,t){let s=e.indexOf(t);return s<0?void 0:e.slice(0,s).split(/\r?\n/).length}var Uo={id:"runtime-bridge-semantics",version:"1.0.0",scanTier:"adaptive-semantic",async applicable(e){for(let t of e.projects)for(let s of e.semanticFilesByProject.get(t.id)??[])if(!(u.extname(s).toLowerCase()!==".rs"||ee(t.root,s)))try{let o=await _.readFile(s,"utf8");if(/(?<![A-Za-z0-9_:])(?:deno_core::)?extension!\s*\(/.test(o))return true}catch{}return false},async run(e){for(let t of e.projects){let o=(e.semanticFilesByProject.get(t.id)??[]).filter(i=>u.extname(i).toLowerCase()===".rs"&&!ee(t.root,i));for(let i of o){let n="";try{if((await _.stat(i)).size>2*1024*1024)continue;n=await _.readFile(i,"utf8");}catch{continue}let l=Ho(n);if(l.length===0)continue;let c=e.state.artifactPath(i,t),r=await e.state.addProof({provider:this.id,artifact:c,absolutePath:i,derivation:"extracted",trust:"observed",confidence:"high",detail:"Deno Core Rust extension declaration"}),d=e.state.addEntity({kind:"file",key:`file:${t.id}:${c}`,label:c,projectId:t.id,aliases:[u.basename(i)],attributes:{artifact:c,language:"rust",runtimeBridge:"deno-core"},proofIds:[r]});e.state.addRelation({from:R("project",`project:${t.id}`),to:d,kind:"contains",proofIds:[r]});for(let a of l){let p=await e.state.addProof({provider:this.id,artifact:c,absolutePath:i,line:a.line,derivation:"extracted",trust:"observed",confidence:"high",detail:`Deno Core extension ${a.name}`}),f=e.state.addEntity({kind:"protocol",key:`runtime-bridge:${t.id}:deno-core:${c}:${a.name}`,label:`${a.name} Rust JavaScript runtime bridge`,projectId:t.id,aliases:[a.name,`${a.name} cross-language bridge`,"Rust JavaScript TypeScript bridge"],attributes:{mechanism:"deno_core::extension!",languages:["javascript","rust","typescript"]},proofIds:[p]});e.state.addRelation({from:R("project",`project:${t.id}`),to:f,kind:"contains",proofIds:[p]}),e.state.addRelation({from:d,to:f,kind:"implements-protocol",proofIds:[p]});for(let m of ["rust","javascript","typescript"]){let h=R("language",`language:${t.id}:${m}`);e.state.entities.has(h)&&e.state.addRelation({from:f,to:h,kind:"uses-language",proofIds:[p]});}let v=new Map;for(let m of a.operations){let h=kt(n,m),y=await e.state.addProof({provider:this.id,artifact:c,absolutePath:i,...h?{line:h}:{},derivation:"extracted",trust:"observed",confidence:"high",detail:`Rust op2 bridge operation ${m}`}),b=e.state.addEntity({kind:"symbol",key:`symbol:${t.id}:${c}:function:${m}`,label:m,projectId:t.id,aliases:[`rust:${m}`,`javascript:${m}`],attributes:{symbolKind:"function",language:"rust",bridgeMechanism:"op2"},proofIds:[y]});v.set(m,b),e.state.addRelation({from:d,to:b,kind:"defines",proofIds:[y]}),e.state.addRelation({from:b,to:f,kind:"implements-protocol",proofIds:[y,p]});}for(let m of a.scripts){let h=u.resolve(u.dirname(i),m);if(!await _.pathExists(h))continue;let y="";try{y=await _.readFile(h,"utf8");}catch{continue}let b=e.state.artifactPath(h,t),k=await e.state.addProof({provider:this.id,artifact:b,absolutePath:h,derivation:"extracted",trust:"observed",confidence:"high",detail:`${a.name} JavaScript/TypeScript extension source`}),S=e.state.addEntity({kind:"file",key:`file:${t.id}:${b}`,label:b,projectId:t.id,aliases:[u.basename(h)],attributes:{artifact:b,language:J(h,t.runtime),runtimeBridge:"deno-core"},proofIds:[k]});e.state.addRelation({from:d,to:S,kind:"references",confidence:"high",proofIds:[p,k]}),e.state.addRelation({from:S,to:f,kind:"implements-protocol",proofIds:[k,p]});for(let[j,w]of v){let A=kt(y,j);if(!A)continue;let I=await e.state.addProof({provider:this.id,artifact:b,absolutePath:h,line:A,derivation:"extracted",trust:"observed",confidence:"high",detail:`JavaScript/TypeScript call to Rust operation ${j}`});e.state.addRelation({from:S,to:w,kind:"calls",confidence:"high",proofIds:[I,p]});}}}}}}},Jo=/^[A-Z][A-Za-z0-9_]{3,}$/,Vo=new Set(["Client","Config","Context","Data","Error","Event","Message","Options","Request","Response","Result","Schema","Type","Value"]),Yo={id:"polyglot-semantics",version:"1.1.0",scanTier:"adaptive-deep",applicable(e){return e.projects.some(t=>new Set((t.runtimeCandidates??[]).filter(o=>o&&o!=="unknown"&&o!=="generic")).size>1||B(t.root).polyglot)},async run(e){for(let t of e.projects){let s=R("project",`project:${t.id}`),o=e.deepFilesByProject.get(t.id)??[],i=B(t.root),n=[...e.state.entities.values()].filter(r=>r.kind==="package"&&r.projectId===t.id);for(let r of i.units){let d=r.runtime,a=u.resolve(t.root,r.manifest),p=e.state.artifactPath(a,t),f=n.find(b=>b.attributes.manifest===p),v=f?.proofIds??[await e.state.addProof({provider:this.id,artifact:p,absolutePath:a,derivation:"extracted",trust:"observed",confidence:"high",detail:`${d} runtime-unit manifest`})],m=e.state.artifactPath(u.dirname(a),t),h=Object.fromEntries(r.stages.map(b=>[b.stage,b.command])),y=e.state.addEntity({kind:"runtime-unit",key:`runtime-unit:${t.id}:${d}:${p}`,label:`${d}:${m}:${u.basename(a)}`,projectId:t.id,aliases:[d,m],attributes:{runtime:d,root:m,ecosystem:r.ecosystem,role:r.role,manifest:p,stages:Object.keys(h).sort(),orchestrationMode:"native-manifest"},proofIds:v});e.state.addRelation({from:s,to:y,kind:"contains",confidence:"high",proofIds:v}),f&&e.state.addRelation({from:y,to:f.id,kind:"configured-by",confidence:"high",proofIds:v});for(let b of r.stages){let{stage:k,command:S}=b,j=e.state.addEntity({kind:"lifecycle-stage",key:`lifecycle-stage:${t.id}:${d}:${p}:${k}`,label:`${k} \xB7 ${d}:${m}:${u.basename(a)}`,projectId:t.id,aliases:[`${d}:${k}`,k],attributes:{stage:k,command:S,runtime:d,workingDirectory:m,commandConfidence:b.confidence,preflight:b.preflight},proofIds:v});e.state.addRelation({from:y,to:j,kind:"contains",confidence:"high",proofIds:v});}}for(let r of o.filter(d=>te.has(u.extname(d).toLowerCase()))){let d="";try{d=await _.readFile(r,"utf8");}catch{continue}let a=Tt(d);if(!a)continue;let p=e.state.artifactPath(r,t),f=R("file",`file:${t.id}:${p}`);if(!e.state.entities.has(f))continue;let v=await e.state.addProof({provider:this.id,artifact:p,absolutePath:r,line:1,derivation:"extracted",trust:"observed",confidence:"high",detail:`Generated from ${a}`}),m=e.state.entities.get(f);m&&e.state.addEntity({kind:"file",key:m.identity.key,label:m.label,projectId:t.id,aliases:m.identity.aliases,attributes:{...m.attributes,generated:true},proofIds:[...m.proofIds,v]});let h=[...e.state.relations.values()].filter(j=>j.kind==="defines"&&j.from===f).map(j=>e.state.entities.get(j.to)).filter(j=>j?.kind==="symbol");for(let j of h)e.state.addEntity({kind:"symbol",key:j.identity.key,label:j.label,projectId:t.id,aliases:j.identity.aliases,attributes:{...j.attributes,generated:true},proofIds:[...j.proofIds,v]});let y=a.replace(/^\.\//,"").replace(/[.,:]$/,""),k=[u.resolve(t.root,y),u.resolve(u.dirname(r),y)].find(j=>o.includes(j));if(k){let j=e.state.artifactPath(k,t),w=R("file",`file:${t.id}:${j}`);if(e.state.entities.has(w)){e.state.addRelation({from:f,to:w,kind:"generated-by",derivation:"extracted",trust:"observed",confidence:"high",proofIds:[v]});continue}}let S=e.state.addEntity({kind:"schema",key:`generation-source:${t.id}:${y}`,label:u.posix.basename(y),projectId:t.id,aliases:[y],attributes:{sourceReference:y,discoveredFromGeneratedHeader:true},proofIds:[v]});e.state.addRelation({from:f,to:S,kind:"generated-from",derivation:"extracted",trust:"observed",confidence:"medium",proofIds:[v]});}let l=[...e.state.entities.values()].filter(r=>r.projectId===t.id&&r.kind==="symbol"&&r.attributes.generated===true&&r.attributes.symbolKind==="type"&&typeof r.attributes.language=="string"&&Jo.test(r.label)&&!Vo.has(r.label)),c=new Map;for(let r of l){let d=c.get(r.label)??[];d.push(r),c.set(r.label,d);}for(let[r,d]of [...c.entries()].filter(([,a])=>new Set(a.map(p=>p.attributes.language)).size>1).sort(([a],[p])=>a.localeCompare(p)).slice(0,1e3)){let a=d.sort((h,y)=>String(h.attributes.language).localeCompare(String(y.attributes.language))||h.id.localeCompare(y.id)),p=[...new Set(a.map(h=>String(h.attributes.language)))],f=[...new Set(a.flatMap(h=>h.proofIds))],v=e.state.addEntity({kind:"protocol",key:`protocol:${t.id}:${r}`,label:r,projectId:t.id,aliases:p.map(h=>`${h}:${r}`),attributes:{languages:p,implementationCount:a.length,source:"generated-types"},proofIds:f});for(let h of a)e.state.addRelation({from:h.id,to:v,kind:"implements-protocol",derivation:"inferred",trust:"corroborated",confidence:"high",proofIds:h.proofIds});let m=a[0];for(let h of a.slice(1))e.state.addRelation({from:h.id,to:m.id,kind:"equivalent-to",derivation:"inferred",trust:"corroborated",confidence:"high",proofIds:[...m.proofIds,...h.proofIds]});}}}},Qo={id:"workspace-service-contract",version:"1.1.0",scanTier:"derived",applicable(e){return !!e.contract?.projects.some(t=>t.ports.length>0||t.contracts.owns.length>0||t.contracts.apis.length>0||t.contracts.publishes.length>0||t.contracts.consumes.length>0||t.contracts.env.length>0)},async run(e){if(!e.contract)return;let t$1=new Map;for(let s of [...e.contract.projects].sort((o,i)=>o.slug.localeCompare(i.slug))){let o=s.contracts;if(s.ports.length===0&&o.owns.length===0&&o.apis.length===0&&o.publishes.length===0&&o.consumes.length===0&&o.env.length===0)continue;let i=await e.state.addProof({provider:this.id,artifact:t.workspaceContract,absolutePath:u.join(e.workspacePath,".workspai","workspace.contract.json"),pointer:`/projects/${s.slug}/contracts`,trust:"authoritative",derivation:"authored",detail:`Service contract for ${s.slug}`}),n=R("project",`project:${s.slug}`),l=e.state.addEntity({kind:"service",key:`contract-service:${s.slug}`,label:s.slug,projectId:s.slug,attributes:{ports:s.ports.map(c=>`${c.protocol}:${c.port}`),owns:[...o.owns].sort(),environmentKeys:[...o.env].sort()},proofIds:[i]});e.state.addRelation({from:n,to:l,kind:"implements",trust:"authoritative",derivation:"authored",proofIds:[i]});for(let c of [...o.apis].sort((r,d)=>r.name.localeCompare(d.name))){let r=e.state.addEntity({kind:"api",key:`contract-api:${s.slug}:${c.name}:${c.basePath}`,label:c.name,projectId:s.slug,attributes:{basePath:c.basePath,runtimeRegistrationRequired:true},proofIds:[i]});e.state.addRelation({from:l,to:r,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[i]});}for(let c of [...o.publishes,...o.consumes].sort())t$1.has(c)||t$1.set(c,e.state.addEntity({kind:"queue",key:`event:${c}`,label:c,attributes:{protocol:"workspace-event"},proofIds:[i]}));for(let c of [...o.publishes].sort()){let r=t$1.get(c);r&&e.state.addRelation({from:l,to:r,kind:"publishes",trust:"authoritative",derivation:"authored",proofIds:[i]});}for(let c of [...o.consumes].sort()){let r=t$1.get(c);r&&e.state.addRelation({from:l,to:r,kind:"consumes",trust:"authoritative",derivation:"authored",proofIds:[i]});}}}},Xo={id:"openapi",version:"1.1.0",scanTier:"complete-inventory",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(Ie))},async run(e){for(let t of e.projects){let s=(e.filesByProject.get(t.id)??[]).filter(Ie);for(let o of s){let i;try{i=await ae(o);}catch(n){e.state.diagnostics.push({code:"graph.provider.openapi.parse_failed",severity:"warning",message:`Could not parse ${e.state.artifactPath(o,t)}: ${n instanceof Error?n.message:String(n)}`});continue}for(let n of i){if(!("openapi"in n)&&!("swagger"in n))continue;let l=C(n.info),c=P(l?.title)??`${t.id} API`,r=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(o,t),absolutePath:o,pointer:"/info",trust:"authoritative",detail:"Authored OpenAPI contract"}),d=R("project",`project:${t.id}`),a=e.state.addEntity({kind:"api",key:`api:${t.id}:${c}`,label:c,projectId:t.id,attributes:{version:P(l?.version),specification:P(n.openapi)??P(n.swagger),runtimeRegistrationRequired:true},proofIds:[r]});e.state.addRelation({from:d,to:a,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[r]});let p=C(C(n.components)?.schemas)??C(n.definitions),f=new Map;for(let m of Object.keys(p??{}).sort()){let h=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(o,t),absolutePath:o,pointer:`/components/schemas/${m}`,trust:"authoritative",detail:`OpenAPI schema ${m}`}),y=e.state.addEntity({kind:"schema",key:`schema:${t.id}:${c}:${m}`,label:m,projectId:t.id,proofIds:[h]});f.set(m,y),e.state.addRelation({from:a,to:y,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[h]});}let v=C(n.paths);for(let m of Object.keys(v??{}).sort()){let h=C(v?.[m]);for(let y of Object.keys(h??{}).filter(b=>Vt.has(b.toLowerCase())).sort()){let b=C(h?.[y]),k=`/paths/${m.replace(/~/g,"~0").replace(/\//g,"~1")}/${y}`,S=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(o,t),absolutePath:o,pointer:k,trust:"authoritative",detail:`${y.toUpperCase()} ${m}`}),j=e.state.addEntity({kind:"endpoint",key:`endpoint:${t.id}:${c}:${y.toUpperCase()}:${m}`,label:`${y.toUpperCase()} ${m}`,projectId:t.id,aliases:H(b?.tags),attributes:{method:y.toUpperCase(),path:m,operationId:P(b?.operationId),deprecated:typeof b?.deprecated=="boolean"?b.deprecated:void 0,tags:H(b?.tags)},proofIds:[S]});e.state.addRelation({from:a,to:j,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[S]});let w=JSON.stringify(b??{});for(let[A,I]of f)w.includes(`/${A}`)&&e.state.addRelation({from:j,to:I,kind:"references",trust:"authoritative",derivation:"authored",proofIds:[S]});}}}}}}},Ne=5e3;function ne(e,t){let s=D(u.relative(e,t)).toLowerCase(),o=0;return /(^|\/)(routes?|handlers?|controllers?|server|httpapi)(\/|$)/.test(s)&&(o+=100),/(?:^|\/)(?:api|routes?|handlers?|controllers?|server)(?:\.[a-z0-9]+)$/.test(s)&&(o+=80),/(^|\/)(src|app|lib)(\/|$)/.test(s)&&(o+=20),/(^|\/)(protocol|sdk|client)(\/|$)/.test(s)&&(o-=30),o}function es(e,t){for(let s of ['"',"'","`"]){let o=e.indexOf(`${s}${t}${s}`);if(o>=0)return o}return -1}var ts={id:"authored-api-implementation-binding",version:"1.0.0",scanTier:"adaptive-semantic",applicable(e){return [...e.state.entities.values()].some(t=>t.kind==="endpoint"&&typeof t.attributes.operationId=="string")},async run(e){for(let t of e.projects){let s=new Map;for(let n of e.state.entities.values()){let l=n.attributes.operationId;if(n.kind!=="endpoint"||n.projectId!==t.id||typeof l!="string"||l.trim().length===0)continue;let c=s.get(l)??[];c.push(n),s.set(l,c);}if(s.size===0)continue;let o=(e.semanticFilesByProject.get(t.id)??[]).filter(n=>te.has(u.extname(n).toLowerCase())&&!ee(t.root,n)&&!he(t.root,n)).sort((n,l)=>ne(t.root,l)-ne(t.root,n)||n.localeCompare(l)).slice(0,Ne),i=new Map;for(let n of o){let l;try{let r=await _.stat(n);if(!r.isFile()||r.size>2*1024*1024)continue;l=await _.readFile(n,"utf8");}catch{continue}let c=ne(t.root,n);if(!(c<50))for(let r of s.keys()){let d=es(l,r);if(d<0)continue;let a=i.get(r);a&&(a.score>c||a.score===c&&a.file.localeCompare(n)<=0)||i.set(r,{file:n,contents:l,offset:d,score:c});}}for(let[n,l]of i){let c=e.state.artifactPath(l.file,t),r=l.contents.slice(0,l.offset).split(/\r?\n/).length,d=await e.state.addProof({provider:this.id,artifact:c,absolutePath:l.file,line:r,derivation:"extracted",trust:"observed",confidence:"high",detail:`Production handler binds OpenAPI operation ${n}`}),a=e.state.addEntity({kind:"file",key:`file:${t.id}:${c}`,label:c,projectId:t.id,aliases:[u.basename(l.file)],attributes:{artifact:c,language:J(l.file,t.runtime),bytes:Buffer.byteLength(l.contents)},proofIds:[d]});e.state.addRelation({from:R("project",`project:${t.id}`),to:a,kind:"contains",derivation:"extracted",trust:"observed",proofIds:[d]});for(let p of s.get(n)??[])e.state.addRelation({from:a,to:p.id,kind:"implements",derivation:"extracted",trust:"corroborated",confidence:"high",proofIds:[...p.proofIds,d]});}}}},os=8,ss=/(?:^|[,{\n]\s*)["']?(?:routes?|upstreams?|virtualHosts?|pathPrefix)["']?\s*[:=]/im;function wt(e,t){let s=u.extname(e).toLowerCase();if(/\.(?:json|ya?ml|toml)$/i.test(e))return /(?:route|routing|gateway|proxy|ingress|server)/i.test(u.basename(e))?ss.exec(t)?.index??-1:-1;let o=s===".py"?[/\b(?:include_router|add_api_route|mount)\s*\(/]:[".js",".jsx",".mjs",".cjs",".ts",".tsx",".mts",".cts"].includes(s)?[/\b(?:router|app)\.(?:use|route|register)\s*\(/,/\b(?:registerRoutes?|configureRoutes?)\s*\(/i,/\b(?:routeModule|routeMatcher|routesManifest|appPathsManifest)\b/]:s===".go"?[/\.\s*InstallAPIGroups?\s*\(/,/\.\s*registerResourceHandlers\s*\(/,/\b(?:registerRoutes?|configureRoutes?)\s*\(/i]:[".java",".kt",".kts",".scala",".cs",".fs",".fsx",".vb"].includes(s)?[/\b(?:RouterFunction|RequestMappingHandlerMapping|MapControllers|MapGroup)\s*[<(]/,/\b(?:registerRoutes?|configureRoutes?)\s*\(/i,/\bregister(?:Rest)?(?:Action|Handler)\s*\(/]:s===".rb"?[/\broutes\.draw\s+do\b/,/\bmount\s+(?:[A-Z][\w:]*|["'])/,/\b(?:resources?|namespace|scope)\s+[:"']/,/\b(?:get|post|put|patch|delete|match)\s+["']/]:[/\b(?:registerRoutes?|configureRoutes?)\s*\(/i];for(let i of o){let n=i.exec(t);if(n)return n.index}return -1}var is={id:"dynamic-api-registration-binding",version:"1.1.0",scanTier:"adaptive-semantic",applicable(e){return [...e.state.entities.values()].some(t=>t.kind==="api")?e.projects.some(t=>(e.semanticFilesByProject.get(t.id)??[]).filter(s=>(te.has(u.extname(s).toLowerCase())||/\.(?:json|ya?ml|toml)$/i.test(s))&&(ne(t.root,s)>=20||/\.(?:json|ya?ml|toml)$/i.test(s))&&!ee(t.root,s)&&!he(t.root,s)&&!Ie(s)).slice(0,Ne).some(s=>{try{let o=_.statSync(s);return o.isFile()&&o.size<=2*1024*1024&&wt(s,_.readFileSync(s,"utf8"))>=0}catch{return false}})):false},async run(e){for(let t of e.projects){let s=[...e.state.entities.values()].filter(l=>l.kind==="api"&&l.projectId===t.id&&l.attributes.runtimeRegistrationRequired===true);if(s.length===0)continue;let o=(e.semanticFilesByProject.get(t.id)??[]).filter(l=>(te.has(u.extname(l).toLowerCase())||/\.(?:json|ya?ml|toml)$/i.test(l))&&!ee(t.root,l)&&!he(t.root,l)&&!Ie(l)&&(ne(t.root,l)>=20||/\.(?:json|ya?ml|toml)$/i.test(l))).sort((l,c)=>ne(t.root,c)-ne(t.root,l)||l.localeCompare(c)).slice(0,Ne),i=0,n=Math.max(1,s.length*os);for(let l of o){if(i>=n)break;let c;try{let m=await _.stat(l);if(!m.isFile()||m.size>2*1024*1024)continue;c=await _.readFile(l,"utf8");}catch{continue}let r=wt(l,c);if(r<0)continue;let d=s.length===1?s:s.filter(m=>m.label.toLowerCase().split(/[^a-z0-9]+/).filter(h=>h.length>=4).some(h=>c.toLowerCase().includes(h)));if(d.length===0)continue;let a=e.state.artifactPath(l,t),p=await e.state.addProof({provider:this.id,artifact:a,absolutePath:l,line:c.slice(0,r).split(/\r?\n/).length,derivation:"extracted",trust:"observed",confidence:"high",detail:/\.(?:json|ya?ml|toml)$/i.test(l)?"Configuration-driven API topology registration":"Runtime-generated API topology registration"}),f=e.state.addEntity({kind:"file",key:`file:${t.id}:${a}`,label:a,projectId:t.id,aliases:[u.basename(l)],attributes:{artifact:a,language:J(l,t.runtime)},proofIds:[p]}),v=e.state.addEntity({kind:"runtime-unit",key:`dynamic-api-registration:${t.id}:${a}`,label:`${u.basename(l)} API registration`,projectId:t.id,attributes:{mechanism:/\.(?:json|ya?ml|toml)$/i.test(l)?"configuration-driven-routing":"runtime-generated-routing"},proofIds:[p]});e.state.addRelation({from:R("project",`project:${t.id}`),to:v,kind:"contains",derivation:"extracted",trust:"observed",proofIds:[p]}),e.state.addRelation({from:v,to:f,kind:"configured-by",derivation:"extracted",trust:"observed",proofIds:[p]});for(let m of d)e.state.addRelation({from:v,to:m.id,kind:"implements",derivation:"extracted",trust:"corroborated",confidence:"high",proofIds:[...m.proofIds,p]});i+=1;}}}};function rs(e){let t=[],s=1;for(let r=0;r<e.length;){let d=e[r];if(d===`
7
+ `){s+=1,r+=1;continue}if(/\s|,/.test(d)){r+=1;continue}if(d==="#"){for(;r<e.length&&e[r]!==`
8
+ `;)r+=1;continue}if(e.startsWith('"""',r)){for(r+=3;r<e.length&&!e.startsWith('"""',r);)e[r]===`
9
+ `&&(s+=1),r+=1;r=Math.min(e.length,r+3);continue}if(d==='"'){r+=1;let p=false;for(;r<e.length;){let f=e[r];if(f===`
10
+ `&&(s+=1),f==='"'&&!p){r+=1;break}p=f==="\\"&&!p,f!=="\\"&&(p=false),r+=1;}continue}let a=e.slice(r).match(/^[_A-Za-z][_0-9A-Za-z]*/)?.[0];if(a){t.push({value:a,line:s}),r+=a.length;continue}t.push({value:d,line:s}),r+=1;}let o=new Set(["schema","scalar","type","interface","union","enum","input","directive"]),i=new Set(["query","mutation","subscription","fragment"]),n=[];t[0]?.value==="{"&&n.push({kind:"query",name:`anonymous-${t[0].line}`,line:t[0].line,extended:false});let l=0,c=false;for(let r=0;r<t.length;r+=1){let d=t[r];if(d.value==="}"){l=Math.max(0,l-1);continue}if(l===0&&d.value==="extend"){c=true;continue}if(l===0){let a=d.value;if(o.has(a)){let p=a==="schema"?"schema":a==="directive"?t[r+1]?.value==="@"?t[r+2]?.value:void 0:t[r+1]?.value;p&&/^[_A-Za-z][_0-9A-Za-z]*$/.test(p)&&n.push({kind:a,name:p,line:d.line,extended:c}),c=false;}else if(i.has(a)){let p=t[r+1]?.value,f=p&&/^[_A-Za-z][_0-9A-Za-z]*$/.test(p)?p:`anonymous-${d.line}`;n.push({kind:a,name:f,line:d.line,extended:false}),c=false;}else ["@","&","|"].includes(d.value)||(c=false);}d.value==="{"&&(l+=1);}return n}var ns={id:"interface-contracts",version:"1.1.0",scanTier:"complete-inventory",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(ct))},async run(e){for(let t of e.projects){let s=(e.filesByProject.get(t.id)??[]).filter(ct);for(let o of s){let i=e.state.artifactPath(o,t),n=u.extname(o).toLowerCase();if(n===".graphql"||n===".gql"){let l=await _.readFile(o,"utf8"),c=rs(l),r=c.filter(h=>["schema","scalar","type","interface","union","enum","input","directive"].includes(h.kind)),d=c.filter(h=>["query","mutation","subscription","fragment"].includes(h.kind)),a=await e.state.addProof({provider:this.id,artifact:i,absolutePath:o,trust:"authoritative",derivation:"authored",detail:r.length>0?"GraphQL schema contract":"GraphQL executable document"}),p=e.state.addEntity({kind:"file",key:`file:${t.id}:${i}`,label:i,projectId:t.id,aliases:[u.basename(o)],attributes:{artifact:i,language:"graphql",bytes:Buffer.byteLength(l),graphqlDocumentKind:r.length>0&&d.length>0?"mixed":r.length>0?"schema":"executable"},proofIds:[a]});e.state.addRelation({from:R("project",`project:${t.id}`),to:p,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[a]});let f=e.state.addEntity({kind:"protocol",key:"protocol:graphql",label:"GraphQL",aliases:["graphql"],attributes:{specification:"GraphQL"},proofIds:[a]}),m=r.some(h=>!h.extended&&(h.kind==="schema"||h.kind==="type"&&["Query","Mutation","Subscription"].includes(h.name)))?e.state.addEntity({kind:"api",key:`graphql-api:${t.id}`,label:`${t.id} GraphQL API`,projectId:t.id,attributes:{specification:"graphql",surface:"graphql-schema",runtimeRegistrationRequired:true},proofIds:[a]}):null;m&&(e.state.addRelation({from:R("project",`project:${t.id}`),to:m,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[a]}),e.state.addRelation({from:m,to:f,kind:"implements-protocol",trust:"authoritative",derivation:"authored",proofIds:[a]}));for(let h of r){let y=e.state.addEntity({kind:"schema",key:`graphql-schema:${t.id}:${i}:${h.kind}:${h.name}`,label:h.name,projectId:t.id,attributes:{specification:"graphql",definitionKind:h.kind,extended:h.extended,line:h.line},proofIds:[a]});e.state.addRelation({from:p,to:y,kind:"defines",trust:"authoritative",derivation:"authored",proofIds:[a]}),m&&e.state.addRelation({from:m,to:y,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[a]});}for(let h of d){let y=e.state.addEntity({kind:"symbol",key:`graphql-operation:${t.id}:${i}:${h.kind}:${h.name}`,label:h.name,projectId:t.id,attributes:{language:"graphql",symbolKind:h.kind==="fragment"?"fragment":"operation",operationKind:h.kind,artifact:i,line:h.line},proofIds:[a]});e.state.addRelation({from:p,to:y,kind:"defines",trust:"authoritative",derivation:"authored",proofIds:[a]}),e.state.addRelation({from:y,to:f,kind:"consumes",trust:"authoritative",derivation:"authored",proofIds:[a]});}continue}if(n===".proto"){let l=await _.readFile(o,"utf8"),c=je(l.replace(/\r\n/g,`
11
+ `).trim()),r=l.match(/^\s*package\s+([A-Za-z_][\w.]*)\s*;/m)?.[1],d=r||"unscoped",a=c.slice(0,16),p=await e.state.addProof({provider:this.id,artifact:i,absolutePath:o,trust:"authoritative",derivation:"authored",detail:"Protocol Buffers contract"});for(let f of l.matchAll(/^\s*service\s+([A-Za-z_]\w*)/gm)){let v=e.state.addEntity({kind:"api",key:`protobuf-service:${d}:${f[1]}:${a}`,label:f[1],aliases:[...r?[`${r}.${f[1]}`]:[],f[1]],attributes:{specification:"protobuf",package:r,definitionHash:c},proofIds:[p]});e.state.addRelation({from:R("project",`project:${t.id}`),to:v,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[p]});}for(let f of l.matchAll(/^\s*message\s+([A-Za-z_]\w*)/gm)){let v=e.state.addEntity({kind:"schema",key:`protobuf-message:${d}:${f[1]}:${a}`,label:f[1],aliases:[...r?[`${r}.${f[1]}`]:[],f[1]],attributes:{specification:"protobuf",package:r,definitionHash:c},proofIds:[p]});e.state.addRelation({from:R("project",`project:${t.id}`),to:v,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[p]});}continue}try{let l=(await ae(o))[0];if(!l||!("asyncapi"in l))continue;let c=await e.state.addProof({provider:this.id,artifact:i,absolutePath:o,trust:"authoritative",derivation:"authored",detail:"AsyncAPI contract"}),r=e.state.addEntity({kind:"api",key:`asyncapi:${t.id}:${i}`,label:P(C(l.info)?.title)??`${t.id} AsyncAPI`,projectId:t.id,attributes:{specification:`asyncapi ${String(l.asyncapi)}`,artifact:i,runtimeRegistrationRequired:true},proofIds:[c]});e.state.addRelation({from:R("project",`project:${t.id}`),to:r,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[c]});for(let d of Object.keys(C(l.channels)??{}).sort()){let a=e.state.addEntity({kind:"queue",key:`asyncapi-channel:${t.id}:${d}`,label:d,projectId:t.id,attributes:{protocol:"asyncapi"},proofIds:[c]});e.state.addRelation({from:r,to:a,kind:"publishes",trust:"authoritative",derivation:"authored",proofIds:[c]});}}catch{}}}}},as={id:"infrastructure-as-code",version:"1.0.0",scanTier:"complete-inventory",applicable(e){return ue(e).some(dt)},async run(e){let t=ue(e).filter(dt);for(let s of t){let o=ie(e.projects,s),i=o?.id??e.state.workspaceName,n=o?R("project",`project:${o.id}`):R("workspace",`workspace:${e.state.workspaceName}`),l=e.state.artifactPath(s,o),c=await _.readFile(s,"utf8"),r=await e.state.addProof({provider:this.id,artifact:l,absolutePath:s,trust:"authoritative",derivation:"authored",detail:"Infrastructure definition"});if(/^Dockerfile/i.test(u.basename(s))){let a=[...c.matchAll(/^\s*FROM\s+([^\s]+)(?:\s+AS\s+([^\s]+))?/gim)],p=e.state.addEntity({kind:"container",key:`dockerfile:${i}:${l}`,label:`${i} container image`,...o?{projectId:o.id}:{},attributes:{artifact:l,baseImages:a.map(f=>f[1])},proofIds:[r]});e.state.addRelation({from:n,to:p,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[r]});continue}if(/\.tf$/i.test(s)){for(let a of c.matchAll(/^\s*resource\s+["']([^"']+)["']\s+["']([^"']+)["']/gm)){let p=a[1],f=/(?:db|sql|rds|database)/i.test(p)?"database":/(?:queue|kafka|sqs|pubsub|servicebus)/i.test(p)?"queue":"deployment",v=e.state.addEntity({kind:f,key:`terraform:${i}:${p}:${a[2]}`,label:`${p}.${a[2]}`,...o?{projectId:o.id}:{},attributes:{resourceType:p,artifact:l},proofIds:[r]});e.state.addRelation({from:n,to:v,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[r]});}continue}let d=e.state.addEntity({kind:"deployment",key:`helm:${i}:${l}`,label:`${i} Helm chart`,...o?{projectId:o.id}:{},attributes:{artifact:l,format:"helm"},proofIds:[r]});e.state.addRelation({from:n,to:d,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[r]});}}};function Pt(e){let t=e.toLowerCase();return /(?:postgres|mysql|mariadb|mongo|cassandra|cockroach|mssql|oracle)/.test(t)?"database":/(?:rabbitmq|kafka|nats|pulsar|activemq|redis)/.test(t)?"queue":"container"}function cs(e){if(!e)return;let t=new Set(["version","name","services","networks","volumes","configs","secrets"]),s=new Set(["image","build","command","entrypoint","ports","links","environment","volumes","depends_on","external_links"]),o=Object.entries(e).filter(([i,n])=>{if(t.has(i.toLowerCase()))return false;let l=C(n);return l?Object.keys(l).some(c=>s.has(c)):false});return o.length>0?Object.fromEntries(o):void 0}var ds={id:"compose",version:"1.2.0",scanTier:"complete-inventory",async applicable(e){return (await ut(e)).length>0},async run(e){let t=[];for(let s of await ut(e)){let o;try{o=(await ae(s))[0];}catch(a){e.state.diagnostics.push({code:"graph.provider.compose.parse_failed",severity:"warning",message:`Could not parse ${e.state.artifactPath(s)}: ${a instanceof Error?a.message:String(a)}`});}let i=C(o?.services)??cs(o);if(!i)continue;let n=ie(e.projects,s),l=e.state.artifactPath(s,n),c=u.basename(s).toLowerCase().startsWith("docker-compose")?"docker-compose":"compose",r=`${n?.id??"workspace"}:${u.posix.dirname(l)}:${c}`,d=a=>`compose-service:${r}:${a}`;for(let a of Object.keys(i).sort()){let p=C(i[a]),f=p?.build,v=P(f)??P(C(f)?.context),m=v?ie(e.projects,u.resolve(u.dirname(s),v)):e.projects.find(I=>I.id.toLowerCase()===a.toLowerCase()||u.basename(I.path).toLowerCase()===a.toLowerCase())??n,h=await e.state.addProof({provider:this.id,artifact:l,absolutePath:s,pointer:`/services/${a}`,trust:"authoritative",derivation:"authored",detail:`Compose service ${a}`}),y=P(p?.image),b=d(a),k=e.state.entities.get(R("service",b)),S=Array.isArray(k?.attributes.ports)?k.attributes.ports.filter(I=>typeof I=="string"):[],j=Array.isArray(k?.attributes.networks)?k.attributes.networks.filter(I=>typeof I=="string"):[],w=Array.isArray(k?.attributes.environmentKeys)?k.attributes.environmentKeys.filter(I=>typeof I=="string"):[],A=e.state.addEntity({kind:"service",key:b,label:a,...m?.id||k?.projectId?{projectId:m?.id??k?.projectId}:{},attributes:{image:y??k?.attributes.image,ports:[...new Set([...S,...H(p?.ports).map(String)])].sort((I,E)=>I.localeCompare(E)),networks:[...new Set([...j,...H(p?.networks)])].sort((I,E)=>I.localeCompare(E)),environmentKeys:[...new Set([...w,...Io(p?.environment)])].sort((I,E)=>I.localeCompare(E))},proofIds:[...k?.proofIds??[],h],mergeArrayAttributes:["ports","networks","environmentKeys"]});if(m&&e.state.addRelation({from:R("project",`project:${m.id}`),to:A,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[h]}),y){let I=e.state.addEntity({kind:Pt(y),key:`image:${y}`,label:y,...m?{projectId:m.id}:{},attributes:{image:y},proofIds:[h]});e.state.addRelation({from:A,to:I,kind:Pt(y)==="container"?"runs-on":"depends-on",trust:"authoritative",derivation:"authored",proofIds:[h]});}}for(let a of Object.keys(i).sort()){let p=C(i[a]);for(let f of H(p?.depends_on)){let v=await e.state.addProof({provider:this.id,artifact:l,absolutePath:s,pointer:`/services/${a}/depends_on/${f}`,trust:"authoritative",derivation:"authored",detail:`${a} depends on ${f}`});t.push({from:R("service",d(a)),to:R("service",d(f)),proofId:v});}}}for(let s of t){if(!e.state.entities.has(s.from)||!e.state.entities.has(s.to)){e.state.proofs.delete(s.proofId);continue}e.state.addRelation({from:s.from,to:s.to,kind:"depends-on",trust:"authoritative",derivation:"authored",proofIds:[s.proofId]});}}},ls={id:"documentation",version:"1.0.0",scanTier:"complete-inventory",applicable(e){return ue(e).some(lt)},async run(e){let t=new Set,s=[e.workspaceFiles,...e.projects.map(o=>e.filesByProject.get(o.id)??[])];for(let o of s){let i=o.filter(n=>lt(n)&&!e.projects.some(l=>n.startsWith(`${l.root}${u.sep}`)&&ee(l.root,n)));for(let n of i){if(t.has(n))continue;t.add(n);let l=ie(e.projects,n),r=(await _.readFile(n,"utf8")).match(/^#\s+(.+)$/m)?.[1]?.trim()??u.basename(n),d=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(n,l),absolutePath:n,line:1,trust:"authoritative",derivation:"authored",detail:`Documentation: ${r}`}),a=e.state.addEntity({kind:"document",key:`document:${e.state.artifactPath(n,l)}`,label:r,...l?{projectId:l.id}:{},attributes:{artifact:e.state.artifactPath(n,l)},proofIds:[d]}),p=l?R("project",`project:${l.id}`):R("workspace",`workspace:${e.state.workspaceName}`);e.state.addRelation({from:a,to:p,kind:"documents",trust:"authoritative",derivation:"authored",proofIds:[d]});}}}},ps={id:"kubernetes",version:"1.0.0",scanTier:"complete-inventory",async applicable(e){return (await mt(e)).length>0},async run(e){for(let t of await mt(e)){let s=ie(e.projects,t),o=s?R("project",`project:${s.id}`):R("workspace",`workspace:${e.state.workspaceName}`),i=await ae(t);for(let n=0;n<i.length;n+=1){let l=i[n],c=P(l.kind),r=C(l.metadata),d=P(r?.name);if(!c||!d)continue;let a=P(r?.namespace)??"default",p=/Deployment|StatefulSet|DaemonSet/i.test(c)?"deployment":/Service|Ingress/i.test(c)?"service":/ConfigMap|Secret/i.test(c)?"environment":"deployment",f=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,s),absolutePath:t,pointer:`/documents/${n}`,trust:"authoritative",derivation:"authored",detail:`${c} ${a}/${d}`}),v=e.state.addEntity({kind:p,key:`kubernetes:${c}:${a}:${d}`,label:`${c}/${d}`,...s?{projectId:s.id}:{},attributes:{resourceKind:c,namespace:a,secret:c==="Secret",keys:c==="Secret"||c==="ConfigMap"?Object.keys(C(l.data)??{}).sort():void 0},proofIds:[f]});e.state.addRelation({from:o,to:v,kind:p==="deployment"?"deploys":"contains",trust:"authoritative",derivation:"authored",proofIds:[f]});let m=e.state.addEntity({kind:"environment",key:`kubernetes-namespace:${a}`,label:`Kubernetes namespace ${a}`,attributes:{namespace:a},proofIds:[f]});e.state.addRelation({from:v,to:m,kind:"runs-on",trust:"authoritative",derivation:"authored",proofIds:[f]});}}}},us={id:"ci-workflow",version:"1.0.0",scanTier:"complete-inventory",applicable(e){return gt(e).length>0},async run(e){let t=gt(e);for(let s of t){let o=ie(e.projects,s),i=e.state.artifactPath(s,o),n=u.basename(s)==="Jenkinsfile",l=D(u.relative(o?.root??e.workspacePath,s)),c=/^prow\/[^/]+\.(?:sh|py)$/i.test(l),r=u.basename(s),d=[],a=[];if(n||c){let v=await _.readFile(s,"utf8");n?d=[...v.matchAll(/\bstage\s*\(\s*["']([^"']+)["']/g)].map(m=>m[1]):(r=`${u.basename(s)} \xB7 Prow`,d=[u.basename(s).replace(/\.(?:sh|py)$/i,"")],a=["external-provider"]);}else {let v;try{v=(await ae(s))[0];}catch{continue}if(!v)continue;if(r=P(v.name)??r,/^\.gitlab-ci\./i.test(l)){let m=new Set(["stages","variables","workflow","include","default","image","services","cache","before_script","after_script"]);d=Object.keys(v).filter(h=>!h.startsWith(".")&&!m.has(h)).sort();}else d=[...new Set([...Object.keys(C(v.jobs)??{}),...Object.keys(C(C(v.workflows)?.jobs)??{}),...H(v.stages)])].sort();a=H(v.on);}d.length===0&&(d=["pipeline"]);let p=await e.state.addProof({provider:this.id,artifact:i,absolutePath:s,...!n&&!c?{pointer:"/jobs"}:{},trust:"authoritative",derivation:"authored",detail:"CI/CD workflow"}),f=e.state.addEntity({kind:"pipeline",key:`pipeline:${i}`,label:r,...o?{projectId:o.id}:{},attributes:{jobs:d,triggers:a,artifact:i},proofIds:[p]});e.state.addRelation({from:o?R("project",`project:${o.id}`):R("workspace",`workspace:${e.state.workspaceName}`),to:f,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[p]});}}},fs={id:"codeowners",version:"1.2.0",scanTier:"complete-inventory",async applicable(e){return (await ft(e)).length>0},async run(e){for(let t of await ft(e)){let s=ie(e.projects,t);if(u.basename(t)==="OWNERS"){let n=await ae(t);for(let l of n)for(let c of ["approvers","reviewers"]){let r=Array.isArray(l[c])?l[c]:[];for(let d=0;d<r.length;d+=1){let a=P(r[d]);if(!a)continue;let p=a.startsWith("@")?a:`@${a}`,f=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,s),absolutePath:t,pointer:`/${c}/${d}`,trust:"authoritative",derivation:"authored",detail:`${c}: ${p}`}),v=e.state.addEntity({kind:"owner",key:`owner:${p.toLowerCase()}`,label:p,aliases:[a,p],proofIds:[f]});e.state.addRelation({from:v,to:s?R("project",`project:${s.id}`):R("workspace",`workspace:${e.state.workspaceName}`),kind:"owns",trust:"authoritative",derivation:"authored",proofIds:[f]});}}continue}let i=(await _.readFile(t,"utf8")).split(/\r?\n/);for(let n=0;n<i.length;n+=1){let l=i[n].trim();if(!l||l.startsWith("#"))continue;let[c,...r]=l.split(/\s+/);for(let d of r.filter(a=>a.startsWith("@"))){let a=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,s),absolutePath:t,line:n+1,trust:"authoritative",derivation:"authored",detail:`${c} ${d}`}),p=e.state.addEntity({kind:"owner",key:`owner:${d.toLowerCase()}`,label:d,aliases:[d],proofIds:[a]}),f=e.projects.filter(m=>{let h=c.replace(/^\//,"").replace(/\*.*$/,""),y=u.dirname(t),b=[".github","docs"].includes(u.basename(y))?u.dirname(y):y,k=D(u.relative(b,m.root));return h&&(k==="."||k.startsWith(h.replace(/\/$/,""))||m.path.startsWith(h.replace(/\/$/,"")))}),v=f.length>0?f.map(m=>R("project",`project:${m.id}`)):s?[R("project",`project:${s.id}`)]:[R("workspace",`workspace:${e.state.workspaceName}`)];for(let m of v)e.state.addRelation({from:p,to:m,kind:"owns",trust:"authoritative",derivation:"authored",proofIds:[a]});}}}}},gs={id:"architecture-decisions",version:"1.0.0",scanTier:"complete-inventory",applicable(e){return [{root:e.workspacePath,files:e.workspaceFiles},...e.projects.map(t=>({root:t.root,files:e.filesByProject.get(t.id)??[]}))].some(t=>t.files.some(s=>pt(t.root,s)))},async run(e){let t=new Set,s=[{root:e.workspacePath,files:e.workspaceFiles},...e.projects.map(o=>({root:o.root,files:e.filesByProject.get(o.id)??[]}))];for(let o of s){let i=o.files.filter(n=>pt(o.root,n));for(let n of i){if(t.has(n))continue;t.add(n);let l=ie(e.projects,n),c=await _.readFile(n,"utf8"),r=c.match(/^#\s+(.+)$/m)?.[1]?.trim()??u.basename(n,".md"),d=c.match(/^status\s*:\s*(.+)$/im)?.[1]?.trim(),a=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(n,l),absolutePath:n,line:1,trust:"authoritative",derivation:"authored",detail:`Architecture decision: ${r}`}),p=e.state.addEntity({kind:"decision",key:`decision:${e.state.artifactPath(n,l)}`,label:r,...l?{projectId:l.id}:{},attributes:{status:d,artifact:e.state.artifactPath(n,l)},proofIds:[a]}),f=l?R("project",`project:${l.id}`):R("workspace",`workspace:${e.state.workspaceName}`);e.state.addRelation({from:f,to:p,kind:"decided-by",trust:"authoritative",derivation:"authored",proofIds:[a]});}}}},$t=[zo,No,Ko,Go,Do,qo,Uo,Yo,Qo,Xo,ns,ts,is,ds,as,ps,us,fs,ls,gs];function ms(e,t,s){let o=e.scanTier;if(!o)return;let i=t.projects;return i.length===0?[{scope:"workspace",scopeId:"workspace",tier:o,status:s==="skipped"?"not-applicable":"complete",eligibleFiles:t.workspaceFiles.length,suppliedFiles:o==="derived"?0:t.workspaceFiles.length,...o==="derived"?{}:{fileBudget:Math.max(t.workspaceFiles.length,1)},selectionStrategy:o==="derived"?"derived":"complete"}]:i.map(n=>{let l=t.inventoryByProject.get(n.id),c=t.scanBudgetsByProject.get(n.id),r=l?.eligibleFileCount??0;if(s==="skipped")return {scope:"project",scopeId:n.id,tier:o,status:"not-applicable",eligibleFiles:r,suppliedFiles:0,selectionStrategy:o==="derived"?"derived":"complete"};if(o==="derived")return {scope:"project",scopeId:n.id,tier:o,status:"complete",eligibleFiles:0,suppliedFiles:0,selectionStrategy:"derived"};let d=o==="complete-inventory"?t.filesByProject.get(n.id)?.length??0:o==="adaptive-semantic"?t.semanticFilesByProject.get(n.id)?.length??0:t.deepFilesByProject.get(n.id)?.length??0,a=o==="complete-inventory"?l?.fileLimit??Math.max(d,1):o==="adaptive-semantic"?c?.semanticFileBudget??Math.max(d,1):c?.deepFileBudget??Math.max(d,1),p=!!l?.truncated||d<r;return {scope:"project",scopeId:n.id,tier:o,status:p?"bounded":"complete",eligibleFiles:r,suppliedFiles:d,fileBudget:Math.max(a,1),selectionStrategy:o==="complete-inventory"?"complete":"component-language-round-robin-v1"}})}async function hs(e,t){for(let s of t.edges){let o=[];for(let i of s.evidence){let n=me(i.file);o.push(await e.addProof({provider:"project-topology",artifact:n,absolutePath:u.resolve(e.workspacePath,n),derivation:s.source==="inferred"?"inferred":"authored",trust:s.source==="inferred"?"observed":"authoritative",confidence:s.confidence,detail:i.detail??`${s.kind} relationship`}));}o.length===0&&o.push(await e.addProof({provider:"project-topology",artifact:p.model,derivation:"inferred",trust:"ambiguous",confidence:s.confidence,detail:`${s.kind} relationship without source locator`})),e.addRelation({from:R("project",`project:${s.from}`),to:R("project",`project:${s.to}`),kind:s.kind==="event-pub-sub"?"consumes":"depends-on",derivation:s.source==="inferred"?"inferred":"authored",trust:s.source==="inferred"?"observed":"authoritative",confidence:s.confidence,proofIds:o});}}function vs(e){let t=[...e.entities.values()].filter(o=>o.kind==="endpoint"),s=new Map;for(let o of t){let i=String(o.attributes.method??"").toUpperCase(),n=String(o.attributes.path??"");if(!o.projectId||!i||!n)continue;let l=`${o.projectId}\0${i}\0${n}`,c=s.get(l)??[];c.push(o),s.set(l,c);}for(let o of s.values()){if(o.length<2)continue;let i=o.find(n=>n.proofIds.some(l=>e.proofs.get(l)?.trust==="authoritative"));if(i)for(let n of o.filter(l=>l.id!==i.id))e.addRelation({from:n.id,to:i.id,kind:"implements",derivation:"extracted",trust:"corroborated",confidence:"high",proofIds:[...n.proofIds,...i.proofIds]});}}async function xs(e){let t=u.resolve(e.workspacePath),s=e.now??new Date,o=e.projects.map(g=>{let $=g.absolutePath?u.resolve(g.absolutePath):ve(t,g,e.contract),O=u.relative(t,$),G=O.startsWith(`..${u.sep}`)||O===".."||u.isAbsolute(O);return {...g,root:$,artifactPrefix:G?`external/${g.id}`:D(O||g.id)}}).sort((g,$)=>g.id.localeCompare($.id)),i$1=new ze(t,s,e.workspace.name),n=ke(e.inventoryFileLimitPerProject,"WORKSPAI_GRAPH_INVENTORY_LIMIT"),l=ke(e.maxFilesPerProject,"WORKSPAI_GRAPH_DEEP_BUDGET"),c$1=ke(e.semanticFilesPerProject,"WORKSPAI_GRAPH_SEMANTIC_BUDGET"),r=ke(e.sourceFilesPerProject,"WORKSPAI_GRAPH_SOURCE_BUDGET"),d=Math.max(100,Math.min(n??Dt,qt)),a$1=new Map(await Promise.all(o.map(async g=>[g.id,await ye(g.root,d)]))),p=new Map(o.map(g=>[g.id,a$1.get(g.id)?.files??[]])),f=new Map(o.map(g=>{let $=a$1.get(g.id);return [g.id,to({eligibleFiles:$?.files.length??0,...l!==void 0?{deepOverride:l}:{},...c$1!==void 0?{semanticOverride:c$1}:{},...r!==void 0?{sourceOverride:r}:{}})]})),v=new Map(o.map(g=>{let $=a$1.get(g.id)?.files??[],O=f.get(g.id)?.deepFileBudget??$.length;return [g.id,$e($,O,g.root)]})),m=new Map(o.map(g=>{let $=a$1.get(g.id)?.files??[],O=f.get(g.id)?.semanticFileBudget??$.length;return [g.id,$e($,O,g.root)]})),h$1=await ye(t,d,o.map(g=>g.root)),y=h$1.files.filter(g=>!o.some($=>g===$.root||g.startsWith(`${$.root}${u.sep}`))),b={...h$1,files:y,eligibleFileCount:h$1.eligibleFileCountExact&&!h$1.truncated?y.length:h$1.eligibleFileCount,truncated:h$1.truncated},k=await _o({workspacePath:t,projects:o,projectFileLimit:d,workspaceFileLimit:d,inventories:{workspaceInventory:b,projectInventories:a$1,scanBudgetsByProject:f}});for(let g of k.scopes.filter($=>$.truncated))i$1.diagnostics.push({code:`graph.input.${g.kind}_file_limit_reached`,severity:"warning",message:`${g.kind==="project"?`Project ${g.id}`:"Workspace"} graph inventory reached the ${g.fileLimit}-file emergency bound. The persisted graph remains usable, but completeness claims must be bounded.`,recommendation:"Increase inventoryFileLimitPerProject for this scope or split the repository into explicit project boundaries before claiming complete source coverage."});let S=new Map(k.scopes.filter(g=>g.kind==="project").map(g=>[g.id,g.hash])),j=new Map((e.previousGraph?.source.inputs?.scopes??[]).filter(g=>g.kind==="project").map(g=>[g.id,g.hash])),w="1.4.0",A=new Map((e.previousGraph?.providers??[]).filter(g=>g.id!=="incremental-project-cache").map(g=>[g.id,g.version])),I=new Map((e.previousGraph?.providers??[]).map(g=>[g.id,g])),E=o.map(g=>u.resolve(g.root)),B=E.some((g,$)=>E.some((O,G)=>G!==$&&(O===g||O.startsWith(`${g}${u.sep}`)))),T=$t.every(g=>A.get(g.id)===g.version)&&I.get("incremental-project-cache")?.version===w,L=!B&&e.previousGraph?.workspace.name===e.workspace.name&&T&&S.size>0&&S.size===j.size&&[...S.keys()].every(g=>j.has(g)),M=new Map((e.previousGraph?.entities??[]).filter(g=>g.kind==="project"&&g.projectId).map(g=>[g.projectId,g])),x=new Map(o.map(g=>[g.id,g])),q=g=>{let $=M.get(g.id);if(!$)return false;let O=jt(g),G=Object.fromEntries(Object.keys(O).map(W=>[W,$.attributes[W]]));return c(G)===c(O)},K=new Set(L?[...S].filter(([g,$])=>j.get(g)===$&&x.has(g)&&q(x.get(g))).map(([g])=>g):[]),U=new Set(["vscode-extension-manifest","python-project-manifest","source-language-inventory","source-structure","source-symbol-binding","runtime-bridge-semantics","polyglot-semantics","workspace-service-contract","openapi","authored-api-implementation-binding","dynamic-api-registration-binding","interface-contracts","compose","infrastructure-as-code","kubernetes","ci-workflow","codeowners"]),N=o.filter(g=>!K.has(g.id)),fe=[];if(e.previousGraph&&K.size>0){let g=e.previousGraph.entities.filter(F=>F.projectId&&K.has(F.projectId)),$=new Set(g.map(F=>F.id)),O=new Map(e.previousGraph.entities.map(F=>[F.id,F])),G=new Map(e.previousGraph.proofs.map(F=>[F.id,F])),W=new Set($),V=true;for(;V;){V=false;for(let F of e.previousGraph.relations){let re=W.has(F.from),le=W.has(F.to);if(re===le)continue;let Fe=re?F.to:F.from,_e=O.get(Fe);if(!_e||_e.projectId!==void 0)continue;[..._e.proofIds,...F.proofIds].some(xt=>{let Qe=G.get(xt)?.provider;return Qe!==void 0&&U.has(Qe)})&&(W.add(Fe),V=true);}}if(N.length===0)for(let F of e.previousGraph.entities)F.projectId===void 0&&F.proofIds.some(re=>{let le=G.get(re)?.provider;return le!==void 0&&U.has(le)})&&W.add(F.id);let z=new Set([...W].filter(F=>!$.has(F))),X=[...g,...e.previousGraph.entities.filter(F=>z.has(F.id))],Y=new Set(X.map(F=>F.id)),Q=e.previousGraph.relations.filter(F=>Y.has(F.from)&&Y.has(F.to));fe=e.previousGraph.relations.filter(F=>{let re=Y.has(F.from),le=Y.has(F.to);return re===le?false:O.get(re?F.to:F.from)?.projectId===void 0});let be=new Set([...X,...Q].flatMap(F=>F.proofIds));for(let F of e.previousGraph.proofs)be.has(F.id)&&i$1.proofs.set(F.id,F);for(let F of X)i$1.entities.set(F.id,F);for(let F of Q)i$1.relations.set(F.id,F);i$1.providers.push({id:"incremental-project-cache",version:w,status:"passed",permission:"filesystem-read",discoveredEntities:X.length,discoveredRelations:Q.length,proofCount:be.size,diagnostics:[`Reused ${K.size} unchanged project scope(s); rescanning ${N.length}.`]});}else i$1.providers.push({id:"incremental-project-cache",version:w,status:"skipped",permission:"filesystem-read",discoveredEntities:0,discoveredRelations:0,proofCount:0,diagnostics:[B?`Overlapping project boundaries require a full scan to preserve deterministic artifact ownership; scanning ${N.length}.`:`No compatible unchanged project scope was reused; scanning ${N.length}.`]});let Re={workspacePath:t,projects:o,filesByProject:p,deepFilesByProject:v,semanticFilesByProject:m,inventoryByProject:a$1,scanBudgetsByProject:f,workspaceFiles:y,now:s,contract:e.contract??null,state:i$1},Mt={...Re,projects:N};for(let g of $t){if(K.size>0&&N.length===0&&U.has(g.id)){let z=I.get(g.id);if(z){for(let X of z.diagnostics){let Y=e.previousGraph?.diagnostics.find(Q=>`${Q.code}: ${Q.message}`===X);Y&&!i$1.diagnostics.some(Q=>Q.code===Y.code&&Q.message===Y.message)&&i$1.diagnostics.push(Y);}i$1.providers.push({...z,diagnostics:[...new Set([...z.diagnostics,"Provider evidence reused from unchanged project scopes."])]});continue}}let $={entities:i$1.entities.size,relations:i$1.relations.size,proofs:i$1.proofs.size,diagnostics:i$1.diagnostics.length},O="passed",G=null;try{let z=K.size>0&&U.has(g.id)?Mt:Re;if(!(g.applicable?await g.applicable(z):true))O="skipped";else {await g.run(z);let Y=i$1.entities.size-$.entities,Q=i$1.relations.size-$.relations,be=i$1.proofs.size-$.proofs;Y===0&&Q===0&&be===0?(O="partial",i$1.diagnostics.push({code:`graph.provider.${g.id}.empty_result`,severity:"warning",message:`${g.id} found an applicable source surface but produced no graph evidence.`,recommendation:"Inspect the matching source format or extend the provider before treating this graph dimension as complete."})):i$1.diagnostics.length>$.diagnostics&&(O="partial");}}catch(z){O="failed";let X=z instanceof Error?z.message:String(z);G=X,i$1.diagnostics.push({code:`graph.provider.${g.id}.failed`,severity:"warning",message:`${g.id} provider failed: ${X}`,recommendation:"Repair the referenced source artifact and rerun workspace graph emit."});}let W=i$1.diagnostics.slice($.diagnostics).map(z=>`${z.code}: ${z.message}`);G&&W.length===0&&W.push(G);let V=ms(g,Re,O);O==="passed"&&V?.some(z=>z.status==="bounded")&&(O="partial"),i$1.providers.push({id:g.id,version:g.version,status:O,permission:"filesystem-read",discoveredEntities:i$1.entities.size-$.entities,discoveredRelations:i$1.relations.size-$.relations,proofCount:i$1.proofs.size-$.proofs,diagnostics:W,...V?{inputCoverage:V}:{}});}if(e.previousGraph&&fe.length>0){let g=new Map(e.previousGraph.proofs.map(W=>[W.id,W])),$=0,O=0;for(let W of fe)if(!(!i$1.entities.has(W.from)||!i$1.entities.has(W.to))){i$1.relations.has(W.id)||(i$1.relations.set(W.id,W),$+=1);for(let V of W.proofIds){let z=g.get(V);z&&!i$1.proofs.has(V)&&(i$1.proofs.set(V,z),O+=1);}}let G=i$1.providers.find(W=>W.id==="incremental-project-cache");G&&(G.discoveredRelations+=$,G.proofCount+=O,G.diagnostics.push(`Restored ${$} reusable project-to-workspace relation(s) with ${O} additional proof(s).`));}vs(i$1),await hs(i$1,e.projectTopology);let ce=[...i$1.entities.values()].sort((g,$)=>g.id.localeCompare($.id)),de=[...i$1.relations.values()].sort((g,$)=>g.id.localeCompare($.id)),Ue=[...i$1.proofs.values()].sort((g,$)=>g.id.localeCompare($.id)),Ot=ce.filter(g=>g.proofIds.length>0).length,Bt=de.filter(g=>g.proofIds.length>0).length,Lt=i$1.providers.filter(g=>g.status!=="failed").length,Se=e.projectTopology.diagnostics?.filter(g=>g.code==="graph.edges.missing").flatMap(g=>g.nodeIds??[])??[];Se.length>0&&i$1.diagnostics.push({code:"graph.knowledge.project_relationships_unknown",severity:"warning",message:`${Se.length} project(s) have no proven inter-project relationship. This is unknown topology, not proof of independence.`,entityIds:Se.map(g=>R("project",`project:${g}`)),recommendation:"Author service contracts or add OpenAPI, Compose, Kubernetes, package or import evidence."});let Je=h(ce,de),Ve=k.scopes.filter(g=>!g.truncated).length,Ye=k.scopes.length-Ve,Ae=i$1.providers.reduce((g,$)=>($.status==="failed"?g.failed+=1:$.status==="skipped"||$.inputCoverage?.every(O=>O.status==="not-applicable")?g.notApplicable+=1:$.status==="partial"||$.inputCoverage?.some(O=>O.status==="bounded")?g.bounded+=1:g.complete+=1,g),{complete:0,bounded:0,notApplicable:0,failed:0}),Wt=Ye>0||Ae.bounded>0||Ae.failed>0?"bounded":"complete";return {schemaVersion:a,generatedAt:s.toISOString(),source:{...e.source,inputs:k},workspace:e.workspace,projectTopology:e.projectTopology,entities:ce,relations:de,proofs:Ue,providers:[...i$1.providers].sort((g,$)=>g.id.localeCompare($.id)),quality:{entityCount:ce.length,relationCount:de.length,proofCount:Ue.length,entityProofCoverageRatio:ce.length===0?1:Ot/ce.length,relationProofCoverageRatio:de.length===0?1:Bt/de.length,providerSuccessRatio:i$1.providers.length===0?1:Lt/i$1.providers.length,conflictCount:i$1.diagnostics.filter(g=>g.code.includes("conflict")).length,unknownCount:i(i$1.diagnostics,Je),bindingCoverage:Je,completeness:{status:Wt,inventory:{scopeCount:k.scopes.length,completeScopes:Ve,boundedScopes:Ye,eligibleFiles:k.scopes.reduce((g,$)=>g+($.eligibleFileCount??$.fileCount),0),indexedFiles:k.scopes.reduce((g,$)=>g+$.fileCount,0),eligibleFileCountExact:k.scopes.every(g=>g.eligibleFileCountExact!==false)},providers:Ae},portable:true,secretValuesEmitted:false},diagnostics:[...i$1.diagnostics].sort((g,$)=>g.code.localeCompare($.code)||g.message.localeCompare($.message))}}function zs(e,t){return R(e,t)}
12
+ export{Bs as a,Ls as b,_o as c,Ws as d,xs as e,zs as f};
@@ -1 +1 @@
1
- export{b as buildWorkspaceManifest,f as createProject,a as initializeStandaloneGitRepository,g as registerWorkspaceAtPath,d as resolvePythonFreeFallbackProfile,c as syncWorkspaceFoundationFiles,e as writeWorkspaceLauncher}from'./chunk-P5RZO5BY.js';
1
+ export{b as buildWorkspaceManifest,f as createProject,a as initializeStandaloneGitRepository,g as registerWorkspaceAtPath,d as resolvePythonFreeFallbackProfile,c as syncWorkspaceFoundationFiles,e as writeWorkspaceLauncher}from'./chunk-WXUCAVFT.js';
@@ -1,4 +1,4 @@
1
- import {h as h$1}from'./chunk-6B7L4NZE.js';import {b,a as a$1}from'./chunk-TQEMLBAG.js';import {promises}from'fs';import a from'path';import T from'nunjucks';import e from'chalk';import h from'ora';import {fileURLToPath}from'url';import {execa}from'execa';import G from'crypto';var J=fileURLToPath(import.meta.url),M=a.dirname(J);function O(t=32){let i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",x=G.randomBytes(t),o="";for(let p=0;p<t;p++)o+=i[x[p]%i.length];return o}async function te(t,i){let o=(i.template||"fastapi")==="fastapi",p=o?"FastAPI":"NestJS",d=i.kit_name||(o?"fastapi.standard":"nestjs.standard"),D=d.replace(".","/"),$=h(`Generating ${p} project...`).start();try{let w=a.resolve(M,".."),m;d==="fastapi.ddd"?m="fastapi-ddd":d.startsWith("fastapi")?m="fastapi-standard":m="nestjs-standard";let f=a.join(w,"templates","kits",m),S=T.configure(f,{autoescape:false,trimBlocks:true,lstripBlocks:true});S.addFilter("generate_secret",function(n,r=32){return O(r)});let F={project_name:i.project_name,author:i.author||"Workspai User",description:i.description||(o?"FastAPI service generated with Workspai":"NestJS application generated with Workspai"),app_version:i.app_version||"0.1.0",license:i.license||"MIT",package_manager:i.package_manager||"npm",node_version:i.node_version||"20.0.0",database_type:i.database_type||"postgresql",include_caching:i.include_caching||false,created_at:new Date().toISOString(),workspai_version:h$1(),rapidkit_version:h$1()},y;o?y=["src/main.py.j2","src/__init__.py.j2","src/cli.py.j2","src/routing/__init__.py.j2","src/routing/health.py.j2","src/routing/examples.py.j2","src/modules/__init__.py.j2","tests/__init__.py.j2","tests/test_health.py.j2","tests/test_examples.py.j2","README.md.j2","pyproject.toml.j2","Makefile.j2","env.example.j2","rapidkit.j2","rapidkit.cmd.j2"]:y=["src/main.ts.j2","src/app.module.ts.j2","src/app.controller.ts.j2","src/app.service.ts.j2","src/config/configuration.ts.j2","src/config/validation.ts.j2","src/config/index.ts.j2","src/modules/index.ts.j2","src/examples/examples.module.ts.j2","src/examples/examples.controller.ts.j2","src/examples/examples.service.ts.j2","src/examples/dto/create-note.dto.ts.j2","test/app.controller.spec.ts.j2","test/examples.controller.spec.ts.j2","test/app.e2e-spec.ts.j2","test/jest-e2e.json.j2","package.json.j2","tsconfig.json.j2","tsconfig.build.json.j2","nest-cli.json.j2","jest.config.ts.j2","eslint.config.cjs.j2","env.example.j2","docker-compose.yml.j2","Dockerfile.j2","README.md.j2","rapidkit.j2","rapidkit.cmd.j2"];for(let n of y){let r=a.join(f,n);try{await promises.access(r);}catch{continue}let _=await promises.readFile(r,"utf-8"),g;try{g=S.renderString(_,F);}catch(W){throw console.error(`Failed to render template: ${n}`),W}let c=n==="env.example.j2"?".env.example":n.replace(/\.j2$/,""),v=a.join(t,c);await promises.mkdir(a.dirname(v),{recursive:true}),await promises.writeFile(v,g),(c.endsWith(".workspai/rapidkit")||c.endsWith(".workspai/cli.py")||c.endsWith(".workspai/activate")||c.endsWith(".rapidkit/rapidkit")||c.endsWith(".rapidkit/cli.py")||c.endsWith(".rapidkit/activate")||c==="rapidkit")&&await promises.chmod(v,493);}if(o){let n=a.join(f,".rapidkit","context.json"),r=a.join(t,".workspai","context.json");try{await promises.mkdir(a.join(t,".workspai"),{recursive:true}),await promises.copyFile(n,r);}catch{await promises.mkdir(a.join(t,".workspai"),{recursive:true});let g=i.engine||"pip";await promises.writeFile(r,JSON.stringify({engine:g,created_by:"workspai-cli-fallback",legacyCreatedBy:"rapidkit-npm-fallback"},null,2));}}let I=a.join(t,".workspai");await promises.mkdir(I,{recursive:true});let R=a.join(I,"project.json"),C={kit_name:d,profile:D,created_at:new Date().toISOString(),created_by:"workspai-cli-fallback",workspai_version:h$1(),rapidkit_version:h$1(),runtime:o?"python":"node"},P=JSON.stringify(C,null,2);await promises.writeFile(R,P,"utf-8");let j=a.join(t,"rapidkit");await promises.access(j).then(()=>true).catch(()=>false)||(await promises.writeFile(j,`#!/usr/bin/env bash
1
+ import {h as h$1}from'./chunk-EFHSRPW7.js';import {b,a as a$1}from'./chunk-TQEMLBAG.js';import {promises}from'fs';import a from'path';import T from'nunjucks';import e from'chalk';import h from'ora';import {fileURLToPath}from'url';import {execa}from'execa';import G from'crypto';var J=fileURLToPath(import.meta.url),M=a.dirname(J);function O(t=32){let i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",x=G.randomBytes(t),o="";for(let p=0;p<t;p++)o+=i[x[p]%i.length];return o}async function te(t,i){let o=(i.template||"fastapi")==="fastapi",p=o?"FastAPI":"NestJS",d=i.kit_name||(o?"fastapi.standard":"nestjs.standard"),D=d.replace(".","/"),$=h(`Generating ${p} project...`).start();try{let w=a.resolve(M,".."),m;d==="fastapi.ddd"?m="fastapi-ddd":d.startsWith("fastapi")?m="fastapi-standard":m="nestjs-standard";let f=a.join(w,"templates","kits",m),S=T.configure(f,{autoescape:false,trimBlocks:true,lstripBlocks:true});S.addFilter("generate_secret",function(n,r=32){return O(r)});let F={project_name:i.project_name,author:i.author||"Workspai User",description:i.description||(o?"FastAPI service generated with Workspai":"NestJS application generated with Workspai"),app_version:i.app_version||"0.1.0",license:i.license||"MIT",package_manager:i.package_manager||"npm",node_version:i.node_version||"20.0.0",database_type:i.database_type||"postgresql",include_caching:i.include_caching||false,created_at:new Date().toISOString(),workspai_version:h$1(),rapidkit_version:h$1()},y;o?y=["src/main.py.j2","src/__init__.py.j2","src/cli.py.j2","src/routing/__init__.py.j2","src/routing/health.py.j2","src/routing/examples.py.j2","src/modules/__init__.py.j2","tests/__init__.py.j2","tests/test_health.py.j2","tests/test_examples.py.j2","README.md.j2","pyproject.toml.j2","Makefile.j2","env.example.j2","rapidkit.j2","rapidkit.cmd.j2"]:y=["src/main.ts.j2","src/app.module.ts.j2","src/app.controller.ts.j2","src/app.service.ts.j2","src/config/configuration.ts.j2","src/config/validation.ts.j2","src/config/index.ts.j2","src/modules/index.ts.j2","src/examples/examples.module.ts.j2","src/examples/examples.controller.ts.j2","src/examples/examples.service.ts.j2","src/examples/dto/create-note.dto.ts.j2","test/app.controller.spec.ts.j2","test/examples.controller.spec.ts.j2","test/app.e2e-spec.ts.j2","test/jest-e2e.json.j2","package.json.j2","tsconfig.json.j2","tsconfig.build.json.j2","nest-cli.json.j2","jest.config.ts.j2","eslint.config.cjs.j2","env.example.j2","docker-compose.yml.j2","Dockerfile.j2","README.md.j2","rapidkit.j2","rapidkit.cmd.j2"];for(let n of y){let r=a.join(f,n);try{await promises.access(r);}catch{continue}let _=await promises.readFile(r,"utf-8"),g;try{g=S.renderString(_,F);}catch(W){throw console.error(`Failed to render template: ${n}`),W}let c=n==="env.example.j2"?".env.example":n.replace(/\.j2$/,""),v=a.join(t,c);await promises.mkdir(a.dirname(v),{recursive:true}),await promises.writeFile(v,g),(c.endsWith(".workspai/rapidkit")||c.endsWith(".workspai/cli.py")||c.endsWith(".workspai/activate")||c.endsWith(".rapidkit/rapidkit")||c.endsWith(".rapidkit/cli.py")||c.endsWith(".rapidkit/activate")||c==="rapidkit")&&await promises.chmod(v,493);}if(o){let n=a.join(f,".rapidkit","context.json"),r=a.join(t,".workspai","context.json");try{await promises.mkdir(a.join(t,".workspai"),{recursive:true}),await promises.copyFile(n,r);}catch{await promises.mkdir(a.join(t,".workspai"),{recursive:true});let g=i.engine||"pip";await promises.writeFile(r,JSON.stringify({engine:g,created_by:"workspai-cli-fallback",legacyCreatedBy:"rapidkit-npm-fallback"},null,2));}}let I=a.join(t,".workspai");await promises.mkdir(I,{recursive:true});let R=a.join(I,"project.json"),C={kit_name:d,profile:D,created_at:new Date().toISOString(),created_by:"workspai-cli-fallback",workspai_version:h$1(),rapidkit_version:h$1(),runtime:o?"python":"node"},P=JSON.stringify(C,null,2);await promises.writeFile(R,P,"utf-8");let j=a.join(t,"rapidkit");await promises.access(j).then(()=>true).catch(()=>false)||(await promises.writeFile(j,`#!/usr/bin/env bash
2
2
  set -euo pipefail
3
3
  SCRIPT_DIR="$(cd "$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
4
4
  cd "$SCRIPT_DIR"
@@ -1 +1 @@
1
- export{d as DOCTOR_WORKSPACE_REPORT_PATH,r as applyEnvKeyAddFix,n as applyFileAppendFix,o as applyFileCopyFix,m as applyFileCreateFix,q as applyJsonEditFix,s as applyMakefileTargetFix,l as applyPackageScriptFix,j as assertOperationPathInsideProject,k as assertOperationPathInsideProjectResolved,i as buildRepairOperationIdentity,u as computeDoctorFixAwareExitCode,t as computeDoctorGateExitCode,p as decodeJsonPointerSegment,h as parseInternalRepairCommand,g as parsePackageScriptFix,f as pythonPackageListProvesDependencies,e as resolveDoctorPolicyProfile,v as runDoctor}from'./chunk-CGNMS32W.js';
1
+ export{d as DOCTOR_WORKSPACE_REPORT_PATH,r as applyEnvKeyAddFix,n as applyFileAppendFix,o as applyFileCopyFix,m as applyFileCreateFix,q as applyJsonEditFix,s as applyMakefileTargetFix,l as applyPackageScriptFix,j as assertOperationPathInsideProject,k as assertOperationPathInsideProjectResolved,i as buildRepairOperationIdentity,u as computeDoctorFixAwareExitCode,t as computeDoctorGateExitCode,p as decodeJsonPointerSegment,h as parseInternalRepairCommand,g as parsePackageScriptFix,f as pythonPackageListProvesDependencies,e as resolveDoctorPolicyProfile,v as runDoctor}from'./chunk-66O62XNJ.js';
@@ -1,4 +1,4 @@
1
- import {a,d,e,b}from'./chunk-HV6EQMUJ.js';import {h as h$1}from'./chunk-6B7L4NZE.js';import {b as b$1,a as a$1}from'./chunk-TQEMLBAG.js';import {promises}from'fs';import n from'path';import s from'chalk';import y from'ora';import {execa}from'execa';var l=a.dotnet.targetFramework,_="8080";function $(e){return e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")}function E(e,r){return e.trim().replace(/[^A-Za-z0-9_.]+/g,".").replace(/^\.+|\.+$/g,"").replace(/\.{2,}/g,".").split(".").map(c=>c.replace(/^[^A-Za-z_]+/,"").replace(/[^A-Za-z0-9_]/g,"")).filter(Boolean).join(".")||r}function D(e,r){return e.replace(/[\r\n\t]+/g," ").trim()||r}function I(e){return e.trim()===l}function P(){return JSON.stringify({engine:"npm",runtime:"dotnet"},null,2)}function k(e,r){return JSON.stringify({kit_name:"dotnet.webapi.clean",runtime:"dotnet",framework:"dotnet",module_support:false,project_name:e.project_name,root_namespace:e.root_namespace,target_framework:e.target_framework,app_version:e.app_version,created_by:"workspai",workspai_version:r,rapidkit_version:r,created_at:new Date().toISOString()},null,2)}function T(e){return `<Project Sdk="Microsoft.NET.Sdk.Web">
1
+ import {a,d,e,b}from'./chunk-HV6EQMUJ.js';import {h as h$1}from'./chunk-EFHSRPW7.js';import {b as b$1,a as a$1}from'./chunk-TQEMLBAG.js';import {promises}from'fs';import n from'path';import s from'chalk';import y from'ora';import {execa}from'execa';var l=a.dotnet.targetFramework,_="8080";function $(e){return e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")}function E(e,r){return e.trim().replace(/[^A-Za-z0-9_.]+/g,".").replace(/^\.+|\.+$/g,"").replace(/\.{2,}/g,".").split(".").map(c=>c.replace(/^[^A-Za-z_]+/,"").replace(/[^A-Za-z0-9_]/g,"")).filter(Boolean).join(".")||r}function D(e,r){return e.replace(/[\r\n\t]+/g," ").trim()||r}function I(e){return e.trim()===l}function P(){return JSON.stringify({engine:"npm",runtime:"dotnet"},null,2)}function k(e,r){return JSON.stringify({kit_name:"dotnet.webapi.clean",runtime:"dotnet",framework:"dotnet",module_support:false,project_name:e.project_name,root_namespace:e.root_namespace,target_framework:e.target_framework,app_version:e.app_version,created_by:"workspai",workspai_version:r,rapidkit_version:r,created_at:new Date().toISOString()},null,2)}function T(e){return `<Project Sdk="Microsoft.NET.Sdk.Web">
2
2
  <PropertyGroup>
3
3
  <TargetFramework>${e.target_framework}</TargetFramework>
4
4
  <Nullable>enable</Nullable>
@@ -1 +1 @@
1
- export{f as GOAL_INDEX_PATH,e as GOAL_INDEX_SCHEMA_VERSION,k as buildGoalLifecycleResult,l as inspectGoalLifecycle,q as linkGoalChangeTransaction,p as linkGoalRepairTransaction,n as prepareGoalVerification,m as transitionGoalLifecycle,o as verifyGoalLifecycle}from'./chunk-36VNERGC.js';
1
+ export{f as GOAL_INDEX_PATH,e as GOAL_INDEX_SCHEMA_VERSION,k as buildGoalLifecycleResult,l as inspectGoalLifecycle,q as linkGoalChangeTransaction,p as linkGoalRepairTransaction,n as prepareGoalVerification,m as transitionGoalLifecycle,o as verifyGoalLifecycle}from'./chunk-G5UCEXP6.js';
@@ -1 +1 @@
1
- export{a as planGoalPack}from'./chunk-TXVMHEJS.js';export{b as GOAL_AGENT_HANDOFF_SCHEMA_VERSION,f as GOAL_INDEX_PATH,e as GOAL_INDEX_SCHEMA_VERSION,g as GOAL_LIFECYCLE_RESULT_SCHEMA_VERSION,d as GOAL_PACK_LAST_RUN_PATH,a as GOAL_PACK_SCHEMA_VERSION,c as GOAL_PLAN_RESULT_SCHEMA_VERSION}from'./chunk-36VNERGC.js';
1
+ export{a as planGoalPack}from'./chunk-DTNOF3MP.js';export{b as GOAL_AGENT_HANDOFF_SCHEMA_VERSION,f as GOAL_INDEX_PATH,e as GOAL_INDEX_SCHEMA_VERSION,g as GOAL_LIFECYCLE_RESULT_SCHEMA_VERSION,d as GOAL_PACK_LAST_RUN_PATH,a as GOAL_PACK_SCHEMA_VERSION,c as GOAL_PLAN_RESULT_SCHEMA_VERSION}from'./chunk-G5UCEXP6.js';
@@ -1,4 +1,4 @@
1
- import {c,b,e,d,f,g,h as h$1,a as a$1}from'./chunk-HV6EQMUJ.js';import {h}from'./chunk-6B7L4NZE.js';import {b as b$1,a}from'./chunk-TQEMLBAG.js';import {promises}from'fs';import u from'path';import o from'chalk';import O from'ora';import {execa}from'execa';function y(e){return `package main
1
+ import {c,b,e,d,f,g,h as h$1,a as a$1}from'./chunk-HV6EQMUJ.js';import {h}from'./chunk-EFHSRPW7.js';import {b as b$1,a}from'./chunk-TQEMLBAG.js';import {promises}from'fs';import u from'path';import o from'chalk';import O from'ora';import {execa}from'execa';function y(e){return `package main
2
2
 
3
3
  import (
4
4
  "fmt"
@@ -1,4 +1,4 @@
1
- import {c,b as b$1,e,d,f,g,h as h$1,a as a$1}from'./chunk-HV6EQMUJ.js';import {h}from'./chunk-6B7L4NZE.js';import {b as b$2,a}from'./chunk-TQEMLBAG.js';import {promises}from'fs';import u from'path';import o from'chalk';import b from'ora';import {execa}from'execa';function G(e){return `package main
1
+ import {c,b as b$1,e,d,f,g,h as h$1,a as a$1}from'./chunk-HV6EQMUJ.js';import {h}from'./chunk-EFHSRPW7.js';import {b as b$2,a}from'./chunk-TQEMLBAG.js';import {promises}from'fs';import u from'path';import o from'chalk';import b from'ora';import {execa}from'execa';function G(e){return `package main
2
2
 
3
3
  import (
4
4
  "context"