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
@@ -1,7 +0,0 @@
1
- import {d,b,e}from'./chunk-BR6QIYQS.js';import {a}from'./chunk-NMXGSVMD.js';import {d as d$2}from'./chunk-S5KTATOU.js';import {B,q as q$1,A,u as u$1,z,D as D$1}from'./chunk-OH6LV5JP.js';import {k,m,g as g$1,f}from'./chunk-7NKM6EHE.js';import {g}from'./chunk-BLEIUQL6.js';import {e as e$1,g as g$2}from'./chunk-RGNCL5OB.js';import {a as a$1}from'./chunk-TQEMLBAG.js';import {c,d as d$1}from'./chunk-25AWHAB5.js';import {u,q,t as t$1}from'./chunk-VQZ5PI5J.js';import {p,t}from'./chunk-ODK4LCEL.js';import Q from'fs';import y from'path';import D from'chalk';import {execa}from'execa';var ft={"python-fastapi":{runtime:"python",framework:"FastAPI",markers:["pyproject.toml","fastapi"],commands:{init:"python -m pip install -e .",test:"pytest",build:"python -m build",start:"uvicorn main:app --reload"},errorPatterns:{setup:["ModuleNotFoundError","No module named","pip: command not found"],"test-failure":["FAILED","ERROR","test session started"],dependency:["ImportError","missing.*dependency"],runtime:["TypeError","AttributeError","ValueError"],timeout:["timeout","Timeout","timed out"],unknown:[]},healthCheck:{stage:"start",type:"http",value:"http://localhost:8000/docs"},validation:{command:"python -m pip list | grep fastapi",error:"FastAPI not installed"}},"python-django":{runtime:"python",framework:"Django",markers:["manage.py","django"],commands:{init:"python manage.py migrate",test:"python manage.py test",build:"python manage.py collectstatic --noinput",start:"python manage.py runserver 0.0.0.0:8000"},errorPatterns:{setup:["ModuleNotFoundError","ProgrammingError.*migrate"],"test-failure":["FAILED","ERROR","Ran.*test"],dependency:["ImportError","missing.*dependency"],runtime:["DatabaseError","ImproperlyConfigured"],timeout:["timeout","Timeout"],unknown:[]},healthCheck:{stage:"start",type:"port",value:8e3},dependencies:["init"]},"node-nestjs":{runtime:"node",framework:"NestJS",markers:["package.json","@nestjs/core"],commands:{init:"npm install",test:"npm run test",build:"npm run build",start:"npm run start"},errorPatterns:{setup:["npm ERR!","ENOENT","not found"],"test-failure":["Tests.*failed","FAIL","fail.*test"],dependency:["Cannot find module","ERR_MODULE_NOT_FOUND"],runtime:["TypeError","Error: ","ReferenceError"],timeout:["timeout","TIMEOUT"],unknown:[]},healthCheck:{stage:"start",type:"port",value:3e3}},"node-express":{runtime:"node",framework:"Express",markers:["package.json","express"],commands:{init:"npm install",test:"npm run test",build:"npm run build",start:"npm start"},errorPatterns:{setup:["npm ERR!","ENOENT"],"test-failure":["failed","FAIL"],dependency:["Cannot find module"],runtime:["Error","TypeError"],timeout:["timeout"],unknown:[]}},"go-fiber":{runtime:"go",framework:"Fiber",markers:["go.mod","fiber"],commands:{init:"go mod download && go mod tidy",test:"go test ./...",build:"go build -o app .",start:"./app"},errorPatterns:{setup:["go: .*not found","cannot find","go mod tidy"],"test-failure":["FAIL","--- FAIL"],dependency:["missing.*module"],runtime:["panic","fatal","Error"],timeout:["timeout","context deadline"],unknown:[]},dependencies:["init"]},"go-gin":{runtime:"go",framework:"Gin",markers:["go.mod","gin-gonic"],commands:{init:"go mod download && go mod tidy",test:"go test ./...",build:"go build -o app .",start:"./app"},errorPatterns:{setup:["go: .*not found"],"test-failure":["FAIL"],dependency:["missing.*module"],runtime:["panic"],timeout:["timeout"],unknown:[]}},"java-springboot":{runtime:"java",framework:"Spring Boot",markers:["pom.xml","build.gradle","spring-boot"],commands:{init:"mvn dependency:go-offline",test:"mvn test",build:"mvn package -DskipTests",start:"mvn spring-boot:run"},errorPatterns:{setup:["\\[ERROR\\]","BUILD FAILURE","missing dependencies"],"test-failure":["\\[ERROR\\] Tests run:","BUILD FAILURE"],dependency:["missing.*dependency"],runtime:["Exception","Error","NullPointerException"],timeout:["timeout","Timeout"],unknown:[]},healthCheck:{stage:"start",type:"port",value:8080}},"php-laravel":{runtime:"php",framework:"Laravel",markers:["composer.json","artisan","app/Models"],commands:{init:"composer install && php artisan migrate:fresh --seed",test:"php artisan test",build:"php artisan config:cache && php artisan route:cache && php artisan view:cache",start:"php artisan serve --host=0.0.0.0 --port=8000"},errorPatterns:{setup:["Composer.*lock","Fatal error","Class.*not found"],"test-failure":["FAILED","Tests.*failed"],dependency:["Class.*not found","require.*failed"],runtime:["Fatal error","Exception","Error"],timeout:["timeout","Timeout"],unknown:[]},healthCheck:{stage:"start",type:"port",value:8e3},dependencies:["init"]},"php-symfony":{runtime:"php",framework:"Symfony",markers:["composer.json","symfony.lock","bin/console"],commands:{init:"composer install && php bin/console doctrine:database:create",test:"php bin/phpunit",build:"php bin/console cache:clear --env=prod",start:"symfony serve --no-tls"},errorPatterns:{setup:["Composer.*error","Fatal error"],"test-failure":["FAILED","failure"],dependency:["Class.*not found"],runtime:["Fatal error","Exception"],timeout:["timeout"],unknown:[]},dependencies:["init"]},"rust-actix":{runtime:"rust",framework:"Actix-web",markers:["Cargo.toml","actix"],commands:{init:"cargo fetch",test:"cargo test",build:"cargo build --release",start:"cargo run --release"},errorPatterns:{setup:["error: .*could not find","failed.*download"],"test-failure":["test result:","FAILED"],dependency:["can.t find.*crate"],runtime:["error\\[E","thread.*panicked"],timeout:["timeout"],unknown:[]},validation:{command:"cargo --version",error:"Rust/Cargo not installed"}},"rust-axum":{runtime:"rust",framework:"Axum",markers:["Cargo.toml","axum"],commands:{init:"cargo fetch",test:"cargo test",build:"cargo build --release",start:"cargo run --release"},errorPatterns:{setup:["error: .*could not find"],"test-failure":["test result:","FAILED"],dependency:["can.t find.*crate"],runtime:["error\\[E"],timeout:["timeout"],unknown:[]}},"rust-rocket":{runtime:"rust",framework:"Rocket",markers:["Cargo.toml","rocket"],commands:{init:"cargo fetch",test:"cargo test",build:"cargo build --release",start:"cargo run --release"},errorPatterns:{setup:["error: .*could not find"],"test-failure":["FAILED"],dependency:["can.t find"],runtime:["error\\[E"],timeout:["timeout"],unknown:[]}},"dotnet-aspnetcore":{runtime:"dotnet",framework:"ASP.NET Core",markers:[".csproj",".sln","Program.cs"],commands:{init:"dotnet restore",test:"dotnet test",build:"dotnet build -c Release",start:"dotnet run"},errorPatterns:{setup:["error CS","CSPROJ.*not found","NuGet.*restore"],"test-failure":["Failed:.*test","FAILED"],dependency:["error NU1101"],runtime:["error CS","Exception"],timeout:["timeout"],unknown:[]},healthCheck:{stage:"start",type:"port",value:5e3}},"elixir-phoenix":{runtime:"elixir",framework:"Phoenix",markers:["mix.exs","phoenix"],commands:{init:"mix setup",test:"mix test",build:"mix compile --all-warnings",start:"mix phx.server"},errorPatterns:{setup:["\\*\\* \\(.*Error\\)","Mix.InstallError"],"test-failure":["\\d+\\sfailed","FAILED"],dependency:["dependencies are not available"],runtime:["\\*\\* \\(","RuntimeError"],timeout:["timeout"],unknown:[]},healthCheck:{stage:"start",type:"port",value:4e3},dependencies:["init"]},"ruby-rails":{runtime:"ruby",framework:"Rails",markers:["Gemfile","config/application.rb","bin/rails"],commands:{init:"bundle install && rails db:prepare",test:"rails test",build:"rails assets:precompile",start:"rails server --binding=0.0.0.0 --port=3000"},errorPatterns:{setup:["Bundler::.*Error","Gem::.*Error"],"test-failure":["failures,","error,","FAILED"],dependency:["Could not find.*gem"],runtime:["Error","Exception","NoMethodError"],timeout:["timeout"],unknown:[]},healthCheck:{stage:"start",type:"port",value:3e3},dependencies:["init"]},"ruby-sinatra":{runtime:"ruby",framework:"Sinatra",markers:["Gemfile","app.rb","sinatra"],commands:{init:"bundle install",test:"rspec",build:`echo "Sinatra apps don't require build"`,start:"ruby app.rb"},errorPatterns:{setup:["Bundler.*Error","Gem.*Error"],"test-failure":["failure","FAILED"],dependency:["Could not find.*gem"],runtime:["Error","NoMethodError"],timeout:["timeout"],unknown:[]}}},gt={init:{python:["pip install -e .","poetry install","pip install -r requirements.txt"],node:["npm install","pnpm install","yarn install"],go:["go mod download && go mod tidy","go get ./..."],java:["mvn dependency:go-offline","gradle dependencies"],php:["composer install"],rust:["cargo fetch"],dotnet:["dotnet restore"],c:["cmake -S . -B build"],cpp:["cmake -S . -B build"],elixir:["mix deps.get"],ruby:["bundle install"],clojure:["clojure -P"],scala:["sbt update"],kotlin:["./gradlew dependencies","gradle dependencies"],deno:[],bun:["bun install"],"jvm-generic":["mvn dependency:go-offline","gradle dependencies"],unknown:[]},test:{python:["pytest","python -m unittest","python -m pytest"],node:["npm test","npm run test"],go:["go test ./...","make test"],java:["mvn test","gradle test"],php:["php artisan test","phpunit","pest"],rust:["cargo test"],dotnet:["dotnet test"],c:["ctest --test-dir build --output-on-failure"],cpp:["ctest --test-dir build --output-on-failure"],elixir:["mix test"],ruby:["rspec","ruby -m minitest"],clojure:["clojure -X:test"],scala:["sbt test"],kotlin:["./gradlew test","gradle test"],deno:["deno task test","deno test"],bun:["bun test","bun run test"],"jvm-generic":["mvn test","gradle test"],unknown:[]},build:{python:["python -m build","python setup.py build"],node:["npm run build"],go:["go build -o app .","go build ./..."],java:["mvn package -DskipTests","gradle build -x test"],php:['echo "PHP build: typically no build step"'],rust:["cargo build --release"],dotnet:["dotnet build -c Release"],c:["cmake --build build"],cpp:["cmake --build build"],elixir:["mix compile"],ruby:["gem build *.gemspec"],clojure:[],scala:["sbt compile"],kotlin:["./gradlew build","gradle build"],deno:["deno task build"],bun:["bun run build"],"jvm-generic":["mvn package -DskipTests","gradle build"],unknown:[]},start:{python:["python app.py","python main.py","uvicorn main:app --reload"],node:["npm start","node index.js","node src/index.js"],go:["./app","go run main.go","go run ./..."],java:["mvn spring-boot:run","gradle bootRun","java -jar target/*.jar"],php:["php -S 0.0.0.0:8000","php artisan serve"],rust:["cargo run --release","./target/release/app"],dotnet:["dotnet run"],c:[],cpp:[],elixir:["mix phx.server","iex -S mix"],ruby:["rails server","ruby app.rb","bundle exec puma"],clojure:["clojure -M:run"],scala:["sbt run"],kotlin:["./gradlew run","gradle run"],deno:["deno task start","deno task dev"],bun:["bun run start","bun run dev"],"jvm-generic":["java -jar *.jar","gradle run"],unknown:[]}};function de(e,r){if(r){let t=r.trim().toLowerCase().replace(/[_.\s]+/g,"-"),n=f(r),o=`${e}-${n==="gofiber"?"fiber":n==="gogin"?"gin":n==="dotnet"?"aspnetcore":n!=="unknown"?n:t==="fiber"?"fiber":t==="aspnetcore"||t==="asp-net-core"?"aspnetcore":t}`;return ft[o]}}function He(e,r,t){if(r){let n=de(e,r);if(n&&n.commands[t])return n.commands[t]}if(["init","test","build","start"].includes(t)){let n=gt[t]?.[e]??[];return n.length>0?n[0]:void 0}}var yt={test:"test",build:"build",start:"start"};function le(e){if(e.stage==="init")return e.runtime==="node"?A(e.projectPath):He(e.runtime,e.framework,e.stage);if(e.runtime==="node"){let r=yt[e.stage];if(r){let t=u$1(e.projectPath,r,{framework:e.framework});if(t)return z(e.projectPath,t.scriptName)}}return He(e.runtime,e.framework,e.stage)}function ht(e){let r=k(e).map(t=>t==="python"?"python":t==="node"||t==="bun"?"node":t==="go"?"go":t==="java"?"java":t==="php"?"php":t==="rust"?"rust":t==="dotnet"?"dotnet":t==="elixir"?"elixir":t==="ruby"?"ruby":t==="clojure"||t==="scala"||t==="kotlin"?"jvm-generic":null).filter(t=>t!==null).filter((t,n,s)=>s.indexOf(t)===n);return {primary:r.length>0?r[0]:"unknown",secondary:r.slice(1)}}function Xe(e){return ht(e).primary}function Ye(e,r,t){if(!e)return "unknown";r||(r={timeout:["timed out","timeout","deadline exceeded","SocketTimeoutException"],dependency:["cannot find module","import.*error","Could not find a package configuration file provided by","CMAKE_PREFIX_PATH","failed to fetch","error while requesting resource","unable to (?:resolve|connect)","could not resolve host","network (?:is )?unreachable","ECONNREFUSED","ENOTFOUND"],setup:["ModuleNotFoundError","No module named","npm ERR!","error:","not found"],"test-failure":["FAILED","FAIL","failed"],runtime:["Exception","Error:","panic","TypeError"],unknown:[]});for(let[n,s]of Object.entries(r))if(!(n==="test-failure"&&t&&t!=="test")){for(let o of s)if(new RegExp(o,"i").test(e))return n}return "unknown"}async function re(e,r){let t=e.split(/[&|;]\s*/)[0].trim().split(/\s+/)[0];if(["echo","cd","pwd","test","true","false","exit"].includes(t))return {valid:true};if(t.includes("/")||t.includes("\\")){let s=y.isAbsolute(t)?t:y.resolve(r??process.cwd(),t);try{return await Q.promises.access(s,process.platform==="win32"?Q.constants.F_OK:Q.constants.X_OK),{valid:true}}catch{return {valid:false,reason:`Command '${t}' not found or not executable in '${r??process.cwd()}'`}}}try{let s=process.platform==="win32"?"where":"which";if((await execa(s,[t],{reject:false})).exitCode===0)return {valid:true}}catch{}return {valid:false,reason:`Command '${t}' not found or not executable`}}function Ze(e,r,t){if(!r)return e;let n=typeof r=="object"&&!Array.isArray(r)&&("dev"in r||"staging"in r||"prod"in r||"default"in r)&&!Object.keys(r).some(s=>["init","test","build","start"].includes(s))?r:{};return t&&typeof n[t]=="string"?n[t]:typeof n.default=="string"?n.default:e}async function Qe(e,r){if(!e)return {healthy:true};switch(e.type){case "port":{let t=e.value;try{let n=await import('net');return new Promise(s=>{let o=new n.Socket,i=5e3;o.setTimeout(i),o.on("connect",()=>{o.destroy(),s({healthy:true,reason:`Port ${t} is listening`});}),o.on("timeout",()=>{o.destroy(),s({healthy:false,reason:`Port ${t} timeout after ${i}ms`});}),o.on("error",p=>{o.destroy(),s({healthy:false,reason:`Port ${t} error: ${String(p)}`});}),o.connect(t,"localhost");})}catch(n){return {healthy:false,reason:`Port check error: ${n instanceof Error?n.message:String(n)}`}}}case "http":{let t=e.value,n;try{let s=new AbortController;n=setTimeout(()=>s.abort(),5e3);let o=await fetch(t,{method:"GET",signal:s.signal});return {healthy:o.status===200,reason:`HTTP ${o.status}`,metadata:{status:o.status}}}catch(s){return {healthy:false,reason:`HTTP check error: ${s instanceof Error?s.message:String(s)}`}}finally{n&&clearTimeout(n);}}case "log":{let t=e.value;if(!r)return {healthy:true};try{let n=[y.join(r,".workspai","last-run.log"),y.join(r,".rapidkit","last-run.log")].find(s=>Q.existsSync(s));if(n){let s=Q.readFileSync(n,"utf-8"),o=new RegExp(t,"i");return {healthy:o.test(s),reason:o.test(s)?"Log pattern found":"Log pattern not found"}}return {healthy:true,reason:"No log file to check"}}catch(n){return {healthy:false,reason:`Log check error: ${n instanceof Error?n.message:String(n)}`}}}case "command":{let t=e.value;try{let n=await execa(t,[],{cwd:r,reject:false,shell:true});return {healthy:n.exitCode===0,reason:n.exitCode===0?"Health check passed":"Health check failed",metadata:{exitCode:n.exitCode}}}catch(n){return {healthy:false,reason:`Command check error: ${n instanceof Error?n.message:String(n)}`}}}default:return {healthy:true}}}var et={init:"init",test:"test",build:"build",start:"start"};function kt(e){return e in et?et[e]:null}function bt(e,r){let n=q$1(e)?.contextJson?.commands;if(!n||typeof n!="object"||Array.isArray(n))return;let s=n[r];if(typeof s=="string"&&s.trim().length>0)return s.trim();if(s&&typeof s=="object"&&!Array.isArray(s)){let o=s,i=o.default??o.dev;if(typeof i=="string"&&i.trim().length>0)return i.trim()}}function tt(e,r,t=D$1(e)){let n=kt(r);if(!n)return bt(e,r)?{supported:true}:{supported:false,reason:`Workspace stage "${r}" is not part of the Workspai fleet contract.`};if(!t.projectRoot)return {supported:false,reason:"No Workspai project metadata was detected for this target."};let s=t.commandMap[n];if(!s||s.status!=="supported"){let o=t.runtimeSupportTier==="observed"||t.frameworkSupportTier==="observed";return {supported:false,reason:s?.reason??`Command "${n}" is not supported for this project runtime/framework.`,shouldFail:!o}}return {supported:true}}var wt=new Set(["init","test","build","start"]),xt=new Set([".git","node_modules",".workspai",".rapidkit",".venv","dist","build","coverage","htmlcov"]);async function Y(e){try{return await Q.promises.access(e,Q.constants.F_OK),true}catch{return false}}function rt(e,r){let t=y.relative(y.resolve(e),y.resolve(r));return t===""||!t.startsWith(`..${y.sep}`)&&t!==".."&&!y.isAbsolute(t)}function vt(e){let r=y.resolve(e.projectPath,e.unit.root);return !e.selectedProjectPaths.some(t=>y.resolve(t)===y.resolve(e.projectPath)?false:rt(e.projectPath,t)&&rt(t,r))}async function Rt(e){for(let r of e)if(await Y(r))return true;return false}async function St(e,r,t){if(r==="python"){let i=[y.join(e,".workspai","cli.py"),y.join(e,".rapidkit","cli.py")];for(let p of i)if(await Y(p))return {valid:true};return {valid:false,reason:"Project-local .workspai/cli.py is missing. Run `workspai init` in this project first."}}let s={go:"go",rust:"cargo",dotnet:"dotnet",php:"php"}[r];if(s)return re(s,e);let o=t.trim().split(/\s+/)[0];if(o&&["npm","npx","pnpm","yarn"].includes(o)){let i=e$1(o);if((await execa(i.command,[...i.prefixArgs,"--version"],{reject:false,env:g$2()})).exitCode===0)return {valid:true}}return re(t,e)}async function pe(e){let r=await Q.promises.readFile(e,"utf-8");return JSON.parse(r)}function W(e){return e.replace(/\\/g,"/")}function Ct(e){let r=e?.trim();return r?r.startsWith("project:")?r.slice(8).trim()||null:r:null}async function Et(e){let r=y.join(e,p.model);if(await Y(r))try{let n=((await pe(r)).projects??[]).map(s=>typeof s.path=="string"?y.resolve(e,s.path):null).filter(s=>!!s).filter((s,o,i)=>i.indexOf(s)===o).filter(s=>Q.existsSync(s));if(n.length>0)return n.sort()}catch{}return a(e,{skipDirs:xt,includeHiddenDirs:false,descendIntoMatchedProjects:false,isProjectDir:async(t,n)=>await Rt([...u(t,"context.json"),...u(t,"project.json")])?true:y.resolve(t)===y.resolve(n)?false:k(t).length>0})}async function it(e){for(let r of [y.join(".workspai","project.json"),y.join(".workspai","context.json"),y.join(".rapidkit","project.json"),y.join(".rapidkit","context.json")]){let t=y.join(e,r);if(await Y(t))try{let n=await pe(t),s=n.name??n.projectName??n.slug;if(typeof s=="string"&&s.trim())return s.trim()}catch{}}return null}async function jt(e,r,t){let n=Ct(t);if(!n)return {projects:r,normalizedScope:null};let s=W(n).toLowerCase(),o=[];for(let i of r){let p=W(y.relative(e,i)),c=y.basename(i),m=await it(i);[p,c,m].filter(d=>typeof d=="string"&&d.length>0).map(d=>W(d).toLowerCase()).includes(s)&&o.push(i);}if(o.length===0)throw new Error(`Workspace run scope did not match any project: ${t}`);return {projects:o,normalizedScope:n}}async function Pt(e,r,t){let n=await execa("git",["diff","--name-only",`${t}...HEAD`],{cwd:e,reject:false,env:a$1()});if(n.exitCode!==0)return new Set(r);let s=n.stdout.split(/\r?\n/).map(i=>i.trim()).filter(i=>i.length>0).map(i=>W(i));if(s.length===0)return new Set;let o=new Set;for(let i of r){let p=W(y.relative(e,i));if(!p||p===".")continue;let c=`${p}/`;s.some(m=>m===p||m.startsWith(c))&&o.add(i);}return o}async function At(e,r,t$1){let n=await g(e,t.workspaceContract)??q(e,"workspace.contract.json");if(await Y(n))try{let u=await Ft(e,r,t$1,n);if(u.graphStatus!=="missing")return u}catch{return {expanded:t$1,graphStatus:"invalid",expansionDepth:0}}let s=await g(e,".workspai/workspace-dependency-graph.json")??q(e,"workspace-dependency-graph.json");if(!await Y(s))return {expanded:t$1,graphStatus:"missing",expansionDepth:0};let o;try{o=await pe(s);}catch{return {expanded:t$1,graphStatus:"invalid",expansionDepth:0}}let i=new Set(r.map(u=>y.resolve(u))),p=new Map;if(!o||typeof o!="object"||Array.isArray(o))return {expanded:t$1,graphStatus:"invalid",expansionDepth:0};let c=Array.isArray(o.projects)?o.projects:[];for(let u of c){if(!u||typeof u!="object"||Array.isArray(u))continue;let d=u,l=typeof d.path=="string"?d.path:"",w=y.resolve(e,l);if(!i.has(w))continue;let x=Array.isArray(d.dependsOn)?d.dependsOn.filter(C=>typeof C=="string"):[];for(let C of x){let v=y.resolve(e,C);i.has(v)&&(p.has(v)||p.set(v,new Set),p.get(v)?.add(w));}}let m=d$2(p,t$1);return {expanded:m.reached,graphStatus:"loaded",expansionDepth:m.added}}async function Ft(e,r,t,n){let s=await pe(n);if(!s||typeof s!="object"||Array.isArray(s))return {expanded:t,graphStatus:"invalid",expansionDepth:0};let o=s,i=Array.isArray(o.projects)?o.projects:null;if(!i)return {expanded:t,graphStatus:"invalid",expansionDepth:0};let p=new Map,c=new Map;for(let w of r){let x=W(y.relative(e,w));c.set(x,y.resolve(w));}let m=new Map,u=new Map,d=new Map;for(let w of i){if(!w||typeof w!="object"||Array.isArray(w))continue;let x=w,C=typeof x.slug=="string"?x.slug:"",v=typeof x.relativePath=="string"?W(x.relativePath):C,h=c.get(v);!C||!h||p.set(C,h);}for(let w of i){if(!w||typeof w!="object"||Array.isArray(w))continue;let x=w,C=typeof x.slug=="string"?x.slug:"",v=p.get(C);if(!v)continue;let h=x.contracts&&typeof x.contracts=="object"&&!Array.isArray(x.contracts)?x.contracts:{},R=Array.isArray(h.dependsOn)?h.dependsOn.filter(S=>typeof S=="string"):[],_=Array.isArray(h.publishes)?h.publishes.filter(S=>typeof S=="string"):[],L=Array.isArray(h.consumes)?h.consumes.filter(S=>typeof S=="string"):[];for(let S of R){let P=p.get(S);P&&(d.has(P)||d.set(P,new Set),d.get(P)?.add(v));}for(let S of _)m.has(S)||m.set(S,new Set),m.get(S)?.add(v);for(let S of L)u.has(S)||u.set(S,new Set),u.get(S)?.add(v);}for(let[w,x]of m.entries()){let C=u.get(w);if(C)for(let v of x){d.has(v)||d.set(v,new Set);for(let h of C)h!==v&&d.get(v)?.add(h);}}let l=d$2(d,t);return {expanded:l.reached,graphStatus:"loaded",expansionDepth:l.added}}async function Tt(e,r){if(typeof r=="boolean")return r;let t=t$1(e,"policies.yml").find(o=>Q.existsSync(o))??q(e,"policies.yml");if(!await Y(t))return true;let n="";try{n=await Q.promises.readFile(t,"utf-8");}catch{return true}let s=n.match(/^[\t ]*rules\.enforce_workspace_run_gates:\s*(true|false)\s*(?:#.*)?$/m);return s?s[1]==="true":true}function Ot(e,r){let t=process.env.RAPIDKIT_WORKSPACE_RUN_STAGE_TIMEOUT_MS;if(t){let n=Number.parseInt(t,10);if(Number.isFinite(n)&&n>0)return n}return e!=="init"?9e4:r==="python"||r==="java"||r==="jvm-generic"||r==="dotnet"||r==="rust"?6e5:3e5}function Dt(e){let r=e.trim();if(!r||/[&|;<>()$`"'\n\r]/.test(r))return null;let[t,...n]=r.split(/\s+/);return !t||/^[A-Za-z_][A-Za-z0-9_]*=/.test(t)||![t,...n].every(s=>/^[A-Za-z0-9_./:@%+,=\\-]+$/.test(s))?null:{file:t,args:n}}function nt(e,r){let t=Number.parseInt(process.env[e]??"",10);return Number.isFinite(t)&&t>0?t:r}function xe(e){return new Promise(r=>setTimeout(r,e))}async function It(e){let r=process.argv[1];if(e.useRapidkitWrapper&&!r)return {exitCode:1,stdout:"",stderr:"Workspai entrypoint is unavailable for startup verification.",healthStatus:{healthy:false,reason:"Workspai entrypoint is unavailable."}};let t=e.useRapidkitWrapper&&r?execa(process.execPath,[r,"start"],{cwd:e.projectPath,reject:false,timeout:e.timeoutMs,env:{...process.env,RAPIDKIT_WORKSPACE_RUN_CHILD:"1"}}):execa(e.finalCommand,[],{cwd:e.projectPath,reject:false,shell:true,timeout:e.timeoutMs}),n=Promise.resolve(t).then(u=>({kind:"exit",result:u}),u=>({kind:"error",error:u})),s=nt("WORKSPAI_WORKSPACE_RUN_STARTUP_GRACE_MS",2e3),o=await Promise.race([n,xe(s).then(()=>({kind:"alive"}))]);if(o.kind==="error"){let u=typeof o.error=="object"&&o.error!==null&&"timedOut"in o.error&&!!o.error.timedOut;return {exitCode:u?124:1,stdout:"",stderr:o.error instanceof Error?o.error.message:String(o.error),timedOut:u,healthStatus:{healthy:false,reason:"The start command failed before readiness."}}}if(o.kind==="exit"){let u=Number(o.result.exitCode??0);return {exitCode:u,stdout:String(o.result.stdout??""),stderr:String(o.result.stderr??""),healthStatus:{healthy:u===0,reason:u===0?"The start command completed successfully.":`The start command exited with code ${u} before readiness.`}}}let i=de(e.runtime,e.framework)?.healthCheck,p=i?{healthy:false,reason:"The configured health check has not passed yet."}:{healthy:true,reason:`The service remained alive for ${s}ms (bounded startup smoke).`};if(i){let u=nt("WORKSPAI_WORKSPACE_RUN_STARTUP_HEALTH_TIMEOUT_MS",15e3),d=Date.now()+u;for(;Date.now()<d;){let l=await Qe(i,e.projectPath);if(p={healthy:l.healthy,reason:l.reason},l.healthy)break;if((await Promise.race([n,xe(350).then(()=>({kind:"alive"}))])).kind!=="alive"){p={healthy:false,reason:"The service exited before its configured health check passed."};break}}}try{t.kill?.("SIGTERM",{forceKillAfterDelay:1e3});}catch{try{t.kill?.();}catch{}}let c=await Promise.race([n,xe(2e3).then(()=>({kind:"alive"}))]),m=c.kind==="exit"?c.result:void 0;return {exitCode:p.healthy?0:1,stdout:String(m?.stdout??""),stderr:String(m?.stderr??""),healthStatus:p}}async function Re(e,r,t,n=false){let s=process.argv[1];if(!s)return {exitCode:1,stdout:"",stderr:"RapidKit entrypoint is unavailable for nested workspace-run execution."};let o=false,i,p;try{let c=execa(process.execPath,[s,...e],{cwd:r,reject:false,detached:process.platform!=="win32",env:{...process.env,RAPIDKIT_WORKSPACE_RUN_CHILD:"1"}});t&&t>0&&(p=setTimeout(()=>{o=true;let u=c.pid;if(!u){c.kill("SIGTERM");return}if(process.platform==="win32"){execa("taskkill",["/pid",String(u),"/T","/F"],{reject:false});return}try{process.kill(-u,"SIGTERM");}catch{c.kill("SIGTERM");}i=setTimeout(()=>{try{process.kill(-u,"SIGKILL");}catch{}},1e3),i.unref();},t),p.unref()),n&&(c.stdout?.on("data",u=>process.stdout.write(u)),c.stderr?.on("data",u=>process.stderr.write(u)));let m=await c;return {exitCode:o?124:Number(m.exitCode??1),stdout:m.stdout,stderr:o?`${m.stderr??""}${m.stderr?`
2
- `:""}Stage timed out after ${t}ms`:m.stderr}}catch(c){let m=o||typeof c=="object"&&c!==null&&"timedOut"in c&&!!c.timedOut;return {exitCode:m?124:1,stdout:typeof c=="object"&&c!==null&&"stdout"in c?String(c.stdout??""):"",stderr:m?`Stage timed out after ${t}ms`:typeof c=="object"&&c!==null&&"stderr"in c?String(c.stderr??""):c instanceof Error?c.message:String(c)}}finally{p&&clearTimeout(p),i&&clearTimeout(i);}}function ut(e){return e==="node"||e==="go"||e==="java"||e==="python"||e==="dotnet"||e==="rust"||e==="php"}function $t(){return process.env.VITEST==="true"||process.env.VITEST==="1"||process.env.NODE_ENV==="test"}function Nt(e,r=8){if(e.length<=r)return e.join(`
3
- `);let t=ct(e),n=t?e.lastIndexOf(t):-1,s=new Set([0,1]);if(n>=0)for(let o=Math.max(0,n-2);o<=n+2;o+=1)o<e.length&&s.add(o);for(let o=e.length-1;o>=0&&s.size<r;o-=1)s.add(o);return [...s].sort((o,i)=>o-i).slice(0,r).map(o=>e[o]).join(`
4
- `)}function ct(e){let r=/(?:\bnot found\b|\bno such\b|\bmissing\b|\bfailed\b|\berror\b|\bexception\b|\bcannot\b|\bdenied\b|\btimeout\b|\btimed out\b|\benoent\b|\beacces\b|\beperm\b)/i;return [...e].reverse().find(t=>r.test(t))??e.at(-1)}async function Mt(e){let r=process.cwd();try{process.chdir(e);let{handleInitCommand:t}=await import('./index.js');return {exitCode:await t(["init"]),stdout:"",stderr:""}}finally{process.chdir(r);}}async function ve(e){let r=d=>{let l=g$1(d);return l==="node"||l==="bun"?"node":l==="python"?"python":l==="go"?"go":l==="java"?"java":l==="php"?"php":l==="ruby"?"ruby":l==="rust"?"rust":l==="dotnet"?"dotnet":l==="elixir"?"elixir":l==="clojure"||l==="scala"||l==="kotlin"?"jvm-generic":Xe(e)},t=d=>{if(!d)return;let l=f(d);if(new Set(["fastapi","django","flask","nestjs","express","fastify","koa","gofiber","gogin","echo","springboot","laravel","symfony","rails","sinatra","dotnet","actix","axum","rocket","phoenix"]).has(l))return l},n=q$1(e),s=n?.detection??m(e,n?.projectJson??null),o=n?.contextJson,i=r(s.runtime),p=t(s.key),c={},m$1=new Set(["init","test","build","start"]);if(o?.commands&&typeof o.commands=="object")for(let[d,l]of Object.entries(o.commands))typeof l=="string"&&m$1.has(d)&&(c[d]=l);let u;if(o?.commandEnvironments&&typeof o.commandEnvironments=="object"){let d=o.commandEnvironments;u={dev:typeof d.dev=="string"?d.dev:void 0,staging:typeof d.staging=="string"?d.staging:void 0,prod:typeof d.prod=="string"?d.prod:void 0,default:typeof d.default=="string"?d.default:void 0};}return {runtime:i,framework:p,commandOverrides:Object.keys(c).length>0?c:void 0,environmentCommandVariants:u,environment:typeof o?.environment=="string"?o.environment:void 0}}async function ot(e,r,t,n,s,o,i,p=false){let c=!s?.[r]&&ut(t),m;if(s&&s[r]?m=s[r]:c?m=`rapidkit ${r}`:m=le({projectPath:e,runtime:t,framework:n,stage:r}),!m)return {exitCode:127,command:`<stage not supported for ${t}>`,message:`No stage command found for runtime '${t}' and framework '${n||"unknown"}'`,errorCategory:"runtime"};let u=Ze(m,o,i);if(!u)return {exitCode:127,command:m,message:"Failed to resolve stage command",errorCategory:"runtime"};let d=le({projectPath:e,runtime:t,framework:n,stage:r});if(c){if(d){let b=c?await St(e,t,d):await re(d,e);if(!b.valid)return {exitCode:127,command:u,message:b.reason||"Command not available",errorCategory:"setup"}}}else {let b=await re(u,e);if(!b.valid)return {exitCode:127,command:u,message:b.reason||"Command not available",errorCategory:"setup"}}let l=0,w="",x="",C,v=false,h,R=Ot(r,t),_=Date.now();try{let b=r==="start"?await It({projectPath:e,finalCommand:u,useRapidkitWrapper:c,runtime:t,framework:n,timeoutMs:R}):c?r==="init"&&$t()?await Mt(e):await Re([r],e,R,p):await(async()=>{let $=Dt(u);return $?execa($.file,$.args,{cwd:e,reject:false,timeout:R,forceKillAfterDelay:1e3}):execa(u,[],{cwd:e,reject:false,shell:true,timeout:R,forceKillAfterDelay:1e3})})();if(v=!!(typeof b=="object"&&b!==null&&"timedOut"in b&&b.timedOut),l=v?124:Number(b.exitCode??0),w=b.stdout,x=b.stderr,h=r==="start"?b.healthStatus:void 0,l!==0){let $=`${w}
5
- ${x}`,me=Date.now()-_,ee=Ye($,void 0,r);C=v||l===124||l===143&&me>=Math.floor(R*.8)||ee==="timeout"?"timeout":ee;}}catch(b){let $=typeof b=="object"&&b!==null&&"timedOut"in b&&!!b.timedOut;return {exitCode:$?124:1,command:u,message:$?`Stage timed out after ${R}ms`:b instanceof Error?b.message:"Command execution failed",errorCategory:$?"timeout":"runtime"}}let L=`${w}
6
- ${x}`.split(/\r?\n/).map(b=>b.trim()).filter(Boolean),S=Nt(L),P=ct(L),I=Date.now()-_;if(r==="test"&&t==="go"&&l!==0&&/(?:matched no packages|no packages to test)/i.test(L.join(`
7
- `)))return {exitCode:0,command:u,skipped:true,message:"No Go packages matched; test stage is not applicable to this runtime unit."};let z=v||l===124||l===143&&I>=Math.floor(R*.8),V=l===0?void 0:z?"timeout":C,J=l===0||!V?void 0:{category:V,exitCode:l,command:u,timedOut:z,timeoutMs:R,...S?{outputExcerpt:S}:{}};return {exitCode:l,command:u,errorCategory:V,healthStatus:h,failureDiagnostic:J,message:z?`Stage timed out after ${R}ms`:l!==0?P?`Stage failed with exit code ${l}: ${P}`:`Stage failed with exit code ${l}`:void 0}}function st(e){try{return JSON.parse(e)}catch{return null}}function Wt(e){switch(e){case "dotnet":return "Install .NET 8+ SDK, then rerun `npx workspai setup dotnet` or `npx workspai init`.";case "go":return "Install Go 1.21+, then rerun `npx workspai setup go` or `npx workspai init`.";case "java":case "jvm-generic":return "Install Java 21+ and Maven/Gradle, then rerun `npx workspai setup java` or `npx workspai init`.";case "node":return "Install Node.js LTS and npm/pnpm/yarn, then rerun `npx workspai setup node` or `npx workspai init`.";case "python":return "Install Python 3.10+ and pip/Poetry, then rerun `npx workspai setup python` or `npx workspai init`.";default:return null}}async function _t(e){let r=[],t=await Re(["doctor","workspace","--json"],e);if(t.exitCode!==0)r.push({gate:"doctor-workspace",status:"fail",summary:"doctor workspace command failed"});else {let o=st(t.stdout)?.healthScore,i=Number(o?.errors??0);Number.isFinite(i)&&i>0?r.push({gate:"doctor-workspace",status:"fail",summary:`doctor workspace reports ${i} error(s)`}):r.push({gate:"doctor-workspace",status:"pass",summary:"doctor workspace passed"});}let n=await Re(["readiness","--json"],e);if(n.exitCode!==0)r.push({gate:"readiness",status:"fail",summary:"readiness command failed"});else {let s=st(n.stdout),o=String(s?.overallStatus??"").toLowerCase();o==="fail"?r.push({gate:"readiness",status:"fail",summary:"readiness overall status is fail"}):o==="warn"?r.push({gate:"readiness",status:"warn",summary:"readiness overall status is warn"}):r.push({gate:"readiness",status:"pass",summary:"readiness overall status is pass"});}return r}var Lt=new Set(["dev","stop"]);function Gt(e){let r=e.trim();return !r||Lt.has(r.toLowerCase())?false:wt.has(r)?true:/^[a-z][a-z0-9_-]*$/i.test(r)}function at(e,r,t){let n=W(y.relative(t,r));return (Array.isArray(e.projects)?e.projects:[]).some(o=>{if(!o||typeof o!="object")return false;let i=o,p=[i.relativePath,i.path].filter(c=>typeof c=="string"&&c.length>0).map(c=>W(c));return i.status==="passed"&&(p.includes(n)||p.some(c=>c.endsWith(`/${n}`)))})}function Bt(e,r){return de(e,r)?.dependencies??[]}function Kt(e,r){let t=Math.max(1,Math.min(4,r)),n=Number(e??t);return Number.isFinite(n)?Math.max(1,Math.min(16,Math.trunc(n))):t}async function Rr(e$1){if(!Gt(e$1.stage))throw new Error(`Unsupported workspace run stage: ${e$1.stage}`);let r=Date.now(),t=y.resolve(e$1.workspacePath);c({blockId:"workspace.run.resolve",status:"running",message:"Resolving workspace project fleet",component:"workspace-run"});let n=await d(t),s=await Et(t),{projects:o,normalizedScope:i}=await jt(t,s,e$1.scope),p=e$1.affected===true,c$1=e$1.blastRadius===true,m=e$1.since?.trim()||"HEAD~1",u=p?await Pt(t,o,m):new Set(o),d$2,l="not-applicable",w=0,x="all";if(p&&c$1){let g=await At(t,s,u);d$2=g.expanded,l=g.graphStatus,w=g.expansionDepth,x="affected+blast-radius";}else p?(d$2=u,x="affected"):(d$2=u,x="all");c({blockId:"workspace.run.resolve",status:"succeeded",message:`Resolved ${o.length} project(s)`,component:"workspace-run",attributes:{projects:o.length,selectionMode:x}}),c({blockId:"workspace.run.gates",status:"running",message:"Evaluating workspace run gates",component:"workspace-run"});let C=e$1.stage==="init"||e$1.planOnly===true?false:await Tt(t,e$1.enforceGates),v=C?await _t(t):[{gate:"doctor-workspace",status:"skipped",summary:"workspace run gates disabled"},{gate:"readiness",status:"skipped",summary:"workspace run gates disabled"}],h=v.find(g=>g.status==="fail");c({blockId:"workspace.run.gates",status:h?"blocked":"succeeded",message:h?`Blocked by ${h.gate}`:"Workspace run gates passed",component:"workspace-run",attributes:{gates:v}});let R=o.filter(g=>d$2.has(g)),_=e$1.continueOnError===true||e$1.stage==="init",L=e$1.parallel===true,S=Kt(e$1.maxWorkers,R.length),P=R.length,I=0;c({blockId:"workspace.run.execute",status:h?"blocked":"running",message:h?`Execution blocked by ${h.gate}`:`Executing ${e$1.stage} across ${P} project(s)`,component:"workspace-run",progress:{completed:0,total:P},attributes:{stage:e$1.stage,parallel:L,maxWorkers:S}}),e$1.json||console.log(D.gray(`Workspace run (${e$1.stage}) started: ${P} target(s), ${L?`parallel x${S}`:"sequential"}`));let U=new Map;for(let g of s){let k=W(y.relative(t,g)),a=await it(g),G=o.includes(g),E=G&&d$2.has(g);U.set(g,{path:g,relativePath:k,projectName:a??(y.basename(k)||y.basename(g)),selected:E,affected:E,status:"skipped",exitCode:null,durationMs:0,reason:E?void 0:G?"not affected":"outside scope",framework:void 0,runtimeDetected:void 0,executionCommand:void 0});}if(h)for(let g of R){let k=U.get(g);k&&(k.status="skipped",k.reason=`blocked by ${h.gate}`);}else {let g=async k=>{let a=U.get(k);if(!a)return;let G=W(y.relative(t,k));e$1.json||console.log(D.gray(`\u23F3 [${I}/${P}] ${e$1.stage} ${G}`)),a.selected=true,a.affected=true;let E=Date.now(),N=B(k),T=e$1.runtime?.trim().toLowerCase(),O=N.units.filter(f=>vt({projectPath:k,unit:f,selectedProjectPaths:R})).filter(f=>!T||f.runtime===T).map(f=>({unit:f,stage:f.stages.find(j=>j.stage===e$1.stage)})).filter(f=>!!f.stage),B$1=O.map(({unit:f,stage:j})=>({unitId:f.id,runtime:f.runtime,role:f.role,root:f.root,manifest:f.manifest,stage:j.stage,command:j.command,status:"planned",exitCode:null,durationMs:0}));if(a.runtimeExecutions=B$1,!N.polyglot&&!T&&B$1.length===1&&O[0]?.unit.root==="."){let f=await ve(k);a.framework=f.framework,a.runtimeDetected=f.runtime;let j=f.commandOverrides?.[e$1.stage],M=j||(ut(f.runtime)?`rapidkit ${e$1.stage}`:le({projectPath:k,runtime:f.runtime,framework:f.framework,stage:e$1.stage}));if(M){let F=B$1[0];B$1.splice(0,B$1.length,{...F,unitId:`project:${f.runtime}`,root:".",manifest:O.map(({unit:ne})=>ne.manifest).join(", "),command:M});}}if(e$1.planOnly){a.runtimeDetected||(a.runtimeDetected=O[0]?.unit.runtime),a.status="skipped",a.reason=O.length>0?`plan only: ${O.length} runtime unit(s)`:T?`no ${T} runtime unit supports stage "${e$1.stage}"`:`no runtime unit supports stage "${e$1.stage}"`,a.durationMs=Date.now()-E,I+=1;return}if(N.polyglot||T||O.length>1||O.length===1&&O[0]?.unit.root!=="."){if(O.length===0){a.status="failed",a.reason=T?`No ${T} runtime unit supports stage "${e$1.stage}"`:`No runtime unit supports stage "${e$1.stage}"`,a.errorCategory="setup",a.errorMessage=a.reason,a.exitCode=127,a.durationMs=Date.now()-E,I+=1;return}let f;for(let F=0;F<O.length;F+=1){let{unit:ne,stage:Ee}=O[F],Z=B$1[F],je=y.resolve(k,ne.root),mt=Date.now(),he=await ve(je),H=await ot(je,e$1.stage,ne.runtime,he.framework,{[e$1.stage]:Ee.command},he.environmentCommandVariants,he.environment,!e$1.json);if(Z.durationMs=Date.now()-mt,Z.exitCode=H.exitCode,Z.status=H.skipped?"skipped":H.exitCode===0?"passed":"failed",Z.reason=H.message,Z.errorCategory=H.errorCategory,Z.failureDiagnostic=H.failureDiagnostic,H.exitCode!==0&&!f&&(f=H.message??Ee.command),H.exitCode!==0&&!_){for(let Pe of B$1.slice(F+1))Pe.status="skipped",Pe.reason="stopped after runtime-unit failure";break}}let j=B$1.find(F=>F.status==="failed");a.runtimeDetected=O[0]?.unit.runtime,a.executionCommand=B$1.filter(F=>F.status!=="skipped").map(F=>`[${F.runtime}:${F.root}] ${F.command}`).join(" && "),a.durationMs=Date.now()-E;let M=B$1.find(F=>F.status==="passed");a.exitCode=j?.exitCode??0,a.status=j?"failed":M?"passed":"skipped",a.reason=j?f??"runtime-unit stage failed":M?void 0:"No applicable runtime unit executed the requested stage",a.errorCategory=j?j.errorCategory??"runtime":void 0,a.errorMessage=a.reason,a.failureDiagnostic=j?.failureDiagnostic,I+=1;return}let{runtime:fe,framework:ge,commandOverrides:dt,environmentCommandVariants:lt,environment:pt}=await ve(k);a.runtimeDetected=fe,a.framework=ge;let ye=tt(k,e$1.stage);if(!ye.supported){a.status=ye.shouldFail===false?"skipped":"failed",a.reason=ye.reason??`stage "${e$1.stage}" unsupported for project`,a.durationMs=Date.now()-E,a.exitCode=a.status==="failed"?127:null,a.status==="failed"&&(a.errorCategory="setup",a.errorMessage=a.reason),I+=1;return}if(e$1.reusePassed&&n){let f=n.stages[e$1.stage]??n.stages[e$1.stage];if(f&&at(f,k,t)){a.status="passed",a.reason="reused passed result from workspace-run-last.json",a.durationMs=Date.now()-E,a.exitCode=0,I+=1,e$1.json||console.log(D.gray(`\u21BA reused passed cache for ${G}`));return}}let Ce=Bt(fe,ge).filter(f=>f!==e$1.stage);if(Ce.length>0&&n){let f=Ce.find(j=>{let M=n.stages[j];return !M||!at(M,k,t)});if(f){a.status="skipped",a.reason=`dependency stage "${f}" not satisfied in workspace-run-last.json`,a.durationMs=Date.now()-E,a.exitCode=null,I+=1;return}}let A=await ot(k,e$1.stage,fe,ge,dt,lt,pt,!e$1.json);a.executionCommand=A.command,a.errorCategory=A.errorCategory,a.healthStatus=A.healthStatus,a.failureDiagnostic=A.failureDiagnostic,a.durationMs=Date.now()-E,a.exitCode=A.exitCode;let q=a.runtimeExecutions?.[0];if(q&&(q.command=A.command,q.status=A.skipped?"skipped":A.exitCode===0?"passed":"failed",q.exitCode=A.exitCode,q.durationMs=a.durationMs,q.reason=A.message,q.errorCategory=A.errorCategory,q.failureDiagnostic=A.failureDiagnostic),A.skipped?(a.status="skipped",a.reason=A.message):A.exitCode===0?(a.status="passed",a.reason=void 0):(a.status="failed",a.reason=A.message||"stage command failed",a.errorMessage=A.message),I+=1,!e$1.json){let f=P>0?Math.round(I/P*100):100,j=a.status==="passed"?D.green("\u2705"):D.red("\u274C");if(console.log(D.gray(`${j} [${I}/${P}] (${f}%) ${G} ${a.durationMs}ms`)),a.status==="failed"){a.reason&&console.log(D.red(` Reason: ${a.reason}`)),a.executionCommand&&console.log(D.gray(` Command: ${a.executionCommand}`));let M=Wt(a.runtimeDetected);M&&a.errorCategory==="setup"&&console.log(D.gray(` Hint: ${M}`));}}};if(L&&R.length>1){let k=0,a=false,G=new Array(S).fill(null).map(async()=>{for(;k<R.length;){if(a&&!_)return;let E=k;k+=1;let N=R[E];await g(N),U.get(N)?.status==="failed"&&(a=true);}});if(await Promise.all(G),!_&&a){let E=false;for(let N of R){let T=U.get(N);if(T){if(T.status==="failed"){E=true;continue}E&&T.status==="skipped"&&(T.reason=T.reason||"stopped after failure");}}}}else for(let k of R){await g(k);let a=U.get(k);if(!_&&a?.status==="failed"){let G=R.slice(R.indexOf(k)+1);for(let E of G){let N=U.get(E);N&&(N.status="skipped",N.reason="stopped after failure");}break}}}let z=[];for(let g of s){let k=U.get(g);k&&z.push(k);}let V=z.filter(g=>g.status==="passed").length,J=z.filter(g=>g.status==="failed").length,b$1=z.filter(g=>g.status==="skipped").length;c({blockId:"workspace.run.execute",status:J>0?"failed":h?"blocked":"succeeded",message:`Workspace run finished: ${V} passed, ${J} failed, ${b$1} skipped`,component:"workspace-run",progress:{completed:P,total:P,percent:100},attributes:{passed:V,failed:J,skipped:b$1,stage:e$1.stage}});let $=e$1.strict===true,me=J>0||$&&v.some(g=>g.status==="fail"||g.status==="warn")?1:0,ee={schemaVersion:"1.0",workspacePath:t,stage:e$1.stage,generatedAt:new Date().toISOString(),durationMs:Date.now()-r,options:{affected:p,blastRadius:c$1,since:p?m:null,parallel:L,maxWorkers:S,continueOnError:_,strict:$,enforceGates:C,scope:i,reusePassed:e$1.reusePassed===true,planOnly:e$1.planOnly===true,runtime:e$1.runtime?.trim()||null},selection:{mode:x,since:p?m:null,scope:i,graphStatus:l,expansionDepth:w},gates:{enforced:C,results:v,blocked:!!h,blockingGate:h?.gate},summary:{projectCount:s.length,selectedCount:R.length,passed:V,failed:J,skipped:b$1,exitCode:me},projects:z,enterpriseControls:{jsonReady:true,evidencePath:b}},Se=y.join(t,b);c({blockId:"workspace.run.publish",status:"running",message:"Publishing workspace run evidence",component:"workspace.run"});try{await e(t,ee),c({blockId:"workspace.run.publish",status:"succeeded",message:"Workspace run evidence published",component:"workspace.run"}),d$1({workspacePath:t,relativePath:b,blockId:"workspace.run.publish"});}catch(g){throw c({blockId:"workspace.run.publish",status:"failed",message:g instanceof Error?g.message:"Workspace run evidence publish failed",component:"workspace.run"}),g}return e$1.json||(h&&(console.log(D.red(`\u274C Workspace run blocked by ${h.gate}`)),console.log(D.gray(` ${h.summary}`))),console.log(D.cyan(`Workspace run (${e$1.stage}) => passed: ${V}, failed: ${J}, skipped: ${b$1}`)),console.log(D.gray(`Report: ${Se}`))),ee}export{Ot as a,Rr as b};
@@ -1,2 +0,0 @@
1
- import {D as D$1}from'./chunk-OH6LV5JP.js';import {j,m as m$1}from'./chunk-7NKM6EHE.js';import {a as a$1}from'./chunk-GR6442P7.js';import {a as a$2,g,f,h}from'./chunk-BLEIUQL6.js';import {b}from'./chunk-VN2MKTQO.js';import {a}from'./chunk-XWKGZRHN.js';import {a as a$3}from'./chunk-252EKOR6.js';import {l}from'./chunk-OCGZNSOE.js';import {c}from'./chunk-64XWHDZ3.js';import {t as t$1,u,q as q$1}from'./chunk-VQZ5PI5J.js';import {t,p,s,q}from'./chunk-ODK4LCEL.js';import*as m from'path';import m__default from'path';import k from'fs-extra';import Ee from'crypto';var Ce="unknown-run";function ce(e){let t=c();return !t||t===Ce?e:{...e,runId:t}}async function ie(e,t){await k.ensureDir(m.dirname(e));let r=`${e}.${process.pid}.${Date.now()}.${Ee.randomUUID()}.tmp`;try{await k.writeJSON(r,t,{spaces:2}),await k.move(r,e,{overwrite:true});}finally{await k.remove(r).catch(()=>{});}}function pe(e){return q$1(e,"imported-projects.json")}async function I(e){let t=(await Promise.all(t$1(e,"imported-projects.json").map(async r=>await k.pathExists(r)?r:null))).find(r=>typeof r=="string");if(!t)return [];try{let r=await k.readJSON(t);if(!r||typeof r!="object"||r.version!==1||!Array.isArray(r.projects))throw new Error("expected a version 1 registry with a projects array");let o=r.projects,n=o.filter(i=>{if(!i||typeof i!="object")return false;let c=i;return typeof c.name=="string"&&typeof c.path=="string"&&typeof c.stack=="string"&&typeof c.confidence=="string"&&typeof c.importedAt=="string"});if(n.length!==o.length)throw new Error("one or more project entries are invalid");return n}catch(r){throw new Error(`Imported-project registry is invalid: ${t}`,{cause:r})}}async function Je(e,t){if(t.length===0)return;let r=pe(e);await a(`${r}.lock`,async()=>{let o=await I(e),n=new Map;for(let c of o)n.set(c.path,c);for(let c of t)n.set(c.path,c);let i=Array.from(n.values()).sort((c,u)=>c.name.localeCompare(u.name)).map(c=>({...c}));await ie(r,{version:1,updatedAt:new Date().toISOString(),projects:i});},{timeoutMs:3e4,staleMs:6e4,purpose:"imported-projects-registry-upsert"});}async function Ue(e,t){if(t.length===0)return;let r=pe(e);await a(`${r}.lock`,async()=>{let o=await I(e),n=new Set(t.map(c=>m.resolve(c))),i=o.filter(c=>!n.has(m.resolve(c.path)));await ie(r,{version:1,updatedAt:new Date().toISOString(),projects:i});},{timeoutMs:3e4,staleMs:6e4,purpose:"imported-projects-registry-remove"});}var Ye="workspace-dependency-graph.v1",de=["code-import","package-dep","event-pub-sub","service-dependsOn","shared-resource"],le=["inferred","contract","manual"];var v=t.workspaceContract,ve=p.contractVerify,_=s.workspaceContract.schemaVersion,je=q.contractVerify,N=class extends Error{constructor(r){super(`Workspace contract verification failed: ${r.violations.join("; ")}`);this.verification=r;this.name="WorkspaceContractVerificationError";}verification};function he(e){return e.replace(/\\/g,"/")}function z(e){let t=he(e).trim();return !t||t.startsWith("/")||t.startsWith("~")||/^[a-zA-Z]:\//.test(t)||t.includes("\0")?false:!t.split("/").filter(Boolean).some(r=>r===".."||r===".")}function ue(e,t){return e.trim().toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/-+/g,"-").replace(/^[-_.]+|[-_.]+$/g,"").slice(0,80)||t}function be(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.trim().length>0):[]}function me(e){let r=(Array.isArray(e.ports)?e.ports:[]).map(i=>{if(!i||typeof i!="object"||Array.isArray(i))return null;let c=i,u=Number(c.port);if(!Number.isInteger(u)||u<1||u>65535)return null;let g=c.protocol==="https"||c.protocol==="grpc"||c.protocol==="tcp"||c.protocol==="udp"?c.protocol:"http";return {name:typeof c.name=="string"&&c.name.trim()?c.name:"http",port:u,protocol:g}}).filter(i=>i!==null);if(r.length>0)return r;let o=e.frontend&&typeof e.frontend=="object"&&!Array.isArray(e.frontend)?e.frontend:void 0,n=Number(e.port??o?.default_port);return Number.isInteger(n)&&n>=1&&n<=65535?[{name:"http",port:n,protocol:"http"}]:[]}async function We(e){let t=m__default.join(e,"Dockerfile");if(!await k.pathExists(t))return [];try{let r=await k.readFile(t,"utf8"),o=new Map;for(let n of r.matchAll(/^\s*EXPOSE\s+(.+)$/gim))for(let i of n[1].split(/\s+/)){let c=i.match(/^(\d{1,5})(?:\/(tcp|udp))?$/i),u=Number(c?.[1]);if(!c||!Number.isInteger(u)||u<1||u>65535)continue;let g=c[2]?.toLowerCase();o.set(u,{name:"http",port:u,protocol:g==="udp"?"udp":"http"});}return [...o.values()].sort((n,i)=>n.port-i.port)}catch{return []}}async function D(e){for(let t of e)if(await k.pathExists(t))return t;return null}async function Se(e){for(let r of t$1(e,"workspace.json"))try{let o=await k.readJson(r);return {name:typeof o.workspace_name=="string"&&o.workspace_name.trim()||typeof o.name=="string"&&o.name.trim()||m__default.basename(e),profile:typeof o.profile=="string"?o.profile:void 0}}catch{}let t=await a$3(e);return t?.name?.trim()?{name:t.name.trim()}:{name:m__default.basename(e)}}async function Ae(e){let t=[],r=[e],o=new Set,n=new Set([".git",".workspai",".rapidkit","node_modules",".venv","venv","dist","build","target",".next",".turbo",".cache"]);for(;r.length>0;){let i=r.shift();if(!i||o.has(i))continue;o.add(i);let c=await D(u(i,"project.json")),u$1=await D(u(i,"context.json"));if(c||u$1){t.push(c??u$1??"");continue}let g;try{g=await k.readdir(i,{withFileTypes:true});}catch{continue}for(let d of g)!d.isDirectory()||n.has(d.name)||a$1(d.name)||r.push(m__default.join(i,d.name));}return t.sort()}function Re(e){let t=(e||"").toLowerCase();if(t.includes("fastapi"))return "fastapi";if(t.includes("nestjs"))return "nestjs";if(t.includes("springboot"))return "springboot";if(t.includes("gofiber"))return "fiber";if(t.includes("gogin"))return "gin"}function xe(e,t){let r=(e||"").toLowerCase(),o=(t||"").toLowerCase();return r.includes("vscode-extension")?null:r.includes("fastapi")?8e3:r.includes("nestjs")?3e3:r.includes("springboot")?8080:r.includes("gofiber")?3e3:r.includes("gogin")?8080:r.startsWith("adopted.")?null:o==="node"?3e3:o==="python"?8e3:o==="java"||o==="go"?8080:null}function U(e,t){let r=e;for(;t.has(r)&&r<65535;)r+=1;return r}function B(e,t,r){let o=e!==void 0&&e.source===void 0,n=xe(t.kit,t.runtime),i=e?.ports||[],c=t.ports||[],u=(t.kit||"").toLowerCase().includes("vscode-extension"),g=t.source==="adopted-local"&&e?.source!==void 0,d=t.source!==void 0&&e?.source!==void 0,p=(u&&c.length===0?[]:g?c.length>0?c:n?[{name:"http",port:U(n,r),protocol:"http"}]:[]:i.length>0?i:c.length>0?c:n?[{name:"http",port:U(n,r),protocol:"http"}]:[]).map(w=>({...w,port:U(w.port,r)}));for(let w of p)r.add(w.port);let f={...t,...e,slug:e?.slug||t.slug,relativePath:o&&e?.relativePath&&z(e.relativePath)?e.relativePath:t.relativePath,source:o&&e?.source||t.source,relationship:o&&e?.relationship||t.relationship,externalPath:o&&e?.externalPath||t.externalPath,runtime:d?t.runtime:e?.runtime||t.runtime,framework:d?t.framework:e?.framework||t.framework,kit:d?t.kit:e?.kit||t.kit,modules:e?.modules?.length?e.modules:t.modules,ports:p,contracts:{owns:e?.contracts?.owns||[],apis:e?.contracts?.apis||[],publishes:e?.contracts?.publishes||[],consumes:e?.contracts?.consumes||[],dependsOn:e?.contracts?.dependsOn||[],env:e?.contracts?.env||[]}},h=JSON.stringify(e||null)!==JSON.stringify(f);return {project:f,changed:h}}async function ke(e){let t=m__default.resolve(e.workspacePath),r=await Se(t),o=await Ae(t),n=await I(t),i=new Map(n.map(s=>[m__default.resolve(s.path),s])),c=[];for(let s of n){let p=m__default.resolve(s.path),f=await D(u(p,"project.json"))??await D(u(p,"context.json"));!f||o.some(h=>m__default.resolve(h)===m__default.resolve(f))||c.push({projectJsonPath:f,registryEntry:s});}let u$1=[],g=[...o.map(s=>({projectJsonPath:s,registryEntry:i.get(m__default.resolve(m__default.dirname(m__default.dirname(s))))})),...c];for(let{projectJsonPath:s,registryEntry:p}of g){let f=m__default.dirname(m__default.dirname(s)),h=he(m__default.relative(t,f)),w=p!==void 0&&!z(h),C=ue(p?.name||m__default.basename(f),m__default.basename(f)),b=w?`external/${C}`:h||C,P=await k.readJson(s),a=typeof P.kit_name=="string"&&P.kit_name||typeof P.kit=="string"&&P.kit||void 0,E=j(P)?m$1(f,P):void 0,j$1=E!==void 0&&E.key!=="unknown",T=j$1?E.runtime:typeof P.runtime=="string"?P.runtime:void 0,y=j$1?E.key:typeof P.framework=="string"&&P.framework||Re(a),$=p?.relationship==="adopted"?"adopted":"imported",K=j$1?`${$}.${E.key}`:a;u$1.push({slug:p?.name||b||m__default.basename(f),relativePath:b,source:p?.source??"workspace",relationship:p?.relationship,externalPath:w?f:void 0,runtime:T,framework:y,kit:K,modules:be(P.modules),ports:me(P).length>0?me(P):await We(f),contracts:{owns:[],apis:[],publishes:[],consumes:[],dependsOn:[],env:[]}});}let d=new Map;for(let s of u$1){let p=ue(s.slug,s.relativePath),f=d.get(p);(!f||f.source!=="workspace"&&s.source==="workspace")&&d.set(p,s);}return {schemaVersion:_,kind:"rapidkit.workspace.contract",generatedAt:(e.now??new Date).toISOString(),workspace:r,projects:[...d.values()]}}async function ut(e){let t=m__default.resolve(e.outputPath||a$2(e.workspacePath,v));if(await k.pathExists(t)&&e.force!==true)throw new Error(`Workspace contract already exists: ${t}. Use --force to overwrite.`);let r=await ke({workspacePath:e.workspacePath,now:e.now}),o=new Set,n={...r,projects:r.projects.map(c=>B(void 0,c,o).project)},i=await ye({workspacePath:e.workspacePath,contractPath:t,contract:n});if(e.strict&&i.status==="failed")throw new N(i);return await we({workspacePath:e.workspacePath,contractPath:t,contract:n,now:e.now}),{contractPath:t,contract:n}}async function mt(e){let t=m__default.resolve(e.workspacePath),r=a$2(t,v),o=await g(t,v)??r,n=await ke({workspacePath:t,now:e.now}),i=await k.pathExists(o)?await k.readJson(o):null,c=new Map((i?.projects||[]).map(h=>[h.slug,h])),u=new Set,g$1=[],d=[],s=[];for(let h of n.projects){let w=c.get(h.slug),C=B(w,h,u);w?C.changed&&d.push(h.slug):g$1.push(h.slug),s.push(C.project),c.delete(h.slug);}for(let h of c.values()){if(h.source)continue;let w=B(h,h,u);s.push(w.project);}let p={schemaVersion:_,kind:"rapidkit.workspace.contract",generatedAt:(e.now??new Date).toISOString(),workspace:{...i?.workspace||{},...n.workspace,name:n.workspace.name||i?.workspace?.name||m__default.basename(t)},projects:s.sort((h,w)=>h.slug.localeCompare(w.slug))},f=await ye({workspacePath:t,contractPath:r,contract:p});if(e.strict&&f.status==="failed")throw new N(f);return await we({workspacePath:t,contractPath:r,contract:p,now:e.now}),{contractPath:r,contract:p,addedProjects:g$1,updatedProjects:d,verification:f}}async function ge(e){return await k.pathExists(e)?{exists:true,contents:await k.readFile(e)}:{exists:false}}async function fe(e,t){if(!t.exists){await k.remove(e);return}await k.outputFile(e,t.contents);}async function we(e){let{buildWorkspaceRegistrySummary:t,WORKSPACE_REGISTRY_SUMMARY_RELATIVE_PATH:r}=await import('./workspace-registry-summary-4KX4QD55.js'),o=await t(e.workspacePath,{now:e.now,contract:e.contract}),n=a$2(e.workspacePath,r),i=c=>{if(!c||typeof c!="object"||Array.isArray(c))return JSON.stringify(c);let{generatedAt:u,...g}=c;return JSON.stringify(g)};if(await k.pathExists(e.contractPath)&&await k.pathExists(n)){let[c,u]=await Promise.all([k.readJson(e.contractPath),k.readJson(n)]);if(i(c)===i(e.contract)&&i(u)===i(o))return}b(v,e.contract),b(r,o),await f(e.workspacePath,v,async()=>{let[c,u]=await Promise.all([ge(e.contractPath),ge(n)]);try{if(e.contractPath===a$2(e.workspacePath,v)?await h(e.workspacePath,v,e.contract):(await k.ensureDir(m__default.dirname(e.contractPath)),await k.writeJson(e.contractPath,e.contract,{spaces:2})),process.env.WORKSPAI_TEST_FAIL_WORKSPACE_REGISTRY_PUBLISH==="1")throw new Error("Injected workspace registry summary publication failure.");await h(e.workspacePath,r,o);}catch(g){let s=(await Promise.allSettled([fe(e.contractPath,c),fe(n,u)])).filter(p=>p.status==="rejected");throw s.length>0?new AggregateError([g,...s.map(p=>p.reason)],"Workspace contract publication failed and rollback was incomplete."):g}});}async function Pe(e){let t=e.contractPath??(await g(e.workspacePath,v)||a$2(e.workspacePath,v)),r=await k.readJson(t);return {contractPath:t,contract:r}}var _e={metadata:[".workspai/project.json",".workspai/context.json",".rapidkit/project.json",".rapidkit/context.json"],manifests:["package.json","package-lock.json","pnpm-lock.yaml","yarn.lock","pyproject.toml","poetry.lock","requirements.txt","go.mod","go.sum","pom.xml","build.gradle","build.gradle.kts","Cargo.toml","Gemfile","composer.json"],entrypoints:["src/main.ts","src/index.ts","src/app.ts","src/main.js","src/index.js","main.py","app/main.py","manage.py","main.go","cmd/main.go","Program.cs"],apiSpecifications:["openapi.yaml","openapi.yml","openapi.json","swagger.yaml","swagger.yml","swagger.json"],infrastructure:["Dockerfile","docker-compose.yml","docker-compose.yaml","compose.yml","compose.yaml","k8s","kubernetes","terraform"],documentation:["README.md","ARCHITECTURE.md","CONTRIBUTING.md","docs"]};function Ge(e,t){return t.externalPath?m__default.resolve(t.externalPath):m__default.resolve(e,t.relativePath)}async function Oe(e){let t={metadata:[],manifests:[],entrypoints:[],apiSpecifications:[],infrastructure:[],documentation:[]};for(let[r,o]of Object.entries(_e))for(let n of o)await k.pathExists(m__default.join(e,n))&&t[r].push(n);try{let r=await k.readdir(e,{withFileTypes:true});for(let o of r)o.isFile()&&(o.name.endsWith(".csproj")||o.name.endsWith(".sln"))&&t.manifests.push(o.name),o.isFile()&&o.name.endsWith(".tf")&&t.infrastructure.push(o.name);}catch{}for(let r of Object.values(t))r.sort((o,n)=>o.localeCompare(n));return t}function x(e){return !e||typeof e!="object"||Array.isArray(e)?[]:Object.keys(e).sort((t,r)=>t.localeCompare(r))}async function Ie(e){try{let t=await k.readJson(m__default.join(e,"package.json")),r={runtime:x(t.dependencies),development:x(t.devDependencies),peer:x(t.peerDependencies),optional:x(t.optionalDependencies)};return {...typeof t.name=="string"?{name:t.name}:{},...typeof t.version=="string"?{version:t.version}:{},...typeof t.private=="boolean"?{private:t.private}:{},scripts:x(t.scripts),dependencies:r,dependencyCount:new Set(Object.values(r).flat()).size}}catch{return}}async function Ne(e){for(let t of [".env.example",".env.sample",".env.template"])try{return (await k.readFile(m__default.join(e,t),"utf8")).split(/\r?\n/).map(o=>o.trim()).filter(o=>o.length>0&&!o.startsWith("#")&&o.includes("=")).map(o=>o.slice(0,o.indexOf("=")).trim()).filter(o=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(o)).sort((o,n)=>o.localeCompare(n))}catch{}return []}function De(e,t){try{let r=D$1(e);if(r.engine!=="unknown")return r;let o=k.pathExistsSync(m__default.join(e,"package.json"))?"npm":k.pathExistsSync(m__default.join(e,"pyproject.toml"))?"python":k.pathExistsSync(m__default.join(e,"requirements.txt"))?"pip":"unknown";return {...r,engine:o,runtime:t.runtime??r.runtime,framework:t.framework??r.framework,frameworkDisplayName:t.framework??r.frameworkDisplayName}}catch{return {schemaVersion:1,scope:"project",projectRoot:null,engine:"unknown",runtime:"unknown",runtimeCandidates:["unknown"],compositeRuntime:false,lifecycleCoverage:"complete",framework:"unknown",frameworkDisplayName:"Unknown",frameworkConfidence:"low",frameworkSupportTier:"observed",runtimeSupportTier:"observed",runtimeDoctorSupport:"observed",moduleSupport:false,fleetStages:[],localOnlyCommands:[],commandMap:{},supportedCommands:[],unsupportedCommands:[],globalCommands:[]}}}function Te(e,t,r){let o=e.projects.map(n=>({id:n.slug,path:n.relativePath,runtime:n.runtime,framework:n.framework}));return {schemaVersion:"workspace-dependency-graph.v1",generatedAt:t,nodes:o,edges:[],stats:{nodeCount:o.length,edgeCount:0,inferredEdges:0,contractEdges:0,manualEdges:0,authoritativeEdges:0,lowConfidenceEdges:0,orphanCount:o.length,connectedNodeCount:0,density:0,edgeCoverageRatio:o.length===0?1:0,evidenceCoverageRatio:1,hotspotCount:0,hasCycle:false},diagnostics:[{code:"graph.enrichment.failed",severity:"warning",message:r,recommendation:"Review project manifests and graph overrides, then rerun workspace contract graph."}]}}async function gt(e){let{contractPath:t,contract:r}=await Pe(e),o=e.now??new Date,n=o.toISOString(),{buildWorkspaceModel:i,workspaceModelProjectTopology:c}=await import('./workspace-model-DUGPW5IB.js'),{hashWorkspaceModel:u}=await import('./workspace-model-hash-ZXYPIGCW.js'),g=await i({workspacePath:e.workspacePath,includeEvidence:false,now:o}),d=c(g)??Te(r,n,"The canonical Workspace Model did not provide a project dependency topology."),s=new Map(d.nodes.map(a=>[a.id,a.operationalProfile])),{buildWorkspaceKnowledgeGraph:p$1}=await import('./workspace-knowledge-graph-OUTCLYS2.js'),f=await p$1({workspacePath:e.workspacePath,workspace:{name:g.workspace.name,...g.workspace.profile?{profile:g.workspace.profile}:{}},contract:r,projectTopology:d,now:o,projects:g.projects.map(a=>({id:a.name,path:a.path,...a.absolutePath?{absolutePath:a.absolutePath}:{},runtime:a.runtime,runtimeCandidates:a.runtimeCandidates,framework:a.framework,...a.kit?{kit:a.kit}:{}})),source:{kind:"workspace-model",artifact:p.model,hashAlgorithm:"sha256",hash:u(g)}}),h=await Promise.all(r.projects.map(async a=>{let l=Ge(e.workspacePath,a),[E,j,T]=await Promise.all([Oe(l),Ie(l),Ne(l)]),y=De(l,a);return {id:a.slug,label:a.slug,relativePath:a.relativePath,source:a.source,relationship:a.relationship,externalPath:a.externalPath,runtime:a.runtime??y.runtime,framework:a.framework??y.framework,kit:a.kit,modules:a.modules,ports:a.ports,apis:a.contracts.apis,owns:a.contracts.owns,env:[...new Set([...a.contracts.env,...T])].sort(($,K)=>$.localeCompare(K)),contracts:{owns:[...a.contracts.owns],apis:[...a.contracts.apis],publishes:[...a.contracts.publishes],consumes:[...a.contracts.consumes],dependsOn:[...a.contracts.dependsOn],env:[...a.contracts.env]},capabilities:{engine:y.engine,supportTier:y.frameworkSupportTier,runtimeSupportTier:y.runtimeSupportTier,doctorSupport:y.runtimeDoctorSupport,moduleSupport:y.moduleSupport,fleetStages:[...y.fleetStages],localOnlyCommands:[...y.localOnlyCommands],supportedCommands:[...y.supportedCommands]},files:E,...j?{package:j}:{},...s.get(a.slug)?{operationalProfile:s.get(a.slug)}:{}}})),w=new Set(h.map(a=>a.id)),C=new Map,b=[];for(let a of r.projects){for(let l of a.contracts.dependsOn||[])w.has(l)&&b.push({from:l,to:a.slug,type:"dependency",label:"dependsOn"});for(let l of a.contracts.publishes||[])C.has(l)||C.set(l,new Set),C.get(l)?.add(a.slug);}for(let a of r.projects)for(let l of a.contracts.consumes||[]){let E=C.get(l);if(E)for(let j of E)j!==a.slug&&b.push({from:j,to:a.slug,type:"event",label:l});}let P={schemaVersion:1,kind:"rapidkit.workspace.contract.graph",workspace:r.workspace,generatedAt:n,nodes:h.sort((a,l)=>a.id.localeCompare(l.id)),edges:b.sort((a,l)=>`${a.from}:${a.to}:${a.type}:${a.label}`.localeCompare(`${l.from}:${l.to}:${l.type}:${l.label}`)),dependencyGraph:d,knowledgeGraph:f,semantics:{legacyEdges:"producer-to-consumer",dependencyGraphEdges:"consumer-to-dependency"},summary:{projectCount:h.length,dependencyEdges:b.filter(a=>a.type==="dependency").length,eventEdges:b.filter(a=>a.type==="event").length,portCount:h.reduce((a,l)=>a+l.ports.length,0),apiCount:h.reduce((a,l)=>a+l.apis.length,0),relationshipEdges:d.stats.edgeCount,inferredEdges:d.stats.inferredEdges,authoritativeEdges:d.stats.authoritativeEdges,orphanProjects:d.stats.orphanCount,hotspotProjects:d.stats.hotspotCount,evidenceCoverageRatio:d.stats.evidenceCoverageRatio,edgeCoverageRatio:d.stats.edgeCoverageRatio,connectedProjects:d.stats.connectedNodeCount,lowConfidenceEdges:d.stats.lowConfidenceEdges,hasCycle:d.stats.hasCycle,manifestCount:h.reduce((a,l)=>a+l.files.manifests.length,0),entrypointCount:h.reduce((a,l)=>a+l.files.entrypoints.length,0),diagnostics:d.diagnostics?.length??0,relationshipKinds:Object.fromEntries(de.map(a=>[a,d.edges.filter(l=>l.kind===a).length])),relationshipSources:Object.fromEntries(le.map(a=>[a,d.edges.filter(l=>l.source===a).length])),entityCount:f.quality.entityCount,knowledgeRelations:f.quality.relationCount,proofCount:f.quality.proofCount,providerCount:f.providers.length,knowledgeUnknowns:f.quality.unknownCount}};return {contractPath:t,graph:P}}async function ye(e){let t=e.contract?{contractPath:e.contractPath??a$2(e.workspacePath,v),contract:e.contract}:await Pe(e),{contractPath:r,contract:o}=t,n=[],i=[];o.kind!=="rapidkit.workspace.contract"&&n.push("Contract kind must be rapidkit.workspace.contract."),o.schemaVersion!==_&&n.push(`Contract schemaVersion must be ${_}.`),o.workspace?.name||n.push("Contract workspace.name is required."),Array.isArray(o.projects)||n.push("Contract projects must be an array.");let c=new Set,u=new Map;for(let s of o.projects||[]){if(!s.slug){n.push("Every project must declare slug.");continue}c.has(s.slug)&&n.push(`Duplicate project slug: ${s.slug}.`),c.add(s.slug),s.relativePath?z(s.relativePath)||n.push(`Project ${s.slug} declares unsafe relativePath: ${s.relativePath}.`):n.push(`Project ${s.slug} must declare relativePath.`),s.externalPath&&(s.relationship==="adopted"||s.source==="adopted-local"||s.source==="local-folder"||s.source==="git-url"||n.push(`Project ${s.slug} declares externalPath without imported/adopted provenance.`),m__default.isAbsolute(s.externalPath)||n.push(`Project ${s.slug} declares non-absolute externalPath.`));for(let p of s.ports||[]){(!Number.isInteger(p.port)||p.port<1||p.port>65535)&&n.push(`Project ${s.slug} declares invalid port: ${p.port}.`);let f=u.get(p.port);f&&n.push(`Port ${p.port} is claimed by both ${f} and ${s.slug}.`),u.set(p.port,s.slug);}for(let p of s.contracts?.apis||[])(!p.name?.trim()||!p.basePath?.startsWith("/"))&&n.push(`Project ${s.slug} declares invalid API contract.`);for(let p of [...s.contracts?.publishes||[],...s.contracts?.consumes||[]])p.trim()||n.push(`Project ${s.slug} declares an empty event contract.`);for(let p of s.contracts?.env||[])/^[A-Z_][A-Z0-9_]*$/.test(p)||n.push(`Project ${s.slug} declares invalid env contract: ${p}.`);for(let p of s.contracts?.dependsOn||[])c.has(p);}for(let s of o.projects||[])for(let p of s.contracts?.dependsOn||[])c.has(p)||n.push(`Project ${s.slug} depends on unknown project: ${p}.`);i.push({id:"schema",status:o.kind==="rapidkit.workspace.contract"&&o.schemaVersion===_?"passed":"failed",message:"Contract schema and kind are valid."}),i.push({id:"projects",status:Array.isArray(o.projects)?"passed":"failed",message:`Contract declares ${Array.isArray(o.projects)?o.projects.length:0} project(s).`}),i.push({id:"ports",status:n.some(s=>s.toLowerCase().includes("port"))?"failed":"passed",message:"Project port declarations are valid and collision-free."}),i.push({id:"dependencies",status:n.some(s=>s.includes("depends on unknown project"))?"failed":"passed",message:"Project dependencies point to known project slugs."}),i.push({id:"contracts",status:n.some(s=>s.includes("unsafe relativePath")||s.includes("invalid API contract")||s.includes("event contract")||s.includes("env contract"))?"failed":"passed",message:"Project path, API, event, and env contracts are valid."});let g=await l(e.workspacePath);if(g.moduleCount>0){for(let s of g.issues)n.push(`${m__default.basename(s.projectRoot)}: ${s.message} (slug=${s.slug})`);i.push({id:"module-paths",status:g.status,message:g.status==="passed"?`All ${g.moduleCount} registered module(s) resolve under canonical paths.`:`${g.issues.length} registered module(s) missing canonical install paths.`});}else e.strict&&i.push({id:"module-paths",status:"passed",message:"No registry-backed modules declared in workspace projects."});return {status:n.length>0?"failed":"passed",contractPath:r,projectCount:Array.isArray(o.projects)?o.projects.length:0,checks:i,violations:n}}async function ft(e){let t=m__default.resolve(e.workspacePath),r={schemaVersion:je,generatedAt:e.generatedAt??new Date().toISOString(),status:e.result.status,contractPath:e.result.contractPath,projectCount:e.result.projectCount,checks:e.result.checks,violations:e.result.violations};return h(t,ve,ce(r))}
2
- export{I as a,Je as b,Ue as c,ce as d,Ye as e,de as f,v as g,ve as h,_ as i,je as j,N as k,Ae as l,ke as m,ut as n,mt as o,Pe as p,gt as q,ye as r,ft as s};
@@ -1,12 +0,0 @@
1
- import {a}from'./chunk-HCFOVANQ.js';import {n,h,i}from'./chunk-O2CFT2A3.js';import {B}from'./chunk-OH6LV5JP.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 Ts=p.knowledgeGraph;function Ms(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 Pt(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 Nt=5e5,Kt=2e6;function be(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 $t=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"]),jt=new Set(["AGENTS.md","CLAUDE.md","GEMINI.md","QWEN.md"]),It=new Set([".workspai-workspace"]),Gt=[/(?:^|\/)\.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 Ne(e,t){let s=D(u.relative(e,t));return jt.has(u.posix.basename(s))||It.has(u.posix.basename(s))||Gt.some(o=>o.test(s))}var Dt=new Set(["test","tests","spec","specs","e2e","integration","integration-tests","integration_tests","__tests__","fixture","fixtures","__fixtures__","testdata"]),qt=new Set(["examples","samples","worked"]);function Ke(e,t){let s=u.relative(e,t).split(u.sep).map(i=>i.toLowerCase()),o=u.basename(t).toLowerCase();return s.some(i=>Dt.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 Ge(e,t){return u.relative(e,t).split(u.sep).map(s=>s.toLowerCase()).some(s=>qt.has(s))}function ee(e,t){return Ke(e,t)||Ge(e,t)}function ue(e,t){return u.relative(e,t).split(u.sep).some(s=>s.toLowerCase()==="generated")}var Be=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"]),Zt=new Set([...Be,"go.work","go.work.sum"]),Ht=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"]),it=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 Ut=new Set(["external","third_party","third-party","vendor","vendors","vendored"]),Jt=new Set(["app","apps","cli","cmd","core","extensions","internal","lib","packages","services","src"]);function rt(e,t){let o=D(u.relative(t,e)).split("/").filter(Boolean),i=o[0]?.toLowerCase()??"";return (o.some(l=>Ut.has(l.toLowerCase()))?1e3:0)+(Jt.has(i)?-100:0)+Math.min(o.length,20)}function Vt(e,t,s){if(e.length<=t)return [...e];let o=[...e].sort((c,r)=>rt(c,s)-rt(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 Yt(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 Pe(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=>Zt.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=`${Yt(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 Qt(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 Me(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 Xt=[{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"}],Et=[{pattern:/^\s*import(?:.+?from\s*)?["']([^"']+)["']/,detail:"import"},{pattern:/require\(["']([^"']+)["']\)/,detail:"require"}],Ct=[{pattern:/^\s*from\s+([A-Za-z0-9_.]+)\s+import\s+/,detail:"import"},{pattern:/^\s*import\s+([A-Za-z0-9_.]+)(?:\s|$)/,detail:"import"}],eo=[{pattern:/^\s*#\s*include\s*["<]([^">]+)[">]/,detail:"include"}],to=[{pattern:/^\s*use\s+([A-Za-z0-9_:*.-]+)/,detail:"use"}],oo=[{pattern:/^\s*import\s+(?:static\s+)?([A-Za-z0-9_.*]+)\s*;?/,detail:"import"}],so=[{pattern:/^\s*(?:global\s+)?using\s+([A-Za-z0-9_.]+)/,detail:"using"}],io=[{pattern:/^\s*import\s+(?:[A-Za-z0-9_.]+\s+)?["']([^"']+)["']/,detail:"import"}],Rt=[{pattern:/^\s*require(?:_relative)?\s+["']([^"']+)["']/,detail:"require"}],ro=[{pattern:/^\s*use\s+([A-Za-z0-9_\\]+)/,detail:"use"}],no=[{pattern:/^\s*(?:alias|import|require|use)\s+([A-Za-z0-9_.]+)/,detail:"import"}],ao=[{pattern:/^\s*import\s+["']([^"']+)["']/,detail:"import"}],co=[{pattern:/\brequire\s*\(?\s*["']([^"']+)["']/,detail:"require"}],lo=[{pattern:/^\s*(?:library|require)\s*\(\s*["']?([^"')\s]+)["']?/,detail:"import"}],po=[...Et,...Ct,{pattern:/^\s*(?:import|using|use)\s+([A-Za-z0-9_:.*\\/.-]+)/,detail:"import"},...Rt];function uo(e){let t=u.extname(e).toLowerCase();return [".cjs",".cts",".js",".jsx",".mjs",".mts",".ts",".tsx",".vue",".svelte"].includes(t)?Et:t===".py"?Ct:[".c",".cc",".cpp",".h",".hpp"].includes(t)?eo:t===".rs"?to:[".java",".kt",".kts",".scala"].includes(t)?oo:[".cs",".fs",".fsx",".vb"].includes(t)?so:t===".go"?io:t===".rb"?Rt:t===".php"?ro:[".ex",".exs"].includes(t)?no:t===".dart"?ao:t===".lua"?co:t===".r"?lo:po}function fo(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 go(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 mo(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 ho(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 St(e,t){return ho(e,mo(e,t))}var ke=[{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"}],vo=[{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"}],yo=[{pattern:/\.route\s*\(\s*["']([^"']+)["']\s*,\s*(?:routing::)?(?:get|post|put|delete|patch|options|head)\s*\(/i,detail:"rust router route"}],bo=[{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 ko(e){let t=u.extname(e).toLowerCase();return t===".go"?[...ke,...vo]:t===".rs"?[...ke,...yo]:t===".cs"?[...ke,...bo]:ke}function wo(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 $e(e){return createHash("sha256").update(e).digest("hex")}function C(e,t){return `wkg:${e}:${$e(`${e}\0${t}`).slice(0,20)}`}function D(e){return e.replace(/\\/g,"/")}function he(e){let t=D(e).replace(/^\.\//,"");return !t||t.startsWith("/")||/^[A-Za-z]:\//.test(t)||t.split("/").includes("..")?"unknown":t}function E(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=E(e);return t?Object.keys(t).map(s=>s.trim()).filter(Boolean).sort():[]}function Po(e){if(Array.isArray(e))return e.map(s=>typeof s=="string"?s.split("=",1)[0]?.trim():"").filter(s=>!!s).sort();let t=E(e);return t?Object.keys(t).sort():[]}function $o(e){return Object.fromEntries(Object.entries(e).filter(t=>t[1]!==void 0).sort(([t],[s])=>t.localeCompare(s)))}async function jo(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()?!$t.has(a.name)&&!a$1(a.name)&&i.push(p):a.isFile()&&(Ne(e,p)||o.push(p)));}}return o.sort((r,d)=>r.localeCompare(d))}async function De(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 Io=promisify(execFile);async function Z(e,t){let s=await Io("git",t,{cwd:e,encoding:"buffer",maxBuffer:268435456,windowsHide:true});return Buffer.isBuffer(s.stdout)?s.stdout:Buffer.from(s.stdout)}function qe(){return [".",...[...$t].sort((e,t)=>e.localeCompare(t)).map(e=>`:(exclude,glob)**/${e}/**`),...[...jt].sort((e,t)=>e.localeCompare(t)).map(e=>`:(exclude,glob)**/${e}`),...[...It].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 Le(e){return e.toString("utf8").split("\0").filter(Boolean).map(t=>t.replace(/\\/gu,"/"))}async function Eo(e,t,s=[]){try{await Z(e,["rev-parse","--show-toplevel"]);let o=qe(),[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(Le(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 Ee([...new Set([...r,...Le(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=>!Ne(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?Pe(p,t,e):p,eligibleFileCount:p.length,eligibleFileCountExact:true,truncated:f,fileLimit:t,strategy:"git-index-worktree-v1"}}catch{return null}}async function ve(e,t,s=[]){let o=await Eo(e,t,s);if(o)return o;let i=await jo(e,t+1,s),n=i.length>t;return {files:n?Pe(i,t,e):i,eligibleFileCount:i.length,eligibleFileCountExact:!n,truncated:n,fileLimit:t,strategy:"filesystem-bfs-v1"}}async function Co(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=qe(),[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 Ee([...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 De(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 Ro(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=qe(),[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 Ee([...new Set(Le(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}`))||Ne(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 De(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 Ee(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 We(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 Co({...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 Ee(i,16,async d=>({path:D(u.relative(e.root,d)),hash:await De(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 So(e){let t=u.resolve(e.workspacePath),s=[...e.projects].sort((r,d)=>r.id.localeCompare(d.id)),o=s.map(r=>r.absolutePath?u.resolve(r.absolutePath):u.resolve(t,r.path)),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 ve(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([We({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=r.absolutePath?u.resolve(r.absolutePath):u.resolve(t,r.path),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 ve(d,e.projectFileLimit)),f=e.inventories?.scanBudgetsByProject?.get(r.id);return We({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)),At(c)}function At(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 Os(e){if(At(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=>n.absolutePath?u.resolve(n.absolutePath):u.resolve(t,n.path)),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?l.absolutePath?u.resolve(l.absolutePath):u.resolve(t,l.path):t;if(n.strategy==="git-worktree-v2"){let v=await Ro({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 ve(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 We({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=E(s);return o?[o]:[]}return parseAllDocuments(t,{logLevel:"silent"}).map(s=>E(s.toJSON())).filter(s=>s!==null)}function fe(e){return [...new Set([...e.workspaceFiles,...e.projects.flatMap(t=>e.filesByProject.get(t.id)??[])])].sort((t,s)=>t.localeCompare(s))}function je(e){return /^(?:openapi|swagger)(?:\.[^.]+)?\.(?:json|ya?ml)$/i.test(u.basename(e))}function nt(e){let t=u.basename(e).toLowerCase();return /\.(?:graphql|gql|proto)$/.test(t)||/^asyncapi(?:\.[^.]+)?\.(?:json|ya?ml)$/.test(t)}function at(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 ct(e){return /(?:^|[\\/])(?:README|ARCHITECTURE|CONTRIBUTING|SECURITY)\.md$/i.test(e)}function Ao(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 dt(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 lt(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 fe(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 pt(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 fe(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 ut(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=>Ao(s.root,o))))].sort((s,o)=>s.localeCompare(o))}async function ft(e){let t=[];for(let s of fe(e))if(/\.ya?ml$/i.test(s))try{(await ae(s)).some(i=>{let n=E(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 xe=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 he(u.posix.join(s.artifactPrefix,o))}return he(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,$e(await _.readFile(t.absolutePath)));}catch{this.contentHashes.set(t.absolutePath,null);}s=this.contentHashes.get(t.absolutePath)??void 0;}let o=he(t.artifact),i=C("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=C(t.kind,t.key),o=$o(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:$e(JSON.stringify({kind:t.kind,key:t.key,attributes:c}))},attributes:c,proofIds:d}),s}addRelation(t){let s=C("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 Fo(e){return [...e.matchAll(/["']([^"']+)["']/g)].map(t=>t[1])}function Ie(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 Fo(e.slice(i+1,c))}return []}function gt(e){return e.trim().match(/^([A-Za-z0-9][A-Za-z0-9_.-]*)/)?.[1]??""}function Ze(e){return e.replace(/\.(?:workspace|version|path|git|optional|features|default-features|package)$/,"")}function _o(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 we(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 To(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:Ie(t,"components").sort(),targets:Ie(t,"targets").sort()}}function Mo(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:E(c.exports)?Object.keys(E(c.exports)).sort():P(c.exports)?["."]:[],executables:E(c.bin)?Object.keys(E(c.bin)).sort():P(c.bin)?[P(c.name)??"default"]:[],runtimeConstraints:Object.entries(E(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"?Ie(a,"dependencies").map(gt):d==="project.optional-dependencies"||d==="dependency-groups"?[...a.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=\s*\[/gm)].flatMap(p=>Ie(a,p[1]??p[2])).map(gt):[...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:we(t,"name",void 0),version:we(t,"version",s.version),dependencies:[...c.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=/gm)].map(r=>r[1]??r[2]).map(Ze).filter((r,d,a)=>a.indexOf(r)===d).sort(),metadata:{edition:we(t,"edition",s.edition)??"unknown",rustVersion:we(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 Oo(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 mt(e,t){let s=e==="cargo"?Ze(t):t;return e==="cargo"?s.toLowerCase().replace(/[-_]/g,""):s.toLowerCase()}function Bo(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${mt(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${mt(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=C("module",`dependency:${n}:${Ze(c)}`);e.relations.delete(C("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 Lo={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=>Be.has(u.basename(b))),r=l??c,d=await t$1.addProof({provider:this.id,artifact:r?t$1.artifactPath(r,i):he(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:Pt(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"),w=Oo(b),R=t$1.artifactPath(v,i),k=await t$1.addProof({provider:this.id,artifact:R,absolutePath:v,pointer:"/use",trust:"authoritative",derivation:"authored",confidence:"high",detail:`Go workspace with ${w.length} member(s)`}),$=t$1.addEntity({kind:"module",key:`go-workspace:${i.id}:${R}`,label:`${i.id} Go workspace`,projectId:i.id,aliases:["go.work"],attributes:{ecosystem:"go",manifest:R,members:w},proofIds:[k]});t$1.addRelation({from:a,to:$,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[k]}),m={entityId:$,members:w,proofId:k};}catch{}let h={},y=n.find(b=>u.resolve(b)===u.resolve(i.root,"Cargo.toml"));if(y)try{h=_o(await _.readFile(y,"utf8"));}catch{}for(let b of n){let w=u.basename(b);if(/^(?:\.env\.example|\.env\.sample|\.env\.template)$/i.test(w))try{let k=await _.readFile(b,"utf8");for(let $ of k.split(/\r?\n/)){let S=$.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=/)?.[1];S&&p.add(S);}}catch{}let R=Ke(i.root,b);if(R&&f.push(b),!(R||Ge(i.root,b))&&!(!Be.has(w)&&!/\.(?:cs|fs|vb)proj$/i.test(w)))try{let k=await _.readFile(b,"utf8"),$=Mo(b,k,h),S=t$1.artifactPath(b,i),I=await t$1.addProof({provider:this.id,artifact:S,absolutePath:b,pointer:"/",confidence:$.name?"high":"medium",detail:`${$.ecosystem} manifest`}),F=t$1.addEntity({kind:"package",key:`package:${i.id}:${$.ecosystem}:${$.name??"anonymous"}:${S}`,label:$.name??`${i.id}/${D(u.relative(i.root,b))}`,projectId:i.id,aliases:[w,...$.name?[$.name]:[]],attributes:{ecosystem:$.ecosystem,version:$.version,manifest:S,dependencies:$.dependencies,...$.metadata??{}},proofIds:[I]});t$1.addRelation({from:a,to:F,kind:"contains",proofIds:[I]});for(let O of $.dependencies.slice(0,500)){let T=t$1.addEntity({kind:"module",key:`dependency:${$.ecosystem}:${O}`,label:O,aliases:[O],attributes:{ecosystem:$.ecosystem,external:true},proofIds:[I]});t$1.addRelation({from:F,to:T,kind:"depends-on",trust:"authoritative",derivation:"authored",proofIds:[I]});}}catch{}}if(m){let b=[...t$1.entities.values()].filter(w=>w.kind==="package"&&w.projectId===i.id);for(let w of m.members){let R=t$1.artifactPath(u.join(i.root,w,"go.mod"),i),k=b.find($=>$.attributes.manifest===R);k&&t$1.addRelation({from:m.entityId,to:k.id,kind:"contains",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:[...new Set([m.proofId,...k.proofIds])]});}}if(Bo(t$1,i.id),p.size>0){let b=n.find(w=>/^\.env\.(?:example|sample|template)$/i.test(u.basename(w)));if(b){let w=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"}),R=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:[w]});t$1.addRelation({from:a,to:R,kind:"configured-by",proofIds:[w]});}}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`}),w=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:w,to:a,kind:"tests",proofIds:[b]});let R=new Map;for(let k of f){if(!te.has(u.extname(k).toLowerCase()))continue;let $=J(k,i.runtime),S=R.get($)??[];S.push(k),R.set($,S);}for(let[k,$]of [...R].sort(([S],[I])=>S.localeCompare(I))){let S=await t$1.addProof({provider:this.id,artifact:t$1.artifactPath($[0],i),absolutePath:$[0],detail:`${$.length} ${k} test source file(s) discovered`}),I=t$1.addEntity({kind:"test-suite",key:`tests:${i.id}:${k}`,label:`${i.id} ${k} tests`,projectId:i.id,attributes:{fileCount:$.length,language:k},proofIds:[S]});t$1.addRelation({from:I,to:a,kind:"tests",proofIds:[S]});}}}}};function Oe(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function ht(e){if(Array.isArray(e))return e.length;let t=E(e);return t?Object.keys(t).length:0}var Wo={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=E(await _.readJson(o));if(P(E(i?.engines)?.vscode)||E(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=E(await _.readJson(o));}catch{continue}let n=E(i?.contributes),l=P(E(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(([F,O])=>`${F}:${ht(O)}`).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(([F,O])=>`${F}:${ht(O)}`).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=E(n?.menus),b=Object.values(y??{}).flatMap(F=>Array.isArray(F)?F:[]),w=Array.isArray(n?.keybindings)?n.keybindings:[];for(let[F,O]of h.entries()){let T=E(O),B=P(T?.command);if(!B)continue;let L=`/contributes/commands/${F}`,x=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:L,trust:"authoritative",derivation:"authored",confidence:"high",detail:`VS Code command ${B}`}),q=b.filter(N=>P(E(N)?.command)===B).length,K=w.filter(N=>P(E(N)?.command)===B).length,U=e.state.addEntity({kind:"api",key:`vscode-command:${t.id}:${B}`,label:B,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:L},proofIds:[x]});e.state.addRelation({from:m,to:U,kind:"exposes",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:[x]});}let R=E(n?.viewsContainers),k=new Map;for(let[F,O]of Object.entries(R??{}))if(Array.isArray(O))for(let[T,B]of O.entries()){let L=E(B),x=P(L?.id);if(!x)continue;let q=`/contributes/viewsContainers/${Oe(F)}/${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(L?.title)].filter(N=>!!N),attributes:{surface:"vscode-view-container",title:P(L?.title),location:F,icon:P(L?.icon),manifest:p,pointer:q},proofIds:[K]});k.set(x,U),e.state.addRelation({from:m,to:U,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[K]});}let $=E(n?.views);for(let[F,O]of Object.entries($??{}))if(Array.isArray(O))for(let[T,B]of O.entries()){let L=E(B),x=P(L?.id);if(!x)continue;let q=`/contributes/views/${Oe(F)}/${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(L?.name),P(L?.contextualTitle)].filter(N=>!!N),attributes:{surface:L?.type==="webview"?"vscode-webview":"vscode-view",name:P(L?.name),contextualTitle:P(L?.contextualTitle),containerId:F,viewType:P(L?.type)??"tree",manifest:p,pointer:q},proofIds:[K]});e.state.addRelation({from:k.get(F)??m,to:U,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[K]});}let S=Array.isArray(n?.configuration)?n.configuration:n?.configuration?[n.configuration]:[];for(let[F,O]of S.entries()){let T=E(O),B=E(T?.properties);for(let[L,x]of Object.entries(B??{})){let q=E(x),U=`${Array.isArray(n?.configuration)?`/contributes/configuration/${F}`:"/contributes/configuration"}/properties/${Oe(L)}`,N=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:U,trust:"authoritative",derivation:"authored",detail:`VS Code configuration ${L}`}),ge=e.state.addEntity({kind:"schema",key:`vscode-configuration:${t.id}:${L}`,label:L,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:ge,kind:"configured-by",trust:"authoritative",derivation:"authored",proofIds:[N]});}}let I=Array.isArray(n?.chatParticipants)?n.chatParticipants:[];for(let[F,O]of I.entries()){let T=E(O),B=P(T?.id);if(!B)continue;let L=`/contributes/chatParticipants/${F}`,x=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:L,trust:"authoritative",derivation:"authored",detail:`VS Code chat participant ${B}`}),q=e.state.addEntity({kind:"api",key:`vscode-chat-participant:${t.id}:${B}`,label:B,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:L},proofIds:[x]});e.state.addRelation({from:m,to:q,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[x]});}}}}};function vt(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 xo={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(vt(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=vt(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]});}}}},zo={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=>it.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=To(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=>it.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()),ue(t.root,a)&&f.generated.push(a),Ke(t.root,a)?f.tests.push(a):Ge(t.root,a)?f.examples.push(a):f.production.push(a),r.set(p,f);}let d=C("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,w,R)=>!!b&&R.indexOf(b)===w),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."});}}},No={id:"source-structure",version:"1.2.0",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=Vt(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=St(f,v),h=e.state.artifactPath(f,t),y=await e.state.addProof({provider:this.id,artifact:h,absolutePath:f,derivation:"extracted",trust:"observed",confidence:"high",detail:`${J(f,t.runtime)} source file`}),b=e.state.addEntity({kind:"file",key:`file:${t.id}:${h}`,label:h,projectId:t.id,aliases:[u.basename(f)],attributes:{artifact:h,language:J(f,t.runtime),bytes:Buffer.byteLength(v),...ue(t.root,f)?{generated:true}:{}},proofIds:[y]});e.state.addRelation({from:C("project",`project:${t.id}`),to:b,kind:"contains",proofIds:[y]});let w=Me(m,uo(f),250);for(let k of w){let $=await e.state.addProof({provider:this.id,artifact:h,absolutePath:f,line:k.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${k.detail}: ${k.name}`}),S=fo(f,k.name,r,t.root,k.detail);if(S){let I=e.state.artifactPath(S,t),F=C("file",`file:${t.id}:${I}`);if(!e.state.entities.has(F)){let O=await _.stat(S).catch(()=>null),T=await e.state.addProof({provider:this.id,artifact:I,...O?.isFile()&&O.size<=2*1024*1024?{absolutePath:S}:{},derivation:"extracted",trust:"observed",confidence:"high",detail:"Locally imported artifact resolved from the project inventory"}),B=e.state.addEntity({kind:"file",key:`file:${t.id}:${I}`,label:I,projectId:t.id,aliases:[u.basename(S)],attributes:{artifact:I,language:J(S,t.runtime),bytes:d.get(u.resolve(S))??(O?.isFile()?O.size:void 0)},proofIds:[T]});e.state.addRelation({from:C("project",`project:${t.id}`),to:B,kind:"contains",proofIds:[T]});}e.state.addRelation({from:b,to:F,kind:"imports",confidence:"high",proofIds:[$]});}else {let I=k.name.startsWith(".");I&&(p+=1);let F=J(f,t.runtime),O=!I&&(F==="javascript"||F==="typescript")?k.name.startsWith("@")?k.name.split("/").slice(0,2).join("/"):k.name.split("/")[0]:null,T=O?C("module",`dependency:npm:${O}`):null,B=T?e.state.entities.get(T):void 0,L=B?e.state.addEntity({kind:"module",key:B.identity.key,label:B.label,aliases:[...B.identity.aliases,k.name],attributes:B.attributes,proofIds:[...B.proofIds,$]}):e.state.addEntity({kind:"module",key:`module:${t.id}:${k.name}`,label:k.name,projectId:t.id,aliases:[k.name],attributes:{specifier:k.name,resolution:I?"unresolved-local":"external"},proofIds:[$]});e.state.addRelation({from:b,to:L,kind:"imports",confidence:I?"low":"medium",proofIds:[$]});}}if(a<n){let k=Me(m,Xt,Math.min(100,n-a));a+=k.length;for(let $ of k){let S=await e.state.addProof({provider:this.id,artifact:h,absolutePath:f,line:$.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${$.detail}: ${$.name}`}),I=e.state.addEntity({kind:"symbol",key:`symbol:${t.id}:${h}:${$.detail}:${$.name}`,label:$.name,projectId:t.id,attributes:{symbolKind:$.detail,language:J(f,t.runtime),...ue(t.root,f)?{generated:true}:{}},proofIds:[S]});e.state.addRelation({from:b,to:I,kind:"defines",confidence:"medium",proofIds:[S]});}}let R=t.framework!=="vscode-extension"&&t.kind!=="extension";for(let k of R?Me(m,ko(f),100):[]){let $=v.split(/\r?\n/)[k.line-1]??"";if(k.detail!=="swagger route"&&go(f,$))continue;let S=wo($,k.detail),I=await e.state.addProof({provider:this.id,artifact:h,absolutePath:f,line:k.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${S} ${k.name}`}),F=e.state.addEntity({kind:"endpoint",key:`source-endpoint:${t.id}:${h}:${S}:${k.name}`,label:`${S} ${k.name||"/"}`,projectId:t.id,attributes:{method:S,path:k.name||"/",source:h},proofIds:[I]});e.state.addRelation({from:b,to:F,kind:"defines",confidence:"medium",proofIds:[I]});}}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."});}}},Ko={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 w=await _.stat(m);if(!w.isFile()||w.size>2*1024*1024)continue;h=St(m,await _.readFile(m,"utf8"));}catch{continue}let y=[...d.get(p.id)??[],...[...a.get(p.id)??[]].flatMap(w=>d.get(w)??[])],b=new Map;for(let w of y){if(w.label.length<3)continue;let R=b.get(w.label)??[];R.some(k=>k.id===w.id)||R.push(w),b.set(w.label,R);}for(let[w,R]of b){let k=w.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),$=new RegExp(`\\b${k}\\s*\\(`,"g"),S=[...h.matchAll($)];if(S.length===0)continue;if(R.length!==1){t+=S.length;continue}let I=R[0];for(let F of S.slice(0,20)){if(n>=i)break;let O=h.slice(0,F.index??0).split(/\r?\n/).length;if(I.proofIds.some(B=>e.state.proofs.get(B)?.line===O))continue;let T=await e.state.addProof({provider:this.id,artifact:f,absolutePath:m,line:O,derivation:"extracted",trust:"observed",confidence:"medium",detail:`Unambiguous local call to ${w}`});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 Go(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 Do(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 qo(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=Do(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 yt(e,t){let s=e.indexOf(t);return s<0?void 0:e.slice(0,s).split(/\r?\n/).length}var Zo={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=qo(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:C("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:C("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=C("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=yt(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),w=await e.state.addProof({provider:this.id,artifact:b,absolutePath:h,derivation:"extracted",trust:"observed",confidence:"high",detail:`${a.name} JavaScript/TypeScript extension source`}),R=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:[w]});e.state.addRelation({from:d,to:R,kind:"references",confidence:"high",proofIds:[p,w]}),e.state.addRelation({from:R,to:f,kind:"implements-protocol",proofIds:[w,p]});for(let[k,$]of v){let S=yt(y,k);if(!S)continue;let I=await e.state.addProof({provider:this.id,artifact:b,absolutePath:h,line:S,derivation:"extracted",trust:"observed",confidence:"high",detail:`JavaScript/TypeScript call to Rust operation ${k}`});e.state.addRelation({from:R,to:$,kind:"calls",confidence:"high",proofIds:[I,p]});}}}}}}},Ho=/^[A-Z][A-Za-z0-9_]{3,}$/,Uo=new Set(["Client","Config","Context","Data","Error","Event","Message","Options","Request","Response","Result","Schema","Type","Value"]),Jo={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=C("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:w,command:R}=b,k=e.state.addEntity({kind:"lifecycle-stage",key:`lifecycle-stage:${t.id}:${d}:${p}:${w}`,label:`${w} \xB7 ${d}:${m}:${u.basename(a)}`,projectId:t.id,aliases:[`${d}:${w}`,w],attributes:{stage:w,command:R,runtime:d,workingDirectory:m,commandConfidence:b.confidence,preflight:b.preflight},proofIds:v});e.state.addRelation({from:y,to:k,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=Go(d);if(!a)continue;let p=e.state.artifactPath(r,t),f=C("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(k=>k.kind==="defines"&&k.from===f).map(k=>e.state.entities.get(k.to)).filter(k=>k?.kind==="symbol");for(let k of h)e.state.addEntity({kind:"symbol",key:k.identity.key,label:k.label,projectId:t.id,aliases:k.identity.aliases,attributes:{...k.attributes,generated:true},proofIds:[...k.proofIds,v]});let y=a.replace(/^\.\//,"").replace(/[.,:]$/,""),w=[u.resolve(t.root,y),u.resolve(u.dirname(r),y)].find(k=>o.includes(k));if(w){let k=e.state.artifactPath(w,t),$=C("file",`file:${t.id}:${k}`);if(e.state.entities.has($)){e.state.addRelation({from:f,to:$,kind:"generated-by",derivation:"extracted",trust:"observed",confidence:"high",proofIds:[v]});continue}}let R=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:R,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"&&Ho.test(r.label)&&!Uo.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]});}}}},Vo={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=C("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]});}}}},Yo={id:"openapi",version:"1.1.0",scanTier:"complete-inventory",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(je))},async run(e){for(let t of e.projects){let s=(e.filesByProject.get(t.id)??[]).filter(je);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=E(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=C("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=E(E(n.components)?.schemas)??E(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=E(n.paths);for(let m of Object.keys(v??{}).sort()){let h=E(v?.[m]);for(let y of Object.keys(h??{}).filter(b=>Ht.has(b.toLowerCase())).sort()){let b=E(h?.[y]),w=`/paths/${m.replace(/~/g,"~0").replace(/\//g,"~1")}/${y}`,R=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(o,t),absolutePath:o,pointer:w,trust:"authoritative",detail:`${y.toUpperCase()} ${m}`}),k=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:[R]});e.state.addRelation({from:a,to:k,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[R]});let $=JSON.stringify(b??{});for(let[S,I]of f)$.includes(`/${S}`)&&e.state.addRelation({from:k,to:I,kind:"references",trust:"authoritative",derivation:"authored",proofIds:[R]});}}}}}}},ze=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 Qo(e,t){for(let s of ['"',"'","`"]){let o=e.indexOf(`${s}${t}${s}`);if(o>=0)return o}return -1}var Xo={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)&&!ue(t.root,n)).sort((n,l)=>ne(t.root,l)-ne(t.root,n)||n.localeCompare(l)).slice(0,ze),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=Qo(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:C("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]});}}}},es=8,ts=/(?:^|[,{\n]\s*)["']?(?:routes?|upstreams?|virtualHosts?|pathPrefix)["']?\s*[:=]/im;function bt(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))?ts.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 os={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)&&!ue(t.root,s)&&!je(s)).slice(0,ze).some(s=>{try{let o=_.statSync(s);return o.isFile()&&o.size<=2*1024*1024&&bt(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)&&!ue(t.root,l)&&!je(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,ze),i=0,n=Math.max(1,s.length*es);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=bt(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:C("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 ss(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 is={id:"interface-contracts",version:"1.1.0",scanTier:"complete-inventory",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(nt))},async run(e){for(let t of e.projects){let s=(e.filesByProject.get(t.id)??[]).filter(nt);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=ss(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:C("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:C("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=$e(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:C("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:C("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(E(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:C("project",`project:${t.id}`),to:r,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[c]});for(let d of Object.keys(E(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{}}}}},rs={id:"infrastructure-as-code",version:"1.0.0",scanTier:"complete-inventory",applicable(e){return fe(e).some(at)},async run(e){let t=fe(e).filter(at);for(let s of t){let o=ie(e.projects,s),i=o?.id??e.state.workspaceName,n=o?C("project",`project:${o.id}`):C("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 kt(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 ns(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=E(n);return l?Object.keys(l).some(c=>s.has(c)):false});return o.length>0?Object.fromEntries(o):void 0}var as={id:"compose",version:"1.2.0",scanTier:"complete-inventory",async applicable(e){return (await lt(e)).length>0},async run(e){let t=[];for(let s of await lt(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=E(o?.services)??ns(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=E(i[a]),f=p?.build,v=P(f)??P(E(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),w=e.state.entities.get(C("service",b)),R=Array.isArray(w?.attributes.ports)?w.attributes.ports.filter(I=>typeof I=="string"):[],k=Array.isArray(w?.attributes.networks)?w.attributes.networks.filter(I=>typeof I=="string"):[],$=Array.isArray(w?.attributes.environmentKeys)?w.attributes.environmentKeys.filter(I=>typeof I=="string"):[],S=e.state.addEntity({kind:"service",key:b,label:a,...m?.id||w?.projectId?{projectId:m?.id??w?.projectId}:{},attributes:{image:y??w?.attributes.image,ports:[...new Set([...R,...H(p?.ports).map(String)])].sort((I,F)=>I.localeCompare(F)),networks:[...new Set([...k,...H(p?.networks)])].sort((I,F)=>I.localeCompare(F)),environmentKeys:[...new Set([...$,...Po(p?.environment)])].sort((I,F)=>I.localeCompare(F))},proofIds:[...w?.proofIds??[],h],mergeArrayAttributes:["ports","networks","environmentKeys"]});if(m&&e.state.addRelation({from:C("project",`project:${m.id}`),to:S,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[h]}),y){let I=e.state.addEntity({kind:kt(y),key:`image:${y}`,label:y,...m?{projectId:m.id}:{},attributes:{image:y},proofIds:[h]});e.state.addRelation({from:S,to:I,kind:kt(y)==="container"?"runs-on":"depends-on",trust:"authoritative",derivation:"authored",proofIds:[h]});}}for(let a of Object.keys(i).sort()){let p=E(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:C("service",d(a)),to:C("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]});}}},cs={id:"documentation",version:"1.0.0",scanTier:"complete-inventory",applicable(e){return fe(e).some(ct)},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=>ct(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?C("project",`project:${l.id}`):C("workspace",`workspace:${e.state.workspaceName}`);e.state.addRelation({from:a,to:p,kind:"documents",trust:"authoritative",derivation:"authored",proofIds:[d]});}}}},ds={id:"kubernetes",version:"1.0.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),o=s?C("project",`project:${s.id}`):C("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=E(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(E(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]});}}}},ls={id:"ci-workflow",version:"1.0.0",scanTier:"complete-inventory",applicable(e){return ut(e).length>0},async run(e){let t=ut(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(E(v.jobs)??{}),...Object.keys(E(E(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?C("project",`project:${o.id}`):C("workspace",`workspace:${e.state.workspaceName}`),to:f,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[p]});}}},ps={id:"codeowners",version:"1.2.0",scanTier:"complete-inventory",async applicable(e){return (await pt(e)).length>0},async run(e){for(let t of await pt(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?C("project",`project:${s.id}`):C("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,w=D(u.relative(b,m.root));return h&&(w==="."||w.startsWith(h.replace(/\/$/,""))||m.path.startsWith(h.replace(/\/$/,"")))}),v=f.length>0?f.map(m=>C("project",`project:${m.id}`)):s?[C("project",`project:${s.id}`)]:[C("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]});}}}}},us={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=>dt(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=>dt(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?C("project",`project:${l.id}`):C("workspace",`workspace:${e.state.workspaceName}`);e.state.addRelation({from:f,to:p,kind:"decided-by",trust:"authoritative",derivation:"authored",proofIds:[a]});}}}},wt=[Lo,Wo,xo,zo,No,Ko,Zo,Jo,Vo,Yo,is,Xo,os,as,rs,ds,ls,ps,cs,us];function fs(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 gs(e,t){for(let s of t.edges){let o=[];for(let i of s.evidence){let n=he(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:C("project",`project:${s.from}`),to:C("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 ms(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 Bs(e){let t=u.resolve(e.workspacePath),s=e.now??new Date,o=e.projects.map(g=>{let j=g.absolutePath?u.resolve(g.absolutePath):u.resolve(t,g.path),M=u.relative(t,j),G=M.startsWith(`..${u.sep}`)||M===".."||u.isAbsolute(M);return {...g,root:j,artifactPrefix:G?`external/${g.id}`:D(M||g.id)}}).sort((g,j)=>g.id.localeCompare(j.id)),i$1=new xe(t,s,e.workspace.name),n=be(e.inventoryFileLimitPerProject,"WORKSPAI_GRAPH_INVENTORY_LIMIT"),l=be(e.maxFilesPerProject,"WORKSPAI_GRAPH_DEEP_BUDGET"),c$1=be(e.semanticFilesPerProject,"WORKSPAI_GRAPH_SEMANTIC_BUDGET"),r=be(e.sourceFilesPerProject,"WORKSPAI_GRAPH_SOURCE_BUDGET"),d=Math.max(100,Math.min(n??Nt,Kt)),a$1=new Map(await Promise.all(o.map(async g=>[g.id,await ve(g.root,d)]))),p=new Map(o.map(g=>[g.id,a$1.get(g.id)?.files??[]])),f=new Map(o.map(g=>{let j=a$1.get(g.id);return [g.id,Qt({eligibleFiles:j?.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 j=a$1.get(g.id)?.files??[],M=f.get(g.id)?.deepFileBudget??j.length;return [g.id,Pe(j,M,g.root)]})),m=new Map(o.map(g=>{let j=a$1.get(g.id)?.files??[],M=f.get(g.id)?.semanticFileBudget??j.length;return [g.id,Pe(j,M,g.root)]})),h$1=await ve(t,d,o.map(g=>g.root)),y=h$1.files.filter(g=>!o.some(j=>g===j.root||g.startsWith(`${j.root}${u.sep}`))),b={...h$1,files:y,eligibleFileCount:h$1.eligibleFileCountExact&&!h$1.truncated?y.length:h$1.eligibleFileCount,truncated:h$1.truncated},w=await So({workspacePath:t,projects:o,projectFileLimit:d,workspaceFileLimit:d,inventories:{workspaceInventory:b,projectInventories:a$1,scanBudgetsByProject:f}});for(let g of w.scopes.filter(j=>j.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 R=new Map(w.scopes.filter(g=>g.kind==="project").map(g=>[g.id,g.hash])),k=new Map((e.previousGraph?.source.inputs?.scopes??[]).filter(g=>g.kind==="project").map(g=>[g.id,g.hash])),$="1.4.0",S=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])),F=o.map(g=>u.resolve(g.root)),O=F.some((g,j)=>F.some((M,G)=>G!==j&&(M===g||M.startsWith(`${g}${u.sep}`)))),T=wt.every(g=>S.get(g.id)===g.version)&&I.get("incremental-project-cache")?.version===$,B=!O&&e.previousGraph?.workspace.name===e.workspace.name&&T&&R.size>0&&R.size===k.size&&[...R.keys()].every(g=>k.has(g)),L=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 j=L.get(g.id);if(!j)return false;let M=Pt(g),G=Object.fromEntries(Object.keys(M).map(W=>[W,j.attributes[W]]));return c(G)===c(M)},K=new Set(B?[...R].filter(([g,j])=>k.get(g)===j&&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)),ge=[];if(e.previousGraph&&K.size>0){let g=e.previousGraph.entities.filter(A=>A.projectId&&K.has(A.projectId)),j=new Set(g.map(A=>A.id)),M=new Map(e.previousGraph.entities.map(A=>[A.id,A])),G=new Map(e.previousGraph.proofs.map(A=>[A.id,A])),W=new Set(j),V=true;for(;V;){V=false;for(let A of e.previousGraph.relations){let re=W.has(A.from),le=W.has(A.to);if(re===le)continue;let Ae=re?A.to:A.from,Fe=M.get(Ae);if(!Fe||Fe.projectId!==void 0)continue;[...Fe.proofIds,...A.proofIds].some(Bt=>{let Ye=G.get(Bt)?.provider;return Ye!==void 0&&U.has(Ye)})&&(W.add(Ae),V=true);}}if(N.length===0)for(let A of e.previousGraph.entities)A.projectId===void 0&&A.proofIds.some(re=>{let le=G.get(re)?.provider;return le!==void 0&&U.has(le)})&&W.add(A.id);let z=new Set([...W].filter(A=>!j.has(A))),X=[...g,...e.previousGraph.entities.filter(A=>z.has(A.id))],Y=new Set(X.map(A=>A.id)),Q=e.previousGraph.relations.filter(A=>Y.has(A.from)&&Y.has(A.to));ge=e.previousGraph.relations.filter(A=>{let re=Y.has(A.from),le=Y.has(A.to);return re===le?false:M.get(re?A.to:A.from)?.projectId===void 0});let ye=new Set([...X,...Q].flatMap(A=>A.proofIds));for(let A of e.previousGraph.proofs)ye.has(A.id)&&i$1.proofs.set(A.id,A);for(let A of X)i$1.entities.set(A.id,A);for(let A of Q)i$1.relations.set(A.id,A);i$1.providers.push({id:"incremental-project-cache",version:$,status:"passed",permission:"filesystem-read",discoveredEntities:X.length,discoveredRelations:Q.length,proofCount:ye.size,diagnostics:[`Reused ${K.size} unchanged project scope(s); rescanning ${N.length}.`]});}else i$1.providers.push({id:"incremental-project-cache",version:$,status:"skipped",permission:"filesystem-read",discoveredEntities:0,discoveredRelations:0,proofCount:0,diagnostics:[O?`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 Ce={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},Ft={...Ce,projects:N};for(let g of wt){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 j={entities:i$1.entities.size,relations:i$1.relations.size,proofs:i$1.proofs.size,diagnostics:i$1.diagnostics.length},M="passed",G=null;try{let z=K.size>0&&U.has(g.id)?Ft:Ce;if(!(g.applicable?await g.applicable(z):true))M="skipped";else {await g.run(z);let Y=i$1.entities.size-j.entities,Q=i$1.relations.size-j.relations,ye=i$1.proofs.size-j.proofs;Y===0&&Q===0&&ye===0?(M="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>j.diagnostics&&(M="partial");}}catch(z){M="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(j.diagnostics).map(z=>`${z.code}: ${z.message}`);G&&W.length===0&&W.push(G);let V=fs(g,Ce,M);M==="passed"&&V?.some(z=>z.status==="bounded")&&(M="partial"),i$1.providers.push({id:g.id,version:g.version,status:M,permission:"filesystem-read",discoveredEntities:i$1.entities.size-j.entities,discoveredRelations:i$1.relations.size-j.relations,proofCount:i$1.proofs.size-j.proofs,diagnostics:W,...V?{inputCoverage:V}:{}});}if(e.previousGraph&&ge.length>0){let g=new Map(e.previousGraph.proofs.map(W=>[W.id,W])),j=0,M=0;for(let W of ge)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),j+=1);for(let V of W.proofIds){let z=g.get(V);z&&!i$1.proofs.has(V)&&(i$1.proofs.set(V,z),M+=1);}}let G=i$1.providers.find(W=>W.id==="incremental-project-cache");G&&(G.discoveredRelations+=j,G.proofCount+=M,G.diagnostics.push(`Restored ${j} reusable project-to-workspace relation(s) with ${M} additional proof(s).`));}ms(i$1),await gs(i$1,e.projectTopology);let ce=[...i$1.entities.values()].sort((g,j)=>g.id.localeCompare(j.id)),de=[...i$1.relations.values()].sort((g,j)=>g.id.localeCompare(j.id)),He=[...i$1.proofs.values()].sort((g,j)=>g.id.localeCompare(j.id)),_t=ce.filter(g=>g.proofIds.length>0).length,Tt=de.filter(g=>g.proofIds.length>0).length,Mt=i$1.providers.filter(g=>g.status!=="failed").length,Re=e.projectTopology.diagnostics?.filter(g=>g.code==="graph.edges.missing").flatMap(g=>g.nodeIds??[])??[];Re.length>0&&i$1.diagnostics.push({code:"graph.knowledge.project_relationships_unknown",severity:"warning",message:`${Re.length} project(s) have no proven inter-project relationship. This is unknown topology, not proof of independence.`,entityIds:Re.map(g=>C("project",`project:${g}`)),recommendation:"Author service contracts or add OpenAPI, Compose, Kubernetes, package or import evidence."});let Ue=h(ce,de),Je=w.scopes.filter(g=>!g.truncated).length,Ve=w.scopes.length-Je,Se=i$1.providers.reduce((g,j)=>(j.status==="failed"?g.failed+=1:j.status==="skipped"||j.inputCoverage?.every(M=>M.status==="not-applicable")?g.notApplicable+=1:j.status==="partial"||j.inputCoverage?.some(M=>M.status==="bounded")?g.bounded+=1:g.complete+=1,g),{complete:0,bounded:0,notApplicable:0,failed:0}),Ot=Ve>0||Se.bounded>0||Se.failed>0?"bounded":"complete";return {schemaVersion:a,generatedAt:s.toISOString(),source:{...e.source,inputs:w},workspace:e.workspace,projectTopology:e.projectTopology,entities:ce,relations:de,proofs:He,providers:[...i$1.providers].sort((g,j)=>g.id.localeCompare(j.id)),quality:{entityCount:ce.length,relationCount:de.length,proofCount:He.length,entityProofCoverageRatio:ce.length===0?1:_t/ce.length,relationProofCoverageRatio:de.length===0?1:Tt/de.length,providerSuccessRatio:i$1.providers.length===0?1:Mt/i$1.providers.length,conflictCount:i$1.diagnostics.filter(g=>g.code.includes("conflict")).length,unknownCount:i(i$1.diagnostics,Ue),bindingCoverage:Ue,completeness:{status:Ot,inventory:{scopeCount:w.scopes.length,completeScopes:Je,boundedScopes:Ve,eligibleFiles:w.scopes.reduce((g,j)=>g+(j.eligibleFileCount??j.fileCount),0),indexedFiles:w.scopes.reduce((g,j)=>g+j.fileCount,0),eligibleFileCountExact:w.scopes.every(g=>g.eligibleFileCountExact!==false)},providers:Se},portable:true,secretValuesEmitted:false},diagnostics:[...i$1.diagnostics].sort((g,j)=>g.code.localeCompare(j.code)||g.message.localeCompare(j.message))}}function Ls(e,t){return C(e,t)}
12
- export{Ts as a,Ms as b,So as c,Os as d,Bs as e,Ls as f};