workspai 0.73.0 → 0.74.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/contracts/runtime-command-surface.v1.json +7 -3
- package/dist/analyze-IA33T6MY.js +1 -0
- package/dist/{artifact-remediation-plan-WDK5ISRU.js → artifact-remediation-plan-OVTQM7HN.js} +1 -1
- package/dist/autopilot-release-T327V7QK.js +1 -0
- package/dist/chunk-252EKOR6.js +2 -0
- package/dist/{chunk-3GO7BJ5J.js → chunk-4JJDDL3X.js} +1 -1
- package/dist/chunk-5EVBOUYW.js +3 -0
- package/dist/chunk-5Y4YRYZI.js +12 -0
- package/dist/{chunk-J44PN2FX.js → chunk-773WUMFU.js} +15 -15
- package/dist/{chunk-FRH7AIGY.js → chunk-BTJPTJLT.js} +2 -2
- package/dist/{chunk-OIGI7MP6.js → chunk-C43NXRRE.js} +1 -1
- package/dist/chunk-D6BL7ARI.js +2 -0
- package/dist/chunk-DLLHUG2Q.js +9 -0
- package/dist/chunk-DPC5DKH6.js +2 -0
- package/dist/{chunk-R5OJD5K2.js → chunk-DTLLIA2C.js} +1 -1
- package/dist/{chunk-LDJAUIAG.js → chunk-FYR4FD7K.js} +1 -1
- package/dist/chunk-G6ADWA2B.js +2 -0
- package/dist/chunk-H333GKL4.js +3 -0
- package/dist/{chunk-EDDGQ6LM.js → chunk-H5DRKXXC.js} +1 -1
- package/dist/{chunk-DNKELRK6.js → chunk-IQFXLJIM.js} +1 -1
- package/dist/{chunk-UCNIXOTL.js → chunk-IUOMBLRR.js} +1 -1
- package/dist/chunk-K3FXRBER.js +4 -0
- package/dist/{chunk-TIZCESKY.js → chunk-KCIET26G.js} +1 -1
- package/dist/chunk-LEEOZRWR.js +7 -0
- package/dist/{chunk-T5NBSCVX.js → chunk-NCZJUPG5.js} +49 -49
- package/dist/{chunk-TSYDTKXO.js → chunk-RPM67N7A.js} +1 -1
- package/dist/{chunk-NSMRQOWP.js → chunk-SAZXL36B.js} +1 -1
- package/dist/chunk-SVGUAVMG.js +1 -0
- package/dist/chunk-TBOIXIQA.js +1 -0
- package/dist/chunk-TGDXD4CD.js +1 -0
- package/dist/{chunk-IPZT6WKM.js → chunk-TVSMNF5G.js} +1 -1
- package/dist/{chunk-D3N2WFDV.js → chunk-UHT2SW7O.js} +1 -1
- package/dist/chunk-VLKX5U4H.js +13 -0
- package/dist/chunk-XF65LQ6M.js +1 -0
- package/dist/chunk-ZKYH44ER.js +1 -0
- package/dist/{chunk-TZK2R6RD.js → chunk-ZNKZ2KXR.js} +1 -1
- package/dist/chunk-ZS7JHATN.js +1 -0
- package/dist/{create-XYKXS3JB.js → create-EKA2QG5R.js} +1 -1
- package/dist/doctor-BXSNADVR.js +1 -0
- package/dist/{goal-lifecycle-BIX2JVNO.js → goal-lifecycle-XXWNMIAD.js} +1 -1
- package/dist/{goal-pack-SUWH6K7U.js → goal-pack-NTHYLISY.js} +1 -1
- package/dist/index.js +158 -158
- package/dist/pipeline-JLOC2SUT.js +5 -0
- package/dist/{project-agent-entry-Y3NEHZED.js → project-agent-entry-ZNUHGCVC.js} +1 -1
- package/dist/{project-intelligence-lens-6Q6XSUDJ.js → project-intelligence-lens-W72OUEDW.js} +1 -1
- package/dist/{proof-carrying-change-456TYEDW.js → proof-carrying-change-WLUPMUO7.js} +1 -1
- package/dist/verified-goal-6O2JZOOR.js +1 -0
- package/dist/{workspace-ROUEA3RT.js → workspace-XTIGVLGH.js} +1 -1
- package/dist/{workspace-agent-sync-6UYG33EQ.js → workspace-agent-sync-TN6QDNBR.js} +1 -1
- package/dist/{workspace-context-H7ZXR6VI.js → workspace-context-Y3TNY2XZ.js} +1 -1
- package/dist/{workspace-contract-2V2BI6A3.js → workspace-contract-GRZY7WRD.js} +1 -1
- package/dist/{workspace-explain-IBMTRUSF.js → workspace-explain-KUYHJFLY.js} +1 -1
- package/dist/{workspace-foundation-H5B3TTZD.js → workspace-foundation-ZBUJTR56.js} +1 -1
- package/dist/{workspace-graph-stream-YDEET5LK.js → workspace-graph-stream-KC2XUAE4.js} +1 -1
- package/dist/workspace-graph-token-efficiency-YHXFGH3Z.js +1 -0
- package/dist/{workspace-intelligence-DXKQXTTM.js → workspace-intelligence-26YT6KMN.js} +1 -1
- package/dist/{workspace-intelligence-benchmark-L46EGZZM.js → workspace-intelligence-benchmark-QFVTUBDO.js} +1 -1
- package/dist/{workspace-intelligence-evaluation-QDSOOUHH.js → workspace-intelligence-evaluation-4AB4BBRP.js} +1 -1
- package/dist/{workspace-intelligence-runner-SCB44IXU.js → workspace-intelligence-runner-HVYKHCTX.js} +1 -1
- package/dist/{workspace-knowledge-graph-BNEVFEOW.js → workspace-knowledge-graph-RL3I2FHY.js} +1 -1
- package/dist/{workspace-knowledge-graph-query-GOC365ZR.js → workspace-knowledge-graph-query-TT2KK3SF.js} +1 -1
- package/dist/workspace-knowledge-graph-snapshot-JEJMRQZL.js +1 -0
- package/dist/workspace-marker-7U3NYRPJ.js +1 -0
- package/dist/{workspace-mcp-serve-JLZTTEVG.js → workspace-mcp-serve-2FGRXJG4.js} +1 -1
- package/dist/{workspace-model-XSNLDUI2.js → workspace-model-2ODVOWDQ.js} +1 -1
- package/dist/{workspace-onboarding-IRBVZTT4.js → workspace-onboarding-BY6RUBBH.js} +1 -1
- package/dist/{workspace-python-engine-state-BE4A3BL5.js → workspace-python-engine-state-VCOLSEWV.js} +2 -2
- package/dist/{workspace-registry-summary-CBZDSG6I.js → workspace-registry-summary-VKTJ7PHV.js} +1 -1
- package/dist/workspace-repair-engine-RBM7NCGI.js +3 -0
- package/dist/workspace-run-JCA5WPCR.js +1 -0
- package/dist/{workspace-verify-QTRY7WW3.js → workspace-verify-NFJ7RKKT.js} +1 -1
- package/dist/{workspace-watch-PDQKYBYQ.js → workspace-watch-3DBBB6IP.js} +1 -1
- package/docs/ci-workflows.md +1 -1
- package/package.json +1 -1
- package/dist/analyze-WC2TY5AT.js +0 -1
- package/dist/autopilot-release-LJDRECFW.js +0 -1
- package/dist/chunk-2BCECNIW.js +0 -1
- package/dist/chunk-2LIVMG5C.js +0 -2
- package/dist/chunk-3SNP6M4M.js +0 -2
- package/dist/chunk-4HQU2GQM.js +0 -1
- package/dist/chunk-4JAURS76.js +0 -13
- package/dist/chunk-7O7P4MRD.js +0 -1
- package/dist/chunk-AQNU5RXV.js +0 -2
- package/dist/chunk-CQBM6BBP.js +0 -2
- package/dist/chunk-CY4QZ3PE.js +0 -3
- package/dist/chunk-F6CTGVJA.js +0 -9
- package/dist/chunk-K3O3HENC.js +0 -5
- package/dist/chunk-LGC4CRUF.js +0 -3
- package/dist/chunk-NNQE4DS2.js +0 -2
- package/dist/chunk-NSH7TTSV.js +0 -1
- package/dist/chunk-SO4CGS35.js +0 -4
- package/dist/chunk-UNXG3ZFV.js +0 -1
- package/dist/chunk-VBMWFT7Q.js +0 -1
- package/dist/chunk-ZZWGD3X3.js +0 -12
- package/dist/doctor-LQ7FT6AZ.js +0 -1
- package/dist/pipeline-NSPPWD7U.js +0 -5
- package/dist/verified-goal-GRH5UOJR.js +0 -1
- package/dist/workspace-graph-token-efficiency-XM3LYFUC.js +0 -1
- package/dist/workspace-knowledge-graph-snapshot-2NMV7LEJ.js +0 -1
- package/dist/workspace-marker-XGAWZZDX.js +0 -1
- package/dist/workspace-repair-engine-TDUNQSFJ.js +0 -3
- package/dist/workspace-run-I2W5PIPK.js +0 -1
package/dist/chunk-ZZWGD3X3.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import {d as d$1}from'./chunk-CQBM6BBP.js';import {a}from'./chunk-HCFOVANQ.js';import {m,h,i}from'./chunk-4HQU2GQM.js';import {a as a$1}from'./chunk-GR6442P7.js';import {d,c}from'./chunk-EWZZUQBR.js';import {p,t}from'./chunk-ODK4LCEL.js';import u from'path';import {createHash}from'crypto';import {createReadStream}from'fs';import {execFile}from'child_process';import {promisify}from'util';import _ from'fs-extra';import {parseAllDocuments}from'yaml';var Rs=p.knowledgeGraph;function Ss(e,t){if(e.source.kind!=="workspace-model")throw new Error(`Workspace knowledge graph is not bound to the canonical workspace model (source: ${e.source.kind}).`);if(e.source.artifact!==p.model)throw new Error(`Workspace knowledge graph source artifact is ${e.source.artifact}; expected ${p.model}.`);if(e.source.hashAlgorithm!=="sha256")throw new Error(`Workspace knowledge graph source hash algorithm is ${e.source.hashAlgorithm}; expected sha256.`);let s=d(t);if(e.source.hash!==s)throw new Error("Workspace knowledge graph is stale: its source hash does not match the canonical workspace model.");if(e.workspace.name!==t.workspace.name||(e.workspace.profile??void 0)!==(t.workspace.profile??void 0))throw new Error("Workspace knowledge graph identity does not match the canonical workspace model.");let o=m(t);if(!o)throw new Error("Canonical workspace model has no project topology for the workspace knowledge graph.");let i=n=>({...n,generatedAt:"<ignored>"});if(c(i(e.projectTopology))!==c(i(o)))throw new Error("Workspace knowledge graph project topology does not match the canonical workspace model.")}function wt(e){return {path:e.path,...e.runtime!==void 0?{runtime:e.runtime}:{},...e.runtimeCandidates!==void 0?{runtimeCandidates:e.runtimeCandidates}:{},...e.framework!==void 0?{framework:e.framework}:{},...e.kit!==void 0?{kit:e.kit}:{},...e.kind!==void 0?{kind:e.kind}:{},...e.category!==void 0?{category:e.category}:{},...e.governance?{governanceCiStatus:e.governance.ci.status,governanceReleaseStatus:e.governance.release.status,governanceOwnershipStatus:e.governance.ownership.status,governanceProviders:[e.governance.ci.provider,e.governance.release.provider,e.governance.ownership.provider].filter(t=>!!t)}:{}}}var zt=5e5,Kt=2e6;function be(e,t){if(e!==void 0&&Number.isFinite(e)&&e>0)return Math.floor(e);let s=process.env[t];if(!s)return;let o=Number.parseInt(s,10);return Number.isFinite(o)&&o>0?o:void 0}var Pt=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"]),$t=new Set(["AGENTS.md","CLAUDE.md","GEMINI.md","QWEN.md"]),jt=new Set([".workspai-workspace"]),Nt=[/(?:^|\/)\.agents\/skills\/workspai-[^/]+\//u,/(?:^|\/)\.amazonq\/rules\/workspai-[^/]+\.md$/u,/(?:^|\/)\.claude\/(?:rules|skills)\/(?:workspai-|rapidkit-)[^/]+(?:\/|$)/u,/(?:^|\/)\.cursor\/(?:rules|skills)\/(?:workspai-|rapidkit-)[^/]+(?:\/|$)/u,/(?:^|\/)\.grok\/(?:rules|skills)\/workspai-[^/]+(?:\/|$)/u,/(?:^|\/)\.github\/agents\/workspai-[^/]+\.agent\.md$/u,/(?:^|\/)\.github\/(?:instructions|prompts|skills)\/(?:workspai-|rapidkit-)[^/]+(?:\/|$)/u,/(?:^|\/)\.github\/copilot-instructions\.md$/u,/(?:^|\/)\.windsurf\/rules\/workspai-[^/]+\.md$/u,/(?:^|\/)\.windsurfrules$/u,/(?:^|\/)\.vscode\/(?:workspai|rapidkit)-agent-hooks\.json$/u];function ze(e,t){let s=D(u.relative(e,t));return $t.has(u.posix.basename(s))||jt.has(u.posix.basename(s))||Nt.some(o=>o.test(s))}var Gt=new Set(["test","tests","spec","specs","e2e","integration","integration-tests","integration_tests","__tests__","fixture","fixtures","__fixtures__","testdata"]),Dt=new Set(["examples","samples","worked"]);function Ke(e,t){let s=u.relative(e,t).split(u.sep).map(i=>i.toLowerCase()),o=u.basename(t).toLowerCase();return s.some(i=>Gt.has(i))||/(?:\.test|\.spec|_test)\.[a-z0-9]+$/i.test(o)||/^test_.+\.[a-z0-9]+$/i.test(o)||/(?:tests?|specs?)\.(?:cs|fs|vb|java|kt|kts)$/i.test(o)}function Ne(e,t){return u.relative(e,t).split(u.sep).map(s=>s.toLowerCase()).some(s=>Dt.has(s))}function ee(e,t){return Ke(e,t)||Ne(e,t)}function ue(e,t){return u.relative(e,t).split(u.sep).some(s=>s.toLowerCase()==="generated")}var Oe=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"]),qt=new Set([...Oe,"go.work","go.work.sum"]),Zt=new Set(["get","put","post","delete","options","head","patch","trace"]),te=new Set([".c",".cc",".cpp",".cs",".dart",".ex",".exs",".go",".h",".hpp",".java",".cjs",".cts",".js",".jsx",".kt",".kts",".mjs",".mts",".php",".py",".r",".rb",".rs",".scala",".svelte",".swift",".ts",".tsx",".vue",".clj",".cljs",".fs",".fsx",".lua",".vb"]),st=new Set([...te,".adb",".ads",".asm",".bash",".bat",".cl",".cob",".cu",".cuh",".erl",".f",".f03",".f08",".f77",".f90",".f95",".fish",".for",".gql",".graphql",".groovy",".hip",".hrl",".hs",".hlsl",".jl",".ll",".m",".metal",".mir",".mlir",".mm",".nim",".pas",".pl",".pm",".proto",".ps1",".s",".sh",".sol",".sql",".sv",".td",".thrift",".v",".vhd",".vhdl",".zig",".zsh"]);function U(e,t){let s=u.extname(e).toLowerCase();return s===".h"&&t==="cpp"?"cpp":{".c":"c",".adb":"ada",".ads":"ada",".asm":"assembly",".bash":"shell",".bat":"batch",".cc":"cpp",".cl":"opencl",".cob":"cobol",".cpp":"cpp",".cs":"csharp",".cu":"cuda",".cuh":"cuda",".dart":"dart",".erl":"erlang",".ex":"elixir",".exs":"elixir",".f":"fortran",".f03":"fortran",".f08":"fortran",".f77":"fortran",".f90":"fortran",".f95":"fortran",".fish":"shell",".for":"fortran",".gql":"graphql",".go":"go",".graphql":"graphql",".groovy":"groovy",".h":"c",".hip":"hip",".hpp":"cpp",".hrl":"erlang",".hs":"haskell",".hlsl":"hlsl",".java":"java",".jl":"julia",".cjs":"javascript",".cts":"typescript",".js":"javascript",".jsx":"javascript",".kt":"kotlin",".kts":"kotlin",".mjs":"javascript",".mts":"typescript",".php":"php",".py":"python",".r":"r",".rb":"ruby",".rs":"rust",".scala":"scala",".svelte":"svelte",".swift":"swift",".ts":"typescript",".tsx":"typescript",".vue":"vue",".clj":"clojure",".cljs":"clojure",".fs":"fsharp",".fsx":"fsharp",".lua":"lua",".ll":"llvm-ir",".m":"objective-c",".metal":"metal",".mir":"llvm-mir",".mlir":"mlir",".mm":"objective-cpp",".nim":"nim",".pas":"pascal",".pl":"perl",".pm":"perl",".proto":"protobuf",".ps1":"powershell",".s":"assembly",".sh":"shell",".sol":"solidity",".sql":"sql",".sv":"systemverilog",".td":"tablegen",".thrift":"thrift",".v":"verilog",".vb":"visual-basic",".vhd":"vhdl",".vhdl":"vhdl",".zig":"zig",".zsh":"shell"}[s]??s.slice(1)}var Ht=new Set(["external","third_party","third-party","vendor","vendors","vendored"]),Jt=new Set(["app","apps","cli","cmd","core","extensions","internal","lib","packages","services","src"]);function it(e,t){let o=D(u.relative(t,e)).split("/").filter(Boolean),i=o[0]?.toLowerCase()??"";return (o.some(l=>Ht.has(l.toLowerCase()))?1e3:0)+(Jt.has(i)?-100:0)+Math.min(o.length,20)}function Ut(e,t,s){if(e.length<=t)return [...e];let o=[...e].sort((c,r)=>it(c,s)-it(r,s)||c.localeCompare(r)),i=new Map;for(let c of o){let r=U(c),d=i.get(r)??[];d.push(c),i.set(r,d);}let n=new Set,l=Math.max(1,Math.min(25,Math.floor(t/Math.max(i.size,1))));for(let c of [...i.values()])for(let r of c.slice(0,l))n.add(r);for(let c of o){if(n.size>=t)break;n.add(c);}return [...n].sort((c,r)=>c.localeCompare(r))}function Vt(e,t){let s=D(u.relative(t,e)).split("/").filter(Boolean);if(s.length===0)return "<root>";let o=s[0].toLowerCase();return ["app","apps","cmd","components","crates","modules","packages","plugins","services"].includes(o)&&s[1]?`${o}/${s[1].toLowerCase()}`:o}function we(e,t,s){let o=[...new Set(e)].sort((d,a)=>d.localeCompare(a));if(o.length<=t)return o;let i=new Set,n=o.filter(d=>qt.has(u.basename(d))).sort((d,a)=>D(u.relative(s,d)).split("/").length-D(u.relative(s,a)).split("/").length||d.localeCompare(a));for(let d of n){if(i.size>=t)break;i.add(d);}let l=new Map;for(let d of o){if(i.has(d))continue;let a=`${Vt(d,s)}\0${U(d)}`,p=l.get(a)??[];p.push(d),l.set(a,p);}let c=[...l.entries()].sort(([d],[a])=>d.localeCompare(a)),r=0;for(;i.size<t;){let d=false;for(let[,a]of c){let p=a[r];if(p&&(i.add(p),d=true,i.size>=t))break}if(!d)break;r+=1;}return [...i].sort((d,a)=>d.localeCompare(a))}function Yt(e){let t=Math.max(0,e.eligibleFiles),s=Math.min(25e3,Math.max(5e3,Math.ceil(t*.2))),o=Math.max(100,Math.min(e.deepOverride??s,Math.max(t,100),1e5)),i=Math.min(1e5,Math.max(25e3,o*4,Math.ceil(t*.6))),n=Math.max(o,Math.min(e.semanticOverride??i,Math.max(t,o),25e4)),l=Math.min(2e4,Math.max(2e3,Math.ceil(Math.min(t,o)*.25))),c=Math.max(100,Math.min(e.sourceOverride??l,o,5e4));return {semanticFileBudget:n,deepFileBudget:o,sourceExtractionFileBudget:c}}function Te(e,t,s){let o=[],i=e.split(/\r?\n/);for(let n=0;n<i.length&&o.length<s;n+=1)for(let l of t){let r=i[n].match(l.pattern)?.[1]?.trim();if(r){o.push({name:r,line:n+1,detail:l.detail});break}}return o}var Qt=[{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"}],It=[{pattern:/^\s*import(?:.+?from\s*)?["']([^"']+)["']/,detail:"import"},{pattern:/require\(["']([^"']+)["']\)/,detail:"require"}],Ct=[{pattern:/^\s*from\s+([A-Za-z0-9_.]+)\s+import\s+/,detail:"import"},{pattern:/^\s*import\s+([A-Za-z0-9_.]+)(?:\s|$)/,detail:"import"}],Xt=[{pattern:/^\s*#\s*include\s*["<]([^">]+)[">]/,detail:"include"}],eo=[{pattern:/^\s*use\s+([A-Za-z0-9_:*.-]+)/,detail:"use"}],to=[{pattern:/^\s*import\s+(?:static\s+)?([A-Za-z0-9_.*]+)\s*;?/,detail:"import"}],oo=[{pattern:/^\s*(?:global\s+)?using\s+([A-Za-z0-9_.]+)/,detail:"using"}],so=[{pattern:/^\s*import\s+(?:[A-Za-z0-9_.]+\s+)?["']([^"']+)["']/,detail:"import"}],Et=[{pattern:/^\s*require(?:_relative)?\s+["']([^"']+)["']/,detail:"require"}],io=[{pattern:/^\s*use\s+([A-Za-z0-9_\\]+)/,detail:"use"}],ro=[{pattern:/^\s*(?:alias|import|require|use)\s+([A-Za-z0-9_.]+)/,detail:"import"}],no=[{pattern:/^\s*import\s+["']([^"']+)["']/,detail:"import"}],ao=[{pattern:/\brequire\s*\(?\s*["']([^"']+)["']/,detail:"require"}],co=[{pattern:/^\s*(?:library|require)\s*\(\s*["']?([^"')\s]+)["']?/,detail:"import"}],lo=[...It,...Ct,{pattern:/^\s*(?:import|using|use)\s+([A-Za-z0-9_:.*\\/.-]+)/,detail:"import"},...Et];function po(e){let t=u.extname(e).toLowerCase();return [".cjs",".cts",".js",".jsx",".mjs",".mts",".ts",".tsx",".vue",".svelte"].includes(t)?It:t===".py"?Ct:[".c",".cc",".cpp",".h",".hpp"].includes(t)?Xt:t===".rs"?eo:[".java",".kt",".kts",".scala"].includes(t)?to:[".cs",".fs",".fsx",".vb"].includes(t)?oo:t===".go"?so:t===".rb"?Et:t===".php"?io:[".ex",".exs"].includes(t)?ro:t===".dart"?no:t===".lua"?ao:t===".r"?co:lo}function uo(e,t,s,o,i){let n=u.extname(e).toLowerCase()===".py",l=[];if(n){let r=t.match(/^\.+/)?.[0].length??0,d=r>0?u.dirname(e):u.resolve(o??"");for(let p=1;p<r;p+=1)d=u.dirname(d);let a=t.slice(r).replace(/\./g,u.sep);l.push(a?u.join(d,a):d);}else if(t.startsWith("."))l.push(u.resolve(u.dirname(e),t));else if(i==="include")l.push(u.resolve(u.dirname(e),t)),o&&l.push(u.resolve(o,t));else return null;let c=new Set;for(let r of l){c.add(r);let d=u.extname(r).toLowerCase(),a=te.has(d);if(n&&(c.add(`${r}.py`),c.add(u.join(r,"__init__.py"))),a){let p=r.slice(0,-d.length);if([".js",".jsx",".mjs"].includes(d))for(let f of [".ts",".tsx",".js",".jsx",".mjs"])c.add(`${p}${f}`);}else for(let p of te)c.add(`${r}${p}`),c.add(u.join(r,`index${p}`));}return [...c].find(r=>s.has(u.resolve(r)))??null}function fo(e,t){let s=t.trimStart(),o=u.extname(e).toLowerCase();return [".py",".rb",".sh",".bash",".zsh"].includes(o)?s.startsWith("#"):[".sql",".lua",".hs"].includes(o)?s.startsWith("--"):s.startsWith("//")||s.startsWith("/*")||s.startsWith("*")}function mo(e,t){if(u.extname(e).toLowerCase()!==".py")return t;let s=null;return t.split(/\r?\n/).map(o=>{let i=0,n="";for(;i<o.length;){if(s){let a=o.indexOf(s,i);if(a<0)return n;i=a+3,s=null;continue}let l=o.indexOf("'''",i),c=o.indexOf('"""',i),r=o.indexOf("#",i),d=l<0?c:c<0?l:Math.min(l,c);if(r>=0&&(d<0||r<d)){n+=o.slice(i,r);break}if(d<0){n+=o.slice(i);break}n+=o.slice(i,d),s=o.startsWith("'''",d)?"'''":'"""',i=d+3;}return n}).join(`
|
|
2
|
-
`)}function go(e,t){if(![".js",".jsx",".mjs",".ts",".tsx"].includes(u.extname(e).toLowerCase()))return t;let s=false,o=false;return t.split(/\r?\n/).map(i=>{let n="",l=null,c=false;for(let r=0;r<i.length;r+=1){let d=i[r],a=i[r+1];if(s){n+=" ",d==="*"&&a==="/"&&(n+=" ",r+=1,s=false);continue}if(o){n+=" ",d==="`"&&!c&&(o=false),c=d==="\\"&&!c,d!=="\\"&&(c=false);continue}if(l){n+=d,d===l&&!c&&(l=null),c=d==="\\"&&!c,d!=="\\"&&(c=false);continue}if(d==="/"&&a==="/")return n.padEnd(i.length," ");if(d==="/"&&a==="*"){n+=" ",r+=1,s=true;continue}if(d==="`"){n+=" ",o=true,c=false;continue}(d==="'"||d==='"')&&(l=d),n+=d;}return n}).join(`
|
|
3
|
-
`)}function Rt(e,t){return go(e,mo(e,t))}var ho=[{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 Pe(e){return createHash("sha256").update(e).digest("hex")}function E(e,t){return `wkg:${e}:${Pe(`${e}\0${t}`).slice(0,20)}`}function D(e){return e.replace(/\\/g,"/")}function he(e){let t=D(e).replace(/^\.\//,"");return !t||t.startsWith("/")||/^[A-Za-z]:\//.test(t)||t.split("/").includes("..")?"unknown":t}function C(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function P(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function H(e){if(Array.isArray(e))return e.filter(s=>typeof s=="string").map(s=>s.trim()).filter(Boolean).sort();let t=C(e);return t?Object.keys(t).map(s=>s.trim()).filter(Boolean).sort():[]}function vo(e){if(Array.isArray(e))return e.map(s=>typeof s=="string"?s.split("=",1)[0]?.trim():"").filter(s=>!!s).sort();let t=C(e);return t?Object.keys(t).sort():[]}function yo(e){return Object.fromEntries(Object.entries(e).filter(t=>t[1]!==void 0).sort(([t],[s])=>t.localeCompare(s)))}async function bo(e,t,s=[]){let o=[],i=[e],n=s.map(r=>u.resolve(r)),l=r=>{let d=u.resolve(r);return n.some(a=>d===a||d.startsWith(`${a}${u.sep}`))},c=0;for(;c<i.length&&o.length<t;){let r=i[c++],d;try{d=await _.readdir(r,{withFileTypes:true});}catch{continue}d.sort((a,p)=>a.name.localeCompare(p.name));for(let a of d){if(o.length>=t)break;if(a.isSymbolicLink())continue;let p=u.join(r,a.name);l(p)||(a.isDirectory()?!Pt.has(a.name)&&!a$1(a.name)&&i.push(p):a.isFile()&&(ze(e,p)||o.push(p)));}}return o.sort((r,d)=>r.localeCompare(d))}async function Ge(e){return new Promise(t=>{let s=createHash("sha256"),o=createReadStream(e);o.on("data",i=>s.update(i)),o.on("error",i=>{t(`unreadable:${i.code??"unknown"}`);}),o.on("end",()=>t(s.digest("hex")));})}var ko=promisify(execFile);async function Z(e,t){let s=await ko("git",t,{cwd:e,encoding:"buffer",maxBuffer:268435456,windowsHide:true});return Buffer.isBuffer(s.stdout)?s.stdout:Buffer.from(s.stdout)}function De(){return [".",...[...Pt].sort((e,t)=>e.localeCompare(t)).map(e=>`:(exclude,glob)**/${e}/**`),...[...$t].sort((e,t)=>e.localeCompare(t)).map(e=>`:(exclude,glob)**/${e}`),...[...jt].sort((e,t)=>e.localeCompare(t)).map(e=>`:(exclude,glob)**/${e}`),":(exclude,glob)**/.agents/skills/workspai-*/**",":(exclude,glob)**/.amazonq/rules/workspai-*.md",":(exclude,glob)**/.claude/rules/workspai-*.md",":(exclude,glob)**/.claude/rules/rapidkit-*.md",":(exclude,glob)**/.claude/skills/workspai-*/**",":(exclude,glob)**/.cursor/rules/workspai-*.*",":(exclude,glob)**/.cursor/rules/rapidkit-*.*",":(exclude,glob)**/.cursor/skills/workspai-*/**",":(exclude,glob)**/.grok/rules/workspai-*.md",":(exclude,glob)**/.grok/skills/workspai-*/**",":(exclude,glob)**/.github/agents/workspai-*.agent.md",":(exclude,glob)**/.github/copilot-instructions.md",":(exclude,glob)**/.github/instructions/workspai-*.md",":(exclude,glob)**/.github/instructions/rapidkit-*.md",":(exclude,glob)**/.github/prompts/workspai-*.md",":(exclude,glob)**/.github/prompts/rapidkit-*.md",":(exclude,glob)**/.github/skills/workspai-*/**",":(exclude,glob)**/.github/skills/rapidkit-*/**",":(exclude,glob)**/.windsurf/rules/workspai-*.md",":(exclude,glob)**/.windsurfrules",":(exclude,glob)**/.vscode/workspai-agent-hooks.json",":(exclude,glob)**/.vscode/rapidkit-agent-hooks.json"]}function Be(e){return e.toString("utf8").split("\0").filter(Boolean).map(t=>t.replace(/\\/gu,"/"))}async function wo(e,t,s=[]){try{await Z(e,["rev-parse","--show-toplevel"]);let o=De(),[i,n,l]=await Promise.all([Z(e,["ls-files","--stage","-z","--",...o]),Z(e,["ls-files","--deleted","-z","--",...o]),Z(e,["ls-files","--others","--exclude-standard","-z","--",...o])]),c=new Set(Be(n)),r=i.toString("utf8").split("\0").filter(Boolean).flatMap(v=>{let g=v.match(/^(\d{6}) [0-9a-f]+ \d\t([\s\S]+)$/u);if(!g)return [];let[,h,y]=g,b=y.replace(/\\/gu,"/");return h==="120000"||h==="160000"||c.has(b)?[]:[b]}),p=(await Ie([...new Set([...r,...Be(l)])],64,async v=>{let g=u.normalize(v);if(u.isAbsolute(g)||g===".."||g.startsWith(`..${u.sep}`))return null;let h=u.resolve(e,g);try{let y=await _.lstat(h);return y.isFile()&&!y.isSymbolicLink()?v:null}catch{return null}})).filter(v=>v!==null).map(v=>u.resolve(e,...v.split("/").filter(Boolean))).filter(v=>!ze(e,v)).filter(v=>!s.some(g=>v===u.resolve(g)||v.startsWith(`${u.resolve(g)}${u.sep}`))).sort((v,g)=>v.localeCompare(g)),f=p.length>t;return {files:f?we(p,t,e):p,eligibleFileCount:p.length,eligibleFileCountExact:true,truncated:f,fileLimit:t,strategy:"git-index-worktree-v1"}}catch{return null}}async function ve(e,t,s=[]){let o=await wo(e,t,s);if(o)return o;let i=await bo(e,t+1,s),n=i.length>t;return {files:n?we(i,t,e):i,eligibleFileCount:i.length,eligibleFileCountExact:!n,truncated:n,fileLimit:t,strategy:"filesystem-bfs-v1"}}async function Po(e){try{let t=(await Z(e.root,["rev-parse","--show-prefix"])).toString("utf8").trim().replace(/\\/gu,"/"),s=t?`${t.replace(/^\/+|\/+$/gu,"")}/`:"";if(u.posix.isAbsolute(s)||s==="../"||s.startsWith("../")||s.includes("/../"))return null;let o=De(),[i,n,l,c,r,d]=await Promise.all([Z(e.root,["ls-files","--full-name","-s","--",...o]),Z(e.root,["diff","--no-ext-diff","--no-textconv","--binary","HEAD","--",...o]),Z(e.root,["ls-files","--full-name","--others","--exclude-standard","-z","--",...o]),Z(e.root,["ls-files","--full-name","--others","--ignored","--exclude-standard","-z","--",...o]),Z(e.root,["ls-files","-v","--",...o]),Z(e.root,["ls-files","--full-name","-s","--",...o])]);if(r.toString("utf8").split(/\r?\n/u).some(y=>/^[a-z] /u.test(y)))return null;let a=e.files.map(y=>{let b=D(u.relative(e.root,y));return `${s}${b}`});if(d.toString("utf8").split(/\r?\n/u).filter(y=>y.startsWith("160000 ")).map(y=>y.split(" ",2)[1]).filter(y=>!!y).map(y=>y.replace(/\\/gu,"/").replace(/\/$/u,"")).some(y=>a.some(b=>b.startsWith(`${y}/`))))return null;let f=new Set(a),v=Buffer.concat([l,c]).toString("utf8").split("\0").filter(Boolean).map(y=>y.replace(/\\/gu,"/")).filter(y=>f.has(y)),g=await Ie([...new Set(v)].sort((y,b)=>y.localeCompare(b)),16,async y=>{let b=s?y.slice(s.length):y;return {path:b,hash:await Ge(u.resolve(e.root,...b.split("/").filter(Boolean)))}}),h=createHash("sha256");h.update(`git-worktree-v2\0${e.kind}\0${e.id}\0${e.fileLimit}\0`),h.update(i),h.update(createHash("sha256").update(n).digest());for(let y of g)h.update(`${y.path}\0${y.hash}\0`);return {kind:e.kind,id:e.id,strategy:"git-worktree-v2",hash:h.digest("hex"),fileCount:e.files.length,fileLimit:e.fileLimit,truncated:e.files.length>=e.fileLimit}}catch{return null}}async function $o(e){try{let t=(await Z(e.root,["rev-parse","--show-prefix"])).toString("utf8").trim().replace(/\\/gu,"/"),s=t?`${t.replace(/^\/+|\/+$/gu,"")}/`:"";if(u.posix.isAbsolute(s)||s==="../"||s.startsWith("../")||s.includes("/../"))return null;let o=De(),[i,n,l,c]=await Promise.all([Z(e.root,["ls-files","--full-name","-s","--",...o]),Z(e.root,["diff","--no-ext-diff","--no-textconv","--binary","HEAD","--",...o]),Z(e.root,["ls-files","--full-name","--others","--exclude-standard","-z","--",...o]),Z(e.root,["ls-files","-v","--",...o])]);if(c.toString("utf8").split(/\r?\n/u).some(p=>/^[a-z] /u.test(p)))return null;let r=(e.excludedRoots??[]).map(p=>u.resolve(p)),d=(await Ie([...new Set(Be(l))].sort((p,f)=>p.localeCompare(f)),16,async p=>{if(s&&!p.startsWith(s))return null;let f=s?p.slice(s.length):p,v=u.normalize(f);if(!f||u.isAbsolute(v)||v===".."||v.startsWith(`..${u.sep}`))return null;let g=u.resolve(e.root,v);if(r.some(h=>g===h||g.startsWith(`${h}${u.sep}`))||ze(e.root,g))return null;try{let h=await _.lstat(g);if(!h.isFile()||h.isSymbolicLink())return null}catch{return null}return {path:f,hash:await Ge(g)}})).filter(p=>p!==null),a=createHash("sha256");a.update(`git-worktree-v2\0${e.kind}\0${e.id}\0${e.fileLimit}\0`),a.update(i),a.update(createHash("sha256").update(n).digest());for(let p of d)a.update(`${p.path}\0${p.hash}\0`);return a.digest("hex")===e.expectedHash}catch{return null}}async function Ie(e,t,s){let o=new Array(e.length),i=0,n=Array.from({length:Math.min(t,Math.max(e.length,1))},async()=>{for(;i<e.length;){let l=i++;o[l]=await s(e[l]);}});return await Promise.all(n),o}async function Le(e){let t=[...new Set(e.files)].sort((d,a)=>d.localeCompare(a)),s=e.eligibleFileCount??t.length,o=s>e.fileLimit||t.length>e.fileLimit,i=t.slice(0,e.fileLimit),n=await Po({...e,files:i}),l={eligibleFileCount:s,eligibleFileCountExact:e.eligibleFileCountExact??!o,inventoryMode:o?"emergency-bounded":"complete",...e.inventoryStrategy?{inventoryStrategy:e.inventoryStrategy}:{},...e.selection?{selection:e.selection}:{}};if(n)return {...n,fileCount:i.length,truncated:o,...l};let c=await Ie(i,16,async d=>({path:D(u.relative(e.root,d)),hash:await Ge(d)}));c.sort((d,a)=>d.path.localeCompare(a.path));let r=createHash("sha256");r.update(`content-merkle-v1\0${e.kind}\0${e.id}\0${e.fileLimit}\0`);for(let d of c)r.update(`${d.path}\0${d.hash}\0`);return {kind:e.kind,id:e.id,strategy:"content-merkle-v1",hash:r.digest("hex"),fileCount:c.length,fileLimit:e.fileLimit,truncated:o,...l}}async function jo(e){let t=u.resolve(e.workspacePath),s=[...e.projects].sort((r,d)=>r.id.localeCompare(d.id)),o=s.map(r=>r.absolutePath?u.resolve(r.absolutePath):u.resolve(t,r.path)),i=e.inventories?.workspaceInventory??(e.inventories?.workspaceFiles?{files:[...e.inventories.workspaceFiles],eligibleFileCount:e.inventories.workspaceFiles.length,eligibleFileCountExact:e.inventories.workspaceFiles.length<=e.workspaceFileLimit,truncated:e.inventories.workspaceFiles.length>e.workspaceFileLimit,fileLimit:e.workspaceFileLimit,strategy:"filesystem-bfs-v1"}:await ve(t,e.workspaceFileLimit,o)),n=i.files.filter(r=>!o.some(d=>r===d||r.startsWith(`${d}${u.sep}`))),l={...i,files:n,eligibleFileCount:i.eligibleFileCountExact&&!i.truncated?n.length:i.eligibleFileCount},c=await Promise.all([Le({kind:"workspace",id:"workspace",root:t,files:l.files,fileLimit:e.workspaceFileLimit,eligibleFileCount:l.eligibleFileCount,eligibleFileCountExact:l.eligibleFileCountExact,inventoryStrategy:l.strategy}),...s.map(async r=>{let d=r.absolutePath?u.resolve(r.absolutePath):u.resolve(t,r.path),a=e.inventories?.projectFiles?.get(r.id),p=e.inventories?.projectInventories?.get(r.id)??(a?{files:[...a],eligibleFileCount:a.length,eligibleFileCountExact:a.length<=e.projectFileLimit,strategy:"filesystem-bfs-v1"}:await ve(d,e.projectFileLimit)),f=e.inventories?.scanBudgetsByProject?.get(r.id);return Le({kind:"project",id:r.id,root:d,files:p.files,fileLimit:e.projectFileLimit,eligibleFileCount:p.eligibleFileCount,eligibleFileCountExact:p.eligibleFileCountExact,inventoryStrategy:p.strategy,...f?{selection:{strategy:"component-language-round-robin-v1",semanticFileCount:Math.min(p.files.length,f.semanticFileBudget),semanticFileBudget:f.semanticFileBudget,deepFileCount:Math.min(p.files.length,f.deepFileBudget),deepFileBudget:f.deepFileBudget,sourceExtractionFileBudget:f.sourceExtractionFileBudget}}:{}})})]);return c.sort((r,d)=>r.kind.localeCompare(d.kind)||r.id.localeCompare(d.id)),St(c)}function St(e){let t=[...e].sort((o,i)=>o.kind.localeCompare(i.kind)||o.id.localeCompare(i.id)),s=createHash("sha256");s.update("workspace-knowledge-graph-inputs.v1\0hybrid-git-content-v2\0");for(let o of t)s.update(`${o.kind}\0${o.id}\0${o.hash}\0${o.fileCount}\0${o.fileLimit}\0${o.truncated}\0${o.eligibleFileCount??o.fileCount}\0${o.eligibleFileCountExact??!o.truncated}\0${o.inventoryMode??(o.truncated?"emergency-bounded":"complete")}\0${o.inventoryStrategy??"unknown"}\0${o.selection?c(o.selection):""}\0`);return {schemaVersion:"workspace-knowledge-graph-inputs.v1",strategy:"hybrid-git-content-v2",hashAlgorithm:"sha256",hash:s.digest("hex"),scopes:t}}async function As(e){if(St(e.expected.scopes).hash!==e.expected.hash)return false;let t=u.resolve(e.workspacePath),s=[...e.projects].sort((n,l)=>n.id.localeCompare(l.id)),o=s.map(n=>n.absolutePath?u.resolve(n.absolutePath):u.resolve(t,n.path)),i=new Map(s.map(n=>[n.id,n]));for(let n of e.expected.scopes){let l=n.kind==="project"?i.get(n.id):void 0;if(n.kind==="project"&&!l)return false;let c$1=l?l.absolutePath?u.resolve(l.absolutePath):u.resolve(t,l.path):t;if(n.strategy==="git-worktree-v2"){let v=await $o({kind:n.kind,id:n.id,root:c$1,fileLimit:n.fileLimit,expectedHash:n.hash,...n.kind==="workspace"?{excludedRoots:o}:{}});if(v!==null){if(!v)return false;continue}}let r=await ve(c$1,n.fileLimit,n.kind==="workspace"?o:[]),d=n.kind==="workspace"?r.files.filter(v=>!o.some(g=>v===g||v.startsWith(`${g}${u.sep}`))):r.files,a={...r,files:d,eligibleFileCount:r.eligibleFileCountExact&&!r.truncated?d.length:r.eligibleFileCount},p=n.selection?{strategy:"component-language-round-robin-v1",semanticFileCount:Math.min(a.files.length,n.selection.semanticFileBudget),semanticFileBudget:n.selection.semanticFileBudget,deepFileCount:Math.min(a.files.length,n.selection.deepFileBudget),deepFileBudget:n.selection.deepFileBudget,sourceExtractionFileBudget:n.selection.sourceExtractionFileBudget}:void 0,f=await Le({kind:n.kind,id:n.id,root:c$1,files:a.files,fileLimit:n.fileLimit,eligibleFileCount:a.eligibleFileCount,eligibleFileCountExact:a.eligibleFileCountExact,inventoryStrategy:a.strategy,...p?{selection:p}:{}});if(c(f)!==c(n))return false}return true}async function ae(e){let t=await _.readFile(e,"utf8");if(e.toLowerCase().endsWith(".json")){let s=JSON.parse(t),o=C(s);return o?[o]:[]}return parseAllDocuments(t,{logLevel:"silent"}).map(s=>C(s.toJSON())).filter(s=>s!==null)}function fe(e){return [...new Set([...e.workspaceFiles,...e.projects.flatMap(t=>e.filesByProject.get(t.id)??[])])].sort((t,s)=>t.localeCompare(s))}function $e(e){return /^(?:openapi|swagger)(?:\.[^.]+)?\.(?:json|ya?ml)$/i.test(u.basename(e))}function rt(e){let t=u.basename(e).toLowerCase();return /\.(?:graphql|gql|proto)$/.test(t)||/^asyncapi(?:\.[^.]+)?\.(?:json|ya?ml)$/.test(t)}function nt(e){let t=u.basename(e),s=D(e);return !/(?:^|\/)\.devcontainer(?:\/|$)/i.test(s)&&/^Dockerfile(?:\..+)?$/i.test(t)||/\.tf$/i.test(t)||t==="Chart.yaml"}function at(e){return /(?:^|[\\/])(?:README|ARCHITECTURE|CONTRIBUTING|SECURITY)\.md$/i.test(e)}function Io(e,t){let s=D(u.relative(e,t));return /^\.github\/workflows\/.+\.ya?ml$/i.test(s)||/^(?:\.gitlab-ci\.ya?ml|azure-pipelines\.ya?ml|Jenkinsfile|bitbucket-pipelines\.ya?ml|\.woodpecker\.ya?ml|\.drone\.ya?ml|\.travis\.ya?ml|appveyor\.ya?ml)$/i.test(s)||/^\.circleci\/config\.ya?ml$/i.test(s)||/^\.buildkite\/pipeline\.ya?ml$/i.test(s)||/^\.tekton\/.+\.ya?ml$/i.test(s)||/^prow\/[^/]+\.(?:sh|py)$/i.test(s)}function ct(e,t){let s=D(u.relative(e,t));return /(?:^|\/)(?:adr|adrs|decisions)(?:\/).+\.md$/i.test(s)||/(?:^|\/)ADR[-_0-9].+\.md$/i.test(s)}async function dt(e){let t=new Set;for(let s of [e.workspacePath,...e.projects.map(o=>o.root)])for(let o of ["compose.yml","compose.yaml","docker-compose.yml","docker-compose.yaml"]){let i=u.join(s,o);await _.pathExists(i)&&t.add(i);}for(let s of fe(e))/^(?:docker-)?compose(?:\.[a-z0-9_-]+)*\.ya?ml$/i.test(u.basename(s))&&t.add(s);return [...t].sort((s,o)=>s.localeCompare(o))}async function lt(e){let s=[e.workspacePath,...e.projects.map(i=>i.root)].flatMap(i=>[u.join(i,"CODEOWNERS"),u.join(i,".github","CODEOWNERS"),u.join(i,".gitlab","CODEOWNERS"),u.join(i,"docs","CODEOWNERS")]);for(let i of fe(e))u.basename(i)==="OWNERS"&&s.push(i);let o=await Promise.all(s.map(async i=>await _.pathExists(i)?i:null));return [...new Set(o.filter(i=>!!i))].sort((i,n)=>i.localeCompare(n))}function pt(e){let t=[{root:e.workspacePath,files:e.workspaceFiles},...e.projects.map(s=>({root:s.root,files:e.filesByProject.get(s.id)??[]}))];return [...new Set(t.flatMap(s=>s.files.filter(o=>Io(s.root,o))))].sort((s,o)=>s.localeCompare(o))}async function ut(e){let t=[];for(let s of fe(e))if(/\.ya?ml$/i.test(s))try{(await ae(s)).some(i=>{let n=C(i.metadata);return !!(P(i.apiVersion)&&P(i.kind)&&P(n?.name))})&&t.push(s);}catch{}return t.sort((s,o)=>s.localeCompare(o))}function ie(e,t){let s=u.resolve(t);return e.filter(o=>s===o.root||s.startsWith(`${o.root}${u.sep}`)).sort((o,i)=>i.root.length-o.root.length)[0]??null}var We=class{constructor(t,s,o){this.workspacePath=t;this.now=s;this.workspaceName=o;}workspacePath;now;workspaceName;entities=new Map;relations=new Map;proofs=new Map;providers=[];diagnostics=[];contentHashes=new Map;attributeConflicts=new Set;emptyLabelDiagnostics=new Set;artifactPath(t,s){if(s){let o=D(u.relative(s.root,t));return he(u.posix.join(s.artifactPrefix,o))}return he(u.relative(this.workspacePath,t))}async addProof(t){let s;if(t.absolutePath){if(!this.contentHashes.has(t.absolutePath))try{this.contentHashes.set(t.absolutePath,Pe(await _.readFile(t.absolutePath)));}catch{this.contentHashes.set(t.absolutePath,null);}s=this.contentHashes.get(t.absolutePath)??void 0;}let o=he(t.artifact),i=E("proof",[t.provider,o,t.pointer??"",t.line??"",t.detail??""].join("\0"));return this.proofs.has(i)||this.proofs.set(i,{id:i,provider:t.provider,artifact:o,...t.pointer?{pointer:t.pointer}:{},...t.line?{line:t.line}:{},...t.column?{column:t.column}:{},...s?{contentHash:s}:{},observedAt:this.now.toISOString(),derivation:t.derivation??"extracted",trust:t.trust??"observed",confidence:t.confidence??"high",freshness:"fresh",...t.detail?{detail:t.detail}:{}}),i}addEntity(t){let s=E(t.kind,t.key),o=yo(t.attributes??{}),i=this.entities.get(s),n=t.label.trim(),l=n||i?.label||t.key.trim()||t.kind;!n&&!this.emptyLabelDiagnostics.has(s)&&(this.emptyLabelDiagnostics.add(s),this.diagnostics.push({code:"graph.knowledge.empty_label_normalized",severity:"warning",message:`An empty ${t.kind} label was normalized to ${l}.`,entityIds:[s],recommendation:"Inspect the provider proof and preserve a non-empty source identifier before publishing the entity."}));let c={...i?.attributes??{}};for(let[a,p]of Object.entries(o)){if(a in c&&JSON.stringify(c[a])!==JSON.stringify(p)){if(t.mergeArrayAttributes?.includes(a)&&Array.isArray(c[a])&&Array.isArray(p)){c[a]=p;continue}let f=`${s}\0${a}`;this.attributeConflicts.has(f)||(this.attributeConflicts.add(f),this.diagnostics.push({code:"graph.knowledge.attribute_conflict",severity:"warning",message:`Conflicting ${a} values were observed for ${t.kind} ${l}.`,entityIds:[s],recommendation:"Inspect the entity proof paths and make the authoritative source explicit."}));continue}c[a]=p;}let r=[...new Set([...i?.identity.aliases??[],...t.aliases??[]].map(a=>a.trim()).filter(Boolean))].sort(),d=[...new Set([...i?.proofIds??[],...t.proofIds??[]])].sort();return this.entities.set(s,{id:s,kind:t.kind,label:l,...t.projectId?{projectId:t.projectId}:{},identity:{key:t.key,scope:t.projectId?"project":"workspace",aliases:r,fingerprint:Pe(JSON.stringify({kind:t.kind,key:t.key,attributes:c}))},attributes:c,proofIds:d}),s}addRelation(t){let s=E("relation",`${t.from}\0${t.kind}\0${t.to}`),o=this.relations.get(s),i=[...new Set([...o?.proofIds??[],...t.proofIds])].sort(),n=new Set(i.map(r=>this.proofs.get(r)?.provider).filter(Boolean)).size,l=t.trust??o?.trust??"observed",c=n>=2&&l!=="ambiguous"?"corroborated":l;return this.relations.set(s,{id:s,from:t.from,to:t.to,kind:t.kind,derivation:t.derivation??o?.derivation??"extracted",trust:c,confidence:c==="corroborated"?"high":t.confidence??o?.confidence??"high",proofIds:i}),s}};function pe(e){let t=[],s=null;for(let o of e.split(/\r?\n/)){let i=o.match(/^\s*\[\[([^\]]+)\]\]\s*(?:#.*)?$/)?.[1]?.trim()??o.match(/^\s*\[([^\]]+)\]\s*(?:#.*)?$/)?.[1]?.trim();if(i){s&&t.push({name:s.name,body:s.lines.join(`
|
|
4
|
-
`)}),s={name:i,lines:[]};continue}s?.lines.push(o);}return s&&t.push({name:s.name,body:s.lines.join(`
|
|
5
|
-
`)}),t}function Co(e){return [...e.matchAll(/["']([^"']+)["']/g)].map(t=>t[1])}function je(e,t){let s=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),o=new RegExp(`^\\s*${s}\\s*=\\s*\\[`,"m").exec(e);if(!o)return [];let i=o.index+o[0].lastIndexOf("["),n=null,l=false;for(let c=i+1;c<e.length;c+=1){let r=e[c];if(n){r===n&&!l&&(n=null),l=r==="\\"&&!l,r!=="\\"&&(l=false);continue}if(r==="'"||r==='"'){n=r;continue}if(r==="]")return Co(e.slice(i+1,c))}return []}function ft(e){return e.trim().match(/^([A-Za-z0-9][A-Za-z0-9_.-]*)/)?.[1]??""}function qe(e){return e.replace(/\.(?:workspace|version|path|git|optional|features|default-features|package)$/,"")}function Eo(e){let t=pe(e).find(({name:o})=>o==="workspace.package")?.body;if(!t)return {};let s=o=>{let i=o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return t.match(new RegExp(`^\\s*${i}\\s*=\\s*["']([^"']+)["']`,"m"))?.[1]};return {edition:s("edition"),rustVersion:s("rust-version"),version:s("version")}}function ke(e,t,s){let o=pe(e).find(({name:c})=>c==="package")?.body;if(!o)return s;let i=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),n=o.match(new RegExp(`^\\s*${i}\\s*=\\s*["']([^"']+)["']`,"m"))?.[1];return n||(new RegExp(`^\\s*${i}(?:\\.workspace\\s*=\\s*true|\\s*=\\s*\\{[^}]*\\bworkspace\\s*=\\s*true[^}]*\\})`,"m").test(o)?s:void 0)}function Ro(e){let t=pe(e).find(({name:o})=>o==="toolchain")?.body;if(!t)return {components:[],targets:[]};let s=o=>{let i=o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return t.match(new RegExp(`^\\s*${i}\\s*=\\s*["']([^"']+)["']`,"m"))?.[1]};return {channel:s("channel"),profile:s("profile"),components:je(t,"components").sort(),targets:je(t,"targets").sort()}}function So(e,t,s={}){let o=u.basename(e);try{if(o==="package.json"||o==="composer.json"){let c=JSON.parse(t);return {ecosystem:o==="package.json"?"npm":"composer",name:P(c.name),version:P(c.version),dependencies:[...H(c.dependencies),...H(c.devDependencies),...H(c.require),...H(c["require-dev"])].filter((r,d,a)=>a.indexOf(r)===d).sort(),metadata:o==="package.json"?{entrypoints:[P(c.main),P(c.module),P(c.types)].filter(r=>!!r),exports:C(c.exports)?Object.keys(C(c.exports)).sort():P(c.exports)?["."]:[],executables:C(c.bin)?Object.keys(C(c.bin)).sort():P(c.bin)?[P(c.name)??"default"]:[],runtimeConstraints:Object.entries(C(c.engines)??{}).map(([r,d])=>`${r}:${String(d)}`).sort()}:void 0}}if(o==="deno.json"||o==="deno.jsonc"){let c=JSON.parse(t.replace(/\/\*[\s\S]*?\*\/|^\s*\/\/.*$/gm,""));return {ecosystem:"deno",name:P(c.name),version:P(c.version),dependencies:H(c.imports)}}}catch{}let i=c=>t.match(c)?.[1]?.trim();if(o==="pyproject.toml"){let r=pe(t).filter(({name:d})=>d==="project"||d==="project.optional-dependencies"||d==="dependency-groups"||d==="tool.poetry.dependencies"||/^tool\.poetry\.group\.[^.]+\.dependencies$/.test(d)).flatMap(({name:d,body:a})=>d==="project"?je(a,"dependencies").map(ft):d==="project.optional-dependencies"||d==="dependency-groups"?[...a.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=\s*\[/gm)].flatMap(p=>je(a,p[1]??p[2])).map(ft):[...a.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=/gm)].map(p=>p[1]??p[2]).filter(p=>p!=="python"));return {ecosystem:"python",name:i(/^(?:name)\s*=\s*["']([^"']+)["']/m),version:i(/^(?:version)\s*=\s*["']([^"']+)["']/m),dependencies:r.filter(Boolean).filter((d,a,p)=>p.indexOf(d)===a).sort(),metadata:{requiresPython:i(/^requires-python\s*=\s*["']([^"']+)["']/m)??"unknown"}}}if(o==="go.mod")return {ecosystem:"go",name:i(/^module\s+(\S+)/m),dependencies:[...t.matchAll(/^\s*([A-Za-z0-9_.~/-]+)\s+v\d+/gm)].map(c=>c[1]).sort(),metadata:{goVersion:i(/^go\s+(\S+)/m)??"unknown"}};if(o==="Cargo.toml"){let c=pe(t).filter(({name:r})=>/(?:^|\.)(?:dev-|build-)?dependencies$/.test(r)).map(({body:r})=>r).join(`
|
|
6
|
-
`);return {ecosystem:"cargo",name:ke(t,"name",void 0),version:ke(t,"version",s.version),dependencies:[...c.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=/gm)].map(r=>r[1]??r[2]).map(qe).filter((r,d,a)=>a.indexOf(r)===d).sort(),metadata:{edition:ke(t,"edition",s.edition)??"unknown",rustVersion:ke(t,"rust-version",s.rustVersion)??"unknown",features:pe(t).find(({name:r})=>r==="features")?.body.match(/^\s*([A-Za-z0-9_.-]+)\s*=/gm)?.map(r=>r.split("=",1)[0].trim()).sort()??[]}}}if(o==="pom.xml"){let c=[...t.matchAll(/<dependency>([\s\S]*?)<\/dependency>/g)].map(r=>{let d=r[1].match(/<groupId>([^<]+)<\/groupId>/)?.[1]?.trim(),a=r[1].match(/<artifactId>([^<]+)<\/artifactId>/)?.[1]?.trim();return d&&a?`${d}:${a}`:a}).filter(r=>!!r);return {ecosystem:"maven",name:i(/<artifactId>([^<]+)<\/artifactId>/),version:i(/<version>([^<]+)<\/version>/),dependencies:c.filter((r,d,a)=>a.indexOf(r)===d).sort(),metadata:{groupId:i(/<groupId>([^<]+)<\/groupId>/)??"unknown",packaging:i(/<packaging>([^<]+)<\/packaging>/)??"jar"}}}if(/\.(?:cs|fs|vb)proj$/i.test(o))return {ecosystem:"nuget",name:i(/<AssemblyName>([^<]+)<\/AssemblyName>/)??o.replace(/\.[^.]+$/,""),version:i(/<Version>([^<]+)<\/Version>/),dependencies:[...t.matchAll(/<PackageReference\s+Include=["']([^"']+)["']/g)].map(c=>c[1]).sort(),metadata:{targetFrameworks:(i(/<TargetFrameworks?>([^<]+)<\/TargetFrameworks?>/)??"unknown").split(";"),rootNamespace:i(/<RootNamespace>([^<]+)<\/RootNamespace>/)??"unknown"}};let n={"requirements.txt":"python",Pipfile:"python","build.gradle":"gradle","build.gradle.kts":"gradle",Gemfile:"ruby","mix.exs":"elixir","pubspec.yaml":"dart","Package.swift":"swift","CMakeLists.txt":"cmake","deno.json":"deno","deno.jsonc":"deno","project.clj":"clojure","deps.edn":"clojure","build.sbt":"scala",BUILD:"bazel","BUILD.bazel":"bazel","WORKSPACE.bazel":"bazel"},l=o==="requirements.txt"?t.split(/\r?\n/).map(c=>c.trim().match(/^([A-Za-z0-9_.-]+)/)?.[1]):o.startsWith("build.gradle")?[...t.matchAll(/(?:implementation|api|compileOnly|runtimeOnly|testImplementation)\s*\(?["']([^:"']+):([^:"']+)/g)].map(c=>`${c[1]}:${c[2]}`):o==="Gemfile"?[...t.matchAll(/^\s*gem\s+["']([^"']+)["']/gm)].map(c=>c[1]):o==="mix.exs"?[...t.matchAll(/\{:\s*([A-Za-z0-9_]+)\s*,/g)].map(c=>c[1]):o==="pubspec.yaml"?[...t.matchAll(/^\s{2}([A-Za-z0-9_]+):\s+/gm)].map(c=>c[1]):o==="Package.swift"?[...t.matchAll(/\.package\s*\(\s*url:\s*["']([^"']+)["']/g)].map(c=>c[1]):o==="CMakeLists.txt"?[...t.matchAll(/find_package\s*\(\s*([A-Za-z0-9_.+-]+)/gi)].map(c=>c[1]):o==="project.clj"||o==="deps.edn"?[...t.matchAll(/\[?([A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+)\s+/g)].map(c=>c[1]):o==="build.sbt"?[...t.matchAll(/["']([^"']+)["']\s*%%?\s*["']([^"']+)["']/g)].map(c=>`${c[1]}:${c[2]}`):[];return {ecosystem:n[o]??"unknown",dependencies:l.filter(c=>!!c).filter((c,r,d)=>d.indexOf(c)===r).sort()}}function Ao(e){let t=new Set,s=o=>{let i=o.replace(/\/\/.*$/u,"").trim().replace(/^["']|["']$/gu,"").replace(/\\/gu,"/");i&&i!=="("&&i!==")"&&t.add(i);};for(let o of e.matchAll(/^\s*use\s*\(([\s\S]*?)^\s*\)/gmu))for(let i of (o[1]??"").split(/\r?\n/u))s(i);for(let o of e.matchAll(/^\s*use\s+([^\s(][^\r\n]*)$/gmu))s(o[1]??"");return [...t].sort((o,i)=>o.localeCompare(i))}function mt(e,t){let s=e==="cargo"?qe(t):t;return e==="cargo"?s.toLowerCase().replace(/[-_]/g,""):s.toLowerCase()}function Fo(e,t){let s=[...e.entities.values()].filter(i=>i.kind==="package"&&i.projectId===t),o=new Map;for(let i of s){let n=String(i.attributes.ecosystem??"unknown");for(let l of new Set([i.label,...i.identity.aliases])){let c=`${n}\0${mt(n,l)}`,r=o.get(c)??[];r.push(i),o.set(c,r);}}for(let i of s){let n=String(i.attributes.ecosystem??"unknown"),l=Array.isArray(i.attributes.dependencies)?i.attributes.dependencies.filter(c=>typeof c=="string"):[];for(let c of l){let r=`${n}\0${mt(n,c)}`,d=(o.get(r)??[]).filter(f=>f.id!==i.id);if(d.length!==1)continue;let a=d[0];e.addRelation({from:i.id,to:a.id,kind:"depends-on",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:i.proofIds});let p=E("module",`dependency:${n}:${qe(c)}`);e.relations.delete(E("relation",`${i.id}\0depends-on\0${p}`));}}for(let i of [...e.entities.values()]){if(i.kind!=="module"||i.projectId)continue;[...e.relations.values()].some(l=>l.from===i.id||l.to===i.id)||e.entities.delete(i.id);}}var _o={id:"workspace-foundation",version:"1.0.0",scanTier:"complete-inventory",async run(e){let{state:t$1}=e,s=await t$1.addProof({provider:this.id,artifact:t.workspaceContract,absolutePath:u.join(e.workspacePath,".workspai","workspace.contract.json"),trust:"authoritative",derivation:"authored",detail:"Workspace identity and project registry boundary"}),o=t$1.addEntity({kind:"workspace",key:`workspace:${t$1.workspaceName}`,label:t$1.workspaceName,aliases:[t$1.workspaceName],proofIds:[s]});for(let i of e.projects){let n=e.filesByProject.get(i.id)??[],l=n.find(b=>/[\\/]\.(?:workspai|rapidkit)[\\/](?:project|context)\.json$/.test(b)),c=n.find(b=>Oe.has(u.basename(b))),r=l??c,d=await t$1.addProof({provider:this.id,artifact:r?t$1.artifactPath(r,i):he(u.posix.join(i.artifactPrefix,".workspai/project.json")),...r?{absolutePath:r}:{},trust:l?"authoritative":"observed",derivation:l?"authored":"inferred",detail:`Project ${i.id}`}),a=t$1.addEntity({kind:"project",key:`project:${i.id}`,label:i.id,projectId:i.id,aliases:[i.id,i.path],attributes:wt(i),proofIds:[d]});t$1.addRelation({from:o,to:a,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[d]});let p=new Set,f=[],v=n.find(b=>u.resolve(b)===u.resolve(i.root,"go.work")),g;if(v)try{let b=await _.readFile(v,"utf8"),w=Ao(b),R=t$1.artifactPath(v,i),k=await t$1.addProof({provider:this.id,artifact:R,absolutePath:v,pointer:"/use",trust:"authoritative",derivation:"authored",confidence:"high",detail:`Go workspace with ${w.length} member(s)`}),$=t$1.addEntity({kind:"module",key:`go-workspace:${i.id}:${R}`,label:`${i.id} Go workspace`,projectId:i.id,aliases:["go.work"],attributes:{ecosystem:"go",manifest:R,members:w},proofIds:[k]});t$1.addRelation({from:a,to:$,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[k]}),g={entityId:$,members:w,proofId:k};}catch{}let h={},y=n.find(b=>u.resolve(b)===u.resolve(i.root,"Cargo.toml"));if(y)try{h=Eo(await _.readFile(y,"utf8"));}catch{}for(let b of n){let w=u.basename(b);if(/^(?:\.env\.example|\.env\.sample|\.env\.template)$/i.test(w))try{let k=await _.readFile(b,"utf8");for(let $ of k.split(/\r?\n/)){let S=$.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=/)?.[1];S&&p.add(S);}}catch{}let R=Ke(i.root,b);if(R&&f.push(b),!(R||Ne(i.root,b))&&!(!Oe.has(w)&&!/\.(?:cs|fs|vb)proj$/i.test(w)))try{let k=await _.readFile(b,"utf8"),$=So(b,k,h),S=t$1.artifactPath(b,i),I=await t$1.addProof({provider:this.id,artifact:S,absolutePath:b,pointer:"/",confidence:$.name?"high":"medium",detail:`${$.ecosystem} manifest`}),F=t$1.addEntity({kind:"package",key:`package:${i.id}:${$.ecosystem}:${$.name??"anonymous"}:${S}`,label:$.name??`${i.id}/${D(u.relative(i.root,b))}`,projectId:i.id,aliases:[w,...$.name?[$.name]:[]],attributes:{ecosystem:$.ecosystem,version:$.version,manifest:S,dependencies:$.dependencies,...$.metadata??{}},proofIds:[I]});t$1.addRelation({from:a,to:F,kind:"contains",proofIds:[I]});for(let O of $.dependencies.slice(0,500)){let T=t$1.addEntity({kind:"module",key:`dependency:${$.ecosystem}:${O}`,label:O,aliases:[O],attributes:{ecosystem:$.ecosystem,external:true},proofIds:[I]});t$1.addRelation({from:F,to:T,kind:"depends-on",trust:"authoritative",derivation:"authored",proofIds:[I]});}}catch{}}if(g){let b=[...t$1.entities.values()].filter(w=>w.kind==="package"&&w.projectId===i.id);for(let w of g.members){let R=t$1.artifactPath(u.join(i.root,w,"go.mod"),i),k=b.find($=>$.attributes.manifest===R);k&&t$1.addRelation({from:g.entityId,to:k.id,kind:"contains",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:[...new Set([g.proofId,...k.proofIds])]});}}if(Fo(t$1,i.id),p.size>0){let b=n.find(w=>/^\.env\.(?:example|sample|template)$/i.test(u.basename(w)));if(b){let w=await t$1.addProof({provider:this.id,artifact:t$1.artifactPath(b,i),absolutePath:b,detail:"Public environment template keys only; values are intentionally excluded"}),R=t$1.addEntity({kind:"environment",key:`environment:${i.id}:template`,label:`${i.id} environment contract`,projectId:i.id,attributes:{keys:[...p].sort(),valuesEmitted:false},proofIds:[w]});t$1.addRelation({from:a,to:R,kind:"configured-by",proofIds:[w]});}}if(f.length>0){let b=await t$1.addProof({provider:this.id,artifact:t$1.artifactPath(f[0],i),absolutePath:f[0],detail:`${f.length} test file(s) discovered`}),w=t$1.addEntity({kind:"test-suite",key:`tests:${i.id}`,label:`${i.id} tests`,projectId:i.id,attributes:{fileCount:f.length},proofIds:[b]});t$1.addRelation({from:w,to:a,kind:"tests",proofIds:[b]});let R=new Map;for(let k of f){if(!te.has(u.extname(k).toLowerCase()))continue;let $=U(k,i.runtime),S=R.get($)??[];S.push(k),R.set($,S);}for(let[k,$]of [...R].sort(([S],[I])=>S.localeCompare(I))){let S=await t$1.addProof({provider:this.id,artifact:t$1.artifactPath($[0],i),absolutePath:$[0],detail:`${$.length} ${k} test source file(s) discovered`}),I=t$1.addEntity({kind:"test-suite",key:`tests:${i.id}:${k}`,label:`${i.id} ${k} tests`,projectId:i.id,attributes:{fileCount:$.length,language:k},proofIds:[S]});t$1.addRelation({from:I,to:a,kind:"tests",proofIds:[S]});}}}}};function Me(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function gt(e){if(Array.isArray(e))return e.length;let t=C(e);return t?Object.keys(t).length:0}var To={id:"vscode-extension-manifest",version:"1.2.0",scanTier:"complete-inventory",async applicable(e){for(let t of e.projects){let s=(e.filesByProject.get(t.id)??[]).filter(o=>u.basename(o).toLowerCase()==="package.json");for(let o of s)try{let i=C(await _.readJson(o));if(P(C(i?.engines)?.vscode)||C(i?.contributes))return true}catch{}}return false},async run(e){for(let t of e.projects){let s=(e.filesByProject.get(t.id)??[]).filter(o=>u.basename(o).toLowerCase()==="package.json").sort((o,i)=>o.localeCompare(i));for(let o of s){let i=null;try{i=C(await _.readJson(o));}catch{continue}let n=C(i?.contributes),l=P(C(i?.engines)?.vscode);if(!l&&!n)continue;let c=u.dirname(o),r=u.resolve(c)===u.resolve(t.root),d=u.relative(t.root,c).split(u.sep).join("/"),a=P(i?.name)??(d&&d!=="."?d:t.id),p=e.state.artifactPath(o,t),f=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:"/",trust:"authoritative",derivation:"authored",confidence:"high",detail:`VS Code extension manifest for ${a}`}),v=e.state.addEntity({kind:"project",key:`project:${t.id}`,label:t.id,projectId:t.id}),g=r?e.state.addEntity({kind:"project",key:`project:${t.id}`,label:t.id,projectId:t.id,attributes:{vscodeExtension:true,vscodeEngine:l,extensionEntry:P(i?.main)??P(i?.browser),extensionKind:H(i?.extensionKind),activationEvents:H(i?.activationEvents),contributionCounts:Object.entries(n??{}).map(([F,O])=>`${F}:${gt(O)}`).sort()},proofIds:[f]}):e.state.addEntity({kind:"package",key:`vscode-extension:${t.id}:${d}`,label:a,projectId:t.id,attributes:{surface:"vscode-extension",extensionPath:d,manifest:p,vscodeEngine:l,extensionEntry:P(i?.main)??P(i?.browser),extensionKind:H(i?.extensionKind),activationEvents:H(i?.activationEvents),contributionCounts:Object.entries(n??{}).map(([F,O])=>`${F}:${gt(O)}`).sort()},proofIds:[f]});r||e.state.addRelation({from:v,to:g,kind:"contains",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:[f]});let h=Array.isArray(n?.commands)?n.commands:[],y=C(n?.menus),b=Object.values(y??{}).flatMap(F=>Array.isArray(F)?F:[]),w=Array.isArray(n?.keybindings)?n.keybindings:[];for(let[F,O]of h.entries()){let T=C(O),B=P(T?.command);if(!B)continue;let L=`/contributes/commands/${F}`,x=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:L,trust:"authoritative",derivation:"authored",confidence:"high",detail:`VS Code command ${B}`}),q=b.filter(K=>P(C(K)?.command)===B).length,N=w.filter(K=>P(C(K)?.command)===B).length,J=e.state.addEntity({kind:"api",key:`vscode-command:${t.id}:${B}`,label:B,projectId:t.id,aliases:[P(T?.title),P(T?.shortTitle)].filter(K=>!!K),attributes:{surface:"vscode-command",runtimeRegistrationRequired:false,title:P(T?.title),shortTitle:P(T?.shortTitle),category:P(T?.category),enablement:P(T?.enablement),icon:P(T?.icon),menuCount:q,keybindingCount:N,manifest:p,pointer:L},proofIds:[x]});e.state.addRelation({from:g,to:J,kind:"exposes",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:[x]});}let R=C(n?.viewsContainers),k=new Map;for(let[F,O]of Object.entries(R??{}))if(Array.isArray(O))for(let[T,B]of O.entries()){let L=C(B),x=P(L?.id);if(!x)continue;let q=`/contributes/viewsContainers/${Me(F)}/${T}`,N=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:q,trust:"authoritative",derivation:"authored",detail:`VS Code view container ${x}`}),J=e.state.addEntity({kind:"service",key:`vscode-view-container:${t.id}:${x}`,label:x,projectId:t.id,aliases:[P(L?.title)].filter(K=>!!K),attributes:{surface:"vscode-view-container",title:P(L?.title),location:F,icon:P(L?.icon),manifest:p,pointer:q},proofIds:[N]});k.set(x,J),e.state.addRelation({from:g,to:J,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[N]});}let $=C(n?.views);for(let[F,O]of Object.entries($??{}))if(Array.isArray(O))for(let[T,B]of O.entries()){let L=C(B),x=P(L?.id);if(!x)continue;let q=`/contributes/views/${Me(F)}/${T}`,N=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:q,trust:"authoritative",derivation:"authored",detail:`VS Code view ${x}`}),J=e.state.addEntity({kind:"service",key:`vscode-view:${t.id}:${x}`,label:x,projectId:t.id,aliases:[P(L?.name),P(L?.contextualTitle)].filter(K=>!!K),attributes:{surface:L?.type==="webview"?"vscode-webview":"vscode-view",name:P(L?.name),contextualTitle:P(L?.contextualTitle),containerId:F,viewType:P(L?.type)??"tree",manifest:p,pointer:q},proofIds:[N]});e.state.addRelation({from:k.get(F)??g,to:J,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[N]});}let S=Array.isArray(n?.configuration)?n.configuration:n?.configuration?[n.configuration]:[];for(let[F,O]of S.entries()){let T=C(O),B=C(T?.properties);for(let[L,x]of Object.entries(B??{})){let q=C(x),J=`${Array.isArray(n?.configuration)?`/contributes/configuration/${F}`:"/contributes/configuration"}/properties/${Me(L)}`,K=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:J,trust:"authoritative",derivation:"authored",detail:`VS Code configuration ${L}`}),me=e.state.addEntity({kind:"schema",key:`vscode-configuration:${t.id}:${L}`,label:L,projectId:t.id,attributes:{surface:"vscode-configuration",title:P(T?.title),type:P(q?.type),scope:P(q?.scope),description:P(q?.description)??P(q?.markdownDescription),manifest:p,pointer:J},proofIds:[K]});e.state.addRelation({from:g,to:me,kind:"configured-by",trust:"authoritative",derivation:"authored",proofIds:[K]});}}let I=Array.isArray(n?.chatParticipants)?n.chatParticipants:[];for(let[F,O]of I.entries()){let T=C(O),B=P(T?.id);if(!B)continue;let L=`/contributes/chatParticipants/${F}`,x=await e.state.addProof({provider:this.id,artifact:p,absolutePath:o,pointer:L,trust:"authoritative",derivation:"authored",detail:`VS Code chat participant ${B}`}),q=e.state.addEntity({kind:"api",key:`vscode-chat-participant:${t.id}:${B}`,label:B,projectId:t.id,aliases:[P(T?.name),P(T?.fullName)].filter(N=>!!N),attributes:{surface:"vscode-chat-participant",runtimeRegistrationRequired:false,name:P(T?.name),fullName:P(T?.fullName),description:P(T?.description),manifest:p,pointer:L},proofIds:[x]});e.state.addRelation({from:g,to:q,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[x]});}}}}};function ht(e,t){let s=[],o=false;for(let i of e.split(/\r?\n/)){let n=i.match(/^\s*\[([^\]]+)\]\s*(?:#.*)?$/)?.[1]?.trim();if(n){o=n===t;continue}if(!o||/^\s*(?:#|$)/.test(i))continue;let l=i.match(/^\s*(?:"([^"]+)"|'([^']+)'|([A-Za-z0-9_.-]+))\s*=\s*["']([^"']+)["']/),c=l?.[1]??l?.[2]??l?.[3],r=l?.[4];c&&r&&s.push([c,r]);}return s}var Mo={id:"python-project-manifest",version:"1.1.0",scanTier:"complete-inventory",async applicable(e){for(let t of e.projects){let s=(e.filesByProject.get(t.id)??[]).find(o=>u.dirname(o)===t.root&&u.basename(o).toLowerCase()==="pyproject.toml");if(s)try{if(ht(await _.readFile(s,"utf8"),"project.scripts").length>0)return true}catch{}}return false},async run(e){for(let t of e.projects){let s=(e.filesByProject.get(t.id)??[]).find(r=>u.dirname(r)===t.root&&u.basename(r).toLowerCase()==="pyproject.toml");if(!s)continue;let o=await _.readFile(s,"utf8"),i=ht(o,"project.scripts"),n=e.state.artifactPath(s,t),l=await e.state.addProof({provider:this.id,artifact:n,absolutePath:s,pointer:"/project",trust:"authoritative",derivation:"authored",detail:"Python project manifest"}),c=e.state.addEntity({kind:"project",key:`project:${t.id}`,label:t.id,projectId:t.id,attributes:{pythonProject:true,requiresPython:o.match(/^requires-python\s*=\s*["']([^"']+)["']/m)?.[1],buildBackend:o.match(/^build-backend\s*=\s*["']([^"']+)["']/m)?.[1],consoleScriptCount:i.length},proofIds:[l]});for(let[r,d]of i){let a=`/project/scripts/${r}`,p=await e.state.addProof({provider:this.id,artifact:n,absolutePath:s,pointer:a,trust:"authoritative",derivation:"authored",detail:`Python console script ${r}`}),f=e.state.addEntity({kind:"api",key:`python-console-script:${t.id}:${r}`,label:r,projectId:t.id,aliases:[d],attributes:{surface:"python-console-script",runtimeRegistrationRequired:false,entrypoint:d,manifest:n,pointer:a},proofIds:[p]});e.state.addRelation({from:c,to:f,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[p]});}}}},Oo={id:"source-language-inventory",version:"1.2.0",scanTier:"complete-inventory",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(s=>st.has(u.extname(s).toLowerCase())))},async run(e){for(let t of e.projects){let s=e.filesByProject.get(t.id)??[],o=e.inventoryByProject.get(t.id),i=(e.filesByProject.get(t.id)??[]).find(a=>/^rust-toolchain(?:\.toml)?$/i.test(u.basename(a))),n,l;if(i)try{n=Ro(await _.readFile(i,"utf8")),l=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(i,t),absolutePath:i,pointer:"/toolchain",derivation:"authored",trust:"authoritative",confidence:"high",detail:"Rust toolchain contract"});}catch{}let c=s.filter(a=>st.has(u.extname(a).toLowerCase())),r=new Map;for(let a of c){let p=U(a,t.runtime),f=r.get(p)??{files:[],production:[],tests:[],examples:[],generated:[],extensions:new Set};f.files.push(a),f.extensions.add(u.extname(a).toLowerCase()),ue(t.root,a)&&f.generated.push(a),Ke(t.root,a)?f.tests.push(a):Ne(t.root,a)?f.examples.push(a):f.production.push(a),r.set(p,f);}let d=E("project",`project:${t.id}`);for(let[a,p]of [...r].sort(([f],[v])=>f.localeCompare(v))){let f=[p.production[0],p.tests[0],p.examples[0],p.generated[0],p.files[0]].filter((b,w,R)=>!!b&&R.indexOf(b)===w),v=await Promise.all(f.map(b=>e.state.addProof({provider:this.id,artifact:e.state.artifactPath(b,t),absolutePath:b,derivation:"extracted",trust:"observed",confidence:"high",detail:`${a} source-language inventory evidence`}))),g=[...p.production.length>0?["production"]:[],...p.tests.length>0?["test"]:[],...p.examples.length>0?["example"]:[],...p.generated.length>0?["generated"]:[]],h=a==="rust"&&l?[...v,l]:v,y=e.state.addEntity({kind:"language",key:`language:${t.id}:${a}`,label:`${t.id} programming language: ${a}`,projectId:t.id,aliases:[a,`${a} source`,`${a} programming language`,"programming languages actually used"],attributes:{language:a,usage:"source-build-test",roles:g,fileCount:p.files.length,productionFileCount:p.production.length,testFileCount:p.tests.length,exampleFileCount:p.examples.length,generatedFileCount:p.generated.length,extensions:[...p.extensions].sort(),inventoryTruncated:o?.truncated??false,...a==="rust"&&n?{toolchainChannel:n.channel,toolchainProfile:n.profile,toolchainComponents:n.components,toolchainTargets:n.targets}:{}},proofIds:h});e.state.addRelation({from:d,to:y,kind:"uses-language",derivation:"extracted",trust:"observed",confidence:o?.truncated?"medium":"high",proofIds:h});}o?.truncated&&e.state.diagnostics.push({code:"graph.provider.source_language_inventory.limit_reached",severity:"warning",message:`Language inventory for ${t.id} reached the ${o.fileLimit}-file emergency bound. Counts are lower bounds.`,recommendation:"Increase inventoryFileLimitPerProject or split the repository into explicit project boundaries before treating language counts as complete."});}}},Bo={id:"source-structure",version:"1.0.0",scanTier:"adaptive-deep",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(s=>te.has(u.extname(s).toLowerCase())&&!ee(t.root,s)))},async run(e){for(let t of e.projects){let s=(e.deepFilesByProject.get(t.id)??[]).filter(f=>!ee(t.root,f)),o=e.filesByProject.get(t.id)??s,i=e.scanBudgetsByProject.get(t.id)?.sourceExtractionFileBudget??2e3,n=Math.min(1e5,Math.max(1e4,i*10)),l=o.filter(f=>te.has(u.extname(f).toLowerCase())&&!ee(t.root,f)),c=Ut(l,i,t.root),r=new Set(o.filter(f=>!ee(t.root,f)).map(f=>u.resolve(f))),d=new Map;await Promise.all(s.map(async f=>{try{let v=await _.stat(f);if(v.isFile()&&v.size<=2*1024*1024){let g=u.resolve(f);r.add(g),d.set(g,v.size);}}catch{}}));let a=0,p=0;for(let f of c){let v;try{if((await _.stat(f)).size>2*1024*1024)continue;v=await _.readFile(f,"utf8");}catch{continue}let g=Rt(f,v),h=e.state.artifactPath(f,t),y=await e.state.addProof({provider:this.id,artifact:h,absolutePath:f,derivation:"extracted",trust:"observed",confidence:"high",detail:`${U(f,t.runtime)} source file`}),b=e.state.addEntity({kind:"file",key:`file:${t.id}:${h}`,label:h,projectId:t.id,aliases:[u.basename(f)],attributes:{artifact:h,language:U(f,t.runtime),bytes:Buffer.byteLength(v),...ue(t.root,f)?{generated:true}:{}},proofIds:[y]});e.state.addRelation({from:E("project",`project:${t.id}`),to:b,kind:"contains",proofIds:[y]});let w=Te(g,po(f),250);for(let k of w){let $=await e.state.addProof({provider:this.id,artifact:h,absolutePath:f,line:k.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${k.detail}: ${k.name}`}),S=uo(f,k.name,r,t.root,k.detail);if(S){let I=e.state.artifactPath(S,t),F=E("file",`file:${t.id}:${I}`);if(!e.state.entities.has(F)){let O=await _.stat(S).catch(()=>null),T=await e.state.addProof({provider:this.id,artifact:I,...O?.isFile()&&O.size<=2*1024*1024?{absolutePath:S}:{},derivation:"extracted",trust:"observed",confidence:"high",detail:"Locally imported artifact resolved from the project inventory"}),B=e.state.addEntity({kind:"file",key:`file:${t.id}:${I}`,label:I,projectId:t.id,aliases:[u.basename(S)],attributes:{artifact:I,language:U(S,t.runtime),bytes:d.get(u.resolve(S))??(O?.isFile()?O.size:void 0)},proofIds:[T]});e.state.addRelation({from:E("project",`project:${t.id}`),to:B,kind:"contains",proofIds:[T]});}e.state.addRelation({from:b,to:F,kind:"imports",confidence:"high",proofIds:[$]});}else {let I=k.name.startsWith(".");I&&(p+=1);let F=U(f,t.runtime),O=!I&&(F==="javascript"||F==="typescript")?k.name.startsWith("@")?k.name.split("/").slice(0,2).join("/"):k.name.split("/")[0]:null,T=O?E("module",`dependency:npm:${O}`):null,B=T?e.state.entities.get(T):void 0,L=B?e.state.addEntity({kind:"module",key:B.identity.key,label:B.label,aliases:[...B.identity.aliases,k.name],attributes:B.attributes,proofIds:[...B.proofIds,$]}):e.state.addEntity({kind:"module",key:`module:${t.id}:${k.name}`,label:k.name,projectId:t.id,aliases:[k.name],attributes:{specifier:k.name,resolution:I?"unresolved-local":"external"},proofIds:[$]});e.state.addRelation({from:b,to:L,kind:"imports",confidence:I?"low":"medium",proofIds:[$]});}}if(a<n){let k=Te(g,Qt,Math.min(100,n-a));a+=k.length;for(let $ of k){let S=await e.state.addProof({provider:this.id,artifact:h,absolutePath:f,line:$.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${$.detail}: ${$.name}`}),I=e.state.addEntity({kind:"symbol",key:`symbol:${t.id}:${h}:${$.detail}:${$.name}`,label:$.name,projectId:t.id,attributes:{symbolKind:$.detail,language:U(f,t.runtime),...ue(t.root,f)?{generated:true}:{}},proofIds:[S]});e.state.addRelation({from:b,to:I,kind:"defines",confidence:"medium",proofIds:[S]});}}let R=t.framework!=="vscode-extension"&&t.kind!=="extension";for(let k of R?Te(g,ho,100):[]){let $=v.split(/\r?\n/)[k.line-1]??"";if(fo(f,$))continue;let S=$.match(/(?:@|\.|\[|^\s*)(get|post|put|delete|patch|options|head)/i)?.[1]?.toUpperCase()??"HTTP",I=await e.state.addProof({provider:this.id,artifact:h,absolutePath:f,line:k.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${S} ${k.name}`}),F=e.state.addEntity({kind:"endpoint",key:`source-endpoint:${t.id}:${h}:${S}:${k.name}`,label:`${S} ${k.name||"/"}`,projectId:t.id,attributes:{method:S,path:k.name||"/",source:h},proofIds:[I]});e.state.addRelation({from:b,to:F,kind:"defines",confidence:"medium",proofIds:[I]});}}c.length<l.length&&e.state.diagnostics.push({code:"graph.provider.source_structure.limit_reached",severity:"info",message:`Source extraction for ${t.id} sampled ${c.length} file(s) from ${l.length} complete-inventory source candidate(s).`,recommendation:"Use bounded graph search, evidence, and path queries for proof-backed retrieval; do not treat the sampled symbol inventory as exhaustive."}),a>=n&&e.state.diagnostics.push({code:"graph.provider.source_structure.symbol_limit_reached",severity:"info",message:`Symbol extraction for ${t.id} reached its adaptive ${n}-symbol budget across ${c.length} selected source file(s).`,recommendation:"Increase graphSourceBudget when a more exhaustive symbol inventory is worth the additional graph size and extraction cost."}),p>0&&e.state.diagnostics.push({code:"graph.provider.source_structure.unresolved_local_imports",severity:"warning",message:`${p} local import(s) in ${t.id} could not be resolved to an indexed source file.`,recommendation:"Check path aliases, generated sources, extension mapping, or provider limits before treating the import graph as complete."});}}},Lo={id:"source-symbol-binding",version:"1.0.0",scanTier:"derived",applicable(e){return [...e.state.entities.values()].some(t=>t.kind==="symbol")},async run(e){let t=0;for(let s of e.projects){let o=e.scanBudgetsByProject.get(s.id)?.sourceExtractionFileBudget??2e3,i=Math.min(1e5,Math.max(1e4,o*10)),n=0,l=[...e.state.entities.values()].filter(p=>p.projectId===s.id),c=l.filter(p=>p.kind==="file"),r=new Map(l.filter(p=>p.kind==="symbol").map(p=>[p.id,p])),d=new Map,a=new Map;for(let p of e.state.relations.values()){if(p.kind==="defines"&&r.has(p.to)){let f=d.get(p.from)??[];f.push(r.get(p.to)),d.set(p.from,f);}if(p.kind==="imports"){let f=e.state.entities.get(p.to);if(f?.kind!=="file"||f.projectId!==s.id)continue;let v=a.get(p.from)??new Set;v.add(p.to),a.set(p.from,v);}}for(let p of c){if(n>=i)break;let f=P(p.attributes.artifact);if(!f)continue;let v=f.startsWith(`${s.artifactPrefix}/`)?f.slice(s.artifactPrefix.length+1):f,g=u.resolve(s.root,...v.split("/")),h;try{let w=await _.stat(g);if(!w.isFile()||w.size>2*1024*1024)continue;h=Rt(g,await _.readFile(g,"utf8"));}catch{continue}let y=[...d.get(p.id)??[],...[...a.get(p.id)??[]].flatMap(w=>d.get(w)??[])],b=new Map;for(let w of y){if(w.label.length<3)continue;let R=b.get(w.label)??[];R.some(k=>k.id===w.id)||R.push(w),b.set(w.label,R);}for(let[w,R]of b){let k=w.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),$=new RegExp(`\\b${k}\\s*\\(`,"g"),S=[...h.matchAll($)];if(S.length===0)continue;if(R.length!==1){t+=S.length;continue}let I=R[0];for(let F of S.slice(0,20)){if(n>=i)break;let O=h.slice(0,F.index??0).split(/\r?\n/).length;if(I.proofIds.some(B=>e.state.proofs.get(B)?.line===O))continue;let T=await e.state.addProof({provider:this.id,artifact:f,absolutePath:g,line:O,derivation:"extracted",trust:"observed",confidence:"medium",detail:`Unambiguous local call to ${w}`});e.state.addRelation({from:p.id,to:I.id,kind:"calls",derivation:"extracted",trust:"observed",confidence:"medium",proofIds:[T]}),n+=1;}}}n>=i&&e.state.diagnostics.push({code:"graph.provider.source_symbol_binding.limit_reached",severity:"info",message:`Source call binding for ${s.id} reached its adaptive ${i}-relation budget.`,recommendation:"Increase graphSourceBudget or use compiler/language-server semantic evidence when more exhaustive call topology is required."});}t>0&&e.state.diagnostics.push({code:"graph.provider.source_symbol_binding.ambiguous_calls",severity:"info",message:`${t} call site(s) were left unbound because more than one proven local symbol matched.`,recommendation:"Provide compiler or language-server semantic evidence when exact overload or dynamic dispatch resolution is required."});}};function Wo(e){let o=e.slice(0,12e3).match(/^[\t ]*(?:\/\/|#|\/\*+|\*|<!--|--)[\t ]*(?:code generated by|generated from:|this file is autogenerated from:|@generated by)\s*(?:(?:\/\/|#|\*|--)[\t ]*)?[`"']?([^`"'\s;*,]+)/im)?.[1]?.replace(/^\.\//,"").replace(/[.,:]+$/,"")??"";return !o||!u.posix.basename(o.replace(/\\/g,"/"))?null:o}function xo(e,t){let s=0,o=null,i=false;for(let n=t;n<e.length;n+=1){let l=e[n];if(o){l===o&&!i&&(o=null),i=l==="\\"&&!i,l!=="\\"&&(i=false);continue}if(l==='"'){o=l;continue}if(l==="("&&(s+=1),l===")"&&(s-=1,s===0))return e.slice(t+1,n)}return null}function zo(e){let t=[],s=/(?<![A-Za-z0-9_:])(?:deno_core::)?extension!\s*\(/g;for(let o of e.matchAll(s)){let i=(o.index??0)+o[0].lastIndexOf("("),n=xo(e,i);if(!n)continue;let l=n.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*,/)?.[1];if(!l)continue;let c=[...new Set([...n.matchAll(/\bops\s*=\s*\[([\s\S]*?)\]/g)].flatMap(d=>[...d[1].matchAll(/\b(op_[A-Za-z0-9_]+)\b/g)].map(a=>a[1])))].sort(),r=[...new Set([...n.matchAll(/\b(?:esm|js|lazy_loaded_esm|lazy_loaded_js)\s*=\s*\[([\s\S]*?)\]/g)].flatMap(d=>[...d[1].matchAll(/["']([^"']+\.(?:[cm]?[jt]s|tsx?|jsx?))["']/g)].map(a=>a[1])))].sort();t.push({name:l,line:e.slice(0,o.index??0).split(/\r?\n/).length,operations:c,scripts:r});}return t}function vt(e,t){let s=e.indexOf(t);return s<0?void 0:e.slice(0,s).split(/\r?\n/).length}var Ko={id:"runtime-bridge-semantics",version:"1.0.0",scanTier:"adaptive-semantic",async applicable(e){for(let t of e.projects)for(let s of e.semanticFilesByProject.get(t.id)??[])if(!(u.extname(s).toLowerCase()!==".rs"||ee(t.root,s)))try{let o=await _.readFile(s,"utf8");if(/(?<![A-Za-z0-9_:])(?:deno_core::)?extension!\s*\(/.test(o))return true}catch{}return false},async run(e){for(let t of e.projects){let o=(e.semanticFilesByProject.get(t.id)??[]).filter(i=>u.extname(i).toLowerCase()===".rs"&&!ee(t.root,i));for(let i of o){let n="";try{if((await _.stat(i)).size>2*1024*1024)continue;n=await _.readFile(i,"utf8");}catch{continue}let l=zo(n);if(l.length===0)continue;let c=e.state.artifactPath(i,t),r=await e.state.addProof({provider:this.id,artifact:c,absolutePath:i,derivation:"extracted",trust:"observed",confidence:"high",detail:"Deno Core Rust extension declaration"}),d=e.state.addEntity({kind:"file",key:`file:${t.id}:${c}`,label:c,projectId:t.id,aliases:[u.basename(i)],attributes:{artifact:c,language:"rust",runtimeBridge:"deno-core"},proofIds:[r]});e.state.addRelation({from:E("project",`project:${t.id}`),to:d,kind:"contains",proofIds:[r]});for(let a of l){let p=await e.state.addProof({provider:this.id,artifact:c,absolutePath:i,line:a.line,derivation:"extracted",trust:"observed",confidence:"high",detail:`Deno Core extension ${a.name}`}),f=e.state.addEntity({kind:"protocol",key:`runtime-bridge:${t.id}:deno-core:${c}:${a.name}`,label:`${a.name} Rust JavaScript runtime bridge`,projectId:t.id,aliases:[a.name,`${a.name} cross-language bridge`,"Rust JavaScript TypeScript bridge"],attributes:{mechanism:"deno_core::extension!",languages:["javascript","rust","typescript"]},proofIds:[p]});e.state.addRelation({from:E("project",`project:${t.id}`),to:f,kind:"contains",proofIds:[p]}),e.state.addRelation({from:d,to:f,kind:"implements-protocol",proofIds:[p]});for(let g of ["rust","javascript","typescript"]){let h=E("language",`language:${t.id}:${g}`);e.state.entities.has(h)&&e.state.addRelation({from:f,to:h,kind:"uses-language",proofIds:[p]});}let v=new Map;for(let g of a.operations){let h=vt(n,g),y=await e.state.addProof({provider:this.id,artifact:c,absolutePath:i,...h?{line:h}:{},derivation:"extracted",trust:"observed",confidence:"high",detail:`Rust op2 bridge operation ${g}`}),b=e.state.addEntity({kind:"symbol",key:`symbol:${t.id}:${c}:function:${g}`,label:g,projectId:t.id,aliases:[`rust:${g}`,`javascript:${g}`],attributes:{symbolKind:"function",language:"rust",bridgeMechanism:"op2"},proofIds:[y]});v.set(g,b),e.state.addRelation({from:d,to:b,kind:"defines",proofIds:[y]}),e.state.addRelation({from:b,to:f,kind:"implements-protocol",proofIds:[y,p]});}for(let g of a.scripts){let h=u.resolve(u.dirname(i),g);if(!await _.pathExists(h))continue;let y="";try{y=await _.readFile(h,"utf8");}catch{continue}let b=e.state.artifactPath(h,t),w=await e.state.addProof({provider:this.id,artifact:b,absolutePath:h,derivation:"extracted",trust:"observed",confidence:"high",detail:`${a.name} JavaScript/TypeScript extension source`}),R=e.state.addEntity({kind:"file",key:`file:${t.id}:${b}`,label:b,projectId:t.id,aliases:[u.basename(h)],attributes:{artifact:b,language:U(h,t.runtime),runtimeBridge:"deno-core"},proofIds:[w]});e.state.addRelation({from:d,to:R,kind:"references",confidence:"high",proofIds:[p,w]}),e.state.addRelation({from:R,to:f,kind:"implements-protocol",proofIds:[w,p]});for(let[k,$]of v){let S=vt(y,k);if(!S)continue;let I=await e.state.addProof({provider:this.id,artifact:b,absolutePath:h,line:S,derivation:"extracted",trust:"observed",confidence:"high",detail:`JavaScript/TypeScript call to Rust operation ${k}`});e.state.addRelation({from:R,to:$,kind:"calls",confidence:"high",proofIds:[I,p]});}}}}}}},No=/^[A-Z][A-Za-z0-9_]{3,}$/,Go=new Set(["Client","Config","Context","Data","Error","Event","Message","Options","Request","Response","Result","Schema","Type","Value"]),Do={id:"polyglot-semantics",version:"1.1.0",scanTier:"adaptive-deep",applicable(e){return e.projects.some(t=>new Set((t.runtimeCandidates??[]).filter(o=>o&&o!=="unknown"&&o!=="generic")).size>1||d$1(t.root).polyglot)},async run(e){for(let t of e.projects){let s=E("project",`project:${t.id}`),o=e.deepFilesByProject.get(t.id)??[],i=d$1(t.root),n=[...e.state.entities.values()].filter(r=>r.kind==="package"&&r.projectId===t.id);for(let r of i.units){let d=r.runtime,a=u.resolve(t.root,r.manifest),p=e.state.artifactPath(a,t),f=n.find(b=>b.attributes.manifest===p),v=f?.proofIds??[await e.state.addProof({provider:this.id,artifact:p,absolutePath:a,derivation:"extracted",trust:"observed",confidence:"high",detail:`${d} runtime-unit manifest`})],g=e.state.artifactPath(u.dirname(a),t),h=Object.fromEntries(r.stages.map(b=>[b.stage,b.command])),y=e.state.addEntity({kind:"runtime-unit",key:`runtime-unit:${t.id}:${d}:${p}`,label:`${d}:${g}:${u.basename(a)}`,projectId:t.id,aliases:[d,g],attributes:{runtime:d,root:g,ecosystem:r.ecosystem,role:r.role,manifest:p,stages:Object.keys(h).sort(),orchestrationMode:"native-manifest"},proofIds:v});e.state.addRelation({from:s,to:y,kind:"contains",confidence:"high",proofIds:v}),f&&e.state.addRelation({from:y,to:f.id,kind:"configured-by",confidence:"high",proofIds:v});for(let b of r.stages){let{stage:w,command:R}=b,k=e.state.addEntity({kind:"lifecycle-stage",key:`lifecycle-stage:${t.id}:${d}:${p}:${w}`,label:`${w} \xB7 ${d}:${g}:${u.basename(a)}`,projectId:t.id,aliases:[`${d}:${w}`,w],attributes:{stage:w,command:R,runtime:d,workingDirectory:g,commandConfidence:b.confidence,preflight:b.preflight},proofIds:v});e.state.addRelation({from:y,to:k,kind:"contains",confidence:"high",proofIds:v});}}for(let r of o.filter(d=>te.has(u.extname(d).toLowerCase()))){let d="";try{d=await _.readFile(r,"utf8");}catch{continue}let a=Wo(d);if(!a)continue;let p=e.state.artifactPath(r,t),f=E("file",`file:${t.id}:${p}`);if(!e.state.entities.has(f))continue;let v=await e.state.addProof({provider:this.id,artifact:p,absolutePath:r,line:1,derivation:"extracted",trust:"observed",confidence:"high",detail:`Generated from ${a}`}),g=e.state.entities.get(f);g&&e.state.addEntity({kind:"file",key:g.identity.key,label:g.label,projectId:t.id,aliases:g.identity.aliases,attributes:{...g.attributes,generated:true},proofIds:[...g.proofIds,v]});let h=[...e.state.relations.values()].filter(k=>k.kind==="defines"&&k.from===f).map(k=>e.state.entities.get(k.to)).filter(k=>k?.kind==="symbol");for(let k of h)e.state.addEntity({kind:"symbol",key:k.identity.key,label:k.label,projectId:t.id,aliases:k.identity.aliases,attributes:{...k.attributes,generated:true},proofIds:[...k.proofIds,v]});let y=a.replace(/^\.\//,"").replace(/[.,:]$/,""),w=[u.resolve(t.root,y),u.resolve(u.dirname(r),y)].find(k=>o.includes(k));if(w){let k=e.state.artifactPath(w,t),$=E("file",`file:${t.id}:${k}`);if(e.state.entities.has($)){e.state.addRelation({from:f,to:$,kind:"generated-by",derivation:"extracted",trust:"observed",confidence:"high",proofIds:[v]});continue}}let R=e.state.addEntity({kind:"schema",key:`generation-source:${t.id}:${y}`,label:u.posix.basename(y),projectId:t.id,aliases:[y],attributes:{sourceReference:y,discoveredFromGeneratedHeader:true},proofIds:[v]});e.state.addRelation({from:f,to:R,kind:"generated-from",derivation:"extracted",trust:"observed",confidence:"medium",proofIds:[v]});}let l=[...e.state.entities.values()].filter(r=>r.projectId===t.id&&r.kind==="symbol"&&r.attributes.generated===true&&r.attributes.symbolKind==="type"&&typeof r.attributes.language=="string"&&No.test(r.label)&&!Go.has(r.label)),c=new Map;for(let r of l){let d=c.get(r.label)??[];d.push(r),c.set(r.label,d);}for(let[r,d]of [...c.entries()].filter(([,a])=>new Set(a.map(p=>p.attributes.language)).size>1).sort(([a],[p])=>a.localeCompare(p)).slice(0,1e3)){let a=d.sort((h,y)=>String(h.attributes.language).localeCompare(String(y.attributes.language))||h.id.localeCompare(y.id)),p=[...new Set(a.map(h=>String(h.attributes.language)))],f=[...new Set(a.flatMap(h=>h.proofIds))],v=e.state.addEntity({kind:"protocol",key:`protocol:${t.id}:${r}`,label:r,projectId:t.id,aliases:p.map(h=>`${h}:${r}`),attributes:{languages:p,implementationCount:a.length,source:"generated-types"},proofIds:f});for(let h of a)e.state.addRelation({from:h.id,to:v,kind:"implements-protocol",derivation:"inferred",trust:"corroborated",confidence:"high",proofIds:h.proofIds});let g=a[0];for(let h of a.slice(1))e.state.addRelation({from:h.id,to:g.id,kind:"equivalent-to",derivation:"inferred",trust:"corroborated",confidence:"high",proofIds:[...g.proofIds,...h.proofIds]});}}}},qo={id:"workspace-service-contract",version:"1.1.0",scanTier:"derived",applicable(e){return !!e.contract?.projects.some(t=>t.ports.length>0||t.contracts.owns.length>0||t.contracts.apis.length>0||t.contracts.publishes.length>0||t.contracts.consumes.length>0||t.contracts.env.length>0)},async run(e){if(!e.contract)return;let t$1=new Map;for(let s of [...e.contract.projects].sort((o,i)=>o.slug.localeCompare(i.slug))){let o=s.contracts;if(s.ports.length===0&&o.owns.length===0&&o.apis.length===0&&o.publishes.length===0&&o.consumes.length===0&&o.env.length===0)continue;let i=await e.state.addProof({provider:this.id,artifact:t.workspaceContract,absolutePath:u.join(e.workspacePath,".workspai","workspace.contract.json"),pointer:`/projects/${s.slug}/contracts`,trust:"authoritative",derivation:"authored",detail:`Service contract for ${s.slug}`}),n=E("project",`project:${s.slug}`),l=e.state.addEntity({kind:"service",key:`contract-service:${s.slug}`,label:s.slug,projectId:s.slug,attributes:{ports:s.ports.map(c=>`${c.protocol}:${c.port}`),owns:[...o.owns].sort(),environmentKeys:[...o.env].sort()},proofIds:[i]});e.state.addRelation({from:n,to:l,kind:"implements",trust:"authoritative",derivation:"authored",proofIds:[i]});for(let c of [...o.apis].sort((r,d)=>r.name.localeCompare(d.name))){let r=e.state.addEntity({kind:"api",key:`contract-api:${s.slug}:${c.name}:${c.basePath}`,label:c.name,projectId:s.slug,attributes:{basePath:c.basePath,runtimeRegistrationRequired:true},proofIds:[i]});e.state.addRelation({from:l,to:r,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[i]});}for(let c of [...o.publishes,...o.consumes].sort())t$1.has(c)||t$1.set(c,e.state.addEntity({kind:"queue",key:`event:${c}`,label:c,attributes:{protocol:"workspace-event"},proofIds:[i]}));for(let c of [...o.publishes].sort()){let r=t$1.get(c);r&&e.state.addRelation({from:l,to:r,kind:"publishes",trust:"authoritative",derivation:"authored",proofIds:[i]});}for(let c of [...o.consumes].sort()){let r=t$1.get(c);r&&e.state.addRelation({from:l,to:r,kind:"consumes",trust:"authoritative",derivation:"authored",proofIds:[i]});}}}},Zo={id:"openapi",version:"1.1.0",scanTier:"complete-inventory",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some($e))},async run(e){for(let t of e.projects){let s=(e.filesByProject.get(t.id)??[]).filter($e);for(let o of s){let i;try{i=await ae(o);}catch(n){e.state.diagnostics.push({code:"graph.provider.openapi.parse_failed",severity:"warning",message:`Could not parse ${e.state.artifactPath(o,t)}: ${n instanceof Error?n.message:String(n)}`});continue}for(let n of i){if(!("openapi"in n)&&!("swagger"in n))continue;let l=C(n.info),c=P(l?.title)??`${t.id} API`,r=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(o,t),absolutePath:o,pointer:"/info",trust:"authoritative",detail:"Authored OpenAPI contract"}),d=E("project",`project:${t.id}`),a=e.state.addEntity({kind:"api",key:`api:${t.id}:${c}`,label:c,projectId:t.id,attributes:{version:P(l?.version),specification:P(n.openapi)??P(n.swagger),runtimeRegistrationRequired:true},proofIds:[r]});e.state.addRelation({from:d,to:a,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[r]});let p=C(C(n.components)?.schemas)??C(n.definitions),f=new Map;for(let g of Object.keys(p??{}).sort()){let h=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(o,t),absolutePath:o,pointer:`/components/schemas/${g}`,trust:"authoritative",detail:`OpenAPI schema ${g}`}),y=e.state.addEntity({kind:"schema",key:`schema:${t.id}:${c}:${g}`,label:g,projectId:t.id,proofIds:[h]});f.set(g,y),e.state.addRelation({from:a,to:y,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[h]});}let v=C(n.paths);for(let g of Object.keys(v??{}).sort()){let h=C(v?.[g]);for(let y of Object.keys(h??{}).filter(b=>Zt.has(b.toLowerCase())).sort()){let b=C(h?.[y]),w=`/paths/${g.replace(/~/g,"~0").replace(/\//g,"~1")}/${y}`,R=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(o,t),absolutePath:o,pointer:w,trust:"authoritative",detail:`${y.toUpperCase()} ${g}`}),k=e.state.addEntity({kind:"endpoint",key:`endpoint:${t.id}:${c}:${y.toUpperCase()}:${g}`,label:`${y.toUpperCase()} ${g}`,projectId:t.id,aliases:H(b?.tags),attributes:{method:y.toUpperCase(),path:g,operationId:P(b?.operationId),deprecated:typeof b?.deprecated=="boolean"?b.deprecated:void 0,tags:H(b?.tags)},proofIds:[R]});e.state.addRelation({from:a,to:k,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[R]});let $=JSON.stringify(b??{});for(let[S,I]of f)$.includes(`/${S}`)&&e.state.addRelation({from:k,to:I,kind:"references",trust:"authoritative",derivation:"authored",proofIds:[R]});}}}}}}},xe=5e3;function ne(e,t){let s=D(u.relative(e,t)).toLowerCase(),o=0;return /(^|\/)(routes?|handlers?|controllers?|server|httpapi)(\/|$)/.test(s)&&(o+=100),/(?:^|\/)(?:api|routes?|handlers?|controllers?|server)(?:\.[a-z0-9]+)$/.test(s)&&(o+=80),/(^|\/)(src|app|lib)(\/|$)/.test(s)&&(o+=20),/(^|\/)(protocol|sdk|client)(\/|$)/.test(s)&&(o-=30),o}function Ho(e,t){for(let s of ['"',"'","`"]){let o=e.indexOf(`${s}${t}${s}`);if(o>=0)return o}return -1}var Jo={id:"authored-api-implementation-binding",version:"1.0.0",scanTier:"adaptive-semantic",applicable(e){return [...e.state.entities.values()].some(t=>t.kind==="endpoint"&&typeof t.attributes.operationId=="string")},async run(e){for(let t of e.projects){let s=new Map;for(let n of e.state.entities.values()){let l=n.attributes.operationId;if(n.kind!=="endpoint"||n.projectId!==t.id||typeof l!="string"||l.trim().length===0)continue;let c=s.get(l)??[];c.push(n),s.set(l,c);}if(s.size===0)continue;let o=(e.semanticFilesByProject.get(t.id)??[]).filter(n=>te.has(u.extname(n).toLowerCase())&&!ee(t.root,n)&&!ue(t.root,n)).sort((n,l)=>ne(t.root,l)-ne(t.root,n)||n.localeCompare(l)).slice(0,xe),i=new Map;for(let n of o){let l;try{let r=await _.stat(n);if(!r.isFile()||r.size>2*1024*1024)continue;l=await _.readFile(n,"utf8");}catch{continue}let c=ne(t.root,n);if(!(c<50))for(let r of s.keys()){let d=Ho(l,r);if(d<0)continue;let a=i.get(r);a&&(a.score>c||a.score===c&&a.file.localeCompare(n)<=0)||i.set(r,{file:n,contents:l,offset:d,score:c});}}for(let[n,l]of i){let c=e.state.artifactPath(l.file,t),r=l.contents.slice(0,l.offset).split(/\r?\n/).length,d=await e.state.addProof({provider:this.id,artifact:c,absolutePath:l.file,line:r,derivation:"extracted",trust:"observed",confidence:"high",detail:`Production handler binds OpenAPI operation ${n}`}),a=e.state.addEntity({kind:"file",key:`file:${t.id}:${c}`,label:c,projectId:t.id,aliases:[u.basename(l.file)],attributes:{artifact:c,language:U(l.file,t.runtime),bytes:Buffer.byteLength(l.contents)},proofIds:[d]});e.state.addRelation({from:E("project",`project:${t.id}`),to:a,kind:"contains",derivation:"extracted",trust:"observed",proofIds:[d]});for(let p of s.get(n)??[])e.state.addRelation({from:a,to:p.id,kind:"implements",derivation:"extracted",trust:"corroborated",confidence:"high",proofIds:[...p.proofIds,d]});}}}},Uo=8,Vo=/(?:^|[,{\n]\s*)["']?(?:routes?|upstreams?|virtualHosts?|pathPrefix)["']?\s*[:=]/im;function yt(e,t){let s=u.extname(e).toLowerCase();if(/\.(?:json|ya?ml|toml)$/i.test(e))return /(?:route|routing|gateway|proxy|ingress|server)/i.test(u.basename(e))?Vo.exec(t)?.index??-1:-1;let o=s===".py"?[/\b(?:include_router|add_api_route|mount)\s*\(/]:[".js",".jsx",".mjs",".cjs",".ts",".tsx",".mts",".cts"].includes(s)?[/\b(?:router|app)\.(?:use|route|register)\s*\(/,/\b(?:registerRoutes?|configureRoutes?)\s*\(/i,/\b(?:routeModule|routeMatcher|routesManifest|appPathsManifest)\b/]:s===".go"?[/\.\s*InstallAPIGroups?\s*\(/,/\.\s*registerResourceHandlers\s*\(/,/\b(?:registerRoutes?|configureRoutes?)\s*\(/i]:[".java",".kt",".kts",".scala",".cs",".fs",".fsx",".vb"].includes(s)?[/\b(?:RouterFunction|RequestMappingHandlerMapping|MapControllers|MapGroup)\s*[<(]/,/\b(?:registerRoutes?|configureRoutes?)\s*\(/i,/\bregister(?:Rest)?(?:Action|Handler)\s*\(/]:s===".rb"?[/\broutes\.draw\s+do\b/,/\bmount\s+(?:[A-Z][\w:]*|["'])/,/\b(?:resources?|namespace|scope)\s+[:"']/,/\b(?:get|post|put|patch|delete|match)\s+["']/]:[/\b(?:registerRoutes?|configureRoutes?)\s*\(/i];for(let i of o){let n=i.exec(t);if(n)return n.index}return -1}var Yo={id:"dynamic-api-registration-binding",version:"1.1.0",scanTier:"adaptive-semantic",applicable(e){return [...e.state.entities.values()].some(t=>t.kind==="api")?e.projects.some(t=>(e.semanticFilesByProject.get(t.id)??[]).filter(s=>(te.has(u.extname(s).toLowerCase())||/\.(?:json|ya?ml|toml)$/i.test(s))&&(ne(t.root,s)>=20||/\.(?:json|ya?ml|toml)$/i.test(s))&&!ee(t.root,s)&&!ue(t.root,s)&&!$e(s)).slice(0,xe).some(s=>{try{let o=_.statSync(s);return o.isFile()&&o.size<=2*1024*1024&&yt(s,_.readFileSync(s,"utf8"))>=0}catch{return false}})):false},async run(e){for(let t of e.projects){let s=[...e.state.entities.values()].filter(l=>l.kind==="api"&&l.projectId===t.id&&l.attributes.runtimeRegistrationRequired===true);if(s.length===0)continue;let o=(e.semanticFilesByProject.get(t.id)??[]).filter(l=>(te.has(u.extname(l).toLowerCase())||/\.(?:json|ya?ml|toml)$/i.test(l))&&!ee(t.root,l)&&!ue(t.root,l)&&!$e(l)&&(ne(t.root,l)>=20||/\.(?:json|ya?ml|toml)$/i.test(l))).sort((l,c)=>ne(t.root,c)-ne(t.root,l)||l.localeCompare(c)).slice(0,xe),i=0,n=Math.max(1,s.length*Uo);for(let l of o){if(i>=n)break;let c;try{let g=await _.stat(l);if(!g.isFile()||g.size>2*1024*1024)continue;c=await _.readFile(l,"utf8");}catch{continue}let r=yt(l,c);if(r<0)continue;let d=s.length===1?s:s.filter(g=>g.label.toLowerCase().split(/[^a-z0-9]+/).filter(h=>h.length>=4).some(h=>c.toLowerCase().includes(h)));if(d.length===0)continue;let a=e.state.artifactPath(l,t),p=await e.state.addProof({provider:this.id,artifact:a,absolutePath:l,line:c.slice(0,r).split(/\r?\n/).length,derivation:"extracted",trust:"observed",confidence:"high",detail:/\.(?:json|ya?ml|toml)$/i.test(l)?"Configuration-driven API topology registration":"Runtime-generated API topology registration"}),f=e.state.addEntity({kind:"file",key:`file:${t.id}:${a}`,label:a,projectId:t.id,aliases:[u.basename(l)],attributes:{artifact:a,language:U(l,t.runtime)},proofIds:[p]}),v=e.state.addEntity({kind:"runtime-unit",key:`dynamic-api-registration:${t.id}:${a}`,label:`${u.basename(l)} API registration`,projectId:t.id,attributes:{mechanism:/\.(?:json|ya?ml|toml)$/i.test(l)?"configuration-driven-routing":"runtime-generated-routing"},proofIds:[p]});e.state.addRelation({from:E("project",`project:${t.id}`),to:v,kind:"contains",derivation:"extracted",trust:"observed",proofIds:[p]}),e.state.addRelation({from:v,to:f,kind:"configured-by",derivation:"extracted",trust:"observed",proofIds:[p]});for(let g of d)e.state.addRelation({from:v,to:g.id,kind:"implements",derivation:"extracted",trust:"corroborated",confidence:"high",proofIds:[...g.proofIds,p]});i+=1;}}}};function Qo(e){let t=[],s=1;for(let r=0;r<e.length;){let d=e[r];if(d===`
|
|
7
|
-
`){s+=1,r+=1;continue}if(/\s|,/.test(d)){r+=1;continue}if(d==="#"){for(;r<e.length&&e[r]!==`
|
|
8
|
-
`;)r+=1;continue}if(e.startsWith('"""',r)){for(r+=3;r<e.length&&!e.startsWith('"""',r);)e[r]===`
|
|
9
|
-
`&&(s+=1),r+=1;r=Math.min(e.length,r+3);continue}if(d==='"'){r+=1;let p=false;for(;r<e.length;){let f=e[r];if(f===`
|
|
10
|
-
`&&(s+=1),f==='"'&&!p){r+=1;break}p=f==="\\"&&!p,f!=="\\"&&(p=false),r+=1;}continue}let a=e.slice(r).match(/^[_A-Za-z][_0-9A-Za-z]*/)?.[0];if(a){t.push({value:a,line:s}),r+=a.length;continue}t.push({value:d,line:s}),r+=1;}let o=new Set(["schema","scalar","type","interface","union","enum","input","directive"]),i=new Set(["query","mutation","subscription","fragment"]),n=[];t[0]?.value==="{"&&n.push({kind:"query",name:`anonymous-${t[0].line}`,line:t[0].line,extended:false});let l=0,c=false;for(let r=0;r<t.length;r+=1){let d=t[r];if(d.value==="}"){l=Math.max(0,l-1);continue}if(l===0&&d.value==="extend"){c=true;continue}if(l===0){let a=d.value;if(o.has(a)){let p=a==="schema"?"schema":a==="directive"?t[r+1]?.value==="@"?t[r+2]?.value:void 0:t[r+1]?.value;p&&/^[_A-Za-z][_0-9A-Za-z]*$/.test(p)&&n.push({kind:a,name:p,line:d.line,extended:c}),c=false;}else if(i.has(a)){let p=t[r+1]?.value,f=p&&/^[_A-Za-z][_0-9A-Za-z]*$/.test(p)?p:`anonymous-${d.line}`;n.push({kind:a,name:f,line:d.line,extended:false}),c=false;}else ["@","&","|"].includes(d.value)||(c=false);}d.value==="{"&&(l+=1);}return n}var Xo={id:"interface-contracts",version:"1.1.0",scanTier:"complete-inventory",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(rt))},async run(e){for(let t of e.projects){let s=(e.filesByProject.get(t.id)??[]).filter(rt);for(let o of s){let i=e.state.artifactPath(o,t),n=u.extname(o).toLowerCase();if(n===".graphql"||n===".gql"){let l=await _.readFile(o,"utf8"),c=Qo(l),r=c.filter(h=>["schema","scalar","type","interface","union","enum","input","directive"].includes(h.kind)),d=c.filter(h=>["query","mutation","subscription","fragment"].includes(h.kind)),a=await e.state.addProof({provider:this.id,artifact:i,absolutePath:o,trust:"authoritative",derivation:"authored",detail:r.length>0?"GraphQL schema contract":"GraphQL executable document"}),p=e.state.addEntity({kind:"file",key:`file:${t.id}:${i}`,label:i,projectId:t.id,aliases:[u.basename(o)],attributes:{artifact:i,language:"graphql",bytes:Buffer.byteLength(l),graphqlDocumentKind:r.length>0&&d.length>0?"mixed":r.length>0?"schema":"executable"},proofIds:[a]});e.state.addRelation({from:E("project",`project:${t.id}`),to:p,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[a]});let f=e.state.addEntity({kind:"protocol",key:"protocol:graphql",label:"GraphQL",aliases:["graphql"],attributes:{specification:"GraphQL"},proofIds:[a]}),g=r.some(h=>!h.extended&&(h.kind==="schema"||h.kind==="type"&&["Query","Mutation","Subscription"].includes(h.name)))?e.state.addEntity({kind:"api",key:`graphql-api:${t.id}`,label:`${t.id} GraphQL API`,projectId:t.id,attributes:{specification:"graphql",surface:"graphql-schema",runtimeRegistrationRequired:true},proofIds:[a]}):null;g&&(e.state.addRelation({from:E("project",`project:${t.id}`),to:g,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[a]}),e.state.addRelation({from:g,to:f,kind:"implements-protocol",trust:"authoritative",derivation:"authored",proofIds:[a]}));for(let h of r){let y=e.state.addEntity({kind:"schema",key:`graphql-schema:${t.id}:${i}:${h.kind}:${h.name}`,label:h.name,projectId:t.id,attributes:{specification:"graphql",definitionKind:h.kind,extended:h.extended,line:h.line},proofIds:[a]});e.state.addRelation({from:p,to:y,kind:"defines",trust:"authoritative",derivation:"authored",proofIds:[a]}),g&&e.state.addRelation({from:g,to:y,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[a]});}for(let h of d){let y=e.state.addEntity({kind:"symbol",key:`graphql-operation:${t.id}:${i}:${h.kind}:${h.name}`,label:h.name,projectId:t.id,attributes:{language:"graphql",symbolKind:h.kind==="fragment"?"fragment":"operation",operationKind:h.kind,artifact:i,line:h.line},proofIds:[a]});e.state.addRelation({from:p,to:y,kind:"defines",trust:"authoritative",derivation:"authored",proofIds:[a]}),e.state.addRelation({from:y,to:f,kind:"consumes",trust:"authoritative",derivation:"authored",proofIds:[a]});}continue}if(n===".proto"){let l=await _.readFile(o,"utf8"),c=Pe(l.replace(/\r\n/g,`
|
|
11
|
-
`).trim()),r=l.match(/^\s*package\s+([A-Za-z_][\w.]*)\s*;/m)?.[1],d=r||"unscoped",a=c.slice(0,16),p=await e.state.addProof({provider:this.id,artifact:i,absolutePath:o,trust:"authoritative",derivation:"authored",detail:"Protocol Buffers contract"});for(let f of l.matchAll(/^\s*service\s+([A-Za-z_]\w*)/gm)){let v=e.state.addEntity({kind:"api",key:`protobuf-service:${d}:${f[1]}:${a}`,label:f[1],aliases:[...r?[`${r}.${f[1]}`]:[],f[1]],attributes:{specification:"protobuf",package:r,definitionHash:c},proofIds:[p]});e.state.addRelation({from:E("project",`project:${t.id}`),to:v,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[p]});}for(let f of l.matchAll(/^\s*message\s+([A-Za-z_]\w*)/gm)){let v=e.state.addEntity({kind:"schema",key:`protobuf-message:${d}:${f[1]}:${a}`,label:f[1],aliases:[...r?[`${r}.${f[1]}`]:[],f[1]],attributes:{specification:"protobuf",package:r,definitionHash:c},proofIds:[p]});e.state.addRelation({from:E("project",`project:${t.id}`),to:v,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[p]});}continue}try{let l=(await ae(o))[0];if(!l||!("asyncapi"in l))continue;let c=await e.state.addProof({provider:this.id,artifact:i,absolutePath:o,trust:"authoritative",derivation:"authored",detail:"AsyncAPI contract"}),r=e.state.addEntity({kind:"api",key:`asyncapi:${t.id}:${i}`,label:P(C(l.info)?.title)??`${t.id} AsyncAPI`,projectId:t.id,attributes:{specification:`asyncapi ${String(l.asyncapi)}`,artifact:i,runtimeRegistrationRequired:true},proofIds:[c]});e.state.addRelation({from:E("project",`project:${t.id}`),to:r,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[c]});for(let d of Object.keys(C(l.channels)??{}).sort()){let a=e.state.addEntity({kind:"queue",key:`asyncapi-channel:${t.id}:${d}`,label:d,projectId:t.id,attributes:{protocol:"asyncapi"},proofIds:[c]});e.state.addRelation({from:r,to:a,kind:"publishes",trust:"authoritative",derivation:"authored",proofIds:[c]});}}catch{}}}}},es={id:"infrastructure-as-code",version:"1.0.0",scanTier:"complete-inventory",applicable(e){return fe(e).some(nt)},async run(e){let t=fe(e).filter(nt);for(let s of t){let o=ie(e.projects,s),i=o?.id??e.state.workspaceName,n=o?E("project",`project:${o.id}`):E("workspace",`workspace:${e.state.workspaceName}`),l=e.state.artifactPath(s,o),c=await _.readFile(s,"utf8"),r=await e.state.addProof({provider:this.id,artifact:l,absolutePath:s,trust:"authoritative",derivation:"authored",detail:"Infrastructure definition"});if(/^Dockerfile/i.test(u.basename(s))){let a=[...c.matchAll(/^\s*FROM\s+([^\s]+)(?:\s+AS\s+([^\s]+))?/gim)],p=e.state.addEntity({kind:"container",key:`dockerfile:${i}:${l}`,label:`${i} container image`,...o?{projectId:o.id}:{},attributes:{artifact:l,baseImages:a.map(f=>f[1])},proofIds:[r]});e.state.addRelation({from:n,to:p,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[r]});continue}if(/\.tf$/i.test(s)){for(let a of c.matchAll(/^\s*resource\s+["']([^"']+)["']\s+["']([^"']+)["']/gm)){let p=a[1],f=/(?:db|sql|rds|database)/i.test(p)?"database":/(?:queue|kafka|sqs|pubsub|servicebus)/i.test(p)?"queue":"deployment",v=e.state.addEntity({kind:f,key:`terraform:${i}:${p}:${a[2]}`,label:`${p}.${a[2]}`,...o?{projectId:o.id}:{},attributes:{resourceType:p,artifact:l},proofIds:[r]});e.state.addRelation({from:n,to:v,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[r]});}continue}let d=e.state.addEntity({kind:"deployment",key:`helm:${i}:${l}`,label:`${i} Helm chart`,...o?{projectId:o.id}:{},attributes:{artifact:l,format:"helm"},proofIds:[r]});e.state.addRelation({from:n,to:d,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[r]});}}};function bt(e){let t=e.toLowerCase();return /(?:postgres|mysql|mariadb|mongo|cassandra|cockroach|mssql|oracle)/.test(t)?"database":/(?:rabbitmq|kafka|nats|pulsar|activemq|redis)/.test(t)?"queue":"container"}function ts(e){if(!e)return;let t=new Set(["version","name","services","networks","volumes","configs","secrets"]),s=new Set(["image","build","command","entrypoint","ports","links","environment","volumes","depends_on","external_links"]),o=Object.entries(e).filter(([i,n])=>{if(t.has(i.toLowerCase()))return false;let l=C(n);return l?Object.keys(l).some(c=>s.has(c)):false});return o.length>0?Object.fromEntries(o):void 0}var os={id:"compose",version:"1.2.0",scanTier:"complete-inventory",async applicable(e){return (await dt(e)).length>0},async run(e){let t=[];for(let s of await dt(e)){let o;try{o=(await ae(s))[0];}catch(a){e.state.diagnostics.push({code:"graph.provider.compose.parse_failed",severity:"warning",message:`Could not parse ${e.state.artifactPath(s)}: ${a instanceof Error?a.message:String(a)}`});}let i=C(o?.services)??ts(o);if(!i)continue;let n=ie(e.projects,s),l=e.state.artifactPath(s,n),c=u.basename(s).toLowerCase().startsWith("docker-compose")?"docker-compose":"compose",r=`${n?.id??"workspace"}:${u.posix.dirname(l)}:${c}`,d=a=>`compose-service:${r}:${a}`;for(let a of Object.keys(i).sort()){let p=C(i[a]),f=p?.build,v=P(f)??P(C(f)?.context),g=v?ie(e.projects,u.resolve(u.dirname(s),v)):e.projects.find(I=>I.id.toLowerCase()===a.toLowerCase()||u.basename(I.path).toLowerCase()===a.toLowerCase())??n,h=await e.state.addProof({provider:this.id,artifact:l,absolutePath:s,pointer:`/services/${a}`,trust:"authoritative",derivation:"authored",detail:`Compose service ${a}`}),y=P(p?.image),b=d(a),w=e.state.entities.get(E("service",b)),R=Array.isArray(w?.attributes.ports)?w.attributes.ports.filter(I=>typeof I=="string"):[],k=Array.isArray(w?.attributes.networks)?w.attributes.networks.filter(I=>typeof I=="string"):[],$=Array.isArray(w?.attributes.environmentKeys)?w.attributes.environmentKeys.filter(I=>typeof I=="string"):[],S=e.state.addEntity({kind:"service",key:b,label:a,...g?.id||w?.projectId?{projectId:g?.id??w?.projectId}:{},attributes:{image:y??w?.attributes.image,ports:[...new Set([...R,...H(p?.ports).map(String)])].sort((I,F)=>I.localeCompare(F)),networks:[...new Set([...k,...H(p?.networks)])].sort((I,F)=>I.localeCompare(F)),environmentKeys:[...new Set([...$,...vo(p?.environment)])].sort((I,F)=>I.localeCompare(F))},proofIds:[...w?.proofIds??[],h],mergeArrayAttributes:["ports","networks","environmentKeys"]});if(g&&e.state.addRelation({from:E("project",`project:${g.id}`),to:S,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[h]}),y){let I=e.state.addEntity({kind:bt(y),key:`image:${y}`,label:y,...g?{projectId:g.id}:{},attributes:{image:y},proofIds:[h]});e.state.addRelation({from:S,to:I,kind:bt(y)==="container"?"runs-on":"depends-on",trust:"authoritative",derivation:"authored",proofIds:[h]});}}for(let a of Object.keys(i).sort()){let p=C(i[a]);for(let f of H(p?.depends_on)){let v=await e.state.addProof({provider:this.id,artifact:l,absolutePath:s,pointer:`/services/${a}/depends_on/${f}`,trust:"authoritative",derivation:"authored",detail:`${a} depends on ${f}`});t.push({from:E("service",d(a)),to:E("service",d(f)),proofId:v});}}}for(let s of t){if(!e.state.entities.has(s.from)||!e.state.entities.has(s.to)){e.state.proofs.delete(s.proofId);continue}e.state.addRelation({from:s.from,to:s.to,kind:"depends-on",trust:"authoritative",derivation:"authored",proofIds:[s.proofId]});}}},ss={id:"documentation",version:"1.0.0",scanTier:"complete-inventory",applicable(e){return fe(e).some(at)},async run(e){let t=new Set,s=[e.workspaceFiles,...e.projects.map(o=>e.filesByProject.get(o.id)??[])];for(let o of s){let i=o.filter(n=>at(n)&&!e.projects.some(l=>n.startsWith(`${l.root}${u.sep}`)&&ee(l.root,n)));for(let n of i){if(t.has(n))continue;t.add(n);let l=ie(e.projects,n),r=(await _.readFile(n,"utf8")).match(/^#\s+(.+)$/m)?.[1]?.trim()??u.basename(n),d=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(n,l),absolutePath:n,line:1,trust:"authoritative",derivation:"authored",detail:`Documentation: ${r}`}),a=e.state.addEntity({kind:"document",key:`document:${e.state.artifactPath(n,l)}`,label:r,...l?{projectId:l.id}:{},attributes:{artifact:e.state.artifactPath(n,l)},proofIds:[d]}),p=l?E("project",`project:${l.id}`):E("workspace",`workspace:${e.state.workspaceName}`);e.state.addRelation({from:a,to:p,kind:"documents",trust:"authoritative",derivation:"authored",proofIds:[d]});}}}},is={id:"kubernetes",version:"1.0.0",scanTier:"complete-inventory",async applicable(e){return (await ut(e)).length>0},async run(e){for(let t of await ut(e)){let s=ie(e.projects,t),o=s?E("project",`project:${s.id}`):E("workspace",`workspace:${e.state.workspaceName}`),i=await ae(t);for(let n=0;n<i.length;n+=1){let l=i[n],c=P(l.kind),r=C(l.metadata),d=P(r?.name);if(!c||!d)continue;let a=P(r?.namespace)??"default",p=/Deployment|StatefulSet|DaemonSet/i.test(c)?"deployment":/Service|Ingress/i.test(c)?"service":/ConfigMap|Secret/i.test(c)?"environment":"deployment",f=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,s),absolutePath:t,pointer:`/documents/${n}`,trust:"authoritative",derivation:"authored",detail:`${c} ${a}/${d}`}),v=e.state.addEntity({kind:p,key:`kubernetes:${c}:${a}:${d}`,label:`${c}/${d}`,...s?{projectId:s.id}:{},attributes:{resourceKind:c,namespace:a,secret:c==="Secret",keys:c==="Secret"||c==="ConfigMap"?Object.keys(C(l.data)??{}).sort():void 0},proofIds:[f]});e.state.addRelation({from:o,to:v,kind:p==="deployment"?"deploys":"contains",trust:"authoritative",derivation:"authored",proofIds:[f]});let g=e.state.addEntity({kind:"environment",key:`kubernetes-namespace:${a}`,label:`Kubernetes namespace ${a}`,attributes:{namespace:a},proofIds:[f]});e.state.addRelation({from:v,to:g,kind:"runs-on",trust:"authoritative",derivation:"authored",proofIds:[f]});}}}},rs={id:"ci-workflow",version:"1.0.0",scanTier:"complete-inventory",applicable(e){return pt(e).length>0},async run(e){let t=pt(e);for(let s of t){let o=ie(e.projects,s),i=e.state.artifactPath(s,o),n=u.basename(s)==="Jenkinsfile",l=D(u.relative(o?.root??e.workspacePath,s)),c=/^prow\/[^/]+\.(?:sh|py)$/i.test(l),r=u.basename(s),d=[],a=[];if(n||c){let v=await _.readFile(s,"utf8");n?d=[...v.matchAll(/\bstage\s*\(\s*["']([^"']+)["']/g)].map(g=>g[1]):(r=`${u.basename(s)} \xB7 Prow`,d=[u.basename(s).replace(/\.(?:sh|py)$/i,"")],a=["external-provider"]);}else {let v;try{v=(await ae(s))[0];}catch{continue}if(!v)continue;if(r=P(v.name)??r,/^\.gitlab-ci\./i.test(l)){let g=new Set(["stages","variables","workflow","include","default","image","services","cache","before_script","after_script"]);d=Object.keys(v).filter(h=>!h.startsWith(".")&&!g.has(h)).sort();}else d=[...new Set([...Object.keys(C(v.jobs)??{}),...Object.keys(C(C(v.workflows)?.jobs)??{}),...H(v.stages)])].sort();a=H(v.on);}d.length===0&&(d=["pipeline"]);let p=await e.state.addProof({provider:this.id,artifact:i,absolutePath:s,...!n&&!c?{pointer:"/jobs"}:{},trust:"authoritative",derivation:"authored",detail:"CI/CD workflow"}),f=e.state.addEntity({kind:"pipeline",key:`pipeline:${i}`,label:r,...o?{projectId:o.id}:{},attributes:{jobs:d,triggers:a,artifact:i},proofIds:[p]});e.state.addRelation({from:o?E("project",`project:${o.id}`):E("workspace",`workspace:${e.state.workspaceName}`),to:f,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[p]});}}},ns={id:"codeowners",version:"1.2.0",scanTier:"complete-inventory",async applicable(e){return (await lt(e)).length>0},async run(e){for(let t of await lt(e)){let s=ie(e.projects,t);if(u.basename(t)==="OWNERS"){let n=await ae(t);for(let l of n)for(let c of ["approvers","reviewers"]){let r=Array.isArray(l[c])?l[c]:[];for(let d=0;d<r.length;d+=1){let a=P(r[d]);if(!a)continue;let p=a.startsWith("@")?a:`@${a}`,f=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,s),absolutePath:t,pointer:`/${c}/${d}`,trust:"authoritative",derivation:"authored",detail:`${c}: ${p}`}),v=e.state.addEntity({kind:"owner",key:`owner:${p.toLowerCase()}`,label:p,aliases:[a,p],proofIds:[f]});e.state.addRelation({from:v,to:s?E("project",`project:${s.id}`):E("workspace",`workspace:${e.state.workspaceName}`),kind:"owns",trust:"authoritative",derivation:"authored",proofIds:[f]});}}continue}let i=(await _.readFile(t,"utf8")).split(/\r?\n/);for(let n=0;n<i.length;n+=1){let l=i[n].trim();if(!l||l.startsWith("#"))continue;let[c,...r]=l.split(/\s+/);for(let d of r.filter(a=>a.startsWith("@"))){let a=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,s),absolutePath:t,line:n+1,trust:"authoritative",derivation:"authored",detail:`${c} ${d}`}),p=e.state.addEntity({kind:"owner",key:`owner:${d.toLowerCase()}`,label:d,aliases:[d],proofIds:[a]}),f=e.projects.filter(g=>{let h=c.replace(/^\//,"").replace(/\*.*$/,""),y=u.dirname(t),b=[".github","docs"].includes(u.basename(y))?u.dirname(y):y,w=D(u.relative(b,g.root));return h&&(w==="."||w.startsWith(h.replace(/\/$/,""))||g.path.startsWith(h.replace(/\/$/,"")))}),v=f.length>0?f.map(g=>E("project",`project:${g.id}`)):s?[E("project",`project:${s.id}`)]:[E("workspace",`workspace:${e.state.workspaceName}`)];for(let g of v)e.state.addRelation({from:p,to:g,kind:"owns",trust:"authoritative",derivation:"authored",proofIds:[a]});}}}}},as={id:"architecture-decisions",version:"1.0.0",scanTier:"complete-inventory",applicable(e){return [{root:e.workspacePath,files:e.workspaceFiles},...e.projects.map(t=>({root:t.root,files:e.filesByProject.get(t.id)??[]}))].some(t=>t.files.some(s=>ct(t.root,s)))},async run(e){let t=new Set,s=[{root:e.workspacePath,files:e.workspaceFiles},...e.projects.map(o=>({root:o.root,files:e.filesByProject.get(o.id)??[]}))];for(let o of s){let i=o.files.filter(n=>ct(o.root,n));for(let n of i){if(t.has(n))continue;t.add(n);let l=ie(e.projects,n),c=await _.readFile(n,"utf8"),r=c.match(/^#\s+(.+)$/m)?.[1]?.trim()??u.basename(n,".md"),d=c.match(/^status\s*:\s*(.+)$/im)?.[1]?.trim(),a=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(n,l),absolutePath:n,line:1,trust:"authoritative",derivation:"authored",detail:`Architecture decision: ${r}`}),p=e.state.addEntity({kind:"decision",key:`decision:${e.state.artifactPath(n,l)}`,label:r,...l?{projectId:l.id}:{},attributes:{status:d,artifact:e.state.artifactPath(n,l)},proofIds:[a]}),f=l?E("project",`project:${l.id}`):E("workspace",`workspace:${e.state.workspaceName}`);e.state.addRelation({from:f,to:p,kind:"decided-by",trust:"authoritative",derivation:"authored",proofIds:[a]});}}}},kt=[_o,To,Mo,Oo,Bo,Lo,Ko,Do,qo,Zo,Xo,Jo,Yo,os,es,is,rs,ns,ss,as];function cs(e,t,s){let o=e.scanTier;if(!o)return;let i=t.projects;return i.length===0?[{scope:"workspace",scopeId:"workspace",tier:o,status:s==="skipped"?"not-applicable":"complete",eligibleFiles:t.workspaceFiles.length,suppliedFiles:o==="derived"?0:t.workspaceFiles.length,...o==="derived"?{}:{fileBudget:Math.max(t.workspaceFiles.length,1)},selectionStrategy:o==="derived"?"derived":"complete"}]:i.map(n=>{let l=t.inventoryByProject.get(n.id),c=t.scanBudgetsByProject.get(n.id),r=l?.eligibleFileCount??0;if(s==="skipped")return {scope:"project",scopeId:n.id,tier:o,status:"not-applicable",eligibleFiles:r,suppliedFiles:0,selectionStrategy:o==="derived"?"derived":"complete"};if(o==="derived")return {scope:"project",scopeId:n.id,tier:o,status:"complete",eligibleFiles:0,suppliedFiles:0,selectionStrategy:"derived"};let d=o==="complete-inventory"?t.filesByProject.get(n.id)?.length??0:o==="adaptive-semantic"?t.semanticFilesByProject.get(n.id)?.length??0:t.deepFilesByProject.get(n.id)?.length??0,a=o==="complete-inventory"?l?.fileLimit??Math.max(d,1):o==="adaptive-semantic"?c?.semanticFileBudget??Math.max(d,1):c?.deepFileBudget??Math.max(d,1),p=!!l?.truncated||d<r;return {scope:"project",scopeId:n.id,tier:o,status:p?"bounded":"complete",eligibleFiles:r,suppliedFiles:d,fileBudget:Math.max(a,1),selectionStrategy:o==="complete-inventory"?"complete":"component-language-round-robin-v1"}})}async function ds(e,t){for(let s of t.edges){let o=[];for(let i of s.evidence){let n=he(i.file);o.push(await e.addProof({provider:"project-topology",artifact:n,absolutePath:u.resolve(e.workspacePath,n),derivation:s.source==="inferred"?"inferred":"authored",trust:s.source==="inferred"?"observed":"authoritative",confidence:s.confidence,detail:i.detail??`${s.kind} relationship`}));}o.length===0&&o.push(await e.addProof({provider:"project-topology",artifact:p.model,derivation:"inferred",trust:"ambiguous",confidence:s.confidence,detail:`${s.kind} relationship without source locator`})),e.addRelation({from:E("project",`project:${s.from}`),to:E("project",`project:${s.to}`),kind:s.kind==="event-pub-sub"?"consumes":"depends-on",derivation:s.source==="inferred"?"inferred":"authored",trust:s.source==="inferred"?"observed":"authoritative",confidence:s.confidence,proofIds:o});}}function ls(e){let t=[...e.entities.values()].filter(o=>o.kind==="endpoint"),s=new Map;for(let o of t){let i=String(o.attributes.method??"").toUpperCase(),n=String(o.attributes.path??"");if(!o.projectId||!i||!n)continue;let l=`${o.projectId}\0${i}\0${n}`,c=s.get(l)??[];c.push(o),s.set(l,c);}for(let o of s.values()){if(o.length<2)continue;let i=o.find(n=>n.proofIds.some(l=>e.proofs.get(l)?.trust==="authoritative"));if(i)for(let n of o.filter(l=>l.id!==i.id))e.addRelation({from:n.id,to:i.id,kind:"implements",derivation:"extracted",trust:"corroborated",confidence:"high",proofIds:[...n.proofIds,...i.proofIds]});}}async function Fs(e){let t=u.resolve(e.workspacePath),s=e.now??new Date,o=e.projects.map(m=>{let j=m.absolutePath?u.resolve(m.absolutePath):u.resolve(t,m.path),M=u.relative(t,j),G=M.startsWith(`..${u.sep}`)||M===".."||u.isAbsolute(M);return {...m,root:j,artifactPrefix:G?`external/${m.id}`:D(M||m.id)}}).sort((m,j)=>m.id.localeCompare(j.id)),i$1=new We(t,s,e.workspace.name),n=be(e.inventoryFileLimitPerProject,"WORKSPAI_GRAPH_INVENTORY_LIMIT"),l=be(e.maxFilesPerProject,"WORKSPAI_GRAPH_DEEP_BUDGET"),c$1=be(e.semanticFilesPerProject,"WORKSPAI_GRAPH_SEMANTIC_BUDGET"),r=be(e.sourceFilesPerProject,"WORKSPAI_GRAPH_SOURCE_BUDGET"),d=Math.max(100,Math.min(n??zt,Kt)),a$1=new Map(await Promise.all(o.map(async m=>[m.id,await ve(m.root,d)]))),p=new Map(o.map(m=>[m.id,a$1.get(m.id)?.files??[]])),f=new Map(o.map(m=>{let j=a$1.get(m.id);return [m.id,Yt({eligibleFiles:j?.files.length??0,...l!==void 0?{deepOverride:l}:{},...c$1!==void 0?{semanticOverride:c$1}:{},...r!==void 0?{sourceOverride:r}:{}})]})),v=new Map(o.map(m=>{let j=a$1.get(m.id)?.files??[],M=f.get(m.id)?.deepFileBudget??j.length;return [m.id,we(j,M,m.root)]})),g=new Map(o.map(m=>{let j=a$1.get(m.id)?.files??[],M=f.get(m.id)?.semanticFileBudget??j.length;return [m.id,we(j,M,m.root)]})),h$1=await ve(t,d,o.map(m=>m.root)),y=h$1.files.filter(m=>!o.some(j=>m===j.root||m.startsWith(`${j.root}${u.sep}`))),b={...h$1,files:y,eligibleFileCount:h$1.eligibleFileCountExact&&!h$1.truncated?y.length:h$1.eligibleFileCount,truncated:h$1.truncated},w=await jo({workspacePath:t,projects:o,projectFileLimit:d,workspaceFileLimit:d,inventories:{workspaceInventory:b,projectInventories:a$1,scanBudgetsByProject:f}});for(let m of w.scopes.filter(j=>j.truncated))i$1.diagnostics.push({code:`graph.input.${m.kind}_file_limit_reached`,severity:"warning",message:`${m.kind==="project"?`Project ${m.id}`:"Workspace"} graph inventory reached the ${m.fileLimit}-file emergency bound. The persisted graph remains usable, but completeness claims must be bounded.`,recommendation:"Increase inventoryFileLimitPerProject for this scope or split the repository into explicit project boundaries before claiming complete source coverage."});let R=new Map(w.scopes.filter(m=>m.kind==="project").map(m=>[m.id,m.hash])),k=new Map((e.previousGraph?.source.inputs?.scopes??[]).filter(m=>m.kind==="project").map(m=>[m.id,m.hash])),$="1.4.0",S=new Map((e.previousGraph?.providers??[]).filter(m=>m.id!=="incremental-project-cache").map(m=>[m.id,m.version])),I=new Map((e.previousGraph?.providers??[]).map(m=>[m.id,m])),F=o.map(m=>u.resolve(m.root)),O=F.some((m,j)=>F.some((M,G)=>G!==j&&(M===m||M.startsWith(`${m}${u.sep}`)))),T=kt.every(m=>S.get(m.id)===m.version)&&I.get("incremental-project-cache")?.version===$,B=!O&&e.previousGraph?.workspace.name===e.workspace.name&&T&&R.size>0&&R.size===k.size&&[...R.keys()].every(m=>k.has(m)),L=new Map((e.previousGraph?.entities??[]).filter(m=>m.kind==="project"&&m.projectId).map(m=>[m.projectId,m])),x=new Map(o.map(m=>[m.id,m])),q=m=>{let j=L.get(m.id);if(!j)return false;let M=wt(m),G=Object.fromEntries(Object.keys(M).map(W=>[W,j.attributes[W]]));return c(G)===c(M)},N=new Set(B?[...R].filter(([m,j])=>k.get(m)===j&&x.has(m)&&q(x.get(m))).map(([m])=>m):[]),J=new Set(["vscode-extension-manifest","python-project-manifest","source-language-inventory","source-structure","source-symbol-binding","runtime-bridge-semantics","polyglot-semantics","workspace-service-contract","openapi","authored-api-implementation-binding","dynamic-api-registration-binding","interface-contracts","compose","infrastructure-as-code","kubernetes","ci-workflow","codeowners"]),K=o.filter(m=>!N.has(m.id)),me=[];if(e.previousGraph&&N.size>0){let m=e.previousGraph.entities.filter(A=>A.projectId&&N.has(A.projectId)),j=new Set(m.map(A=>A.id)),M=new Map(e.previousGraph.entities.map(A=>[A.id,A])),G=new Map(e.previousGraph.proofs.map(A=>[A.id,A])),W=new Set(j),V=true;for(;V;){V=false;for(let A of e.previousGraph.relations){let re=W.has(A.from),le=W.has(A.to);if(re===le)continue;let Se=re?A.to:A.from,Ae=M.get(Se);if(!Ae||Ae.projectId!==void 0)continue;[...Ae.proofIds,...A.proofIds].some(Ot=>{let Ve=G.get(Ot)?.provider;return Ve!==void 0&&J.has(Ve)})&&(W.add(Se),V=true);}}if(K.length===0)for(let A of e.previousGraph.entities)A.projectId===void 0&&A.proofIds.some(re=>{let le=G.get(re)?.provider;return le!==void 0&&J.has(le)})&&W.add(A.id);let z=new Set([...W].filter(A=>!j.has(A))),X=[...m,...e.previousGraph.entities.filter(A=>z.has(A.id))],Y=new Set(X.map(A=>A.id)),Q=e.previousGraph.relations.filter(A=>Y.has(A.from)&&Y.has(A.to));me=e.previousGraph.relations.filter(A=>{let re=Y.has(A.from),le=Y.has(A.to);return re===le?false:M.get(re?A.to:A.from)?.projectId===void 0});let ye=new Set([...X,...Q].flatMap(A=>A.proofIds));for(let A of e.previousGraph.proofs)ye.has(A.id)&&i$1.proofs.set(A.id,A);for(let A of X)i$1.entities.set(A.id,A);for(let A of Q)i$1.relations.set(A.id,A);i$1.providers.push({id:"incremental-project-cache",version:$,status:"passed",permission:"filesystem-read",discoveredEntities:X.length,discoveredRelations:Q.length,proofCount:ye.size,diagnostics:[`Reused ${N.size} unchanged project scope(s); rescanning ${K.length}.`]});}else i$1.providers.push({id:"incremental-project-cache",version:$,status:"skipped",permission:"filesystem-read",discoveredEntities:0,discoveredRelations:0,proofCount:0,diagnostics:[O?`Overlapping project boundaries require a full scan to preserve deterministic artifact ownership; scanning ${K.length}.`:`No compatible unchanged project scope was reused; scanning ${K.length}.`]});let Ce={workspacePath:t,projects:o,filesByProject:p,deepFilesByProject:v,semanticFilesByProject:g,inventoryByProject:a$1,scanBudgetsByProject:f,workspaceFiles:y,now:s,contract:e.contract??null,state:i$1},At={...Ce,projects:K};for(let m of kt){if(N.size>0&&K.length===0&&J.has(m.id)){let z=I.get(m.id);if(z){for(let X of z.diagnostics){let Y=e.previousGraph?.diagnostics.find(Q=>`${Q.code}: ${Q.message}`===X);Y&&!i$1.diagnostics.some(Q=>Q.code===Y.code&&Q.message===Y.message)&&i$1.diagnostics.push(Y);}i$1.providers.push({...z,diagnostics:[...new Set([...z.diagnostics,"Provider evidence reused from unchanged project scopes."])]});continue}}let j={entities:i$1.entities.size,relations:i$1.relations.size,proofs:i$1.proofs.size,diagnostics:i$1.diagnostics.length},M="passed",G=null;try{let z=N.size>0&&J.has(m.id)?At:Ce;if(!(m.applicable?await m.applicable(z):true))M="skipped";else {await m.run(z);let Y=i$1.entities.size-j.entities,Q=i$1.relations.size-j.relations,ye=i$1.proofs.size-j.proofs;Y===0&&Q===0&&ye===0?(M="partial",i$1.diagnostics.push({code:`graph.provider.${m.id}.empty_result`,severity:"warning",message:`${m.id} found an applicable source surface but produced no graph evidence.`,recommendation:"Inspect the matching source format or extend the provider before treating this graph dimension as complete."})):i$1.diagnostics.length>j.diagnostics&&(M="partial");}}catch(z){M="failed";let X=z instanceof Error?z.message:String(z);G=X,i$1.diagnostics.push({code:`graph.provider.${m.id}.failed`,severity:"warning",message:`${m.id} provider failed: ${X}`,recommendation:"Repair the referenced source artifact and rerun workspace graph emit."});}let W=i$1.diagnostics.slice(j.diagnostics).map(z=>`${z.code}: ${z.message}`);G&&W.length===0&&W.push(G);let V=cs(m,Ce,M);M==="passed"&&V?.some(z=>z.status==="bounded")&&(M="partial"),i$1.providers.push({id:m.id,version:m.version,status:M,permission:"filesystem-read",discoveredEntities:i$1.entities.size-j.entities,discoveredRelations:i$1.relations.size-j.relations,proofCount:i$1.proofs.size-j.proofs,diagnostics:W,...V?{inputCoverage:V}:{}});}if(e.previousGraph&&me.length>0){let m=new Map(e.previousGraph.proofs.map(W=>[W.id,W])),j=0,M=0;for(let W of me)if(!(!i$1.entities.has(W.from)||!i$1.entities.has(W.to))){i$1.relations.has(W.id)||(i$1.relations.set(W.id,W),j+=1);for(let V of W.proofIds){let z=m.get(V);z&&!i$1.proofs.has(V)&&(i$1.proofs.set(V,z),M+=1);}}let G=i$1.providers.find(W=>W.id==="incremental-project-cache");G&&(G.discoveredRelations+=j,G.proofCount+=M,G.diagnostics.push(`Restored ${j} reusable project-to-workspace relation(s) with ${M} additional proof(s).`));}ls(i$1),await ds(i$1,e.projectTopology);let ce=[...i$1.entities.values()].sort((m,j)=>m.id.localeCompare(j.id)),de=[...i$1.relations.values()].sort((m,j)=>m.id.localeCompare(j.id)),Ze=[...i$1.proofs.values()].sort((m,j)=>m.id.localeCompare(j.id)),Ft=ce.filter(m=>m.proofIds.length>0).length,_t=de.filter(m=>m.proofIds.length>0).length,Tt=i$1.providers.filter(m=>m.status!=="failed").length,Ee=e.projectTopology.diagnostics?.filter(m=>m.code==="graph.edges.missing").flatMap(m=>m.nodeIds??[])??[];Ee.length>0&&i$1.diagnostics.push({code:"graph.knowledge.project_relationships_unknown",severity:"warning",message:`${Ee.length} project(s) have no proven inter-project relationship. This is unknown topology, not proof of independence.`,entityIds:Ee.map(m=>E("project",`project:${m}`)),recommendation:"Author service contracts or add OpenAPI, Compose, Kubernetes, package or import evidence."});let He=h(ce,de),Je=w.scopes.filter(m=>!m.truncated).length,Ue=w.scopes.length-Je,Re=i$1.providers.reduce((m,j)=>(j.status==="failed"?m.failed+=1:j.status==="skipped"||j.inputCoverage?.every(M=>M.status==="not-applicable")?m.notApplicable+=1:j.status==="partial"||j.inputCoverage?.some(M=>M.status==="bounded")?m.bounded+=1:m.complete+=1,m),{complete:0,bounded:0,notApplicable:0,failed:0}),Mt=Ue>0||Re.bounded>0||Re.failed>0?"bounded":"complete";return {schemaVersion:a,generatedAt:s.toISOString(),source:{...e.source,inputs:w},workspace:e.workspace,projectTopology:e.projectTopology,entities:ce,relations:de,proofs:Ze,providers:[...i$1.providers].sort((m,j)=>m.id.localeCompare(j.id)),quality:{entityCount:ce.length,relationCount:de.length,proofCount:Ze.length,entityProofCoverageRatio:ce.length===0?1:Ft/ce.length,relationProofCoverageRatio:de.length===0?1:_t/de.length,providerSuccessRatio:i$1.providers.length===0?1:Tt/i$1.providers.length,conflictCount:i$1.diagnostics.filter(m=>m.code.includes("conflict")).length,unknownCount:i(i$1.diagnostics,He),bindingCoverage:He,completeness:{status:Mt,inventory:{scopeCount:w.scopes.length,completeScopes:Je,boundedScopes:Ue,eligibleFiles:w.scopes.reduce((m,j)=>m+(j.eligibleFileCount??j.fileCount),0),indexedFiles:w.scopes.reduce((m,j)=>m+j.fileCount,0),eligibleFileCountExact:w.scopes.every(m=>m.eligibleFileCountExact!==false)},providers:Re},portable:true,secretValuesEmitted:false},diagnostics:[...i$1.diagnostics].sort((m,j)=>m.code.localeCompare(j.code)||m.message.localeCompare(j.message))}}function _s(e,t){return E(e,t)}
|
|
12
|
-
export{Rs as a,Ss as b,jo as c,As as d,Fs as e,_s as f};
|
package/dist/doctor-LQ7FT6AZ.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export{d as DOCTOR_WORKSPACE_REPORT_PATH,q as applyEnvKeyAddFix,m as applyFileAppendFix,n as applyFileCopyFix,l as applyFileCreateFix,p as applyJsonEditFix,r as applyMakefileTargetFix,k as applyPackageScriptFix,i as assertOperationPathInsideProject,j as assertOperationPathInsideProjectResolved,h as buildRepairOperationIdentity,t as computeDoctorFixAwareExitCode,s as computeDoctorGateExitCode,o as decodeJsonPointerSegment,g as parseInternalRepairCommand,f as parsePackageScriptFix,e as resolveDoctorPolicyProfile,u as runDoctor}from'./chunk-T5NBSCVX.js';
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import {c}from'./chunk-3GO7BJ5J.js';import {c as c$1}from'./chunk-LPCWROQ3.js';import {a as a$3}from'./chunk-TZK2R6RD.js';import {g as g$1}from'./chunk-FRH7AIGY.js';import {u}from'./chunk-T5NBSCVX.js';import {c as c$3}from'./chunk-X7FYEKLI.js';import {a as a$2}from'./chunk-F6CTGVJA.js';import {f,e}from'./chunk-NSH7TTSV.js';import {a}from'./chunk-MGL6DBOR.js';import {g,a as a$1,h}from'./chunk-FE5R6EUV.js';import {p,t,s}from'./chunk-ODK4LCEL.js';import c$2 from'chalk';import d from'path';import G from'fs-extra';function L(s){return s===0?"pass":s===2?"warn":"fail"}async function _(s){try{let a=G.readJsonSync(s),i=a.policyProfile,t=c$3(a).filter(n=>n.status==="blocking").map(n=>`${n.projectName}: ${n.message}`);return {policyProfile:typeof i?.name=="string"?i.name:void 0,blockers:[...new Set(t)].slice(0,12)}}catch{return {blockers:[]}}}function j(s){return s.some(a=>a.status==="fail")?"blocked":s.some(a=>a.status==="warn")?"needs-attention":"ready"}function V(s,a){if(a)return 3;let i=s.some(n=>n.status==="fail"),t=s.some(n=>n.status==="warn");return i?1:t?2:0}function K(s,a){return s===2&&!a?0:s}async function J(s){let a=await g$1(s,true),i=false;try{let{syncWorkspaceContract:t}=await import('./workspace-contract-2V2BI6A3.js');await t({workspacePath:s}),i=true;}catch{i=false;}return {sync:a,contractSynced:i}}async function U(s$1={}){let a$4=d.resolve(s$1.workspacePath??process.cwd()),i=a(a$4);if(!i)throw new Error("No Workspai workspace found in current directory or parents");let t$1=[],n=[],u$1=false,m,w,g$1,h$1=Date.now();try{let{sync:e,contractSynced:r}=await J(i),o=e.workspaceFound&&(e.added.length>0||e.skipped>=0)||e.workspaceFound?"pass":"warn";t$1.push({name:"sync",status:o,durationMs:Date.now()-h$1,summary:e.workspaceFound?`registry sync complete (${e.added.length} added, ${e.skipped} existing)${r?", contract synced":""}`:"workspace not registered in global registry; contract sync attempted"}),e.workspaceFound||n.push("workspace registry entry missing \u2014 run workspai create workspace or register manually");}catch(e){u$1=true,t$1.push({name:"sync",status:"fail",durationMs:Date.now()-h$1,summary:`sync failed: ${e instanceof Error?e.message:String(e)}`}),n.push("workspace sync stage failed");}let P=Date.now();try{let e=await u({workspace:true,json:true,quiet:true,strict:s$1.strict===true,ci:s$1.strict!==true}),r=L(e),o=await g(i,p.doctor)??a$1(i,p.doctor),l=await _(o);t$1.push({name:"doctor",status:r,durationMs:Date.now()-P,summary:r==="pass"?"doctor workspace passed":r==="warn"?"doctor workspace reported warnings":"doctor workspace did not pass",exitCode:e,evidencePath:o,policyProfile:l.policyProfile,blockers:l.blockers}),r==="fail"?n.push(...l.blockers.length>0?l.blockers.map(O=>`doctor: ${O}`):["doctor workspace gate failed"]):r==="warn"&&n.push("doctor workspace reported warnings");}catch(e){u$1=true,t$1.push({name:"doctor",status:"fail",durationMs:Date.now()-P,summary:`doctor failed: ${e instanceof Error?e.message:String(e)}`}),n.push("doctor workspace stage failed");}if(s$1.skipAnalyze)t$1.push({name:"analyze",status:"skipped",durationMs:0,summary:"analyze stage skipped"});else {let e=Date.now();try{let r=await a$2({workspacePath:i,json:true,strict:s$1.strict===true});m=d.isAbsolute(r.enterpriseControls.evidencePath)?r.enterpriseControls.evidencePath:d.join(i,r.enterpriseControls.evidencePath);let o=r.summary.verdict==="blocked"?"fail":r.summary.verdict==="needs-attention"?"warn":"pass";t$1.push({name:"analyze",status:o,durationMs:Date.now()-e,summary:`analyze verdict: ${r.summary.verdict} (score ${r.summary.score}/100)`,evidencePath:m}),o==="fail"?n.push("analyze reported blocked verdict"):o==="warn"&&n.push("analyze reported needs-attention verdict");}catch(r){u$1=true,t$1.push({name:"analyze",status:"fail",durationMs:Date.now()-e,summary:`analyze failed: ${r instanceof Error?r.message:String(r)}`}),n.push("analyze stage failed");}}let k=Date.now();try{let e=await a$3({startPath:i,writeReport:true,skipVerify:s$1.skipVerify===true});w=e.evidencePath;let r=e.overallStatus==="pass"?"pass":e.overallStatus==="warn"?"warn":"fail";t$1.push({name:"readiness",status:r,durationMs:Date.now()-k,summary:`readiness overall: ${e.overallStatus}`,evidencePath:e.evidencePath}),r==="fail"?n.push(...e.blockingReasons.map(o=>`readiness: ${o}`)):r==="warn"&&n.push(...e.gates.filter(o=>o.status==="warn").map(o=>`readiness warn: ${o.gate}: ${o.summary}`));}catch(e){u$1=true,t$1.push({name:"readiness",status:"fail",durationMs:Date.now()-k,summary:`readiness failed: ${e instanceof Error?e.message:String(e)}`}),n.push("readiness stage failed");}if(s$1.skipAutopilot)t$1.push({name:"autopilot",status:"skipped",durationMs:0,summary:"autopilot stage skipped"});else {let e=Date.now(),r=s$1.autopilotMode??"audit";try{let o=await c({workspacePath:i,mode:r,json:true,skipPipelineStages:true});g$1=o.artifacts.reportPath;let l=o.summary.verdict==="approved"?"pass":o.summary.verdict==="partial"?"warn":"fail";t$1.push({name:"autopilot",status:l,durationMs:Date.now()-e,summary:`autopilot ${r}: ${o.summary.verdict}`,exitCode:o.summary.exitCode,evidencePath:g$1}),l!=="pass"&&n.push(...o.blockingReasons.slice(0,5));}catch(o){u$1=true,t$1.push({name:"autopilot",status:"fail",durationMs:Date.now()-e,summary:`autopilot failed: ${o instanceof Error?o.message:String(o)}`}),n.push("autopilot release stage failed");}}let N=j(t$1),S=V(t$1,u$1),I=d.join(i,t.pipelineLastRun),p$1={schemaVersion:s.pipelineLastRun.schemaVersion,generatedAt:new Date().toISOString(),workspacePath:i,summary:{verdict:N,exitCode:S,stagesPassed:t$1.filter(e=>e.status==="pass").length,stagesWarn:t$1.filter(e=>e.status==="warn").length,stagesFailed:t$1.filter(e=>e.status==="fail").length},stages:t$1,blockingReasons:[...new Set(n)],artifacts:{reportPath:I,analyzeEvidencePath:m,readinessEvidencePath:w,autopilotEvidencePath:g$1}};if(s$1.writeReport!==false){let e$1=f(p$1,{commandId:"workspacePipeline",exitCode:S,generatedAt:p$1.generatedAt,blockers:p$1.blockingReasons,runId:e()});await h(i,t.pipelineLastRun,e$1);}if(s$1.writeReport!==false&&s$1.noAgentSync!==true&&process.env.RAPIDKIT_NO_AGENT_SYNC!=="1"&&s$1.agentSync!==false)try{let{syncWorkspaceAgentGrounding:e}=await import('./workspace-agent-sync-6UYG33EQ.js'),r=await e({workspacePath:i,write:true,refreshContext:true,strict:false});p$1.agentGrounding={indexPath:r.indexPath,writtenFiles:r.writtenFiles,blockers:r.blockers};}catch{}return p$1}async function ue(s){let a;try{a=await U(s);}catch(t){let n=t instanceof Error?t.message:String(t);s.json?console.log(JSON.stringify(c$1({operation:"pipeline",code:"pipeline.failed",message:n}),null,2)):console.log(c$2.red(`Pipeline failed: ${n}`)),process.exit(1);}if(s.json)console.log(JSON.stringify(a,null,2));else {console.log(c$2.bold.cyan(`
|
|
2
|
-
\u{1F517} Workspai Governance Pipeline
|
|
3
|
-
`)),console.log(c$2.bold(`Workspace: ${c$2.cyan(d.basename(a.workspacePath))}`)),console.log(c$2.gray(`Path: ${a.workspacePath}`)),console.log(c$2.white(`Verdict: ${a.summary.verdict} Exit: ${a.summary.exitCode} (${a.summary.stagesPassed} pass / ${a.summary.stagesWarn} warn / ${a.summary.stagesFailed} fail)`));for(let t of a.stages){let n=t.status==="pass"?c$2.green("PASS"):t.status==="warn"?c$2.yellow("WARN"):t.status==="skipped"?c$2.gray("SKIP"):c$2.red("FAIL");console.log(` - ${t.name}: ${n} ${t.summary}`);}if(a.blockingReasons.length>0){console.log(c$2.bold(`
|
|
4
|
-
Blocking reasons:`));for(let t of a.blockingReasons.slice(0,8))console.log(c$2.gray(` \u2022 ${t}`));}console.log(c$2.gray(`
|
|
5
|
-
Evidence: ${a.artifacts.reportPath}`)),a.agentGrounding?.writtenFiles.length&&console.log(c$2.gray(`Agent grounding: ${a.agentGrounding.writtenFiles.length} file(s) synced (INDEX + AGENTS.md + Copilot/Cursor/Claude hooks)`));}let i=K(a.summary.exitCode,s.strict===true);i!==0&&process.exit(i);}export{K as pipelineProcessExitCode,U as runPipeline,ue as runPipelineCommand};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import {d}from'./chunk-HAZGSAKP.js';import {b}from'./chunk-K3O3HENC.js';import {c}from'./chunk-2BCECNIW.js';import {a as a$1}from'./chunk-TZK2R6RD.js';import {q as q$2}from'./chunk-4HQU2GQM.js';import {a as a$2}from'./chunk-GR6442P7.js';import {h,g}from'./chunk-FE5R6EUV.js';import {a}from'./chunk-AFIFZTOY.js';import {p,q as q$1}from'./chunk-ODK4LCEL.js';import {createHash}from'crypto';import u from'path';import v from'fs-extra';var W="workspai.verified-goal.v1",A=q$1.verifiedGoalStatus,V=p.verifiedGoalStatus,J="contracts/workspace-intelligence/verified-goal.v1.json",$="contracts/workspace-intelligence/verified-goal-status.v1.json";function H(e,t,a){if(t.kind==="workspace")return true;let r=u.resolve(e,a.path);return t.kind==="project"?a.name===t.projectName||r===u.resolve(t.projectPath):t.projects.some(i=>i.projectName===a.name||u.resolve(i.projectPath)===r)}function x(e){return Array.isArray(e)?`[${e.map(x).join(",")}]`:e&&typeof e=="object"?`{${Object.entries(e).sort(([t],[a])=>t.localeCompare(a)).map(([t,a])=>`${JSON.stringify(t)}:${x(a)}`).join(",")}}`:JSON.stringify(e)}function K(e){return createHash("sha256").update(x(e)).digest("hex")}var ae=["package.json","package-lock.json","npm-shrinkwrap.json","pnpm-lock.yaml","yarn.lock","bun.lock","bun.lockb","pyproject.toml","requirements.txt","Pipfile","Pipfile.lock","poetry.lock","uv.lock","go.mod","go.sum","Cargo.toml","Cargo.lock","pom.xml","build.gradle","build.gradle.kts","gradle.lockfile","packages.lock.json","Directory.Packages.props","composer.json","composer.lock","Gemfile","Gemfile.lock","mix.exs","mix.lock","deps.edn","project.clj","build.sbt"],re=new Set(ae.map(e=>e.toLowerCase())),se=new Set([".git",".hg",".svn",".workspai",".venv","venv",".tox",".mypy_cache",".pytest_cache","__pycache__","node_modules","vendor","pods","dist","build","out","target","bin","obj","coverage",".coverage",".next",".nuxt",".svelte-kit"]),F=1e5;function ne(e){return re.has(e.toLowerCase())||/\.(?:csproj|fsproj|vbproj)$/i.test(e)}async function ie(e){let t=[e],a=[],r=0;for(;t.length>0;){let i=t.shift();if(i===void 0)break;let o=await v.readdir(i,{withFileTypes:true});if(o.sort((n,s)=>n.name.localeCompare(s.name)),r+=o.length,r>F)throw new Error(`Dependency safety baseline exceeded ${F} filesystem entries under ${e}. Narrow the project boundary before creating this goal.`);for(let n of o){let s=u.join(i,n.name);if(n.isDirectory()){!se.has(n.name.toLowerCase())&&!a$2(n.name)&&t.push(s);continue}n.isFile()&&ne(n.name)&&a.push(s);}}return a}function oe(e){return /^(?:package\.json|package-lock\.json|npm-shrinkwrap\.json|pnpm-lock\.yaml|yarn\.lock|bun\.lockb?)$/i.test(e)?"node":/^(?:pyproject\.toml|requirements\.txt|Pipfile(?:\.lock)?|poetry\.lock|uv\.lock)$/i.test(e)?"python":/^go\.(?:mod|sum)$/i.test(e)?"go":/^Cargo\.(?:toml|lock)$/i.test(e)?"rust":/^(?:pom\.xml|build\.gradle(?:\.kts)?|gradle\.lockfile)$/i.test(e)?"jvm":/^(?:Directory\.Packages\.props|packages\.lock\.json)$/i.test(e)?"dotnet":/^composer\.(?:json|lock)$/i.test(e)?"php":/^Gemfile(?:\.lock)?$/i.test(e)?"ruby":/^mix\.(?:exs|lock)$/i.test(e)?"elixir":/^(?:deps\.edn|project\.clj)$/i.test(e)?"clojure":/^build\.sbt$/i.test(e)?"scala":/\.(?:csproj|fsproj|vbproj)$/i.test(e)?"dotnet":"unknown"}function z(e){try{let t=JSON.parse(e),a={};for(let r of ["dependencies","devDependencies","peerDependencies","optionalDependencies"]){let i=t[r];if(!(!i||typeof i!="object"||Array.isArray(i)))for(let[o,n]of Object.entries(i))typeof n=="string"&&(a[`${r}:${o}`]=n);}return a}catch{return}}async function U(e,t){let r=(await q$2({workspacePath:e,includeAbsolutePaths:true})).projects.filter(o=>H(e,t,o)),i=new Map;for(let o of r){let n=u.resolve(e,o.path),s=await ie(n);for(let c of s){let g=u.basename(c),f=await v.readFile(c,"utf8"),p=u.relative(e,c).split(u.sep).join("/");i.set(p,{path:p,ecosystem:oe(g),sha256:createHash("sha256").update(f).digest("hex"),...g==="package.json"?{dependencies:z(f)??{}}:{}});}}return {manifests:[...i.values()].sort((o,n)=>o.path.localeCompare(n.path))}}function O(e){let a=e.replace(/^(?:workspace:|npm:[^@]+@)/,"").match(/(?:^|[^\d])(\d+)(?:\.\d+)?(?:\.\d+)?/);return a?Number(a[1]):null}function S(e){return /(?:^|\/)(?:package-lock\.json|npm-shrinkwrap\.json|pnpm-lock\.yaml|yarn\.lock|bun\.lockb?|poetry\.lock|uv\.lock|Pipfile\.lock|go\.sum|Cargo\.lock|gradle\.lockfile|packages\.lock\.json|composer\.lock|Gemfile\.lock|mix\.lock)$/i.test(e)}async function ce(e){let t=e.dependencySafetyBaseline;if(!t)return k({id:"change-policy",label:"Change safety policy",status:"missing",expected:"dependency manifest safety baseline",actual:"baseline unavailable"});let a=[],r=await U(e.workspace.path,e.scope),i=new Map(r.manifests.map(s=>[s.path,s])),o=new Map(t.manifests.map(s=>[s.path,s])),n=new Set;for(let s of t.manifests){let c=i.get(s.path);(!c||c.sha256!==s.sha256)&&n.add(s.path);}for(let s of r.manifests)o.has(s.path)||n.add(s.path);for(let s of r.manifests)!o.has(s.path)&&!S(s.path)&&a.push(`${s.path} was added after the safety baseline`);for(let s of t.manifests){let c=i.get(s.path);if(!c){a.push(`${s.path} was removed`);continue}if(c.sha256===s.sha256)continue;if(s.dependencies){let p=await v.readFile(u.join(e.workspace.path,s.path),"utf8"),m=z(p);if(!m){a.push(`${s.path} is not valid dependency JSON`);continue}for(let[d,l]of Object.entries(s.dependencies)){let h=m[d];if(!h){a.push(`${d.replace(/^[^:]+:/,"")} was removed`);continue}if(h===l)continue;let G=O(l),R=O(h);(G===null||R===null||G!==R||/(?:latest|\*)/i.test(h))&&a.push(`${d.replace(/^[^:]+:/,"")} changed outside its proven major range (${l} \u2192 ${h})`);}continue}if(S(s.path))continue;let g=u.posix.dirname(s.path);[...i.values()].some(p=>{let m=u.posix.dirname(p.path);return p.ecosystem===s.ecosystem&&(m===g||g.startsWith(`${m}/`))&&S(p.path)&&n.has(p.path)})||a.push(`${s.path} changed without a matching reconciled ${s.ecosystem} lockfile`);}return k({id:"change-policy",label:"Change safety policy",status:a.length===0?"passed":"blocked",expected:"no force, removal, unbounded, or major dependency changes",actual:a.length===0?"manifest changes are within proven bounds":a.join("; ")})}function E(e,t){if(!/^[a-z0-9][a-z0-9._-]{7,95}$/i.test(t))throw new Error(`Invalid verified goal id: ${t}`);let a=u.join(e,".workspai","goals",t);return {directory:a,goal:u.join(a,"goal.json"),status:u.join(a,"status.json"),latestReport:u.join(e,V)}}function le(e){return {workspacePath:u.resolve(e.workspace.path),kind:e.kind,scope:e.scope,target:e.criteria.kind==="test-coverage"?e.criteria.minimumPercent:null,...e.criteria.kind==="test-coverage"&&e.criteria.runtime?{runtime:e.criteria.runtime}:{},constraints:e.constraints}}async function C(e,t){await v.ensureDir(u.dirname(e));let a=`${e}.${process.pid}.${Date.now()}.tmp`;await v.writeJson(a,t,{spaces:2}),await v.rename(a,e);}async function ue(e,t){let a=t?.trim();if(!a||a==="workspace")return {scope:{kind:"workspace"}};let r=a.startsWith("projects:")?"projects:":a.startsWith("project:")&&a.slice(8).includes(",")?"project:":null,i=a.startsWith("project:")?a.slice(8).trim():r?a.slice(r.length).trim():a;if(!i)throw new Error("Project goal scope must name a project.");let o=await q$2({workspacePath:e,includeAbsolutePaths:true});if(r){let g=i.split(",").map(p=>p.trim()).filter(Boolean);if(g.length<2||new Set(g).size!==g.length)throw new Error("A project-set goal scope must name at least two unique projects.");return {scope:{kind:"project-set",projects:g.map(p=>{let m=o.projects.filter(d=>d.name===p||d.path===p);if(m.length!==1)throw new Error(m.length===0?`Project goal scope was not found: ${p}`:`Project goal scope is ambiguous: ${p}`);return m[0]}).map(p=>({projectName:p.name,projectPath:u.resolve(e,p.path)})).sort((p,m)=>p.projectName.localeCompare(m.projectName))}}}let n=o.projects.filter(g=>{let f=u.resolve(e,g.path);return g.name===i||g.path===i||f===u.resolve(i)});if(n.length!==1)throw new Error(n.length===0?`Project goal scope was not found: ${i}`:`Project goal scope is ambiguous: ${i}`);let s=n[0],c=u.resolve(e,s.path);return {project:s,scope:{kind:"project",projectName:s.name,projectPath:c}}}function Y(e,t,a){return e===null?"unavailable":a==="minimum"?e>=t?"satisfied":"unsatisfied":e<=t?"satisfied":"unsatisfied"}async function X(e){if(!e)return null;try{let t=await v.readJson(e);return t&&typeof t=="object"&&!Array.isArray(t)?t:null}catch{return null}}function de(e){return Array.isArray(e.projects)?e.projects.filter(t=>!!t&&typeof t=="object"&&!Array.isArray(t)):e.project&&typeof e.project=="object"&&!Array.isArray(e.project)?[e.project]:[]}function pe(e){let t=e.dependencyAudit;return t&&typeof t=="object"&&!Array.isArray(t)?t:null}async function Q(e,t){let a=await g(e,p.doctor),r=await X(a);if(!r)return {measuredAt:new Date().toISOString(),value:null,target:0,unit:"blocking-vulnerabilities",status:"unavailable",evidencePaths:[],message:"Fresh Doctor dependency evidence is not available."};let i=de(r).filter(c=>{if(t.kind==="workspace")return true;let g=typeof c.name=="string"?c.name:typeof c.projectName=="string"?c.projectName:"",f=typeof c.path=="string"?u.resolve(c.path):typeof c.projectPath=="string"?u.resolve(c.projectPath):"";return t.kind==="project"?g===t.projectName||f===u.resolve(t.projectPath):t.projects.some(p=>p.projectName===g||u.resolve(p.projectPath)===f)}),o=i.map(pe).filter(c=>c!==null),n=o.map(c=>c.blockingFindingCount).filter(c=>Number.isInteger(c)&&Number(c)>=0),s=i.length>0&&n.length===i.length?n.reduce((c,g)=>c+g,0):null;return {measuredAt:(()=>{let c=o.map(g=>g.generatedAt).filter(g=>typeof g=="string").sort();return c[c.length-1]??new Date().toISOString()})(),value:s,target:0,unit:"blocking-vulnerabilities",status:Y(s,0,"maximum"),evidencePaths:a?[a]:[],message:s===null?"Doctor did not publish complete dependency audit counts for the selected scope.":`${s} blocking dependency vulnerability finding(s) remain.`}}async function Z(e){let t=await a$1({startPath:e,writeReport:false}),a=t.gates.filter(i=>i.status==="pass").length,r=t.gates.length;return {measuredAt:t.generatedAt,value:a,target:r,unit:"gates",status:t.overallStatus==="pass"?"satisfied":"unsatisfied",evidencePaths:[...new Set(t.gates.map(i=>i.evidencePath).filter(i=>typeof i=="string"))],message:t.overallStatus==="pass"?"All release readiness gates pass.":`${r-a} release readiness gate(s) still require work.`}}async function B(e){let t=await d({projectPath:e.projectPath,target:e.target,run:e.run,runtime:e.runtime}),r=t.metrics[t.target.metric]?.percent??null;return {executionStatus:t.status,measurement:{measuredAt:t.generatedAt,value:r,target:e.target,unit:"percent",status:Y(r,e.target,"minimum"),evidencePaths:[t.artifactPaths.project],message:t.status==="failed"?"The runtime-native coverage test command failed.":r===null?"Machine-readable coverage evidence is unavailable.":`${t.target.metric} coverage is ${r}% (target ${e.target}%).`}}}async function ee(e){if(e.scope.kind==="project"){if(!e.scope.projectPath)throw new Error("Coverage goal project scope does not have a project path.");return B({projectPath:e.scope.projectPath,target:e.target,run:e.run,runtime:e.runtime})}let t=await q$2({workspacePath:e.workspacePath,includeAbsolutePaths:true});if(t.projects.length===0)return {executionStatus:"unavailable",measurement:{measuredAt:new Date().toISOString(),value:null,target:e.target,unit:"percent",status:"unavailable",evidencePaths:[],message:"The workspace does not contain a registered project to measure."}};let a=t.projects.filter(l=>H(e.workspacePath,e.scope,l)),r=e.runtime,i=r?a.filter(l=>l.runtimeCandidates.includes(r)):a;if(i.length===0)return {executionStatus:"unavailable",measurement:{measuredAt:new Date().toISOString(),value:null,target:e.target,unit:"percent",status:"unavailable",evidencePaths:[],message:`The selected scope does not contain the ${e.runtime} coverage runtime.`}};let o=[];for(let l of i)o.push({projectName:l.name,result:await B({projectPath:u.resolve(e.workspacePath,l.path),target:e.target,run:e.run,runtime:e.runtime})});let n=o.filter(l=>l.result.executionStatus==="failed"),s=o.filter(l=>l.result.measurement.status==="unavailable"),c=o.filter(l=>l.result.measurement.status==="unsatisfied"),g=o.map(l=>l.result.measurement.value).filter(l=>l!==null),f=g.length===o.length&&g.length>0?Math.min(...g):null,p=n.length>0?"failed":s.length>0?"unavailable":c.length>0?"below-target":"passed",m=o.map(l=>l.result.measurement.measuredAt).sort(),d=[...n.map(l=>`${l.projectName}: coverage command failed`),...s.map(l=>`${l.projectName}: coverage unavailable`),...c.map(l=>`${l.projectName}: ${l.result.measurement.value??"unknown"}%`)];return {executionStatus:p,measurement:{measuredAt:m[m.length-1]??new Date().toISOString(),value:f,target:e.target,unit:"percent",status:p==="passed"?"satisfied":p==="below-target"?"unsatisfied":"unavailable",evidencePaths:[...new Set(o.flatMap(l=>l.result.measurement.evidencePaths))],message:p==="passed"?`Every registered project has at least ${e.target}% test coverage.`:`Workspace coverage is not verified: ${d.join("; ")}.`}}}function ge(e){let t=e.scope.kind==="project"?`project ${e.scope.projectName??"selected project"}`:e.scope.kind==="project-set"?`projects ${e.scope.projects.map(a=>a.projectName).join(", ")}`:"workspace";return e.kind==="release-readiness"?`Prepare the ${t} for release.`:e.kind==="dependency-security"?`Resolve blocking dependency vulnerabilities in the ${t} without unsafe changes.`:`Raise ${e.runtime?`${e.runtime} `:""}${t} test coverage to ${e.target??80}% without breaking its build.`}function me(e,t,a){return e==="release-readiness"?{kind:e,readiness:"pass",workspaceVerify:"ready"}:e==="dependency-security"?{kind:e,maximumBlockingVulnerabilities:0,requireFreshAudit:true}:{kind:e,metric:"auto",minimumPercent:t,...a?{runtime:a}:{}}}async function fe(e){return e.kind==="release-readiness"?Z(e.workspacePath):e.kind==="dependency-security"?Q(e.workspacePath,e.scope):(await ee({workspacePath:e.workspacePath,scope:e.scope,target:e.target,run:false,runtime:e.runtime})).measurement}async function Ee(e){let t=u.resolve(e.workspacePath),a$1=Math.max(0,Math.min(100,Math.round(e.target??80))),{scope:r}=await ue(t,e.scope),i={workspacePath:u.resolve(t),kind:e.kind,scope:r,target:e.kind==="test-coverage"?a$1:null,...e.kind==="test-coverage"&&e.runtime?{runtime:e.runtime}:{},constraints:{allowBreakingChanges:e.allowBreakingChanges===true,allowForce:e.allowForce===true,requireBuild:e.requireBuild!==false,requireTests:e.requireTests!==false}},o=K(i),n=`goal-${e.kind}-${o.slice(0,16)}`,s=E(t,n);if(await v.pathExists(s.goal)){let{goal:m,status:d}=await te(t,n);if(m.fingerprint===o)return {goal:m,status:d,resumed:d.state!=="verified"}}let c=new Date().toISOString(),g=await fe({workspacePath:t,kind:e.kind,scope:r,target:a$1,runtime:e.runtime}),f={schemaVersion:W,id:n,fingerprint:o,createdAt:c,updatedAt:c,workspace:{name:u.basename(t),path:t},scope:r,kind:e.kind,summary:ge({kind:e.kind,scope:r,target:a$1,runtime:e.runtime}),constraints:i.constraints,criteria:me(e.kind,a$1,e.runtime),baseline:g,...e.kind==="dependency-security"?{dependencySafetyBaseline:await U(t,r)}:{},artifactPaths:{goal:s.goal,status:s.status,latestReport:s.latestReport}},p={schemaVersion:A,goalId:n,goalFingerprint:o,workspacePath:t,updatedAt:c,state:"planned",attempt:0,progress:g,checks:[],blockingReasons:[],evidencePaths:g.evidencePaths,nextActions:e.kind==="test-coverage"?["Add focused tests for the lowest-coverage source paths.","Run verified goal checks."]:e.kind==="dependency-security"?["Inspect the fresh project dependency audit.","Apply only compatible non-force dependency repairs.","Reconcile the lockfile, test, build, and verify again."]:["Inspect the current remediation plan and failing release gates.","Repair the next causal blocker, then verify again."],artifactPath:s.status};return a(f,J,"Verified goal"),a(p,$,"Verified goal status"),await C(s.goal,f),await C(s.status,p),await h(t,V,p),{goal:f,status:p,resumed:false}}async function te(e,t){let a$1=E(u.resolve(e),t),r=await v.readJson(a$1.goal),i=await v.readJson(a$1.status);a(r,J,"Verified goal"),a(i,$,"Verified goal status");let o=u.resolve(e),n=u.resolve(r.artifactPaths.goal)===u.resolve(a$1.goal)&&u.resolve(r.artifactPaths.status)===u.resolve(a$1.status)&&u.resolve(r.artifactPaths.latestReport)===u.resolve(a$1.latestReport);if(r.schemaVersion!==W||i.schemaVersion!==A||r.id!==i.goalId||r.fingerprint!==i.goalFingerprint||r.fingerprint!==K(le(r))||u.resolve(r.workspace.path)!==o||u.resolve(i.workspacePath)!==o||!n)throw new Error(`Verified goal artifacts are inconsistent: ${t}`);return {goal:r,status:i}}function k(e){return {...e,message:e.message??`${e.label}: ${e.actual}; expected ${e.expected}.`}}async function q(e){let t=[],a=e.goal.scope.kind==="project"?[`project:${e.goal.scope.projectName}`]:e.goal.scope.kind==="project-set"?e.goal.scope.projects.map(r=>`project:${r.projectName}`):[void 0];for(let r of ["test","build"]){if(r==="test"&&e.includeTests===false)continue;if(!(r==="test"?e.goal.constraints.requireTests:e.goal.constraints.requireBuild)){t.push(k({id:r,label:`${r} validation`,status:"skipped",expected:"not required",actual:"skipped by goal contract"}));continue}if(!e.run){t.push(k({id:r,label:`${r} validation`,status:"missing",expected:"fresh passed evidence",actual:"execution disabled"}));continue}let o=false;for(let n of a){let s=await b({workspacePath:e.goal.workspace.path,stage:r,scope:n,parallel:false,continueOnError:false,strict:true,json:true,enforceGates:false}),c=n?.replace(/^project:/,"");if(t.push(k({id:c?`${r}:${c}`:r,label:c?`${r} validation \xB7 ${c}`:`${r} validation`,status:s.summary.exitCode===0?"passed":"failed",expected:"exit 0",actual:`exit ${s.summary.exitCode}`,evidencePath:u.join(e.goal.workspace.path,".workspai","reports","workspace-run-last.json")})),s.summary.exitCode!==0){o=true;break}}if(o)break}return t}async function Ge(e){let t=u.resolve(e.workspacePath),{goal:a$1,status:r}=await te(t,e.goalId),i=e.run!==false,o=[],n;if(i&&e.runIntelligence!==false){let d=await c({workspacePath:t,strict:true,agent:"generic"}),l=d.exitCode===0||d.exitCode===2,h=a$1.kind==="release-readiness";o.push(k({id:"workspace-intelligence-chain",label:"Workspace Intelligence chain",status:d.exitCode===0||d.exitCode===2&&!h?"passed":d.exitCode===2?"blocked":"failed",expected:"passed",actual:d.exitCode===2&&l&&!h?`${d.status}; canonical evidence refreshed for goal-scoped verification`:d.status,evidencePath:u.join(t,p.intelligenceRun)}));}if(a$1.kind==="release-readiness"){n=await Z(t),o.push(k({id:"release-readiness",label:"Release readiness",status:n.status==="satisfied"?"passed":"blocked",expected:"all gates pass",actual:n.message,evidencePath:u.join(t,p.readiness)}));let d=await g(t,p.verify),l=await X(d),h=l?.summary&&typeof l.summary=="object"&&!Array.isArray(l.summary)?String(l.summary.verdict??"missing"):"missing";o.push(k({id:"workspace-verify",label:"Workspace verification",status:h==="ready"?"passed":h==="missing"?"missing":"blocked",expected:"ready",actual:h,evidencePath:u.join(t,p.verify)}));}else if(a$1.kind==="dependency-security")n=await Q(t,a$1.scope),o.push(k({id:"dependency-audit",label:"Dependency security audit",status:n.status==="satisfied"?"passed":n.status==="unavailable"?"missing":"blocked",expected:"0 blocking vulnerabilities",actual:n.message,evidencePath:n.evidencePaths[0]})),o.push(a$1.constraints.allowBreakingChanges||a$1.constraints.allowForce?k({id:"change-policy",label:"Change safety policy",status:"blocked",expected:"breaking and force changes disabled",actual:`allowBreakingChanges=${a$1.constraints.allowBreakingChanges}, allowForce=${a$1.constraints.allowForce}`}):await ce(a$1)),n.status==="satisfied"&&o.push(...await q({goal:a$1,run:i}));else {let d=a$1.criteria.kind==="test-coverage"?a$1.criteria.minimumPercent:a$1.baseline.target;if(d===null)throw new Error("Coverage goal does not have a valid target.");let l=await ee({workspacePath:t,scope:a$1.scope,target:d,run:i,runtime:a$1.criteria.kind==="test-coverage"?a$1.criteria.runtime:void 0});n=l.measurement,o.push(k({id:"coverage",label:"Test coverage",status:n.status==="satisfied"?"passed":n.status==="unavailable"?"missing":"blocked",expected:`at least ${d}%`,actual:n.message,evidencePath:n.evidencePaths[0]})),o.push(k({id:"test",label:"Coverage test execution",status:l.executionStatus==="failed"?"failed":l.executionStatus==="unavailable"?"missing":"passed",expected:"runtime-native coverage test command completed",actual:l.executionStatus==="failed"?"coverage test command failed":l.executionStatus==="unavailable"?"coverage execution evidence unavailable":"coverage evidence produced by the test runner",evidencePath:n.evidencePaths[0]})),n.status==="satisfied"&&o.push(...await q({goal:a$1,run:i,includeTests:false}));}let s=o.filter(d=>d.status==="blocked"||d.status==="failed"||d.status==="missing").map(d=>d.message),c$1=[...new Set([...n.evidencePaths,...o.map(d=>d.evidencePath).filter(d=>typeof d=="string")])],g$1=n.status==="satisfied"&&o.every(d=>d.status==="passed"||d.status==="skipped"),f=E(t,a$1.id),p$1=g$1?[]:a$1.kind==="test-coverage"?["Inspect low-coverage files from the coverage artifact.","Add focused tests and verify again."]:a$1.kind==="dependency-security"?["Use fresh audit candidates and compatible package-manager repairs.","Reconcile lockfiles before running verified goal checks again."]:["Repair the first blocking readiness gate and verify the goal again."],m={schemaVersion:A,goalId:a$1.id,goalFingerprint:a$1.fingerprint,workspacePath:t,updatedAt:new Date().toISOString(),state:g$1?"verified":o.some(d=>d.status==="failed")?"failed":"blocked",attempt:r.attempt+1,progress:n,checks:o,blockingReasons:s,evidencePaths:c$1,nextActions:p$1,artifactPath:f.status};return a(m,$,"Verified goal status"),await C(f.status,m),await h(t,V,m),m}export{V as VERIFIED_GOAL_LAST_RUN_REPORT_PATH,W as VERIFIED_GOAL_SCHEMA_VERSION,A as VERIFIED_GOAL_STATUS_SCHEMA_VERSION,Ee as planVerifiedGoal,te as readVerifiedGoal,Ge as verifyVerifiedGoal};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export{a as WORKSPACE_GRAPH_TOKEN_EFFICIENCY_SCHEMA_VERSION,b as buildWorkspaceGraphTokenEfficiencyReport}from'./chunk-TSYDTKXO.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export{a as readWorkspaceKnowledgeGraphSnapshot}from'./chunk-D3N2WFDV.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export{d as createNpmWorkspaceMarker,e as isValidWorkspaceMarker,a as readWorkspaceMarker,c as updateWorkspaceMetadata,b as writeWorkspaceMarker}from'./chunk-2LIVMG5C.js';
|