workspai 0.68.0 → 0.70.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/README.md +38 -18
  2. package/contracts/cli-runtime-command-inventory.v1.snapshot.json +459 -0
  3. package/contracts/extension-cli-compatibility.v1.json +11 -0
  4. package/contracts/published-contract-catalog.v1.json +55 -0
  5. package/contracts/runtime-command-surface.v1.json +282 -0
  6. package/contracts/workspace-intelligence/architecture-change-lease.v1.json +50 -0
  7. package/contracts/workspace-intelligence/architecture-surprise-report.v1.json +46 -0
  8. package/contracts/workspace-intelligence/change-operation-result.v1.json +43 -0
  9. package/contracts/workspace-intelligence/decision-checkpoint.v1.json +18 -0
  10. package/contracts/workspace-intelligence/decision-event.v1.json +154 -0
  11. package/contracts/workspace-intelligence/decision-transaction.v1.json +29 -0
  12. package/contracts/workspace-intelligence/goal-index.v1.json +13 -0
  13. package/contracts/workspace-intelligence/goal-pack.v1.json +2 -1
  14. package/contracts/workspace-intelligence/predicted-architecture-change.v1.json +34 -0
  15. package/contracts/workspace-intelligence/proof-carrying-change-capsule-export.v1.json +14 -0
  16. package/contracts/workspace-intelligence/proof-carrying-change-capsule-validation.v1.json +16 -0
  17. package/contracts/workspace-intelligence/proof-carrying-change-capsule.v1.json +63 -0
  18. package/contracts/workspace-intelligence/proof-carrying-change-list.v1.json +80 -0
  19. package/contracts/workspace-intelligence/workspace-knowledge-graph-change-overlay.v1.json +9 -1
  20. package/dist/analyze-OGWDSPXQ.js +1 -0
  21. package/dist/{artifact-remediation-plan-I7IKC5MR.js → artifact-remediation-plan-URQL5MBN.js} +1 -1
  22. package/dist/autopilot-release-QQDFEPT7.js +1 -0
  23. package/dist/capabilities-command-NFGX42CH.js +1 -0
  24. package/dist/chunk-37SWTS2B.js +1 -0
  25. package/dist/{chunk-KDY4X7SQ.js → chunk-3S2U7WRM.js} +1 -1
  26. package/dist/{chunk-BHM6RHTA.js → chunk-3WHE7V4M.js} +1 -1
  27. package/dist/{chunk-2C5XJBYI.js → chunk-4R7STECB.js} +64 -64
  28. package/dist/chunk-AGZWDYMF.js +12 -0
  29. package/dist/chunk-COICGD62.js +1 -0
  30. package/dist/chunk-DNZHKBQ3.js +49 -0
  31. package/dist/{chunk-4WVOAX2V.js → chunk-DWL3PPLA.js} +1 -1
  32. package/dist/chunk-EBQS5T7Q.js +7 -0
  33. package/dist/chunk-EP6Q2QBU.js +1 -0
  34. package/dist/chunk-EZPLMAW2.js +1 -0
  35. package/dist/chunk-FE5R6EUV.js +2 -0
  36. package/dist/chunk-FIK343LI.js +1 -0
  37. package/dist/chunk-GED7JURY.js +157 -0
  38. package/dist/{chunk-3Z4SVBMR.js → chunk-GL3KLNIG.js} +1 -1
  39. package/dist/{chunk-TMRCPT7S.js → chunk-GYN6RPNU.js} +1 -1
  40. package/dist/{chunk-6E2Y3XGT.js → chunk-HCFOVANQ.js} +1 -1
  41. package/dist/{chunk-7DDEMDG2.js → chunk-IET57ZKN.js} +2 -2
  42. package/dist/{chunk-5OV2WXAR.js → chunk-IFHM2SI6.js} +1 -1
  43. package/dist/{chunk-3BMYMZQB.js → chunk-IGJA6GBQ.js} +1 -1
  44. package/dist/chunk-IHKG5C6G.js +1 -0
  45. package/dist/chunk-IRLKWRLP.js +3 -0
  46. package/dist/{chunk-FX5J6JCK.js → chunk-IVYPC36J.js} +1 -1
  47. package/dist/{chunk-DFVG4DDZ.js → chunk-JK6XEF7K.js} +3 -3
  48. package/dist/chunk-K33JJVQZ.js +2 -0
  49. package/dist/{chunk-3XF7O66C.js → chunk-LE2I2E6R.js} +5 -5
  50. package/dist/chunk-LU6CYDLN.js +1 -0
  51. package/dist/{chunk-QMQBX3RV.js → chunk-MGL6DBOR.js} +1 -1
  52. package/dist/chunk-N4B2M44I.js +1 -0
  53. package/dist/chunk-N6FJZ62B.js +2 -0
  54. package/dist/chunk-NSH7TTSV.js +1 -0
  55. package/dist/chunk-O5XQP5E7.js +1 -0
  56. package/dist/chunk-ODK4LCEL.js +1 -0
  57. package/dist/chunk-PTSEDZIV.js +2 -0
  58. package/dist/chunk-QNHKUSBH.js +1 -0
  59. package/dist/{chunk-SLFOUSRW.js → chunk-QYEQVNBF.js} +1 -1
  60. package/dist/chunk-QZODGRAI.js +2 -0
  61. package/dist/chunk-S2TOSHQW.js +4 -0
  62. package/dist/chunk-S42KDOGG.js +1 -0
  63. package/dist/chunk-TEMFNVO2.js +2 -0
  64. package/dist/chunk-TKXRP2B4.js +1 -0
  65. package/dist/{chunk-IXXQMD34.js → chunk-TLMP2MGH.js} +1 -1
  66. package/dist/chunk-UNXG3ZFV.js +1 -0
  67. package/dist/chunk-UT57IFS4.js +8 -0
  68. package/dist/{chunk-2MTJWPQ4.js → chunk-V52R2W2Q.js} +1 -1
  69. package/dist/chunk-WUXJCSYO.js +9 -0
  70. package/dist/chunk-XSSNM4F5.js +5 -0
  71. package/dist/chunk-XVTN5DDV.js +1 -0
  72. package/dist/{chunk-OFYY4725.js → chunk-Z7JIUA6I.js} +1 -1
  73. package/dist/chunk-ZLCLGIM6.js +1 -0
  74. package/dist/chunk-ZPOZ6MDX.js +4 -0
  75. package/dist/{create-U5PQHOZ4.js → create-BBALBC3U.js} +1 -1
  76. package/dist/doctor-WWVY7NB6.js +1 -0
  77. package/dist/goal-lifecycle-CEUTKUNV.js +1 -0
  78. package/dist/goal-pack-JQL3YOKT.js +1 -0
  79. package/dist/index.d.ts +35 -2
  80. package/dist/index.js +239 -239
  81. package/dist/pipeline-V46WWMP4.js +5 -0
  82. package/dist/{project-agent-entry-MH7364BE.js → project-agent-entry-MRAYG7QD.js} +1 -1
  83. package/dist/{project-intelligence-lens-ZCCHUKVI.js → project-intelligence-lens-4BKPN4PE.js} +1 -1
  84. package/dist/{project-test-coverage-JPWTBSSJ.js → project-test-coverage-4RRCHY5W.js} +1 -1
  85. package/dist/proof-carrying-change-B7ONTBYO.js +1 -0
  86. package/dist/verified-goal-YNSBL7L3.js +1 -0
  87. package/dist/{workspace-B33BFZZ3.js → workspace-FJ6JRYWA.js} +1 -1
  88. package/dist/{workspace-agent-sync-T3MJO2MX.js → workspace-agent-sync-V33UGII3.js} +1 -1
  89. package/dist/{workspace-archive-NOSGRKRZ.js → workspace-archive-OSMU3CK6.js} +1 -1
  90. package/dist/{workspace-context-KOCEP4MJ.js → workspace-context-O6UBCBEA.js} +1 -1
  91. package/dist/{workspace-contract-MQ3QE52V.js → workspace-contract-S2JYDA4K.js} +1 -1
  92. package/dist/workspace-explain-RP6VJ6QM.js +1 -0
  93. package/dist/workspace-explain-contract-KV7RTEJU.js +1 -0
  94. package/dist/{workspace-feedback-3YLIUFQ7.js → workspace-feedback-D6HJLKBQ.js} +1 -1
  95. package/dist/{workspace-foundation-O7O3QIS4.js → workspace-foundation-7QXEJJKZ.js} +1 -1
  96. package/dist/{workspace-graph-stream-XTGGBD7D.js → workspace-graph-stream-YY65R5EC.js} +1 -1
  97. package/dist/workspace-graph-token-efficiency-WNAFAN2F.js +1 -0
  98. package/dist/{workspace-history-7HDZZ4G5.js → workspace-history-WWPS4U7H.js} +1 -1
  99. package/dist/{workspace-intelligence-TFEQBPUP.js → workspace-intelligence-LMR42ICR.js} +1 -1
  100. package/dist/{workspace-intelligence-benchmark-PLVUBGWO.js → workspace-intelligence-benchmark-S5OXVNLC.js} +1 -1
  101. package/dist/{workspace-intelligence-evaluation-OJIQS5SN.js → workspace-intelligence-evaluation-QDSOOUHH.js} +1 -1
  102. package/dist/{workspace-intelligence-runner-6ZAV6RO4.js → workspace-intelligence-runner-FXFSTCHC.js} +1 -1
  103. package/dist/workspace-intelligence-runtime-registry-ZLPF7BAY.js +1 -0
  104. package/dist/{workspace-knowledge-graph-AUXYL3L6.js → workspace-knowledge-graph-3564KQXT.js} +1 -1
  105. package/dist/workspace-knowledge-graph-change-overlay-FIIAFLO6.js +1 -0
  106. package/dist/{workspace-knowledge-graph-contract-X52KXBXJ.js → workspace-knowledge-graph-contract-FVX5T7SU.js} +1 -1
  107. package/dist/{workspace-knowledge-graph-query-A7TKONWY.js → workspace-knowledge-graph-query-WHCGPBGS.js} +1 -1
  108. package/dist/workspace-knowledge-graph-snapshot-P27RPMV5.js +1 -0
  109. package/dist/workspace-mcp-serve-ZK46EZUD.js +3 -0
  110. package/dist/{workspace-model-GVXNLSQM.js → workspace-model-6UMQAGUK.js} +1 -1
  111. package/dist/{workspace-onboarding-ECZ2KJ2A.js → workspace-onboarding-C57OQ7XZ.js} +1 -1
  112. package/dist/{workspace-readme-6N5Y2ZSJ.js → workspace-readme-HA6XLDME.js} +2 -2
  113. package/dist/{workspace-registry-summary-5SFBTRGQ.js → workspace-registry-summary-GLQO4ZUF.js} +1 -1
  114. package/dist/workspace-repair-engine-5ZSSF3T5.js +3 -0
  115. package/dist/workspace-run-UGWGT3K2.js +1 -0
  116. package/dist/{workspace-verify-D3QTMAUI.js → workspace-verify-LQHXBH2D.js} +1 -1
  117. package/dist/{workspace-watch-XYJEW2Z2.js → workspace-watch-Z32443UP.js} +1 -1
  118. package/docs/README.md +35 -31
  119. package/docs/ci-workflows.md +1 -1
  120. package/docs/commands-reference.md +26 -0
  121. package/docs/contracts/ARTIFACT_CATALOG.md +37 -18
  122. package/docs/contracts/COMMAND_OWNERSHIP_MATRIX.md +17 -0
  123. package/docs/contracts/PROOF_CARRYING_CHANGE_CONTRACT_PLAN.md +68 -0
  124. package/docs/proof-carrying-change.implementation.v1.json +119 -0
  125. package/docs/proof-carrying-change.md +236 -0
  126. package/docs/real-world-qualification.md +8 -3
  127. package/package.json +1 -1
  128. package/dist/analyze-JDEWUBC6.js +0 -1
  129. package/dist/autopilot-release-OELUFNLL.js +0 -1
  130. package/dist/capabilities-command-RAAYENQ6.js +0 -1
  131. package/dist/chunk-2KX6KHEC.js +0 -1
  132. package/dist/chunk-3KU3YUWD.js +0 -2
  133. package/dist/chunk-3NF3M3RE.js +0 -1
  134. package/dist/chunk-3OGPTLI2.js +0 -1
  135. package/dist/chunk-5ME4W4LN.js +0 -1
  136. package/dist/chunk-5XUAAQSV.js +0 -5
  137. package/dist/chunk-5YZ2W57R.js +0 -8
  138. package/dist/chunk-7DZNZ3GM.js +0 -3
  139. package/dist/chunk-BG6IX6HA.js +0 -1
  140. package/dist/chunk-BMAFHX6A.js +0 -1
  141. package/dist/chunk-BUYLM6QV.js +0 -1
  142. package/dist/chunk-C2VTO5WT.js +0 -2
  143. package/dist/chunk-CPR2CMOY.js +0 -1
  144. package/dist/chunk-CSZPE637.js +0 -2
  145. package/dist/chunk-EHLGPLIU.js +0 -1
  146. package/dist/chunk-FPDH3N3A.js +0 -7
  147. package/dist/chunk-GVQKAINC.js +0 -49
  148. package/dist/chunk-IKUFNK46.js +0 -2
  149. package/dist/chunk-JYMO7QXQ.js +0 -1
  150. package/dist/chunk-KY2GOSO5.js +0 -1
  151. package/dist/chunk-LEOFD3W5.js +0 -12
  152. package/dist/chunk-LPCZHKD5.js +0 -1
  153. package/dist/chunk-N5HPMATQ.js +0 -1
  154. package/dist/chunk-P3622IM5.js +0 -4
  155. package/dist/chunk-Q7UGDNSM.js +0 -1
  156. package/dist/chunk-RVAOJOXA.js +0 -2
  157. package/dist/chunk-TCLKGPXF.js +0 -2
  158. package/dist/chunk-VIN7NJW3.js +0 -9
  159. package/dist/chunk-W5VKBDSD.js +0 -157
  160. package/dist/chunk-WRZSQDZV.js +0 -1
  161. package/dist/chunk-Y4Z6CEII.js +0 -1
  162. package/dist/chunk-ZEEV5J4I.js +0 -1
  163. package/dist/chunk-ZGHJIQXL.js +0 -1
  164. package/dist/doctor-D7YI7LSA.js +0 -1
  165. package/dist/goal-lifecycle-BMS6GSIU.js +0 -1
  166. package/dist/goal-pack-RBSVQMMX.js +0 -1
  167. package/dist/pipeline-QOMXH2EK.js +0 -5
  168. package/dist/verified-goal-XUXU2X5H.js +0 -1
  169. package/dist/workspace-explain-DTFCKYXK.js +0 -1
  170. package/dist/workspace-explain-contract-WMREJWHF.js +0 -1
  171. package/dist/workspace-graph-token-efficiency-5LJKQU2J.js +0 -1
  172. package/dist/workspace-intelligence-runtime-registry-UKFB3BI7.js +0 -1
  173. package/dist/workspace-knowledge-graph-change-overlay-XG6FC4IX.js +0 -1
  174. package/dist/workspace-knowledge-graph-snapshot-GPBDAKAU.js +0 -1
  175. package/dist/workspace-mcp-serve-TDUXJUAA.js +0 -3
  176. package/dist/workspace-repair-engine-CKJCTWKX.js +0 -3
  177. package/dist/workspace-run-ZZ5WHL7W.js +0 -1
