workspai 0.59.0 → 0.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/contracts/cli-runtime-command-inventory.v1.snapshot.json +4 -0
- package/contracts/workspace-intelligence/goal-agent-handoff.v1.json +89 -8
- package/contracts/workspace-intelligence/goal-index.v1.json +76 -7
- package/contracts/workspace-intelligence/goal-lifecycle-result.v1.json +49 -5
- package/contracts/workspace-intelligence/goal-pack.v1.json +182 -19
- package/contracts/workspace-intelligence/verified-goal.v1.json +44 -3
- package/dist/analyze-FYNMI5KT.js +1 -0
- package/dist/autopilot-release-O5PPB6HQ.js +1 -0
- package/dist/chunk-6YFCS2AI.js +1 -0
- package/dist/{chunk-M4UOXP5T.js → chunk-7COD67YY.js} +19 -19
- package/dist/{chunk-DGGTTRYE.js → chunk-7ITSLGPZ.js} +1 -1
- package/dist/{chunk-5NIZNXRS.js → chunk-A4BK7C7M.js} +1 -1
- package/dist/{chunk-M3IKRWXA.js → chunk-AHKXQRLX.js} +1 -1
- package/dist/{chunk-KVSYBHUR.js → chunk-B6FJ6RG6.js} +1 -1
- package/dist/{chunk-5PSKBJKJ.js → chunk-DIJGQUEV.js} +1 -1
- package/dist/{chunk-QMPFNXI7.js → chunk-E4LJ3PQD.js} +1 -1
- package/dist/{chunk-RBBBXFEU.js → chunk-FUCFNB3P.js} +1 -1
- package/dist/{chunk-6FBNSTUS.js → chunk-GPGEJVVO.js} +1 -1
- package/dist/chunk-ILIBOMYL.js +1 -0
- package/dist/chunk-J7G3YL4O.js +1 -0
- package/dist/{chunk-NOZ4JCH7.js → chunk-KCJ3VS6R.js} +1 -1
- package/dist/{chunk-SP5EHSWG.js → chunk-KG3TUTXU.js} +1 -1
- package/dist/{chunk-RHK53ZK7.js → chunk-KKAGBP4T.js} +1 -1
- package/dist/{chunk-OLC7EYUA.js → chunk-KPEVYWOC.js} +12 -12
- package/dist/{chunk-WSRUPDZN.js → chunk-NA2NXX5P.js} +1 -1
- package/dist/{chunk-OFWSZYUX.js → chunk-NBJ6AP7K.js} +1 -1
- package/dist/{chunk-7WUT5ZSO.js → chunk-NVQUBUTY.js} +1 -1
- package/dist/{chunk-YEEAWZWI.js → chunk-O6R7SE6Y.js} +1 -1
- package/dist/{chunk-7SFXADXO.js → chunk-OU7DF6MP.js} +1 -1
- package/dist/{chunk-WJVB6SSD.js → chunk-PTNLVI62.js} +5 -5
- package/dist/{chunk-UVBPEX3E.js → chunk-PZLHQEGC.js} +1 -1
- package/dist/{chunk-WP3CXMVA.js → chunk-SCP5LJNO.js} +1 -1
- package/dist/{chunk-QFBVQUKV.js → chunk-TFOOSYGO.js} +6 -6
- package/dist/chunk-UJXE4UAX.js +1 -0
- package/dist/{chunk-ENKGGWRX.js → chunk-VDFHUYAQ.js} +8 -8
- package/dist/chunk-VR6XMUF3.js +2 -0
- package/dist/{chunk-S45YGN2I.js → chunk-WJ7MZB3I.js} +1 -1
- package/dist/{chunk-ZJCM37KX.js → chunk-WLFJHRB3.js} +1 -1
- package/dist/chunk-X6TNBARH.js +6 -0
- package/dist/{chunk-V3ABABV5.js → chunk-XXQRHS5I.js} +1 -1
- package/dist/chunk-XZ55OA4C.js +2 -0
- package/dist/{create-6QWIJTGU.js → create-IRNHMUEN.js} +1 -1
- package/dist/demo-kit-QHIDCSBI.js +149 -0
- package/dist/{doctor-NAZEKMGU.js → doctor-MAPZ2ZCD.js} +1 -1
- package/dist/{dotnet-webapi-clean-VXEF4SHM.js → dotnet-webapi-clean-AVHPJG7Y.js} +5 -5
- package/dist/goal-command-contract-43E22XQD.js +1 -0
- package/dist/goal-interactive-selection-6YJOK4WC.js +1 -0
- package/dist/goal-lifecycle-VQDUWZVG.js +1 -0
- package/dist/goal-pack-U3ZP7A2A.js +1 -0
- package/dist/{gofiber-standard-AQGSC7ON.js → gofiber-standard-47S2GYAO.js} +2 -2
- package/dist/{gogin-standard-7DU3OCBX.js → gogin-standard-EWB4XNOI.js} +3 -3
- package/dist/index.js +122 -122
- package/dist/{pipeline-5LLFP5ZH.js → pipeline-5O36G4ZV.js} +1 -1
- package/dist/{project-agent-entry-AFKDDRDL.js → project-agent-entry-CN4K6JNZ.js} +1 -1
- package/dist/{project-intelligence-lens-U2V3VNZG.js → project-intelligence-lens-N7REBQ3A.js} +1 -1
- package/dist/{project-test-coverage-HP37HUV2.js → project-test-coverage-E2Q4QL44.js} +1 -1
- package/dist/{rust-axum-4HXDICIB.js → rust-axum-M5X4ZC4Z.js} +4 -4
- package/dist/{springboot-standard-EK6GYN5T.js → springboot-standard-Y5ADLZMQ.js} +7 -7
- package/dist/verified-goal-CIYKNDOU.js +1 -0
- package/dist/{workspace-CQ43AWUF.js → workspace-UUU4VMZB.js} +1 -1
- package/dist/{workspace-agent-sync-YMXYUGYY.js → workspace-agent-sync-LQNIMGLN.js} +1 -1
- package/dist/{workspace-context-RAO62QVU.js → workspace-context-YAK5XX27.js} +1 -1
- package/dist/{workspace-contract-ACSIHJIO.js → workspace-contract-3BWIRSVQ.js} +1 -1
- package/dist/{workspace-explain-RH27OQB4.js → workspace-explain-QH4FXQW5.js} +1 -1
- package/dist/{workspace-foundation-JH2GFSAZ.js → workspace-foundation-AISQHJA3.js} +1 -1
- package/dist/{workspace-graph-stream-ZZZEQQTE.js → workspace-graph-stream-XTSDKRLM.js} +1 -1
- package/dist/{workspace-intelligence-3YERTBA3.js → workspace-intelligence-625UN27X.js} +1 -1
- package/dist/{workspace-intelligence-runner-YXMOT6GK.js → workspace-intelligence-runner-7KCGHRID.js} +1 -1
- package/dist/{workspace-knowledge-graph-HZZP6ZRB.js → workspace-knowledge-graph-3ZBPSAS7.js} +1 -1
- package/dist/workspace-knowledge-graph-snapshot-ZI4W735H.js +1 -0
- package/dist/{workspace-mcp-serve-5TTAN243.js → workspace-mcp-serve-ALIZV72K.js} +1 -1
- package/dist/{workspace-model-EIQSKDX7.js → workspace-model-ETCLINRB.js} +1 -1
- package/dist/{workspace-onboarding-SHHW4R4G.js → workspace-onboarding-XNBC6H2G.js} +1 -1
- package/dist/{workspace-registry-summary-OV5KX3WC.js → workspace-registry-summary-VSOBKAJG.js} +1 -1
- package/dist/workspace-repair-engine-7WGJWUBN.js +3 -0
- package/dist/workspace-run-I6E6VI6N.js +1 -0
- package/dist/{workspace-verify-W4P6LBIH.js → workspace-verify-7ENGIY4S.js} +1 -1
- package/dist/{workspace-watch-EZ4D4VCF.js → workspace-watch-2YFSB2WL.js} +1 -1
- package/docs/ci-workflows.md +18 -1
- package/docs/commands-reference.md +12 -2
- package/docs/contracts/README.md +15 -2
- package/docs/goal-packs.md +41 -5
- package/package.json +2 -1
- package/dist/analyze-52TEGLDR.js +0 -1
- package/dist/autopilot-release-KQGDM2AA.js +0 -1
- package/dist/chunk-HOUQIT7U.js +0 -1
- package/dist/chunk-RO73VVHW.js +0 -2
- package/dist/chunk-T3GJ7YVG.js +0 -1
- package/dist/chunk-TCURN5VD.js +0 -2
- package/dist/chunk-VRW6KXNK.js +0 -6
- package/dist/demo-kit-KHH63TNA.js +0 -149
- package/dist/goal-command-contract-CHE7U6YY.js +0 -1
- package/dist/goal-lifecycle-ECIRCHN5.js +0 -1
- package/dist/goal-pack-HBOPVZFO.js +0 -1
- package/dist/verified-goal-HUYJ6LBI.js +0 -1
- package/dist/workspace-knowledge-graph-snapshot-7DWHMEM2.js +0 -1
- package/dist/workspace-repair-engine-BNXZHW35.js +0 -3
- package/dist/workspace-run-7EJEBHAH.js +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {a as a$1}from'./chunk-2647BYBC.js';import {l}from'./chunk-
|
|
1
|
+
import {a as a$1}from'./chunk-2647BYBC.js';import {l}from'./chunk-NA2NXX5P.js';import {d,c}from'./chunk-EWZZUQBR.js';import {a}from'./chunk-GR6442P7.js';import {f,e,i}from'./chunk-NZ3WZYD5.js';import p from'path';import {createHash}from'crypto';import {createReadStream}from'fs';import {execFile}from'child_process';import {promisify}from'util';import S from'fs-extra';import {parseAllDocuments}from'yaml';var pe=f.knowledgeGraph;var Xt=e.knowledgeGraph;function Qt(e$1,t){if(e$1.source.kind!=="workspace-model")throw new Error(`Workspace knowledge graph is not bound to the canonical workspace model (source: ${e$1.source.kind}).`);if(e$1.source.artifact!==e.model)throw new Error(`Workspace knowledge graph source artifact is ${e$1.source.artifact}; expected ${e.model}.`);if(e$1.source.hashAlgorithm!=="sha256")throw new Error(`Workspace knowledge graph source hash algorithm is ${e$1.source.hashAlgorithm}; expected sha256.`);let o=d(t);if(e$1.source.hash!==o)throw new Error("Workspace knowledge graph is stale: its source hash does not match the canonical workspace model.");if(e$1.workspace.name!==t.workspace.name||(e$1.workspace.profile??void 0)!==(t.workspace.profile??void 0))throw new Error("Workspace knowledge graph identity does not match the canonical workspace model.");let i=l(t);if(!i)throw new Error("Canonical workspace model has no project topology for the workspace knowledge graph.");let r=c=>({...c,generatedAt:"<ignored>"});if(c(r(e$1.projectTopology))!==c(r(i)))throw new Error("Workspace knowledge graph project topology does not match the canonical workspace model.")}var Se=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"]),Me=new Set(["test","tests","spec","specs","e2e","integration","integration-tests","integration_tests","__tests__","fixture","fixtures","__fixtures__","testdata"]),ze=new Set(["examples","samples","worked"]);function se(e,t){let o=p.relative(e,t).split(p.sep).map(r=>r.toLowerCase()),i=p.basename(t).toLowerCase();return o.some(r=>Me.has(r))||/(?:\.test|\.spec|_test)\.[a-z0-9]+$/i.test(i)||/^test_.+\.[a-z0-9]+$/i.test(i)||/(?:tests?|specs?)\.(?:cs|fs|vb|java|kt|kts)$/i.test(i)}function ie(e,t){return p.relative(e,t).split(p.sep).map(o=>o.toLowerCase()).some(o=>ze.has(o))}function M(e,t){return se(e,t)||ie(e,t)}function oe(e,t){return p.relative(e,t).split(p.sep).some(o=>o.toLowerCase()==="generated")}var fe=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"]),Be=new Set(["get","put","post","delete","options","head","patch","trace"]),T=new Set([".c",".cc",".cpp",".cs",".dart",".ex",".exs",".go",".h",".hpp",".java",".js",".jsx",".kt",".kts",".mjs",".php",".py",".r",".rb",".rs",".scala",".svelte",".swift",".ts",".tsx",".vue",".clj",".cljs",".fs",".fsx",".lua",".vb"]);function F(e,t){let o=p.extname(e).toLowerCase();return o===".h"&&t==="cpp"?"cpp":{".c":"c",".cc":"cpp",".cpp":"cpp",".cs":"csharp",".dart":"dart",".ex":"elixir",".exs":"elixir",".go":"go",".h":"c",".hpp":"cpp",".java":"java",".js":"javascript",".jsx":"javascript",".kt":"kotlin",".kts":"kotlin",".mjs":"javascript",".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",".vb":"visual-basic"}[o]??o.slice(1)}function Ge(e,t){if(e.length<=t)return [...e];let o=new Map;for(let c of e){let s=F(c),a=o.get(s)??[];a.push(c),o.set(s,a);}let i=new Set,r=Math.max(1,Math.min(25,Math.floor(t/Math.max(o.size,1))));for(let c of [...o.values()])for(let s of c.slice(0,r))i.add(s);for(let c of e){if(i.size>=t)break;i.add(c);}return [...i].sort((c,s)=>c.localeCompare(s))}function Q(e,t,o){let i=[],r=e.split(/\r?\n/);for(let c=0;c<r.length&&i.length<o;c+=1)for(let s of t){let n=r[c].match(s.pattern)?.[1]?.trim();if(n){i.push({name:n,line:c+1,detail:s.detail});break}}return i}var xe=[{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"}],qe=[{pattern:/^\s*import(?:.+?from\s*)?["']([^"']+)["']/,detail:"import"},{pattern:/require\(["']([^"']+)["']\)/,detail:"require"},{pattern:/^\s*from\s+([A-Za-z0-9_.]+)\s+import\s+/,detail:"import"},{pattern:/^\s*import\s+([A-Za-z0-9_.]+)(?:\s|$)/,detail:"import"},{pattern:/^\s*(?:import|using|use)\s+([A-Za-z0-9_:.*\\/.-]+)/,detail:"import"},{pattern:/^\s*require(?:_relative)?\s+["']([^"']+)["']/,detail:"require"}];function Ze(e,t,o,i){let r=p.extname(e).toLowerCase()===".py",c;if(r){let d=t.match(/^\.+/)?.[0].length??0,l=d>0?p.dirname(e):p.resolve(i??"");for(let f=1;f<d;f+=1)l=p.dirname(l);let u=t.slice(d).replace(/\./g,p.sep);c=u?p.join(l,u):l;}else {if(!t.startsWith("."))return null;c=p.resolve(p.dirname(e),t);}let s=p.extname(c).toLowerCase(),a=T.has(s),n=new Set([c]);if(r&&(n.add(`${c}.py`),n.add(p.join(c,"__init__.py"))),a){let d=c.slice(0,-s.length);if([".js",".jsx",".mjs"].includes(s))for(let l of [".ts",".tsx",".js",".jsx",".mjs"])n.add(`${d}${l}`);}else for(let d of T)n.add(`${c}${d}`),n.add(p.join(c,`index${d}`));return [...n].find(d=>o.has(p.resolve(d)))??null}function He(e,t){let o=t.trimStart(),i=p.extname(e).toLowerCase();return [".py",".rb",".sh",".bash",".zsh"].includes(i)?o.startsWith("#"):[".sql",".lua",".hs"].includes(i)?o.startsWith("--"):o.startsWith("//")||o.startsWith("/*")||o.startsWith("*")}function Ve(e,t){if(p.extname(e).toLowerCase()!==".py")return t;let o=null;return t.split(/\r?\n/).map(i=>{let r=0,c="";for(;r<i.length;){if(o){let l=i.indexOf(o,r);if(l<0)return c;r=l+3,o=null;continue}let s=i.indexOf("'''",r),a=i.indexOf('"""',r),n=i.indexOf("#",r),d=s<0?a:a<0?s:Math.min(s,a);if(n>=0&&(d<0||n<d)){c+=i.slice(r,n);break}if(d<0){c+=i.slice(r);break}c+=i.slice(r,d),o=i.startsWith("'''",d)?"'''":'"""',r=d+3;}return c}).join(`
|
|
2
2
|
`)}function Je(e,t){if(![".js",".jsx",".mjs",".ts",".tsx"].includes(p.extname(e).toLowerCase()))return t;let o=false,i=false;return t.split(/\r?\n/).map(r=>{let c="",s=null,a=false;for(let n=0;n<r.length;n+=1){let d=r[n],l=r[n+1];if(o){c+=" ",d==="*"&&l==="/"&&(c+=" ",n+=1,o=false);continue}if(i){c+=" ",d==="`"&&!a&&(i=false),a=d==="\\"&&!a,d!=="\\"&&(a=false);continue}if(s){c+=d,d===s&&!a&&(s=null),a=d==="\\"&&!a,d!=="\\"&&(a=false);continue}if(d==="/"&&l==="/")return c.padEnd(r.length," ");if(d==="/"&&l==="*"){c+=" ",n+=1,o=true;continue}if(d==="`"){c+=" ",i=true,a=false;continue}(d==="'"||d==='"')&&(s=d),c+=d;}return c}).join(`
|
|
3
|
-
`)}function Ue(e,t){return Je(e,Ve(e,t))}var Ye=[{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 V(e){return createHash("sha256").update(e).digest("hex")}function E(e,t){return `wkg:${e}:${V(`${e}\0${t}`).slice(0,20)}`}function O(e){return e.replace(/\\/g,"/")}function x(e){let t=O(e).replace(/^\.\//,"");return !t||t.startsWith("/")||/^[A-Za-z]:\//.test(t)||t.split("/").includes("..")?"unknown":t}function j(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function b(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function K(e){if(Array.isArray(e))return e.filter(o=>typeof o=="string").map(o=>o.trim()).filter(Boolean).sort();let t=j(e);return t?Object.keys(t).map(o=>o.trim()).filter(Boolean).sort():[]}function Xe(e){if(Array.isArray(e))return e.map(o=>typeof o=="string"?o.split("=",1)[0]?.trim():"").filter(o=>!!o).sort();let t=j(e);return t?Object.keys(t).sort():[]}function Qe(e){return Object.fromEntries(Object.entries(e).filter(t=>t[1]!==void 0).sort(([t],[o])=>t.localeCompare(o)))}async function q(e,t){let o=[],i=[e],r=0;for(;r<i.length&&o.length<t;){let c=i[r++],s;try{s=await S.readdir(c,{withFileTypes:true});}catch{continue}s.sort((a,n)=>a.name.localeCompare(n.name));for(let a$1 of s){if(o.length>=t)break;if(a$1.isSymbolicLink())continue;let n=p.join(c,a$1.name);a$1.isDirectory()?!De.has(a$1.name)&&!a(a$1.name)&&i.push(n):a$1.isFile()&&o.push(n);}}return o.sort((c,s)=>c.localeCompare(s))}async function Se(e){return new Promise(t=>{let o=createHash("sha256"),i=createReadStream(e);i.on("data",r=>o.update(r)),i.on("error",r=>{t(`unreadable:${r.code??"unknown"}`);}),i.on("end",()=>t(o.digest("hex")));})}var et=promisify(execFile);async function D(e,t){let o=await et("git",t,{cwd:e,encoding:"buffer",maxBuffer:268435456,windowsHide:true});return Buffer.isBuffer(o.stdout)?o.stdout:Buffer.from(o.stdout)}async function tt(e){try{let t=(await D(e.root,["rev-parse","--show-prefix"])).toString("utf8").trim().replace(/\\/gu,"/"),o=t?`${t.replace(/^\/+|\/+$/gu,"")}/`:"";if(p.posix.isAbsolute(o)||o==="../"||o.startsWith("../")||o.includes("/../"))return null;let i=o.replace(/\/$/u,""),r=i?`HEAD:${i}`:"HEAD^{tree}",[c,s,a,n,d,l]=await Promise.all([D(e.root,["rev-parse",r]),D(e.root,["diff","--no-ext-diff","--no-textconv","--binary","HEAD","--","."]),D(e.root,["ls-files","--full-name","--others","--exclude-standard","-z","--","."]),D(e.root,["ls-files","--full-name","--others","--ignored","--exclude-standard","-z","--","."]),D(e.root,["ls-files","-v","--","."]),D(e.root,["ls-files","--full-name","-s","--","."])]);if(d.toString("utf8").split(/\r?\n/u).some(f=>/^[a-z] /u.test(f)))return null;let m=e.files.map(f=>{let y=O(p.relative(e.root,f));return `${o}${y}`});if(l.toString("utf8").split(/\r?\n/u).filter(f=>f.startsWith("160000 ")).map(f=>f.split(" ",2)[1]).filter(f=>!!f).map(f=>f.replace(/\\/gu,"/").replace(/\/$/u,"")).some(f=>m.some(y=>y.startsWith(`${f}/`))))return null;let v=new Set(m),g=Buffer.concat([a,n]).toString("utf8").split("\0").filter(Boolean).map(f=>f.replace(/\\/gu,"/")).filter(f=>v.has(f)),w=await Ae([...new Set(g)].sort((f,y)=>f.localeCompare(y)),16,async f=>{let y=o?f.slice(o.length):f;return {path:y,hash:await Se(p.resolve(e.root,...y.split("/").filter(Boolean)))}}),P=createHash("sha256");P.update(`git-worktree-v2\0${e.kind}\0${e.id}\0${e.fileLimit}\0`),P.update(c),P.update(createHash("sha256").update(s).digest());for(let f of w)P.update(`${f.path}\0${f.hash}\0`);return {kind:e.kind,id:e.id,strategy:"git-worktree-v2",hash:P.digest("hex"),fileCount:e.files.length,fileLimit:e.fileLimit,truncated:e.files.length>=e.fileLimit}}catch{return null}}async function Ae(e,t,o){let i=new Array(e.length),r=0,c=Array.from({length:Math.min(t,Math.max(e.length,1))},async()=>{for(;r<e.length;){let s=r++;i[s]=await o(e[s]);}});return await Promise.all(c),i}async function ue(e){let t=await tt(e);if(t)return t;let o=await Ae(e.files,16,async r=>({path:O(p.relative(e.root,r)),hash:await Se(r)}));o.sort((r,c)=>r.path.localeCompare(c.path));let i=createHash("sha256");i.update(`content-merkle-v1\0${e.kind}\0${e.id}\0${e.fileLimit}\0`);for(let r of o)i.update(`${r.path}\0${r.hash}\0`);return {kind:e.kind,id:e.id,strategy:"content-merkle-v1",hash:i.digest("hex"),fileCount:o.length,fileLimit:e.fileLimit,truncated:o.length>=e.fileLimit}}async function ot(e){let t=p.resolve(e.workspacePath),o=[...e.projects].sort((s,a)=>s.id.localeCompare(a.id)),i=e.inventories?.workspaceFiles??await q(t,e.workspaceFileLimit),r=await Promise.all([ue({kind:"workspace",id:"workspace",root:t,files:i,fileLimit:e.workspaceFileLimit}),...o.map(async s=>{let a=s.absolutePath?p.resolve(s.absolutePath):p.resolve(t,s.path),n=e.inventories?.projectFiles?.get(s.id)??await q(a,e.projectFileLimit);return ue({kind:"project",id:s.id,root:a,files:n,fileLimit:e.projectFileLimit})})]);r.sort((s,a)=>s.kind.localeCompare(a.kind)||s.id.localeCompare(a.id));let c=createHash("sha256");c.update("workspace-knowledge-graph-inputs.v1\0hybrid-git-content-v2\0");for(let s of r)c.update(`${s.kind}\0${s.id}\0${s.hash}\0${s.fileCount}\0${s.fileLimit}\0${s.truncated}\0`);return {schemaVersion:"workspace-knowledge-graph-inputs.v1",strategy:"hybrid-git-content-v2",hashAlgorithm:"sha256",hash:c.digest("hex"),scopes:r}}async function B(e){let t=await S.readFile(e,"utf8");if(e.toLowerCase().endsWith(".json")){let o=JSON.parse(t),i=j(o);return i?[i]:[]}return parseAllDocuments(t,{logLevel:"silent"}).map(o=>j(o.toJSON())).filter(o=>o!==null)}function J(e){return [...new Set([...e.workspaceFiles,...e.projects.flatMap(t=>e.filesByProject.get(t.id)??[])])].sort((t,o)=>t.localeCompare(o))}function me(e){return /^(?:openapi|swagger)(?:\.[^.]+)?\.(?:json|ya?ml)$/i.test(p.basename(e))}function ge(e){let t=p.basename(e).toLowerCase();return /\.(?:graphql|gql|proto)$/.test(t)||/^asyncapi(?:\.[^.]+)?\.(?:json|ya?ml)$/.test(t)}function he(e){let t=p.basename(e);return /^Dockerfile(?:\..+)?$/i.test(t)||/\.tf$/i.test(t)||t==="Chart.yaml"}function ye(e){return /(?:^|[\\/])(?:README|ARCHITECTURE|CONTRIBUTING|SECURITY)\.md$/i.test(e)}function rt(e,t){let o=O(p.relative(e,t));return /^\.github\/workflows\/.+\.ya?ml$/i.test(o)||/^(?:\.gitlab-ci\.ya?ml|azure-pipelines\.ya?ml|Jenkinsfile|bitbucket-pipelines\.ya?ml|\.woodpecker\.ya?ml)$/i.test(o)||/^\.circleci\/config\.ya?ml$/i.test(o)}function ve(e,t){let o=O(p.relative(e,t));return /(?:^|\/)(?:adr|adrs|decisions)(?:\/).+\.md$/i.test(o)||/(?:^|\/)ADR[-_0-9].+\.md$/i.test(o)}async function ke(e){let t=new Set;for(let o of [e.workspacePath,...e.projects.map(i=>i.root)])for(let i of ["compose.yml","compose.yaml","docker-compose.yml","docker-compose.yaml"]){let r=p.join(o,i);await S.pathExists(r)&&t.add(r);}return [...t].sort((o,i)=>o.localeCompare(i))}async function be(e){let o=[e.workspacePath,...e.projects.map(r=>r.root)].flatMap(r=>[p.join(r,"CODEOWNERS"),p.join(r,".github","CODEOWNERS"),p.join(r,"docs","CODEOWNERS")]),i=await Promise.all(o.map(async r=>await S.pathExists(r)?r:null));return [...new Set(i.filter(r=>!!r))].sort((r,c)=>r.localeCompare(c))}function we(e){let t=[{root:e.workspacePath,files:e.workspaceFiles},...e.projects.map(o=>({root:o.root,files:e.filesByProject.get(o.id)??[]}))];return [...new Set(t.flatMap(o=>o.files.filter(i=>rt(o.root,i))))].sort((o,i)=>o.localeCompare(i))}async function Pe(e){let t=[];for(let o of J(e))if(/\.ya?ml$/i.test(o))try{(await B(o)).some(r=>{let c=j(r.metadata);return !!(b(r.apiVersion)&&b(r.kind)&&b(c?.name))})&&t.push(o);}catch{}return t.sort((o,i)=>o.localeCompare(i))}function N(e,t){let o=p.resolve(t);return e.filter(i=>o===i.root||o.startsWith(`${i.root}${p.sep}`)).sort((i,r)=>r.root.length-i.root.length)[0]??null}var re=class{constructor(t,o,i){this.workspacePath=t;this.now=o;this.workspaceName=i;}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,o){if(o){let i=O(p.relative(o.root,t));return x(p.posix.join(o.artifactPrefix,i))}return x(p.relative(this.workspacePath,t))}async addProof(t){let o;if(t.absolutePath){if(!this.contentHashes.has(t.absolutePath))try{this.contentHashes.set(t.absolutePath,V(await S.readFile(t.absolutePath)));}catch{this.contentHashes.set(t.absolutePath,null);}o=this.contentHashes.get(t.absolutePath)??void 0;}let i=x(t.artifact),r=E("proof",[t.provider,i,t.pointer??"",t.line??"",t.detail??""].join("\0"));return this.proofs.has(r)||this.proofs.set(r,{id:r,provider:t.provider,artifact:i,...t.pointer?{pointer:t.pointer}:{},...t.line?{line:t.line}:{},...t.column?{column:t.column}:{},...o?{contentHash:o}:{},observedAt:this.now.toISOString(),derivation:t.derivation??"extracted",trust:t.trust??"observed",confidence:t.confidence??"high",freshness:"fresh",...t.detail?{detail:t.detail}:{}}),r}addEntity(t){let o=E(t.kind,t.key),i=Qe(t.attributes??{}),r=this.entities.get(o),c=t.label.trim(),s=c||r?.label||t.key.trim()||t.kind;!c&&!this.emptyLabelDiagnostics.has(o)&&(this.emptyLabelDiagnostics.add(o),this.diagnostics.push({code:"graph.knowledge.empty_label_normalized",severity:"warning",message:`An empty ${t.kind} label was normalized to ${s}.`,entityIds:[o],recommendation:"Inspect the provider proof and preserve a non-empty source identifier before publishing the entity."}));let a={...r?.attributes??{}};for(let[l,m]of Object.entries(i)){if(l in a&&JSON.stringify(a[l])!==JSON.stringify(m)){let u=`${o}\0${l}`;this.attributeConflicts.has(u)||(this.attributeConflicts.add(u),this.diagnostics.push({code:"graph.knowledge.attribute_conflict",severity:"warning",message:`Conflicting ${l} values were observed for ${t.kind} ${s}.`,entityIds:[o],recommendation:"Inspect the entity proof paths and make the authoritative source explicit."}));continue}a[l]=m;}let n=[...new Set([...r?.identity.aliases??[],...t.aliases??[]].map(l=>l.trim()).filter(Boolean))].sort(),d=[...new Set([...r?.proofIds??[],...t.proofIds??[]])].sort();return this.entities.set(o,{id:o,kind:t.kind,label:s,...t.projectId?{projectId:t.projectId}:{},identity:{key:t.key,scope:t.projectId?"project":"workspace",aliases:n,fingerprint:V(JSON.stringify({kind:t.kind,key:t.key,attributes:a}))},attributes:a,proofIds:d}),o}addRelation(t){let o=E("relation",`${t.from}\0${t.kind}\0${t.to}`),i=this.relations.get(o),r=[...new Set([...i?.proofIds??[],...t.proofIds])].sort(),c=new Set(r.map(n=>this.proofs.get(n)?.provider).filter(Boolean)).size,s=t.trust??i?.trust??"observed",a=c>=2&&s!=="ambiguous"?"corroborated":s;return this.relations.set(o,{id:o,from:t.from,to:t.to,kind:t.kind,derivation:t.derivation??i?.derivation??"extracted",trust:a,confidence:a==="corroborated"?"high":t.confidence??i?.confidence??"high",proofIds:r}),o}};function ee(e){let t=[],o=null;for(let i of e.split(/\r?\n/)){let r=i.match(/^\s*\[\[([^\]]+)\]\]\s*(?:#.*)?$/)?.[1]?.trim()??i.match(/^\s*\[([^\]]+)\]\s*(?:#.*)?$/)?.[1]?.trim();if(r){o&&t.push({name:o.name,body:o.lines.join(`
|
|
3
|
+
`)}function Ue(e,t){return Je(e,Ve(e,t))}var Ye=[{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 V(e){return createHash("sha256").update(e).digest("hex")}function E(e,t){return `wkg:${e}:${V(`${e}\0${t}`).slice(0,20)}`}function O(e){return e.replace(/\\/g,"/")}function x(e){let t=O(e).replace(/^\.\//,"");return !t||t.startsWith("/")||/^[A-Za-z]:\//.test(t)||t.split("/").includes("..")?"unknown":t}function j(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 K(e){if(Array.isArray(e))return e.filter(o=>typeof o=="string").map(o=>o.trim()).filter(Boolean).sort();let t=j(e);return t?Object.keys(t).map(o=>o.trim()).filter(Boolean).sort():[]}function Xe(e){if(Array.isArray(e))return e.map(o=>typeof o=="string"?o.split("=",1)[0]?.trim():"").filter(o=>!!o).sort();let t=j(e);return t?Object.keys(t).sort():[]}function Qe(e){return Object.fromEntries(Object.entries(e).filter(t=>t[1]!==void 0).sort(([t],[o])=>t.localeCompare(o)))}async function q(e,t){let o=[],i=[e],r=0;for(;r<i.length&&o.length<t;){let c=i[r++],s;try{s=await S.readdir(c,{withFileTypes:true});}catch{continue}s.sort((a,n)=>a.name.localeCompare(n.name));for(let a$1 of s){if(o.length>=t)break;if(a$1.isSymbolicLink())continue;let n=p.join(c,a$1.name);a$1.isDirectory()?!Se.has(a$1.name)&&!a(a$1.name)&&i.push(n):a$1.isFile()&&o.push(n);}}return o.sort((c,s)=>c.localeCompare(s))}async function Ae(e){return new Promise(t=>{let o=createHash("sha256"),i=createReadStream(e);i.on("data",r=>o.update(r)),i.on("error",r=>{t(`unreadable:${r.code??"unknown"}`);}),i.on("end",()=>t(o.digest("hex")));})}var et=promisify(execFile);async function D(e,t){let o=await et("git",t,{cwd:e,encoding:"buffer",maxBuffer:268435456,windowsHide:true});return Buffer.isBuffer(o.stdout)?o.stdout:Buffer.from(o.stdout)}function tt(){return [".",...[...Se].sort((e,t)=>e.localeCompare(t)).map(e=>`:(exclude,glob)**/${e}/**`)]}async function ot(e){try{let t=(await D(e.root,["rev-parse","--show-prefix"])).toString("utf8").trim().replace(/\\/gu,"/"),o=t?`${t.replace(/^\/+|\/+$/gu,"")}/`:"";if(p.posix.isAbsolute(o)||o==="../"||o.startsWith("../")||o.includes("/../"))return null;let i=tt(),[r,c,s,a,n,d]=await Promise.all([D(e.root,["ls-files","--full-name","-s","--",...i]),D(e.root,["diff","--no-ext-diff","--no-textconv","--binary","HEAD","--",...i]),D(e.root,["ls-files","--full-name","--others","--exclude-standard","-z","--",...i]),D(e.root,["ls-files","--full-name","--others","--ignored","--exclude-standard","-z","--",...i]),D(e.root,["ls-files","-v","--",...i]),D(e.root,["ls-files","--full-name","-s","--",...i])]);if(n.toString("utf8").split(/\r?\n/u).some(y=>/^[a-z] /u.test(y)))return null;let l=e.files.map(y=>{let g=O(p.relative(e.root,y));return `${o}${g}`});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=>l.some(g=>g.startsWith(`${y}/`))))return null;let f=new Set(l),v=Buffer.concat([s,a]).toString("utf8").split("\0").filter(Boolean).map(y=>y.replace(/\\/gu,"/")).filter(y=>f.has(y)),m=await We([...new Set(v)].sort((y,g)=>y.localeCompare(g)),16,async y=>{let g=o?y.slice(o.length):y;return {path:g,hash:await Ae(p.resolve(e.root,...g.split("/").filter(Boolean)))}}),w=createHash("sha256");w.update(`git-worktree-v2\0${e.kind}\0${e.id}\0${e.fileLimit}\0`),w.update(r),w.update(createHash("sha256").update(c).digest());for(let y of m)w.update(`${y.path}\0${y.hash}\0`);return {kind:e.kind,id:e.id,strategy:"git-worktree-v2",hash:w.digest("hex"),fileCount:e.files.length,fileLimit:e.fileLimit,truncated:e.files.length>=e.fileLimit}}catch{return null}}async function We(e,t,o){let i=new Array(e.length),r=0,c=Array.from({length:Math.min(t,Math.max(e.length,1))},async()=>{for(;r<e.length;){let s=r++;i[s]=await o(e[s]);}});return await Promise.all(c),i}async function ue(e){let t=await ot(e);if(t)return t;let o=await We(e.files,16,async r=>({path:O(p.relative(e.root,r)),hash:await Ae(r)}));o.sort((r,c)=>r.path.localeCompare(c.path));let i=createHash("sha256");i.update(`content-merkle-v1\0${e.kind}\0${e.id}\0${e.fileLimit}\0`);for(let r of o)i.update(`${r.path}\0${r.hash}\0`);return {kind:e.kind,id:e.id,strategy:"content-merkle-v1",hash:i.digest("hex"),fileCount:o.length,fileLimit:e.fileLimit,truncated:o.length>=e.fileLimit}}async function rt(e){let t=p.resolve(e.workspacePath),o=[...e.projects].sort((s,a)=>s.id.localeCompare(a.id)),i=e.inventories?.workspaceFiles??await q(t,e.workspaceFileLimit),r=await Promise.all([ue({kind:"workspace",id:"workspace",root:t,files:i,fileLimit:e.workspaceFileLimit}),...o.map(async s=>{let a=s.absolutePath?p.resolve(s.absolutePath):p.resolve(t,s.path),n=e.inventories?.projectFiles?.get(s.id)??await q(a,e.projectFileLimit);return ue({kind:"project",id:s.id,root:a,files:n,fileLimit:e.projectFileLimit})})]);r.sort((s,a)=>s.kind.localeCompare(a.kind)||s.id.localeCompare(a.id));let c=createHash("sha256");c.update("workspace-knowledge-graph-inputs.v1\0hybrid-git-content-v2\0");for(let s of r)c.update(`${s.kind}\0${s.id}\0${s.hash}\0${s.fileCount}\0${s.fileLimit}\0${s.truncated}\0`);return {schemaVersion:"workspace-knowledge-graph-inputs.v1",strategy:"hybrid-git-content-v2",hashAlgorithm:"sha256",hash:c.digest("hex"),scopes:r}}async function B(e){let t=await S.readFile(e,"utf8");if(e.toLowerCase().endsWith(".json")){let o=JSON.parse(t),i=j(o);return i?[i]:[]}return parseAllDocuments(t,{logLevel:"silent"}).map(o=>j(o.toJSON())).filter(o=>o!==null)}function J(e){return [...new Set([...e.workspaceFiles,...e.projects.flatMap(t=>e.filesByProject.get(t.id)??[])])].sort((t,o)=>t.localeCompare(o))}function me(e){return /^(?:openapi|swagger)(?:\.[^.]+)?\.(?:json|ya?ml)$/i.test(p.basename(e))}function ge(e){let t=p.basename(e).toLowerCase();return /\.(?:graphql|gql|proto)$/.test(t)||/^asyncapi(?:\.[^.]+)?\.(?:json|ya?ml)$/.test(t)}function he(e){let t=p.basename(e);return /^Dockerfile(?:\..+)?$/i.test(t)||/\.tf$/i.test(t)||t==="Chart.yaml"}function ye(e){return /(?:^|[\\/])(?:README|ARCHITECTURE|CONTRIBUTING|SECURITY)\.md$/i.test(e)}function st(e,t){let o=O(p.relative(e,t));return /^\.github\/workflows\/.+\.ya?ml$/i.test(o)||/^(?:\.gitlab-ci\.ya?ml|azure-pipelines\.ya?ml|Jenkinsfile|bitbucket-pipelines\.ya?ml|\.woodpecker\.ya?ml)$/i.test(o)||/^\.circleci\/config\.ya?ml$/i.test(o)}function ve(e,t){let o=O(p.relative(e,t));return /(?:^|\/)(?:adr|adrs|decisions)(?:\/).+\.md$/i.test(o)||/(?:^|\/)ADR[-_0-9].+\.md$/i.test(o)}async function ke(e){let t=new Set;for(let o of [e.workspacePath,...e.projects.map(i=>i.root)])for(let i of ["compose.yml","compose.yaml","docker-compose.yml","docker-compose.yaml"]){let r=p.join(o,i);await S.pathExists(r)&&t.add(r);}return [...t].sort((o,i)=>o.localeCompare(i))}async function be(e){let o=[e.workspacePath,...e.projects.map(r=>r.root)].flatMap(r=>[p.join(r,"CODEOWNERS"),p.join(r,".github","CODEOWNERS"),p.join(r,"docs","CODEOWNERS")]),i=await Promise.all(o.map(async r=>await S.pathExists(r)?r:null));return [...new Set(i.filter(r=>!!r))].sort((r,c)=>r.localeCompare(c))}function we(e){let t=[{root:e.workspacePath,files:e.workspaceFiles},...e.projects.map(o=>({root:o.root,files:e.filesByProject.get(o.id)??[]}))];return [...new Set(t.flatMap(o=>o.files.filter(i=>st(o.root,i))))].sort((o,i)=>o.localeCompare(i))}async function Pe(e){let t=[];for(let o of J(e))if(/\.ya?ml$/i.test(o))try{(await B(o)).some(r=>{let c=j(r.metadata);return !!(P(r.apiVersion)&&P(r.kind)&&P(c?.name))})&&t.push(o);}catch{}return t.sort((o,i)=>o.localeCompare(i))}function N(e,t){let o=p.resolve(t);return e.filter(i=>o===i.root||o.startsWith(`${i.root}${p.sep}`)).sort((i,r)=>r.root.length-i.root.length)[0]??null}var re=class{constructor(t,o,i){this.workspacePath=t;this.now=o;this.workspaceName=i;}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,o){if(o){let i=O(p.relative(o.root,t));return x(p.posix.join(o.artifactPrefix,i))}return x(p.relative(this.workspacePath,t))}async addProof(t){let o;if(t.absolutePath){if(!this.contentHashes.has(t.absolutePath))try{this.contentHashes.set(t.absolutePath,V(await S.readFile(t.absolutePath)));}catch{this.contentHashes.set(t.absolutePath,null);}o=this.contentHashes.get(t.absolutePath)??void 0;}let i=x(t.artifact),r=E("proof",[t.provider,i,t.pointer??"",t.line??"",t.detail??""].join("\0"));return this.proofs.has(r)||this.proofs.set(r,{id:r,provider:t.provider,artifact:i,...t.pointer?{pointer:t.pointer}:{},...t.line?{line:t.line}:{},...t.column?{column:t.column}:{},...o?{contentHash:o}:{},observedAt:this.now.toISOString(),derivation:t.derivation??"extracted",trust:t.trust??"observed",confidence:t.confidence??"high",freshness:"fresh",...t.detail?{detail:t.detail}:{}}),r}addEntity(t){let o=E(t.kind,t.key),i=Qe(t.attributes??{}),r=this.entities.get(o),c=t.label.trim(),s=c||r?.label||t.key.trim()||t.kind;!c&&!this.emptyLabelDiagnostics.has(o)&&(this.emptyLabelDiagnostics.add(o),this.diagnostics.push({code:"graph.knowledge.empty_label_normalized",severity:"warning",message:`An empty ${t.kind} label was normalized to ${s}.`,entityIds:[o],recommendation:"Inspect the provider proof and preserve a non-empty source identifier before publishing the entity."}));let a={...r?.attributes??{}};for(let[l,u]of Object.entries(i)){if(l in a&&JSON.stringify(a[l])!==JSON.stringify(u)){let f=`${o}\0${l}`;this.attributeConflicts.has(f)||(this.attributeConflicts.add(f),this.diagnostics.push({code:"graph.knowledge.attribute_conflict",severity:"warning",message:`Conflicting ${l} values were observed for ${t.kind} ${s}.`,entityIds:[o],recommendation:"Inspect the entity proof paths and make the authoritative source explicit."}));continue}a[l]=u;}let n=[...new Set([...r?.identity.aliases??[],...t.aliases??[]].map(l=>l.trim()).filter(Boolean))].sort(),d=[...new Set([...r?.proofIds??[],...t.proofIds??[]])].sort();return this.entities.set(o,{id:o,kind:t.kind,label:s,...t.projectId?{projectId:t.projectId}:{},identity:{key:t.key,scope:t.projectId?"project":"workspace",aliases:n,fingerprint:V(JSON.stringify({kind:t.kind,key:t.key,attributes:a}))},attributes:a,proofIds:d}),o}addRelation(t){let o=E("relation",`${t.from}\0${t.kind}\0${t.to}`),i=this.relations.get(o),r=[...new Set([...i?.proofIds??[],...t.proofIds])].sort(),c=new Set(r.map(n=>this.proofs.get(n)?.provider).filter(Boolean)).size,s=t.trust??i?.trust??"observed",a=c>=2&&s!=="ambiguous"?"corroborated":s;return this.relations.set(o,{id:o,from:t.from,to:t.to,kind:t.kind,derivation:t.derivation??i?.derivation??"extracted",trust:a,confidence:a==="corroborated"?"high":t.confidence??i?.confidence??"high",proofIds:r}),o}};function ee(e){let t=[],o=null;for(let i of e.split(/\r?\n/)){let r=i.match(/^\s*\[\[([^\]]+)\]\]\s*(?:#.*)?$/)?.[1]?.trim()??i.match(/^\s*\[([^\]]+)\]\s*(?:#.*)?$/)?.[1]?.trim();if(r){o&&t.push({name:o.name,body:o.lines.join(`
|
|
4
4
|
`)}),o={name:r,lines:[]};continue}o?.lines.push(i);}return o&&t.push({name:o.name,body:o.lines.join(`
|
|
5
|
-
`)}),t}function
|
|
6
|
-
`);return {ecosystem:"cargo",name:i(/^name\s*=\s*["']([^"']+)["']/m),version:i(/^version\s*=\s*["']([^"']+)["']/m),dependencies:[...s.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=/gm)].map(a=>a[1]??a[2]).map(ne).filter((a,n,d)=>d.indexOf(a)===n).sort(),metadata:{edition:i(/^edition\s*=\s*["']([^"']+)["']/m)??"unknown",rustVersion:i(/^rust-version\s*=\s*["']([^"']+)["']/m)??"unknown",features:ee(t).find(({name:a})=>a==="features")?.body.match(/^\s*([A-Za-z0-9_.-]+)\s*=/gm)?.map(a=>a.split("=",1)[0].trim()).sort()??[]}}}if(o==="pom.xml"){let s=[...t.matchAll(/<dependency>([\s\S]*?)<\/dependency>/g)].map(a=>{let n=a[1].match(/<groupId>([^<]+)<\/groupId>/)?.[1]?.trim(),d=a[1].match(/<artifactId>([^<]+)<\/artifactId>/)?.[1]?.trim();return n&&d?`${n}:${d}`:d}).filter(a=>!!a);return {ecosystem:"maven",name:i(/<artifactId>([^<]+)<\/artifactId>/),version:i(/<version>([^<]+)<\/version>/),dependencies:s.filter((a,n,d)=>d.indexOf(a)===n).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(s=>s[1]).sort(),metadata:{targetFrameworks:(i(/<TargetFrameworks?>([^<]+)<\/TargetFrameworks?>/)??"unknown").split(";"),rootNamespace:i(/<RootNamespace>([^<]+)<\/RootNamespace>/)??"unknown"}};let r={"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"},c=o==="requirements.txt"?t.split(/\r?\n/).map(s=>s.trim().match(/^([A-Za-z0-9_.-]+)/)?.[1]):o.startsWith("build.gradle")?[...t.matchAll(/(?:implementation|api|compileOnly|runtimeOnly|testImplementation)\s*\(?["']([^:"']+):([^:"']+)/g)].map(s=>`${s[1]}:${s[2]}`):o==="Gemfile"?[...t.matchAll(/^\s*gem\s+["']([^"']+)["']/gm)].map(s=>s[1]):o==="mix.exs"?[...t.matchAll(/\{:\s*([A-Za-z0-9_]+)\s*,/g)].map(s=>s[1]):o==="pubspec.yaml"?[...t.matchAll(/^\s{2}([A-Za-z0-9_]+):\s+/gm)].map(s=>s[1]):o==="Package.swift"?[...t.matchAll(/\.package\s*\(\s*url:\s*["']([^"']+)["']/g)].map(s=>s[1]):o==="CMakeLists.txt"?[...t.matchAll(/find_package\s*\(\s*([A-Za-z0-9_.+-]+)/gi)].map(s=>s[1]):o==="project.clj"||o==="deps.edn"?[...t.matchAll(/\[?([A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+)\s+/g)].map(s=>s[1]):o==="build.sbt"?[...t.matchAll(/["']([^"']+)["']\s*%%?\s*["']([^"']+)["']/g)].map(s=>`${s[1]}:${s[2]}`):[];return {ecosystem:r[o]??"unknown",dependencies:c.filter(s=>!!s).filter((s,a,n)=>n.indexOf(s)===a).sort()}}function Ie(e,t){let o=e==="cargo"?ne(t):t;return e==="cargo"?o.toLowerCase().replace(/[-_]/g,""):o.toLowerCase()}function nt(e,t){let o=[...e.entities.values()].filter(r=>r.kind==="package"&&r.projectId===t),i=new Map;for(let r of o){let c=String(r.attributes.ecosystem??"unknown");for(let s of new Set([r.label,...r.identity.aliases])){let a=`${c}\0${Ie(c,s)}`,n=i.get(a)??[];n.push(r),i.set(a,n);}}for(let r of o){let c=String(r.attributes.ecosystem??"unknown"),s=Array.isArray(r.attributes.dependencies)?r.attributes.dependencies.filter(a=>typeof a=="string"):[];for(let a of s){let n=`${c}\0${Ie(c,a)}`,d=(i.get(n)??[]).filter(u=>u.id!==r.id);if(d.length!==1)continue;let l=d[0];e.addRelation({from:r.id,to:l.id,kind:"depends-on",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:r.proofIds});let m=E("module",`dependency:${c}:${ne(a)}`);e.relations.delete(E("relation",`${r.id}\0depends-on\0${m}`));}}for(let r of [...e.entities.values()]){if(r.kind!=="module"||r.projectId)continue;[...e.relations.values()].some(s=>s.from===r.id||s.to===r.id)||e.entities.delete(r.id);}}var at={id:"workspace-foundation",version:"1.0.0",async run(e){let{state:t}=e,o=await t.addProof({provider:this.id,artifact:i.workspaceContract,absolutePath:p.join(e.workspacePath,".workspai","workspace.contract.json"),trust:"authoritative",derivation:"authored",detail:"Workspace identity and project registry boundary"}),i$1=t.addEntity({kind:"workspace",key:`workspace:${t.workspaceName}`,label:t.workspaceName,aliases:[t.workspaceName],proofIds:[o]});for(let r of e.projects){let c=e.filesByProject.get(r.id)??[],s=c.find(v=>/[\\/]\.(?:workspai|rapidkit)[\\/](?:project|context)\.json$/.test(v)),a=c.find(v=>fe.has(p.basename(v))),n=s??a,d=await t.addProof({provider:this.id,artifact:n?t.artifactPath(n,r):x(p.posix.join(r.artifactPrefix,".workspai/project.json")),...n?{absolutePath:n}:{},trust:s?"authoritative":"observed",derivation:s?"authored":"inferred",detail:`Project ${r.id}`}),l=t.addEntity({kind:"project",key:`project:${r.id}`,label:r.id,projectId:r.id,aliases:[r.id,r.path],attributes:{path:r.path,runtime:r.runtime,runtimeCandidates:r.runtimeCandidates,framework:r.framework,kit:r.kit,kind:r.kind,category:r.category},proofIds:[d]});t.addRelation({from:i$1,to:l,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[d]});let m=new Set,u=[];for(let v of c){let g=p.basename(v);if(/^(?:\.env\.example|\.env\.sample|\.env\.template)$/i.test(g))try{let P=await S.readFile(v,"utf8");for(let f of P.split(/\r?\n/)){let y=f.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=/)?.[1];y&&m.add(y);}}catch{}let w=se(r.root,v);if(w&&u.push(v),!(w||ie(r.root,v))&&!(!fe.has(g)&&!/\.(?:cs|fs|vb)proj$/i.test(g)))try{let P=await S.readFile(v,"utf8"),f=it(v,P),y=await t.addProof({provider:this.id,artifact:t.artifactPath(v,r),absolutePath:v,pointer:"/",confidence:f.name?"high":"medium",detail:`${f.ecosystem} manifest`}),$=t.addEntity({kind:"package",key:`package:${r.id}:${f.ecosystem}:${f.name??t.artifactPath(v,r)}`,label:f.name??`${r.id}/${O(p.relative(r.root,v))}`,projectId:r.id,aliases:[g,...f.name?[f.name]:[]],attributes:{ecosystem:f.ecosystem,version:f.version,manifest:t.artifactPath(v,r),dependencies:f.dependencies,...f.metadata??{}},proofIds:[y]});t.addRelation({from:l,to:$,kind:"contains",proofIds:[y]});for(let k of f.dependencies.slice(0,500)){let C=t.addEntity({kind:"module",key:`dependency:${f.ecosystem}:${k}`,label:k,aliases:[k],attributes:{ecosystem:f.ecosystem,external:true},proofIds:[y]});t.addRelation({from:$,to:C,kind:"depends-on",trust:"authoritative",derivation:"authored",proofIds:[y]});}}catch{}}if(nt(t,r.id),m.size>0){let v=c.find(g=>/^\.env\.(?:example|sample|template)$/i.test(p.basename(g)));if(v){let g=await t.addProof({provider:this.id,artifact:t.artifactPath(v,r),absolutePath:v,detail:"Public environment template keys only; values are intentionally excluded"}),w=t.addEntity({kind:"environment",key:`environment:${r.id}:template`,label:`${r.id} environment contract`,projectId:r.id,attributes:{keys:[...m].sort(),valuesEmitted:false},proofIds:[g]});t.addRelation({from:l,to:w,kind:"configured-by",proofIds:[g]});}}if(u.length>0){let v=await t.addProof({provider:this.id,artifact:t.artifactPath(u[0],r),absolutePath:u[0],detail:`${u.length} test file(s) discovered`}),g=t.addEntity({kind:"test-suite",key:`tests:${r.id}`,label:`${r.id} tests`,projectId:r.id,attributes:{fileCount:u.length},proofIds:[v]});t.addRelation({from:g,to:l,kind:"tests",proofIds:[v]});let w=new Map;for(let P of u){if(!T.has(p.extname(P).toLowerCase()))continue;let f=F(P,r.runtime),y=w.get(f)??[];y.push(P),w.set(f,y);}for(let[P,f]of [...w].sort(([y],[$])=>y.localeCompare($))){let y=await t.addProof({provider:this.id,artifact:t.artifactPath(f[0],r),absolutePath:f[0],detail:`${f.length} ${P} test source file(s) discovered`}),$=t.addEntity({kind:"test-suite",key:`tests:${r.id}:${P}`,label:`${r.id} ${P} tests`,projectId:r.id,attributes:{fileCount:f.length,language:P},proofIds:[y]});t.addRelation({from:$,to:l,kind:"tests",proofIds:[y]});}}}}};function te(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function ct(e){if(Array.isArray(e))return e.length;let t=j(e);return t?Object.keys(t).length:0}var dt={id:"vscode-extension-manifest",version:"1.0.0",async applicable(e){for(let t of e.projects){let o=p.join(t.root,"package.json");try{let i=j(await S.readJson(o));if(b(j(i?.engines)?.vscode)||j(i?.contributes))return true}catch{}}return false},async run(e){for(let t of e.projects){let o=p.join(t.root,"package.json"),i=null;try{i=j(await S.readJson(o));}catch{continue}let r=j(i?.contributes),c=b(j(i?.engines)?.vscode);if(!c&&!r)continue;let s=e.state.artifactPath(o,t),a=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,pointer:"/",trust:"authoritative",derivation:"authored",confidence:"high",detail:`VS Code extension manifest for ${t.id}`}),n=e.state.addEntity({kind:"project",key:`project:${t.id}`,label:t.id,projectId:t.id,attributes:{vscodeExtension:true,vscodeEngine:c,extensionEntry:b(i?.main)??b(i?.browser),extensionKind:K(i?.extensionKind),activationEvents:K(i?.activationEvents),contributionCounts:Object.entries(r??{}).map(([y,$])=>`${y}:${ct($)}`).sort()},proofIds:[a]}),d=Array.isArray(r?.commands)?r.commands:[],l=j(r?.menus),m=Object.values(l??{}).flatMap(y=>Array.isArray(y)?y:[]),u=Array.isArray(r?.keybindings)?r.keybindings:[];for(let[y,$]of d.entries()){let k=j($),C=b(k?.command);if(!C)continue;let R=`/contributes/commands/${y}`,h=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,pointer:R,trust:"authoritative",derivation:"authored",confidence:"high",detail:`VS Code command ${C}`}),I=m.filter(W=>b(j(W)?.command)===C).length,A=u.filter(W=>b(j(W)?.command)===C).length,_=e.state.addEntity({kind:"api",key:`vscode-command:${t.id}:${C}`,label:C,projectId:t.id,aliases:[b(k?.title),b(k?.shortTitle)].filter(W=>!!W),attributes:{surface:"vscode-command",title:b(k?.title),shortTitle:b(k?.shortTitle),category:b(k?.category),enablement:b(k?.enablement),icon:b(k?.icon),menuCount:I,keybindingCount:A,manifest:s,pointer:R},proofIds:[h]});e.state.addRelation({from:n,to:_,kind:"exposes",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:[h]});}let v=j(r?.viewsContainers),g=new Map;for(let[y,$]of Object.entries(v??{}))if(Array.isArray($))for(let[k,C]of $.entries()){let R=j(C),h=b(R?.id);if(!h)continue;let I=`/contributes/viewsContainers/${te(y)}/${k}`,A=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,pointer:I,trust:"authoritative",derivation:"authored",detail:`VS Code view container ${h}`}),_=e.state.addEntity({kind:"service",key:`vscode-view-container:${t.id}:${h}`,label:h,projectId:t.id,aliases:[b(R?.title)].filter(W=>!!W),attributes:{surface:"vscode-view-container",title:b(R?.title),location:y,icon:b(R?.icon),manifest:s,pointer:I},proofIds:[A]});g.set(h,_),e.state.addRelation({from:n,to:_,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[A]});}let w=j(r?.views);for(let[y,$]of Object.entries(w??{}))if(Array.isArray($))for(let[k,C]of $.entries()){let R=j(C),h=b(R?.id);if(!h)continue;let I=`/contributes/views/${te(y)}/${k}`,A=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,pointer:I,trust:"authoritative",derivation:"authored",detail:`VS Code view ${h}`}),_=e.state.addEntity({kind:"service",key:`vscode-view:${t.id}:${h}`,label:h,projectId:t.id,aliases:[b(R?.name),b(R?.contextualTitle)].filter(W=>!!W),attributes:{surface:R?.type==="webview"?"vscode-webview":"vscode-view",name:b(R?.name),contextualTitle:b(R?.contextualTitle),containerId:y,viewType:b(R?.type)??"tree",manifest:s,pointer:I},proofIds:[A]});e.state.addRelation({from:g.get(y)??n,to:_,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[A]});}let P=Array.isArray(r?.configuration)?r.configuration:r?.configuration?[r.configuration]:[];for(let[y,$]of P.entries()){let k=j($),C=j(k?.properties);for(let[R,h]of Object.entries(C??{})){let I=j(h),_=`${Array.isArray(r?.configuration)?`/contributes/configuration/${y}`:"/contributes/configuration"}/properties/${te(R)}`,W=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,pointer:_,trust:"authoritative",derivation:"authored",detail:`VS Code configuration ${R}`}),L=e.state.addEntity({kind:"schema",key:`vscode-configuration:${t.id}:${R}`,label:R,projectId:t.id,attributes:{surface:"vscode-configuration",title:b(k?.title),type:b(I?.type),scope:b(I?.scope),description:b(I?.description)??b(I?.markdownDescription),manifest:s,pointer:_},proofIds:[W]});e.state.addRelation({from:n,to:L,kind:"configured-by",trust:"authoritative",derivation:"authored",proofIds:[W]});}}let f=Array.isArray(r?.chatParticipants)?r.chatParticipants:[];for(let[y,$]of f.entries()){let k=j($),C=b(k?.id);if(!C)continue;let R=`/contributes/chatParticipants/${y}`,h=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,pointer:R,trust:"authoritative",derivation:"authored",detail:`VS Code chat participant ${C}`}),I=e.state.addEntity({kind:"api",key:`vscode-chat-participant:${t.id}:${C}`,label:C,projectId:t.id,aliases:[b(k?.name),b(k?.fullName)].filter(A=>!!A),attributes:{surface:"vscode-chat-participant",name:b(k?.name),fullName:b(k?.fullName),description:b(k?.description),manifest:s,pointer:R},proofIds:[h]});e.state.addRelation({from:n,to:I,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[h]});}}}};function Ee(e,t){let o=[],i=false;for(let r of e.split(/\r?\n/)){let c=r.match(/^\s*\[([^\]]+)\]\s*(?:#.*)?$/)?.[1]?.trim();if(c){i=c===t;continue}if(!i||/^\s*(?:#|$)/.test(r))continue;let s=r.match(/^\s*(?:"([^"]+)"|'([^']+)'|([A-Za-z0-9_.-]+))\s*=\s*["']([^"']+)["']/),a=s?.[1]??s?.[2]??s?.[3],n=s?.[4];a&&n&&o.push([a,n]);}return o}var lt={id:"python-project-manifest",version:"1.0.0",async applicable(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).find(i=>p.dirname(i)===t.root&&p.basename(i).toLowerCase()==="pyproject.toml");if(o)try{if(Ee(await S.readFile(o,"utf8"),"project.scripts").length>0)return true}catch{}}return false},async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).find(n=>p.dirname(n)===t.root&&p.basename(n).toLowerCase()==="pyproject.toml");if(!o)continue;let i=await S.readFile(o,"utf8"),r=Ee(i,"project.scripts"),c=e.state.artifactPath(o,t),s=await e.state.addProof({provider:this.id,artifact:c,absolutePath:o,pointer:"/project",trust:"authoritative",derivation:"authored",detail:"Python project manifest"}),a=e.state.addEntity({kind:"project",key:`project:${t.id}`,label:t.id,projectId:t.id,attributes:{pythonProject:true,requiresPython:i.match(/^requires-python\s*=\s*["']([^"']+)["']/m)?.[1],buildBackend:i.match(/^build-backend\s*=\s*["']([^"']+)["']/m)?.[1],consoleScriptCount:r.length},proofIds:[s]});for(let[n,d]of r){let l=`/project/scripts/${n}`,m=await e.state.addProof({provider:this.id,artifact:c,absolutePath:o,pointer:l,trust:"authoritative",derivation:"authored",detail:`Python console script ${n}`}),u=e.state.addEntity({kind:"api",key:`python-console-script:${t.id}:${n}`,label:n,projectId:t.id,aliases:[d],attributes:{surface:"python-console-script",entrypoint:d,manifest:c,pointer:l},proofIds:[m]});e.state.addRelation({from:a,to:u,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[m]});}}}},pt={id:"source-language-inventory",version:"1.0.0",applicable(e){return e.projects.some(t=>(e.semanticFilesByProject.get(t.id)??[]).some(o=>T.has(p.extname(o).toLowerCase())))},async run(e){for(let t of e.projects){let o=e.semanticFilesByProject.get(t.id)??[],i=o.filter(s=>T.has(p.extname(s).toLowerCase())),r=new Map;for(let s of i){let a=F(s,t.runtime),n=r.get(a)??{files:[],production:[],tests:[],examples:[],generated:[],extensions:new Set};n.files.push(s),n.extensions.add(p.extname(s).toLowerCase()),oe(t.root,s)&&n.generated.push(s),se(t.root,s)?n.tests.push(s):ie(t.root,s)?n.examples.push(s):n.production.push(s),r.set(a,n);}let c=E("project",`project:${t.id}`);for(let[s,a]of [...r].sort(([n],[d])=>n.localeCompare(d))){let n=[a.production[0],a.tests[0],a.examples[0],a.generated[0],a.files[0]].filter((u,v,g)=>!!u&&g.indexOf(u)===v),d=await Promise.all(n.map(u=>e.state.addProof({provider:this.id,artifact:e.state.artifactPath(u,t),absolutePath:u,derivation:"extracted",trust:"observed",confidence:"high",detail:`${s} source-language inventory evidence`}))),l=[...a.production.length>0?["production"]:[],...a.tests.length>0?["test"]:[],...a.examples.length>0?["example"]:[],...a.generated.length>0?["generated"]:[]],m=e.state.addEntity({kind:"language",key:`language:${t.id}:${s}`,label:`${t.id} programming language: ${s}`,projectId:t.id,aliases:[s,`${s} source`,`${s} programming language`,"programming languages actually used"],attributes:{language:s,usage:"source-build-test",roles:l,fileCount:a.files.length,productionFileCount:a.production.length,testFileCount:a.tests.length,exampleFileCount:a.examples.length,generatedFileCount:a.generated.length,extensions:[...a.extensions].sort(),inventoryTruncated:o.length>=e.semanticScanLimit},proofIds:d});e.state.addRelation({from:c,to:m,kind:"uses-language",derivation:"extracted",trust:"observed",confidence:o.length>=e.semanticScanLimit?"medium":"high",proofIds:d});}o.length>=e.semanticScanLimit&&e.state.diagnostics.push({code:"graph.provider.source_language_inventory.limit_reached",severity:"warning",message:`Language inventory for ${t.id} reached ${e.semanticScanLimit} files. Counts are lower bounds.`,recommendation:"Increase maxFilesPerProject or use a scoped project run before treating language counts as complete."});}}},ft={id:"source-structure",version:"1.0.0",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(o=>T.has(p.extname(o).toLowerCase())&&!M(t.root,o)))},async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).filter(d=>!M(t.root,d)),i=e.semanticFilesByProject.get(t.id)??o,r=Ge((e.filesByProject.get(t.id)??[]).filter(d=>T.has(p.extname(d).toLowerCase())&&!M(t.root,d)),1e3),c=new Set(i.filter(d=>!M(t.root,d)).map(d=>p.resolve(d))),s=new Map;await Promise.all(o.map(async d=>{try{let l=await S.stat(d);if(l.isFile()&&l.size<=2*1024*1024){let m=p.resolve(d);c.add(m),s.set(m,l.size);}}catch{}}));let a=0,n=0;for(let d of r){let l;try{if((await S.stat(d)).size>2*1024*1024)continue;l=await S.readFile(d,"utf8");}catch{continue}let m=Ue(d,l),u=e.state.artifactPath(d,t),v=await e.state.addProof({provider:this.id,artifact:u,absolutePath:d,derivation:"extracted",trust:"observed",confidence:"high",detail:`${F(d,t.runtime)} source file`}),g=e.state.addEntity({kind:"file",key:`file:${t.id}:${u}`,label:u,projectId:t.id,aliases:[p.basename(d)],attributes:{artifact:u,language:F(d,t.runtime),bytes:Buffer.byteLength(l),...oe(t.root,d)?{generated:true}:{}},proofIds:[v]});e.state.addRelation({from:E("project",`project:${t.id}`),to:g,kind:"contains",proofIds:[v]});let w=Q(m,qe,250);for(let f of w){let y=await e.state.addProof({provider:this.id,artifact:u,absolutePath:d,line:f.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${f.detail}: ${f.name}`}),$=Ze(d,f.name,c,t.root);if($){let k=e.state.artifactPath($,t),C=E("file",`file:${t.id}:${k}`);if(!e.state.entities.has(C)){let R=await S.stat($).catch(()=>null),h=await e.state.addProof({provider:this.id,artifact:k,...R?.isFile()&&R.size<=2*1024*1024?{absolutePath:$}:{},derivation:"extracted",trust:"observed",confidence:"high",detail:"Locally imported artifact resolved from the project inventory"}),I=e.state.addEntity({kind:"file",key:`file:${t.id}:${k}`,label:k,projectId:t.id,aliases:[p.basename($)],attributes:{artifact:k,language:F($,t.runtime),bytes:s.get(p.resolve($))??(R?.isFile()?R.size:void 0)},proofIds:[h]});e.state.addRelation({from:E("project",`project:${t.id}`),to:I,kind:"contains",proofIds:[h]});}e.state.addRelation({from:g,to:C,kind:"imports",confidence:"high",proofIds:[y]});}else {let k=f.name.startsWith(".");k&&(n+=1);let C=e.state.addEntity({kind:"module",key:`module:${t.id}:${f.name}`,label:f.name,projectId:t.id,aliases:[f.name],attributes:{specifier:f.name,resolution:k?"unresolved-local":"external"},proofIds:[y]});e.state.addRelation({from:g,to:C,kind:"imports",confidence:k?"low":"medium",proofIds:[y]});}}if(a<1e4){let f=Q(m,xe,Math.min(100,1e4-a));a+=f.length;for(let y of f){let $=await e.state.addProof({provider:this.id,artifact:u,absolutePath:d,line:y.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${y.detail}: ${y.name}`}),k=e.state.addEntity({kind:"symbol",key:`symbol:${t.id}:${u}:${y.detail}:${y.name}`,label:y.name,projectId:t.id,attributes:{symbolKind:y.detail,language:F(d,t.runtime),...oe(t.root,d)?{generated:true}:{}},proofIds:[$]});e.state.addRelation({from:g,to:k,kind:"defines",confidence:"medium",proofIds:[$]});}}let P=t.framework!=="vscode-extension"&&t.kind!=="extension";for(let f of P?Q(m,Ye,100):[]){let y=l.split(/\r?\n/)[f.line-1]??"";if(He(d,y))continue;let $=y.match(/(?:@|\.|\[|^\s*)(get|post|put|delete|patch|options|head)/i)?.[1]?.toUpperCase()??"HTTP",k=await e.state.addProof({provider:this.id,artifact:u,absolutePath:d,line:f.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${$} ${f.name}`}),C=e.state.addEntity({kind:"endpoint",key:`source-endpoint:${t.id}:${u}:${$}:${f.name}`,label:`${$} ${f.name||"/"}`,projectId:t.id,attributes:{method:$,path:f.name||"/",source:u},proofIds:[k]});e.state.addRelation({from:g,to:C,kind:"defines",confidence:"medium",proofIds:[k]});}}(r.length>=1e3||a>=1e4)&&e.state.diagnostics.push({code:"graph.provider.source_structure.limit_reached",severity:"info",message:`Source extraction for ${t.id} sampled ${r.length} file(s) from ${o.length} indexed candidate(s).`,recommendation:"Use bounded graph search, evidence, and path queries for proof-backed retrieval; do not treat the sampled symbol inventory as exhaustive."}),n>0&&e.state.diagnostics.push({code:"graph.provider.source_structure.unresolved_local_imports",severity:"warning",message:`${n} 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."});}}};function ut(e){let o=e.slice(0,12e3).match(/(?:code generated by|generated from:|@generated by)\s*(?:(?:\/\/|#|\*)\s*)?[`"']?([^`"'\s;*]+)/i)?.[1];return !o||!p.posix.basename(o.replace(/\\/g,"/"))?null:o}function mt(e,t){let o=0,i=null,r=false;for(let c=t;c<e.length;c+=1){let s=e[c];if(i){s===i&&!r&&(i=null),r=s==="\\"&&!r,s!=="\\"&&(r=false);continue}if(s==='"'){i=s;continue}if(s==="("&&(o+=1),s===")"&&(o-=1,o===0))return e.slice(t+1,c)}return null}function gt(e){let t=[],o=/(?:deno_core::)?extension!\s*\(/g;for(let i of e.matchAll(o)){let r=(i.index??0)+i[0].lastIndexOf("("),c=mt(e,r);if(!c)continue;let s=c.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*,/)?.[1];if(!s)continue;let a=[...new Set([...c.matchAll(/\bops\s*=\s*\[([\s\S]*?)\]/g)].flatMap(d=>[...d[1].matchAll(/\b(op_[A-Za-z0-9_]+)\b/g)].map(l=>l[1])))].sort(),n=[...new Set([...c.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(l=>l[1])))].sort();t.push({name:s,line:e.slice(0,i.index??0).split(/\r?\n/).length,operations:a,scripts:n});}return t}function Ce(e,t){let o=e.indexOf(t);return o<0?void 0:e.slice(0,o).split(/\r?\n/).length}var ht={id:"runtime-bridge-semantics",version:"1.0.0",async applicable(e){for(let t of e.projects)for(let o of e.semanticFilesByProject.get(t.id)??[])if(!(p.extname(o).toLowerCase()!==".rs"||M(t.root,o)))try{let i=await S.readFile(o,"utf8");if(/(?:deno_core::)?extension!\s*\(/.test(i))return true}catch{}return false},async run(e){for(let t of e.projects){let i=(e.semanticFilesByProject.get(t.id)??[]).filter(r=>p.extname(r).toLowerCase()===".rs"&&!M(t.root,r));for(let r of i){let c="";try{if((await S.stat(r)).size>2*1024*1024)continue;c=await S.readFile(r,"utf8");}catch{continue}let s=gt(c);if(s.length===0)continue;let a=e.state.artifactPath(r,t),n=await e.state.addProof({provider:this.id,artifact:a,absolutePath:r,derivation:"extracted",trust:"observed",confidence:"high",detail:"Deno Core Rust extension declaration"}),d=e.state.addEntity({kind:"file",key:`file:${t.id}:${a}`,label:a,projectId:t.id,aliases:[p.basename(r)],attributes:{artifact:a,language:"rust",runtimeBridge:"deno-core"},proofIds:[n]});e.state.addRelation({from:E("project",`project:${t.id}`),to:d,kind:"contains",proofIds:[n]});for(let l of s){let m=await e.state.addProof({provider:this.id,artifact:a,absolutePath:r,line:l.line,derivation:"extracted",trust:"observed",confidence:"high",detail:`Deno Core extension ${l.name}`}),u=e.state.addEntity({kind:"protocol",key:`runtime-bridge:${t.id}:deno-core:${a}:${l.name}`,label:`${l.name} Rust JavaScript runtime bridge`,projectId:t.id,aliases:[l.name,`${l.name} cross-language bridge`,"Rust JavaScript TypeScript bridge"],attributes:{mechanism:"deno_core::extension!",languages:["javascript","rust","typescript"]},proofIds:[m]});e.state.addRelation({from:E("project",`project:${t.id}`),to:u,kind:"contains",proofIds:[m]}),e.state.addRelation({from:d,to:u,kind:"implements-protocol",proofIds:[m]});for(let g of ["rust","javascript","typescript"]){let w=E("language",`language:${t.id}:${g}`);e.state.entities.has(w)&&e.state.addRelation({from:u,to:w,kind:"uses-language",proofIds:[m]});}let v=new Map;for(let g of l.operations){let w=Ce(c,g),P=await e.state.addProof({provider:this.id,artifact:a,absolutePath:r,...w?{line:w}:{},derivation:"extracted",trust:"observed",confidence:"high",detail:`Rust op2 bridge operation ${g}`}),f=e.state.addEntity({kind:"symbol",key:`symbol:${t.id}:${a}:function:${g}`,label:g,projectId:t.id,aliases:[`rust:${g}`,`javascript:${g}`],attributes:{symbolKind:"function",language:"rust",bridgeMechanism:"op2"},proofIds:[P]});v.set(g,f),e.state.addRelation({from:d,to:f,kind:"defines",proofIds:[P]}),e.state.addRelation({from:f,to:u,kind:"implements-protocol",proofIds:[P,m]});}for(let g of l.scripts){let w=p.resolve(p.dirname(r),g);if(!await S.pathExists(w))continue;let P="";try{P=await S.readFile(w,"utf8");}catch{continue}let f=e.state.artifactPath(w,t),y=await e.state.addProof({provider:this.id,artifact:f,absolutePath:w,derivation:"extracted",trust:"observed",confidence:"high",detail:`${l.name} JavaScript/TypeScript extension source`}),$=e.state.addEntity({kind:"file",key:`file:${t.id}:${f}`,label:f,projectId:t.id,aliases:[p.basename(w)],attributes:{artifact:f,language:F(w,t.runtime),runtimeBridge:"deno-core"},proofIds:[y]});e.state.addRelation({from:d,to:$,kind:"references",confidence:"high",proofIds:[m,y]}),e.state.addRelation({from:$,to:u,kind:"implements-protocol",proofIds:[y,m]});for(let[k,C]of v){let R=Ce(P,k);if(!R)continue;let h=await e.state.addProof({provider:this.id,artifact:f,absolutePath:w,line:R,derivation:"extracted",trust:"observed",confidence:"high",detail:`JavaScript/TypeScript call to Rust operation ${k}`});e.state.addRelation({from:$,to:C,kind:"calls",confidence:"high",proofIds:[h,m]});}}}}}}},yt=/^[A-Z][A-Za-z0-9_]{3,}$/,vt=new Set(["Client","Config","Context","Data","Error","Event","Message","Options","Request","Response","Result","Schema","Type","Value"]),kt={id:"polyglot-semantics",version:"1.0.0",applicable(e){return e.projects.some(t=>(t.runtimeCandidates?.length??0)>1||a$1(t.root).polyglot)},async run(e){for(let t of e.projects){let o=E("project",`project:${t.id}`),i=e.filesByProject.get(t.id)??[],r=a$1(t.root),c=[...e.state.entities.values()].filter(n=>n.kind==="package"&&n.projectId===t.id);for(let n of r.units){let d=n.runtime,l=p.resolve(t.root,n.manifest),m=e.state.artifactPath(l,t),u=c.find(f=>f.attributes.manifest===m),v=u?.proofIds??[await e.state.addProof({provider:this.id,artifact:m,absolutePath:l,derivation:"extracted",trust:"observed",confidence:"high",detail:`${d} runtime-unit manifest`})],g=e.state.artifactPath(p.dirname(l),t),w=Object.fromEntries(n.stages.map(f=>[f.stage,f.command])),P=e.state.addEntity({kind:"runtime-unit",key:`runtime-unit:${t.id}:${d}:${m}`,label:`${d}:${g}:${p.basename(l)}`,projectId:t.id,aliases:[d,g],attributes:{runtime:d,root:g,ecosystem:n.ecosystem,role:n.role,manifest:m,stages:Object.keys(w).sort(),orchestrationMode:"native-manifest"},proofIds:v});e.state.addRelation({from:o,to:P,kind:"contains",confidence:"high",proofIds:v}),u&&e.state.addRelation({from:P,to:u.id,kind:"configured-by",confidence:"high",proofIds:v});for(let f of n.stages){let{stage:y,command:$}=f,k=e.state.addEntity({kind:"lifecycle-stage",key:`lifecycle-stage:${t.id}:${d}:${m}:${y}`,label:`${y} \xB7 ${d}:${g}:${p.basename(l)}`,projectId:t.id,aliases:[`${d}:${y}`,y],attributes:{stage:y,command:$,runtime:d,workingDirectory:g,commandConfidence:f.confidence,preflight:f.preflight},proofIds:v});e.state.addRelation({from:P,to:k,kind:"contains",confidence:"high",proofIds:v});}}for(let n of i.filter(d=>T.has(p.extname(d).toLowerCase()))){let d="";try{d=await S.readFile(n,"utf8");}catch{continue}let l=ut(d);if(!l)continue;let m=e.state.artifactPath(n,t),u=E("file",`file:${t.id}:${m}`);if(!e.state.entities.has(u))continue;let v=await e.state.addProof({provider:this.id,artifact:m,absolutePath:n,line:1,derivation:"extracted",trust:"observed",confidence:"high",detail:`Generated from ${l}`}),g=e.state.entities.get(u);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 w=[...e.state.relations.values()].filter(k=>k.kind==="defines"&&k.from===u).map(k=>e.state.entities.get(k.to)).filter(k=>k?.kind==="symbol");for(let k of w)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 P=l.replace(/^\.\//,"").replace(/[.,:]$/,""),y=[p.resolve(t.root,P),p.resolve(p.dirname(n),P)].find(k=>i.includes(k));if(y){let k=e.state.artifactPath(y,t),C=E("file",`file:${t.id}:${k}`);if(e.state.entities.has(C)){e.state.addRelation({from:u,to:C,kind:"generated-by",derivation:"extracted",trust:"observed",confidence:"high",proofIds:[v]});continue}}let $=e.state.addEntity({kind:"schema",key:`generation-source:${t.id}:${P}`,label:p.posix.basename(P),projectId:t.id,aliases:[P],attributes:{sourceReference:P,discoveredFromGeneratedHeader:true},proofIds:[v]});e.state.addRelation({from:u,to:$,kind:"generated-from",derivation:"extracted",trust:"observed",confidence:"medium",proofIds:[v]});}let s=[...e.state.entities.values()].filter(n=>n.projectId===t.id&&n.kind==="symbol"&&n.attributes.generated===true&&n.attributes.symbolKind==="type"&&typeof n.attributes.language=="string"&&yt.test(n.label)&&!vt.has(n.label)),a=new Map;for(let n of s){let d=a.get(n.label)??[];d.push(n),a.set(n.label,d);}for(let[n,d]of [...a.entries()].filter(([,l])=>new Set(l.map(m=>m.attributes.language)).size>1).sort(([l],[m])=>l.localeCompare(m)).slice(0,1e3)){let l=d.sort((w,P)=>String(w.attributes.language).localeCompare(String(P.attributes.language))||w.id.localeCompare(P.id)),m=[...new Set(l.map(w=>String(w.attributes.language)))],u=[...new Set(l.flatMap(w=>w.proofIds))],v=e.state.addEntity({kind:"protocol",key:`protocol:${t.id}:${n}`,label:n,projectId:t.id,aliases:m.map(w=>`${w}:${n}`),attributes:{languages:m,implementationCount:l.length,source:"generated-types"},proofIds:u});for(let w of l)e.state.addRelation({from:w.id,to:v,kind:"implements-protocol",derivation:"inferred",trust:"corroborated",confidence:"high",proofIds:w.proofIds});let g=l[0];for(let w of l.slice(1))e.state.addRelation({from:w.id,to:g.id,kind:"equivalent-to",derivation:"inferred",trust:"corroborated",confidence:"high",proofIds:[...g.proofIds,...w.proofIds]});}}}},bt={id:"workspace-service-contract",version:"1.0.0",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=new Map;for(let o of [...e.contract.projects].sort((i,r)=>i.slug.localeCompare(r.slug))){let i$1=o.contracts;if(o.ports.length===0&&i$1.owns.length===0&&i$1.apis.length===0&&i$1.publishes.length===0&&i$1.consumes.length===0&&i$1.env.length===0)continue;let r=await e.state.addProof({provider:this.id,artifact:i.workspaceContract,absolutePath:p.join(e.workspacePath,".workspai","workspace.contract.json"),pointer:`/projects/${o.slug}/contracts`,trust:"authoritative",derivation:"authored",detail:`Service contract for ${o.slug}`}),c=E("project",`project:${o.slug}`),s=e.state.addEntity({kind:"service",key:`contract-service:${o.slug}`,label:o.slug,projectId:o.slug,attributes:{ports:o.ports.map(a=>`${a.protocol}:${a.port}`),owns:[...i$1.owns].sort(),environmentKeys:[...i$1.env].sort()},proofIds:[r]});e.state.addRelation({from:c,to:s,kind:"implements",trust:"authoritative",derivation:"authored",proofIds:[r]});for(let a of [...i$1.apis].sort((n,d)=>n.name.localeCompare(d.name))){let n=e.state.addEntity({kind:"api",key:`contract-api:${o.slug}:${a.name}:${a.basePath}`,label:a.name,projectId:o.slug,attributes:{basePath:a.basePath},proofIds:[r]});e.state.addRelation({from:s,to:n,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[r]});}for(let a of [...i$1.publishes,...i$1.consumes].sort())t.has(a)||t.set(a,e.state.addEntity({kind:"queue",key:`event:${a}`,label:a,attributes:{protocol:"workspace-event"},proofIds:[r]}));for(let a of [...i$1.publishes].sort()){let n=t.get(a);n&&e.state.addRelation({from:s,to:n,kind:"publishes",trust:"authoritative",derivation:"authored",proofIds:[r]});}for(let a of [...i$1.consumes].sort()){let n=t.get(a);n&&e.state.addRelation({from:s,to:n,kind:"consumes",trust:"authoritative",derivation:"authored",proofIds:[r]});}}}},wt={id:"openapi",version:"1.0.0",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(me))},async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).filter(me);for(let i of o){let r;try{r=await B(i);}catch(c){e.state.diagnostics.push({code:"graph.provider.openapi.parse_failed",severity:"warning",message:`Could not parse ${e.state.artifactPath(i,t)}: ${c instanceof Error?c.message:String(c)}`});continue}for(let c of r){if(!("openapi"in c)&&!("swagger"in c))continue;let s=j(c.info),a=b(s?.title)??`${t.id} API`,n=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(i,t),absolutePath:i,pointer:"/info",trust:"authoritative",detail:"Authored OpenAPI contract"}),d=E("project",`project:${t.id}`),l=e.state.addEntity({kind:"api",key:`api:${t.id}:${a}`,label:a,projectId:t.id,attributes:{version:b(s?.version),specification:b(c.openapi)??b(c.swagger)},proofIds:[n]});e.state.addRelation({from:d,to:l,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[n]});let m=j(j(c.components)?.schemas)??j(c.definitions),u=new Map;for(let g of Object.keys(m??{}).sort()){let w=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(i,t),absolutePath:i,pointer:`/components/schemas/${g}`,trust:"authoritative",detail:`OpenAPI schema ${g}`}),P=e.state.addEntity({kind:"schema",key:`schema:${t.id}:${a}:${g}`,label:g,projectId:t.id,proofIds:[w]});u.set(g,P),e.state.addRelation({from:l,to:P,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[w]});}let v=j(c.paths);for(let g of Object.keys(v??{}).sort()){let w=j(v?.[g]);for(let P of Object.keys(w??{}).filter(f=>Be.has(f.toLowerCase())).sort()){let f=j(w?.[P]),y=`/paths/${g.replace(/~/g,"~0").replace(/\//g,"~1")}/${P}`,$=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(i,t),absolutePath:i,pointer:y,trust:"authoritative",detail:`${P.toUpperCase()} ${g}`}),k=e.state.addEntity({kind:"endpoint",key:`endpoint:${t.id}:${a}:${P.toUpperCase()}:${g}`,label:`${P.toUpperCase()} ${g}`,projectId:t.id,aliases:K(f?.tags),attributes:{method:P.toUpperCase(),path:g,operationId:b(f?.operationId),deprecated:typeof f?.deprecated=="boolean"?f.deprecated:void 0,tags:K(f?.tags)},proofIds:[$]});e.state.addRelation({from:l,to:k,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[$]});let C=JSON.stringify(f??{});for(let[R,h]of u)C.includes(`/${R}`)&&e.state.addRelation({from:k,to:h,kind:"references",trust:"authoritative",derivation:"authored",proofIds:[$]});}}}}}}},Pt={id:"interface-contracts",version:"1.0.0",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(ge))},async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).filter(ge);for(let i of o){let r=e.state.artifactPath(i,t),c=p.extname(i).toLowerCase();if(c===".graphql"||c===".gql"){let s=await S.readFile(i,"utf8"),a=await e.state.addProof({provider:this.id,artifact:r,absolutePath:i,trust:"authoritative",derivation:"authored",detail:"GraphQL schema"}),n=e.state.addEntity({kind:"api",key:`graphql:${t.id}:${r}`,label:`${t.id} GraphQL API`,projectId:t.id,attributes:{specification:"graphql",artifact:r},proofIds:[a]});e.state.addRelation({from:E("project",`project:${t.id}`),to:n,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[a]});for(let d of s.matchAll(/^\s*(?:type|input|interface|enum|scalar|union)\s+([A-Za-z_]\w*)/gm)){let l=e.state.addEntity({kind:"schema",key:`graphql-schema:${t.id}:${r}:${d[1]}`,label:d[1],projectId:t.id,proofIds:[a]});e.state.addRelation({from:n,to:l,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[a]});}continue}if(c===".proto"){let s=await S.readFile(i,"utf8"),a=V(s.replace(/\r\n/g,`
|
|
7
|
-
`).trim()),n=s.match(/^\s*package\s+([A-Za-z_][\w.]*)\s*;/m)?.[1],d=n||"unscoped",l=a.slice(0,16),m=await e.state.addProof({provider:this.id,artifact:r,absolutePath:i,trust:"authoritative",derivation:"authored",detail:"Protocol Buffers contract"});for(let u of s.matchAll(/^\s*service\s+([A-Za-z_]\w*)/gm)){let v=e.state.addEntity({kind:"api",key:`protobuf-service:${d}:${u[1]}:${l}`,label:u[1],aliases:[...n?[`${n}.${u[1]}`]:[],u[1]],attributes:{specification:"protobuf",package:n,definitionHash:a},proofIds:[m]});e.state.addRelation({from:E("project",`project:${t.id}`),to:v,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[m]});}for(let u of s.matchAll(/^\s*message\s+([A-Za-z_]\w*)/gm)){let v=e.state.addEntity({kind:"schema",key:`protobuf-message:${d}:${u[1]}:${l}`,label:u[1],aliases:[...n?[`${n}.${u[1]}`]:[],u[1]],attributes:{specification:"protobuf",package:n,definitionHash:a},proofIds:[m]});e.state.addRelation({from:E("project",`project:${t.id}`),to:v,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[m]});}continue}try{let s=(await B(i))[0];if(!s||!("asyncapi"in s))continue;let a=await e.state.addProof({provider:this.id,artifact:r,absolutePath:i,trust:"authoritative",derivation:"authored",detail:"AsyncAPI contract"}),n=e.state.addEntity({kind:"api",key:`asyncapi:${t.id}:${r}`,label:b(j(s.info)?.title)??`${t.id} AsyncAPI`,projectId:t.id,attributes:{specification:`asyncapi ${String(s.asyncapi)}`,artifact:r},proofIds:[a]});e.state.addRelation({from:E("project",`project:${t.id}`),to:n,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[a]});for(let d of Object.keys(j(s.channels)??{}).sort()){let l=e.state.addEntity({kind:"queue",key:`asyncapi-channel:${t.id}:${d}`,label:d,projectId:t.id,attributes:{protocol:"asyncapi"},proofIds:[a]});e.state.addRelation({from:n,to:l,kind:"publishes",trust:"authoritative",derivation:"authored",proofIds:[a]});}}catch{}}}}},$t={id:"infrastructure-as-code",version:"1.0.0",applicable(e){return J(e).some(he)},async run(e){let t=J(e).filter(he);for(let o of t){let i=N(e.projects,o),r=i?.id??e.state.workspaceName,c=i?E("project",`project:${i.id}`):E("workspace",`workspace:${e.state.workspaceName}`),s=e.state.artifactPath(o,i),a=await S.readFile(o,"utf8"),n=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,trust:"authoritative",derivation:"authored",detail:"Infrastructure definition"});if(/^Dockerfile/i.test(p.basename(o))){let l=[...a.matchAll(/^\s*FROM\s+([^\s]+)(?:\s+AS\s+([^\s]+))?/gim)],m=e.state.addEntity({kind:"container",key:`dockerfile:${r}:${s}`,label:`${r} container image`,...i?{projectId:i.id}:{},attributes:{artifact:s,baseImages:l.map(u=>u[1])},proofIds:[n]});e.state.addRelation({from:c,to:m,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[n]});continue}if(/\.tf$/i.test(o)){for(let l of a.matchAll(/^\s*resource\s+["']([^"']+)["']\s+["']([^"']+)["']/gm)){let m=l[1],u=/(?:db|sql|rds|database)/i.test(m)?"database":/(?:queue|kafka|sqs|pubsub|servicebus)/i.test(m)?"queue":"deployment",v=e.state.addEntity({kind:u,key:`terraform:${r}:${m}:${l[2]}`,label:`${m}.${l[2]}`,...i?{projectId:i.id}:{},attributes:{resourceType:m,artifact:s},proofIds:[n]});e.state.addRelation({from:c,to:v,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[n]});}continue}let d=e.state.addEntity({kind:"deployment",key:`helm:${r}:${s}`,label:`${r} Helm chart`,...i?{projectId:i.id}:{},attributes:{artifact:s,format:"helm"},proofIds:[n]});e.state.addRelation({from:c,to:d,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[n]});}}};function Re(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"}var jt={id:"compose",version:"1.0.0",async applicable(e){return (await ke(e)).length>0},async run(e){for(let t of await ke(e)){let o;try{o=(await B(t))[0];}catch(s){e.state.diagnostics.push({code:"graph.provider.compose.parse_failed",severity:"warning",message:`Could not parse ${e.state.artifactPath(t)}: ${s instanceof Error?s.message:String(s)}`});}let i=j(o?.services);if(!i)continue;let r=N(e.projects,t),c=new Map;for(let s of Object.keys(i).sort()){let a=j(i[s]),n=a?.build,d=b(n)??b(j(n)?.context),l=d?N(e.projects,p.resolve(p.dirname(t),d)):e.projects.find(g=>g.id.toLowerCase()===s.toLowerCase()||p.basename(g.path).toLowerCase()===s.toLowerCase())??r,m=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,r),absolutePath:t,pointer:`/services/${s}`,trust:"authoritative",derivation:"authored",detail:`Compose service ${s}`}),u=b(a?.image),v=e.state.addEntity({kind:"service",key:`compose-service:${e.state.artifactPath(t,r)}:${s}`,label:s,...l?{projectId:l.id}:{},attributes:{image:u,ports:K(a?.ports).map(String),networks:K(a?.networks),environmentKeys:Xe(a?.environment)},proofIds:[m]});if(c.set(s,v),l&&e.state.addRelation({from:E("project",`project:${l.id}`),to:v,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[m]}),u){let g=e.state.addEntity({kind:Re(u),key:`image:${u}`,label:u,...l?{projectId:l.id}:{},attributes:{image:u},proofIds:[m]});e.state.addRelation({from:v,to:g,kind:Re(u)==="container"?"runs-on":"depends-on",trust:"authoritative",derivation:"authored",proofIds:[m]});}}for(let s of Object.keys(i).sort()){let a=j(i[s]),n=c.get(s);if(n)for(let d of K(a?.depends_on)){let l=c.get(d);if(!l)continue;let m=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,r),absolutePath:t,pointer:`/services/${s}/depends_on/${d}`,trust:"authoritative",derivation:"authored",detail:`${s} depends on ${d}`});e.state.addRelation({from:n,to:l,kind:"depends-on",trust:"authoritative",derivation:"authored",proofIds:[m]});}}}}},It={id:"documentation",version:"1.0.0",applicable(e){return J(e).some(ye)},async run(e){let t=new Set,o=[e.workspaceFiles,...e.projects.map(i=>e.filesByProject.get(i.id)??[])];for(let i of o){let r=i.filter(c=>ye(c)&&!e.projects.some(s=>c.startsWith(`${s.root}${p.sep}`)&&M(s.root,c)));for(let c of r){if(t.has(c))continue;t.add(c);let s=N(e.projects,c),n=(await S.readFile(c,"utf8")).match(/^#\s+(.+)$/m)?.[1]?.trim()??p.basename(c),d=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(c,s),absolutePath:c,line:1,trust:"authoritative",derivation:"authored",detail:`Documentation: ${n}`}),l=e.state.addEntity({kind:"document",key:`document:${e.state.artifactPath(c,s)}`,label:n,...s?{projectId:s.id}:{},attributes:{artifact:e.state.artifactPath(c,s)},proofIds:[d]}),m=s?E("project",`project:${s.id}`):E("workspace",`workspace:${e.state.workspaceName}`);e.state.addRelation({from:l,to:m,kind:"documents",trust:"authoritative",derivation:"authored",proofIds:[d]});}}}},Et={id:"kubernetes",version:"1.0.0",async applicable(e){return (await Pe(e)).length>0},async run(e){for(let t of await Pe(e)){let o=N(e.projects,t),i=o?E("project",`project:${o.id}`):E("workspace",`workspace:${e.state.workspaceName}`),r=await B(t);for(let c=0;c<r.length;c+=1){let s=r[c],a=b(s.kind),n=j(s.metadata),d=b(n?.name);if(!a||!d)continue;let l=b(n?.namespace)??"default",m=/Deployment|StatefulSet|DaemonSet/i.test(a)?"deployment":/Service|Ingress/i.test(a)?"service":/ConfigMap|Secret/i.test(a)?"environment":"deployment",u=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,o),absolutePath:t,pointer:`/documents/${c}`,trust:"authoritative",derivation:"authored",detail:`${a} ${l}/${d}`}),v=e.state.addEntity({kind:m,key:`kubernetes:${a}:${l}:${d}`,label:`${a}/${d}`,...o?{projectId:o.id}:{},attributes:{resourceKind:a,namespace:l,secret:a==="Secret",keys:a==="Secret"||a==="ConfigMap"?Object.keys(j(s.data)??{}).sort():void 0},proofIds:[u]});e.state.addRelation({from:i,to:v,kind:m==="deployment"?"deploys":"contains",trust:"authoritative",derivation:"authored",proofIds:[u]});let g=e.state.addEntity({kind:"environment",key:`kubernetes-namespace:${l}`,label:`Kubernetes namespace ${l}`,attributes:{namespace:l},proofIds:[u]});e.state.addRelation({from:v,to:g,kind:"runs-on",trust:"authoritative",derivation:"authored",proofIds:[u]});}}}},Ct={id:"ci-workflow",version:"1.0.0",applicable(e){return we(e).length>0},async run(e){let t=we(e);for(let o of t){let i=N(e.projects,o),r=e.state.artifactPath(o,i),c=p.basename(o)==="Jenkinsfile",s=p.basename(o),a=[],n=[];if(c)a=[...(await S.readFile(o,"utf8")).matchAll(/\bstage\s*\(\s*["']([^"']+)["']/g)].map(u=>u[1]);else {let m;try{m=(await B(o))[0];}catch{continue}if(!m)continue;s=b(m.name)??s;let u=O(p.relative(i?.root??e.workspacePath,o));if(/^\.gitlab-ci\./i.test(u)){let v=new Set(["stages","variables","workflow","include","default","image","services","cache","before_script","after_script"]);a=Object.keys(m).filter(g=>!g.startsWith(".")&&!v.has(g)).sort();}else a=[...new Set([...Object.keys(j(m.jobs)??{}),...Object.keys(j(j(m.workflows)?.jobs)??{}),...K(m.stages)])].sort();n=K(m.on);}a.length===0&&(a=["pipeline"]);let d=await e.state.addProof({provider:this.id,artifact:r,absolutePath:o,...c?{}:{pointer:"/jobs"},trust:"authoritative",derivation:"authored",detail:"CI/CD workflow"}),l=e.state.addEntity({kind:"pipeline",key:`pipeline:${r}`,label:s,attributes:{jobs:a,triggers:n,artifact:r},proofIds:[d]});e.state.addRelation({from:i?E("project",`project:${i.id}`):E("workspace",`workspace:${e.state.workspaceName}`),to:l,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[d]});}}},Rt={id:"codeowners",version:"1.0.0",async applicable(e){return (await be(e)).length>0},async run(e){for(let t of await be(e)){let o=N(e.projects,t),r=(await S.readFile(t,"utf8")).split(/\r?\n/);for(let c=0;c<r.length;c+=1){let s=r[c].trim();if(!s||s.startsWith("#"))continue;let[a,...n]=s.split(/\s+/);for(let d of n.filter(l=>l.startsWith("@"))){let l=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,o),absolutePath:t,line:c+1,trust:"authoritative",derivation:"authored",detail:`${a} ${d}`}),m=e.state.addEntity({kind:"owner",key:`owner:${d.toLowerCase()}`,label:d,aliases:[d],proofIds:[l]}),u=e.projects.filter(g=>{let w=a.replace(/^\//,"").replace(/\*.*$/,""),P=p.dirname(t),f=[".github","docs"].includes(p.basename(P))?p.dirname(P):P,y=O(p.relative(f,g.root));return w&&(y==="."||y.startsWith(w.replace(/\/$/,""))||g.path.startsWith(w.replace(/\/$/,"")))}),v=u.length>0?u.map(g=>E("project",`project:${g.id}`)):o?[E("project",`project:${o.id}`)]:[E("workspace",`workspace:${e.state.workspaceName}`)];for(let g of v)e.state.addRelation({from:m,to:g,kind:"owns",trust:"authoritative",derivation:"authored",proofIds:[l]});}}}}},St={id:"architecture-decisions",version:"1.0.0",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(o=>ve(t.root,o)))},async run(e){let t=new Set,o=[{root:e.workspacePath,files:e.workspaceFiles},...e.projects.map(i=>({root:i.root,files:e.filesByProject.get(i.id)??[]}))];for(let i of o){let r=i.files.filter(c=>ve(i.root,c));for(let c of r){if(t.has(c))continue;t.add(c);let s=N(e.projects,c),a=await S.readFile(c,"utf8"),n=a.match(/^#\s+(.+)$/m)?.[1]?.trim()??p.basename(c,".md"),d=a.match(/^status\s*:\s*(.+)$/im)?.[1]?.trim(),l=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(c,s),absolutePath:c,line:1,trust:"authoritative",derivation:"authored",detail:`Architecture decision: ${n}`}),m=e.state.addEntity({kind:"decision",key:`decision:${e.state.artifactPath(c,s)}`,label:n,...s?{projectId:s.id}:{},attributes:{status:d,artifact:e.state.artifactPath(c,s)},proofIds:[l]}),u=s?E("project",`project:${s.id}`):E("workspace",`workspace:${e.state.workspaceName}`);e.state.addRelation({from:u,to:m,kind:"decided-by",trust:"authoritative",derivation:"authored",proofIds:[l]});}}}},At=[at,dt,lt,pt,ft,ht,kt,bt,wt,Pt,jt,$t,Et,Ct,Rt,It,St];async function Wt(e$1,t){for(let o of t.edges){let i=[];for(let r of o.evidence){let c=x(r.file);i.push(await e$1.addProof({provider:"project-topology",artifact:c,absolutePath:p.resolve(e$1.workspacePath,c),derivation:o.source==="inferred"?"inferred":"authored",trust:o.source==="inferred"?"observed":"authoritative",confidence:o.confidence,detail:r.detail??`${o.kind} relationship`}));}i.length===0&&i.push(await e$1.addProof({provider:"project-topology",artifact:e.model,derivation:"inferred",trust:"ambiguous",confidence:o.confidence,detail:`${o.kind} relationship without source locator`})),e$1.addRelation({from:E("project",`project:${o.from}`),to:E("project",`project:${o.to}`),kind:o.kind==="event-pub-sub"?"consumes":"depends-on",derivation:o.source==="inferred"?"inferred":"authored",trust:o.source==="inferred"?"observed":"authoritative",confidence:o.confidence,proofIds:i});}}function _t(e){let t=[...e.entities.values()].filter(i=>i.kind==="endpoint"),o=new Map;for(let i of t){let r=String(i.attributes.method??"").toUpperCase(),c=String(i.attributes.path??"");if(!i.projectId||!r||!c)continue;let s=`${i.projectId}\0${r}\0${c}`,a=o.get(s)??[];a.push(i),o.set(s,a);}for(let i of o.values()){if(i.length<2)continue;let r=i.find(c=>c.proofIds.some(s=>e.proofs.get(s)?.trust==="authoritative"));if(r)for(let c of i.filter(s=>s.id!==r.id))e.addRelation({from:c.id,to:r.id,kind:"implements",derivation:"extracted",trust:"corroborated",confidence:"high",proofIds:[...c.proofIds,...r.proofIds]});}}function H(e,t){let o=[...new Set(e)],i=o.filter(r=>t.has(r)).length;return {eligibleCount:o.length,boundCount:i,unknownCount:o.length-i,coverageRatio:o.length===0?null:i/o.length}}function Kt(e,t){let o=e.filter(n=>n.kind==="project").map(n=>n.id),i=e.filter(n=>n.kind==="endpoint").map(n=>n.id),r=new Set(t.filter(n=>n.kind==="implements").flatMap(n=>[n.from,n.to])),c=new Set(t.filter(n=>n.kind==="tests").flatMap(n=>[n.from,n.to]).filter(n=>o.includes(n))),s=new Set(t.filter(n=>n.kind==="deploys").flatMap(n=>[n.from,n.to]).filter(n=>o.includes(n))),a=new Set(t.filter(n=>n.kind==="owns").flatMap(n=>[n.from,n.to]).filter(n=>o.includes(n)));return {apiImplementation:H(i,r),projectTests:H(o,c),projectDeployment:H(o,s),projectOwnership:H(o,a)}}async function Qt(e){let t=p.resolve(e.workspacePath),o=e.now??new Date,i=e.projects.map(h=>{let I=h.absolutePath?p.resolve(h.absolutePath):p.resolve(t,h.path),A=p.relative(t,I),_=A.startsWith(`..${p.sep}`)||A===".."||p.isAbsolute(A);return {...h,root:I,artifactPrefix:_?`external/${h.id}`:O(A||h.id)}}).sort((h,I)=>h.id.localeCompare(I.id)),r=new re(t,o,e.workspace.name),c=Math.max(100,Math.min(e.maxFilesPerProject??2e3,1e4)),s=Math.min(Math.max(c*10,2e4),5e4),a=new Map(await Promise.all(i.map(async h=>[h.id,await q(h.root,c)]))),n=new Map(await Promise.all(i.map(async h=>[h.id,await q(h.root,s)]))),d=Math.min(c*Math.max(i.length,1),2e4),l=await q(t,d),m=await ot({workspacePath:t,projects:i,projectFileLimit:s,workspaceFileLimit:d,inventories:{workspaceFiles:l,projectFiles:n}}),u={workspacePath:t,projects:i,filesByProject:a,semanticFilesByProject:n,semanticScanLimit:s,workspaceFiles:l,now:o,maxFilesPerProject:c,contract:e.contract??null,state:r};for(let h of At){let I={entities:r.entities.size,relations:r.relations.size,proofs:r.proofs.size,diagnostics:r.diagnostics.length},A="passed",_=null;try{if(!(h.applicable?await h.applicable(u):true))A="skipped";else {await h.run(u);let Z=r.entities.size-I.entities,We=r.relations.size-I.relations,_e=r.proofs.size-I.proofs;Z===0&&We===0&&_e===0?(A="partial",r.diagnostics.push({code:`graph.provider.${h.id}.empty_result`,severity:"warning",message:`${h.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."})):r.diagnostics.length>I.diagnostics&&(A="partial");}}catch(L){A="failed";let Z=L instanceof Error?L.message:String(L);_=Z,r.diagnostics.push({code:`graph.provider.${h.id}.failed`,severity:"warning",message:`${h.id} provider failed: ${Z}`,recommendation:"Repair the referenced source artifact and rerun workspace graph emit."});}let W=r.diagnostics.slice(I.diagnostics).map(L=>`${L.code}: ${L.message}`);_&&W.length===0&&W.push(_),r.providers.push({id:h.id,version:h.version,status:A,permission:"filesystem-read",discoveredEntities:r.entities.size-I.entities,discoveredRelations:r.relations.size-I.relations,proofCount:r.proofs.size-I.proofs,diagnostics:W});}_t(r),await Wt(r,e.projectTopology);let v=[...r.entities.values()].sort((h,I)=>h.id.localeCompare(I.id)),g=[...r.relations.values()].sort((h,I)=>h.id.localeCompare(I.id)),w=[...r.proofs.values()].sort((h,I)=>h.id.localeCompare(I.id)),P=v.filter(h=>h.proofIds.length>0).length,f=g.filter(h=>h.proofIds.length>0).length,y=r.providers.filter(h=>h.status!=="failed").length,$=e.projectTopology.diagnostics?.filter(h=>h.code==="graph.edges.missing").flatMap(h=>h.nodeIds??[])??[];$.length>0&&r.diagnostics.push({code:"graph.knowledge.project_relationships_unknown",severity:"warning",message:`${$.length} project(s) have no proven inter-project relationship. This is unknown topology, not proof of independence.`,entityIds:$.map(h=>E("project",`project:${h}`)),recommendation:"Author service contracts or add OpenAPI, Compose, Kubernetes, package or import evidence."});let k=r.diagnostics.filter(h=>h.code.includes("unknown")||h.code.includes("unresolved")||h.code.includes("limit_reached")||h.code.endsWith(".empty_result")).reduce((h,I)=>h+Math.max(I.entityIds?.length??0,I.relationIds?.length??0,1),0),C=Kt(v,g),R=Object.values(C).reduce((h,I)=>h+I.unknownCount,0);return {schemaVersion:pe,generatedAt:o.toISOString(),source:{...e.source,inputs:m},workspace:e.workspace,projectTopology:e.projectTopology,entities:v,relations:g,proofs:w,providers:[...r.providers].sort((h,I)=>h.id.localeCompare(I.id)),quality:{entityCount:v.length,relationCount:g.length,proofCount:w.length,entityProofCoverageRatio:v.length===0?1:P/v.length,relationProofCoverageRatio:g.length===0?1:f/g.length,providerSuccessRatio:r.providers.length===0?1:y/r.providers.length,conflictCount:r.diagnostics.filter(h=>h.code.includes("conflict")).length,unknownCount:k+R,bindingCoverage:C,portable:true,secretValuesEmitted:false},diagnostics:[...r.diagnostics].sort((h,I)=>h.code.localeCompare(I.code)||h.message.localeCompare(I.message))}}function eo(e,t){return E(e,t)}
|
|
8
|
-
export{pe as a,
|
|
5
|
+
`)}),t}function it(e){return [...e.matchAll(/["']([^"']+)["']/g)].map(t=>t[1])}function $e(e,t){let o=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),i=new RegExp(`^\\s*${o}\\s*=\\s*\\[`,"m").exec(e);if(!i)return [];let r=i.index+i[0].lastIndexOf("["),c=null,s=false;for(let a=r+1;a<e.length;a+=1){let n=e[a];if(c){n===c&&!s&&(c=null),s=n==="\\"&&!s,n!=="\\"&&(s=false);continue}if(n==="'"||n==='"'){c=n;continue}if(n==="]")return it(e.slice(r+1,a))}return []}function je(e){return e.trim().match(/^([A-Za-z0-9][A-Za-z0-9_.-]*)/)?.[1]??""}function ne(e){return e.replace(/\.(?:workspace|version|path|git|optional|features|default-features|package)$/,"")}function nt(e,t){let o=p.basename(e);try{if(o==="package.json"||o==="composer.json"){let s=JSON.parse(t);return {ecosystem:o==="package.json"?"npm":"composer",name:P(s.name),version:P(s.version),dependencies:[...K(s.dependencies),...K(s.devDependencies),...K(s.require),...K(s["require-dev"])].filter((a,n,d)=>d.indexOf(a)===n).sort(),metadata:o==="package.json"?{entrypoints:[P(s.main),P(s.module),P(s.types)].filter(a=>!!a),exports:j(s.exports)?Object.keys(j(s.exports)).sort():P(s.exports)?["."]:[],executables:j(s.bin)?Object.keys(j(s.bin)).sort():P(s.bin)?[P(s.name)??"default"]:[],runtimeConstraints:Object.entries(j(s.engines)??{}).map(([a,n])=>`${a}:${String(n)}`).sort()}:void 0}}if(o==="deno.json"||o==="deno.jsonc"){let s=JSON.parse(t.replace(/\/\*[\s\S]*?\*\/|^\s*\/\/.*$/gm,""));return {ecosystem:"deno",name:P(s.name),version:P(s.version),dependencies:K(s.imports)}}}catch{}let i=s=>t.match(s)?.[1]?.trim();if(o==="pyproject.toml"){let a=ee(t).filter(({name:n})=>n==="project"||n==="project.optional-dependencies"||n==="dependency-groups"||n==="tool.poetry.dependencies"||/^tool\.poetry\.group\.[^.]+\.dependencies$/.test(n)).flatMap(({name:n,body:d})=>n==="project"?$e(d,"dependencies").map(je):n==="project.optional-dependencies"||n==="dependency-groups"?[...d.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=\s*\[/gm)].flatMap(l=>$e(d,l[1]??l[2])).map(je):[...d.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=/gm)].map(l=>l[1]??l[2]).filter(l=>l!=="python"));return {ecosystem:"python",name:i(/^(?:name)\s*=\s*["']([^"']+)["']/m),version:i(/^(?:version)\s*=\s*["']([^"']+)["']/m),dependencies:a.filter(Boolean).filter((n,d,l)=>l.indexOf(n)===d).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(s=>s[1]).sort(),metadata:{goVersion:i(/^go\s+(\S+)/m)??"unknown"}};if(o==="Cargo.toml"){let s=ee(t).filter(({name:a})=>/(?:^|\.)(?:dev-|build-)?dependencies$/.test(a)).map(({body:a})=>a).join(`
|
|
6
|
+
`);return {ecosystem:"cargo",name:i(/^name\s*=\s*["']([^"']+)["']/m),version:i(/^version\s*=\s*["']([^"']+)["']/m),dependencies:[...s.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=/gm)].map(a=>a[1]??a[2]).map(ne).filter((a,n,d)=>d.indexOf(a)===n).sort(),metadata:{edition:i(/^edition\s*=\s*["']([^"']+)["']/m)??"unknown",rustVersion:i(/^rust-version\s*=\s*["']([^"']+)["']/m)??"unknown",features:ee(t).find(({name:a})=>a==="features")?.body.match(/^\s*([A-Za-z0-9_.-]+)\s*=/gm)?.map(a=>a.split("=",1)[0].trim()).sort()??[]}}}if(o==="pom.xml"){let s=[...t.matchAll(/<dependency>([\s\S]*?)<\/dependency>/g)].map(a=>{let n=a[1].match(/<groupId>([^<]+)<\/groupId>/)?.[1]?.trim(),d=a[1].match(/<artifactId>([^<]+)<\/artifactId>/)?.[1]?.trim();return n&&d?`${n}:${d}`:d}).filter(a=>!!a);return {ecosystem:"maven",name:i(/<artifactId>([^<]+)<\/artifactId>/),version:i(/<version>([^<]+)<\/version>/),dependencies:s.filter((a,n,d)=>d.indexOf(a)===n).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(s=>s[1]).sort(),metadata:{targetFrameworks:(i(/<TargetFrameworks?>([^<]+)<\/TargetFrameworks?>/)??"unknown").split(";"),rootNamespace:i(/<RootNamespace>([^<]+)<\/RootNamespace>/)??"unknown"}};let r={"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"},c=o==="requirements.txt"?t.split(/\r?\n/).map(s=>s.trim().match(/^([A-Za-z0-9_.-]+)/)?.[1]):o.startsWith("build.gradle")?[...t.matchAll(/(?:implementation|api|compileOnly|runtimeOnly|testImplementation)\s*\(?["']([^:"']+):([^:"']+)/g)].map(s=>`${s[1]}:${s[2]}`):o==="Gemfile"?[...t.matchAll(/^\s*gem\s+["']([^"']+)["']/gm)].map(s=>s[1]):o==="mix.exs"?[...t.matchAll(/\{:\s*([A-Za-z0-9_]+)\s*,/g)].map(s=>s[1]):o==="pubspec.yaml"?[...t.matchAll(/^\s{2}([A-Za-z0-9_]+):\s+/gm)].map(s=>s[1]):o==="Package.swift"?[...t.matchAll(/\.package\s*\(\s*url:\s*["']([^"']+)["']/g)].map(s=>s[1]):o==="CMakeLists.txt"?[...t.matchAll(/find_package\s*\(\s*([A-Za-z0-9_.+-]+)/gi)].map(s=>s[1]):o==="project.clj"||o==="deps.edn"?[...t.matchAll(/\[?([A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+)\s+/g)].map(s=>s[1]):o==="build.sbt"?[...t.matchAll(/["']([^"']+)["']\s*%%?\s*["']([^"']+)["']/g)].map(s=>`${s[1]}:${s[2]}`):[];return {ecosystem:r[o]??"unknown",dependencies:c.filter(s=>!!s).filter((s,a,n)=>n.indexOf(s)===a).sort()}}function Ie(e,t){let o=e==="cargo"?ne(t):t;return e==="cargo"?o.toLowerCase().replace(/[-_]/g,""):o.toLowerCase()}function at(e,t){let o=[...e.entities.values()].filter(r=>r.kind==="package"&&r.projectId===t),i=new Map;for(let r of o){let c=String(r.attributes.ecosystem??"unknown");for(let s of new Set([r.label,...r.identity.aliases])){let a=`${c}\0${Ie(c,s)}`,n=i.get(a)??[];n.push(r),i.set(a,n);}}for(let r of o){let c=String(r.attributes.ecosystem??"unknown"),s=Array.isArray(r.attributes.dependencies)?r.attributes.dependencies.filter(a=>typeof a=="string"):[];for(let a of s){let n=`${c}\0${Ie(c,a)}`,d=(i.get(n)??[]).filter(f=>f.id!==r.id);if(d.length!==1)continue;let l=d[0];e.addRelation({from:r.id,to:l.id,kind:"depends-on",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:r.proofIds});let u=E("module",`dependency:${c}:${ne(a)}`);e.relations.delete(E("relation",`${r.id}\0depends-on\0${u}`));}}for(let r of [...e.entities.values()]){if(r.kind!=="module"||r.projectId)continue;[...e.relations.values()].some(s=>s.from===r.id||s.to===r.id)||e.entities.delete(r.id);}}var ct={id:"workspace-foundation",version:"1.0.0",async run(e){let{state:t}=e,o=await t.addProof({provider:this.id,artifact:i.workspaceContract,absolutePath:p.join(e.workspacePath,".workspai","workspace.contract.json"),trust:"authoritative",derivation:"authored",detail:"Workspace identity and project registry boundary"}),i$1=t.addEntity({kind:"workspace",key:`workspace:${t.workspaceName}`,label:t.workspaceName,aliases:[t.workspaceName],proofIds:[o]});for(let r of e.projects){let c=e.filesByProject.get(r.id)??[],s=c.find(v=>/[\\/]\.(?:workspai|rapidkit)[\\/](?:project|context)\.json$/.test(v)),a=c.find(v=>fe.has(p.basename(v))),n=s??a,d=await t.addProof({provider:this.id,artifact:n?t.artifactPath(n,r):x(p.posix.join(r.artifactPrefix,".workspai/project.json")),...n?{absolutePath:n}:{},trust:s?"authoritative":"observed",derivation:s?"authored":"inferred",detail:`Project ${r.id}`}),l=t.addEntity({kind:"project",key:`project:${r.id}`,label:r.id,projectId:r.id,aliases:[r.id,r.path],attributes:{path:r.path,runtime:r.runtime,runtimeCandidates:r.runtimeCandidates,framework:r.framework,kit:r.kit,kind:r.kind,category:r.category},proofIds:[d]});t.addRelation({from:i$1,to:l,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[d]});let u=new Set,f=[];for(let v of c){let m=p.basename(v);if(/^(?:\.env\.example|\.env\.sample|\.env\.template)$/i.test(m))try{let y=await S.readFile(v,"utf8");for(let g of y.split(/\r?\n/)){let k=g.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=/)?.[1];k&&u.add(k);}}catch{}let w=se(r.root,v);if(w&&f.push(v),!(w||ie(r.root,v))&&!(!fe.has(m)&&!/\.(?:cs|fs|vb)proj$/i.test(m)))try{let y=await S.readFile(v,"utf8"),g=nt(v,y),k=await t.addProof({provider:this.id,artifact:t.artifactPath(v,r),absolutePath:v,pointer:"/",confidence:g.name?"high":"medium",detail:`${g.ecosystem} manifest`}),$=t.addEntity({kind:"package",key:`package:${r.id}:${g.ecosystem}:${g.name??t.artifactPath(v,r)}`,label:g.name??`${r.id}/${O(p.relative(r.root,v))}`,projectId:r.id,aliases:[m,...g.name?[g.name]:[]],attributes:{ecosystem:g.ecosystem,version:g.version,manifest:t.artifactPath(v,r),dependencies:g.dependencies,...g.metadata??{}},proofIds:[k]});t.addRelation({from:l,to:$,kind:"contains",proofIds:[k]});for(let b of g.dependencies.slice(0,500)){let C=t.addEntity({kind:"module",key:`dependency:${g.ecosystem}:${b}`,label:b,aliases:[b],attributes:{ecosystem:g.ecosystem,external:true},proofIds:[k]});t.addRelation({from:$,to:C,kind:"depends-on",trust:"authoritative",derivation:"authored",proofIds:[k]});}}catch{}}if(at(t,r.id),u.size>0){let v=c.find(m=>/^\.env\.(?:example|sample|template)$/i.test(p.basename(m)));if(v){let m=await t.addProof({provider:this.id,artifact:t.artifactPath(v,r),absolutePath:v,detail:"Public environment template keys only; values are intentionally excluded"}),w=t.addEntity({kind:"environment",key:`environment:${r.id}:template`,label:`${r.id} environment contract`,projectId:r.id,attributes:{keys:[...u].sort(),valuesEmitted:false},proofIds:[m]});t.addRelation({from:l,to:w,kind:"configured-by",proofIds:[m]});}}if(f.length>0){let v=await t.addProof({provider:this.id,artifact:t.artifactPath(f[0],r),absolutePath:f[0],detail:`${f.length} test file(s) discovered`}),m=t.addEntity({kind:"test-suite",key:`tests:${r.id}`,label:`${r.id} tests`,projectId:r.id,attributes:{fileCount:f.length},proofIds:[v]});t.addRelation({from:m,to:l,kind:"tests",proofIds:[v]});let w=new Map;for(let y of f){if(!T.has(p.extname(y).toLowerCase()))continue;let g=F(y,r.runtime),k=w.get(g)??[];k.push(y),w.set(g,k);}for(let[y,g]of [...w].sort(([k],[$])=>k.localeCompare($))){let k=await t.addProof({provider:this.id,artifact:t.artifactPath(g[0],r),absolutePath:g[0],detail:`${g.length} ${y} test source file(s) discovered`}),$=t.addEntity({kind:"test-suite",key:`tests:${r.id}:${y}`,label:`${r.id} ${y} tests`,projectId:r.id,attributes:{fileCount:g.length,language:y},proofIds:[k]});t.addRelation({from:$,to:l,kind:"tests",proofIds:[k]});}}}}};function te(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function dt(e){if(Array.isArray(e))return e.length;let t=j(e);return t?Object.keys(t).length:0}var lt={id:"vscode-extension-manifest",version:"1.0.0",async applicable(e){for(let t of e.projects){let o=p.join(t.root,"package.json");try{let i=j(await S.readJson(o));if(P(j(i?.engines)?.vscode)||j(i?.contributes))return true}catch{}}return false},async run(e){for(let t of e.projects){let o=p.join(t.root,"package.json"),i=null;try{i=j(await S.readJson(o));}catch{continue}let r=j(i?.contributes),c=P(j(i?.engines)?.vscode);if(!c&&!r)continue;let s=e.state.artifactPath(o,t),a=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,pointer:"/",trust:"authoritative",derivation:"authored",confidence:"high",detail:`VS Code extension manifest for ${t.id}`}),n=e.state.addEntity({kind:"project",key:`project:${t.id}`,label:t.id,projectId:t.id,attributes:{vscodeExtension:true,vscodeEngine:c,extensionEntry:P(i?.main)??P(i?.browser),extensionKind:K(i?.extensionKind),activationEvents:K(i?.activationEvents),contributionCounts:Object.entries(r??{}).map(([k,$])=>`${k}:${dt($)}`).sort()},proofIds:[a]}),d=Array.isArray(r?.commands)?r.commands:[],l=j(r?.menus),u=Object.values(l??{}).flatMap(k=>Array.isArray(k)?k:[]),f=Array.isArray(r?.keybindings)?r.keybindings:[];for(let[k,$]of d.entries()){let b=j($),C=P(b?.command);if(!C)continue;let R=`/contributes/commands/${k}`,h=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,pointer:R,trust:"authoritative",derivation:"authored",confidence:"high",detail:`VS Code command ${C}`}),I=u.filter(W=>P(j(W)?.command)===C).length,A=f.filter(W=>P(j(W)?.command)===C).length,_=e.state.addEntity({kind:"api",key:`vscode-command:${t.id}:${C}`,label:C,projectId:t.id,aliases:[P(b?.title),P(b?.shortTitle)].filter(W=>!!W),attributes:{surface:"vscode-command",title:P(b?.title),shortTitle:P(b?.shortTitle),category:P(b?.category),enablement:P(b?.enablement),icon:P(b?.icon),menuCount:I,keybindingCount:A,manifest:s,pointer:R},proofIds:[h]});e.state.addRelation({from:n,to:_,kind:"exposes",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:[h]});}let v=j(r?.viewsContainers),m=new Map;for(let[k,$]of Object.entries(v??{}))if(Array.isArray($))for(let[b,C]of $.entries()){let R=j(C),h=P(R?.id);if(!h)continue;let I=`/contributes/viewsContainers/${te(k)}/${b}`,A=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,pointer:I,trust:"authoritative",derivation:"authored",detail:`VS Code view container ${h}`}),_=e.state.addEntity({kind:"service",key:`vscode-view-container:${t.id}:${h}`,label:h,projectId:t.id,aliases:[P(R?.title)].filter(W=>!!W),attributes:{surface:"vscode-view-container",title:P(R?.title),location:k,icon:P(R?.icon),manifest:s,pointer:I},proofIds:[A]});m.set(h,_),e.state.addRelation({from:n,to:_,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[A]});}let w=j(r?.views);for(let[k,$]of Object.entries(w??{}))if(Array.isArray($))for(let[b,C]of $.entries()){let R=j(C),h=P(R?.id);if(!h)continue;let I=`/contributes/views/${te(k)}/${b}`,A=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,pointer:I,trust:"authoritative",derivation:"authored",detail:`VS Code view ${h}`}),_=e.state.addEntity({kind:"service",key:`vscode-view:${t.id}:${h}`,label:h,projectId:t.id,aliases:[P(R?.name),P(R?.contextualTitle)].filter(W=>!!W),attributes:{surface:R?.type==="webview"?"vscode-webview":"vscode-view",name:P(R?.name),contextualTitle:P(R?.contextualTitle),containerId:k,viewType:P(R?.type)??"tree",manifest:s,pointer:I},proofIds:[A]});e.state.addRelation({from:m.get(k)??n,to:_,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[A]});}let y=Array.isArray(r?.configuration)?r.configuration:r?.configuration?[r.configuration]:[];for(let[k,$]of y.entries()){let b=j($),C=j(b?.properties);for(let[R,h]of Object.entries(C??{})){let I=j(h),_=`${Array.isArray(r?.configuration)?`/contributes/configuration/${k}`:"/contributes/configuration"}/properties/${te(R)}`,W=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,pointer:_,trust:"authoritative",derivation:"authored",detail:`VS Code configuration ${R}`}),L=e.state.addEntity({kind:"schema",key:`vscode-configuration:${t.id}:${R}`,label:R,projectId:t.id,attributes:{surface:"vscode-configuration",title:P(b?.title),type:P(I?.type),scope:P(I?.scope),description:P(I?.description)??P(I?.markdownDescription),manifest:s,pointer:_},proofIds:[W]});e.state.addRelation({from:n,to:L,kind:"configured-by",trust:"authoritative",derivation:"authored",proofIds:[W]});}}let g=Array.isArray(r?.chatParticipants)?r.chatParticipants:[];for(let[k,$]of g.entries()){let b=j($),C=P(b?.id);if(!C)continue;let R=`/contributes/chatParticipants/${k}`,h=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,pointer:R,trust:"authoritative",derivation:"authored",detail:`VS Code chat participant ${C}`}),I=e.state.addEntity({kind:"api",key:`vscode-chat-participant:${t.id}:${C}`,label:C,projectId:t.id,aliases:[P(b?.name),P(b?.fullName)].filter(A=>!!A),attributes:{surface:"vscode-chat-participant",name:P(b?.name),fullName:P(b?.fullName),description:P(b?.description),manifest:s,pointer:R},proofIds:[h]});e.state.addRelation({from:n,to:I,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[h]});}}}};function Ee(e,t){let o=[],i=false;for(let r of e.split(/\r?\n/)){let c=r.match(/^\s*\[([^\]]+)\]\s*(?:#.*)?$/)?.[1]?.trim();if(c){i=c===t;continue}if(!i||/^\s*(?:#|$)/.test(r))continue;let s=r.match(/^\s*(?:"([^"]+)"|'([^']+)'|([A-Za-z0-9_.-]+))\s*=\s*["']([^"']+)["']/),a=s?.[1]??s?.[2]??s?.[3],n=s?.[4];a&&n&&o.push([a,n]);}return o}var pt={id:"python-project-manifest",version:"1.0.0",async applicable(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).find(i=>p.dirname(i)===t.root&&p.basename(i).toLowerCase()==="pyproject.toml");if(o)try{if(Ee(await S.readFile(o,"utf8"),"project.scripts").length>0)return true}catch{}}return false},async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).find(n=>p.dirname(n)===t.root&&p.basename(n).toLowerCase()==="pyproject.toml");if(!o)continue;let i=await S.readFile(o,"utf8"),r=Ee(i,"project.scripts"),c=e.state.artifactPath(o,t),s=await e.state.addProof({provider:this.id,artifact:c,absolutePath:o,pointer:"/project",trust:"authoritative",derivation:"authored",detail:"Python project manifest"}),a=e.state.addEntity({kind:"project",key:`project:${t.id}`,label:t.id,projectId:t.id,attributes:{pythonProject:true,requiresPython:i.match(/^requires-python\s*=\s*["']([^"']+)["']/m)?.[1],buildBackend:i.match(/^build-backend\s*=\s*["']([^"']+)["']/m)?.[1],consoleScriptCount:r.length},proofIds:[s]});for(let[n,d]of r){let l=`/project/scripts/${n}`,u=await e.state.addProof({provider:this.id,artifact:c,absolutePath:o,pointer:l,trust:"authoritative",derivation:"authored",detail:`Python console script ${n}`}),f=e.state.addEntity({kind:"api",key:`python-console-script:${t.id}:${n}`,label:n,projectId:t.id,aliases:[d],attributes:{surface:"python-console-script",entrypoint:d,manifest:c,pointer:l},proofIds:[u]});e.state.addRelation({from:a,to:f,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[u]});}}}},ft={id:"source-language-inventory",version:"1.0.0",applicable(e){return e.projects.some(t=>(e.semanticFilesByProject.get(t.id)??[]).some(o=>T.has(p.extname(o).toLowerCase())))},async run(e){for(let t of e.projects){let o=e.semanticFilesByProject.get(t.id)??[],i=o.filter(s=>T.has(p.extname(s).toLowerCase())),r=new Map;for(let s of i){let a=F(s,t.runtime),n=r.get(a)??{files:[],production:[],tests:[],examples:[],generated:[],extensions:new Set};n.files.push(s),n.extensions.add(p.extname(s).toLowerCase()),oe(t.root,s)&&n.generated.push(s),se(t.root,s)?n.tests.push(s):ie(t.root,s)?n.examples.push(s):n.production.push(s),r.set(a,n);}let c=E("project",`project:${t.id}`);for(let[s,a]of [...r].sort(([n],[d])=>n.localeCompare(d))){let n=[a.production[0],a.tests[0],a.examples[0],a.generated[0],a.files[0]].filter((f,v,m)=>!!f&&m.indexOf(f)===v),d=await Promise.all(n.map(f=>e.state.addProof({provider:this.id,artifact:e.state.artifactPath(f,t),absolutePath:f,derivation:"extracted",trust:"observed",confidence:"high",detail:`${s} source-language inventory evidence`}))),l=[...a.production.length>0?["production"]:[],...a.tests.length>0?["test"]:[],...a.examples.length>0?["example"]:[],...a.generated.length>0?["generated"]:[]],u=e.state.addEntity({kind:"language",key:`language:${t.id}:${s}`,label:`${t.id} programming language: ${s}`,projectId:t.id,aliases:[s,`${s} source`,`${s} programming language`,"programming languages actually used"],attributes:{language:s,usage:"source-build-test",roles:l,fileCount:a.files.length,productionFileCount:a.production.length,testFileCount:a.tests.length,exampleFileCount:a.examples.length,generatedFileCount:a.generated.length,extensions:[...a.extensions].sort(),inventoryTruncated:o.length>=e.semanticScanLimit},proofIds:d});e.state.addRelation({from:c,to:u,kind:"uses-language",derivation:"extracted",trust:"observed",confidence:o.length>=e.semanticScanLimit?"medium":"high",proofIds:d});}o.length>=e.semanticScanLimit&&e.state.diagnostics.push({code:"graph.provider.source_language_inventory.limit_reached",severity:"warning",message:`Language inventory for ${t.id} reached ${e.semanticScanLimit} files. Counts are lower bounds.`,recommendation:"Increase maxFilesPerProject or use a scoped project run before treating language counts as complete."});}}},ut={id:"source-structure",version:"1.0.0",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(o=>T.has(p.extname(o).toLowerCase())&&!M(t.root,o)))},async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).filter(d=>!M(t.root,d)),i=e.semanticFilesByProject.get(t.id)??o,r=Ge((e.filesByProject.get(t.id)??[]).filter(d=>T.has(p.extname(d).toLowerCase())&&!M(t.root,d)),1e3),c=new Set(i.filter(d=>!M(t.root,d)).map(d=>p.resolve(d))),s=new Map;await Promise.all(o.map(async d=>{try{let l=await S.stat(d);if(l.isFile()&&l.size<=2*1024*1024){let u=p.resolve(d);c.add(u),s.set(u,l.size);}}catch{}}));let a=0,n=0;for(let d of r){let l;try{if((await S.stat(d)).size>2*1024*1024)continue;l=await S.readFile(d,"utf8");}catch{continue}let u=Ue(d,l),f=e.state.artifactPath(d,t),v=await e.state.addProof({provider:this.id,artifact:f,absolutePath:d,derivation:"extracted",trust:"observed",confidence:"high",detail:`${F(d,t.runtime)} source file`}),m=e.state.addEntity({kind:"file",key:`file:${t.id}:${f}`,label:f,projectId:t.id,aliases:[p.basename(d)],attributes:{artifact:f,language:F(d,t.runtime),bytes:Buffer.byteLength(l),...oe(t.root,d)?{generated:true}:{}},proofIds:[v]});e.state.addRelation({from:E("project",`project:${t.id}`),to:m,kind:"contains",proofIds:[v]});let w=Q(u,qe,250);for(let g of w){let k=await e.state.addProof({provider:this.id,artifact:f,absolutePath:d,line:g.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${g.detail}: ${g.name}`}),$=Ze(d,g.name,c,t.root);if($){let b=e.state.artifactPath($,t),C=E("file",`file:${t.id}:${b}`);if(!e.state.entities.has(C)){let R=await S.stat($).catch(()=>null),h=await e.state.addProof({provider:this.id,artifact:b,...R?.isFile()&&R.size<=2*1024*1024?{absolutePath:$}:{},derivation:"extracted",trust:"observed",confidence:"high",detail:"Locally imported artifact resolved from the project inventory"}),I=e.state.addEntity({kind:"file",key:`file:${t.id}:${b}`,label:b,projectId:t.id,aliases:[p.basename($)],attributes:{artifact:b,language:F($,t.runtime),bytes:s.get(p.resolve($))??(R?.isFile()?R.size:void 0)},proofIds:[h]});e.state.addRelation({from:E("project",`project:${t.id}`),to:I,kind:"contains",proofIds:[h]});}e.state.addRelation({from:m,to:C,kind:"imports",confidence:"high",proofIds:[k]});}else {let b=g.name.startsWith(".");b&&(n+=1);let C=e.state.addEntity({kind:"module",key:`module:${t.id}:${g.name}`,label:g.name,projectId:t.id,aliases:[g.name],attributes:{specifier:g.name,resolution:b?"unresolved-local":"external"},proofIds:[k]});e.state.addRelation({from:m,to:C,kind:"imports",confidence:b?"low":"medium",proofIds:[k]});}}if(a<1e4){let g=Q(u,xe,Math.min(100,1e4-a));a+=g.length;for(let k of g){let $=await e.state.addProof({provider:this.id,artifact:f,absolutePath:d,line:k.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${k.detail}: ${k.name}`}),b=e.state.addEntity({kind:"symbol",key:`symbol:${t.id}:${f}:${k.detail}:${k.name}`,label:k.name,projectId:t.id,attributes:{symbolKind:k.detail,language:F(d,t.runtime),...oe(t.root,d)?{generated:true}:{}},proofIds:[$]});e.state.addRelation({from:m,to:b,kind:"defines",confidence:"medium",proofIds:[$]});}}let y=t.framework!=="vscode-extension"&&t.kind!=="extension";for(let g of y?Q(u,Ye,100):[]){let k=l.split(/\r?\n/)[g.line-1]??"";if(He(d,k))continue;let $=k.match(/(?:@|\.|\[|^\s*)(get|post|put|delete|patch|options|head)/i)?.[1]?.toUpperCase()??"HTTP",b=await e.state.addProof({provider:this.id,artifact:f,absolutePath:d,line:g.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${$} ${g.name}`}),C=e.state.addEntity({kind:"endpoint",key:`source-endpoint:${t.id}:${f}:${$}:${g.name}`,label:`${$} ${g.name||"/"}`,projectId:t.id,attributes:{method:$,path:g.name||"/",source:f},proofIds:[b]});e.state.addRelation({from:m,to:C,kind:"defines",confidence:"medium",proofIds:[b]});}}(r.length>=1e3||a>=1e4)&&e.state.diagnostics.push({code:"graph.provider.source_structure.limit_reached",severity:"info",message:`Source extraction for ${t.id} sampled ${r.length} file(s) from ${o.length} indexed candidate(s).`,recommendation:"Use bounded graph search, evidence, and path queries for proof-backed retrieval; do not treat the sampled symbol inventory as exhaustive."}),n>0&&e.state.diagnostics.push({code:"graph.provider.source_structure.unresolved_local_imports",severity:"warning",message:`${n} 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."});}}};function mt(e){let o=e.slice(0,12e3).match(/(?:code generated by|generated from:|@generated by)\s*(?:(?:\/\/|#|\*)\s*)?[`"']?([^`"'\s;*]+)/i)?.[1];return !o||!p.posix.basename(o.replace(/\\/g,"/"))?null:o}function gt(e,t){let o=0,i=null,r=false;for(let c=t;c<e.length;c+=1){let s=e[c];if(i){s===i&&!r&&(i=null),r=s==="\\"&&!r,s!=="\\"&&(r=false);continue}if(s==='"'){i=s;continue}if(s==="("&&(o+=1),s===")"&&(o-=1,o===0))return e.slice(t+1,c)}return null}function ht(e){let t=[],o=/(?:deno_core::)?extension!\s*\(/g;for(let i of e.matchAll(o)){let r=(i.index??0)+i[0].lastIndexOf("("),c=gt(e,r);if(!c)continue;let s=c.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*,/)?.[1];if(!s)continue;let a=[...new Set([...c.matchAll(/\bops\s*=\s*\[([\s\S]*?)\]/g)].flatMap(d=>[...d[1].matchAll(/\b(op_[A-Za-z0-9_]+)\b/g)].map(l=>l[1])))].sort(),n=[...new Set([...c.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(l=>l[1])))].sort();t.push({name:s,line:e.slice(0,i.index??0).split(/\r?\n/).length,operations:a,scripts:n});}return t}function Ce(e,t){let o=e.indexOf(t);return o<0?void 0:e.slice(0,o).split(/\r?\n/).length}var yt={id:"runtime-bridge-semantics",version:"1.0.0",async applicable(e){for(let t of e.projects)for(let o of e.semanticFilesByProject.get(t.id)??[])if(!(p.extname(o).toLowerCase()!==".rs"||M(t.root,o)))try{let i=await S.readFile(o,"utf8");if(/(?:deno_core::)?extension!\s*\(/.test(i))return true}catch{}return false},async run(e){for(let t of e.projects){let i=(e.semanticFilesByProject.get(t.id)??[]).filter(r=>p.extname(r).toLowerCase()===".rs"&&!M(t.root,r));for(let r of i){let c="";try{if((await S.stat(r)).size>2*1024*1024)continue;c=await S.readFile(r,"utf8");}catch{continue}let s=ht(c);if(s.length===0)continue;let a=e.state.artifactPath(r,t),n=await e.state.addProof({provider:this.id,artifact:a,absolutePath:r,derivation:"extracted",trust:"observed",confidence:"high",detail:"Deno Core Rust extension declaration"}),d=e.state.addEntity({kind:"file",key:`file:${t.id}:${a}`,label:a,projectId:t.id,aliases:[p.basename(r)],attributes:{artifact:a,language:"rust",runtimeBridge:"deno-core"},proofIds:[n]});e.state.addRelation({from:E("project",`project:${t.id}`),to:d,kind:"contains",proofIds:[n]});for(let l of s){let u=await e.state.addProof({provider:this.id,artifact:a,absolutePath:r,line:l.line,derivation:"extracted",trust:"observed",confidence:"high",detail:`Deno Core extension ${l.name}`}),f=e.state.addEntity({kind:"protocol",key:`runtime-bridge:${t.id}:deno-core:${a}:${l.name}`,label:`${l.name} Rust JavaScript runtime bridge`,projectId:t.id,aliases:[l.name,`${l.name} cross-language bridge`,"Rust JavaScript TypeScript bridge"],attributes:{mechanism:"deno_core::extension!",languages:["javascript","rust","typescript"]},proofIds:[u]});e.state.addRelation({from:E("project",`project:${t.id}`),to:f,kind:"contains",proofIds:[u]}),e.state.addRelation({from:d,to:f,kind:"implements-protocol",proofIds:[u]});for(let m of ["rust","javascript","typescript"]){let w=E("language",`language:${t.id}:${m}`);e.state.entities.has(w)&&e.state.addRelation({from:f,to:w,kind:"uses-language",proofIds:[u]});}let v=new Map;for(let m of l.operations){let w=Ce(c,m),y=await e.state.addProof({provider:this.id,artifact:a,absolutePath:r,...w?{line:w}:{},derivation:"extracted",trust:"observed",confidence:"high",detail:`Rust op2 bridge operation ${m}`}),g=e.state.addEntity({kind:"symbol",key:`symbol:${t.id}:${a}:function:${m}`,label:m,projectId:t.id,aliases:[`rust:${m}`,`javascript:${m}`],attributes:{symbolKind:"function",language:"rust",bridgeMechanism:"op2"},proofIds:[y]});v.set(m,g),e.state.addRelation({from:d,to:g,kind:"defines",proofIds:[y]}),e.state.addRelation({from:g,to:f,kind:"implements-protocol",proofIds:[y,u]});}for(let m of l.scripts){let w=p.resolve(p.dirname(r),m);if(!await S.pathExists(w))continue;let y="";try{y=await S.readFile(w,"utf8");}catch{continue}let g=e.state.artifactPath(w,t),k=await e.state.addProof({provider:this.id,artifact:g,absolutePath:w,derivation:"extracted",trust:"observed",confidence:"high",detail:`${l.name} JavaScript/TypeScript extension source`}),$=e.state.addEntity({kind:"file",key:`file:${t.id}:${g}`,label:g,projectId:t.id,aliases:[p.basename(w)],attributes:{artifact:g,language:F(w,t.runtime),runtimeBridge:"deno-core"},proofIds:[k]});e.state.addRelation({from:d,to:$,kind:"references",confidence:"high",proofIds:[u,k]}),e.state.addRelation({from:$,to:f,kind:"implements-protocol",proofIds:[k,u]});for(let[b,C]of v){let R=Ce(y,b);if(!R)continue;let h=await e.state.addProof({provider:this.id,artifact:g,absolutePath:w,line:R,derivation:"extracted",trust:"observed",confidence:"high",detail:`JavaScript/TypeScript call to Rust operation ${b}`});e.state.addRelation({from:$,to:C,kind:"calls",confidence:"high",proofIds:[h,u]});}}}}}}},vt=/^[A-Z][A-Za-z0-9_]{3,}$/,kt=new Set(["Client","Config","Context","Data","Error","Event","Message","Options","Request","Response","Result","Schema","Type","Value"]),bt={id:"polyglot-semantics",version:"1.0.0",applicable(e){return e.projects.some(t=>(t.runtimeCandidates?.length??0)>1||a$1(t.root).polyglot)},async run(e){for(let t of e.projects){let o=E("project",`project:${t.id}`),i=e.filesByProject.get(t.id)??[],r=a$1(t.root),c=[...e.state.entities.values()].filter(n=>n.kind==="package"&&n.projectId===t.id);for(let n of r.units){let d=n.runtime,l=p.resolve(t.root,n.manifest),u=e.state.artifactPath(l,t),f=c.find(g=>g.attributes.manifest===u),v=f?.proofIds??[await e.state.addProof({provider:this.id,artifact:u,absolutePath:l,derivation:"extracted",trust:"observed",confidence:"high",detail:`${d} runtime-unit manifest`})],m=e.state.artifactPath(p.dirname(l),t),w=Object.fromEntries(n.stages.map(g=>[g.stage,g.command])),y=e.state.addEntity({kind:"runtime-unit",key:`runtime-unit:${t.id}:${d}:${u}`,label:`${d}:${m}:${p.basename(l)}`,projectId:t.id,aliases:[d,m],attributes:{runtime:d,root:m,ecosystem:n.ecosystem,role:n.role,manifest:u,stages:Object.keys(w).sort(),orchestrationMode:"native-manifest"},proofIds:v});e.state.addRelation({from:o,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 g of n.stages){let{stage:k,command:$}=g,b=e.state.addEntity({kind:"lifecycle-stage",key:`lifecycle-stage:${t.id}:${d}:${u}:${k}`,label:`${k} \xB7 ${d}:${m}:${p.basename(l)}`,projectId:t.id,aliases:[`${d}:${k}`,k],attributes:{stage:k,command:$,runtime:d,workingDirectory:m,commandConfidence:g.confidence,preflight:g.preflight},proofIds:v});e.state.addRelation({from:y,to:b,kind:"contains",confidence:"high",proofIds:v});}}for(let n of i.filter(d=>T.has(p.extname(d).toLowerCase()))){let d="";try{d=await S.readFile(n,"utf8");}catch{continue}let l=mt(d);if(!l)continue;let u=e.state.artifactPath(n,t),f=E("file",`file:${t.id}:${u}`);if(!e.state.entities.has(f))continue;let v=await e.state.addProof({provider:this.id,artifact:u,absolutePath:n,line:1,derivation:"extracted",trust:"observed",confidence:"high",detail:`Generated from ${l}`}),m=e.state.entities.get(f);m&&e.state.addEntity({kind:"file",key:m.identity.key,label:m.label,projectId:t.id,aliases:m.identity.aliases,attributes:{...m.attributes,generated:true},proofIds:[...m.proofIds,v]});let w=[...e.state.relations.values()].filter(b=>b.kind==="defines"&&b.from===f).map(b=>e.state.entities.get(b.to)).filter(b=>b?.kind==="symbol");for(let b of w)e.state.addEntity({kind:"symbol",key:b.identity.key,label:b.label,projectId:t.id,aliases:b.identity.aliases,attributes:{...b.attributes,generated:true},proofIds:[...b.proofIds,v]});let y=l.replace(/^\.\//,"").replace(/[.,:]$/,""),k=[p.resolve(t.root,y),p.resolve(p.dirname(n),y)].find(b=>i.includes(b));if(k){let b=e.state.artifactPath(k,t),C=E("file",`file:${t.id}:${b}`);if(e.state.entities.has(C)){e.state.addRelation({from:f,to:C,kind:"generated-by",derivation:"extracted",trust:"observed",confidence:"high",proofIds:[v]});continue}}let $=e.state.addEntity({kind:"schema",key:`generation-source:${t.id}:${y}`,label:p.posix.basename(y),projectId:t.id,aliases:[y],attributes:{sourceReference:y,discoveredFromGeneratedHeader:true},proofIds:[v]});e.state.addRelation({from:f,to:$,kind:"generated-from",derivation:"extracted",trust:"observed",confidence:"medium",proofIds:[v]});}let s=[...e.state.entities.values()].filter(n=>n.projectId===t.id&&n.kind==="symbol"&&n.attributes.generated===true&&n.attributes.symbolKind==="type"&&typeof n.attributes.language=="string"&&vt.test(n.label)&&!kt.has(n.label)),a=new Map;for(let n of s){let d=a.get(n.label)??[];d.push(n),a.set(n.label,d);}for(let[n,d]of [...a.entries()].filter(([,l])=>new Set(l.map(u=>u.attributes.language)).size>1).sort(([l],[u])=>l.localeCompare(u)).slice(0,1e3)){let l=d.sort((w,y)=>String(w.attributes.language).localeCompare(String(y.attributes.language))||w.id.localeCompare(y.id)),u=[...new Set(l.map(w=>String(w.attributes.language)))],f=[...new Set(l.flatMap(w=>w.proofIds))],v=e.state.addEntity({kind:"protocol",key:`protocol:${t.id}:${n}`,label:n,projectId:t.id,aliases:u.map(w=>`${w}:${n}`),attributes:{languages:u,implementationCount:l.length,source:"generated-types"},proofIds:f});for(let w of l)e.state.addRelation({from:w.id,to:v,kind:"implements-protocol",derivation:"inferred",trust:"corroborated",confidence:"high",proofIds:w.proofIds});let m=l[0];for(let w of l.slice(1))e.state.addRelation({from:w.id,to:m.id,kind:"equivalent-to",derivation:"inferred",trust:"corroborated",confidence:"high",proofIds:[...m.proofIds,...w.proofIds]});}}}},wt={id:"workspace-service-contract",version:"1.0.0",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=new Map;for(let o of [...e.contract.projects].sort((i,r)=>i.slug.localeCompare(r.slug))){let i$1=o.contracts;if(o.ports.length===0&&i$1.owns.length===0&&i$1.apis.length===0&&i$1.publishes.length===0&&i$1.consumes.length===0&&i$1.env.length===0)continue;let r=await e.state.addProof({provider:this.id,artifact:i.workspaceContract,absolutePath:p.join(e.workspacePath,".workspai","workspace.contract.json"),pointer:`/projects/${o.slug}/contracts`,trust:"authoritative",derivation:"authored",detail:`Service contract for ${o.slug}`}),c=E("project",`project:${o.slug}`),s=e.state.addEntity({kind:"service",key:`contract-service:${o.slug}`,label:o.slug,projectId:o.slug,attributes:{ports:o.ports.map(a=>`${a.protocol}:${a.port}`),owns:[...i$1.owns].sort(),environmentKeys:[...i$1.env].sort()},proofIds:[r]});e.state.addRelation({from:c,to:s,kind:"implements",trust:"authoritative",derivation:"authored",proofIds:[r]});for(let a of [...i$1.apis].sort((n,d)=>n.name.localeCompare(d.name))){let n=e.state.addEntity({kind:"api",key:`contract-api:${o.slug}:${a.name}:${a.basePath}`,label:a.name,projectId:o.slug,attributes:{basePath:a.basePath},proofIds:[r]});e.state.addRelation({from:s,to:n,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[r]});}for(let a of [...i$1.publishes,...i$1.consumes].sort())t.has(a)||t.set(a,e.state.addEntity({kind:"queue",key:`event:${a}`,label:a,attributes:{protocol:"workspace-event"},proofIds:[r]}));for(let a of [...i$1.publishes].sort()){let n=t.get(a);n&&e.state.addRelation({from:s,to:n,kind:"publishes",trust:"authoritative",derivation:"authored",proofIds:[r]});}for(let a of [...i$1.consumes].sort()){let n=t.get(a);n&&e.state.addRelation({from:s,to:n,kind:"consumes",trust:"authoritative",derivation:"authored",proofIds:[r]});}}}},Pt={id:"openapi",version:"1.0.0",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(me))},async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).filter(me);for(let i of o){let r;try{r=await B(i);}catch(c){e.state.diagnostics.push({code:"graph.provider.openapi.parse_failed",severity:"warning",message:`Could not parse ${e.state.artifactPath(i,t)}: ${c instanceof Error?c.message:String(c)}`});continue}for(let c of r){if(!("openapi"in c)&&!("swagger"in c))continue;let s=j(c.info),a=P(s?.title)??`${t.id} API`,n=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(i,t),absolutePath:i,pointer:"/info",trust:"authoritative",detail:"Authored OpenAPI contract"}),d=E("project",`project:${t.id}`),l=e.state.addEntity({kind:"api",key:`api:${t.id}:${a}`,label:a,projectId:t.id,attributes:{version:P(s?.version),specification:P(c.openapi)??P(c.swagger)},proofIds:[n]});e.state.addRelation({from:d,to:l,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[n]});let u=j(j(c.components)?.schemas)??j(c.definitions),f=new Map;for(let m of Object.keys(u??{}).sort()){let w=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(i,t),absolutePath:i,pointer:`/components/schemas/${m}`,trust:"authoritative",detail:`OpenAPI schema ${m}`}),y=e.state.addEntity({kind:"schema",key:`schema:${t.id}:${a}:${m}`,label:m,projectId:t.id,proofIds:[w]});f.set(m,y),e.state.addRelation({from:l,to:y,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[w]});}let v=j(c.paths);for(let m of Object.keys(v??{}).sort()){let w=j(v?.[m]);for(let y of Object.keys(w??{}).filter(g=>Be.has(g.toLowerCase())).sort()){let g=j(w?.[y]),k=`/paths/${m.replace(/~/g,"~0").replace(/\//g,"~1")}/${y}`,$=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(i,t),absolutePath:i,pointer:k,trust:"authoritative",detail:`${y.toUpperCase()} ${m}`}),b=e.state.addEntity({kind:"endpoint",key:`endpoint:${t.id}:${a}:${y.toUpperCase()}:${m}`,label:`${y.toUpperCase()} ${m}`,projectId:t.id,aliases:K(g?.tags),attributes:{method:y.toUpperCase(),path:m,operationId:P(g?.operationId),deprecated:typeof g?.deprecated=="boolean"?g.deprecated:void 0,tags:K(g?.tags)},proofIds:[$]});e.state.addRelation({from:l,to:b,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[$]});let C=JSON.stringify(g??{});for(let[R,h]of f)C.includes(`/${R}`)&&e.state.addRelation({from:b,to:h,kind:"references",trust:"authoritative",derivation:"authored",proofIds:[$]});}}}}}}},$t={id:"interface-contracts",version:"1.0.0",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(ge))},async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).filter(ge);for(let i of o){let r=e.state.artifactPath(i,t),c=p.extname(i).toLowerCase();if(c===".graphql"||c===".gql"){let s=await S.readFile(i,"utf8"),a=await e.state.addProof({provider:this.id,artifact:r,absolutePath:i,trust:"authoritative",derivation:"authored",detail:"GraphQL schema"}),n=e.state.addEntity({kind:"api",key:`graphql:${t.id}:${r}`,label:`${t.id} GraphQL API`,projectId:t.id,attributes:{specification:"graphql",artifact:r},proofIds:[a]});e.state.addRelation({from:E("project",`project:${t.id}`),to:n,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[a]});for(let d of s.matchAll(/^\s*(?:type|input|interface|enum|scalar|union)\s+([A-Za-z_]\w*)/gm)){let l=e.state.addEntity({kind:"schema",key:`graphql-schema:${t.id}:${r}:${d[1]}`,label:d[1],projectId:t.id,proofIds:[a]});e.state.addRelation({from:n,to:l,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[a]});}continue}if(c===".proto"){let s=await S.readFile(i,"utf8"),a=V(s.replace(/\r\n/g,`
|
|
7
|
+
`).trim()),n=s.match(/^\s*package\s+([A-Za-z_][\w.]*)\s*;/m)?.[1],d=n||"unscoped",l=a.slice(0,16),u=await e.state.addProof({provider:this.id,artifact:r,absolutePath:i,trust:"authoritative",derivation:"authored",detail:"Protocol Buffers contract"});for(let f of s.matchAll(/^\s*service\s+([A-Za-z_]\w*)/gm)){let v=e.state.addEntity({kind:"api",key:`protobuf-service:${d}:${f[1]}:${l}`,label:f[1],aliases:[...n?[`${n}.${f[1]}`]:[],f[1]],attributes:{specification:"protobuf",package:n,definitionHash:a},proofIds:[u]});e.state.addRelation({from:E("project",`project:${t.id}`),to:v,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[u]});}for(let f of s.matchAll(/^\s*message\s+([A-Za-z_]\w*)/gm)){let v=e.state.addEntity({kind:"schema",key:`protobuf-message:${d}:${f[1]}:${l}`,label:f[1],aliases:[...n?[`${n}.${f[1]}`]:[],f[1]],attributes:{specification:"protobuf",package:n,definitionHash:a},proofIds:[u]});e.state.addRelation({from:E("project",`project:${t.id}`),to:v,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[u]});}continue}try{let s=(await B(i))[0];if(!s||!("asyncapi"in s))continue;let a=await e.state.addProof({provider:this.id,artifact:r,absolutePath:i,trust:"authoritative",derivation:"authored",detail:"AsyncAPI contract"}),n=e.state.addEntity({kind:"api",key:`asyncapi:${t.id}:${r}`,label:P(j(s.info)?.title)??`${t.id} AsyncAPI`,projectId:t.id,attributes:{specification:`asyncapi ${String(s.asyncapi)}`,artifact:r},proofIds:[a]});e.state.addRelation({from:E("project",`project:${t.id}`),to:n,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[a]});for(let d of Object.keys(j(s.channels)??{}).sort()){let l=e.state.addEntity({kind:"queue",key:`asyncapi-channel:${t.id}:${d}`,label:d,projectId:t.id,attributes:{protocol:"asyncapi"},proofIds:[a]});e.state.addRelation({from:n,to:l,kind:"publishes",trust:"authoritative",derivation:"authored",proofIds:[a]});}}catch{}}}}},jt={id:"infrastructure-as-code",version:"1.0.0",applicable(e){return J(e).some(he)},async run(e){let t=J(e).filter(he);for(let o of t){let i=N(e.projects,o),r=i?.id??e.state.workspaceName,c=i?E("project",`project:${i.id}`):E("workspace",`workspace:${e.state.workspaceName}`),s=e.state.artifactPath(o,i),a=await S.readFile(o,"utf8"),n=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,trust:"authoritative",derivation:"authored",detail:"Infrastructure definition"});if(/^Dockerfile/i.test(p.basename(o))){let l=[...a.matchAll(/^\s*FROM\s+([^\s]+)(?:\s+AS\s+([^\s]+))?/gim)],u=e.state.addEntity({kind:"container",key:`dockerfile:${r}:${s}`,label:`${r} container image`,...i?{projectId:i.id}:{},attributes:{artifact:s,baseImages:l.map(f=>f[1])},proofIds:[n]});e.state.addRelation({from:c,to:u,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[n]});continue}if(/\.tf$/i.test(o)){for(let l of a.matchAll(/^\s*resource\s+["']([^"']+)["']\s+["']([^"']+)["']/gm)){let u=l[1],f=/(?:db|sql|rds|database)/i.test(u)?"database":/(?:queue|kafka|sqs|pubsub|servicebus)/i.test(u)?"queue":"deployment",v=e.state.addEntity({kind:f,key:`terraform:${r}:${u}:${l[2]}`,label:`${u}.${l[2]}`,...i?{projectId:i.id}:{},attributes:{resourceType:u,artifact:s},proofIds:[n]});e.state.addRelation({from:c,to:v,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[n]});}continue}let d=e.state.addEntity({kind:"deployment",key:`helm:${r}:${s}`,label:`${r} Helm chart`,...i?{projectId:i.id}:{},attributes:{artifact:s,format:"helm"},proofIds:[n]});e.state.addRelation({from:c,to:d,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[n]});}}};function Re(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"}var It={id:"compose",version:"1.0.0",async applicable(e){return (await ke(e)).length>0},async run(e){for(let t of await ke(e)){let o;try{o=(await B(t))[0];}catch(s){e.state.diagnostics.push({code:"graph.provider.compose.parse_failed",severity:"warning",message:`Could not parse ${e.state.artifactPath(t)}: ${s instanceof Error?s.message:String(s)}`});}let i=j(o?.services);if(!i)continue;let r=N(e.projects,t),c=new Map;for(let s of Object.keys(i).sort()){let a=j(i[s]),n=a?.build,d=P(n)??P(j(n)?.context),l=d?N(e.projects,p.resolve(p.dirname(t),d)):e.projects.find(m=>m.id.toLowerCase()===s.toLowerCase()||p.basename(m.path).toLowerCase()===s.toLowerCase())??r,u=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,r),absolutePath:t,pointer:`/services/${s}`,trust:"authoritative",derivation:"authored",detail:`Compose service ${s}`}),f=P(a?.image),v=e.state.addEntity({kind:"service",key:`compose-service:${e.state.artifactPath(t,r)}:${s}`,label:s,...l?{projectId:l.id}:{},attributes:{image:f,ports:K(a?.ports).map(String),networks:K(a?.networks),environmentKeys:Xe(a?.environment)},proofIds:[u]});if(c.set(s,v),l&&e.state.addRelation({from:E("project",`project:${l.id}`),to:v,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[u]}),f){let m=e.state.addEntity({kind:Re(f),key:`image:${f}`,label:f,...l?{projectId:l.id}:{},attributes:{image:f},proofIds:[u]});e.state.addRelation({from:v,to:m,kind:Re(f)==="container"?"runs-on":"depends-on",trust:"authoritative",derivation:"authored",proofIds:[u]});}}for(let s of Object.keys(i).sort()){let a=j(i[s]),n=c.get(s);if(n)for(let d of K(a?.depends_on)){let l=c.get(d);if(!l)continue;let u=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,r),absolutePath:t,pointer:`/services/${s}/depends_on/${d}`,trust:"authoritative",derivation:"authored",detail:`${s} depends on ${d}`});e.state.addRelation({from:n,to:l,kind:"depends-on",trust:"authoritative",derivation:"authored",proofIds:[u]});}}}}},Et={id:"documentation",version:"1.0.0",applicable(e){return J(e).some(ye)},async run(e){let t=new Set,o=[e.workspaceFiles,...e.projects.map(i=>e.filesByProject.get(i.id)??[])];for(let i of o){let r=i.filter(c=>ye(c)&&!e.projects.some(s=>c.startsWith(`${s.root}${p.sep}`)&&M(s.root,c)));for(let c of r){if(t.has(c))continue;t.add(c);let s=N(e.projects,c),n=(await S.readFile(c,"utf8")).match(/^#\s+(.+)$/m)?.[1]?.trim()??p.basename(c),d=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(c,s),absolutePath:c,line:1,trust:"authoritative",derivation:"authored",detail:`Documentation: ${n}`}),l=e.state.addEntity({kind:"document",key:`document:${e.state.artifactPath(c,s)}`,label:n,...s?{projectId:s.id}:{},attributes:{artifact:e.state.artifactPath(c,s)},proofIds:[d]}),u=s?E("project",`project:${s.id}`):E("workspace",`workspace:${e.state.workspaceName}`);e.state.addRelation({from:l,to:u,kind:"documents",trust:"authoritative",derivation:"authored",proofIds:[d]});}}}},Ct={id:"kubernetes",version:"1.0.0",async applicable(e){return (await Pe(e)).length>0},async run(e){for(let t of await Pe(e)){let o=N(e.projects,t),i=o?E("project",`project:${o.id}`):E("workspace",`workspace:${e.state.workspaceName}`),r=await B(t);for(let c=0;c<r.length;c+=1){let s=r[c],a=P(s.kind),n=j(s.metadata),d=P(n?.name);if(!a||!d)continue;let l=P(n?.namespace)??"default",u=/Deployment|StatefulSet|DaemonSet/i.test(a)?"deployment":/Service|Ingress/i.test(a)?"service":/ConfigMap|Secret/i.test(a)?"environment":"deployment",f=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,o),absolutePath:t,pointer:`/documents/${c}`,trust:"authoritative",derivation:"authored",detail:`${a} ${l}/${d}`}),v=e.state.addEntity({kind:u,key:`kubernetes:${a}:${l}:${d}`,label:`${a}/${d}`,...o?{projectId:o.id}:{},attributes:{resourceKind:a,namespace:l,secret:a==="Secret",keys:a==="Secret"||a==="ConfigMap"?Object.keys(j(s.data)??{}).sort():void 0},proofIds:[f]});e.state.addRelation({from:i,to:v,kind:u==="deployment"?"deploys":"contains",trust:"authoritative",derivation:"authored",proofIds:[f]});let m=e.state.addEntity({kind:"environment",key:`kubernetes-namespace:${l}`,label:`Kubernetes namespace ${l}`,attributes:{namespace:l},proofIds:[f]});e.state.addRelation({from:v,to:m,kind:"runs-on",trust:"authoritative",derivation:"authored",proofIds:[f]});}}}},Rt={id:"ci-workflow",version:"1.0.0",applicable(e){return we(e).length>0},async run(e){let t=we(e);for(let o of t){let i=N(e.projects,o),r=e.state.artifactPath(o,i),c=p.basename(o)==="Jenkinsfile",s=p.basename(o),a=[],n=[];if(c)a=[...(await S.readFile(o,"utf8")).matchAll(/\bstage\s*\(\s*["']([^"']+)["']/g)].map(f=>f[1]);else {let u;try{u=(await B(o))[0];}catch{continue}if(!u)continue;s=P(u.name)??s;let f=O(p.relative(i?.root??e.workspacePath,o));if(/^\.gitlab-ci\./i.test(f)){let v=new Set(["stages","variables","workflow","include","default","image","services","cache","before_script","after_script"]);a=Object.keys(u).filter(m=>!m.startsWith(".")&&!v.has(m)).sort();}else a=[...new Set([...Object.keys(j(u.jobs)??{}),...Object.keys(j(j(u.workflows)?.jobs)??{}),...K(u.stages)])].sort();n=K(u.on);}a.length===0&&(a=["pipeline"]);let d=await e.state.addProof({provider:this.id,artifact:r,absolutePath:o,...c?{}:{pointer:"/jobs"},trust:"authoritative",derivation:"authored",detail:"CI/CD workflow"}),l=e.state.addEntity({kind:"pipeline",key:`pipeline:${r}`,label:s,attributes:{jobs:a,triggers:n,artifact:r},proofIds:[d]});e.state.addRelation({from:i?E("project",`project:${i.id}`):E("workspace",`workspace:${e.state.workspaceName}`),to:l,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[d]});}}},St={id:"codeowners",version:"1.0.0",async applicable(e){return (await be(e)).length>0},async run(e){for(let t of await be(e)){let o=N(e.projects,t),r=(await S.readFile(t,"utf8")).split(/\r?\n/);for(let c=0;c<r.length;c+=1){let s=r[c].trim();if(!s||s.startsWith("#"))continue;let[a,...n]=s.split(/\s+/);for(let d of n.filter(l=>l.startsWith("@"))){let l=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,o),absolutePath:t,line:c+1,trust:"authoritative",derivation:"authored",detail:`${a} ${d}`}),u=e.state.addEntity({kind:"owner",key:`owner:${d.toLowerCase()}`,label:d,aliases:[d],proofIds:[l]}),f=e.projects.filter(m=>{let w=a.replace(/^\//,"").replace(/\*.*$/,""),y=p.dirname(t),g=[".github","docs"].includes(p.basename(y))?p.dirname(y):y,k=O(p.relative(g,m.root));return w&&(k==="."||k.startsWith(w.replace(/\/$/,""))||m.path.startsWith(w.replace(/\/$/,"")))}),v=f.length>0?f.map(m=>E("project",`project:${m.id}`)):o?[E("project",`project:${o.id}`)]:[E("workspace",`workspace:${e.state.workspaceName}`)];for(let m of v)e.state.addRelation({from:u,to:m,kind:"owns",trust:"authoritative",derivation:"authored",proofIds:[l]});}}}}},At={id:"architecture-decisions",version:"1.0.0",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(o=>ve(t.root,o)))},async run(e){let t=new Set,o=[{root:e.workspacePath,files:e.workspaceFiles},...e.projects.map(i=>({root:i.root,files:e.filesByProject.get(i.id)??[]}))];for(let i of o){let r=i.files.filter(c=>ve(i.root,c));for(let c of r){if(t.has(c))continue;t.add(c);let s=N(e.projects,c),a=await S.readFile(c,"utf8"),n=a.match(/^#\s+(.+)$/m)?.[1]?.trim()??p.basename(c,".md"),d=a.match(/^status\s*:\s*(.+)$/im)?.[1]?.trim(),l=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(c,s),absolutePath:c,line:1,trust:"authoritative",derivation:"authored",detail:`Architecture decision: ${n}`}),u=e.state.addEntity({kind:"decision",key:`decision:${e.state.artifactPath(c,s)}`,label:n,...s?{projectId:s.id}:{},attributes:{status:d,artifact:e.state.artifactPath(c,s)},proofIds:[l]}),f=s?E("project",`project:${s.id}`):E("workspace",`workspace:${e.state.workspaceName}`);e.state.addRelation({from:f,to:u,kind:"decided-by",trust:"authoritative",derivation:"authored",proofIds:[l]});}}}},Wt=[ct,lt,pt,ft,ut,yt,bt,wt,Pt,$t,It,jt,Ct,Rt,St,Et,At];async function _t(e$1,t){for(let o of t.edges){let i=[];for(let r of o.evidence){let c=x(r.file);i.push(await e$1.addProof({provider:"project-topology",artifact:c,absolutePath:p.resolve(e$1.workspacePath,c),derivation:o.source==="inferred"?"inferred":"authored",trust:o.source==="inferred"?"observed":"authoritative",confidence:o.confidence,detail:r.detail??`${o.kind} relationship`}));}i.length===0&&i.push(await e$1.addProof({provider:"project-topology",artifact:e.model,derivation:"inferred",trust:"ambiguous",confidence:o.confidence,detail:`${o.kind} relationship without source locator`})),e$1.addRelation({from:E("project",`project:${o.from}`),to:E("project",`project:${o.to}`),kind:o.kind==="event-pub-sub"?"consumes":"depends-on",derivation:o.source==="inferred"?"inferred":"authored",trust:o.source==="inferred"?"observed":"authoritative",confidence:o.confidence,proofIds:i});}}function Kt(e){let t=[...e.entities.values()].filter(i=>i.kind==="endpoint"),o=new Map;for(let i of t){let r=String(i.attributes.method??"").toUpperCase(),c=String(i.attributes.path??"");if(!i.projectId||!r||!c)continue;let s=`${i.projectId}\0${r}\0${c}`,a=o.get(s)??[];a.push(i),o.set(s,a);}for(let i of o.values()){if(i.length<2)continue;let r=i.find(c=>c.proofIds.some(s=>e.proofs.get(s)?.trust==="authoritative"));if(r)for(let c of i.filter(s=>s.id!==r.id))e.addRelation({from:c.id,to:r.id,kind:"implements",derivation:"extracted",trust:"corroborated",confidence:"high",proofIds:[...c.proofIds,...r.proofIds]});}}function H(e,t){let o=[...new Set(e)],i=o.filter(r=>t.has(r)).length;return {eligibleCount:o.length,boundCount:i,unknownCount:o.length-i,coverageRatio:o.length===0?null:i/o.length}}function Ot(e,t){let o=e.filter(n=>n.kind==="project").map(n=>n.id),i=e.filter(n=>n.kind==="endpoint").map(n=>n.id),r=new Set(t.filter(n=>n.kind==="implements").flatMap(n=>[n.from,n.to])),c=new Set(t.filter(n=>n.kind==="tests").flatMap(n=>[n.from,n.to]).filter(n=>o.includes(n))),s=new Set(t.filter(n=>n.kind==="deploys").flatMap(n=>[n.from,n.to]).filter(n=>o.includes(n))),a=new Set(t.filter(n=>n.kind==="owns").flatMap(n=>[n.from,n.to]).filter(n=>o.includes(n)));return {apiImplementation:H(i,r),projectTests:H(o,c),projectDeployment:H(o,s),projectOwnership:H(o,a)}}async function eo(e){let t=p.resolve(e.workspacePath),o=e.now??new Date,i=e.projects.map(h=>{let I=h.absolutePath?p.resolve(h.absolutePath):p.resolve(t,h.path),A=p.relative(t,I),_=A.startsWith(`..${p.sep}`)||A===".."||p.isAbsolute(A);return {...h,root:I,artifactPrefix:_?`external/${h.id}`:O(A||h.id)}}).sort((h,I)=>h.id.localeCompare(I.id)),r=new re(t,o,e.workspace.name),c=Math.max(100,Math.min(e.maxFilesPerProject??2e3,1e4)),s=Math.min(Math.max(c*10,2e4),5e4),a=new Map(await Promise.all(i.map(async h=>[h.id,await q(h.root,c)]))),n=new Map(await Promise.all(i.map(async h=>[h.id,await q(h.root,s)]))),d=Math.min(c*Math.max(i.length,1),2e4),l=await q(t,d),u=await rt({workspacePath:t,projects:i,projectFileLimit:s,workspaceFileLimit:d,inventories:{workspaceFiles:l,projectFiles:n}}),f={workspacePath:t,projects:i,filesByProject:a,semanticFilesByProject:n,semanticScanLimit:s,workspaceFiles:l,now:o,maxFilesPerProject:c,contract:e.contract??null,state:r};for(let h of Wt){let I={entities:r.entities.size,relations:r.relations.size,proofs:r.proofs.size,diagnostics:r.diagnostics.length},A="passed",_=null;try{if(!(h.applicable?await h.applicable(f):true))A="skipped";else {await h.run(f);let Z=r.entities.size-I.entities,_e=r.relations.size-I.relations,Ke=r.proofs.size-I.proofs;Z===0&&_e===0&&Ke===0?(A="partial",r.diagnostics.push({code:`graph.provider.${h.id}.empty_result`,severity:"warning",message:`${h.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."})):r.diagnostics.length>I.diagnostics&&(A="partial");}}catch(L){A="failed";let Z=L instanceof Error?L.message:String(L);_=Z,r.diagnostics.push({code:`graph.provider.${h.id}.failed`,severity:"warning",message:`${h.id} provider failed: ${Z}`,recommendation:"Repair the referenced source artifact and rerun workspace graph emit."});}let W=r.diagnostics.slice(I.diagnostics).map(L=>`${L.code}: ${L.message}`);_&&W.length===0&&W.push(_),r.providers.push({id:h.id,version:h.version,status:A,permission:"filesystem-read",discoveredEntities:r.entities.size-I.entities,discoveredRelations:r.relations.size-I.relations,proofCount:r.proofs.size-I.proofs,diagnostics:W});}Kt(r),await _t(r,e.projectTopology);let v=[...r.entities.values()].sort((h,I)=>h.id.localeCompare(I.id)),m=[...r.relations.values()].sort((h,I)=>h.id.localeCompare(I.id)),w=[...r.proofs.values()].sort((h,I)=>h.id.localeCompare(I.id)),y=v.filter(h=>h.proofIds.length>0).length,g=m.filter(h=>h.proofIds.length>0).length,k=r.providers.filter(h=>h.status!=="failed").length,$=e.projectTopology.diagnostics?.filter(h=>h.code==="graph.edges.missing").flatMap(h=>h.nodeIds??[])??[];$.length>0&&r.diagnostics.push({code:"graph.knowledge.project_relationships_unknown",severity:"warning",message:`${$.length} project(s) have no proven inter-project relationship. This is unknown topology, not proof of independence.`,entityIds:$.map(h=>E("project",`project:${h}`)),recommendation:"Author service contracts or add OpenAPI, Compose, Kubernetes, package or import evidence."});let b=r.diagnostics.filter(h=>h.code.includes("unknown")||h.code.includes("unresolved")||h.code.includes("limit_reached")||h.code.endsWith(".empty_result")).reduce((h,I)=>h+Math.max(I.entityIds?.length??0,I.relationIds?.length??0,1),0),C=Ot(v,m),R=Object.values(C).reduce((h,I)=>h+I.unknownCount,0);return {schemaVersion:pe,generatedAt:o.toISOString(),source:{...e.source,inputs:u},workspace:e.workspace,projectTopology:e.projectTopology,entities:v,relations:m,proofs:w,providers:[...r.providers].sort((h,I)=>h.id.localeCompare(I.id)),quality:{entityCount:v.length,relationCount:m.length,proofCount:w.length,entityProofCoverageRatio:v.length===0?1:y/v.length,relationProofCoverageRatio:m.length===0?1:g/m.length,providerSuccessRatio:r.providers.length===0?1:k/r.providers.length,conflictCount:r.diagnostics.filter(h=>h.code.includes("conflict")).length,unknownCount:b+R,bindingCoverage:C,portable:true,secretValuesEmitted:false},diagnostics:[...r.diagnostics].sort((h,I)=>h.code.localeCompare(I.code)||h.message.localeCompare(I.message))}}function to(e,t){return E(e,t)}
|
|
8
|
+
export{pe as a,Xt as b,Qt as c,rt as d,eo as e,to as f};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var s="WORKSPAI_LOG_FORMAT",i="RAPIDKIT_LOG_FORMAT";function l(t=process.argv){let n=process.env[s]?.trim().toLowerCase()||process.env[i]?.trim().toLowerCase();if(n==="json")return "json";if(n==="text")return "text";for(let e=0;e<t.length;e+=1){let r=t[e];if(r==="--log-json")return "json";if(r==="--log-format"){let o=t[e+1]?.trim().toLowerCase();if(o==="json")return "json";if(o==="text")return "text"}if(r?.startsWith("--log-format=")){let o=r.slice(13).trim().toLowerCase();if(o==="json")return "json";if(o==="text")return "text"}}return "text"}function c(t=process.argv){return l(t)==="json"}export{l as a,c as b};
|