workspai 0.50.0 → 0.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +126 -497
- package/contracts/create-planner-capabilities.v1.json +10 -1
- package/contracts/extension-cli-compatibility.v1.json +1 -1
- package/dist/analyze-4H33PAUB.js +1 -0
- package/dist/{artifact-remediation-plan-ICN3KOFG.js → artifact-remediation-plan-TQ6KTTXD.js} +1 -1
- package/dist/autopilot-release-BHZYM5KX.js +1 -0
- package/dist/chunk-3D2PAIRH.js +3 -0
- package/dist/{chunk-C35UXTDM.js → chunk-4WJC5QCD.js} +1 -1
- package/dist/{chunk-MV7KF75Q.js → chunk-6HLPTJZ3.js} +1 -1
- package/dist/{chunk-CV5HKU4P.js → chunk-7T4TSV5C.js} +1 -1
- package/dist/chunk-BBGNDMRU.js +2 -0
- package/dist/{chunk-VKTUWUS6.js → chunk-BG4FWJJ3.js} +1 -1
- package/dist/chunk-BYTFXQ6G.js +1 -0
- package/dist/chunk-DLM6C7FU.js +8 -0
- package/dist/chunk-E3CT7TYT.js +1 -0
- package/dist/chunk-EPVFKJF4.js +1 -0
- package/dist/{chunk-5EXZBCAZ.js → chunk-FKWB66NQ.js} +1 -1
- package/dist/{chunk-RTVRZFIJ.js → chunk-FZ76CF2W.js} +1 -1
- package/dist/{chunk-C3FLCDRN.js → chunk-GBAO4GSW.js} +1 -1
- package/dist/{chunk-AL2A7Q4X.js → chunk-GQRWRHSR.js} +31 -31
- package/dist/{chunk-BQGBU2Y3.js → chunk-HE4PUMU4.js} +1 -1
- package/dist/{chunk-KXG6E5VK.js → chunk-HMGPELXS.js} +1 -1
- package/dist/chunk-HSZCINFX.js +2 -0
- package/dist/chunk-L2E2Z4OE.js +5 -0
- package/dist/chunk-MAF3LLGK.js +691 -0
- package/dist/chunk-PS5F4DCT.js +1 -0
- package/dist/{chunk-LZQUZGXB.js → chunk-Q6TKQVKQ.js} +1 -1
- package/dist/chunk-TROHVI2V.js +2 -0
- package/dist/{chunk-IPJ5URDF.js → chunk-U2LR73E2.js} +1 -1
- package/dist/chunk-U2QL5733.js +36 -0
- package/dist/{chunk-DDQ3XK3H.js → chunk-VCW5HSPC.js} +2 -2
- package/dist/{chunk-6UTM5AJI.js → chunk-VU2BKKMB.js} +1 -1
- package/dist/chunk-WJVB6SSD.js +16 -0
- package/dist/{chunk-SS2VV3D5.js → chunk-XBM2P45G.js} +2 -2
- package/dist/{create-I23DC7SN.js → create-SBFBFXKN.js} +1 -1
- package/dist/{doctor-DOOMYLIH.js → doctor-OPCMTBJB.js} +1 -1
- package/dist/index.js +229 -229
- package/dist/{pipeline-U77HSINC.js → pipeline-7BUXAFS2.js} +1 -1
- package/dist/{project-test-coverage-4TEHZJFC.js → project-test-coverage-BALEHHTT.js} +1 -1
- package/dist/{workspace-ZEYUVR26.js → workspace-U6ZQLELX.js} +1 -1
- package/dist/{workspace-agent-sync-DKYJLUDP.js → workspace-agent-sync-L4SY7B4Q.js} +1 -1
- package/dist/workspace-context-KOBSLZTI.js +1 -0
- package/dist/{workspace-contract-PVLGPBBV.js → workspace-contract-SOD3OOVF.js} +1 -1
- package/dist/{workspace-explain-64HNKAHO.js → workspace-explain-2CTMW2YW.js} +1 -1
- package/dist/{workspace-feedback-RATRXFUC.js → workspace-feedback-ZZ4HPW2T.js} +1 -1
- package/dist/{workspace-foundation-D33LJLGT.js → workspace-foundation-PUIYBQUF.js} +1 -1
- package/dist/{workspace-graph-stream-THNG2T7R.js → workspace-graph-stream-BLKIC7VN.js} +1 -1
- package/dist/workspace-graph-token-efficiency-5FNH4JZ5.js +1 -0
- package/dist/{workspace-history-EWFPT74O.js → workspace-history-SPKNRHIX.js} +1 -1
- package/dist/{workspace-intelligence-MCNSWWDV.js → workspace-intelligence-I3ABOH2F.js} +1 -1
- package/dist/workspace-intelligence-runner-Q2XSR3ZL.js +1 -0
- package/dist/{workspace-knowledge-graph-2EYR7N56.js → workspace-knowledge-graph-5MKEI4Z5.js} +1 -1
- package/dist/{workspace-knowledge-graph-query-VOSPPH4W.js → workspace-knowledge-graph-query-EKHIE3E2.js} +1 -1
- package/dist/{workspace-mcp-serve-FLAVKWYW.js → workspace-mcp-serve-ETNUA72W.js} +1 -1
- package/dist/{workspace-model-FMFYLHE4.js → workspace-model-HHA37SNH.js} +1 -1
- package/dist/{workspace-onboarding-MYROZDI2.js → workspace-onboarding-ELHZABJE.js} +1 -1
- package/dist/workspace-readme-HGGZ4AZB.js +77 -0
- package/dist/{workspace-registry-summary-6VXIAQLX.js → workspace-registry-summary-D2QM5JF6.js} +1 -1
- package/dist/workspace-run-DAAZBCN7.js +1 -0
- package/dist/{workspace-verify-FKYI65UQ.js → workspace-verify-4WJTLXRA.js} +1 -1
- package/dist/{workspace-watch-RP5KMVP2.js → workspace-watch-2PIFTQ6B.js} +1 -1
- package/docs/README_CONTENT_CONTRACT.md +98 -124
- package/docs/ci-workflows.md +13 -4
- package/docs/commands-reference.md +4 -2
- package/docs/workspace-knowledge-graph.md +39 -0
- package/docs/workspace-operations.md +9 -6
- package/package.json +6 -3
- package/scripts/enterprise-package-smoke.mjs +11 -0
- package/templates/kits/fastapi-ddd/README.md.j2 +1 -1
- package/templates/kits/fastapi-standard/README.md.j2 +1 -1
- package/templates/kits/nestjs-standard/Dockerfile.j2 +1 -1
- package/templates/kits/nestjs-standard/README.md.j2 +1 -1
- package/templates/kits/nestjs-standard/package.json.j2 +11 -2
- package/dist/analyze-ZFQWTCJQ.js +0 -1
- package/dist/autopilot-release-VKXQ7BS7.js +0 -1
- package/dist/chunk-2AXEGYPL.js +0 -1
- package/dist/chunk-GNQRYISX.js +0 -5
- package/dist/chunk-I42F552T.js +0 -2
- package/dist/chunk-IDQKVJUF.js +0 -2
- package/dist/chunk-JFUD73OZ.js +0 -933
- package/dist/chunk-KKAOTTYO.js +0 -8
- package/dist/chunk-KMLPHFLD.js +0 -2
- package/dist/chunk-L2YK5RV2.js +0 -1
- package/dist/chunk-LAJM2SBP.js +0 -15
- package/dist/chunk-UETZ7USY.js +0 -36
- package/dist/chunk-WDKNMTJQ.js +0 -1
- package/dist/chunk-YPKNQCLK.js +0 -2
- package/dist/workspace-context-IHUFMZT3.js +0 -1
- package/dist/workspace-graph-token-efficiency-CFGFCJ5V.js +0 -1
- package/dist/workspace-intelligence-runner-TG2VLHNZ.js +0 -1
- package/dist/workspace-run-2ZI5UMJ2.js +0 -1
package/dist/chunk-YPKNQCLK.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {l}from'./chunk-L2YK5RV2.js';import {d,c}from'./chunk-EWZZUQBR.js';import {b as b$1,a}from'./chunk-AHLMIL2T.js';import g from'path';import {createHash}from'crypto';import P from'fs-extra';import {parseAllDocuments}from'yaml';var q=b$1.knowledgeGraph;var Te=a.knowledgeGraph;function De(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!==a.model)throw new Error(`Workspace knowledge graph source artifact is ${e.source.artifact}; expected ${a.model}.`);if(e.source.hashAlgorithm!=="sha256")throw new Error(`Workspace knowledge graph source hash algorithm is ${e.source.hashAlgorithm}; expected sha256.`);let o=d(t);if(e.source.hash!==o)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 i=l(t);if(!i)throw new Error("Canonical workspace model has no project topology for the workspace knowledge graph.");let s=d=>({...d,generatedAt:"<ignored>"});if(c(s(e.projectTopology))!==c(s(i)))throw new Error("Workspace knowledge graph project topology does not match the canonical workspace model.")}var X=new Set([".git",".hg",".svn",".workspai",".rapidkit",".venv","venv","vendor","node_modules","dist","build","target","coverage",".next",".turbo",".cache"]),B=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"]),ee=new Set(["get","put","post","delete","options","head","patch","trace"]),D=new Set([".c",".cc",".cpp",".cs",".dart",".ex",".exs",".go",".h",".hpp",".java",".js",".jsx",".kt",".kts",".mjs",".php",".py",".r",".rb",".rs",".scala",".svelte",".swift",".ts",".tsx",".vue",".clj",".cljs",".fs",".fsx",".lua",".vb"]);function N(e){let t=g.extname(e).toLowerCase();return {".c":"c",".cc":"cpp",".cpp":"cpp",".cs":"csharp",".dart":"dart",".ex":"elixir",".exs":"elixir",".go":"go",".h":"c",".hpp":"cpp",".java":"java",".js":"javascript",".jsx":"javascript",".kt":"kotlin",".kts":"kotlin",".mjs":"javascript",".php":"php",".py":"python",".r":"r",".rb":"ruby",".rs":"rust",".scala":"scala",".svelte":"svelte",".swift":"swift",".ts":"typescript",".tsx":"typescript",".vue":"vue",".clj":"clojure",".cljs":"clojure",".fs":"fsharp",".fsx":"fsharp",".lua":"lua",".vb":"visual-basic"}[t]??t.slice(1)}function T(e,t,o){let i=[],s=e.split(/\r?\n/);for(let d=0;d<s.length&&i.length<o;d+=1)for(let r of t){let n=s[d].match(r.pattern)?.[1]?.trim();if(n){i.push({name:n,line:d+1,detail:r.detail});break}}return i}var te=[{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*(?: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*(?: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*(?:pub\s+)?fn\s+([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*(?:pub\s+)?(?:struct|trait|enum)\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"}],oe=[{pattern:/^\s*import(?:.+?from\s*)?["']([^"']+)["']/,detail:"import"},{pattern:/require\(["']([^"']+)["']\)/,detail:"require"},{pattern:/^\s*from\s+([A-Za-z0-9_.]+)\s+import\s+/,detail:"import"},{pattern:/^\s*import\s+([A-Za-z0-9_.]+)(?:\s|$)/,detail:"import"},{pattern:/^\s*(?:import|using|use)\s+([A-Za-z0-9_:.*\\/.-]+)/,detail:"import"},{pattern:/^\s*require(?:_relative)?\s+["']([^"']+)["']/,detail:"require"}];function re(e,t,o){if(!t.startsWith("."))return null;let i=g.resolve(g.dirname(e),t),s=g.extname(i).toLowerCase(),d=D.has(s),r=new Set([i]);if(d){let a=i.slice(0,-s.length);if([".js",".jsx",".mjs"].includes(s))for(let n of [".ts",".tsx",".js",".jsx",".mjs"])r.add(`${a}${n}`);}else for(let a of D)r.add(`${i}${a}`),r.add(g.join(i,`index${a}`));return [...r].find(a=>o.has(g.resolve(a)))??null}var se=[{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 L(e){return createHash("sha256").update(e).digest("hex")}function v(e,t){return `wkg:${e}:${L(`${e}\0${t}`).slice(0,20)}`}function R(e){return e.replace(/\\/g,"/")}function K(e){let t=R(e).replace(/^\.\//,"");return !t||t.startsWith("/")||/^[A-Za-z]:\//.test(t)?"unknown":t}function w(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function b(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function j(e){if(Array.isArray(e))return e.filter(o=>typeof o=="string").sort();let t=w(e);return t?Object.keys(t).sort():[]}function ie(e){if(Array.isArray(e))return e.map(o=>typeof o=="string"?o.split("=",1)[0]?.trim():"").filter(o=>!!o).sort();let t=w(e);return t?Object.keys(t).sort():[]}function ae(e){return Object.fromEntries(Object.entries(e).filter(t=>t[1]!==void 0).sort(([t],[o])=>t.localeCompare(o)))}async function Z(e,t){let o=[],i=[e],s=0;for(;s<i.length&&o.length<t;){let d=i[s++],r;try{r=await P.readdir(d,{withFileTypes:true});}catch{continue}r.sort((a,n)=>a.name.localeCompare(n.name));for(let a of r){if(o.length>=t)break;if(a.isSymbolicLink())continue;let n=g.join(d,a.name);a.isDirectory()?X.has(a.name)||i.push(n):a.isFile()&&o.push(n);}}return o.sort((d,r)=>d.localeCompare(r))}async function A(e){let t=await P.readFile(e,"utf8");if(e.toLowerCase().endsWith(".json")){let o=JSON.parse(t),i=w(o);return i?[i]:[]}return parseAllDocuments(t).map(o=>w(o.toJSON())).filter(o=>o!==null)}function C(e,t){let o=g.resolve(t);return e.filter(i=>o===i.root||o.startsWith(`${i.root}${g.sep}`)).sort((i,s)=>s.root.length-i.root.length)[0]??null}var G=class{constructor(t,o,i){this.workspacePath=t;this.now=o;this.workspaceName=i;}workspacePath;now;workspaceName;entities=new Map;relations=new Map;proofs=new Map;providers=[];diagnostics=[];contentHashes=new Map;artifactPath(t,o){if(o){let i=R(g.relative(o.root,t));return K(g.posix.join(o.artifactPrefix,i))}return K(g.relative(this.workspacePath,t))}async addProof(t){let o;if(t.absolutePath){if(!this.contentHashes.has(t.absolutePath))try{this.contentHashes.set(t.absolutePath,L(await P.readFile(t.absolutePath)));}catch{this.contentHashes.set(t.absolutePath,null);}o=this.contentHashes.get(t.absolutePath)??void 0;}let i=K(t.artifact),s=v("proof",[t.provider,i,t.pointer??"",t.line??"",t.detail??""].join("\0"));return this.proofs.has(s)||this.proofs.set(s,{id:s,provider:t.provider,artifact:i,...t.pointer?{pointer:t.pointer}:{},...t.line?{line:t.line}:{},...t.column?{column:t.column}:{},...o?{contentHash:o}:{},observedAt:this.now.toISOString(),derivation:t.derivation??"extracted",trust:t.trust??"observed",confidence:t.confidence??"high",freshness:"fresh",...t.detail?{detail:t.detail}:{}}),s}addEntity(t){let o=v(t.kind,t.key),i=ae(t.attributes??{}),s=this.entities.get(o),d={...s?.attributes??{}};for(let[n,l]of Object.entries(i)){if(n in d&&JSON.stringify(d[n])!==JSON.stringify(l)){this.diagnostics.push({code:"graph.knowledge.attribute_conflict",severity:"warning",message:`Conflicting ${n} values were observed for ${t.kind} ${t.label}.`,entityIds:[o],recommendation:"Inspect the entity proof paths and make the authoritative source explicit."});continue}d[n]=l;}let r=[...new Set([...s?.identity.aliases??[],...t.aliases??[]])].sort(),a=[...new Set([...s?.proofIds??[],...t.proofIds??[]])].sort();return this.entities.set(o,{id:o,kind:t.kind,label:t.label,...t.projectId?{projectId:t.projectId}:{},identity:{key:t.key,scope:t.projectId?"project":"workspace",aliases:r,fingerprint:L(JSON.stringify({kind:t.kind,key:t.key,attributes:d}))},attributes:d,proofIds:a}),o}addRelation(t){let o=v("relation",`${t.from}\0${t.kind}\0${t.to}`),i=this.relations.get(o),s=[...new Set([...i?.proofIds??[],...t.proofIds])].sort(),d=new Set(s.map(n=>this.proofs.get(n)?.provider).filter(Boolean)).size,r=t.trust??i?.trust??"observed",a=d>=2&&r!=="ambiguous"?"corroborated":r;return this.relations.set(o,{id:o,from:t.from,to:t.to,kind:t.kind,derivation:t.derivation??i?.derivation??"extracted",trust:a,confidence:a==="corroborated"?"high":t.confidence??i?.confidence??"high",proofIds:s}),o}};function ne(e,t){let o=g.basename(e);try{if(o==="package.json"||o==="composer.json"){let r=JSON.parse(t);return {ecosystem:o==="package.json"?"npm":"composer",name:b(r.name),version:b(r.version),dependencies:[...j(r.dependencies),...j(r.devDependencies),...j(r.require),...j(r["require-dev"])].filter((a,n,l)=>l.indexOf(a)===n).sort()}}if(o==="deno.json"||o==="deno.jsonc"){let r=JSON.parse(t.replace(/\/\*[\s\S]*?\*\/|^\s*\/\/.*$/gm,""));return {ecosystem:"deno",name:b(r.name),version:b(r.version),dependencies:j(r.imports)}}}catch{}let i=r=>t.match(r)?.[1]?.trim();if(o==="pyproject.toml"){let r=t.match(/^dependencies\s*=\s*\[([\s\S]*?)\]/m)?.[1]??"";return {ecosystem:"python",name:i(/^(?:name)\s*=\s*["']([^"']+)["']/m),version:i(/^(?:version)\s*=\s*["']([^"']+)["']/m),dependencies:[...[...r.matchAll(/["']([A-Za-z0-9_.-]+)/g)].map(a=>a[1]),...[...t.matchAll(/^([A-Za-z0-9_.-]+)\s*=\s*(?:["'{[])/gm)].map(a=>a[1]).filter(a=>!["name","version","description","python","dependencies"].includes(a))].filter((a,n,l)=>l.indexOf(a)===n).sort()}}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(r=>r[1]).sort()};if(o==="Cargo.toml"){let r=t.match(/^\[dependencies\]\s*$([\s\S]*?)(?=^\[|\s*$)/m)?.[1]??"";return {ecosystem:"cargo",name:i(/^name\s*=\s*["']([^"']+)["']/m),version:i(/^version\s*=\s*["']([^"']+)["']/m),dependencies:[...r.matchAll(/^([A-Za-z0-9_.-]+)\s*=/gm)].map(a=>a[1]).sort()}}if(o==="pom.xml")return {ecosystem:"maven",name:i(/<artifactId>([^<]+)<\/artifactId>/),version:i(/<version>([^<]+)<\/version>/),dependencies:[...t.matchAll(/<artifactId>([^<]+)<\/artifactId>/g)].slice(1).map(r=>r[1]).sort()};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(r=>r[1]).sort()};let s={"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"},d=o==="requirements.txt"?t.split(/\r?\n/).map(r=>r.trim().match(/^([A-Za-z0-9_.-]+)/)?.[1]):o.startsWith("build.gradle")?[...t.matchAll(/(?:implementation|api|compileOnly|runtimeOnly|testImplementation)\s*\(?["']([^:"']+):([^:"']+)/g)].map(r=>`${r[1]}:${r[2]}`):o==="Gemfile"?[...t.matchAll(/^\s*gem\s+["']([^"']+)["']/gm)].map(r=>r[1]):o==="mix.exs"?[...t.matchAll(/\{:\s*([A-Za-z0-9_]+)\s*,/g)].map(r=>r[1]):o==="pubspec.yaml"?[...t.matchAll(/^\s{2}([A-Za-z0-9_]+):\s+/gm)].map(r=>r[1]):o==="Package.swift"?[...t.matchAll(/\.package\s*\(\s*url:\s*["']([^"']+)["']/g)].map(r=>r[1]):o==="CMakeLists.txt"?[...t.matchAll(/find_package\s*\(\s*([A-Za-z0-9_.+-]+)/gi)].map(r=>r[1]):o==="project.clj"||o==="deps.edn"?[...t.matchAll(/\[?([A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+)\s+/g)].map(r=>r[1]):o==="build.sbt"?[...t.matchAll(/["']([^"']+)["']\s*%%?\s*["']([^"']+)["']/g)].map(r=>`${r[1]}:${r[2]}`):[];return {ecosystem:s[o]??"unknown",dependencies:d.filter(r=>!!r).filter((r,a,n)=>n.indexOf(r)===a).sort()}}var de={id:"workspace-foundation",version:"1.0.0",async run(e){let{state:t}=e,o=await t.addProof({provider:this.id,artifact:".workspai/workspace.contract.json",absolutePath:g.join(e.workspacePath,".workspai","workspace.contract.json"),trust:"authoritative",derivation:"authored",detail:"Workspace identity and project registry boundary"}),i=t.addEntity({kind:"workspace",key:`workspace:${t.workspaceName}`,label:t.workspaceName,aliases:[t.workspaceName],proofIds:[o]});for(let s of e.projects){let d=e.filesByProject.get(s.id)??[],r=d.find(f=>/[\\/]\.(?:workspai|rapidkit)[\\/](?:project|context)\.json$/.test(f)),a=d.find(f=>B.has(g.basename(f))),n=r??a,l=await t.addProof({provider:this.id,artifact:n?t.artifactPath(n,s):K(g.posix.join(s.artifactPrefix,".workspai/project.json")),...n?{absolutePath:n}:{},trust:r?"authoritative":"observed",derivation:r?"authored":"inferred",detail:`Project ${s.id}`}),p=t.addEntity({kind:"project",key:`project:${s.id}`,label:s.id,projectId:s.id,aliases:[s.id,s.path],attributes:{path:s.path,runtime:s.runtime,framework:s.framework,kit:s.kit,kind:s.kind,category:s.category},proofIds:[l]});t.addRelation({from:i,to:p,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[l]});let h=new Set,u=[];for(let f of d){let m=g.basename(f);if(/^(?:\.env\.example|\.env\.sample|\.env\.template)$/i.test(m))try{let k=await P.readFile(f,"utf8");for(let c of k.split(/\r?\n/)){let y=c.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=/)?.[1];y&&h.add(y);}}catch{}if((/(?:^|[\\/])(?:test|tests|spec|specs|__tests__)(?:[\\/]|$)/i.test(f)||/(?:\.test|\.spec|_test)\.[A-Za-z0-9]+$/i.test(m))&&u.push(f),!(!B.has(m)&&!/\.(?:cs|fs|vb)proj$/i.test(m)))try{let k=await P.readFile(f,"utf8"),c=ne(f,k),y=await t.addProof({provider:this.id,artifact:t.artifactPath(f,s),absolutePath:f,pointer:"/",confidence:c.name?"high":"medium",detail:`${c.ecosystem} manifest`}),E=t.addEntity({kind:"package",key:`package:${s.id}:${c.ecosystem}:${c.name??m}`,label:c.name??`${s.id}/${m}`,projectId:s.id,aliases:[m,...c.name?[c.name]:[]],attributes:{ecosystem:c.ecosystem,version:c.version,manifest:t.artifactPath(f,s),dependencies:c.dependencies},proofIds:[y]});t.addRelation({from:p,to:E,kind:"contains",proofIds:[y]});for(let $ of c.dependencies.slice(0,500)){let I=t.addEntity({kind:"module",key:`dependency:${c.ecosystem}:${$}`,label:$,aliases:[$],attributes:{ecosystem:c.ecosystem,external:true},proofIds:[y]});t.addRelation({from:E,to:I,kind:"depends-on",trust:"authoritative",derivation:"authored",proofIds:[y]});}}catch{}}if(h.size>0){let f=d.find(m=>/^\.env\.(?:example|sample|template)$/i.test(g.basename(m)));if(f){let m=await t.addProof({provider:this.id,artifact:t.artifactPath(f,s),absolutePath:f,detail:"Public environment template keys only; values are intentionally excluded"}),k=t.addEntity({kind:"environment",key:`environment:${s.id}:template`,label:`${s.id} environment contract`,projectId:s.id,attributes:{keys:[...h].sort(),valuesEmitted:false},proofIds:[m]});t.addRelation({from:p,to:k,kind:"configured-by",proofIds:[m]});}}if(u.length>0){let f=await t.addProof({provider:this.id,artifact:t.artifactPath(u[0],s),absolutePath:u[0],detail:`${u.length} test file(s) discovered`}),m=t.addEntity({kind:"test-suite",key:`tests:${s.id}`,label:`${s.id} tests`,projectId:s.id,attributes:{fileCount:u.length},proofIds:[f]});t.addRelation({from:m,to:p,kind:"tests",proofIds:[f]});}}}},ce={id:"source-structure",version:"1.0.0",async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).filter(r=>D.has(g.extname(r).toLowerCase())).slice(0,1e3),i=new Set;await Promise.all(o.map(async r=>{try{let a=await P.stat(r);a.isFile()&&a.size<=2*1024*1024&&i.add(g.resolve(r));}catch{}}));let s=0,d=0;for(let r of o){let a;try{if((await P.stat(r)).size>2*1024*1024)continue;a=await P.readFile(r,"utf8");}catch{continue}let n=e.state.artifactPath(r,t),l=await e.state.addProof({provider:this.id,artifact:n,absolutePath:r,derivation:"extracted",trust:"observed",confidence:"high",detail:`${N(r)} source file`}),p=e.state.addEntity({kind:"file",key:`file:${t.id}:${n}`,label:n,projectId:t.id,aliases:[g.basename(r)],attributes:{artifact:n,language:N(r),bytes:Buffer.byteLength(a)},proofIds:[l]});e.state.addRelation({from:v("project",`project:${t.id}`),to:p,kind:"contains",proofIds:[l]});let h=T(a,oe,250);for(let u of h){let f=await e.state.addProof({provider:this.id,artifact:n,absolutePath:r,line:u.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${u.detail}: ${u.name}`}),m=re(r,u.name,i);if(m){let k=e.state.artifactPath(m,t);e.state.addRelation({from:p,to:v("file",`file:${t.id}:${k}`),kind:"imports",confidence:"high",proofIds:[f]});}else {let k=u.name.startsWith(".");k&&(d+=1);let c=e.state.addEntity({kind:"module",key:`module:${t.id}:${u.name}`,label:u.name,projectId:t.id,aliases:[u.name],attributes:{specifier:u.name,resolution:k?"unresolved-local":"external"},proofIds:[f]});e.state.addRelation({from:p,to:c,kind:"imports",confidence:k?"low":"medium",proofIds:[f]});}}if(s<500){let u=T(a,te,Math.min(100,500-s));s+=u.length;for(let f of u){let m=await e.state.addProof({provider:this.id,artifact:n,absolutePath:r,line:f.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${f.detail}: ${f.name}`}),k=e.state.addEntity({kind:"symbol",key:`symbol:${t.id}:${n}:${f.detail}:${f.name}`,label:f.name,projectId:t.id,attributes:{symbolKind:f.detail,language:N(r)},proofIds:[m]});e.state.addRelation({from:p,to:k,kind:"defines",confidence:"medium",proofIds:[m]});}}for(let u of T(a,se,100)){let m=(a.split(/\r?\n/)[u.line-1]??"").match(/(?:@|\.|\[|^\s*)(get|post|put|delete|patch|options|head)/i)?.[1]?.toUpperCase()??"HTTP",k=await e.state.addProof({provider:this.id,artifact:n,absolutePath:r,line:u.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${m} ${u.name}`}),c=e.state.addEntity({kind:"endpoint",key:`source-endpoint:${t.id}:${n}:${m}:${u.name}`,label:`${m} ${u.name||"/"}`,projectId:t.id,attributes:{method:m,path:u.name||"/",source:n},proofIds:[k]});e.state.addRelation({from:p,to:c,kind:"defines",confidence:"medium",proofIds:[k]});}}(o.length>=1e3||s>=500)&&e.state.diagnostics.push({code:"graph.provider.source_structure.limit_reached",severity:"info",message:`Source extraction for ${t.id} reached its bounded inventory limit.`,recommendation:"Use the standalone graph package provider configuration for deeper symbol indexing."}),d>0&&e.state.diagnostics.push({code:"graph.provider.source_structure.unresolved_local_imports",severity:"warning",message:`${d} 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."});}}},pe={id:"workspace-service-contract",version:"1.0.0",async run(e){if(!e.contract)return;let t=new Map;for(let o of [...e.contract.projects].sort((i,s)=>i.slug.localeCompare(s.slug))){let i=o.contracts,s=await e.state.addProof({provider:this.id,artifact:".workspai/workspace.contract.json",absolutePath:g.join(e.workspacePath,".workspai","workspace.contract.json"),pointer:`/projects/${o.slug}/contracts`,trust:"authoritative",derivation:"authored",detail:`Service contract for ${o.slug}`}),d=v("project",`project:${o.slug}`),r=e.state.addEntity({kind:"service",key:`contract-service:${o.slug}`,label:o.slug,projectId:o.slug,attributes:{ports:o.ports.map(a=>`${a.protocol}:${a.port}`),owns:[...i.owns].sort(),environmentKeys:[...i.env].sort()},proofIds:[s]});e.state.addRelation({from:d,to:r,kind:"implements",trust:"authoritative",derivation:"authored",proofIds:[s]});for(let a of [...i.apis].sort((n,l)=>n.name.localeCompare(l.name))){let n=e.state.addEntity({kind:"api",key:`contract-api:${o.slug}:${a.name}:${a.basePath}`,label:a.name,projectId:o.slug,attributes:{basePath:a.basePath},proofIds:[s]});e.state.addRelation({from:r,to:n,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[s]});}for(let a of [...i.publishes,...i.consumes].sort())t.has(a)||t.set(a,e.state.addEntity({kind:"queue",key:`event:${a}`,label:a,attributes:{protocol:"workspace-event"},proofIds:[s]}));for(let a of [...i.publishes].sort()){let n=t.get(a);n&&e.state.addRelation({from:r,to:n,kind:"publishes",trust:"authoritative",derivation:"authored",proofIds:[s]});}for(let a of [...i.consumes].sort()){let n=t.get(a);n&&e.state.addRelation({from:r,to:n,kind:"consumes",trust:"authoritative",derivation:"authored",proofIds:[s]});}}}},le={id:"openapi",version:"1.0.0",async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).filter(i=>/^(?:openapi|swagger)(?:\.[^.]+)?\.(?:json|ya?ml)$/i.test(g.basename(i)));for(let i of o){let s;try{s=await A(i);}catch(d){e.state.diagnostics.push({code:"graph.provider.openapi.parse_failed",severity:"warning",message:`Could not parse ${e.state.artifactPath(i,t)}: ${d instanceof Error?d.message:String(d)}`});continue}for(let d of s){if(!("openapi"in d)&&!("swagger"in d))continue;let r=w(d.info),a=b(r?.title)??`${t.id} API`,n=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(i,t),absolutePath:i,pointer:"/info",trust:"authoritative",detail:"Authored OpenAPI contract"}),l=v("project",`project:${t.id}`),p=e.state.addEntity({kind:"api",key:`api:${t.id}:${a}`,label:a,projectId:t.id,attributes:{version:b(r?.version),specification:b(d.openapi)??b(d.swagger)},proofIds:[n]});e.state.addRelation({from:l,to:p,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[n]});let h=w(w(d.components)?.schemas)??w(d.definitions),u=new Map;for(let m of Object.keys(h??{}).sort()){let k=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(i,t),absolutePath:i,pointer:`/components/schemas/${m}`,trust:"authoritative",detail:`OpenAPI schema ${m}`}),c=e.state.addEntity({kind:"schema",key:`schema:${t.id}:${a}:${m}`,label:m,projectId:t.id,proofIds:[k]});u.set(m,c),e.state.addRelation({from:p,to:c,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[k]});}let f=w(d.paths);for(let m of Object.keys(f??{}).sort()){let k=w(f?.[m]);for(let c of Object.keys(k??{}).filter(y=>ee.has(y.toLowerCase())).sort()){let y=w(k?.[c]),E=`/paths/${m.replace(/~/g,"~0").replace(/\//g,"~1")}/${c}`,$=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(i,t),absolutePath:i,pointer:E,trust:"authoritative",detail:`${c.toUpperCase()} ${m}`}),I=e.state.addEntity({kind:"endpoint",key:`endpoint:${t.id}:${a}:${c.toUpperCase()}:${m}`,label:`${c.toUpperCase()} ${m}`,projectId:t.id,aliases:j(y?.tags),attributes:{method:c.toUpperCase(),path:m,operationId:b(y?.operationId),deprecated:typeof y?.deprecated=="boolean"?y.deprecated:void 0,tags:j(y?.tags)},proofIds:[$]});e.state.addRelation({from:p,to:I,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[$]});let S=JSON.stringify(y??{});for(let[J,V]of u)S.includes(`/${J}`)&&e.state.addRelation({from:I,to:V,kind:"references",trust:"authoritative",derivation:"authored",proofIds:[$]});}}}}}}},fe={id:"interface-contracts",version:"1.0.0",async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).filter(i=>{let s=g.basename(i).toLowerCase();return /\.(?:graphql|gql|proto)$/.test(s)||/^asyncapi(?:\.[^.]+)?\.(?:json|ya?ml)$/.test(s)});for(let i of o){let s=e.state.artifactPath(i,t),d=g.extname(i).toLowerCase();if(d===".graphql"||d===".gql"){let r=await P.readFile(i,"utf8"),a=await e.state.addProof({provider:this.id,artifact:s,absolutePath:i,trust:"authoritative",derivation:"authored",detail:"GraphQL schema"}),n=e.state.addEntity({kind:"api",key:`graphql:${t.id}:${s}`,label:`${t.id} GraphQL API`,projectId:t.id,attributes:{specification:"graphql",artifact:s},proofIds:[a]});e.state.addRelation({from:v("project",`project:${t.id}`),to:n,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[a]});for(let l of r.matchAll(/^\s*(?:type|input|interface|enum|scalar|union)\s+([A-Za-z_]\w*)/gm)){let p=e.state.addEntity({kind:"schema",key:`graphql-schema:${t.id}:${s}:${l[1]}`,label:l[1],projectId:t.id,proofIds:[a]});e.state.addRelation({from:n,to:p,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[a]});}continue}if(d===".proto"){let r=await P.readFile(i,"utf8"),a=await e.state.addProof({provider:this.id,artifact:s,absolutePath:i,trust:"authoritative",derivation:"authored",detail:"Protocol Buffers contract"});for(let n of r.matchAll(/^\s*service\s+([A-Za-z_]\w*)/gm)){let l=e.state.addEntity({kind:"api",key:`protobuf-service:${t.id}:${s}:${n[1]}`,label:n[1],projectId:t.id,attributes:{specification:"protobuf",artifact:s},proofIds:[a]});e.state.addRelation({from:v("project",`project:${t.id}`),to:l,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[a]});}for(let n of r.matchAll(/^\s*message\s+([A-Za-z_]\w*)/gm))e.state.addEntity({kind:"schema",key:`protobuf-message:${t.id}:${s}:${n[1]}`,label:n[1],projectId:t.id,attributes:{specification:"protobuf",artifact:s},proofIds:[a]});continue}try{let r=(await A(i))[0];if(!r||!("asyncapi"in r))continue;let a=await e.state.addProof({provider:this.id,artifact:s,absolutePath:i,trust:"authoritative",derivation:"authored",detail:"AsyncAPI contract"}),n=e.state.addEntity({kind:"api",key:`asyncapi:${t.id}:${s}`,label:b(w(r.info)?.title)??`${t.id} AsyncAPI`,projectId:t.id,attributes:{specification:`asyncapi ${String(r.asyncapi)}`,artifact:s},proofIds:[a]});e.state.addRelation({from:v("project",`project:${t.id}`),to:n,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[a]});for(let l of Object.keys(w(r.channels)??{}).sort()){let p=e.state.addEntity({kind:"queue",key:`asyncapi-channel:${t.id}:${l}`,label:l,projectId:t.id,attributes:{protocol:"asyncapi"},proofIds:[a]});e.state.addRelation({from:n,to:p,kind:"publishes",trust:"authoritative",derivation:"authored",proofIds:[a]});}}catch{}}}}},ue={id:"infrastructure-as-code",version:"1.0.0",async run(e){let t=e.workspaceFiles.filter(o=>{let i=g.basename(o);return /^Dockerfile(?:\..+)?$/i.test(i)||/\.tf$/i.test(i)||i==="Chart.yaml"});for(let o of t){let i=C(e.projects,o),s=i?.id??e.state.workspaceName,d=i?v("project",`project:${i.id}`):v("workspace",`workspace:${e.state.workspaceName}`),r=e.state.artifactPath(o,i),a=await P.readFile(o,"utf8"),n=await e.state.addProof({provider:this.id,artifact:r,absolutePath:o,trust:"authoritative",derivation:"authored",detail:"Infrastructure definition"});if(/^Dockerfile/i.test(g.basename(o))){let p=[...a.matchAll(/^\s*FROM\s+([^\s]+)(?:\s+AS\s+([^\s]+))?/gim)],h=e.state.addEntity({kind:"container",key:`dockerfile:${s}:${r}`,label:`${s} container image`,...i?{projectId:i.id}:{},attributes:{artifact:r,baseImages:p.map(u=>u[1])},proofIds:[n]});e.state.addRelation({from:d,to:h,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[n]});continue}if(/\.tf$/i.test(o)){for(let p of a.matchAll(/^\s*resource\s+["']([^"']+)["']\s+["']([^"']+)["']/gm)){let h=p[1],u=/(?:db|sql|rds|database)/i.test(h)?"database":/(?:queue|kafka|sqs|pubsub|servicebus)/i.test(h)?"queue":"deployment",f=e.state.addEntity({kind:u,key:`terraform:${s}:${h}:${p[2]}`,label:`${h}.${p[2]}`,...i?{projectId:i.id}:{},attributes:{resourceType:h,artifact:r},proofIds:[n]});e.state.addRelation({from:d,to:f,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[n]});}continue}let l=e.state.addEntity({kind:"deployment",key:`helm:${s}:${r}`,label:`${s} Helm chart`,...i?{projectId:i.id}:{},attributes:{artifact:r,format:"helm"},proofIds:[n]});e.state.addRelation({from:d,to:l,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[n]});}}};function H(e){let t=e.toLowerCase();return /(?:postgres|mysql|mariadb|mongo|cassandra|cockroach|mssql|oracle)/.test(t)?"database":/(?:rabbitmq|kafka|nats|pulsar|activemq|redis)/.test(t)?"queue":"container"}var me={id:"compose",version:"1.0.0",async run(e){let t=new Set;for(let o of [e.workspacePath,...e.projects.map(i=>i.root)])for(let i of ["compose.yml","compose.yaml","docker-compose.yml","docker-compose.yaml"]){let s=g.join(o,i);await P.pathExists(s)&&t.add(s);}for(let o of [...t].sort()){let i;try{i=(await A(o))[0];}catch(a){e.state.diagnostics.push({code:"graph.provider.compose.parse_failed",severity:"warning",message:`Could not parse ${e.state.artifactPath(o)}: ${a instanceof Error?a.message:String(a)}`});}let s=w(i?.services);if(!s)continue;let d=C(e.projects,o),r=new Map;for(let a of Object.keys(s).sort()){let n=w(s[a]),l=n?.build,p=b(l)??b(w(l)?.context),h=p?C(e.projects,g.resolve(g.dirname(o),p)):e.projects.find(k=>k.id.toLowerCase()===a.toLowerCase()||g.basename(k.path).toLowerCase()===a.toLowerCase())??d,u=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(o,d),absolutePath:o,pointer:`/services/${a}`,trust:"authoritative",derivation:"authored",detail:`Compose service ${a}`}),f=b(n?.image),m=e.state.addEntity({kind:"service",key:`compose-service:${e.state.artifactPath(o,d)}:${a}`,label:a,...h?{projectId:h.id}:{},attributes:{image:f,ports:j(n?.ports).map(String),networks:j(n?.networks),environmentKeys:ie(n?.environment)},proofIds:[u]});if(r.set(a,m),h&&e.state.addRelation({from:v("project",`project:${h.id}`),to:m,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[u]}),f){let k=e.state.addEntity({kind:H(f),key:`image:${f}`,label:f,...h?{projectId:h.id}:{},attributes:{image:f},proofIds:[u]});e.state.addRelation({from:m,to:k,kind:H(f)==="container"?"runs-on":"depends-on",trust:"authoritative",derivation:"authored",proofIds:[u]});}}for(let a of Object.keys(s).sort()){let n=w(s[a]),l=r.get(a);if(l)for(let p of j(n?.depends_on)){let h=r.get(p);if(!h)continue;let u=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(o,d),absolutePath:o,pointer:`/services/${a}/depends_on/${p}`,trust:"authoritative",derivation:"authored",detail:`${a} depends on ${p}`});e.state.addRelation({from:l,to:h,kind:"depends-on",trust:"authoritative",derivation:"authored",proofIds:[u]});}}}}},ge={id:"documentation",version:"1.0.0",async run(e){let t=new Set,o=[e.workspaceFiles,...e.projects.map(i=>e.filesByProject.get(i.id)??[])];for(let i of o){let s=i.filter(d=>/(?:^|[\\/])(?:README|ARCHITECTURE|CONTRIBUTING|SECURITY)\.md$/i.test(d));for(let d of s){if(t.has(d))continue;t.add(d);let r=C(e.projects,d),n=(await P.readFile(d,"utf8")).match(/^#\s+(.+)$/m)?.[1]?.trim()??g.basename(d),l=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(d,r),absolutePath:d,line:1,trust:"authoritative",derivation:"authored",detail:`Documentation: ${n}`}),p=e.state.addEntity({kind:"document",key:`document:${e.state.artifactPath(d,r)}`,label:n,...r?{projectId:r.id}:{},attributes:{artifact:e.state.artifactPath(d,r)},proofIds:[l]}),h=r?v("project",`project:${r.id}`):v("workspace",`workspace:${e.state.workspaceName}`);e.state.addRelation({from:p,to:h,kind:"documents",trust:"authoritative",derivation:"authored",proofIds:[l]});}}}},he={id:"kubernetes",version:"1.0.0",async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).filter(i=>/(?:^|[\\/])(?:k8s|kubernetes|deploy|manifests)(?:[\\/]).+\.ya?ml$/i.test(i));for(let i of o){let s;try{s=await A(i);}catch{continue}for(let d=0;d<s.length;d+=1){let r=s[d],a=b(r.kind),n=w(r.metadata),l=b(n?.name);if(!a||!l)continue;let p=b(n?.namespace)??"default",h=/Deployment|StatefulSet|DaemonSet/i.test(a)?"deployment":/Service|Ingress/i.test(a)?"service":/ConfigMap|Secret/i.test(a)?"environment":"deployment",u=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(i,t),absolutePath:i,pointer:`/documents/${d}`,trust:"authoritative",derivation:"authored",detail:`${a} ${p}/${l}`}),f=e.state.addEntity({kind:h,key:`kubernetes:${a}:${p}:${l}`,label:`${a}/${l}`,projectId:t.id,attributes:{resourceKind:a,namespace:p,secret:a==="Secret",keys:a==="Secret"||a==="ConfigMap"?Object.keys(w(r.data)??{}).sort():void 0},proofIds:[u]});e.state.addRelation({from:v("project",`project:${t.id}`),to:f,kind:h==="deployment"?"deploys":"contains",trust:"authoritative",derivation:"authored",proofIds:[u]});let m=e.state.addEntity({kind:"environment",key:`kubernetes-namespace:${p}`,label:`Kubernetes namespace ${p}`,projectId:t.id,attributes:{namespace:p},proofIds:[u]});e.state.addRelation({from:f,to:m,kind:"runs-on",trust:"authoritative",derivation:"authored",proofIds:[u]});}}}}},ke={id:"ci-workflow",version:"1.0.0",async run(e){let t=e.workspaceFiles.filter(o=>{let i=R(g.relative(e.workspacePath,o));return /^\.github\/workflows\/.+\.ya?ml$/i.test(i)||/^(?:\.gitlab-ci\.ya?ml|azure-pipelines\.ya?ml|Jenkinsfile|bitbucket-pipelines\.ya?ml|\.woodpecker\.ya?ml)$/i.test(i)||/^\.circleci\/config\.ya?ml$/i.test(i)});for(let o of t){let i=e.state.artifactPath(o),s=g.basename(o)==="Jenkinsfile",d=g.basename(o),r=[],a=[];if(s)r=[...(await P.readFile(o,"utf8")).matchAll(/\bstage\s*\(\s*["']([^"']+)["']/g)].map(h=>h[1]);else {let p;try{p=(await A(o))[0];}catch{continue}if(!p)continue;d=b(p.name)??d;let h=R(g.relative(e.workspacePath,o));if(/^\.gitlab-ci\./i.test(h)){let u=new Set(["stages","variables","workflow","include","default","image","services","cache","before_script","after_script"]);r=Object.keys(p).filter(f=>!f.startsWith(".")&&!u.has(f)).sort();}else r=[...new Set([...Object.keys(w(p.jobs)??{}),...Object.keys(w(w(p.workflows)?.jobs)??{}),...j(p.stages)])].sort();a=j(p.on);}r.length===0&&(r=["pipeline"]);let n=await e.state.addProof({provider:this.id,artifact:i,absolutePath:o,...s?{}:{pointer:"/jobs"},trust:"authoritative",derivation:"authored",detail:"CI/CD workflow"}),l=e.state.addEntity({kind:"pipeline",key:`pipeline:${i}`,label:d,attributes:{jobs:r,triggers:a,artifact:i},proofIds:[n]});e.state.addRelation({from:v("workspace",`workspace:${e.state.workspaceName}`),to:l,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[n]});}}},ye={id:"codeowners",version:"1.0.0",async run(e){let t=[g.join(e.workspacePath,"CODEOWNERS"),g.join(e.workspacePath,".github","CODEOWNERS"),g.join(e.workspacePath,"docs","CODEOWNERS")];for(let o of t){if(!await P.pathExists(o))continue;let s=(await P.readFile(o,"utf8")).split(/\r?\n/);for(let d=0;d<s.length;d+=1){let r=s[d].trim();if(!r||r.startsWith("#"))continue;let[a,...n]=r.split(/\s+/);for(let l of n.filter(p=>p.startsWith("@"))){let p=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(o),absolutePath:o,line:d+1,trust:"authoritative",derivation:"authored",detail:`${a} ${l}`}),h=e.state.addEntity({kind:"owner",key:`owner:${l.toLowerCase()}`,label:l,aliases:[l],proofIds:[p]}),u=e.projects.filter(m=>{let k=a.replace(/^\//,"").replace(/\*.*$/,"");return k&&m.path.startsWith(k.replace(/\/$/,""))}),f=u.length>0?u.map(m=>v("project",`project:${m.id}`)):[v("workspace",`workspace:${e.state.workspaceName}`)];for(let m of f)e.state.addRelation({from:h,to:m,kind:"owns",trust:"authoritative",derivation:"authored",proofIds:[p]});}}}}},ve={id:"architecture-decisions",version:"1.0.0",async run(e){let t=new Set,o=[{root:e.workspacePath,files:e.workspaceFiles},...e.projects.map(i=>({root:i.root,files:e.filesByProject.get(i.id)??[]}))];for(let i of o){let s=i.files.filter(d=>{let r=R(g.relative(i.root,d));return /(?:^|\/)(?:adr|adrs|decisions)(?:\/).+\.md$/i.test(r)||/(?:^|\/)ADR[-_0-9].+\.md$/i.test(r)});for(let d of s){if(t.has(d))continue;t.add(d);let r=C(e.projects,d),a=await P.readFile(d,"utf8"),n=a.match(/^#\s+(.+)$/m)?.[1]?.trim()??g.basename(d,".md"),l=a.match(/^status\s*:\s*(.+)$/im)?.[1]?.trim(),p=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(d,r),absolutePath:d,line:1,trust:"authoritative",derivation:"authored",detail:`Architecture decision: ${n}`}),h=e.state.addEntity({kind:"decision",key:`decision:${e.state.artifactPath(d,r)}`,label:n,...r?{projectId:r.id}:{},attributes:{status:l,artifact:e.state.artifactPath(d,r)},proofIds:[p]}),u=r?v("project",`project:${r.id}`):v("workspace",`workspace:${e.state.workspaceName}`);e.state.addRelation({from:u,to:h,kind:"decided-by",trust:"authoritative",derivation:"authored",proofIds:[p]});}}}},we=[de,ce,pe,le,fe,me,ue,he,ke,ye,ge,ve];async function be(e,t){for(let o of t.edges){let i=[];for(let s of o.evidence){let d=K(s.file);i.push(await e.addProof({provider:"project-topology",artifact:d,absolutePath:g.resolve(e.workspacePath,d),derivation:o.source==="inferred"?"inferred":"authored",trust:o.source==="inferred"?"observed":"authoritative",confidence:o.confidence,detail:s.detail??`${o.kind} relationship`}));}i.length===0&&i.push(await e.addProof({provider:"project-topology",artifact:a.model,derivation:"inferred",trust:"ambiguous",confidence:o.confidence,detail:`${o.kind} relationship without source locator`})),e.addRelation({from:v("project",`project:${o.from}`),to:v("project",`project:${o.to}`),kind:o.kind==="event-pub-sub"?"consumes":"depends-on",derivation:o.source==="inferred"?"inferred":"authored",trust:o.source==="inferred"?"observed":"authoritative",confidence:o.confidence,proofIds:i});}}function Pe(e){let t=[...e.entities.values()].filter(i=>i.kind==="endpoint"),o=new Map;for(let i of t){let s=String(i.attributes.method??"").toUpperCase(),d=String(i.attributes.path??"");if(!i.projectId||!s||!d)continue;let r=`${i.projectId}\0${s}\0${d}`,a=o.get(r)??[];a.push(i),o.set(r,a);}for(let i of o.values()){if(i.length<2)continue;let s=i.find(d=>d.proofIds.some(r=>e.proofs.get(r)?.trust==="authoritative"));if(s)for(let d of i.filter(r=>r.id!==s.id))e.addRelation({from:d.id,to:s.id,kind:"implements",derivation:"extracted",trust:"corroborated",confidence:"high",proofIds:[...d.proofIds,...s.proofIds]});}}function _(e,t){let o=[...new Set(e)],i=o.filter(s=>t.has(s)).length;return {eligibleCount:o.length,boundCount:i,unknownCount:o.length-i,coverageRatio:o.length===0?null:i/o.length}}function je(e,t){let o=e.filter(n=>n.kind==="project").map(n=>n.id),i=e.filter(n=>n.kind==="endpoint").map(n=>n.id),s=new Set(t.filter(n=>n.kind==="implements").flatMap(n=>[n.from,n.to])),d=new Set(t.filter(n=>n.kind==="tests").flatMap(n=>[n.from,n.to]).filter(n=>o.includes(n))),r=new Set(t.filter(n=>n.kind==="deploys").flatMap(n=>[n.from,n.to]).filter(n=>o.includes(n))),a=new Set(t.filter(n=>n.kind==="owns").flatMap(n=>[n.from,n.to]).filter(n=>o.includes(n)));return {apiImplementation:_(i,s),projectTests:_(o,d),projectDeployment:_(o,r),projectOwnership:_(o,a)}}async function Le(e){let t=g.resolve(e.workspacePath),o=e.now??new Date,i=e.projects.map(c=>({...c,root:c.absolutePath?g.resolve(c.absolutePath):g.resolve(t,c.path),artifactPrefix:c.absolutePath?`external/${c.id}`:R(c.path)})).sort((c,y)=>c.id.localeCompare(y.id)),s=new G(t,o,e.workspace.name),d=Math.max(100,Math.min(e.maxFilesPerProject??2e3,1e4)),r=new Map(await Promise.all(i.map(async c=>[c.id,await Z(c.root,d)]))),a=await Z(t,Math.min(d*Math.max(i.length,1),2e4)),n={workspacePath:t,projects:i,filesByProject:r,workspaceFiles:a,now:o,maxFilesPerProject:d,contract:e.contract??null,state:s};for(let c of we){let y={entities:s.entities.size,relations:s.relations.size,proofs:s.proofs.size,diagnostics:s.diagnostics.length},E="passed",$=[];try{await c.run(n),s.diagnostics.length>y.diagnostics&&(E="partial");}catch(I){E="failed";let S=I instanceof Error?I.message:String(I);$.push(S),s.diagnostics.push({code:`graph.provider.${c.id}.failed`,severity:"warning",message:`${c.id} provider failed: ${S}`,recommendation:"Repair the referenced source artifact and rerun workspace graph emit."});}s.providers.push({id:c.id,version:c.version,status:E,permission:"filesystem-read",discoveredEntities:s.entities.size-y.entities,discoveredRelations:s.relations.size-y.relations,proofCount:s.proofs.size-y.proofs,diagnostics:$});}Pe(s),await be(s,e.projectTopology);let l=[...s.entities.values()].sort((c,y)=>c.id.localeCompare(y.id)),p=[...s.relations.values()].sort((c,y)=>c.id.localeCompare(y.id)),h=[...s.proofs.values()].sort((c,y)=>c.id.localeCompare(y.id)),u=l.filter(c=>c.proofIds.length>0).length,f=p.filter(c=>c.proofIds.length>0).length,m=s.providers.filter(c=>["passed","partial"].includes(c.status)).length,k=e.projectTopology.diagnostics?.filter(c=>c.code==="graph.edges.missing").flatMap(c=>c.nodeIds??[])??[];return k.length>0&&s.diagnostics.push({code:"graph.knowledge.project_relationships_unknown",severity:"warning",message:`${k.length} project(s) have no proven inter-project relationship. This is unknown topology, not proof of independence.`,entityIds:k.map(c=>v("project",`project:${c}`)),recommendation:"Author service contracts or add OpenAPI, Compose, Kubernetes, package or import evidence."}),{schemaVersion:q,generatedAt:o.toISOString(),source:e.source,workspace:e.workspace,projectTopology:e.projectTopology,entities:l,relations:p,proofs:h,providers:[...s.providers].sort((c,y)=>c.id.localeCompare(y.id)),quality:{entityCount:l.length,relationCount:p.length,proofCount:h.length,entityProofCoverageRatio:l.length===0?1:u/l.length,relationProofCoverageRatio:p.length===0?1:f/p.length,providerSuccessRatio:s.providers.length===0?1:m/s.providers.length,conflictCount:s.diagnostics.filter(c=>c.code.includes("conflict")).length,unknownCount:s.diagnostics.filter(c=>c.code.includes("unknown")).length,bindingCoverage:je(l,p),portable:true,secretValuesEmitted:false},diagnostics:[...s.diagnostics].sort((c,y)=>c.code.localeCompare(y.code)||c.message.localeCompare(y.message))}}function Ge(e,t){return v(e,t)}
|
|
2
|
-
export{q as a,Te as b,De as c,Le as d,Ge as e};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export{d as WORKSPACE_CONTEXT_AGENT_REPORT_PATH,c as WORKSPACE_CONTEXT_SCHEMA_VERSION,e as buildWorkspaceAgentContext,f as writeWorkspaceAgentContext}from'./chunk-IDQKVJUF.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export{a as WORKSPACE_GRAPH_TOKEN_EFFICIENCY_SCHEMA_VERSION,b as buildWorkspaceGraphTokenEfficiencyReport}from'./chunk-CV5HKU4P.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import {a as a$2}from'./chunk-KKAOTTYO.js';import {q as q$1}from'./chunk-AL2A7Q4X.js';import {b as b$1,c}from'./chunk-MV7KF75Q.js';import {a as a$3}from'./chunk-RTVRZFIJ.js';import {g}from'./chunk-DDQ3XK3H.js';import {j,e as e$1}from'./chunk-BQGBU2Y3.js';import {l as l$1}from'./chunk-UETZ7USY.js';import {a as a$1,e as e$2,f as f$1}from'./chunk-IDQKVJUF.js';import {f,g as g$1,h as h$2}from'./chunk-6UTM5AJI.js';import {k,l,h as h$1,m as m$1,n,p as p$1,q}from'./chunk-C3FLCDRN.js';import {m,p,s}from'./chunk-L2YK5RV2.js';import {o,r as r$1,s as s$1}from'./chunk-KMLPHFLD.js';import {e}from'./chunk-SS2VV3D5.js';import {b as b$2}from'./chunk-RVQLMTTI.js';import {a,b,h,i,g as g$2,f as f$2}from'./chunk-AHLMIL2T.js';import re from'path';import ie from'fs-extra';function r(a,t){if(!a)throw new Error(`Workspace Intelligence run semantic violation: ${t}`)}function se(a,t){return a.length===t.length&&a.every((u,d)=>u===t[d])}function ae(a$2){b$2(a.intelligenceRun,a$2,"Workspace Intelligence run report"),r(a$2.chainSchemaVersion===a$1,`chainSchemaVersion must be ${a$1}`),r(a$2.artifactPath===a.intelligenceRun,`artifactPath must be ${a.intelligenceRun}`),r(a$2.preflight.length===g$2.length,`preflight must contain exactly ${g$2.length} entries`);for(let[o,i]of g$2.entries()){let s=a$2.preflight[o];r(s?.id===i,`preflight[${o}].id must be ${i}`),r(se(s.artifacts,h[i]),`${i} preflight artifacts must match the runtime registry`),i==="sync"?r(s.status==="passed"&&s.result==="synchronized"||s.status==="failed"&&s.result==="failed","sync preflight status and result are incoherent"):r(s.status==="passed"&&(s.result==="created"||s.result==="reused")||s.status==="failed"&&s.result==="failed"||s.status==="skipped"&&s.result==="skipped","baseline preflight status and result are incoherent");}let t=a$2.preflight[1];r(a$2.baselineCreated===(t?.result==="created"),"baselineCreated must match the baseline preflight result"),r(a$2.stages.length===f$2.length,`stages must contain exactly ${f$2.length} canonical steps`);let u=a$2.preflight[0],d=u?.status==="failed";for(let[o,i$1]of f$2.entries()){let s=a$2.stages[o];r(s?.id===i$1,`stages[${o}].id must be ${i$1}`),r(se(s.artifacts,i[i$1].produces),`${i$1} artifacts must match the runtime registry`),d&&r(s.status==="skipped",`${i$1} must be skipped after a hard failure`),s.status==="passed"?r(s.exitCode===0,`${i$1} passed stage must have exitCode 0`):s.status==="blocked"?r(s.exitCode!==0,`${i$1} blocked stage must have a non-zero exitCode`):s.status==="failed"?(r(s.exitCode===1,`${i$1} failed stage must have exitCode 1`),d=true):(r(s.exitCode===0,`${i$1} skipped stage must have exitCode 0`),r(s.durationMs===0,`${i$1} skipped stage must have durationMs 0`)),o===0&&((u?.status==="failed"||s.status==="failed")&&r(t?.status==="skipped","baseline must be skipped when sync or model fails"),t?.status==="skipped"&&r(u?.status==="failed"||s.status==="failed"||s.status==="skipped","baseline may be skipped only after an upstream failure"),t?.status!=="passed"&&(d=true));}let m=a$2.preflight.some(o=>o.status==="failed")||a$2.stages.some(o=>o.status==="failed"),E=a$2.stages.some(o=>o.status==="blocked"),n=m?"failed":E?"blocked":"passed",f=n==="failed"?1:n==="blocked"?2:0;r(a$2.status===n,`status must be ${n}`),r(a$2.exitCode===f,`exitCode must be ${f}`);}var ue=a.intelligenceRun,pe=b.intelligenceRun,ne=ue;async function Oe(a$4){let t=re.resolve(a$4.workspacePath),u=[],d=[],m$2=false,E=async(e,l)=>{let g=[...h[e]];if(m$2){u.push({id:e,status:"skipped",result:"skipped",durationMs:0,artifacts:g,message:"skipped because a required upstream operation failed"});return}let k=Date.now();try{let c=await l();u.push({id:e,status:"passed",result:c.result,durationMs:Date.now()-k,artifacts:g,message:c.message});}catch(c){m$2=true,u.push({id:e,status:"failed",result:"failed",durationMs:Date.now()-k,artifacts:g,message:c instanceof Error?c.message:String(c)});}},n$1=async(e,l)=>{let g=[...i[e].produces];if(m$2){d.push({id:e,status:"skipped",durationMs:0,artifacts:g,exitCode:0,message:"skipped because a required upstream stage failed"});return}let k=Date.now();try{let c=await l(),b=c.exitCode??0;d.push({id:e,status:c.blocked||b!==0?"blocked":"passed",durationMs:Date.now()-k,artifacts:g,exitCode:b,message:c.message});}catch(c){m$2=true,d.push({id:e,status:"failed",durationMs:Date.now()-k,artifacts:g,exitCode:1,message:c instanceof Error?c.message:String(c)});}};await E("sync",async()=>{let e=await g(t,true),l=await o({workspacePath:t});return {result:"synchronized",message:`registry ${e.added.length} added/${e.skipped} existing; contract ${l.contract.projects.length} projects`}});let f$2,o$1=()=>{if(!f$2)throw new Error("canonical workspace model is unavailable");return f$2};await n$1("model",async()=>(f$2={...await p({workspacePath:t,includeEvidence:true}),build:m({mode:"full",engineStatus:"disabled"})},await s(f$2,t),{message:`${f$2.summary.projectCount} projects modeled`}));let i$1=re.join(t,a.snapshot),s$2=false;await E("baseline",async()=>{if(!await ie.pathExists(i$1)){let g=await k({workspacePath:t,model:o$1()});return await l(g,t),s$2=true,{result:"created",message:"initial structural baseline created"}}let e=await ie.readJson(i$1),l$1=h$1(e);return l$1?(await l(l$1,t),{result:"reused",message:"legacy structural baseline migrated and reused"}):{result:"reused",message:"existing structural baseline reused"}}),await n$1("diff",async()=>{let e=await m$1({workspacePath:t,fromPath:a.snapshot,model:o$1()});return await n(e,t),{message:e.summary.changed?"workspace changes detected":"no workspace changes"}}),await n$1("impact",async()=>{let e=await p$1({workspacePath:t,fromPath:a.diff});return await q(e,t),{message:`${e.summary.risk} risk; ${e.summary.affectedProjects} affected`}}),await n$1("doctor-evidence",async()=>{let e=await q$1({workspace:t,json:true,quiet:true});return {exitCode:e,blocked:e!==0,message:`doctor exit ${e}`}}),await n$1("contract-evidence",async()=>{let e=await r$1({workspacePath:t,strict:true});return await s$1({workspacePath:t,result:e}),{exitCode:e.status==="passed"?0:1,blocked:e.status!=="passed",message:`contract ${e.status}`}}),await n$1("analyze-evidence",async()=>{let e=await a$2({workspacePath:t,json:true,strict:false});return {blocked:e.summary.verdict==="blocked"||a$4.strict===true&&e.summary.verdict==="needs-attention",exitCode:e.summary.verdict==="blocked"||a$4.strict===true&&e.summary.verdict==="needs-attention"?1:0,message:`analyze ${e.summary.verdict} (${e.summary.score}/100)`}}),await n$1("readiness-evidence",async()=>{let e=await a$3({startPath:t,writeReport:true,skipVerify:true});return {blocked:e.overallStatus==="fail"||a$4.strict===true&&e.overallStatus==="warn",exitCode:e.overallStatus==="fail"||a$4.strict===true&&e.overallStatus==="warn"?1:0,message:`pre-verify readiness ${e.overallStatus}`}}),await n$1("verify",async()=>{let e=await f({workspacePath:t,fromImpactPath:a.impact});await g$1(e,t);let l=h$2(e,{strict:a$4.strict===true});return await j(t,e$1(e,l.passed)),{blocked:!l.passed,exitCode:l.exitCode,message:`${e.summary.verdict}; gate ${l.passed?"passed":"blocked"}`}}),await n$1("context",async()=>{let e=await e$2({workspacePath:t,model:o$1(),agent:a$4.agent??"generic",includeEvidence:true});return await f$1(e,t),{message:`context grounded for ${e.agent}`}}),await n$1("agent-sync",async()=>({message:`${(await l$1({workspacePath:t,agent:a$4.agent??"generic",write:true,refreshContext:false,strict:false,preset:"enterprise"})).writtenFiles.length} grounding files written`})),await n$1("explain",async()=>{let e=await b$1({workspacePath:t,target:{kind:"release-blocked"}});return await c(e,t),{message:e.summary}});let oe=d.some(e=>e.status==="blocked"),W=m$2?"failed":oe?"blocked":"passed",ce=m$2?1:W==="blocked"?2:0,w={schemaVersion:pe,chainSchemaVersion:a$1,generatedAt:new Date().toISOString(),workspacePath:t,baselineCreated:s$2,preflight:u,status:W,exitCode:ce,stages:d,artifactPath:ne};return ae(w),await e(t,ne,w),w}export{ue as WORKSPACE_INTELLIGENCE_RUN_REPORT_PATH,pe as WORKSPACE_INTELLIGENCE_RUN_SCHEMA_VERSION,Oe as runWorkspaceIntelligenceChain};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export{a as runWorkspaceStage}from'./chunk-5EXZBCAZ.js';export{a as WORKSPACE_RUN_LAST_REPORT_FILENAME}from'./chunk-VKTUWUS6.js';
|