@@ -0,0 +1,12 @@
1
+ import {a as a$1}from'./chunk-TKXRP2B4.js';import {a}from'./chunk-HCFOVANQ.js';import {m,h,i}from'./chunk-IHKG5C6G.js';import {a as a$2}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 F from'fs-extra';import {parseAllDocuments}from'yaml';var Is=p.knowledgeGraph;function Cs(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=m(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 kt(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 Ot=5e5,Wt=2e6;function ye(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 wt=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"]),Pt=new Set(["AGENTS.md","CLAUDE.md","GEMINI.md","QWEN.md"]),xt=[/(?:^|\/)\.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\/(?: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 xe(e,t){let s=N(u.relative(e,t));return Pt.has(u.posix.basename(s))||xt.some(o=>o.test(s))}var zt=new Set(["test","tests","spec","specs","e2e","integration","integration-tests","integration_tests","__tests__","fixture","fixtures","__fixtures__","testdata"]),Kt=new Set(["examples","samples","worked"]);function ze(e,t){let s=u.relative(e,t).split(u.sep).map(i=>i.toLowerCase()),o=u.basename(t).toLowerCase();return s.some(i=>zt.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 Ke(e,t){return u.relative(e,t).split(u.sep).map(s=>s.toLowerCase()).some(s=>Kt.has(s))}function ee(e,t){return ze(e,t)||Ke(e,t)}function ue(e,t){return u.relative(e,t).split(u.sep).some(s=>s.toLowerCase()==="generated")}var Me=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"]),Nt=new Set([...Me,"go.work","go.work.sum"]),Gt=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"]),ot=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 U(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 Dt=new Set(["external","third_party","third-party","vendor","vendors","vendored"]),qt=new Set(["app","apps","cli","cmd","core","extensions","internal","lib","packages","services","src"]);function st(e,t){let o=N(u.relative(t,e)).split("/").filter(Boolean),i=o[0]?.toLowerCase()??"";return (o.some(l=>Dt.has(l.toLowerCase()))?1e3:0)+(qt.has(i)?-100:0)+Math.min(o.length,20)}function Zt(e,t,s){if(e.length<=t)return [...e];let o=[...e].sort((c,r)=>st(c,s)-st(r,s)||c.localeCompare(r)),i=new Map;for(let c of o){let r=U(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 Ht(e,t){let s=N(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 ke(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=>Nt.has(u.basename(d))).sort((d,a)=>N(u.relative(s,d)).split("/").length-N(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=`${Ht(d,s)}\0${U(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 Jt(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 _e(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 Ut=[{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"}],$t=[{pattern:/^\s*import(?:.+?from\s*)?["']([^"']+)["']/,detail:"import"},{pattern:/require\(["']([^"']+)["']\)/,detail:"require"}],jt=[{pattern:/^\s*from\s+([A-Za-z0-9_.]+)\s+import\s+/,detail:"import"},{pattern:/^\s*import\s+([A-Za-z0-9_.]+)(?:\s|$)/,detail:"import"}],Vt=[{pattern:/^\s*#\s*include\s*["<]([^">]+)[">]/,detail:"include"}],Yt=[{pattern:/^\s*use\s+([A-Za-z0-9_:*.-]+)/,detail:"use"}],Qt=[{pattern:/^\s*import\s+(?:static\s+)?([A-Za-z0-9_.*]+)\s*;?/,detail:"import"}],Xt=[{pattern:/^\s*(?:global\s+)?using\s+([A-Za-z0-9_.]+)/,detail:"using"}],eo=[{pattern:/^\s*import\s+(?:[A-Za-z0-9_.]+\s+)?["']([^"']+)["']/,detail:"import"}],It=[{pattern:/^\s*require(?:_relative)?\s+["']([^"']+)["']/,detail:"require"}],to=[{pattern:/^\s*use\s+([A-Za-z0-9_\\]+)/,detail:"use"}],oo=[{pattern:/^\s*(?:alias|import|require|use)\s+([A-Za-z0-9_.]+)/,detail:"import"}],so=[{pattern:/^\s*import\s+["']([^"']+)["']/,detail:"import"}],io=[{pattern:/\brequire\s*\(?\s*["']([^"']+)["']/,detail:"require"}],ro=[{pattern:/^\s*(?:library|require)\s*\(\s*["']?([^"')\s]+)["']?/,detail:"import"}],no=[...$t,...jt,{pattern:/^\s*(?:import|using|use)\s+([A-Za-z0-9_:.*\\/.-]+)/,detail:"import"},...It];function ao(e){let t=u.extname(e).toLowerCase();return [".cjs",".cts",".js",".jsx",".mjs",".mts",".ts",".tsx",".vue",".svelte"].includes(t)?$t:t===".py"?jt:[".c",".cc",".cpp",".h",".hpp"].includes(t)?Vt:t===".rs"?Yt:[".java",".kt",".kts",".scala"].includes(t)?Qt:[".cs",".fs",".fsx",".vb"].includes(t)?Xt:t===".go"?eo:t===".rb"?It:t===".php"?to:[".ex",".exs"].includes(t)?oo:t===".dart"?so:t===".lua"?io:t===".r"?ro:no}function co(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 lo(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 po(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 uo(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 Ct(e,t){return uo(e,po(e,t))}var fo=[{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"}];function we(e){return createHash("sha256").update(e).digest("hex")}function E(e,t){return `wkg:${e}:${we(`${e}\0${t}`).slice(0,20)}`}function N(e){return e.replace(/\\/g,"/")}function ge(e){let t=N(e).replace(/^\.\//,"");return !t||t.startsWith("/")||/^[A-Za-z]:\//.test(t)||t.split("/").includes("..")?"unknown":t}function C(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function P(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function Z(e){if(Array.isArray(e))return e.filter(s=>typeof s=="string").map(s=>s.trim()).filter(Boolean).sort();let t=C(e);return t?Object.keys(t).map(s=>s.trim()).filter(Boolean).sort():[]}function mo(e){if(Array.isArray(e))return e.map(s=>typeof s=="string"?s.split("=",1)[0]?.trim():"").filter(s=>!!s).sort();let t=C(e);return t?Object.keys(t).sort():[]}function go(e){return Object.fromEntries(Object.entries(e).filter(t=>t[1]!==void 0).sort(([t],[s])=>t.localeCompare(s)))}async function ho(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 F.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()?!wt.has(a.name)&&!a$2(a.name)&&i.push(p):a.isFile()&&(xe(e,p)||o.push(p)));}}return o.sort((r,d)=>r.localeCompare(d))}async function Ne(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 vo=promisify(execFile);async function q(e,t){let s=await vo("git",t,{cwd:e,encoding:"buffer",maxBuffer:268435456,windowsHide:true});return Buffer.isBuffer(s.stdout)?s.stdout:Buffer.from(s.stdout)}function Ge(){return [".",...[...wt].sort((e,t)=>e.localeCompare(t)).map(e=>`:(exclude,glob)**/${e}/**`),...[...Pt].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/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 Be(e){return e.toString("utf8").split("\0").filter(Boolean).map(t=>t.replace(/\\/gu,"/"))}async function yo(e,t,s=[]){try{await q(e,["rev-parse","--show-toplevel"]);let o=Ge(),[i,n,l]=await Promise.all([q(e,["ls-files","--stage","-z","--",...o]),q(e,["ls-files","--deleted","-z","--",...o]),q(e,["ls-files","--others","--exclude-standard","-z","--",...o])]),c=new Set(Be(n)),r=i.toString("utf8").split("\0").filter(Boolean).flatMap(v=>{let g=v.match(/^(\d{6}) [0-9a-f]+ \d\t([\s\S]+)$/u);if(!g)return [];let[,h,y]=g,b=y.replace(/\\/gu,"/");return h==="120000"||h==="160000"||c.has(b)?[]:[b]}),p=(await je([...new Set([...r,...Be(l)])],64,async v=>{let g=u.normalize(v);if(u.isAbsolute(g)||g===".."||g.startsWith(`..${u.sep}`))return null;let h=u.resolve(e,g);try{let y=await F.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=>!xe(e,v)).filter(v=>!s.some(g=>v===u.resolve(g)||v.startsWith(`${u.resolve(g)}${u.sep}`))).sort((v,g)=>v.localeCompare(g)),f=p.length>t;return {files:f?ke(p,t,e):p,eligibleFileCount:p.length,eligibleFileCountExact:true,truncated:f,fileLimit:t,strategy:"git-index-worktree-v1"}}catch{return null}}async function he(e,t,s=[]){let o=await yo(e,t,s);if(o)return o;let i=await ho(e,t+1,s),n=i.length>t;return {files:n?ke(i,t,e):i,eligibleFileCount:i.length,eligibleFileCountExact:!n,truncated:n,fileLimit:t,strategy:"filesystem-bfs-v1"}}async function bo(e){try{let t=(await q(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=Ge(),[i,n,l,c,r,d]=await Promise.all([q(e.root,["ls-files","--full-name","-s","--",...o]),q(e.root,["diff","--no-ext-diff","--no-textconv","--binary","HEAD","--",...o]),q(e.root,["ls-files","--full-name","--others","--exclude-standard","-z","--",...o]),q(e.root,["ls-files","--full-name","--others","--ignored","--exclude-standard","-z","--",...o]),q(e.root,["ls-files","-v","--",...o]),q(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=N(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)),g=await je([...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 Ne(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 g)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 ko(e){try{let t=(await q(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=Ge(),[i,n,l,c]=await Promise.all([q(e.root,["ls-files","--full-name","-s","--",...o]),q(e.root,["diff","--no-ext-diff","--no-textconv","--binary","HEAD","--",...o]),q(e.root,["ls-files","--full-name","--others","--exclude-standard","-z","--",...o]),q(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 je([...new Set(Be(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 g=u.resolve(e.root,v);if(r.some(h=>g===h||g.startsWith(`${h}${u.sep}`))||xe(e.root,g))return null;try{let h=await F.lstat(g);if(!h.isFile()||h.isSymbolicLink())return null}catch{return null}return {path:f,hash:await Ne(g)}})).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 je(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 Le(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 bo({...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 je(i,16,async d=>({path:N(u.relative(e.root,d)),hash:await Ne(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 wo(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 he(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([Le({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 he(d,e.projectFileLimit)),f=e.inventories?.scanBudgetsByProject?.get(r.id);return Le({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)),Et(c)}function Et(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 Es(e){if(Et(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 ko({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 he(c$1,n.fileLimit,n.kind==="workspace"?o:[]),d=n.kind==="workspace"?r.files.filter(v=>!o.some(g=>v===g||v.startsWith(`${g}${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 Le({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 F.readFile(e,"utf8");if(e.toLowerCase().endsWith(".json")){let s=JSON.parse(t),o=C(s);return o?[o]:[]}return parseAllDocuments(t,{logLevel:"silent"}).map(s=>C(s.toJSON())).filter(s=>s!==null)}function fe(e){return [...new Set([...e.workspaceFiles,...e.projects.flatMap(t=>e.filesByProject.get(t.id)??[])])].sort((t,s)=>t.localeCompare(s))}function Pe(e){return /^(?:openapi|swagger)(?:\.[^.]+)?\.(?:json|ya?ml)$/i.test(u.basename(e))}function it(e){let t=u.basename(e).toLowerCase();return /\.(?:graphql|gql|proto)$/.test(t)||/^asyncapi(?:\.[^.]+)?\.(?:json|ya?ml)$/.test(t)}function rt(e){let t=u.basename(e),s=N(e);return !/(?:^|\/)\.devcontainer(?:\/|$)/i.test(s)&&/^Dockerfile(?:\..+)?$/i.test(t)||/\.tf$/i.test(t)||t==="Chart.yaml"}function nt(e){return /(?:^|[\\/])(?:README|ARCHITECTURE|CONTRIBUTING|SECURITY)\.md$/i.test(e)}function Po(e,t){let s=N(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 at(e,t){let s=N(u.relative(e,t));return /(?:^|\/)(?:adr|adrs|decisions)(?:\/).+\.md$/i.test(s)||/(?:^|\/)ADR[-_0-9].+\.md$/i.test(s)}async function ct(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 F.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 dt(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 F.pathExists(i)?i:null));return [...new Set(o.filter(i=>!!i))].sort((i,n)=>i.localeCompare(n))}function lt(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=>Po(s.root,o))))].sort((s,o)=>s.localeCompare(o))}async function pt(e){let t=[];for(let s of fe(e))if(/\.ya?ml$/i.test(s))try{(await ae(s)).some(i=>{let n=C(i.metadata);return !!(P(i.apiVersion)&&P(i.kind)&&P(n?.name))})&&t.push(s);}catch{}return t.sort((s,o)=>s.localeCompare(o))}function ie(e,t){let s=u.resolve(t);return e.filter(o=>s===o.root||s.startsWith(`${o.root}${u.sep}`)).sort((o,i)=>i.root.length-o.root.length)[0]??null}var Oe=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=N(u.relative(s.root,t));return ge(u.posix.join(s.artifactPrefix,o))}return ge(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,we(await F.readFile(t.absolutePath)));}catch{this.contentHashes.set(t.absolutePath,null);}s=this.contentHashes.get(t.absolutePath)??void 0;}let o=ge(t.artifact),i=E("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=E(t.kind,t.key),o=go(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:we(JSON.stringify({kind:t.kind,key:t.key,attributes:c}))},attributes:c,proofIds:d}),s}addRelation(t){let s=E("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 $o(e){return [...e.matchAll(/["']([^"']+)["']/g)].map(t=>t[1])}function $e(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 $o(e.slice(i+1,c))}return []}function ut(e){return e.trim().match(/^([A-Za-z0-9][A-Za-z0-9_.-]*)/)?.[1]??""}function De(e){return e.replace(/\.(?:workspace|version|path|git|optional|features|default-features|package)$/,"")}function jo(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 be(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 Io(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:$e(t,"components").sort(),targets:$e(t,"targets").sort()}}function Co(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:[...Z(c.dependencies),...Z(c.devDependencies),...Z(c.require),...Z(c["require-dev"])].filter((r,d,a)=>a.indexOf(r)===d).sort(),metadata:o==="package.json"?{entrypoints:[P(c.main),P(c.module),P(c.types)].filter(r=>!!r),exports:C(c.exports)?Object.keys(C(c.exports)).sort():P(c.exports)?["."]:[],executables:C(c.bin)?Object.keys(C(c.bin)).sort():P(c.bin)?[P(c.name)??"default"]:[],runtimeConstraints:Object.entries(C(c.engines)??{}).map(([r,d])=>`${r}:${String(d)}`).sort()}:void 0}}if(o==="deno.json"||o==="deno.jsonc"){let c=JSON.parse(t.replace(/\/\*[\s\S]*?\*\/|^\s*\/\/.*$/gm,""));return {ecosystem:"deno",name:P(c.name),version:P(c.version),dependencies:Z(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"?$e(a,"dependencies").map(ut):d==="project.optional-dependencies"||d==="dependency-groups"?[...a.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=\s*\[/gm)].flatMap(p=>$e(a,p[1]??p[2])).map(ut):[...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:be(t,"name",void 0),version:be(t,"version",s.version),dependencies:[...c.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=/gm)].map(r=>r[1]??r[2]).map(De).filter((r,d,a)=>a.indexOf(r)===d).sort(),metadata:{edition:be(t,"edition",s.edition)??"unknown",rustVersion:be(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 Eo(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 ft(e,t){let s=e==="cargo"?De(t):t;return e==="cargo"?s.toLowerCase().replace(/[-_]/g,""):s.toLowerCase()}function Ro(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${ft(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${ft(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=E("module",`dependency:${n}:${De(c)}`);e.relations.delete(E("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 So={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=>Me.has(u.basename(b))),r=l??c,d=await t$1.addProof({provider:this.id,artifact:r?t$1.artifactPath(r,i):ge(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:kt(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")),g;if(v)try{let b=await F.readFile(v,"utf8"),w=Eo(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]}),g={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=jo(await F.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 F.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=ze(i.root,b);if(R&&f.push(b),!(R||Ke(i.root,b))&&!(!Me.has(w)&&!/\.(?:cs|fs|vb)proj$/i.test(w)))try{let k=await F.readFile(b,"utf8"),$=Co(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`}),_=t$1.addEntity({kind:"package",key:`package:${i.id}:${$.ecosystem}:${$.name??"anonymous"}:${S}`,label:$.name??`${i.id}/${N(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:_,kind:"contains",proofIds:[I]});for(let M of $.dependencies.slice(0,500)){let T=t$1.addEntity({kind:"module",key:`dependency:${$.ecosystem}:${M}`,label:M,aliases:[M],attributes:{ecosystem:$.ecosystem,external:true},proofIds:[I]});t$1.addRelation({from:_,to:T,kind:"depends-on",trust:"authoritative",derivation:"authored",proofIds:[I]});}}catch{}}if(g){let b=[...t$1.entities.values()].filter(w=>w.kind==="package"&&w.projectId===i.id);for(let w of g.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:g.entityId,to:k.id,kind:"contains",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:[...new Set([g.proofId,...k.proofIds])]});}}if(Ro(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 $=U(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 Te(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function mt(e){if(Array.isArray(e))return e.length;let t=C(e);return t?Object.keys(t).length:0}var Ao={id:"vscode-extension-manifest",version:"1.2.0",scanTier:"complete-inventory",async applicable(e){for(let t of e.projects){let s=(e.filesByProject.get(t.id)??[]).filter(o=>u.basename(o).toLowerCase()==="package.json");for(let o of s)try{let i=C(await F.readJson(o));if(P(C(i?.engines)?.vscode)||C(i?.contributes))return true}catch{}}return false},async run(e){for(let t of e.projects){let s=(e.filesByProject.get(t.id)??[]).filter(o=>u.basename(o).toLowerCase()==="package.json").sort((o,i)=>o.localeCompare(i));for(let o of s){let i=null;try{i=C(await F.readJson(o));}catch{continue}let n=C(i?.contributes),l=P(C(i?.engines)?.vscode);if(!l&&!n)continue;let c=u.dirname(o),r=u.resolve(c)===u.resolve(t.root),d=u.relative(t.root,c).split(u.sep).join("/"),a=P(i?.name)??(d&&d!=="."?d:t.id),p=e.state.artifactPath(o,t),f=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:"/",trust:"authoritative",derivation:"authored",confidence:"high",detail:`VS Code extension manifest for ${a}`}),v=e.state.addEntity({kind:"project",key:`project:${t.id}`,label:t.id,projectId:t.id}),g=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:Z(i?.extensionKind),activationEvents:Z(i?.activationEvents),contributionCounts:Object.entries(n??{}).map(([_,M])=>`${_}:${mt(M)}`).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:Z(i?.extensionKind),activationEvents:Z(i?.activationEvents),contributionCounts:Object.entries(n??{}).map(([_,M])=>`${_}:${mt(M)}`).sort()},proofIds:[f]});r||e.state.addRelation({from:v,to:g,kind:"contains",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:[f]});let h=Array.isArray(n?.commands)?n.commands:[],y=C(n?.menus),b=Object.values(y??{}).flatMap(_=>Array.isArray(_)?_:[]),w=Array.isArray(n?.keybindings)?n.keybindings:[];for(let[_,M]of h.entries()){let T=C(M),B=P(T?.command);if(!B)continue;let O=`/contributes/commands/${_}`,W=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:O,trust:"authoritative",derivation:"authored",confidence:"high",detail:`VS Code command ${B}`}),K=b.filter(D=>P(C(D)?.command)===B).length,G=w.filter(D=>P(C(D)?.command)===B).length,J=e.state.addEntity({kind:"api",key:`vscode-command:${t.id}:${B}`,label:B,projectId:t.id,aliases:[P(T?.title),P(T?.shortTitle)].filter(D=>!!D),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:K,keybindingCount:G,manifest:p,pointer:O},proofIds:[W]});e.state.addRelation({from:g,to:J,kind:"exposes",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:[W]});}let R=C(n?.viewsContainers),k=new Map;for(let[_,M]of Object.entries(R??{}))if(Array.isArray(M))for(let[T,B]of M.entries()){let O=C(B),W=P(O?.id);if(!W)continue;let K=`/contributes/viewsContainers/${Te(_)}/${T}`,G=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:K,trust:"authoritative",derivation:"authored",detail:`VS Code view container ${W}`}),J=e.state.addEntity({kind:"service",key:`vscode-view-container:${t.id}:${W}`,label:W,projectId:t.id,aliases:[P(O?.title)].filter(D=>!!D),attributes:{surface:"vscode-view-container",title:P(O?.title),location:_,icon:P(O?.icon),manifest:p,pointer:K},proofIds:[G]});k.set(W,J),e.state.addRelation({from:g,to:J,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[G]});}let $=C(n?.views);for(let[_,M]of Object.entries($??{}))if(Array.isArray(M))for(let[T,B]of M.entries()){let O=C(B),W=P(O?.id);if(!W)continue;let K=`/contributes/views/${Te(_)}/${T}`,G=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:K,trust:"authoritative",derivation:"authored",detail:`VS Code view ${W}`}),J=e.state.addEntity({kind:"service",key:`vscode-view:${t.id}:${W}`,label:W,projectId:t.id,aliases:[P(O?.name),P(O?.contextualTitle)].filter(D=>!!D),attributes:{surface:O?.type==="webview"?"vscode-webview":"vscode-view",name:P(O?.name),contextualTitle:P(O?.contextualTitle),containerId:_,viewType:P(O?.type)??"tree",manifest:p,pointer:K},proofIds:[G]});e.state.addRelation({from:k.get(_)??g,to:J,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[G]});}let S=Array.isArray(n?.configuration)?n.configuration:n?.configuration?[n.configuration]:[];for(let[_,M]of S.entries()){let T=C(M),B=C(T?.properties);for(let[O,W]of Object.entries(B??{})){let K=C(W),J=`${Array.isArray(n?.configuration)?`/contributes/configuration/${_}`:"/contributes/configuration"}/properties/${Te(O)}`,D=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:J,trust:"authoritative",derivation:"authored",detail:`VS Code configuration ${O}`}),Ie=e.state.addEntity({kind:"schema",key:`vscode-configuration:${t.id}:${O}`,label:O,projectId:t.id,attributes:{surface:"vscode-configuration",title:P(T?.title),type:P(K?.type),scope:P(K?.scope),description:P(K?.description)??P(K?.markdownDescription),manifest:p,pointer:J},proofIds:[D]});e.state.addRelation({from:g,to:Ie,kind:"configured-by",trust:"authoritative",derivation:"authored",proofIds:[D]});}}let I=Array.isArray(n?.chatParticipants)?n.chatParticipants:[];for(let[_,M]of I.entries()){let T=C(M),B=P(T?.id);if(!B)continue;let O=`/contributes/chatParticipants/${_}`,W=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:O,trust:"authoritative",derivation:"authored",detail:`VS Code chat participant ${B}`}),K=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(G=>!!G),attributes:{surface:"vscode-chat-participant",runtimeRegistrationRequired:false,name:P(T?.name),fullName:P(T?.fullName),description:P(T?.description),manifest:p,pointer:O},proofIds:[W]});e.state.addRelation({from:g,to:K,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[W]});}}}}};function gt(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 Fo={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(gt(await F.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 F.readFile(s,"utf8"),i=gt(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]});}}}},_o={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=>ot.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=Io(await F.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=>ot.has(u.extname(a).toLowerCase())),r=new Map;for(let a of c){let p=U(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),ze(t.root,a)?f.tests.push(a):Ke(t.root,a)?f.examples.push(a):f.production.push(a),r.set(p,f);}let d=E("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`}))),g=[...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:g,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."});}}},To={id:"source-structure",version:"1.0.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=Zt(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 F.stat(f);if(v.isFile()&&v.size<=2*1024*1024){let g=u.resolve(f);r.add(g),d.set(g,v.size);}}catch{}}));let a=0,p=0;for(let f of c){let v;try{if((await F.stat(f)).size>2*1024*1024)continue;v=await F.readFile(f,"utf8");}catch{continue}let g=Ct(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:`${U(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:U(f,t.runtime),bytes:Buffer.byteLength(v),...ue(t.root,f)?{generated:true}:{}},proofIds:[y]});e.state.addRelation({from:E("project",`project:${t.id}`),to:b,kind:"contains",proofIds:[y]});let w=_e(g,ao(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=co(f,k.name,r,t.root,k.detail);if(S){let I=e.state.artifactPath(S,t),_=E("file",`file:${t.id}:${I}`);if(!e.state.entities.has(_)){let M=await F.stat(S).catch(()=>null),T=await e.state.addProof({provider:this.id,artifact:I,...M?.isFile()&&M.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:U(S,t.runtime),bytes:d.get(u.resolve(S))??(M?.isFile()?M.size:void 0)},proofIds:[T]});e.state.addRelation({from:E("project",`project:${t.id}`),to:B,kind:"contains",proofIds:[T]});}e.state.addRelation({from:b,to:_,kind:"imports",confidence:"high",proofIds:[$]});}else {let I=k.name.startsWith(".");I&&(p+=1);let _=U(f,t.runtime),M=!I&&(_==="javascript"||_==="typescript")?k.name.startsWith("@")?k.name.split("/").slice(0,2).join("/"):k.name.split("/")[0]:null,T=M?E("module",`dependency:npm:${M}`):null,B=T?e.state.entities.get(T):void 0,O=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:O,kind:"imports",confidence:I?"low":"medium",proofIds:[$]});}}if(a<n){let k=_e(g,Ut,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:U(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?_e(g,fo,100):[]){let $=v.split(/\r?\n/)[k.line-1]??"";if(lo(f,$))continue;let S=$.match(/(?:@|\.|\[|^\s*)(get|post|put|delete|patch|options|head)/i)?.[1]?.toUpperCase()??"HTTP",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}`}),_=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:_,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."});}}},Mo={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,g=u.resolve(s.root,...v.split("/")),h;try{let w=await F.stat(g);if(!w.isFile()||w.size>2*1024*1024)continue;h=Ct(g,await F.readFile(g,"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 _ of S.slice(0,20)){if(n>=i)break;let M=h.slice(0,_.index??0).split(/\r?\n/).length;if(I.proofIds.some(B=>e.state.proofs.get(B)?.line===M))continue;let T=await e.state.addProof({provider:this.id,artifact:f,absolutePath:g,line:M,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 Bo(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 Lo(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 Oo(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=Lo(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 ht(e,t){let s=e.indexOf(t);return s<0?void 0:e.slice(0,s).split(/\r?\n/).length}var Wo={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 F.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 F.stat(i)).size>2*1024*1024)continue;n=await F.readFile(i,"utf8");}catch{continue}let l=Oo(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:E("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:E("project",`project:${t.id}`),to:f,kind:"contains",proofIds:[p]}),e.state.addRelation({from:d,to:f,kind:"implements-protocol",proofIds:[p]});for(let g of ["rust","javascript","typescript"]){let h=E("language",`language:${t.id}:${g}`);e.state.entities.has(h)&&e.state.addRelation({from:f,to:h,kind:"uses-language",proofIds:[p]});}let v=new Map;for(let g of a.operations){let h=ht(n,g),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 ${g}`}),b=e.state.addEntity({kind:"symbol",key:`symbol:${t.id}:${c}:function:${g}`,label:g,projectId:t.id,aliases:[`rust:${g}`,`javascript:${g}`],attributes:{symbolKind:"function",language:"rust",bridgeMechanism:"op2"},proofIds:[y]});v.set(g,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 g of a.scripts){let h=u.resolve(u.dirname(i),g);if(!await F.pathExists(h))continue;let y="";try{y=await F.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:U(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=ht(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]});}}}}}}},xo=/^[A-Z][A-Za-z0-9_]{3,}$/,zo=new Set(["Client","Config","Context","Data","Error","Event","Message","Options","Request","Response","Result","Schema","Type","Value"]),Ko={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||a$1(t.root).polyglot)},async run(e){for(let t of e.projects){let s=E("project",`project:${t.id}`),o=e.deepFilesByProject.get(t.id)??[],i=a$1(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`})],g=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}:${g}:${u.basename(a)}`,projectId:t.id,aliases:[d,g],attributes:{runtime:d,root:g,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}:${g}:${u.basename(a)}`,projectId:t.id,aliases:[`${d}:${w}`,w],attributes:{stage:w,command:R,runtime:d,workingDirectory:g,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 F.readFile(r,"utf8");}catch{continue}let a=Bo(d);if(!a)continue;let p=e.state.artifactPath(r,t),f=E("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}`}),g=e.state.entities.get(f);g&&e.state.addEntity({kind:"file",key:g.identity.key,label:g.label,projectId:t.id,aliases:g.identity.aliases,attributes:{...g.attributes,generated:true},proofIds:[...g.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),$=E("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"&&xo.test(r.label)&&!zo.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 g=a[0];for(let h of a.slice(1))e.state.addRelation({from:h.id,to:g.id,kind:"equivalent-to",derivation:"inferred",trust:"corroborated",confidence:"high",proofIds:[...g.proofIds,...h.proofIds]});}}}},No={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=E("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]});}}}},Go={id:"openapi",version:"1.1.0",scanTier:"complete-inventory",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(Pe))},async run(e){for(let t of e.projects){let s=(e.filesByProject.get(t.id)??[]).filter(Pe);for(let o of s){let i;try{i=await ae(o);}catch(n){e.state.diagnostics.push({code:"graph.provider.openapi.parse_failed",severity:"warning",message:`Could not parse ${e.state.artifactPath(o,t)}: ${n instanceof Error?n.message:String(n)}`});continue}for(let n of i){if(!("openapi"in n)&&!("swagger"in n))continue;let l=C(n.info),c=P(l?.title)??`${t.id} API`,r=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(o,t),absolutePath:o,pointer:"/info",trust:"authoritative",detail:"Authored OpenAPI contract"}),d=E("project",`project:${t.id}`),a=e.state.addEntity({kind:"api",key:`api:${t.id}:${c}`,label:c,projectId:t.id,attributes:{version:P(l?.version),specification:P(n.openapi)??P(n.swagger),runtimeRegistrationRequired:true},proofIds:[r]});e.state.addRelation({from:d,to:a,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[r]});let p=C(C(n.components)?.schemas)??C(n.definitions),f=new Map;for(let g 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/${g}`,trust:"authoritative",detail:`OpenAPI schema ${g}`}),y=e.state.addEntity({kind:"schema",key:`schema:${t.id}:${c}:${g}`,label:g,projectId:t.id,proofIds:[h]});f.set(g,y),e.state.addRelation({from:a,to:y,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[h]});}let v=C(n.paths);for(let g of Object.keys(v??{}).sort()){let h=C(v?.[g]);for(let y of Object.keys(h??{}).filter(b=>Gt.has(b.toLowerCase())).sort()){let b=C(h?.[y]),w=`/paths/${g.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()} ${g}`}),k=e.state.addEntity({kind:"endpoint",key:`endpoint:${t.id}:${c}:${y.toUpperCase()}:${g}`,label:`${y.toUpperCase()} ${g}`,projectId:t.id,aliases:Z(b?.tags),attributes:{method:y.toUpperCase(),path:g,operationId:P(b?.operationId),deprecated:typeof b?.deprecated=="boolean"?b.deprecated:void 0,tags:Z(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]});}}}}}}},We=5e3;function ne(e,t){let s=N(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 Do(e,t){for(let s of ['"',"'","`"]){let o=e.indexOf(`${s}${t}${s}`);if(o>=0)return o}return -1}var qo={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,We),i=new Map;for(let n of o){let l;try{let r=await F.stat(n);if(!r.isFile()||r.size>2*1024*1024)continue;l=await F.readFile(n,"utf8");}catch{continue}let c=ne(t.root,n);if(!(c<50))for(let r of s.keys()){let d=Do(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:U(l.file,t.runtime),bytes:Buffer.byteLength(l.contents)},proofIds:[d]});e.state.addRelation({from:E("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]});}}}},Zo=8,Ho=/(?:^|[,{\n]\s*)["']?(?:routes?|upstreams?|virtualHosts?|pathPrefix)["']?\s*[:=]/im;function vt(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))?Ho.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 Jo={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)&&!Pe(s)).slice(0,We).some(s=>{try{let o=F.statSync(s);return o.isFile()&&o.size<=2*1024*1024&&vt(s,F.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)&&!Pe(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,We),i=0,n=Math.max(1,s.length*Zo);for(let l of o){if(i>=n)break;let c;try{let g=await F.stat(l);if(!g.isFile()||g.size>2*1024*1024)continue;c=await F.readFile(l,"utf8");}catch{continue}let r=vt(l,c);if(r<0)continue;let d=s.length===1?s:s.filter(g=>g.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:U(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:E("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 g of d)e.state.addRelation({from:v,to:g.id,kind:"implements",derivation:"extracted",trust:"corroborated",confidence:"high",proofIds:[...g.proofIds,p]});i+=1;}}}};function Uo(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 Vo={id:"interface-contracts",version:"1.1.0",scanTier:"complete-inventory",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(it))},async run(e){for(let t of e.projects){let s=(e.filesByProject.get(t.id)??[]).filter(it);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 F.readFile(o,"utf8"),c=Uo(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:E("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]}),g=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;g&&(e.state.addRelation({from:E("project",`project:${t.id}`),to:g,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[a]}),e.state.addRelation({from:g,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]}),g&&e.state.addRelation({from:g,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 F.readFile(o,"utf8"),c=we(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:E("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:E("project",`project:${t.id}`),to:v,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[p]});}continue}try{let l=(await ae(o))[0];if(!l||!("asyncapi"in l))continue;let c=await e.state.addProof({provider:this.id,artifact:i,absolutePath:o,trust:"authoritative",derivation:"authored",detail:"AsyncAPI contract"}),r=e.state.addEntity({kind:"api",key:`asyncapi:${t.id}:${i}`,label:P(C(l.info)?.title)??`${t.id} AsyncAPI`,projectId:t.id,attributes:{specification:`asyncapi ${String(l.asyncapi)}`,artifact:i,runtimeRegistrationRequired:true},proofIds:[c]});e.state.addRelation({from:E("project",`project:${t.id}`),to:r,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[c]});for(let d of Object.keys(C(l.channels)??{}).sort()){let a=e.state.addEntity({kind:"queue",key:`asyncapi-channel:${t.id}:${d}`,label:d,projectId:t.id,attributes:{protocol:"asyncapi"},proofIds:[c]});e.state.addRelation({from:r,to:a,kind:"publishes",trust:"authoritative",derivation:"authored",proofIds:[c]});}}catch{}}}}},Yo={id:"infrastructure-as-code",version:"1.0.0",scanTier:"complete-inventory",applicable(e){return fe(e).some(rt)},async run(e){let t=fe(e).filter(rt);for(let s of t){let o=ie(e.projects,s),i=o?.id??e.state.workspaceName,n=o?E("project",`project:${o.id}`):E("workspace",`workspace:${e.state.workspaceName}`),l=e.state.artifactPath(s,o),c=await F.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 yt(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 Qo(e){if(!e)return;let t=new Set(["version","name","services","networks","volumes","configs","secrets"]),s=new Set(["image","build","command","entrypoint","ports","links","environment","volumes","depends_on","external_links"]),o=Object.entries(e).filter(([i,n])=>{if(t.has(i.toLowerCase()))return false;let l=C(n);return l?Object.keys(l).some(c=>s.has(c)):false});return o.length>0?Object.fromEntries(o):void 0}var Xo={id:"compose",version:"1.2.0",scanTier:"complete-inventory",async applicable(e){return (await ct(e)).length>0},async run(e){let t=[];for(let s of await ct(e)){let o;try{o=(await ae(s))[0];}catch(a){e.state.diagnostics.push({code:"graph.provider.compose.parse_failed",severity:"warning",message:`Could not parse ${e.state.artifactPath(s)}: ${a instanceof Error?a.message:String(a)}`});}let i=C(o?.services)??Qo(o);if(!i)continue;let n=ie(e.projects,s),l=e.state.artifactPath(s,n),c=u.basename(s).toLowerCase().startsWith("docker-compose")?"docker-compose":"compose",r=`${n?.id??"workspace"}:${u.posix.dirname(l)}:${c}`,d=a=>`compose-service:${r}:${a}`;for(let a of Object.keys(i).sort()){let p=C(i[a]),f=p?.build,v=P(f)??P(C(f)?.context),g=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(E("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,...g?.id||w?.projectId?{projectId:g?.id??w?.projectId}:{},attributes:{image:y??w?.attributes.image,ports:[...new Set([...R,...Z(p?.ports).map(String)])].sort((I,_)=>I.localeCompare(_)),networks:[...new Set([...k,...Z(p?.networks)])].sort((I,_)=>I.localeCompare(_)),environmentKeys:[...new Set([...$,...mo(p?.environment)])].sort((I,_)=>I.localeCompare(_))},proofIds:[...w?.proofIds??[],h],mergeArrayAttributes:["ports","networks","environmentKeys"]});if(g&&e.state.addRelation({from:E("project",`project:${g.id}`),to:S,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[h]}),y){let I=e.state.addEntity({kind:yt(y),key:`image:${y}`,label:y,...g?{projectId:g.id}:{},attributes:{image:y},proofIds:[h]});e.state.addRelation({from:S,to:I,kind:yt(y)==="container"?"runs-on":"depends-on",trust:"authoritative",derivation:"authored",proofIds:[h]});}}for(let a of Object.keys(i).sort()){let p=C(i[a]);for(let f of Z(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:E("service",d(a)),to:E("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]});}}},es={id:"documentation",version:"1.0.0",scanTier:"complete-inventory",applicable(e){return fe(e).some(nt)},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=>nt(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 F.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?E("project",`project:${l.id}`):E("workspace",`workspace:${e.state.workspaceName}`);e.state.addRelation({from:a,to:p,kind:"documents",trust:"authoritative",derivation:"authored",proofIds:[d]});}}}},ts={id:"kubernetes",version:"1.0.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),o=s?E("project",`project:${s.id}`):E("workspace",`workspace:${e.state.workspaceName}`),i=await ae(t);for(let n=0;n<i.length;n+=1){let l=i[n],c=P(l.kind),r=C(l.metadata),d=P(r?.name);if(!c||!d)continue;let a=P(r?.namespace)??"default",p=/Deployment|StatefulSet|DaemonSet/i.test(c)?"deployment":/Service|Ingress/i.test(c)?"service":/ConfigMap|Secret/i.test(c)?"environment":"deployment",f=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,s),absolutePath:t,pointer:`/documents/${n}`,trust:"authoritative",derivation:"authored",detail:`${c} ${a}/${d}`}),v=e.state.addEntity({kind:p,key:`kubernetes:${c}:${a}:${d}`,label:`${c}/${d}`,...s?{projectId:s.id}:{},attributes:{resourceKind:c,namespace:a,secret:c==="Secret",keys:c==="Secret"||c==="ConfigMap"?Object.keys(C(l.data)??{}).sort():void 0},proofIds:[f]});e.state.addRelation({from:o,to:v,kind:p==="deployment"?"deploys":"contains",trust:"authoritative",derivation:"authored",proofIds:[f]});let g=e.state.addEntity({kind:"environment",key:`kubernetes-namespace:${a}`,label:`Kubernetes namespace ${a}`,attributes:{namespace:a},proofIds:[f]});e.state.addRelation({from:v,to:g,kind:"runs-on",trust:"authoritative",derivation:"authored",proofIds:[f]});}}}},os={id:"ci-workflow",version:"1.0.0",scanTier:"complete-inventory",applicable(e){return lt(e).length>0},async run(e){let t=lt(e);for(let s of t){let o=ie(e.projects,s),i=e.state.artifactPath(s,o),n=u.basename(s)==="Jenkinsfile",l=N(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 F.readFile(s,"utf8");n?d=[...v.matchAll(/\bstage\s*\(\s*["']([^"']+)["']/g)].map(g=>g[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 g=new Set(["stages","variables","workflow","include","default","image","services","cache","before_script","after_script"]);d=Object.keys(v).filter(h=>!h.startsWith(".")&&!g.has(h)).sort();}else d=[...new Set([...Object.keys(C(v.jobs)??{}),...Object.keys(C(C(v.workflows)?.jobs)??{}),...Z(v.stages)])].sort();a=Z(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?E("project",`project:${o.id}`):E("workspace",`workspace:${e.state.workspaceName}`),to:f,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[p]});}}},ss={id:"codeowners",version:"1.2.0",scanTier:"complete-inventory",async applicable(e){return (await dt(e)).length>0},async run(e){for(let t of await dt(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?E("project",`project:${s.id}`):E("workspace",`workspace:${e.state.workspaceName}`),kind:"owns",trust:"authoritative",derivation:"authored",proofIds:[f]});}}continue}let i=(await F.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(g=>{let h=c.replace(/^\//,"").replace(/\*.*$/,""),y=u.dirname(t),b=[".github","docs"].includes(u.basename(y))?u.dirname(y):y,w=N(u.relative(b,g.root));return h&&(w==="."||w.startsWith(h.replace(/\/$/,""))||g.path.startsWith(h.replace(/\/$/,"")))}),v=f.length>0?f.map(g=>E("project",`project:${g.id}`)):s?[E("project",`project:${s.id}`)]:[E("workspace",`workspace:${e.state.workspaceName}`)];for(let g of v)e.state.addRelation({from:p,to:g,kind:"owns",trust:"authoritative",derivation:"authored",proofIds:[a]});}}}}},is={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=>at(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=>at(o.root,n));for(let n of i){if(t.has(n))continue;t.add(n);let l=ie(e.projects,n),c=await F.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?E("project",`project:${l.id}`):E("workspace",`workspace:${e.state.workspaceName}`);e.state.addRelation({from:f,to:p,kind:"decided-by",trust:"authoritative",derivation:"authored",proofIds:[a]});}}}},bt=[So,Ao,Fo,_o,To,Mo,Wo,Ko,No,Go,Vo,qo,Jo,Xo,Yo,ts,os,ss,es,is];function rs(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 ns(e,t){for(let s of t.edges){let o=[];for(let i of s.evidence){let n=ge(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:E("project",`project:${s.from}`),to:E("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 as(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 Rs(e){let t=u.resolve(e.workspacePath),s=e.now??new Date,o=e.projects.map(m=>{let j=m.absolutePath?u.resolve(m.absolutePath):u.resolve(t,m.path),L=u.relative(t,j),H=L.startsWith(`..${u.sep}`)||L===".."||u.isAbsolute(L);return {...m,root:j,artifactPrefix:H?`external/${m.id}`:N(L||m.id)}}).sort((m,j)=>m.id.localeCompare(j.id)),i$1=new Oe(t,s,e.workspace.name),n=ye(e.inventoryFileLimitPerProject,"WORKSPAI_GRAPH_INVENTORY_LIMIT"),l=ye(e.maxFilesPerProject,"WORKSPAI_GRAPH_DEEP_BUDGET"),c$1=ye(e.semanticFilesPerProject,"WORKSPAI_GRAPH_SEMANTIC_BUDGET"),r=ye(e.sourceFilesPerProject,"WORKSPAI_GRAPH_SOURCE_BUDGET"),d=Math.max(100,Math.min(n??Ot,Wt)),a$1=new Map(await Promise.all(o.map(async m=>[m.id,await he(m.root,d)]))),p=new Map(o.map(m=>[m.id,a$1.get(m.id)?.files??[]])),f=new Map(o.map(m=>{let j=a$1.get(m.id);return [m.id,Jt({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(m=>{let j=a$1.get(m.id)?.files??[],L=f.get(m.id)?.deepFileBudget??j.length;return [m.id,ke(j,L,m.root)]})),g=new Map(o.map(m=>{let j=a$1.get(m.id)?.files??[],L=f.get(m.id)?.semanticFileBudget??j.length;return [m.id,ke(j,L,m.root)]})),h$1=await he(t,d,o.map(m=>m.root)),y=h$1.files.filter(m=>!o.some(j=>m===j.root||m.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 wo({workspacePath:t,projects:o,projectFileLimit:d,workspaceFileLimit:d,inventories:{workspaceInventory:b,projectInventories:a$1,scanBudgetsByProject:f}});for(let m of w.scopes.filter(j=>j.truncated))i$1.diagnostics.push({code:`graph.input.${m.kind}_file_limit_reached`,severity:"warning",message:`${m.kind==="project"?`Project ${m.id}`:"Workspace"} graph inventory reached the ${m.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(m=>m.kind==="project").map(m=>[m.id,m.hash])),k=new Map((e.previousGraph?.source.inputs?.scopes??[]).filter(m=>m.kind==="project").map(m=>[m.id,m.hash])),$="1.4.0",S=new Map((e.previousGraph?.providers??[]).filter(m=>m.id!=="incremental-project-cache").map(m=>[m.id,m.version])),I=new Map((e.previousGraph?.providers??[]).map(m=>[m.id,m])),_=bt.every(m=>S.get(m.id)===m.version)&&I.get("incremental-project-cache")?.version===$,M=e.previousGraph?.workspace.name===e.workspace.name&&_&&R.size>0&&R.size===k.size&&[...R.keys()].every(m=>k.has(m)),T=new Map((e.previousGraph?.entities??[]).filter(m=>m.kind==="project"&&m.projectId).map(m=>[m.projectId,m])),B=new Map(o.map(m=>[m.id,m])),O=m=>{let j=T.get(m.id);if(!j)return false;let L=kt(m),H=Object.fromEntries(Object.keys(L).map(x=>[x,j.attributes[x]]));return c(H)===c(L)},W=new Set(M?[...R].filter(([m,j])=>k.get(m)===j&&B.has(m)&&O(B.get(m))).map(([m])=>m):[]),K=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"]),G=o.filter(m=>!W.has(m.id)),J=[];if(e.previousGraph&&W.size>0){let m=e.previousGraph.entities.filter(A=>A.projectId&&W.has(A.projectId)),j=new Set(m.map(A=>A.id)),L=new Map(e.previousGraph.entities.map(A=>[A.id,A])),H=new Map(e.previousGraph.proofs.map(A=>[A.id,A])),x=new Set(j),V=true;for(;V;){V=false;for(let A of e.previousGraph.relations){let re=x.has(A.from),le=x.has(A.to);if(re===le)continue;let Re=re?A.to:A.from,Se=L.get(Re);if(!Se||Se.projectId!==void 0)continue;[...Se.proofIds,...A.proofIds].some(_t=>{let Ue=H.get(_t)?.provider;return Ue!==void 0&&K.has(Ue)})&&(x.add(Re),V=true);}}if(G.length===0)for(let A of e.previousGraph.entities)A.projectId===void 0&&A.proofIds.some(re=>{let le=H.get(re)?.provider;return le!==void 0&&K.has(le)})&&x.add(A.id);let z=new Set([...x].filter(A=>!j.has(A))),X=[...m,...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));J=e.previousGraph.relations.filter(A=>{let re=Y.has(A.from),le=Y.has(A.to);return re===le?false:L.get(re?A.to:A.from)?.projectId===void 0});let ve=new Set([...X,...Q].flatMap(A=>A.proofIds));for(let A of e.previousGraph.proofs)ve.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:ve.size,diagnostics:[`Reused ${W.size} unchanged project scope(s); rescanning ${G.length}.`]});}else i$1.providers.push({id:"incremental-project-cache",version:$,status:"skipped",permission:"filesystem-read",discoveredEntities:0,discoveredRelations:0,proofCount:0,diagnostics:[`No compatible unchanged project scope was reused; scanning ${G.length}.`]});let D={workspacePath:t,projects:o,filesByProject:p,deepFilesByProject:v,semanticFilesByProject:g,inventoryByProject:a$1,scanBudgetsByProject:f,workspaceFiles:y,now:s,contract:e.contract??null,state:i$1},Ie={...D,projects:G};for(let m of bt){if(W.size>0&&G.length===0&&K.has(m.id)){let z=I.get(m.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},L="passed",H=null;try{let z=W.size>0&&K.has(m.id)?Ie:D;if(!(m.applicable?await m.applicable(z):true))L="skipped";else {await m.run(z);let Y=i$1.entities.size-j.entities,Q=i$1.relations.size-j.relations,ve=i$1.proofs.size-j.proofs;Y===0&&Q===0&&ve===0?(L="partial",i$1.diagnostics.push({code:`graph.provider.${m.id}.empty_result`,severity:"warning",message:`${m.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&&(L="partial");}}catch(z){L="failed";let X=z instanceof Error?z.message:String(z);H=X,i$1.diagnostics.push({code:`graph.provider.${m.id}.failed`,severity:"warning",message:`${m.id} provider failed: ${X}`,recommendation:"Repair the referenced source artifact and rerun workspace graph emit."});}let x=i$1.diagnostics.slice(j.diagnostics).map(z=>`${z.code}: ${z.message}`);H&&x.length===0&&x.push(H);let V=rs(m,D,L);L==="passed"&&V?.some(z=>z.status==="bounded")&&(L="partial"),i$1.providers.push({id:m.id,version:m.version,status:L,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:x,...V?{inputCoverage:V}:{}});}if(e.previousGraph&&J.length>0){let m=new Map(e.previousGraph.proofs.map(x=>[x.id,x])),j=0,L=0;for(let x of J)if(!(!i$1.entities.has(x.from)||!i$1.entities.has(x.to))){i$1.relations.has(x.id)||(i$1.relations.set(x.id,x),j+=1);for(let V of x.proofIds){let z=m.get(V);z&&!i$1.proofs.has(V)&&(i$1.proofs.set(V,z),L+=1);}}let H=i$1.providers.find(x=>x.id==="incremental-project-cache");H&&(H.discoveredRelations+=j,H.proofCount+=L,H.diagnostics.push(`Restored ${j} reusable project-to-workspace relation(s) with ${L} additional proof(s).`));}as(i$1),await ns(i$1,e.projectTopology);let ce=[...i$1.entities.values()].sort((m,j)=>m.id.localeCompare(j.id)),de=[...i$1.relations.values()].sort((m,j)=>m.id.localeCompare(j.id)),qe=[...i$1.proofs.values()].sort((m,j)=>m.id.localeCompare(j.id)),Rt=ce.filter(m=>m.proofIds.length>0).length,St=de.filter(m=>m.proofIds.length>0).length,At=i$1.providers.filter(m=>m.status!=="failed").length,Ce=e.projectTopology.diagnostics?.filter(m=>m.code==="graph.edges.missing").flatMap(m=>m.nodeIds??[])??[];Ce.length>0&&i$1.diagnostics.push({code:"graph.knowledge.project_relationships_unknown",severity:"warning",message:`${Ce.length} project(s) have no proven inter-project relationship. This is unknown topology, not proof of independence.`,entityIds:Ce.map(m=>E("project",`project:${m}`)),recommendation:"Author service contracts or add OpenAPI, Compose, Kubernetes, package or import evidence."});let Ze=h(ce,de),He=w.scopes.filter(m=>!m.truncated).length,Je=w.scopes.length-He,Ee=i$1.providers.reduce((m,j)=>(j.status==="failed"?m.failed+=1:j.status==="skipped"||j.inputCoverage?.every(L=>L.status==="not-applicable")?m.notApplicable+=1:j.status==="partial"||j.inputCoverage?.some(L=>L.status==="bounded")?m.bounded+=1:m.complete+=1,m),{complete:0,bounded:0,notApplicable:0,failed:0}),Ft=Je>0||Ee.bounded>0||Ee.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:qe,providers:[...i$1.providers].sort((m,j)=>m.id.localeCompare(j.id)),quality:{entityCount:ce.length,relationCount:de.length,proofCount:qe.length,entityProofCoverageRatio:ce.length===0?1:Rt/ce.length,relationProofCoverageRatio:de.length===0?1:St/de.length,providerSuccessRatio:i$1.providers.length===0?1:At/i$1.providers.length,conflictCount:i$1.diagnostics.filter(m=>m.code.includes("conflict")).length,unknownCount:i(i$1.diagnostics,Ze),bindingCoverage:Ze,completeness:{status:Ft,inventory:{scopeCount:w.scopes.length,completeScopes:He,boundedScopes:Je,eligibleFiles:w.scopes.reduce((m,j)=>m+(j.eligibleFileCount??j.fileCount),0),indexedFiles:w.scopes.reduce((m,j)=>m+j.fileCount,0),eligibleFileCountExact:w.scopes.every(m=>m.eligibleFileCountExact!==false)},providers:Ee},portable:true,secretValuesEmitted:false},diagnostics:[...i$1.diagnostics].sort((m,j)=>m.code.localeCompare(j.code)||m.message.localeCompare(j.message))}}function Ss(e,t){return E(e,t)}
12
+ export{Is as a,Cs as b,wo as c,Es as d,Rs as e,Ss as f};
@@ -0,0 +1 @@
1
+ import {p,t,A,q,r}from'./chunk-ODK4LCEL.js';var l="workspai-workspace-intelligence-chain-v1",u="contracts/workspace-intelligence-chain.v1.json";function v(){let e=p,t$1=A,s=[{id:"model",ordinal:1,phase:"understand",label:"Model",command:[...t$1.model.command],consumes:["workspace markers","project metadata","registry","contract","policies"],inputRefs:["projects-repositories","runtime-dependencies","workspace-rules","existing-evidence"],consumesArtifacts:[],produces:[...t$1.model.produces],dependsOn:[],exitPolicy:"stop-on-error",purpose:"Build the canonical current model and its structurally bound, derived Knowledge Graph."},{id:"diff",ordinal:2,phase:"change",label:"Diff",command:[...t$1.diff.command],consumes:[e.model,e.snapshot],inputRefs:["changes","model-baseline"],consumesArtifacts:[e.model,e.snapshot],produces:[...t$1.diff.produces],dependsOn:["model"],exitPolicy:"stop-on-error",purpose:"Describe structural change against the selected baseline."},{id:"impact",ordinal:3,phase:"change",label:"Impact",command:[...t$1.impact.command],consumes:[e.model,e.diff],inputRefs:[],consumesArtifacts:[e.model,e.diff],produces:[...t$1.impact.produces],dependsOn:["diff"],exitPolicy:"stop-on-error",purpose:"Calculate transitive blast radius over the workspace graph."},{id:"doctor-evidence",ordinal:4,phase:"evidence",label:"Doctor Evidence",command:[...t$1["doctor-evidence"].command],consumes:["workspace runtime and project health signals"],inputRefs:["projects-repositories","runtime-dependencies","existing-evidence"],consumesArtifacts:[],produces:[...t$1["doctor-evidence"].produces],dependsOn:["impact"],exitPolicy:"continue-on-structured-verdict",purpose:"Refresh health evidence after the impact artifact exists."},{id:"contract-evidence",ordinal:5,phase:"evidence",label:"Contract Evidence",command:[...t$1["contract-evidence"].command],consumes:[t.workspaceContract],inputRefs:["workspace-rules"],consumesArtifacts:[],produces:[...t$1["contract-evidence"].produces],dependsOn:["impact"],exitPolicy:"continue-on-structured-verdict",purpose:"Refresh structural contract evidence without hiding failed verdicts."},{id:"analyze-evidence",ordinal:6,phase:"evidence",label:"Analyze Evidence",command:[...t$1["analyze-evidence"].command],consumes:[e.model,"workspace runtime and dependency signals"],inputRefs:["projects-repositories","runtime-dependencies","workspace-rules"],consumesArtifacts:[e.model],produces:[...t$1["analyze-evidence"].produces],dependsOn:["impact"],exitPolicy:"continue-on-structured-verdict",purpose:"Refresh analysis evidence required by the release-readiness gate."},{id:"readiness-evidence",ordinal:7,phase:"evidence",label:"Readiness Evidence",command:[...t$1["readiness-evidence"].command],consumes:["doctor, analysis, runtime, and release signals"],inputRefs:["runtime-dependencies","existing-evidence"],consumesArtifacts:[e.doctor,e.contractVerify,e.analyze],produces:[...t$1["readiness-evidence"].produces],dependsOn:["doctor-evidence","contract-evidence","analyze-evidence"],exitPolicy:"continue-on-structured-verdict",purpose:"Refresh release-readiness evidence before the definitive gate."},{id:"verify",ordinal:8,phase:"gate",label:"Verify",command:[...t$1.verify.command],consumes:[e.impact,e.doctor,e.contractVerify,e.readiness],inputRefs:[],consumesArtifacts:[e.impact,e.doctor,e.contractVerify,e.readiness],produces:[...t$1.verify.produces],dependsOn:["impact","doctor-evidence","contract-evidence","analyze-evidence","readiness-evidence"],exitPolicy:"continue-on-structured-verdict",purpose:"Emit the definitive evidence-backed workspace gate."},{id:"context",ordinal:9,phase:"ground",label:"Agent Context",command:[...t$1.context.command],consumes:[e.model,e.impact,e.verify],inputRefs:[],consumesArtifacts:[e.model,e.impact,e.verify],produces:[...t$1.context.produces],dependsOn:["verify"],exitPolicy:"stop-on-error",purpose:"Build compact agent context from the same verified evidence."},{id:"agent-sync",ordinal:10,phase:"distribute",label:"Agent Grounding",command:[...t$1["agent-sync"].command],consumerArgs:{vscode:["--target","vscode"]},consumes:[e.agentContext],inputRefs:[],consumesArtifacts:[e.agentContext],produces:[...t$1["agent-sync"].produces],dependsOn:["context"],exitPolicy:"stop-on-error",purpose:"Distribute one context into portable agent and IDE surfaces."},{id:"explain",ordinal:11,phase:"explain",label:"Explain",command:[...t$1.explain.command],consumes:[e.verify,e.impact],inputRefs:[],consumesArtifacts:[e.verify,e.impact],produces:[...t$1.explain.produces],dependsOn:["verify"],exitPolicy:"continue-on-structured-verdict",purpose:"Translate evidence and blockers into a human and agent-readable narrative."}];return {schemaVersion:l,name:"Workspace Intelligence Chain",contractPath:u,invariant:"Every consumer must preserve step identity, dependencies, artifact flow, and verdict semantics; presentation may change, chain meaning may not.",invariants:["Missing or unreadable input is unknown or unavailable; it must not be presented as verified absence.","Freshness and provenance travel with evidence and must not be discarded by projections.","The current graph is an evidence-backed workspace knowledge graph with bounded source intelligence, not a complete cross-language symbol or call graph.","Simple and standard presentations summarize the contract; their contractRefs must preserve complete traceability.","Conditional provider outputs must be resolved through their dedicated inventory contract.","Auxiliary capabilities expose or refresh intelligence but are not mandatory execution-chain steps.","Canonical step commands are stage-pure: they must not implicitly execute a downstream chain step or regenerate an upstream artifact.","Canonical JSON artifacts must satisfy their registered schema both when produced and when consumed across CLI, MCP, IDE, and CI trust boundaries.","Schema validity is necessary but not sufficient: hashes, embedded models, summaries, counts, graph statistics, and artifact references must remain semantically coherent.","Persisted impact evidence must be rejected as stale when the current workspace model or Git observation no longer matches its embedded diff.","Canonical artifact replacement must be atomic and workspace-contained; an interrupted or denied write must preserve the last valid artifact.","Concurrent history updates must be serialized without silently dropping entries, and invalid history must never be overwritten as if it were absent.","The canonical global registry is ~/.workspai/workspaces.json; ~/.rapidkit/workspaces.json is a non-authoritative compatibility mirror for legacy consumers and must not diverge after a CLI registry mutation."],semantics:{workspace:"The governed operating boundary that relates one or more projects and repositories to shared metadata, policies, contracts, evidence, and consumers.",repository:"A source-control boundary that may contain one or more projects and may live inside or outside the workspace root.",project:"A discoverable build or runtime unit with its own path, metadata or observable manifests, command capabilities, and evidence.",evidence:"A sourced observation or generated verification result with provenance and freshness; evidence may be consumed by a later run.",artifact:"A durable generated file that another command or consumer can read without parsing terminal prose.",gate:"A structured verdict with reasons and exit semantics derived from current evidence."},workspaceLifecycle:{ingestionRoutes:[{id:"create",label:"Create",commands:["create workspace","create project"],result:"Create a workspace or supported project and write canonical Workspai metadata."},{id:"adopt",label:"Adopt",commands:["adopt"],result:"Register an existing project in place without requiring source relocation."},{id:"import",label:"Import",commands:["import","workspace import"],result:"Attach an existing project or repository path to the workspace inventory."}],durableState:[{id:"workspace-identity",paths:[".workspai-workspace",".workspai/workspace.json"],purpose:"Identify the workspace boundary, profile, and canonical root."},{id:"project-inventory",paths:[".workspai/project.json",".workspai/context.json",".workspai/adopt.json","~/.workspai/workspaces.json","~/.rapidkit/workspaces.json (legacy compatibility mirror)"],purpose:"Record native, adopted, imported, and globally registered project locations while preserving a non-authoritative mirror for legacy extension discovery."},{id:"governance",paths:[".workspai/policies.yml",t.workspaceContract],purpose:"Define workspace policy and explicit structural relationships."},{id:"graph-overrides",paths:[".workspai/workspace-graph.overrides.json"],purpose:"Provide explicit dependency edges that override inferred relationships."}],rule:"Create, adopt, and import are ingestion routes, not intelligence facts. Their durable state becomes observable input to Model."},runtimeRegistry:{authority:"contracts/workspace-intelligence-runtime-registry.ts",artifacts:Object.entries(p).map(([r$1,a])=>({id:r$1,path:a,schemaVersion:q[r$1],schemaContract:r[r$1]}))},executionEnvelope:{rule:"Sync and baseline resolution are deterministic execution prerequisites, not canonical intelligence stages; every run reports them separately and preserves the exact canonical stage sequence.",operations:[{id:"sync",executionPoint:"before:model",artifacts:[t.workspaceContract,t.workspaceRegistry],failurePolicy:"stop-and-report",purpose:"Reconcile portable workspace inventory and contract inputs before modeling."},{id:"baseline",executionPoint:"after:model-before:diff",artifacts:[e.snapshot],failurePolicy:"stop-and-report",purpose:"Create an initial structural baseline when absent or reuse the existing baseline before Diff."}],report:{artifact:e.intelligenceRun,schemaVersion:q.intelligenceRun,invariant:"The report must preserve exact preflight and stage order, registry-owned artifacts, failure propagation, and aggregate status/exit semantics."}},boundaries:{inputs:[{id:"projects-repositories",label:"Projects and repositories",sources:["projects","repositories","services","modules","imported paths"],entersAt:"model"},{id:"runtime-dependencies",label:"Runtime and dependencies",sources:["runtime manifests","lockfiles","scripts","framework markers","package dependencies","bounded multi-language source observations for supported file extensions"],entersAt:"model"},{id:"workspace-rules",label:"Workspace rules",sources:["workspace markers","registry","project metadata","contracts","policies","ownership","graph overrides"],entersAt:"model"},{id:"changes",label:"Changes",sources:["repository state","git state","model baseline","workspace diff"],entersAt:"diff"},{id:"model-baseline",label:"Explicit model baseline",sources:[e.snapshot],entersAt:"diff"},{id:"existing-evidence",label:"Existing evidence",sources:["doctor reports","analysis reports","contract verification","release readiness","pipeline results","tests and runtime evidence","previous intelligence artifacts"],entersAt:"doctor-evidence"}],outputs:[{id:"understanding",label:"System understanding",artifacts:[e.model,e.knowledgeGraph,e.diff,e.impact],producedBy:["model","diff","impact"],inventory:"complete-for-chain"},{id:"governance-evidence",label:"Governance evidence",artifacts:[e.doctor,e.contractVerify,e.analyze,e.readiness,e.verify,e.history],producedBy:["doctor-evidence","contract-evidence","analyze-evidence","readiness-evidence","verify"],inventory:"complete-for-chain"},{id:"agent-grounding",label:"Agent grounding",artifacts:[e.agentContext,e.agentIndex,e.agentCustomizationPack,e.skillsIndex,e.agents],producedBy:["context","agent-sync"],inventory:"canonical-minimum",inventoryContract:"contracts/agent-customization-pack.v1.json"},{id:"explanations",label:"Explainable decisions",artifacts:[e.explain],producedBy:["explain"],inventory:"complete-for-chain"}],consumers:[{id:"developers",label:"Developers",channels:["CLI","reports","AGENTS.md"]},{id:"ci",label:"CI",channels:["JSON artifacts","exit codes","release gates"]},{id:"ides",label:"IDEs",channels:["synced contracts","extension","agent context"]},{id:"ai-agents",label:"AI agents",channels:["INDEX.json","context","skills","MCP"]}]},deliveryChannels:[{id:"artifacts",carries:["reports","models","context","grounding","skills"],authority:"canonical"},{id:"json-stdout",carries:["structured command results"],authority:"projection"},{id:"human-cli",carries:["summaries","diagnostics","next actions"],authority:"projection"},{id:"exit-codes",carries:["gate and command status"],authority:"projection"},{id:"watch-events",carries:["incremental workspace change events"],authority:"projection"},{id:"mcp",carries:["read-mostly access to current workspace artifacts"],authority:"projection"}],feedback:{from:["developers","ci","ides","ai-agents"],signals:["source commits","dependency updates","policy and contract edits","repairs","test and runtime results","agent action outcomes"],reentersThrough:["projects-repositories","runtime-dependencies","workspace-rules","changes","existing-evidence"],rule:"Consumer actions are not silently treated as truth. They re-enter as observable changes or evidence and must be modeled and verified again."},auxiliaryCapabilities:[{id:"graph",commands:["workspace graph emit","workspace graph explain","workspace graph entities","workspace graph evidence","workspace graph path","workspace graph search","workspace graph benchmark","workspace graph benchmark-suite","workspace graph overlay","workspace graph dot","workspace graph mermaid","workspace graph jsonld","workspace graph graphml","workspace graph gexf"],reads:[e.model,e.knowledgeGraph],produces:[t.workspaceIntelligenceBenchmark],role:"Query the proof-backed graph derived from the canonical workspace model.",chainStep:false},{id:"evaluation",commands:["workspace eval init","workspace eval record","workspace eval status","workspace eval report","workspace eval compare"],reads:[e.evaluationLive,e.evaluationLastRun],produces:[e.evaluationLive,e.evaluationLastRun],role:"Measure model usage, activity, cost provenance, and verified outcomes without storing prompt or response bodies.",chainStep:false},{id:"activity",commands:["live","live --json --projection monitor","live --json --projection board"],reads:["local workspace activity journals"],role:"Project observational command activity into versioned monitor and renderer-neutral board contracts without treating activity as verification evidence.",chainStep:false},{id:"watch",commands:["workspace watch"],reads:["workspace inputs",e.model],role:"Refresh the model incrementally and emit deterministic change events.",chainStep:false},{id:"mcp",commands:["workspace mcp serve"],reads:["workspace evidence artifacts"],role:"Expose read-mostly workspace evidence to compatible clients.",chainStep:false}],presentations:{simple:{layers:["inputs","intelligence","outputs","consumers"],nodes:[{id:"input-layer",kind:"inputs",label:"Input Layer",summary:"Projects \xB7 Repositories \xB7 Dependencies \xB7 Changes",contractRefs:["projects-repositories","runtime-dependencies","workspace-rules","changes","model-baseline","existing-evidence"]},{id:"workspace-intelligence",kind:"intelligence",label:"Workspace Intelligence",summary:"Model \xB7 Graph \xB7 Impact \xB7 Verify",contractRefs:s.map(r=>r.id)},{id:"agent-grounding",kind:"outputs",label:"Agent Grounding",summary:"AGENTS.md \xB7 Skills \xB7 Context",contractRefs:["agent-grounding"]},{id:"evidence-and-decisions",kind:"outputs",label:"Evidence Contracts",summary:"Reports \xB7 Artifacts \xB7 Gates",contractRefs:["understanding","governance-evidence","explanations"]},{id:"shared-consumers",kind:"consumers",label:"Shared Consumers",summary:"Developers \xB7 CI \xB7 IDEs \xB7 AI agents",contractRefs:["developers","ci","ides","ai-agents"]}],rule:"Use concrete user-facing language for first-contact explanations. Every input, output, consumer, and chain step must remain traceable through contractRefs even when details are summarized."},standard:{phases:["understand","change","evidence","gate","ground","distribute","explain"],nodes:[{id:"understand",label:"Understand",question:"What exists in the current workspace?",stepRefs:["model"]},{id:"change",label:"Change",question:"What changed, and what can it affect?",stepRefs:["diff","impact"]},{id:"evidence",label:"Evidence",question:"What health, contract, and readiness facts were observed?",stepRefs:["doctor-evidence","contract-evidence","analyze-evidence","readiness-evidence"]},{id:"gate",label:"Gate",question:"Is the current state acceptable and trustworthy?",stepRefs:["verify"]},{id:"ground",label:"Ground",question:"What should an agent know before acting?",stepRefs:["context"]},{id:"distribute",label:"Distribute",question:"Which durable agent and IDE surfaces receive that context?",stepRefs:["agent-sync"]},{id:"explain",label:"Explain",question:"Why did the system reach this result or verdict?",stepRefs:["explain"]}],rule:"Use for architecture education and product surfaces. Every phase must appear once and in order."},advanced:{steps:s.map(r=>r.id),requiredFields:["command","inputRefs","consumesArtifacts","produces","dependsOn","exitPolicy","purpose"],rule:"Use for implementers, adapters, IDEs, and CI. Preserve every step and its artifact and verdict semantics."}},steps:s,diagram:{direction:"TB",nodes:s.map(({id:r,label:a,phase:p})=>({id:r,label:a,phase:p})),edges:s.flatMap(r=>r.dependsOn.map(a=>({from:a,to:r.id,meaning:"required before"})))},consumers:{agents:{canonicalReadOrder:[e.agentIndex,t.goalIndex,t.goalPackLastRun,e.agentContext,e.skillsIndex,e.verify,e.impact,e.explain],entrypoints:[e.agents,".workspai/AGENT-GROUNDING.md"],rule:"Agents must cite current artifacts, preserve verified versus inferred status, and re-run the producing step when evidence is missing or stale."},ideAndCi:{requiredArtifacts:[e.model,e.knowledgeGraph,e.impact,e.verify],rule:"IDEs and CI must consume structured artifacts and verdict exit semantics rather than parse human help or terminal prose."},docsAndDiagrams:{rule:"Documentation and diagrams must derive labels, ordering, and edges from this contract and must not invent implemented steps."}}}}export{l as a,v as b};