workspai 0.65.0 → 0.67.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 +28 -23
- package/contracts/agent-customization-pack.v1.json +4 -2
- package/contracts/analyze-last-run.v1.json +9 -1
- package/contracts/cli-runtime-command-inventory.v1.snapshot.json +117 -0
- package/contracts/extension-cli-compatibility.v1.json +6 -0
- package/contracts/published-contract-catalog.v1.json +30 -0
- package/contracts/runtime-command-surface.v1.json +100 -2
- package/contracts/workspace-activity-board.v1.json +114 -0
- package/contracts/workspace-activity-event.v1.json +132 -0
- package/contracts/workspace-activity-monitor-fleet.v1.json +18 -0
- package/contracts/workspace-activity-monitor-snapshot.v1.json +161 -0
- package/contracts/workspace-intelligence/agent-bootstrap-receipt.v1.json +17 -0
- package/contracts/workspace-intelligence/mcp-design.v1.json +49 -2
- package/contracts/workspace-intelligence/project-agent-entry.v1.json +3 -0
- package/contracts/workspace-intelligence/project-context-agent.v1.json +49 -7
- package/contracts/workspace-intelligence/project-knowledge-graph-reference.v1.json +51 -0
- package/contracts/workspace-intelligence/workspace-intelligence-benchmark.v1.json +196 -0
- package/contracts/workspace-intelligence/workspace-knowledge-graph.v1.json +97 -2
- package/contracts/workspace-intelligence/workspace-skills-index.v1.json +34 -0
- package/contracts/workspace-intelligence-architecture.v1.json +17 -0
- package/contracts/workspace-intelligence-chain.v1.json +17 -0
- package/dist/analyze-IC2KRVCG.js +1 -0
- package/dist/{artifact-remediation-plan-XIQNI35L.js → artifact-remediation-plan-GFFHC2ZU.js} +1 -1
- package/dist/autopilot-release-RECEZAZI.js +1 -0
- package/dist/capabilities-command-X4WZIJNR.js +1 -0
- package/dist/chunk-2LIVMG5C.js +2 -0
- package/dist/chunk-2M62CU3O.js +2 -0
- package/dist/chunk-2MTJWPQ4.js +1 -0
- package/dist/chunk-2MVIRJJR.js +1 -0
- package/dist/chunk-2RPFCBS4.js +1 -0
- package/dist/chunk-3O7LZPKA.js +4 -0
- package/dist/chunk-3OGPTLI2.js +1 -0
- package/dist/{chunk-6TBTMWNA.js → chunk-4RV4JVGR.js} +1 -1
- package/dist/{chunk-YYQEWAES.js → chunk-4WVOAX2V.js} +1 -1
- package/dist/{chunk-N4QQADXX.js → chunk-5EVDW7JM.js} +1 -1
- package/dist/{chunk-J3X56S7L.js → chunk-5ME4W4LN.js} +1 -1
- package/dist/chunk-5OA33JH2.js +2 -0
- package/dist/chunk-5TY74LLW.js +2 -0
- package/dist/chunk-6254CWUY.js +49 -0
- package/dist/{chunk-D5YJOQYK.js → chunk-6E2Y3XGT.js} +1 -1
- package/dist/chunk-ARUFY5W3.js +1 -0
- package/dist/chunk-B4IVVTMQ.js +2 -0
- package/dist/{chunk-HDNATYW7.js → chunk-BHFRP7TV.js} +1 -1
- package/dist/{chunk-KTN2ARZJ.js → chunk-BHM6RHTA.js} +3 -3
- package/dist/chunk-BRYJTW6S.js +2 -0
- package/dist/{chunk-HCFWT42C.js → chunk-BUYLM6QV.js} +1 -1
- package/dist/chunk-CPR2CMOY.js +1 -0
- package/dist/{chunk-XGE2FDI4.js → chunk-CZVT7T2X.js} +1 -1
- package/dist/chunk-EHCKITR4.js +2 -0
- package/dist/chunk-ENZPM52J.js +1 -0
- package/dist/chunk-FPDH3N3A.js +7 -0
- package/dist/{chunk-PXWKMPPI.js → chunk-FX5J6JCK.js} +1 -1
- package/dist/chunk-FY4X2VOE.js +39 -0
- package/dist/chunk-GIQ4SDRJ.js +1 -0
- package/dist/chunk-H77ZNH5O.js +1 -0
- package/dist/{chunk-2RL6RRT2.js → chunk-HQLBO23O.js} +50 -50
- package/dist/chunk-HYE5UHPV.js +2 -0
- package/dist/{chunk-D65FCQIO.js → chunk-IKUFNK46.js} +1 -1
- package/dist/{chunk-WRQWVSBJ.js → chunk-IQQMFRWM.js} +1 -1
- package/dist/chunk-JCGSIDMC.js +2 -0
- package/dist/chunk-KENOAC2Q.js +13 -0
- package/dist/chunk-KQ2TMI26.js +97 -0
- package/dist/chunk-L5Q2S5GY.js +3 -0
- package/dist/chunk-LPCZHKD5.js +1 -0
- package/dist/chunk-N4QFNOAI.js +1 -0
- package/dist/chunk-NMXGSVMD.js +1 -0
- package/dist/{chunk-GQSRNUCU.js → chunk-NVND4727.js} +3 -3
- package/dist/{chunk-W6FHVXNL.js → chunk-OCNPOYMA.js} +1 -1
- package/dist/chunk-PSYQ6IJA.js +12 -0
- package/dist/{chunk-VRGEPPUB.js → chunk-QMQBX3RV.js} +1 -1
- package/dist/{chunk-YUGKQ44M.js → chunk-SLFOUSRW.js} +1 -1
- package/dist/chunk-SRLWHOLF.js +1 -0
- package/dist/chunk-SVYY55IS.js +157 -0
- package/dist/chunk-SX6A656X.js +1 -0
- package/dist/{chunk-X6TNBARH.js → chunk-TABXSDTR.js} +2 -2
- package/dist/chunk-THIG2YQP.js +681 -0
- package/dist/chunk-TP7VKEUF.js +1 -0
- package/dist/chunk-U5ENEDJA.js +7 -0
- package/dist/chunk-UTV4DTNM.js +1 -0
- package/dist/chunk-VI4ZRAY6.js +1 -0
- package/dist/chunk-VQZ5PI5J.js +1 -0
- package/dist/chunk-VWBMDGPY.js +9 -0
- package/dist/chunk-XDPTAV2T.js +2 -0
- package/dist/chunk-XWKGZRHN.js +1 -0
- package/dist/chunk-Y35VLVF6.js +5 -0
- package/dist/{chunk-VYDURWN7.js → chunk-Y4Z6CEII.js} +1 -1
- package/dist/chunk-YYY2WXOH.js +1 -0
- package/dist/chunk-ZGHJIQXL.js +1 -0
- package/dist/chunk-ZI2E7P6O.js +4 -0
- package/dist/{create-ALT2ME6H.js → create-72ITVZXV.js} +1 -1
- package/dist/{demo-kit-QHIDCSBI.js → demo-kit-5UQH2OXC.js} +1 -1
- package/dist/{doctor-RW4R3O5C.js → doctor-CVYUESRQ.js} +1 -1
- package/dist/{dotnet-webapi-clean-AVHPJG7Y.js → dotnet-webapi-clean-YEHYIGOT.js} +1 -1
- package/dist/{goal-lifecycle-VYOKS6E6.js → goal-lifecycle-H55AGFCB.js} +1 -1
- package/dist/goal-pack-6OBZOPCD.js +1 -0
- package/dist/{gofiber-standard-47S2GYAO.js → gofiber-standard-C44IIQYH.js} +1 -1
- package/dist/{gogin-standard-EWB4XNOI.js → gogin-standard-X7VKACVR.js} +1 -1
- package/dist/index.d.ts +20 -2
- package/dist/index.js +177 -177
- package/dist/live-command-5VXPR43F.js +15 -0
- package/dist/{pipeline-U4N2DVD7.js → pipeline-SKYOXWHW.js} +1 -1
- package/dist/{project-agent-entry-YAQCHIMP.js → project-agent-entry-5IUBEREI.js} +1 -1
- package/dist/project-intelligence-lens-LQCN65P2.js +1 -0
- package/dist/{project-test-coverage-4S7MEQ6T.js → project-test-coverage-KD4LLFGV.js} +1 -1
- package/dist/{pythonRapidkitExec-VAW5XE4Z.js → pythonRapidkitExec-44ORGQ4R.js} +1 -1
- package/dist/{rust-axum-M5X4ZC4Z.js → rust-axum-JKZTZDRZ.js} +1 -1
- package/dist/{springboot-standard-Y5ADLZMQ.js → springboot-standard-PI4FLTAN.js} +1 -1
- package/dist/verified-goal-HN7G532B.js +1 -0
- package/dist/{workspace-HGUZWNAB.js → workspace-5W7FYGDQ.js} +1 -1
- package/dist/{workspace-agent-sync-GEN3KBAX.js → workspace-agent-sync-OZCDQORK.js} +1 -1
- package/dist/{workspace-archive-ZBCKJHXS.js → workspace-archive-NOSGRKRZ.js} +1 -1
- package/dist/{workspace-context-4WIWFW26.js → workspace-context-L65BR5L6.js} +1 -1
- package/dist/{workspace-contract-7DXK4GF5.js → workspace-contract-JYHNEJPV.js} +1 -1
- package/dist/workspace-explain-SUBK6FLO.js +1 -0
- package/dist/workspace-explain-contract-WMREJWHF.js +1 -0
- package/dist/{workspace-feedback-RQ4TGJW6.js → workspace-feedback-MWGCT5R2.js} +1 -1
- package/dist/{workspace-foundation-J3NNRMI3.js → workspace-foundation-VIB3PXNH.js} +1 -1
- package/dist/{workspace-graph-stream-PQI7OGCE.js → workspace-graph-stream-45JHE4MG.js} +1 -1
- package/dist/workspace-graph-token-efficiency-NPECU6Y5.js +1 -0
- package/dist/{workspace-history-SYCDK7FO.js → workspace-history-JKW3VJO3.js} +1 -1
- package/dist/{workspace-intelligence-6FS26JOQ.js → workspace-intelligence-3C47PK4L.js} +1 -1
- package/dist/workspace-intelligence-benchmark-SRDIHX3X.js +1 -0
- package/dist/workspace-intelligence-evaluation-OJIQS5SN.js +1 -0
- package/dist/{workspace-intelligence-runner-XYUPCSLN.js → workspace-intelligence-runner-OWN5ZI6W.js} +1 -1
- package/dist/{workspace-intelligence-runtime-registry-IW6J53LO.js → workspace-intelligence-runtime-registry-UKFB3BI7.js} +1 -1
- package/dist/workspace-knowledge-graph-AKG5NUU6.js +1 -0
- package/dist/{workspace-knowledge-graph-contract-L3CLAM2M.js → workspace-knowledge-graph-contract-X52KXBXJ.js} +1 -1
- package/dist/{workspace-knowledge-graph-query-FZXSPWGK.js → workspace-knowledge-graph-query-DXA4CROE.js} +1 -1
- package/dist/workspace-knowledge-graph-snapshot-SNI5K2RL.js +1 -0
- package/dist/{workspace-marker-7NHMDIRL.js → workspace-marker-XGAWZZDX.js} +1 -1
- package/dist/workspace-mcp-serve-PK226GMV.js +3 -0
- package/dist/workspace-model-R4ISKDB2.js +1 -0
- package/dist/{workspace-onboarding-X3PWRIIS.js → workspace-onboarding-Y5RPEFUD.js} +1 -1
- package/dist/{workspace-python-engine-state-J4QKW55K.js → workspace-python-engine-state-BE4A3BL5.js} +1 -1
- package/dist/{workspace-readme-G7TZ3V5T.js → workspace-readme-PL5V3UDH.js} +2 -2
- package/dist/{workspace-registry-summary-LJN4WHIZ.js → workspace-registry-summary-STGUGROG.js} +1 -1
- package/dist/workspace-repair-engine-FNLL5ZDK.js +3 -0
- package/dist/workspace-run-GFBFGUFM.js +1 -0
- package/dist/{workspace-verify-USRRIM2F.js → workspace-verify-AXVX3PF3.js} +1 -1
- package/dist/{workspace-watch-43YZPLF7.js → workspace-watch-RLBEJKXE.js} +1 -1
- package/docs/DEVELOPMENT.md +19 -0
- package/docs/README.md +19 -16
- package/docs/SETUP.md +10 -0
- package/docs/agent-entry.md +22 -7
- package/docs/ci-workflows.md +1 -1
- package/docs/commands-reference.md +58 -8
- package/docs/contracts/ARTIFACT_CATALOG.md +64 -44
- package/docs/contracts/COMMAND_OWNERSHIP_MATRIX.md +1 -0
- package/docs/contracts/NAMING_AND_COEXISTENCE.md +20 -18
- package/docs/contracts/README.md +7 -3
- package/docs/real-world-qualification.md +19 -3
- package/docs/workspace-intelligence-benchmark.md +82 -0
- package/docs/workspace-knowledge-graph.md +95 -27
- package/docs/workspace-live-activity.md +209 -0
- package/docs/workspace-operations.md +32 -9
- package/package.json +4 -2
- package/dist/analyze-5PDVWECJ.js +0 -1
- package/dist/autopilot-release-JVIJCTKX.js +0 -1
- package/dist/capabilities-command-LHM3XIS6.js +0 -1
- package/dist/chunk-2647BYBC.js +0 -1
- package/dist/chunk-27UR373Z.js +0 -1
- package/dist/chunk-2C5ZBVBI.js +0 -2
- package/dist/chunk-6JWNDWOA.js +0 -1
- package/dist/chunk-CCDGHPEJ.js +0 -2
- package/dist/chunk-DFG33SBR.js +0 -2
- package/dist/chunk-FY4IIAIF.js +0 -1
- package/dist/chunk-HEZZ72V4.js +0 -94
- package/dist/chunk-HN7P4T3B.js +0 -681
- package/dist/chunk-ILIBOMYL.js +0 -1
- package/dist/chunk-J7QYANXK.js +0 -8
- package/dist/chunk-JD3A5QM6.js +0 -2
- package/dist/chunk-JQLJBK5N.js +0 -1
- package/dist/chunk-KLSSPJTV.js +0 -1
- package/dist/chunk-L22EABIC.js +0 -7
- package/dist/chunk-LNXIMF3O.js +0 -1
- package/dist/chunk-MDTI3UEB.js +0 -1
- package/dist/chunk-MOSXTVPU.js +0 -1
- package/dist/chunk-MYJQGGIU.js +0 -5
- package/dist/chunk-NOV6723U.js +0 -1
- package/dist/chunk-NYEAMMUL.js +0 -1
- package/dist/chunk-NZ3WZYD5.js +0 -1
- package/dist/chunk-O5B2L3R2.js +0 -1
- package/dist/chunk-OWB5KWSS.js +0 -13
- package/dist/chunk-P5PSZQPB.js +0 -2
- package/dist/chunk-QCKWQFCD.js +0 -1
- package/dist/chunk-QI3HG6IG.js +0 -144
- package/dist/chunk-SWGSFLTC.js +0 -1
- package/dist/chunk-THIOE2PB.js +0 -2
- package/dist/chunk-U5FCQTVL.js +0 -4
- package/dist/chunk-UXEO5QCF.js +0 -33
- package/dist/chunk-VR6XMUF3.js +0 -2
- package/dist/chunk-VVJK5NFY.js +0 -2
- package/dist/chunk-VXKWWX7S.js +0 -8
- package/dist/chunk-W322YDHS.js +0 -49
- package/dist/chunk-WPRLXKWC.js +0 -8
- package/dist/chunk-Y5YAP4F3.js +0 -2
- package/dist/chunk-YN5X2FTP.js +0 -1
- package/dist/chunk-YOCN7GF4.js +0 -1
- package/dist/goal-pack-YWPI43QL.js +0 -1
- package/dist/project-intelligence-lens-MRQR2LQW.js +0 -1
- package/dist/verified-goal-WM34TTGE.js +0 -1
- package/dist/workspace-explain-TE2LGOAV.js +0 -1
- package/dist/workspace-explain-contract-V2IVSROX.js +0 -1
- package/dist/workspace-graph-token-efficiency-2I4X374C.js +0 -1
- package/dist/workspace-intelligence-evaluation-CQDKOYZZ.js +0 -1
- package/dist/workspace-knowledge-graph-SWCKDTPF.js +0 -1
- package/dist/workspace-knowledge-graph-snapshot-M572JRB4.js +0 -1
- package/dist/workspace-mcp-serve-IBMTFQDY.js +0 -3
- package/dist/workspace-model-ZL6WCICX.js +0 -1
- package/dist/workspace-repair-engine-NX7I632M.js +0 -3
- package/dist/workspace-run-6GT5OBQ5.js +0 -1
package/dist/chunk-UXEO5QCF.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import {c,d}from'./chunk-MOSXTVPU.js';import {m,k as k$1,j as j$1,b,t,n,i}from'./chunk-RGNCL5OB.js';import {a}from'./chunk-2FIX2MDC.js';import wt from'crypto';import tt from'os';import l from'path';import*as p from'fs-extra';import {execa}from'execa';var yt=["version","project","create","add","list","info","upgrade","diff","doctor","license","commands","reconcile","rollback","uninstall","checkpoint","optimize","snapshot","frameworks","modules","merge"],M=new Set(yt);var g=a();async function et(t){for(let e of [c,d]){let r=l.join(t,e);if(await p.pathExists(r))try{let n=await p.readJson(r);if(n&&typeof n=="object")return n}catch{return null}}return null}function O(){let t=[],e=i=>{let o=i?.trim();o&&t.push(o);};e(process.env.RAPIDKIT_BRIDGE_PYTHON),e(process.env.RAPIDKIT_PYTHON_CMD),e(process.env.POETRY_PYTHON);let r=_();(r.startsWith("/")||r.startsWith(".")||r.startsWith(".."))&&!r.startsWith("file:")&&e(m(l.join(l.resolve(r),".venv")));for(let i of k$1())i.args.length===1&&i.args[0]==="--version"&&e(i.command);for(let i of j$1())e(i);return [...new Set(t)]}function v(t,e){return t==="py"?["-3",...e]:e}function H(t){if(!t)return t;let e=["Installed Poetry version does not support '--no-update'. Falling back to 'poetry lock'."];return t.split(/\r?\n/).filter(i=>!e.some(o=>i.includes(o))).join(`
|
|
2
|
-
`)}var y=class extends Error{code;constructor(e,r){super(r),this.code=e;}};function D(t){if(t instanceof y)switch(t.code){case "PYTHON_NOT_FOUND":return `Workspai could not find Python (python3/python/py) on your PATH.
|
|
3
|
-
Install Python 3.10+ and ensure \`${i()}\` is available, then retry.
|
|
4
|
-
Tip: if you are inside a RapidKit project, use the local ./rapidkit launcher.`;case "BRIDGE_VENV_CREATE_FAILED":return `Workspai failed to create its bridge virtual environment.
|
|
5
|
-
`+(b()?`Ensure Python is installed with venv support.
|
|
6
|
-
`:`Ensure Python venv support is installed (e.g., python3-venv).
|
|
7
|
-
`)+`Details: ${t.message}`;case "BRIDGE_PIP_BOOTSTRAP_FAILED":return `Workspai could not bootstrap pip inside the bridge virtual environment.
|
|
8
|
-
`+(b()?`Ensure pip is available for your Python installation and retry.
|
|
9
|
-
`:`Install python3-venv/python3-pip and retry.
|
|
10
|
-
`)+`Details: ${t.message}`;case "BRIDGE_PIP_UPGRADE_FAILED":return `Workspai could not upgrade pip in the bridge virtual environment.
|
|
11
|
-
Check your network/proxy or disable RAPIDKIT_BRIDGE_UPGRADE_PIP.
|
|
12
|
-
Details: ${t.message}`;case "BRIDGE_PIP_INSTALL_FAILED":return `Workspai could not install rapidkit-core in the bridge virtual environment.
|
|
13
|
-
Check your network/proxy, or install manually with: pipx install rapidkit-core.
|
|
14
|
-
Details: ${t.message}`;default:return `Workspai bridge error: ${t.message}`}return `Workspai failed to run the Python core engine: ${t instanceof Error?t.message:String(t)}`}function _(){let t=process.env.RAPIDKIT_CORE_PYTHON_PACKAGE;return t&&t.trim()?t.trim():"rapidkit-core"}function vt(){let t=_(),e=process.env.RAPIDKIT_CORE_PYTHON_PACKAGE_ID,r=e&&e.trim()?`${t}|${e.trim()}`:t;return wt.createHash("sha256").update(r).digest("hex").slice(0,12)}function j(){let t=process.env.XDG_CACHE_HOME;return t&&t.trim()?t:l.join(tt.homedir(),".cache")}function Pt(){return l.join(j(),"rapidkit","npm-bridge","venv")}function nt(){let t=vt();return l.join(j(),"rapidkit","npm-bridge",`venv-${t}`)}function Y(t){return m(t)}function U(t){return n(t)}async function rt(t$1=process.platform,e=process.env){let r=b(t$1)?["rapidkit.exe","rapidkit.cmd"]:["rapidkit"],n=t(e,t$1).flatMap(i=>r.map(o=>l.join(i,o)));for(let i of [...new Set(n)])try{if(!await p.pathExists(i))continue;let o=await execa(i,["--version","--json"],{reject:false,stdio:"pipe",timeout:4e3});if(o.exitCode===0&&await k(o.stdout))return {cmd:i,baseArgs:[]}}catch{}return null}async function it(t=process.platform,e=process.env){let r=b(t)?"rapidkit.exe":"rapidkit",n=(e.PATH??"").split(l.delimiter).filter(Boolean);for(let i of n){let o=l.join(i,r);try{if(!await p.pathExists(o))continue;let c=await execa(o,["--version","--json"],{reject:false,stdio:"pipe",timeout:4e3});if(c.exitCode===0&&await k(c.stdout,{requireSchema:true}))return {cmd:o,baseArgs:[]}}catch{}}return null}function ot(t){return /[<>=!~]=|@|\.whl$|\.tar\.gz$|\.zip$|git\+|https?:\/\//.test(t)}function Ct(t){return l.dirname(l.dirname(t))}function st(){return l.join(j(),"rapidkit","npm-bridge","core-commands.json")}async function at(t){let e=!!process.env.RAPIDKIT_DEBUG,r=n=>{e&&process.stderr.write(`[DEBUG] tryRapidkit(${t}): ${n}
|
|
15
|
-
`);};try{r("probing interpreter-specific rapidkit script");let i=((await execa(t,v(t,["-c","import sysconfig, os; print(os.path.join(sysconfig.get_path('scripts'), 'rapidkit'))"]),{reject:false,stdio:"pipe",timeout:2e3})).stdout??"").toString().trim();if(r(`script path: ${i}`),i)try{if(await p.pathExists(i)){r(`found script at ${i}; invoking --version --json`);let o=await execa(i,["--version","--json"],{reject:false,stdio:"pipe",timeout:4e3});if(r(`script exitCode=${o.exitCode}`),o.exitCode===0){let c=(o.stdout??"").toString().trim();try{let s=JSON.parse(c),a=!!s&&typeof s=="object"&&s!==null&&"version"in s;if(r(`script JSON parse ok=${a}`),a)return true}catch{r("script output not valid JSON");}}}}catch(o){r(`interpreter-specific script probe failed: ${String(o)}`);}}catch(n){r(`interpreter-specific script probe error: ${String(n)}`);}try{r('probing importlib.find_spec("rapidkit")');let n=await execa(t,v(t,["-c","import importlib.util; print(1 if importlib.util.find_spec('rapidkit') else 0)"]),{reject:false,stdio:"pipe",timeout:2e3});if(r(`import probe exitCode=${n.exitCode} stdout=${(n.stdout??"").toString().trim()}`),n.exitCode===0&&(n.stdout??"").toString().trim()==="1")return true}catch(n){r(`import probe error: ${String(n)}`);}try{r("probing python -m rapidkit");let n=await execa(t,v(t,["-m","rapidkit","--version","--json"]),{reject:false,stdio:"pipe",timeout:8e3});if(r(`-m probe exitCode=${n.exitCode}`),n.exitCode===0)return true}catch(n){r(`-m probe error: ${String(n)}`);}try{r("probing PATH for rapidkit executables");let n=(process.env.PATH??"").split(l.delimiter).filter(Boolean);for(let i of n){let o=l.join(i,b()?"rapidkit.exe":"rapidkit");try{if(await p.pathExists(o)){r(`found candidate on PATH: ${o}; invoking --version --json`);let c=await execa(o,["--version","--json"],{reject:false,stdio:"pipe",timeout:4e3});if(r(`candidate exitCode=${c.exitCode}`),c.exitCode===0){let s=(c.stdout??"").toString().trim();try{let a=JSON.parse(s),d=a;if(a&&typeof a=="object"&&a!==null&&"version"in d&&d.schema_version===1)return true}catch{r("candidate output not valid JSON, skipping");}}}}catch(c){r(`error probing candidate ${o}: ${String(c)}`);}}return r("no valid rapidkit found on PATH"),false}catch(n){return r(`PATH probe error: ${String(n)}`),false}}async function k(t,e){let r=(t??"").toString().trim();if(!r)return false;try{let n=JSON.parse(r);if(!n||typeof n!="object"||n===null)return false;let i=n;return "version"in i?e?.requireSchema?i.schema_version===1||i.schemaVersion==="rapidkit-core-version-v1":true:false}catch{return false}}async function ct(t,e=process.platform){let r=async o=>{try{let a=(await et(o))?.metadata?.python?.venvPath;return typeof a!="string"||!a.trim()?null:l.isAbsolute(a)?a:l.join(o,a)}catch{return null}},n$1=async(o,c)=>{let s=n(c,e);if(await p.pathExists(s)){let d=await execa(s,["--version","--json"],{reject:false,stdio:"pipe",timeout:1500,cwd:o});if(d.exitCode===0&&await k(d.stdout))return {cmd:s,baseArgs:[],workspaceDir:o}}let a=m(c,e);if(await p.pathExists(a)){let d=await execa(a,["-m","rapidkit","--version","--json"],{reject:false,stdio:"pipe",timeout:1500,cwd:o});if(d.exitCode===0&&await k(d.stdout))return {cmd:a,baseArgs:["-m","rapidkit"],workspaceDir:o}}return null},i=t;for(let o=0;o<25;o+=1){let c=await r(i),s=[l.join(i,".venv"),c].filter(d=>!!d);for(let d of [...new Set(s)]){let P=await n$1(i,d);if(P)return P}let a=l.dirname(i);if(a===i)break;i=a;}return null}async function Et(t){try{let e=l.join(t,".python-version");if(await p.pathExists(e)){let n=(await p.readFile(e,"utf-8")).trim();if(n)return n}}catch{}try{let e=await et(t);if(typeof e?.pythonVersion=="string"&&e.pythonVersion.trim())return e.pythonVersion.trim();let n=e?.metadata?.python?.pythonVersion;if(typeof n=="string"&&n.trim())return n.trim()}catch{}return null}async function F(t){if(t&&t.trim())try{let s=await ct(t);if(s){let a=s.workspaceDir??(l.dirname(s.cmd).includes(".venv")?l.dirname(l.dirname(l.dirname(s.cmd))):l.dirname(s.cmd)),d=await Et(a);return d&&(process.env.PYENV_VERSION=d),s}}catch{}let e=await St();if(e.kind==="venv"){let s=Ct(e.pythonPath),a=U(s);return await p.pathExists(a)?{cmd:a,baseArgs:[]}:{cmd:e.pythonPath,baseArgs:["-m","rapidkit"]}}try{if((await execa(e.cmd,["-m","rapidkit","--version","--json"],{reject:false,stdio:"pipe",timeout:4e3})).exitCode===0)return {cmd:e.cmd,baseArgs:["-m","rapidkit"]}}catch{}try{let a=((await execa(e.cmd,["-c","import sysconfig, os; print(os.path.join(sysconfig.get_path('scripts'), 'rapidkit'))"],{reject:false,stdio:"pipe",timeout:2e3})).stdout??"").toString().trim();if(a&&await p.pathExists(a))try{let d=await execa(a,["--version","--json"],{reject:false,stdio:"pipe",timeout:4e3});if(d.exitCode===0&&await k(d.stdout))return {cmd:a,baseArgs:[]}}catch{}}catch{}let r=await rt();if(r)return r;let n=await it();if(n)return n;let i=nt(),o=await N(e.cmd),c=U(i);return await p.pathExists(c)?{cmd:c,baseArgs:[]}:{cmd:o,baseArgs:["-m","rapidkit"]}}async function dt(){for(let t of O())try{if((await execa(t,v(t,["--version"]),{reject:false,stdio:"pipe",timeout:2e3})).exitCode===0)return t}catch{}return null}async function B(){let t=null,e=false;for(let r of O()){try{if((await execa(r,v(r,["--version"]),{reject:false,stdio:"pipe",timeout:2e3})).exitCode!==0)continue;e=true;}catch{continue}try{return await N(r)}catch(n){t=n;continue}}throw e?t instanceof y?t:t instanceof Error?new y("BRIDGE_VENV_BOOTSTRAP_FAILED",t.message):new y("BRIDGE_VENV_BOOTSTRAP_FAILED","Python was detected, but the Workspai bridge environment could not be created."):new y("PYTHON_NOT_FOUND","No Python interpreter found (python3/python/py).")}async function _t(){let t=!!process.env.RAPIDKIT_DEBUG,e=n=>{t&&process.stderr.write(`[DEBUG] checkRapidkitCore: ${n}
|
|
16
|
-
`);},r=Array.from(new Set([...j$1(),...k$1(14,10).map(n=>n.command)]));for(let n of r)try{e(`Method 1: trying ${n} import`);let i=await execa(n,v(n,["-c","import rapidkit_core; print(1)"]),{reject:false,stdio:"pipe",timeout:g});if(i.exitCode===0&&i.stdout?.trim()==="1")return e(`\u2713 Found via ${n} import`),true}catch{continue}for(let n of r)try{e(`Method 2: trying ${n} -m pip show`);let i=await execa(n,v(n,["-m","pip","show","rapidkit-core"]),{reject:false,stdio:"pipe",timeout:g});if(i.exitCode===0&&i.stdout?.includes("Name: rapidkit-core"))return e(`\u2713 Found via ${n} -m pip show`),true}catch{continue}for(let n of ["pip","pip3"])try{e(`Method 3: trying ${n} show`);let i=await execa(n,["show","rapidkit-core"],{reject:false,stdio:"pipe",timeout:g});if(i.exitCode===0&&i.stdout?.includes("Name: rapidkit-core"))return e(`\u2713 Found via ${n} show`),true}catch{continue}try{e("Method 4: checking pyenv versions");let n=await execa("pyenv",["versions","--bare"],{reject:false,stdio:"pipe",timeout:g});if(n.exitCode===0&&n.stdout){let i=n.stdout.split(`
|
|
17
|
-
`).filter(o=>o.trim());e(`Found pyenv versions: ${i.join(", ")}`);for(let o of i){let c=process.env.PYENV_ROOT||l.join(tt.homedir(),".pyenv"),s=l.join(c,"versions",o.trim(),"bin","pip");try{let a=await execa(s,["show","rapidkit-core"],{reject:false,stdio:"pipe",timeout:g});if(a.exitCode===0&&a.stdout?.includes("Name: rapidkit-core"))return e(`\u2713 Found in pyenv ${o}`),true}catch{try{let a=await execa("pyenv",["exec","pip","show","rapidkit-core"],{reject:false,stdio:"pipe",timeout:g,env:{...process.env,PYENV_VERSION:o.trim()}});if(a.exitCode===0&&a.stdout?.includes("Name: rapidkit-core"))return e(`\u2713 Found in pyenv ${o} via PYENV_VERSION`),true}catch{continue}}}}}catch{e("pyenv not available");}for(let n of r)try{e(`Method 5: checking ${n} user site`);let i=await execa(n,v(n,["-m","site","--user-site"]),{reject:false,stdio:"pipe",timeout:g});if(i.exitCode===0&&i.stdout){let o=i.stdout.trim(),c=l.join(o,"rapidkit_core");if(await p.pathExists(c))return e("\u2713 Found in user site-packages"),true}}catch{continue}try{e("Method 6: checking pipx");let n=await execa("pipx",["list"],{reject:false,stdio:"pipe",timeout:g});if(n.exitCode===0&&n.stdout?.includes("rapidkit-core"))return e("\u2713 Found via pipx"),true}catch{e("pipx not available");}for(let n of r)try{e(`Method 6: checking ${n} -m pipx list`);let i=await execa(n,v(n,["-m","pipx","list"]),{reject:false,stdio:"pipe",timeout:g});if(i.exitCode===0&&i.stdout?.includes("rapidkit-core"))return e(`\u2713 Found via ${n} -m pipx list`),true}catch{continue}try{if(e("Method 7: checking poetry"),(await execa("poetry",["show","rapidkit-core"],{reject:false,stdio:"pipe",timeout:g})).exitCode===0)return e("\u2713 Found via poetry"),true}catch{e("poetry check failed");}for(let n of r)try{if(e(`Method 7: checking ${n} -m poetry show rapidkit-core`),(await execa(n,v(n,["-m","poetry","show","rapidkit-core"]),{reject:false,stdio:"pipe",timeout:g})).exitCode===0)return e(`\u2713 Found via ${n} -m poetry`),true}catch{continue}try{e("Method 8: checking conda");let n=await execa("conda",["list","rapidkit-core"],{reject:false,stdio:"pipe",timeout:g});if(n.exitCode===0&&n.stdout?.includes("rapidkit-core"))return e("\u2713 Found via conda"),true}catch{e("conda not available");}return e("\u2717 Not found in any environment"),false}function kt(t){let e=t.trim();if(!e||!e.startsWith("rapidkit-core"))return null;let r=e.slice(13).trim();return !r||/[\/@]|\.whl$|\.tar\.gz$|\.zip$|git\+|https?:\/\//.test(r)?null:r}function z(t){let e=t.trim();if(!e)return null;let r=e.split("."),n=[];for(let i of r){let o=i.match(/^(\d+)/);if(!o){n.push(0);continue}n.push(Number.parseInt(o[1],10));}return n}function q(t,e){let r=Math.max(t.length,e.length);for(let n=0;n<r;n+=1){let i=n<t.length?t[n]:0,o=n<e.length?e[n]:0;if(i>o)return 1;if(i<o)return -1}return 0}function xt(t){return t.length<=1?[t[0]+1]:t.length===2?[t[0]+1,0]:[t[0],t[1]+1,0]}function Rt(t){let e=t.split(",").map(n=>n.trim()).filter(Boolean);if(e.length===0)return null;let r=[];for(let n of e){let i=n.match(/^(==|>=|<=|>|<|~=)\s*([0-9][0-9A-Za-z+._-]*)$/);if(!i)return null;r.push({op:i[1],version:i[2]});}return r}function ut(t,e){let r=z(t);if(!r)return false;let n=Rt(e);if(!n)return false;for(let i of n){let o=z(i.version);if(!o)return false;let c=q(r,o);if(i.op==="=="&&c!==0||i.op===">="&&c<0||i.op==="<="&&c>0||i.op===">"&&c<=0||i.op==="<"&&c>=0)return false;if(i.op==="~="){if(c<0)return false;let s=xt(o);if(q(r,s)>=0)return false}}return true}async function bt(){let t=Array.from(new Set([...j$1(),...k$1(14,10).map(r=>r.command)])),e=r=>{let n=r.match(/^Version:\s*(.+)$/m);return n?n[1].trim():null};for(let r of t)try{let n=await execa(r,v(r,["-m","pip","show","rapidkit-core"]),{reject:false,stdio:"pipe",timeout:g});if(n.exitCode===0){let i=e(n.stdout||"");if(i)return i}}catch{continue}for(let r of ["pip","pip3"])try{let n=await execa(r,["show","rapidkit-core"],{reject:false,stdio:"pipe",timeout:g});if(n.exitCode===0){let i=e(n.stdout||"");if(i)return i}}catch{continue}try{let r=await execa("pipx",["list"],{reject:false,stdio:"pipe",timeout:g});if(r.exitCode===0&&r.stdout){let n=r.stdout.match(/rapidkit-core\s+([0-9][0-9A-Za-z+._-]*)/i);if(n?.[1])return n[1]}}catch{}return null}async function At(){let t=_(),e=kt(t);if(!e)return {isCompatible:false,installedVersion:null,expectedConstraint:null,reason:ot(t)?"constraint-unsupported":"constraint-missing"};let r=await bt();if(!r)return {isCompatible:false,installedVersion:null,expectedConstraint:e,reason:"version-not-detected"};let n=ut(r,e);return {isCompatible:n,installedVersion:r,expectedConstraint:e,reason:n?"compatible":"incompatible-version"}}async function N(t){let e=nt(),r=Pt(),n=_(),i=[e];!ot(n)&&!await p.pathExists(e)&&await p.pathExists(r)&&i.push(r);for(let m of i){let h=Y(m);if(await p.pathExists(h))try{let f=await execa(h,["-c","import importlib.util; print(1 if importlib.util.find_spec('rapidkit') else 0)"],{reject:false,stdio:"pipe",timeout:2e3});if(f.exitCode===0&&(f.stdout??"").toString().trim()==="1")return h;await p.remove(m);}catch{await p.remove(m);}}let o=e,c={...process.env,PIP_DISABLE_PIP_VERSION_CHECK:"1",PIP_NO_PYTHON_VERSION_WARNING:"1"},s=Math.max(0,Number(process.env.RAPIDKIT_BRIDGE_PIP_RETRY??"2")),a=Math.max(200,Number(process.env.RAPIDKIT_BRIDGE_PIP_RETRY_DELAY_MS??"800")),d=Math.max(1e4,Number(process.env.RAPIDKIT_BRIDGE_PIP_TIMEOUT_MS??"120000")),P=m=>new Promise(h=>setTimeout(h,m)),E=async(m,h,f)=>{let w=await execa(m,h,{reject:false,stdio:["ignore","pipe","inherit"],env:c,timeout:f});if(w.exitCode===0)return;let T=(w.stdout??"").toString(),$=(w.stderr??"").toString(),b=[T,$].filter(Boolean).join(`
|
|
18
|
-
`),ft=b?`${m} ${h.join(" ")}
|
|
19
|
-
${b}`:`${m} ${h.join(" ")}`;throw new Error(ft)},R=async(m,h,f)=>{let w=0;for(;;)try{await E(m,h,f);return}catch(T){if(w>=s)throw T;let $=Math.floor(Math.random()*200),b=a*Math.pow(2,w)+$;w+=1,await P(b);}};try{await p.ensureDir(l.dirname(o));try{await E(t,v(t,["-m","venv",o]),6e4);}catch(f){let w=f instanceof Error?f.message:String(f);throw new y("BRIDGE_VENV_CREATE_FAILED",w)}let m=Y(o);if((await execa(m,["-m","pip","--version"],{reject:false,stdio:"pipe",timeout:2e3})).exitCode!==0&&(await execa(m,["-m","ensurepip","--default-pip"],{reject:false,stdio:["ignore","pipe","inherit"],env:c,timeout:6e4})).exitCode!==0)throw new y("BRIDGE_PIP_BOOTSTRAP_FAILED","ensurepip failed; install python3-venv/python3-pip and retry.");if(process.env.RAPIDKIT_BRIDGE_UPGRADE_PIP==="1")try{await R(m,["-m","pip","install","-U","pip"],d);}catch(f){let w=f instanceof Error?f.message:String(f);throw new y("BRIDGE_PIP_UPGRADE_FAILED",w)}try{await R(m,["-m","pip","install","-U",_()],d);}catch(f){let w=f instanceof Error?f.message:String(f);throw new y("BRIDGE_PIP_INSTALL_FAILED",w)}return m}catch(m){if(m instanceof y)throw m;let h=m instanceof Error?m.message:String(m);throw new y("BRIDGE_VENV_BOOTSTRAP_FAILED",h)}}async function St(){if(process.env.RAPIDKIT_BRIDGE_FORCE_VENV==="1")return {kind:"venv",pythonPath:await B()};for(let r of O())if(await at(r))return {kind:"system",cmd:r};let t=await dt();if(!t)throw new y("PYTHON_NOT_FOUND","No Python interpreter found (python3/python/py).");let e;try{e=await N(t);}catch{e=await B();}return {kind:"venv",pythonPath:e}}async function Wt(t,e){try{let r=await F(e?.cwd),n=r.cmd,i=[...r.baseArgs,...t];if(t[0]==="init"){let s=await execa(n,i,{cwd:e?.cwd,env:{...process.env,...e?.env},reject:false,stdio:"pipe"}),a=H((s.stdout??"").toString()),d=H((s.stderr??"").toString());return a&&process.stdout.write(a.endsWith(`
|
|
20
|
-
`)?a:`${a}
|
|
21
|
-
`),d&&process.stderr.write(d.endsWith(`
|
|
22
|
-
`)?d:`${d}
|
|
23
|
-
`),typeof s.exitCode=="number"?s.exitCode:1}let c=await execa(n,i,{cwd:e?.cwd,env:{...process.env,...e?.env},reject:false,stdio:"inherit"});return typeof c.exitCode=="number"?c.exitCode:1}catch(r){return process.stderr.write(`${D(r)}
|
|
24
|
-
`),1}}var It=[{pattern:/RapidKitError:\s*Directory '([^']+)' exists and force is not set/,message:t=>`\u274C Directory "${l.basename(t[1])}" already exists.
|
|
25
|
-
\u{1F4A1} Choose a different name, or remove the existing directory first:
|
|
26
|
-
rm -rf ${t[1]}`},{pattern:/RapidKitError:\s*Project name '([^']+)' is (invalid|not allowed)/i,message:t=>`\u274C Invalid project name: "${t[1]}"
|
|
27
|
-
\u{1F4A1} Use lowercase letters, numbers, and hyphens only (e.g. my-api).`},{pattern:/RapidKitError:\s*Kit '([^']+)' not found/i,message:t=>`\u274C Unknown kit: "${t[1]}"
|
|
28
|
-
\u{1F4A1} Run "npx workspai list" to see available kits.`},{pattern:/RapidKitError:\s*(.+)/,message:t=>`\u274C ${t[1].trim()}`}];async function Jt(t,e){let{spawn:r}=await import('child_process');try{let n=await F(e?.cwd),i=n.cmd,o=[...n.baseArgs,...t];return await new Promise(c=>{let s=r(i,o,{cwd:e?.cwd,env:{...process.env,...e?.env},stdio:["inherit","inherit","pipe"]}),a=[];s.stderr?.on("data",d=>{a.push(d);}),s.on("close",d=>{let P=d??1;if(P!==0&&a.length>0){let E=Buffer.concat(a).toString("utf8");for(let{pattern:R,message:m}of It){let h=E.match(R);if(h){process.stderr.write(m(h)+`
|
|
29
|
-
`),c(P);return}}process.stderr.write(E);}c(P);}),s.on("error",d=>{process.stderr.write(`${D(d)}
|
|
30
|
-
`),c(1);});})}catch(n){return process.stderr.write(`${D(n)}
|
|
31
|
-
`),1}}async function x(t,e){try{let r=await F(e?.cwd),n=r.cmd,i=[...r.baseArgs,...t],o=await execa(n,i,{cwd:e?.cwd,env:{...process.env,...e?.env},reject:false,stdio:"pipe"});return {exitCode:typeof o.exitCode=="number"?o.exitCode:1,stdout:(o.stdout??"").toString(),stderr:(o.stderr??"").toString()}}catch(r){return {exitCode:1,stdout:"",stderr:`${D(r)}
|
|
32
|
-
`}}}function pt(t){let e=new Set,r=t.split(`
|
|
33
|
-
`),n=false;for(let i of r){let o=i.replace(/\r$/,"");if(!n){/^\s*Commands:\s*$/i.test(o)&&(n=true);let a=o.match(/^\s*rapidkit\s+([a-z0-9_-]+)\b/i);if(a){let d=a[1].trim();d&&!d.startsWith("-")&&e.add(d);}continue}if(!o.trim())break;if(/^\s*(Options|Arguments|Usage|Commands)\s*:/i.test(o))continue;let c=o.match(/^\s*([a-z0-9][a-z0-9_-]*)\b/i);if(!c)continue;let s=c[1].trim();s&&!s.startsWith("-")&&e.add(s);}return e}async function lt(){let t=st();if(!await p.pathExists(t))return null;try{let e=await p.readJson(t);if(e&&e.schema_version===1&&Array.isArray(e.commands))return e}catch{}return null}async function Z(t){let e=st();await p.ensureDir(l.dirname(e)),await p.writeJson(e,t,{spaces:2});}async function Dt(){let t=await x(["version","--json"],{cwd:process.cwd()});if(t.exitCode===0)try{let r=JSON.parse(t.stdout)?.version;return typeof r=="string"?r:void 0}catch{return}}async function Ot(){let t=await x(["commands","--json"],{cwd:process.cwd()});if(t.exitCode!==0)return null;try{let e=JSON.parse(t.stdout);if(e?.schema_version!==1||!Array.isArray(e.commands))return null;let r=e.commands.filter(n=>typeof n=="string");return r.length?r:null}catch{return null}}async function Ht(){let e=Date.now(),r=await lt(),n=await Dt(),i=!!r?.commands?.length;if(i&&e-r.fetched_at<864e5&&(!n||!r.rapidkit_version||r.rapidkit_version===n))return new Set(r.commands);let o=await Ot();if(o?.length){let d=Array.from(new Set(o)).sort();return await Z({schema_version:1,fetched_at:e,rapidkit_version:n,commands:d}),new Set(d)}let c=await x(["--help"],{cwd:process.cwd()});if(c.exitCode!==0)return i&&r?.commands?new Set(r.commands):new Set(M);let s=pt(c.stdout);if(s.size===0)return new Set(M);let a=Array.from(s).sort();return await Z({schema_version:1,fetched_at:e,rapidkit_version:n,commands:a}),s}async function Yt(){let e=Date.now(),r=await lt();return !r||e-r.fetched_at>=864e5||!r.commands?.length?null:new Set(r.commands)}function mt(){return l.join(j(),"rapidkit","npm-bridge","modules-catalog.json")}async function jt(){let t=mt();if(!await p.pathExists(t))return null;try{let e=await p.readJson(t);if(e&&e.schema_version===1&&Array.isArray(e.modules))return e}catch{}return null}async function X(t){let e=mt();await p.ensureDir(l.dirname(e)),await p.writeJson(e,t,{spaces:2});}function Q(t){try{return JSON.parse(t)}catch{return null}}async function Ut(t={}){let e=typeof t.ttlMs=="number"?t.ttlMs:18e5,r=Date.now(),n=await jt();if(n?.fetched_at&&r-n.fetched_at<e)return n;let i=["modules","list","--json-schema","1"];t.category&&i.push("--category",t.category),t.tag&&i.push("--tag",t.tag),t.detailed&&i.push("--detailed");let o=await x(i,{cwd:t.cwd,env:t.env});if(o.exitCode===0){let s=Q(o.stdout);if(s&&s.schema_version===1&&Array.isArray(s.modules)){let a={...s,fetched_at:r};return await X(a),a}}let c=await x(["modules","list","--json"],{cwd:t.cwd,env:t.env});if(c.exitCode===0){let s=Q(c.stdout);if(Array.isArray(s)){let a={schema_version:1,generated_at:new Date().toISOString(),filters:{category:t.category??null,tag:t.tag??null,detailed:!!t.detailed},stats:{total:s.length,returned:s.length,invalid:0},modules:s,source:"legacy-json",fetched_at:r};return await X(a),a}}return n||null}var zt={pythonCommandCandidates:O,pickSystemPython:dt,ensureBridgeVenv:N,ensureBridgeVenvFromCandidates:B,parseCoreCommandsFromHelp:pt,tryRapidkit:at,findUserLocalRapidkitRunner:rt,findPathRapidkitRunner:it,findWorkspaceRunner:ct,checkRapidkitCoreAvailable:_t,checkRapidkitCoreVersionCompatible:At,isVersionSatisfyingConstraint:ut};export{M as a,_t as b,At as c,St as d,Wt as e,Jt as f,x as g,Ht as h,Yt as i,Ut as j,zt as k};
|
package/dist/chunk-VR6XMUF3.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {b}from'./chunk-UJXE4UAX.js';var s="cli-log-event-v1";var a="unknown-run";function C(e){a=e;}function l(){return a}function c(e){return {schemaVersion:s,runId:l(),timestamp:new Date().toISOString(),level:e.level,event:e.event,component:e.component,message:e.message,...e.command?{command:e.command}:{},...e.metadata&&Object.keys(e.metadata).length>0?{metadata:E(e.metadata)}:{}}}function f(e){b()&&L(c(e));}function L(e){process.stderr.write(`${JSON.stringify(e)}
|
|
2
|
-
`);}function E(e){let t={};for(let[r,n]of Object.entries(e))if(n!==void 0){if(n instanceof Error){t[r]={name:n.name,message:n.message};continue}if(n===null||typeof n=="string"||typeof n=="number"||typeof n=="boolean"){t[r]=n;continue}if(Array.isArray(n)){t[r]=n.map(o=>typeof o=="string"||typeof o=="number"||typeof o=="boolean"?o:String(o));continue}t[r]=String(n);}return t}export{s as a,C as b,l as c,f as d,L as e};
|
package/dist/chunk-VVJK5NFY.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {n,i,j,h as h$1}from'./chunk-FY4IIAIF.js';import {a}from'./chunk-HTYMXMQM.js';import {c}from'./chunk-S5KTATOU.js';import {d as d$1}from'./chunk-P5PSZQPB.js';import {e as e$2}from'./chunk-CCDGHPEJ.js';import {a as a$1}from'./chunk-AFIFZTOY.js';import {e as e$1,d,b}from'./chunk-EWZZUQBR.js';import {f,e}from'./chunk-NZ3WZYD5.js';import k from'path';import V from'fs-extra';import {spawnSync}from'child_process';function ue(){let e={...process.env};return delete e.GIT_DIR,delete e.GIT_WORK_TREE,delete e.GIT_INDEX_FILE,delete e.GIT_PREFIX,e}function F(e,t,a){let r=spawnSync("git",t,{cwd:e,env:ue(),encoding:"utf8",stdio:["ignore","pipe","ignore"]});if(r.status!==0)return {ok:false,stdout:""};let c=r.stdout??"";return {ok:true,stdout:a?.preserveWhitespace?c:c.trim()}}function ge(e){let t=e.replace(/\\/g,"/").replace(/^\.\//,"");return t===".workspai/AGENT-GROUNDING.md"?true:[".workspai/reports/",".workspai/cache/",".rapidkit/reports/",".rapidkit/cache/"].some(a=>t.startsWith(a))}function ke(e){let t=[],a=[],r=[];for(let c of e.split(`
|
|
2
|
-
`)){if(!c.trim())continue;let n=c.slice(0,2),i=c.slice(3).trim();if(i&&!ge(i)){if(n==="??"){a.push(i);continue}n.includes("D")&&r.push(i),t.push(i);}}return {changedFiles:[...new Set(t)].sort(),untrackedFiles:[...new Set(a)].sort(),deletedFiles:[...new Set(r)].sort()}}function Q(e,t){let a={available:false,dirty:false,changedFiles:[],untrackedFiles:[],deletedFiles:[]},r=F(e,["rev-parse","--is-inside-work-tree"]);if(!r.ok||r.stdout!=="true")return a;let c=F(e,["rev-parse","--abbrev-ref","HEAD"]),n=F(e,["rev-parse","HEAD"]),i=F(e,["status","--porcelain=v1","--untracked-files=all"],{preserveWhitespace:true}),p=ke(i.stdout),m=p.changedFiles.length>0||p.untrackedFiles.length>0||p.deletedFiles.length>0;return {available:true,branch:c.ok?c.stdout:void 0,commit:n.ok?n.stdout:void 0,ref:t?.ref,dirty:m,changedFiles:p.changedFiles,untrackedFiles:p.untrackedFiles,deletedFiles:p.deletedFiles}}var oe=f.snapshot,L=f.diff,_=e.snapshot,ae=e.diff,he=f.impact,we=e.impact;function ye(e){if(e.model.projectTopology||!e.model.graph||e.modelHash!==e$1(e.model))return null;let t={...e.model,projectTopology:e.model.graph,graph:e.model.graph};return {...e,modelHash:d(t),model:t}}function ne(e){let t=e.trim().toLowerCase();return t==="git"||t.startsWith("git:")}function We(e){let t=e.trim();return t.toLowerCase()==="git"?"HEAD":t.toLowerCase().startsWith("git:")&&t.slice(4).trim()||"HEAD"}function se(e,t){return k.isAbsolute(t)?t:k.join(e,t)}async function be(e){let t=await V.readJson(e);if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`Workspace model input is not a JSON object: ${e}`);let a=t;if(a.schemaVersion===oe){a$1(t,"contracts/workspace-intelligence/workspace-model-snapshot.v1.json",`Workspace model snapshot ${e}`);let r=a;if(!r.model||r.model.schemaVersion!==h$1)throw new Error(`Invalid workspace model snapshot: ${e}`);let c=d(r.model);if(r.modelHash!==c){let n=ye(r);if(!n)throw new Error(`Workspace model snapshot hash mismatch: ${e}`);return {model:n.model,hash:n.modelHash}}return {model:r.model,hash:r.modelHash}}if(a.schemaVersion===h$1){a$1(t,"contracts/workspace-intelligence/workspace-model.v1.json",`Workspace model ${e}`);let r=a;return {model:r,hash:d(r)}}throw a.schemaVersion===L?new Error(`workspace diff --from received a diff report (${k.basename(e)}). Use a workspace model snapshot or model report as baseline, e.g. ${_}. To analyze an existing diff report, run: npx workspai workspace impact --from ${k.basename(e)} --json`):new Error(`Unsupported workspace model input schema: ${String(a.schemaVersion)}`)}async function ve(e){let t=await V.readJson(e);if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`Workspace diff input is not a JSON object: ${e}`);let a=t;if(a.schemaVersion!==L)return null;a$1(t,"contracts/workspace-intelligence/workspace-model-diff.v1.json",`Workspace model diff ${e}`);let r=a;if(!r.currentModel||r.currentModel.schemaVersion!==h$1||!r.summary||!Array.isArray(r.changes))throw new Error(`Invalid workspace model diff report: ${e}`);if(r.toHash!==d(r.currentModel))throw new Error(`Workspace model diff current-model hash mismatch: ${e}`);return r}async function Ye(e){let t=e.model??await n({workspacePath:e.workspacePath,includeAbsolutePaths:e.includeAbsolutePaths,includeEvidence:e.includeEvidence,observableScanDepth:e.observableScanDepth,now:e.now});return {schemaVersion:oe,generatedAt:(e.now??new Date).toISOString(),modelHash:d(t),modelRef:i,model:t}}async function Qe(e,t){return e$2(t,_,d$1(e))}function x(e){return {name:e.name,path:e.path,kind:e.kind,category:e.category,runtime:e.runtime,framework:e.framework,generator:e.generator,supportTier:e.supportTier,commands:e.commands,importantFiles:e.importantFiles}}function w(e,t){e.push(t);}function Me(e,t){let a=[],r=["name","profile","type"],c=["workspaceType","surfaces","runtimeFamilies","businessCapabilities"];for(let n of r){let i=e.workspace[n],p=t.workspace[n];b(i)!==b(p)&&w(a,{type:"workspace.changed",severity:"info",target:`workspace.${n}`,message:`Workspace metadata field changed: ${String(n)}`,before:i,after:p});}for(let n of c){let i=e.identity[n],p=t.identity[n];b(i)!==b(p)&&w(a,{type:"workspace.changed",severity:"info",target:`identity.${n}`,message:`Workspace identity field changed: ${String(n)}`,before:i,after:p});}return b(e.policies)!==b(t.policies)&&w(a,{type:"workspace.changed",severity:"warning",target:"policies",message:"Workspace policy summary changed.",before:e.policies,after:t.policies}),b(e.discovery)!==b(t.discovery)&&w(a,{type:"workspace.changed",severity:"info",target:"discovery",message:"Workspace discovery settings changed.",before:e.discovery,after:t.discovery}),e.contracts.exists!==t.contracts.exists&&w(a,{type:"workspace.changed",severity:t.contracts.exists?"info":"warning",target:t.contracts.workspaceContractPath,message:"Workspace contract presence changed.",before:e.contracts.exists,after:t.contracts.exists}),a}function je(e,t){let a=e.validation??null,r=t.validation??null;return b(a)===b(r)?[]:[{type:"validation.changed",severity:r?.status==="failed"?"critical":"warning",target:"validation",message:"Workspace model validation changed.",before:a,after:r}]}function Ie(e,t){let a=[],r=new Map(e.projects.map(n=>[n.path,n])),c=new Map(t.projects.map(n=>[n.path,n]));for(let[n,i]of c.entries()){let p=r.get(n);if(!p){w(a,{type:"project.added",severity:"info",target:n,message:`Project added: ${i.name}`,after:x(i)});continue}let m=x(p),l=x(i);if(b(m)!==b(l)){let u=p.runtime!==i.runtime||p.framework!==i.framework;w(a,{type:"project.changed",severity:u?"warning":"info",target:n,message:`Project changed: ${i.name}`,before:m,after:l});}}for(let[n,i]of r.entries())c.has(n)||w(a,{type:"project.removed",severity:"warning",target:n,message:`Project removed: ${i.name}`,before:x(i)});return a.sort((n,i)=>`${n.type}:${n.target}`.localeCompare(`${i.type}:${i.target}`))}async function Pe(e){let t=k.resolve(e.workspacePath),a=ne(e.fromPath),r=a?We(e.fromPath):void 0,c=e.fromPath;if(a){let f=k.join(t,_);if(!await V.pathExists(f))throw new Error("Git-aware workspace diff requires an existing snapshot at .workspai/reports/workspace-model-snapshot.json. Run: npx workspai workspace snapshot --json");c=_;}let n$1=se(t,c),i$1=await be(n$1),p=e.model??await n({workspacePath:t,includeAbsolutePaths:e.includeAbsolutePaths,includeEvidence:e.includeEvidence,observableScanDepth:e.observableScanDepth,now:e.now}),m=d(p),l=[...Me(i$1.model,p),...Ie(i$1.model,p),...je(i$1.model,p)],u;e.includeGitObservation!==false&&(u=e.gitObservation??Q(t,{ref:r}),u.available&&Ee(l,u,p));let v=l.filter(f=>f.type.startsWith("git.")).length,R=i$1.hash!==m,y=a?`git:${r??"HEAD"}`:k.relative(t,n$1).split(k.sep).join("/");return {schemaVersion:L,generatedAt:(e.now??new Date).toISOString(),fromRef:y,toRef:i,fromHash:i$1.hash,toHash:m,summary:{changed:R||v>0,addedProjects:l.filter(f=>f.type==="project.added").length,removedProjects:l.filter(f=>f.type==="project.removed").length,changedProjects:l.filter(f=>f.type==="project.changed").length,workspaceChanges:l.filter(f=>f.type==="workspace.changed").length,validationChanges:l.filter(f=>f.type==="validation.changed").length,gitChangedFiles:v},git:u?.available?Oe(u,r):{available:false,dirty:false,changedFiles:0,untrackedFiles:0,deletedFiles:0},changes:l,currentModel:p}}async function Ze(e,t){return e$2(t,ae,d$1(e))}function I(e){return {none:0,low:1,medium:2,high:3,critical:4}[e]}function Z(e){return e.reduce((t,a)=>I(a)>I(t)?a:t,"none")}var N=["none","low","medium","high","critical"];function Re(e){let t=Math.max(1,I(e)-1);return N[t]}function Ce(e){let t=Math.min(N.length-1,I(e)+1);return N[t]}function ee(e){return e.join(" ")}function h(e,t,a,r){return {id:e,label:t,scope:r.scope,project:r.project,display:ee(["npx","workspai",...a]),execute:ee(["npx","--yes","--package","workspai","workspai",...a]),required:r.required!==false}}function te(e){let t=`project:${e.name}`,a=e.commands.fleetStages;return [h(`project.${e.name}.init`,`Run init for ${e.name}`,["workspace","run","init","--scope",t,"--json"],{scope:"project",project:e.name,required:a.includes("init")}),h(`project.${e.name}.test`,`Run tests for ${e.name}`,["workspace","run","test","--scope",t,"--json"],{scope:"project",project:e.name,required:a.includes("test")}),h(`project.${e.name}.build`,`Run build for ${e.name}`,["workspace","run","build","--scope",t,"--json"],{scope:"project",project:e.name,required:a.includes("build")}),h(`project.${e.name}.start`,`Run start for ${e.name}`,["workspace","run","start","--scope",t,"--json"],{scope:"project",project:e.name,required:a.includes("start")})]}function T(){return [h("workspace.doctor","Run workspace doctor",["doctor","workspace","--json"],{scope:"workspace"}),h("workspace.contract.verify","Verify workspace contract",["workspace","contract","verify","--json"],{scope:"workspace"}),h("workspace.readiness","Run release readiness",["readiness","--json"],{scope:"workspace"}),h("workspace.analyze","Run workspace analyze",["analyze","--json"],{scope:"workspace",required:false}),h("workspace.pipeline","Run governance pipeline",["pipeline","--json"],{scope:"workspace",required:false}),h("workspace.doctor-fix","Verify doctor fix result",["doctor","workspace","--fix","--json"],{scope:"workspace",required:false})]}function Se(e,t){let a=t.split(k.sep).join("/");return e.projects.filter(c=>{let n=c.path.split(k.sep).join("/");return a===n||a.startsWith(`${n}/`)}).sort((c,n)=>n.path.length-c.path.length)[0]}function Ee(e,t,a){let r=new Set(e.map(n=>n.target)),c=(n,i)=>{let p=i.split(k.sep).join("/"),m=`git:${p}`;if(r.has(m))return;let l=Se(a,p),u=l?`${l.name} (${l.path})`:"workspace";w(e,{type:n,severity:n==="git.deleted"?"warning":"info",target:m,message:`Git ${n==="git.untracked"?"untracked":n==="git.deleted"?"deleted":"changed"} file affects ${u}: ${p}`,after:{path:p,project:l?.name,projectPath:l?.path}}),r.add(m);};for(let n of t.changedFiles)c("git.file.changed",n);for(let n of t.untrackedFiles)c("git.untracked",n);for(let n of t.deletedFiles)c("git.deleted",n);}function Oe(e,t){return {available:true,ref:t??e.ref,branch:e.branch,commit:e.commit,dirty:e.dirty,changedFiles:e.changedFiles.length,untrackedFiles:e.untrackedFiles.length,deletedFiles:e.deletedFiles.length}}function Ae(e){let t=new Set,a=[];for(let r of e){let c=`${r.scope}:${r.project??""}:${r.display}`;t.has(c)||(t.add(c),a.push(r));}return a}function De(e){return e.type==="project.removed"?"high":e.severity==="critical"?"critical":e.severity==="warning"?"high":("medium")}function $e(e,t){return e.severity==="critical"?"critical":e.target==="policies"||e.target.includes("contract")?"high":e.type==="validation.changed"?(t?.projectCount??0)===0?"low":"high":e.target==="evidence"?"low":e.severity==="warning"?"medium":"low"}function Fe(e){return e.affectedProjects>0||e.projectCount>0||!e.changes.every(a=>a.severity==="critical"?false:a.type.startsWith("git.")||a.type==="validation.changed")?e.risk:I(e.risk)>=I("high")||e.risk==="medium"?"low":e.risk}function re(e,t){if(!e||e==="workspace")return true;let a=(e.startsWith("project:")?e.slice(8):e).trim().toLowerCase();return [t.name,t.path,k.basename(t.path),t.absolutePath].filter(r=>typeof r=="string"&&r.trim().length>0).map(r=>r.trim().toLowerCase()).includes(a)}function xe(e){if(!e.changed)return {headline:"No workspace model impact detected.",bullets:["The current workspace model matches the provided snapshot/report."],unsafeAssumptions:["Do not claim runtime verification passed unless a report exists."]};let t=e.affectedProjects.map(a=>a.project?.name??a.target);return {headline:`Workspace impact risk: ${e.risk}.`,bullets:[`Affected projects: ${t.length?t.join(", "):"none"}.`,`Workspace-level items: ${e.workspaceImpact.length}.`,"Use the verification plan before recommending apply, rollback, or release actions."],unsafeAssumptions:["Do not infer test/build success from impact alone.","Do not apply fixes without project scope and verification evidence.","Use display commands for users and execute commands for automation."]}}async function et(e){let t=k.resolve(e.workspacePath),a$1=ne(e.fromPath),r=e.diff;if(!r&&!a$1){let o=se(t,e.fromPath);r=await ve(o)??void 0;}r||(r=await Pe({workspacePath:t,fromPath:e.fromPath,includeAbsolutePaths:e.includeAbsolutePaths,includeEvidence:e.includeEvidence,includeGitObservation:e.includeGitObservation,gitObservation:e.gitObservation,now:e.now,model:e.model}));let c$1=new Map(r.currentModel.projects.map(o=>[o.path,o])),n=new Map(r.currentModel.projects.map(o=>[o.name,o])),i=r.changes.filter(o=>o.type.startsWith("project.")),p=new Map;for(let o of i){let d=(c$1.get(o.target)??(typeof o.before?.name=="string"?n.get(o.before.name):void 0))?.path??o.target,W=p.get(d)??[];W.push(o),p.set(d,W);}let m=[];for(let[o,s]of p.entries()){let d=c$1.get(o);if(d&&!re(e.scope,d))continue;let W=Z(s.map(De)),C=d?.name??(typeof s[0]?.before?.name=="string"?String(s[0].before.name):o);m.push({id:`project:${C}`,scope:"project",target:o,title:`Project impact: ${C}`,summary:s.map(M=>M.message).join(" "),risk:W,reasons:s.map(M=>`${M.type}: ${M.message}`),project:d?{name:d.name,path:d.path,kind:d.kind,runtime:d.runtime,framework:d.framework,supportTier:d.supportTier,...d.generator?{generator:d.generator}:{}}:void 0,verification:d?te(d):T()});}let l=j(r.currentModel),u=l?a(l):void 0,v=new Set(m.map(o=>o.project?.name).filter(o=>typeof o=="string")),R=new Map;for(let o of m)if(o.project?.name){let s=u?.byId.get(o.project.name);s&&(o.centrality={fanIn:s.fanIn,fanOut:s.fanOut,reach:s.reach,betweenness:s.betweenness,isHotspot:s.isHotspot},s.isHotspot&&(o.risk=Ce(o.risk),o.reasons=[...o.reasons,`graph.hotspot: critical-path project with ${s.reach} transitive dependent(s); risk escalated.`])),o.origin="direct",o.distance=0,R.set(o.project.name,o.risk);}let y=[],f=0;if(l&&v.size>0){let o=c(l,v);for(let s of o.values()){if(s.distance===0||v.has(s.id))continue;let d=n.get(s.id);if(d&&!re(e.scope,d))continue;let W=s.path[0],C=s.path[s.path.length-2]??W,M=R.get(W)??"medium",de=Re(M),j=u?.byId.get(s.id);f=Math.max(f,s.distance),y.push({id:`transitive:${s.id}`,scope:"project",target:d?.path??s.id,title:`Transitive impact: ${s.id}`,summary:`Depends on changed project ${W}${s.via?` via ${s.via}`:""} (distance ${s.distance}).`,risk:de,reasons:[`graph.dependent: depends on ${C}${s.via?` via ${s.via}`:""} (path ${s.path.join(" -> ")})`],project:d?{name:d.name,path:d.path,kind:d.kind,runtime:d.runtime,framework:d.framework,supportTier:d.supportTier,...d.generator?{generator:d.generator}:{}}:void 0,verification:d?te(d):T(),origin:"transitive",distance:s.distance,path:s.path,via:s.via,...j?{centrality:{fanIn:j.fanIn,fanOut:j.fanOut,reach:j.reach,betweenness:j.betweenness,isHotspot:j.isHotspot}}:{}});}}y.sort((o,s)=>o.target.localeCompare(s.target));let ie=u?u.hotspots.flatMap(o=>{let s=u.byId.get(o);return s?[{project:o,fanIn:s.fanIn,fanOut:s.fanOut,reach:s.reach,betweenness:s.betweenness}]:[]}):[],ce=r.changes.filter(o=>!o.type.startsWith("project.")),K=r.currentModel.summary?.projectCount??r.currentModel.projects.length,P=ce.map(o=>({id:`workspace:${o.target}`,scope:"workspace",target:o.target,title:`Workspace impact: ${o.target}`,summary:o.message,risk:$e(o,{projectCount:K}),reasons:[`${o.type}: ${o.message}`],verification:T()})),B=Ae([...m.flatMap(o=>o.verification),...y.flatMap(o=>o.verification),...P.flatMap(o=>o.verification),...r.summary.changed?T():[]]).filter(o=>o.required),pe=Z([...m.map(o=>o.risk),...y.map(o=>o.risk),...P.map(o=>o.risk)]),q=Fe({risk:pe,affectedProjects:m.length,projectCount:K,changes:r.changes}),z={changed:r.summary.changed,risk:q,affectedProjects:m.length,workspaceItems:P.length,recommendedCommands:B.length,blastRadius:{directlyAffected:m.length,transitivelyAffected:y.length,maxDistance:f,graphEdges:l?.edges.length??0}};return {schemaVersion:he,generatedAt:(e.now??new Date).toISOString(),fromRef:r.fromRef,diffRef:ae,workspace:{name:r.currentModel.workspace.name,profile:r.currentModel.workspace.profile,type:r.currentModel.workspace.type},summary:z,affectedProjects:m.sort((o,s)=>o.target.localeCompare(s.target)),transitiveImpact:y,criticalPathHotspots:ie,workspaceImpact:P.sort((o,s)=>o.target.localeCompare(s.target)),verificationPlan:B,agentBrief:xe({changed:z.changed,risk:q,affectedProjects:m,workspaceImpact:P}),diff:r}}async function tt(e,t){return e$2(t,we,d$1(e))}export{Q as a,oe as b,L as c,_ as d,ae as e,he as f,we as g,ye as h,ne as i,We as j,Ye as k,Qe as l,Pe as m,Ze as n,T as o,et as p,tt as q};
|
package/dist/chunk-VXKWWX7S.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import {a as a$2}from'./chunk-2647BYBC.js';import {a}from'./chunk-D5YJOQYK.js';import {j}from'./chunk-FY4IIAIF.js';import {a as a$1}from'./chunk-GR6442P7.js';import {d,c}from'./chunk-EWZZUQBR.js';import {e,i}from'./chunk-NZ3WZYD5.js';import f from'path';import {createHash}from'crypto';import {createReadStream}from'fs';import {execFile}from'child_process';import {promisify}from'util';import S from'fs-extra';import {parseAllDocuments}from'yaml';var Ko=e.knowledgeGraph;function No(e$1,t){if(e$1.source.kind!=="workspace-model")throw new Error(`Workspace knowledge graph is not bound to the canonical workspace model (source: ${e$1.source.kind}).`);if(e$1.source.artifact!==e.model)throw new Error(`Workspace knowledge graph source artifact is ${e$1.source.artifact}; expected ${e.model}.`);if(e$1.source.hashAlgorithm!=="sha256")throw new Error(`Workspace knowledge graph source hash algorithm is ${e$1.source.hashAlgorithm}; expected sha256.`);let o=d(t);if(e$1.source.hash!==o)throw new Error("Workspace knowledge graph is stale: its source hash does not match the canonical workspace model.");if(e$1.workspace.name!==t.workspace.name||(e$1.workspace.profile??void 0)!==(t.workspace.profile??void 0))throw new Error("Workspace knowledge graph identity does not match the canonical workspace model.");let i=j(t);if(!i)throw new Error("Canonical workspace model has no project topology for the workspace knowledge graph.");let s=n=>({...n,generatedAt:"<ignored>"});if(c(s(e$1.projectTopology))!==c(s(i)))throw new Error("Workspace knowledge graph project topology does not match the canonical workspace model.")}var we=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"]),Ze=new Set(["AGENTS.md","CLAUDE.md","GEMINI.md","QWEN.md"]);function at(e,t){let o=B(f.relative(e,t));return Ze.has(f.posix.basename(o))||/(?:^|\/)\.amazonq\/rules\/workspai-agent-entry\.md$/u.test(o)}var ct=new Set(["test","tests","spec","specs","e2e","integration","integration-tests","integration_tests","__tests__","fixture","fixtures","__fixtures__","testdata"]),dt=new Set(["examples","samples","worked"]);function Pe(e,t){let o=f.relative(e,t).split(f.sep).map(s=>s.toLowerCase()),i=f.basename(t).toLowerCase();return o.some(s=>ct.has(s))||/(?:\.test|\.spec|_test)\.[a-z0-9]+$/i.test(i)||/^test_.+\.[a-z0-9]+$/i.test(i)||/(?:tests?|specs?)\.(?:cs|fs|vb|java|kt|kts)$/i.test(i)}function $e(e,t){return f.relative(e,t).split(f.sep).map(o=>o.toLowerCase()).some(o=>dt.has(o))}function Z(e,t){return Pe(e,t)||$e(e,t)}function te(e,t){return f.relative(e,t).split(f.sep).some(o=>o.toLowerCase()==="generated")}var ve=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"]),lt=new Set([...ve,"go.work","go.work.sum"]),pt=new Set(["get","put","post","delete","options","head","patch","trace"]),x=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"]);function q(e,t){let o=f.extname(e).toLowerCase();return o===".h"&&t==="cpp"?"cpp":{".c":"c",".cc":"cpp",".cpp":"cpp",".cs":"csharp",".dart":"dart",".ex":"elixir",".exs":"elixir",".go":"go",".h":"c",".hpp":"cpp",".java":"java",".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",".vb":"visual-basic"}[o]??o.slice(1)}var ft=new Set(["external","third_party","third-party","vendor","vendors","vendored"]),ut=new Set(["app","apps","cli","cmd","core","extensions","internal","lib","packages","services","src"]);function Re(e,t){let i=B(f.relative(t,e)).split("/").filter(Boolean),s=i[0]?.toLowerCase()??"";return (i.some(a=>ft.has(a.toLowerCase()))?1e3:0)+(ut.has(s)?-100:0)+Math.min(i.length,20)}function mt(e,t,o){if(e.length<=t)return [...e];let i=[...e].sort((r,c)=>Re(r,o)-Re(c,o)||r.localeCompare(c)),s=new Map;for(let r of i){let c=q(r),d=s.get(c)??[];d.push(r),s.set(c,d);}let n=new Set,a=Math.max(1,Math.min(25,Math.floor(t/Math.max(s.size,1))));for(let r of [...s.values()])for(let c of r.slice(0,a))n.add(c);for(let r of i){if(n.size>=t)break;n.add(r);}return [...n].sort((r,c)=>r.localeCompare(c))}function he(e,t,o){let i=[],s=e.split(/\r?\n/);for(let n=0;n<s.length&&i.length<o;n+=1)for(let a of t){let c=s[n].match(a.pattern)?.[1]?.trim();if(c){i.push({name:c,line:n+1,detail:a.detail});break}}return i}var gt=[{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"}],Je=[{pattern:/^\s*import(?:.+?from\s*)?["']([^"']+)["']/,detail:"import"},{pattern:/require\(["']([^"']+)["']\)/,detail:"require"}],He=[{pattern:/^\s*from\s+([A-Za-z0-9_.]+)\s+import\s+/,detail:"import"},{pattern:/^\s*import\s+([A-Za-z0-9_.]+)(?:\s|$)/,detail:"import"}],ht=[{pattern:/^\s*#\s*include\s*["<]([^">]+)[">]/,detail:"include"}],yt=[{pattern:/^\s*use\s+([A-Za-z0-9_:*.-]+)/,detail:"use"}],vt=[{pattern:/^\s*import\s+(?:static\s+)?([A-Za-z0-9_.*]+)\s*;?/,detail:"import"}],bt=[{pattern:/^\s*(?:global\s+)?using\s+([A-Za-z0-9_.]+)/,detail:"using"}],kt=[{pattern:/^\s*import\s+(?:[A-Za-z0-9_.]+\s+)?["']([^"']+)["']/,detail:"import"}],Ue=[{pattern:/^\s*require(?:_relative)?\s+["']([^"']+)["']/,detail:"require"}],wt=[{pattern:/^\s*use\s+([A-Za-z0-9_\\]+)/,detail:"use"}],Pt=[{pattern:/^\s*(?:alias|import|require|use)\s+([A-Za-z0-9_.]+)/,detail:"import"}],$t=[{pattern:/^\s*import\s+["']([^"']+)["']/,detail:"import"}],jt=[{pattern:/\brequire\s*\(?\s*["']([^"']+)["']/,detail:"require"}],It=[{pattern:/^\s*(?:library|require)\s*\(\s*["']?([^"')\s]+)["']?/,detail:"import"}],Ct=[...Je,...He,{pattern:/^\s*(?:import|using|use)\s+([A-Za-z0-9_:.*\\/.-]+)/,detail:"import"},...Ue];function Et(e){let t=f.extname(e).toLowerCase();return [".cjs",".cts",".js",".jsx",".mjs",".mts",".ts",".tsx",".vue",".svelte"].includes(t)?Je:t===".py"?He:[".c",".cc",".cpp",".h",".hpp"].includes(t)?ht:t===".rs"?yt:[".java",".kt",".kts",".scala"].includes(t)?vt:[".cs",".fs",".fsx",".vb"].includes(t)?bt:t===".go"?kt:t===".rb"?Ue:t===".php"?wt:[".ex",".exs"].includes(t)?Pt:t===".dart"?$t:t===".lua"?jt:t===".r"?It:Ct}function Rt(e,t,o,i,s){let n=f.extname(e).toLowerCase()===".py",a=[];if(n){let c=t.match(/^\.+/)?.[0].length??0,d=c>0?f.dirname(e):f.resolve(i??"");for(let p=1;p<c;p+=1)d=f.dirname(d);let l=t.slice(c).replace(/\./g,f.sep);a.push(l?f.join(d,l):d);}else if(t.startsWith("."))a.push(f.resolve(f.dirname(e),t));else if(s==="include")a.push(f.resolve(f.dirname(e),t)),i&&a.push(f.resolve(i,t));else return null;let r=new Set;for(let c of a){r.add(c);let d=f.extname(c).toLowerCase(),l=x.has(d);if(n&&(r.add(`${c}.py`),r.add(f.join(c,"__init__.py"))),l){let p=c.slice(0,-d.length);if([".js",".jsx",".mjs"].includes(d))for(let h of [".ts",".tsx",".js",".jsx",".mjs"])r.add(`${p}${h}`);}else for(let p of x)r.add(`${c}${p}`),r.add(f.join(c,`index${p}`));}return [...r].find(c=>o.has(f.resolve(c)))??null}function At(e,t){let o=t.trimStart(),i=f.extname(e).toLowerCase();return [".py",".rb",".sh",".bash",".zsh"].includes(i)?o.startsWith("#"):[".sql",".lua",".hs"].includes(i)?o.startsWith("--"):o.startsWith("//")||o.startsWith("/*")||o.startsWith("*")}function St(e,t){if(f.extname(e).toLowerCase()!==".py")return t;let o=null;return t.split(/\r?\n/).map(i=>{let s=0,n="";for(;s<i.length;){if(o){let l=i.indexOf(o,s);if(l<0)return n;s=l+3,o=null;continue}let a=i.indexOf("'''",s),r=i.indexOf('"""',s),c=i.indexOf("#",s),d=a<0?r:r<0?a:Math.min(a,r);if(c>=0&&(d<0||c<d)){n+=i.slice(s,c);break}if(d<0){n+=i.slice(s);break}n+=i.slice(s,d),o=i.startsWith("'''",d)?"'''":'"""',s=d+3;}return n}).join(`
|
|
2
|
-
`)}function _t(e,t){if(![".js",".jsx",".mjs",".ts",".tsx"].includes(f.extname(e).toLowerCase()))return t;let o=false,i=false;return t.split(/\r?\n/).map(s=>{let n="",a=null,r=false;for(let c=0;c<s.length;c+=1){let d=s[c],l=s[c+1];if(o){n+=" ",d==="*"&&l==="/"&&(n+=" ",c+=1,o=false);continue}if(i){n+=" ",d==="`"&&!r&&(i=false),r=d==="\\"&&!r,d!=="\\"&&(r=false);continue}if(a){n+=d,d===a&&!r&&(a=null),r=d==="\\"&&!r,d!=="\\"&&(r=false);continue}if(d==="/"&&l==="/")return n.padEnd(s.length," ");if(d==="/"&&l==="*"){n+=" ",c+=1,o=true;continue}if(d==="`"){n+=" ",i=true,r=false;continue}(d==="'"||d==='"')&&(a=d),n+=d;}return n}).join(`
|
|
3
|
-
`)}function Ve(e,t){return _t(e,St(e,t))}var Tt=[{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 ce(e){return createHash("sha256").update(e).digest("hex")}function E(e,t){return `wkg:${e}:${ce(`${e}\0${t}`).slice(0,20)}`}function B(e){return e.replace(/\\/g,"/")}function re(e){let t=B(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 N(e){if(Array.isArray(e))return e.filter(o=>typeof o=="string").map(o=>o.trim()).filter(Boolean).sort();let t=C(e);return t?Object.keys(t).map(o=>o.trim()).filter(Boolean).sort():[]}function Ft(e){if(Array.isArray(e))return e.map(o=>typeof o=="string"?o.split("=",1)[0]?.trim():"").filter(o=>!!o).sort();let t=C(e);return t?Object.keys(t).sort():[]}function Mt(e){return Object.fromEntries(Object.entries(e).filter(t=>t[1]!==void 0).sort(([t],[o])=>t.localeCompare(o)))}async function ne(e,t){let o=[],i=[e],s=0;for(;s<i.length&&o.length<t;){let n=i[s++],a;try{a=await S.readdir(n,{withFileTypes:true});}catch{continue}a.sort((r,c)=>r.name.localeCompare(c.name));for(let r of a){if(o.length>=t)break;if(r.isSymbolicLink())continue;let c=f.join(n,r.name);r.isDirectory()?!we.has(r.name)&&!a$1(r.name)&&i.push(c):r.isFile()&&(at(e,c)||o.push(c));}}return o.sort((n,a)=>n.localeCompare(a))}async function Ye(e,t=1024){let o=[],i=[e],s=0;for(;s<i.length&&o.length<t;){let n=i[s++],a;try{a=await S.readdir(n,{withFileTypes:true});}catch{continue}a.sort((r,c)=>r.name.localeCompare(c.name));for(let r of a){if(r.isSymbolicLink())continue;let c=f.join(n,r.name);if(r.isDirectory())!we.has(r.name)&&!a$1(r.name)&&i.push(c);else if(r.isFile()&<.has(r.name)&&(o.push(c),o.length>=t))break}}return o.sort((n,a)=>n.localeCompare(a))}async function Xe(e){return new Promise(t=>{let o=createHash("sha256"),i=createReadStream(e);i.on("data",s=>o.update(s)),i.on("error",s=>{t(`unreadable:${s.code??"unknown"}`);}),i.on("end",()=>t(o.digest("hex")));})}var Ot=promisify(execFile);async function V(e,t){let o=await Ot("git",t,{cwd:e,encoding:"buffer",maxBuffer:268435456,windowsHide:true});return Buffer.isBuffer(o.stdout)?o.stdout:Buffer.from(o.stdout)}function Lt(){return [".",...[...we].sort((e,t)=>e.localeCompare(t)).map(e=>`:(exclude,glob)**/${e}/**`),...[...Ze].sort((e,t)=>e.localeCompare(t)).map(e=>`:(exclude,glob)**/${e}`),":(exclude,glob)**/.amazonq/rules/workspai-agent-entry.md"]}async function Wt(e){try{let t=(await V(e.root,["rev-parse","--show-prefix"])).toString("utf8").trim().replace(/\\/gu,"/"),o=t?`${t.replace(/^\/+|\/+$/gu,"")}/`:"";if(f.posix.isAbsolute(o)||o==="../"||o.startsWith("../")||o.includes("/../"))return null;let i=Lt(),[s,n,a,r,c,d]=await Promise.all([V(e.root,["ls-files","--full-name","-s","--",...i]),V(e.root,["diff","--no-ext-diff","--no-textconv","--binary","HEAD","--",...i]),V(e.root,["ls-files","--full-name","--others","--exclude-standard","-z","--",...i]),V(e.root,["ls-files","--full-name","--others","--ignored","--exclude-standard","-z","--",...i]),V(e.root,["ls-files","-v","--",...i]),V(e.root,["ls-files","--full-name","-s","--",...i])]);if(c.toString("utf8").split(/\r?\n/u).some(v=>/^[a-z] /u.test(v)))return null;let l=e.files.map(v=>{let m=B(f.relative(e.root,v));return `${o}${m}`});if(d.toString("utf8").split(/\r?\n/u).filter(v=>v.startsWith("160000 ")).map(v=>v.split(" ",2)[1]).filter(v=>!!v).map(v=>v.replace(/\\/gu,"/").replace(/\/$/u,"")).some(v=>l.some(m=>m.startsWith(`${v}/`))))return null;let h=new Set(l),u=Buffer.concat([a,r]).toString("utf8").split("\0").filter(Boolean).map(v=>v.replace(/\\/gu,"/")).filter(v=>h.has(v)),y=await Qe([...new Set(u)].sort((v,m)=>v.localeCompare(m)),16,async v=>{let m=o?v.slice(o.length):v;return {path:m,hash:await Xe(f.resolve(e.root,...m.split("/").filter(Boolean)))}}),k=createHash("sha256");k.update(`git-worktree-v2\0${e.kind}\0${e.id}\0${e.fileLimit}\0`),k.update(s),k.update(createHash("sha256").update(n).digest());for(let v of y)k.update(`${v.path}\0${v.hash}\0`);return {kind:e.kind,id:e.id,strategy:"git-worktree-v2",hash:k.digest("hex"),fileCount:e.files.length,fileLimit:e.fileLimit,truncated:e.files.length>=e.fileLimit}}catch{return null}}async function Qe(e,t,o){let i=new Array(e.length),s=0,n=Array.from({length:Math.min(t,Math.max(e.length,1))},async()=>{for(;s<e.length;){let a=s++;i[a]=await o(e[a]);}});return await Promise.all(n),i}async function Ae(e){let t=await Wt(e);if(t)return t;let o=await Qe(e.files,16,async s=>({path:B(f.relative(e.root,s)),hash:await Xe(s)}));o.sort((s,n)=>s.path.localeCompare(n.path));let i=createHash("sha256");i.update(`content-merkle-v1\0${e.kind}\0${e.id}\0${e.fileLimit}\0`);for(let s of o)i.update(`${s.path}\0${s.hash}\0`);return {kind:e.kind,id:e.id,strategy:"content-merkle-v1",hash:i.digest("hex"),fileCount:o.length,fileLimit:e.fileLimit,truncated:o.length>=e.fileLimit}}async function zt(e){let t=f.resolve(e.workspacePath),o=[...e.projects].sort((a,r)=>a.id.localeCompare(r.id)),i=e.inventories?.workspaceFiles??await ne(t,e.workspaceFileLimit),s=await Promise.all([Ae({kind:"workspace",id:"workspace",root:t,files:i,fileLimit:e.workspaceFileLimit}),...o.map(async a=>{let r=a.absolutePath?f.resolve(a.absolutePath):f.resolve(t,a.path),c=e.inventories?.projectFiles?.get(a.id)??[...new Set([...await ne(r,e.projectFileLimit),...await Ye(r)])].sort((d,l)=>d.localeCompare(l));return Ae({kind:"project",id:a.id,root:r,files:c,fileLimit:e.projectFileLimit})})]);s.sort((a,r)=>a.kind.localeCompare(r.kind)||a.id.localeCompare(r.id));let n=createHash("sha256");n.update("workspace-knowledge-graph-inputs.v1\0hybrid-git-content-v2\0");for(let a of s)n.update(`${a.kind}\0${a.id}\0${a.hash}\0${a.fileCount}\0${a.fileLimit}\0${a.truncated}\0`);return {schemaVersion:"workspace-knowledge-graph-inputs.v1",strategy:"hybrid-git-content-v2",hashAlgorithm:"sha256",hash:n.digest("hex"),scopes:s}}async function X(e){let t=await S.readFile(e,"utf8");if(e.toLowerCase().endsWith(".json")){let o=JSON.parse(t),i=C(o);return i?[i]:[]}return parseAllDocuments(t,{logLevel:"silent"}).map(o=>C(o.toJSON())).filter(o=>o!==null)}function oe(e){return [...new Set([...e.workspaceFiles,...e.projects.flatMap(t=>e.filesByProject.get(t.id)??[])])].sort((t,o)=>t.localeCompare(o))}function de(e){return /^(?:openapi|swagger)(?:\.[^.]+)?\.(?:json|ya?ml)$/i.test(f.basename(e))}function Se(e){let t=f.basename(e).toLowerCase();return /\.(?:graphql|gql|proto)$/.test(t)||/^asyncapi(?:\.[^.]+)?\.(?:json|ya?ml)$/.test(t)}function _e(e){let t=f.basename(e),o=B(e);return !/(?:^|\/)\.devcontainer(?:\/|$)/i.test(o)&&/^Dockerfile(?:\..+)?$/i.test(t)||/\.tf$/i.test(t)||t==="Chart.yaml"}function Te(e){return /(?:^|[\\/])(?:README|ARCHITECTURE|CONTRIBUTING|SECURITY)\.md$/i.test(e)}function Kt(e,t){let o=B(f.relative(e,t));return /^\.github\/workflows\/.+\.ya?ml$/i.test(o)||/^(?:\.gitlab-ci\.ya?ml|azure-pipelines\.ya?ml|Jenkinsfile|bitbucket-pipelines\.ya?ml|\.woodpecker\.ya?ml|\.drone\.ya?ml|\.travis\.ya?ml|appveyor\.ya?ml)$/i.test(o)||/^\.circleci\/config\.ya?ml$/i.test(o)||/^\.buildkite\/pipeline\.ya?ml$/i.test(o)||/^\.tekton\/.+\.ya?ml$/i.test(o)||/^prow\/[^/]+\.(?:sh|py)$/i.test(o)}function Fe(e,t){let o=B(f.relative(e,t));return /(?:^|\/)(?:adr|adrs|decisions)(?:\/).+\.md$/i.test(o)||/(?:^|\/)ADR[-_0-9].+\.md$/i.test(o)}async function Me(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=f.join(o,i);await S.pathExists(s)&&t.add(s);}for(let o of oe(e))/^(?:docker-)?compose(?:\.[a-z0-9_-]+)*\.ya?ml$/i.test(f.basename(o))&&t.add(o);return [...t].sort((o,i)=>o.localeCompare(i))}async function Oe(e){let o=[e.workspacePath,...e.projects.map(s=>s.root)].flatMap(s=>[f.join(s,"CODEOWNERS"),f.join(s,".github","CODEOWNERS"),f.join(s,"docs","CODEOWNERS")]);for(let s of oe(e))f.basename(s)==="OWNERS"&&o.push(s);let i=await Promise.all(o.map(async s=>await S.pathExists(s)?s:null));return [...new Set(i.filter(s=>!!s))].sort((s,n)=>s.localeCompare(n))}function Le(e){let t=[{root:e.workspacePath,files:e.workspaceFiles},...e.projects.map(o=>({root:o.root,files:e.filesByProject.get(o.id)??[]}))];return [...new Set(t.flatMap(o=>o.files.filter(i=>Kt(o.root,i))))].sort((o,i)=>o.localeCompare(i))}async function We(e){let t=[];for(let o of oe(e))if(/\.ya?ml$/i.test(o))try{(await X(o)).some(s=>{let n=C(s.metadata);return !!(P(s.apiVersion)&&P(s.kind)&&P(n?.name))})&&t.push(o);}catch{}return t.sort((o,i)=>o.localeCompare(i))}function U(e,t){let o=f.resolve(t);return e.filter(i=>o===i.root||o.startsWith(`${i.root}${f.sep}`)).sort((i,s)=>s.root.length-i.root.length)[0]??null}var be=class{constructor(t,o,i){this.workspacePath=t;this.now=o;this.workspaceName=i;}workspacePath;now;workspaceName;entities=new Map;relations=new Map;proofs=new Map;providers=[];diagnostics=[];contentHashes=new Map;attributeConflicts=new Set;emptyLabelDiagnostics=new Set;artifactPath(t,o){if(o){let i=B(f.relative(o.root,t));return re(f.posix.join(o.artifactPrefix,i))}return re(f.relative(this.workspacePath,t))}async addProof(t){let o;if(t.absolutePath){if(!this.contentHashes.has(t.absolutePath))try{this.contentHashes.set(t.absolutePath,ce(await S.readFile(t.absolutePath)));}catch{this.contentHashes.set(t.absolutePath,null);}o=this.contentHashes.get(t.absolutePath)??void 0;}let i=re(t.artifact),s=E("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=E(t.kind,t.key),i=Mt(t.attributes??{}),s=this.entities.get(o),n=t.label.trim(),a=n||s?.label||t.key.trim()||t.kind;!n&&!this.emptyLabelDiagnostics.has(o)&&(this.emptyLabelDiagnostics.add(o),this.diagnostics.push({code:"graph.knowledge.empty_label_normalized",severity:"warning",message:`An empty ${t.kind} label was normalized to ${a}.`,entityIds:[o],recommendation:"Inspect the provider proof and preserve a non-empty source identifier before publishing the entity."}));let r={...s?.attributes??{}};for(let[l,p]of Object.entries(i)){if(l in r&&JSON.stringify(r[l])!==JSON.stringify(p)){if(t.mergeArrayAttributes?.includes(l)&&Array.isArray(r[l])&&Array.isArray(p)){r[l]=p;continue}let h=`${o}\0${l}`;this.attributeConflicts.has(h)||(this.attributeConflicts.add(h),this.diagnostics.push({code:"graph.knowledge.attribute_conflict",severity:"warning",message:`Conflicting ${l} values were observed for ${t.kind} ${a}.`,entityIds:[o],recommendation:"Inspect the entity proof paths and make the authoritative source explicit."}));continue}r[l]=p;}let c=[...new Set([...s?.identity.aliases??[],...t.aliases??[]].map(l=>l.trim()).filter(Boolean))].sort(),d=[...new Set([...s?.proofIds??[],...t.proofIds??[]])].sort();return this.entities.set(o,{id:o,kind:t.kind,label:a,...t.projectId?{projectId:t.projectId}:{},identity:{key:t.key,scope:t.projectId?"project":"workspace",aliases:c,fingerprint:ce(JSON.stringify({kind:t.kind,key:t.key,attributes:r}))},attributes:r,proofIds:d}),o}addRelation(t){let o=E("relation",`${t.from}\0${t.kind}\0${t.to}`),i=this.relations.get(o),s=[...new Set([...i?.proofIds??[],...t.proofIds])].sort(),n=new Set(s.map(c=>this.proofs.get(c)?.provider).filter(Boolean)).size,a=t.trust??i?.trust??"observed",r=n>=2&&a!=="ambiguous"?"corroborated":a;return this.relations.set(o,{id:o,from:t.from,to:t.to,kind:t.kind,derivation:t.derivation??i?.derivation??"extracted",trust:r,confidence:r==="corroborated"?"high":t.confidence??i?.confidence??"high",proofIds:s}),o}};function Q(e){let t=[],o=null;for(let i of e.split(/\r?\n/)){let s=i.match(/^\s*\[\[([^\]]+)\]\]\s*(?:#.*)?$/)?.[1]?.trim()??i.match(/^\s*\[([^\]]+)\]\s*(?:#.*)?$/)?.[1]?.trim();if(s){o&&t.push({name:o.name,body:o.lines.join(`
|
|
4
|
-
`)}),o={name:s,lines:[]};continue}o?.lines.push(i);}return o&&t.push({name:o.name,body:o.lines.join(`
|
|
5
|
-
`)}),t}function Nt(e){return [...e.matchAll(/["']([^"']+)["']/g)].map(t=>t[1])}function le(e,t){let o=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),i=new RegExp(`^\\s*${o}\\s*=\\s*\\[`,"m").exec(e);if(!i)return [];let s=i.index+i[0].lastIndexOf("["),n=null,a=false;for(let r=s+1;r<e.length;r+=1){let c=e[r];if(n){c===n&&!a&&(n=null),a=c==="\\"&&!a,c!=="\\"&&(a=false);continue}if(c==="'"||c==='"'){n=c;continue}if(c==="]")return Nt(e.slice(s+1,r))}return []}function ze(e){return e.trim().match(/^([A-Za-z0-9][A-Za-z0-9_.-]*)/)?.[1]??""}function je(e){return e.replace(/\.(?:workspace|version|path|git|optional|features|default-features|package)$/,"")}function Bt(e){let t=Q(e).find(({name:i})=>i==="workspace.package")?.body;if(!t)return {};let o=i=>{let s=i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return t.match(new RegExp(`^\\s*${s}\\s*=\\s*["']([^"']+)["']`,"m"))?.[1]};return {edition:o("edition"),rustVersion:o("rust-version"),version:o("version")}}function ae(e,t,o){let i=Q(e).find(({name:r})=>r==="package")?.body;if(!i)return o;let s=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),n=i.match(new RegExp(`^\\s*${s}\\s*=\\s*["']([^"']+)["']`,"m"))?.[1];return n||(new RegExp(`^\\s*${s}(?:\\.workspace\\s*=\\s*true|\\s*=\\s*\\{[^}]*\\bworkspace\\s*=\\s*true[^}]*\\})`,"m").test(i)?o:void 0)}function Dt(e){let t=Q(e).find(({name:i})=>i==="toolchain")?.body;if(!t)return {components:[],targets:[]};let o=i=>{let s=i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return t.match(new RegExp(`^\\s*${s}\\s*=\\s*["']([^"']+)["']`,"m"))?.[1]};return {channel:o("channel"),profile:o("profile"),components:le(t,"components").sort(),targets:le(t,"targets").sort()}}function Gt(e,t,o={}){let i=f.basename(e);try{if(i==="package.json"||i==="composer.json"){let r=JSON.parse(t);return {ecosystem:i==="package.json"?"npm":"composer",name:P(r.name),version:P(r.version),dependencies:[...N(r.dependencies),...N(r.devDependencies),...N(r.require),...N(r["require-dev"])].filter((c,d,l)=>l.indexOf(c)===d).sort(),metadata:i==="package.json"?{entrypoints:[P(r.main),P(r.module),P(r.types)].filter(c=>!!c),exports:C(r.exports)?Object.keys(C(r.exports)).sort():P(r.exports)?["."]:[],executables:C(r.bin)?Object.keys(C(r.bin)).sort():P(r.bin)?[P(r.name)??"default"]:[],runtimeConstraints:Object.entries(C(r.engines)??{}).map(([c,d])=>`${c}:${String(d)}`).sort()}:void 0}}if(i==="deno.json"||i==="deno.jsonc"){let r=JSON.parse(t.replace(/\/\*[\s\S]*?\*\/|^\s*\/\/.*$/gm,""));return {ecosystem:"deno",name:P(r.name),version:P(r.version),dependencies:N(r.imports)}}}catch{}let s=r=>t.match(r)?.[1]?.trim();if(i==="pyproject.toml"){let c=Q(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:l})=>d==="project"?le(l,"dependencies").map(ze):d==="project.optional-dependencies"||d==="dependency-groups"?[...l.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=\s*\[/gm)].flatMap(p=>le(l,p[1]??p[2])).map(ze):[...l.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=/gm)].map(p=>p[1]??p[2]).filter(p=>p!=="python"));return {ecosystem:"python",name:s(/^(?:name)\s*=\s*["']([^"']+)["']/m),version:s(/^(?:version)\s*=\s*["']([^"']+)["']/m),dependencies:c.filter(Boolean).filter((d,l,p)=>p.indexOf(d)===l).sort(),metadata:{requiresPython:s(/^requires-python\s*=\s*["']([^"']+)["']/m)??"unknown"}}}if(i==="go.mod")return {ecosystem:"go",name:s(/^module\s+(\S+)/m),dependencies:[...t.matchAll(/^\s*([A-Za-z0-9_.~/-]+)\s+v\d+/gm)].map(r=>r[1]).sort(),metadata:{goVersion:s(/^go\s+(\S+)/m)??"unknown"}};if(i==="Cargo.toml"){let r=Q(t).filter(({name:c})=>/(?:^|\.)(?:dev-|build-)?dependencies$/.test(c)).map(({body:c})=>c).join(`
|
|
6
|
-
`);return {ecosystem:"cargo",name:ae(t,"name",void 0),version:ae(t,"version",o.version),dependencies:[...r.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=/gm)].map(c=>c[1]??c[2]).map(je).filter((c,d,l)=>l.indexOf(c)===d).sort(),metadata:{edition:ae(t,"edition",o.edition)??"unknown",rustVersion:ae(t,"rust-version",o.rustVersion)??"unknown",features:Q(t).find(({name:c})=>c==="features")?.body.match(/^\s*([A-Za-z0-9_.-]+)\s*=/gm)?.map(c=>c.split("=",1)[0].trim()).sort()??[]}}}if(i==="pom.xml"){let r=[...t.matchAll(/<dependency>([\s\S]*?)<\/dependency>/g)].map(c=>{let d=c[1].match(/<groupId>([^<]+)<\/groupId>/)?.[1]?.trim(),l=c[1].match(/<artifactId>([^<]+)<\/artifactId>/)?.[1]?.trim();return d&&l?`${d}:${l}`:l}).filter(c=>!!c);return {ecosystem:"maven",name:s(/<artifactId>([^<]+)<\/artifactId>/),version:s(/<version>([^<]+)<\/version>/),dependencies:r.filter((c,d,l)=>l.indexOf(c)===d).sort(),metadata:{groupId:s(/<groupId>([^<]+)<\/groupId>/)??"unknown",packaging:s(/<packaging>([^<]+)<\/packaging>/)??"jar"}}}if(/\.(?:cs|fs|vb)proj$/i.test(i))return {ecosystem:"nuget",name:s(/<AssemblyName>([^<]+)<\/AssemblyName>/)??i.replace(/\.[^.]+$/,""),version:s(/<Version>([^<]+)<\/Version>/),dependencies:[...t.matchAll(/<PackageReference\s+Include=["']([^"']+)["']/g)].map(r=>r[1]).sort(),metadata:{targetFrameworks:(s(/<TargetFrameworks?>([^<]+)<\/TargetFrameworks?>/)??"unknown").split(";"),rootNamespace:s(/<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"},a=i==="requirements.txt"?t.split(/\r?\n/).map(r=>r.trim().match(/^([A-Za-z0-9_.-]+)/)?.[1]):i.startsWith("build.gradle")?[...t.matchAll(/(?:implementation|api|compileOnly|runtimeOnly|testImplementation)\s*\(?["']([^:"']+):([^:"']+)/g)].map(r=>`${r[1]}:${r[2]}`):i==="Gemfile"?[...t.matchAll(/^\s*gem\s+["']([^"']+)["']/gm)].map(r=>r[1]):i==="mix.exs"?[...t.matchAll(/\{:\s*([A-Za-z0-9_]+)\s*,/g)].map(r=>r[1]):i==="pubspec.yaml"?[...t.matchAll(/^\s{2}([A-Za-z0-9_]+):\s+/gm)].map(r=>r[1]):i==="Package.swift"?[...t.matchAll(/\.package\s*\(\s*url:\s*["']([^"']+)["']/g)].map(r=>r[1]):i==="CMakeLists.txt"?[...t.matchAll(/find_package\s*\(\s*([A-Za-z0-9_.+-]+)/gi)].map(r=>r[1]):i==="project.clj"||i==="deps.edn"?[...t.matchAll(/\[?([A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+)\s+/g)].map(r=>r[1]):i==="build.sbt"?[...t.matchAll(/["']([^"']+)["']\s*%%?\s*["']([^"']+)["']/g)].map(r=>`${r[1]}:${r[2]}`):[];return {ecosystem:n[i]??"unknown",dependencies:a.filter(r=>!!r).filter((r,c,d)=>d.indexOf(r)===c).sort()}}function qt(e){let t=new Set,o=i=>{let s=i.replace(/\/\/.*$/u,"").trim().replace(/^["']|["']$/gu,"").replace(/\\/gu,"/");s&&s!=="("&&s!==")"&&t.add(s);};for(let i of e.matchAll(/^\s*use\s*\(([\s\S]*?)^\s*\)/gmu))for(let s of (i[1]??"").split(/\r?\n/u))o(s);for(let i of e.matchAll(/^\s*use\s+([^\s(][^\r\n]*)$/gmu))o(i[1]??"");return [...t].sort((i,s)=>i.localeCompare(s))}function Ke(e,t){let o=e==="cargo"?je(t):t;return e==="cargo"?o.toLowerCase().replace(/[-_]/g,""):o.toLowerCase()}function xt(e,t){let o=[...e.entities.values()].filter(s=>s.kind==="package"&&s.projectId===t),i=new Map;for(let s of o){let n=String(s.attributes.ecosystem??"unknown");for(let a of new Set([s.label,...s.identity.aliases])){let r=`${n}\0${Ke(n,a)}`,c=i.get(r)??[];c.push(s),i.set(r,c);}}for(let s of o){let n=String(s.attributes.ecosystem??"unknown"),a=Array.isArray(s.attributes.dependencies)?s.attributes.dependencies.filter(r=>typeof r=="string"):[];for(let r of a){let c=`${n}\0${Ke(n,r)}`,d=(i.get(c)??[]).filter(h=>h.id!==s.id);if(d.length!==1)continue;let l=d[0];e.addRelation({from:s.id,to:l.id,kind:"depends-on",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:s.proofIds});let p=E("module",`dependency:${n}:${je(r)}`);e.relations.delete(E("relation",`${s.id}\0depends-on\0${p}`));}}for(let s of [...e.entities.values()]){if(s.kind!=="module"||s.projectId)continue;[...e.relations.values()].some(a=>a.from===s.id||a.to===s.id)||e.entities.delete(s.id);}}var Zt={id:"workspace-foundation",version:"1.0.0",async run(e){let{state:t}=e,o=await t.addProof({provider:this.id,artifact:i.workspaceContract,absolutePath:f.join(e.workspacePath,".workspai","workspace.contract.json"),trust:"authoritative",derivation:"authored",detail:"Workspace identity and project registry boundary"}),i$1=t.addEntity({kind:"workspace",key:`workspace:${t.workspaceName}`,label:t.workspaceName,aliases:[t.workspaceName],proofIds:[o]});for(let s of e.projects){let n=e.filesByProject.get(s.id)??[],a=n.find(m=>/[\\/]\.(?:workspai|rapidkit)[\\/](?:project|context)\.json$/.test(m)),r=n.find(m=>ve.has(f.basename(m))),c=a??r,d=await t.addProof({provider:this.id,artifact:c?t.artifactPath(c,s):re(f.posix.join(s.artifactPrefix,".workspai/project.json")),...c?{absolutePath:c}:{},trust:a?"authoritative":"observed",derivation:a?"authored":"inferred",detail:`Project ${s.id}`}),l=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,runtimeCandidates:s.runtimeCandidates,framework:s.framework,kit:s.kit,kind:s.kind,category:s.category,...s.governance?{governanceCiStatus:s.governance.ci.status,governanceReleaseStatus:s.governance.release.status,governanceOwnershipStatus:s.governance.ownership.status,governanceProviders:[s.governance.ci.provider,s.governance.release.provider,s.governance.ownership.provider].filter(m=>!!m)}:{}},proofIds:[d]});t.addRelation({from:i$1,to:l,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[d]});let p=new Set,h=[],u=n.find(m=>f.resolve(m)===f.resolve(s.root,"go.work")),y;if(u)try{let m=await S.readFile(u,"utf8"),b=qt(m),j=t.artifactPath(u,s),w=await t.addProof({provider:this.id,artifact:j,absolutePath:u,pointer:"/use",trust:"authoritative",derivation:"authored",confidence:"high",detail:`Go workspace with ${b.length} member(s)`}),$=t.addEntity({kind:"module",key:`go-workspace:${s.id}:${j}`,label:`${s.id} Go workspace`,projectId:s.id,aliases:["go.work"],attributes:{ecosystem:"go",manifest:j,members:b},proofIds:[w]});t.addRelation({from:l,to:$,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[w]}),y={entityId:$,members:b,proofId:w};}catch{}let k={},v=n.find(m=>f.resolve(m)===f.resolve(s.root,"Cargo.toml"));if(v)try{k=Bt(await S.readFile(v,"utf8"));}catch{}for(let m of n){let b=f.basename(m);if(/^(?:\.env\.example|\.env\.sample|\.env\.template)$/i.test(b))try{let w=await S.readFile(m,"utf8");for(let $ of w.split(/\r?\n/)){let _=$.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=/)?.[1];_&&p.add(_);}}catch{}let j=Pe(s.root,m);if(j&&h.push(m),!(j||$e(s.root,m))&&!(!ve.has(b)&&!/\.(?:cs|fs|vb)proj$/i.test(b)))try{let w=await S.readFile(m,"utf8"),$=Gt(m,w,k),_=t.artifactPath(m,s),R=await t.addProof({provider:this.id,artifact:_,absolutePath:m,pointer:"/",confidence:$.name?"high":"medium",detail:`${$.ecosystem} manifest`}),I=t.addEntity({kind:"package",key:`package:${s.id}:${$.ecosystem}:${$.name??"anonymous"}:${_}`,label:$.name??`${s.id}/${B(f.relative(s.root,m))}`,projectId:s.id,aliases:[b,...$.name?[$.name]:[]],attributes:{ecosystem:$.ecosystem,version:$.version,manifest:_,dependencies:$.dependencies,...$.metadata??{}},proofIds:[R]});t.addRelation({from:l,to:I,kind:"contains",proofIds:[R]});for(let F of $.dependencies.slice(0,500)){let T=t.addEntity({kind:"module",key:`dependency:${$.ecosystem}:${F}`,label:F,aliases:[F],attributes:{ecosystem:$.ecosystem,external:true},proofIds:[R]});t.addRelation({from:I,to:T,kind:"depends-on",trust:"authoritative",derivation:"authored",proofIds:[R]});}}catch{}}if(y){let m=[...t.entities.values()].filter(b=>b.kind==="package"&&b.projectId===s.id);for(let b of y.members){let j=t.artifactPath(f.join(s.root,b,"go.mod"),s),w=m.find($=>$.attributes.manifest===j);w&&t.addRelation({from:y.entityId,to:w.id,kind:"contains",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:[...new Set([y.proofId,...w.proofIds])]});}}if(xt(t,s.id),p.size>0){let m=n.find(b=>/^\.env\.(?:example|sample|template)$/i.test(f.basename(b)));if(m){let b=await t.addProof({provider:this.id,artifact:t.artifactPath(m,s),absolutePath:m,detail:"Public environment template keys only; values are intentionally excluded"}),j=t.addEntity({kind:"environment",key:`environment:${s.id}:template`,label:`${s.id} environment contract`,projectId:s.id,attributes:{keys:[...p].sort(),valuesEmitted:false},proofIds:[b]});t.addRelation({from:l,to:j,kind:"configured-by",proofIds:[b]});}}if(h.length>0){let m=await t.addProof({provider:this.id,artifact:t.artifactPath(h[0],s),absolutePath:h[0],detail:`${h.length} test file(s) discovered`}),b=t.addEntity({kind:"test-suite",key:`tests:${s.id}`,label:`${s.id} tests`,projectId:s.id,attributes:{fileCount:h.length},proofIds:[m]});t.addRelation({from:b,to:l,kind:"tests",proofIds:[m]});let j=new Map;for(let w of h){if(!x.has(f.extname(w).toLowerCase()))continue;let $=q(w,s.runtime),_=j.get($)??[];_.push(w),j.set($,_);}for(let[w,$]of [...j].sort(([_],[R])=>_.localeCompare(R))){let _=await t.addProof({provider:this.id,artifact:t.artifactPath($[0],s),absolutePath:$[0],detail:`${$.length} ${w} test source file(s) discovered`}),R=t.addEntity({kind:"test-suite",key:`tests:${s.id}:${w}`,label:`${s.id} ${w} tests`,projectId:s.id,attributes:{fileCount:$.length,language:w},proofIds:[_]});t.addRelation({from:R,to:l,kind:"tests",proofIds:[_]});}}}}};function ye(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function Ne(e){if(Array.isArray(e))return e.length;let t=C(e);return t?Object.keys(t).length:0}var Jt={id:"vscode-extension-manifest",version:"1.1.0",async applicable(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).filter(i=>f.basename(i).toLowerCase()==="package.json");for(let i of o)try{let s=C(await S.readJson(i));if(P(C(s?.engines)?.vscode)||C(s?.contributes))return true}catch{}}return false},async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).filter(i=>f.basename(i).toLowerCase()==="package.json").sort((i,s)=>i.localeCompare(s));for(let i of o){let s=null;try{s=C(await S.readJson(i));}catch{continue}let n=C(s?.contributes),a=P(C(s?.engines)?.vscode);if(!a&&!n)continue;let r=f.dirname(i),c=f.resolve(r)===f.resolve(t.root),d=f.relative(t.root,r).split(f.sep).join("/"),l=P(s?.name)??(d&&d!=="."?d:t.id),p=e.state.artifactPath(i,t),h=await e.state.addProof({provider:this.id,artifact:p,absolutePath:i,pointer:"/",trust:"authoritative",derivation:"authored",confidence:"high",detail:`VS Code extension manifest for ${l}`}),u=e.state.addEntity({kind:"project",key:`project:${t.id}`,label:t.id,projectId:t.id}),y=c?e.state.addEntity({kind:"project",key:`project:${t.id}`,label:t.id,projectId:t.id,attributes:{vscodeExtension:true,vscodeEngine:a,extensionEntry:P(s?.main)??P(s?.browser),extensionKind:N(s?.extensionKind),activationEvents:N(s?.activationEvents),contributionCounts:Object.entries(n??{}).map(([I,F])=>`${I}:${Ne(F)}`).sort()},proofIds:[h]}):e.state.addEntity({kind:"package",key:`vscode-extension:${t.id}:${d}`,label:l,projectId:t.id,attributes:{surface:"vscode-extension",extensionPath:d,manifest:p,vscodeEngine:a,extensionEntry:P(s?.main)??P(s?.browser),extensionKind:N(s?.extensionKind),activationEvents:N(s?.activationEvents),contributionCounts:Object.entries(n??{}).map(([I,F])=>`${I}:${Ne(F)}`).sort()},proofIds:[h]});c||e.state.addRelation({from:u,to:y,kind:"contains",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:[h]});let k=Array.isArray(n?.commands)?n.commands:[],v=C(n?.menus),m=Object.values(v??{}).flatMap(I=>Array.isArray(I)?I:[]),b=Array.isArray(n?.keybindings)?n.keybindings:[];for(let[I,F]of k.entries()){let T=C(F),W=P(T?.command);if(!W)continue;let M=`/contributes/commands/${I}`,L=await e.state.addProof({provider:this.id,artifact:p,absolutePath:i,pointer:M,trust:"authoritative",derivation:"authored",confidence:"high",detail:`VS Code command ${W}`}),K=m.filter(g=>P(C(g)?.command)===W).length,D=b.filter(g=>P(C(g)?.command)===W).length,G=e.state.addEntity({kind:"api",key:`vscode-command:${t.id}:${W}`,label:W,projectId:t.id,aliases:[P(T?.title),P(T?.shortTitle)].filter(g=>!!g),attributes:{surface:"vscode-command",title:P(T?.title),shortTitle:P(T?.shortTitle),category:P(T?.category),enablement:P(T?.enablement),icon:P(T?.icon),menuCount:K,keybindingCount:D,manifest:p,pointer:M},proofIds:[L]});e.state.addRelation({from:y,to:G,kind:"exposes",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:[L]});}let j=C(n?.viewsContainers),w=new Map;for(let[I,F]of Object.entries(j??{}))if(Array.isArray(F))for(let[T,W]of F.entries()){let M=C(W),L=P(M?.id);if(!L)continue;let K=`/contributes/viewsContainers/${ye(I)}/${T}`,D=await e.state.addProof({provider:this.id,artifact:p,absolutePath:i,pointer:K,trust:"authoritative",derivation:"authored",detail:`VS Code view container ${L}`}),G=e.state.addEntity({kind:"service",key:`vscode-view-container:${t.id}:${L}`,label:L,projectId:t.id,aliases:[P(M?.title)].filter(g=>!!g),attributes:{surface:"vscode-view-container",title:P(M?.title),location:I,icon:P(M?.icon),manifest:p,pointer:K},proofIds:[D]});w.set(L,G),e.state.addRelation({from:y,to:G,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[D]});}let $=C(n?.views);for(let[I,F]of Object.entries($??{}))if(Array.isArray(F))for(let[T,W]of F.entries()){let M=C(W),L=P(M?.id);if(!L)continue;let K=`/contributes/views/${ye(I)}/${T}`,D=await e.state.addProof({provider:this.id,artifact:p,absolutePath:i,pointer:K,trust:"authoritative",derivation:"authored",detail:`VS Code view ${L}`}),G=e.state.addEntity({kind:"service",key:`vscode-view:${t.id}:${L}`,label:L,projectId:t.id,aliases:[P(M?.name),P(M?.contextualTitle)].filter(g=>!!g),attributes:{surface:M?.type==="webview"?"vscode-webview":"vscode-view",name:P(M?.name),contextualTitle:P(M?.contextualTitle),containerId:I,viewType:P(M?.type)??"tree",manifest:p,pointer:K},proofIds:[D]});e.state.addRelation({from:w.get(I)??y,to:G,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[D]});}let _=Array.isArray(n?.configuration)?n.configuration:n?.configuration?[n.configuration]:[];for(let[I,F]of _.entries()){let T=C(F),W=C(T?.properties);for(let[M,L]of Object.entries(W??{})){let K=C(L),G=`${Array.isArray(n?.configuration)?`/contributes/configuration/${I}`:"/contributes/configuration"}/properties/${ye(M)}`,g=await e.state.addProof({provider:this.id,artifact:p,absolutePath:i,pointer:G,trust:"authoritative",derivation:"authored",detail:`VS Code configuration ${M}`}),A=e.state.addEntity({kind:"schema",key:`vscode-configuration:${t.id}:${M}`,label:M,projectId:t.id,attributes:{surface:"vscode-configuration",title:P(T?.title),type:P(K?.type),scope:P(K?.scope),description:P(K?.description)??P(K?.markdownDescription),manifest:p,pointer:G},proofIds:[g]});e.state.addRelation({from:y,to:A,kind:"configured-by",trust:"authoritative",derivation:"authored",proofIds:[g]});}}let R=Array.isArray(n?.chatParticipants)?n.chatParticipants:[];for(let[I,F]of R.entries()){let T=C(F),W=P(T?.id);if(!W)continue;let M=`/contributes/chatParticipants/${I}`,L=await e.state.addProof({provider:this.id,artifact:p,absolutePath:i,pointer:M,trust:"authoritative",derivation:"authored",detail:`VS Code chat participant ${W}`}),K=e.state.addEntity({kind:"api",key:`vscode-chat-participant:${t.id}:${W}`,label:W,projectId:t.id,aliases:[P(T?.name),P(T?.fullName)].filter(D=>!!D),attributes:{surface:"vscode-chat-participant",name:P(T?.name),fullName:P(T?.fullName),description:P(T?.description),manifest:p,pointer:M},proofIds:[L]});e.state.addRelation({from:y,to:K,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[L]});}}}}};function Be(e,t){let o=[],i=false;for(let s of e.split(/\r?\n/)){let n=s.match(/^\s*\[([^\]]+)\]\s*(?:#.*)?$/)?.[1]?.trim();if(n){i=n===t;continue}if(!i||/^\s*(?:#|$)/.test(s))continue;let a=s.match(/^\s*(?:"([^"]+)"|'([^']+)'|([A-Za-z0-9_.-]+))\s*=\s*["']([^"']+)["']/),r=a?.[1]??a?.[2]??a?.[3],c=a?.[4];r&&c&&o.push([r,c]);}return o}var Ht={id:"python-project-manifest",version:"1.0.0",async applicable(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).find(i=>f.dirname(i)===t.root&&f.basename(i).toLowerCase()==="pyproject.toml");if(o)try{if(Be(await S.readFile(o,"utf8"),"project.scripts").length>0)return true}catch{}}return false},async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).find(c=>f.dirname(c)===t.root&&f.basename(c).toLowerCase()==="pyproject.toml");if(!o)continue;let i=await S.readFile(o,"utf8"),s=Be(i,"project.scripts"),n=e.state.artifactPath(o,t),a=await e.state.addProof({provider:this.id,artifact:n,absolutePath:o,pointer:"/project",trust:"authoritative",derivation:"authored",detail:"Python project manifest"}),r=e.state.addEntity({kind:"project",key:`project:${t.id}`,label:t.id,projectId:t.id,attributes:{pythonProject:true,requiresPython:i.match(/^requires-python\s*=\s*["']([^"']+)["']/m)?.[1],buildBackend:i.match(/^build-backend\s*=\s*["']([^"']+)["']/m)?.[1],consoleScriptCount:s.length},proofIds:[a]});for(let[c,d]of s){let l=`/project/scripts/${c}`,p=await e.state.addProof({provider:this.id,artifact:n,absolutePath:o,pointer:l,trust:"authoritative",derivation:"authored",detail:`Python console script ${c}`}),h=e.state.addEntity({kind:"api",key:`python-console-script:${t.id}:${c}`,label:c,projectId:t.id,aliases:[d],attributes:{surface:"python-console-script",entrypoint:d,manifest:n,pointer:l},proofIds:[p]});e.state.addRelation({from:r,to:h,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[p]});}}}},Ut={id:"source-language-inventory",version:"1.1.0",applicable(e){return e.projects.some(t=>(e.semanticFilesByProject.get(t.id)??[]).some(o=>x.has(f.extname(o).toLowerCase())))},async run(e){for(let t of e.projects){let o=e.semanticFilesByProject.get(t.id)??[],i=(e.filesByProject.get(t.id)??[]).find(d=>/^rust-toolchain(?:\.toml)?$/i.test(f.basename(d))),s,n;if(i)try{s=Dt(await S.readFile(i,"utf8")),n=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 a=o.filter(d=>x.has(f.extname(d).toLowerCase())),r=new Map;for(let d of a){let l=q(d,t.runtime),p=r.get(l)??{files:[],production:[],tests:[],examples:[],generated:[],extensions:new Set};p.files.push(d),p.extensions.add(f.extname(d).toLowerCase()),te(t.root,d)&&p.generated.push(d),Pe(t.root,d)?p.tests.push(d):$e(t.root,d)?p.examples.push(d):p.production.push(d),r.set(l,p);}let c=E("project",`project:${t.id}`);for(let[d,l]of [...r].sort(([p],[h])=>p.localeCompare(h))){let p=[l.production[0],l.tests[0],l.examples[0],l.generated[0],l.files[0]].filter((v,m,b)=>!!v&&b.indexOf(v)===m),h=await Promise.all(p.map(v=>e.state.addProof({provider:this.id,artifact:e.state.artifactPath(v,t),absolutePath:v,derivation:"extracted",trust:"observed",confidence:"high",detail:`${d} source-language inventory evidence`}))),u=[...l.production.length>0?["production"]:[],...l.tests.length>0?["test"]:[],...l.examples.length>0?["example"]:[],...l.generated.length>0?["generated"]:[]],y=d==="rust"&&n?[...h,n]:h,k=e.state.addEntity({kind:"language",key:`language:${t.id}:${d}`,label:`${t.id} programming language: ${d}`,projectId:t.id,aliases:[d,`${d} source`,`${d} programming language`,"programming languages actually used"],attributes:{language:d,usage:"source-build-test",roles:u,fileCount:l.files.length,productionFileCount:l.production.length,testFileCount:l.tests.length,exampleFileCount:l.examples.length,generatedFileCount:l.generated.length,extensions:[...l.extensions].sort(),inventoryTruncated:o.length>=e.semanticScanLimit,...d==="rust"&&s?{toolchainChannel:s.channel,toolchainProfile:s.profile,toolchainComponents:s.components,toolchainTargets:s.targets}:{}},proofIds:y});e.state.addRelation({from:c,to:k,kind:"uses-language",derivation:"extracted",trust:"observed",confidence:o.length>=e.semanticScanLimit?"medium":"high",proofIds:y});}o.length>=e.semanticScanLimit&&e.state.diagnostics.push({code:"graph.provider.source_language_inventory.limit_reached",severity:"warning",message:`Language inventory for ${t.id} reached ${e.semanticScanLimit} files. Counts are lower bounds.`,recommendation:"Increase maxFilesPerProject or use a scoped project run before treating language counts as complete."});}}},Vt={id:"source-structure",version:"1.0.0",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(o=>x.has(f.extname(o).toLowerCase())&&!Z(t.root,o)))},async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).filter(d=>!Z(t.root,d)),i=e.semanticFilesByProject.get(t.id)??o,s=mt(i.filter(d=>x.has(f.extname(d).toLowerCase())&&!Z(t.root,d)),1e3,t.root),n=new Set(i.filter(d=>!Z(t.root,d)).map(d=>f.resolve(d))),a=new Map;await Promise.all(o.map(async d=>{try{let l=await S.stat(d);if(l.isFile()&&l.size<=2*1024*1024){let p=f.resolve(d);n.add(p),a.set(p,l.size);}}catch{}}));let r=0,c=0;for(let d of s){let l;try{if((await S.stat(d)).size>2*1024*1024)continue;l=await S.readFile(d,"utf8");}catch{continue}let p=Ve(d,l),h=e.state.artifactPath(d,t),u=await e.state.addProof({provider:this.id,artifact:h,absolutePath:d,derivation:"extracted",trust:"observed",confidence:"high",detail:`${q(d,t.runtime)} source file`}),y=e.state.addEntity({kind:"file",key:`file:${t.id}:${h}`,label:h,projectId:t.id,aliases:[f.basename(d)],attributes:{artifact:h,language:q(d,t.runtime),bytes:Buffer.byteLength(l),...te(t.root,d)?{generated:true}:{}},proofIds:[u]});e.state.addRelation({from:E("project",`project:${t.id}`),to:y,kind:"contains",proofIds:[u]});let k=he(p,Et(d),250);for(let m of k){let b=await e.state.addProof({provider:this.id,artifact:h,absolutePath:d,line:m.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${m.detail}: ${m.name}`}),j=Rt(d,m.name,n,t.root,m.detail);if(j){let w=e.state.artifactPath(j,t),$=E("file",`file:${t.id}:${w}`);if(!e.state.entities.has($)){let _=await S.stat(j).catch(()=>null),R=await e.state.addProof({provider:this.id,artifact:w,..._?.isFile()&&_.size<=2*1024*1024?{absolutePath:j}:{},derivation:"extracted",trust:"observed",confidence:"high",detail:"Locally imported artifact resolved from the project inventory"}),I=e.state.addEntity({kind:"file",key:`file:${t.id}:${w}`,label:w,projectId:t.id,aliases:[f.basename(j)],attributes:{artifact:w,language:q(j,t.runtime),bytes:a.get(f.resolve(j))??(_?.isFile()?_.size:void 0)},proofIds:[R]});e.state.addRelation({from:E("project",`project:${t.id}`),to:I,kind:"contains",proofIds:[R]});}e.state.addRelation({from:y,to:$,kind:"imports",confidence:"high",proofIds:[b]});}else {let w=m.name.startsWith(".");w&&(c+=1);let $=q(d,t.runtime),_=!w&&($==="javascript"||$==="typescript")?m.name.startsWith("@")?m.name.split("/").slice(0,2).join("/"):m.name.split("/")[0]:null,R=_?E("module",`dependency:npm:${_}`):null,I=R?e.state.entities.get(R):void 0,F=I?e.state.addEntity({kind:"module",key:I.identity.key,label:I.label,aliases:[...I.identity.aliases,m.name],attributes:I.attributes,proofIds:[...I.proofIds,b]}):e.state.addEntity({kind:"module",key:`module:${t.id}:${m.name}`,label:m.name,projectId:t.id,aliases:[m.name],attributes:{specifier:m.name,resolution:w?"unresolved-local":"external"},proofIds:[b]});e.state.addRelation({from:y,to:F,kind:"imports",confidence:w?"low":"medium",proofIds:[b]});}}if(r<1e4){let m=he(p,gt,Math.min(100,1e4-r));r+=m.length;for(let b of m){let j=await e.state.addProof({provider:this.id,artifact:h,absolutePath:d,line:b.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${b.detail}: ${b.name}`}),w=e.state.addEntity({kind:"symbol",key:`symbol:${t.id}:${h}:${b.detail}:${b.name}`,label:b.name,projectId:t.id,attributes:{symbolKind:b.detail,language:q(d,t.runtime),...te(t.root,d)?{generated:true}:{}},proofIds:[j]});e.state.addRelation({from:y,to:w,kind:"defines",confidence:"medium",proofIds:[j]});}}let v=t.framework!=="vscode-extension"&&t.kind!=="extension";for(let m of v?he(p,Tt,100):[]){let b=l.split(/\r?\n/)[m.line-1]??"";if(At(d,b))continue;let j=b.match(/(?:@|\.|\[|^\s*)(get|post|put|delete|patch|options|head)/i)?.[1]?.toUpperCase()??"HTTP",w=await e.state.addProof({provider:this.id,artifact:h,absolutePath:d,line:m.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${j} ${m.name}`}),$=e.state.addEntity({kind:"endpoint",key:`source-endpoint:${t.id}:${h}:${j}:${m.name}`,label:`${j} ${m.name||"/"}`,projectId:t.id,attributes:{method:j,path:m.name||"/",source:h},proofIds:[w]});e.state.addRelation({from:y,to:$,kind:"defines",confidence:"medium",proofIds:[w]});}}(s.length>=1e3||r>=1e4)&&e.state.diagnostics.push({code:"graph.provider.source_structure.limit_reached",severity:"info",message:`Source extraction for ${t.id} sampled ${s.length} file(s) from ${o.length} indexed candidate(s).`,recommendation:"Use bounded graph search, evidence, and path queries for proof-backed retrieval; do not treat the sampled symbol inventory as exhaustive."}),c>0&&e.state.diagnostics.push({code:"graph.provider.source_structure.unresolved_local_imports",severity:"warning",message:`${c} 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."});}}},Yt={id:"source-symbol-binding",version:"1.0.0",applicable(e){return [...e.state.entities.values()].some(t=>t.kind==="symbol")},async run(e){let t=0,o=0,i=1e4;for(let s of e.projects){let n=[...e.state.entities.values()].filter(l=>l.projectId===s.id),a=n.filter(l=>l.kind==="file"),r=new Map(n.filter(l=>l.kind==="symbol").map(l=>[l.id,l])),c=new Map,d=new Map;for(let l of e.state.relations.values()){if(l.kind==="defines"&&r.has(l.to)){let p=c.get(l.from)??[];p.push(r.get(l.to)),c.set(l.from,p);}if(l.kind==="imports"){let p=e.state.entities.get(l.to);if(p?.kind!=="file"||p.projectId!==s.id)continue;let h=d.get(l.from)??new Set;h.add(l.to),d.set(l.from,h);}}for(let l of a){if(o>=i)break;let p=P(l.attributes.artifact);if(!p)continue;let h=p.startsWith(`${s.artifactPrefix}/`)?p.slice(s.artifactPrefix.length+1):p,u=f.resolve(s.root,...h.split("/")),y;try{let m=await S.stat(u);if(!m.isFile()||m.size>2*1024*1024)continue;y=Ve(u,await S.readFile(u,"utf8"));}catch{continue}let k=[...c.get(l.id)??[],...[...d.get(l.id)??[]].flatMap(m=>c.get(m)??[])],v=new Map;for(let m of k){if(m.label.length<3)continue;let b=v.get(m.label)??[];b.some(j=>j.id===m.id)||b.push(m),v.set(m.label,b);}for(let[m,b]of v){let j=m.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),w=new RegExp(`\\b${j}\\s*\\(`,"g"),$=[...y.matchAll(w)];if($.length===0)continue;if(b.length!==1){t+=$.length;continue}let _=b[0];for(let R of $.slice(0,20)){if(o>=i)break;let I=y.slice(0,R.index??0).split(/\r?\n/).length;if(_.proofIds.some(T=>e.state.proofs.get(T)?.line===I))continue;let F=await e.state.addProof({provider:this.id,artifact:p,absolutePath:u,line:I,derivation:"extracted",trust:"observed",confidence:"medium",detail:`Unambiguous local call to ${m}`});e.state.addRelation({from:l.id,to:_.id,kind:"calls",derivation:"extracted",trust:"observed",confidence:"medium",proofIds:[F]}),o+=1;}}}}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 Xt(e){let i=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 !i||!f.posix.basename(i.replace(/\\/g,"/"))?null:i}function Qt(e,t){let o=0,i=null,s=false;for(let n=t;n<e.length;n+=1){let a=e[n];if(i){a===i&&!s&&(i=null),s=a==="\\"&&!s,a!=="\\"&&(s=false);continue}if(a==='"'){i=a;continue}if(a==="("&&(o+=1),a===")"&&(o-=1,o===0))return e.slice(t+1,n)}return null}function eo(e){let t=[],o=/(?<![A-Za-z0-9_:])(?:deno_core::)?extension!\s*\(/g;for(let i of e.matchAll(o)){let s=(i.index??0)+i[0].lastIndexOf("("),n=Qt(e,s);if(!n)continue;let a=n.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*,/)?.[1];if(!a)continue;let r=[...new Set([...n.matchAll(/\bops\s*=\s*\[([\s\S]*?)\]/g)].flatMap(d=>[...d[1].matchAll(/\b(op_[A-Za-z0-9_]+)\b/g)].map(l=>l[1])))].sort(),c=[...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(l=>l[1])))].sort();t.push({name:a,line:e.slice(0,i.index??0).split(/\r?\n/).length,operations:r,scripts:c});}return t}function De(e,t){let o=e.indexOf(t);return o<0?void 0:e.slice(0,o).split(/\r?\n/).length}var to={id:"runtime-bridge-semantics",version:"1.0.0",async applicable(e){for(let t of e.projects)for(let o of e.semanticFilesByProject.get(t.id)??[])if(!(f.extname(o).toLowerCase()!==".rs"||Z(t.root,o)))try{let i=await S.readFile(o,"utf8");if(/(?<![A-Za-z0-9_:])(?:deno_core::)?extension!\s*\(/.test(i))return true}catch{}return false},async run(e){for(let t of e.projects){let i=(e.semanticFilesByProject.get(t.id)??[]).filter(s=>f.extname(s).toLowerCase()===".rs"&&!Z(t.root,s));for(let s of i){let n="";try{if((await S.stat(s)).size>2*1024*1024)continue;n=await S.readFile(s,"utf8");}catch{continue}let a=eo(n);if(a.length===0)continue;let r=e.state.artifactPath(s,t),c=await e.state.addProof({provider:this.id,artifact:r,absolutePath:s,derivation:"extracted",trust:"observed",confidence:"high",detail:"Deno Core Rust extension declaration"}),d=e.state.addEntity({kind:"file",key:`file:${t.id}:${r}`,label:r,projectId:t.id,aliases:[f.basename(s)],attributes:{artifact:r,language:"rust",runtimeBridge:"deno-core"},proofIds:[c]});e.state.addRelation({from:E("project",`project:${t.id}`),to:d,kind:"contains",proofIds:[c]});for(let l of a){let p=await e.state.addProof({provider:this.id,artifact:r,absolutePath:s,line:l.line,derivation:"extracted",trust:"observed",confidence:"high",detail:`Deno Core extension ${l.name}`}),h=e.state.addEntity({kind:"protocol",key:`runtime-bridge:${t.id}:deno-core:${r}:${l.name}`,label:`${l.name} Rust JavaScript runtime bridge`,projectId:t.id,aliases:[l.name,`${l.name} cross-language bridge`,"Rust JavaScript TypeScript bridge"],attributes:{mechanism:"deno_core::extension!",languages:["javascript","rust","typescript"]},proofIds:[p]});e.state.addRelation({from:E("project",`project:${t.id}`),to:h,kind:"contains",proofIds:[p]}),e.state.addRelation({from:d,to:h,kind:"implements-protocol",proofIds:[p]});for(let y of ["rust","javascript","typescript"]){let k=E("language",`language:${t.id}:${y}`);e.state.entities.has(k)&&e.state.addRelation({from:h,to:k,kind:"uses-language",proofIds:[p]});}let u=new Map;for(let y of l.operations){let k=De(n,y),v=await e.state.addProof({provider:this.id,artifact:r,absolutePath:s,...k?{line:k}:{},derivation:"extracted",trust:"observed",confidence:"high",detail:`Rust op2 bridge operation ${y}`}),m=e.state.addEntity({kind:"symbol",key:`symbol:${t.id}:${r}:function:${y}`,label:y,projectId:t.id,aliases:[`rust:${y}`,`javascript:${y}`],attributes:{symbolKind:"function",language:"rust",bridgeMechanism:"op2"},proofIds:[v]});u.set(y,m),e.state.addRelation({from:d,to:m,kind:"defines",proofIds:[v]}),e.state.addRelation({from:m,to:h,kind:"implements-protocol",proofIds:[v,p]});}for(let y of l.scripts){let k=f.resolve(f.dirname(s),y);if(!await S.pathExists(k))continue;let v="";try{v=await S.readFile(k,"utf8");}catch{continue}let m=e.state.artifactPath(k,t),b=await e.state.addProof({provider:this.id,artifact:m,absolutePath:k,derivation:"extracted",trust:"observed",confidence:"high",detail:`${l.name} JavaScript/TypeScript extension source`}),j=e.state.addEntity({kind:"file",key:`file:${t.id}:${m}`,label:m,projectId:t.id,aliases:[f.basename(k)],attributes:{artifact:m,language:q(k,t.runtime),runtimeBridge:"deno-core"},proofIds:[b]});e.state.addRelation({from:d,to:j,kind:"references",confidence:"high",proofIds:[p,b]}),e.state.addRelation({from:j,to:h,kind:"implements-protocol",proofIds:[b,p]});for(let[w,$]of u){let _=De(v,w);if(!_)continue;let R=await e.state.addProof({provider:this.id,artifact:m,absolutePath:k,line:_,derivation:"extracted",trust:"observed",confidence:"high",detail:`JavaScript/TypeScript call to Rust operation ${w}`});e.state.addRelation({from:j,to:$,kind:"calls",confidence:"high",proofIds:[R,p]});}}}}}}},oo=/^[A-Z][A-Za-z0-9_]{3,}$/,so=new Set(["Client","Config","Context","Data","Error","Event","Message","Options","Request","Response","Result","Schema","Type","Value"]),io={id:"polyglot-semantics",version:"1.0.0",applicable(e){return e.projects.some(t=>new Set((t.runtimeCandidates??[]).filter(i=>i&&i!=="unknown"&&i!=="generic")).size>1||a$2(t.root).polyglot)},async run(e){for(let t of e.projects){let o=E("project",`project:${t.id}`),i=e.filesByProject.get(t.id)??[],s=a$2(t.root),n=[...e.state.entities.values()].filter(c=>c.kind==="package"&&c.projectId===t.id);for(let c of s.units){let d=c.runtime,l=f.resolve(t.root,c.manifest),p=e.state.artifactPath(l,t),h=n.find(m=>m.attributes.manifest===p),u=h?.proofIds??[await e.state.addProof({provider:this.id,artifact:p,absolutePath:l,derivation:"extracted",trust:"observed",confidence:"high",detail:`${d} runtime-unit manifest`})],y=e.state.artifactPath(f.dirname(l),t),k=Object.fromEntries(c.stages.map(m=>[m.stage,m.command])),v=e.state.addEntity({kind:"runtime-unit",key:`runtime-unit:${t.id}:${d}:${p}`,label:`${d}:${y}:${f.basename(l)}`,projectId:t.id,aliases:[d,y],attributes:{runtime:d,root:y,ecosystem:c.ecosystem,role:c.role,manifest:p,stages:Object.keys(k).sort(),orchestrationMode:"native-manifest"},proofIds:u});e.state.addRelation({from:o,to:v,kind:"contains",confidence:"high",proofIds:u}),h&&e.state.addRelation({from:v,to:h.id,kind:"configured-by",confidence:"high",proofIds:u});for(let m of c.stages){let{stage:b,command:j}=m,w=e.state.addEntity({kind:"lifecycle-stage",key:`lifecycle-stage:${t.id}:${d}:${p}:${b}`,label:`${b} \xB7 ${d}:${y}:${f.basename(l)}`,projectId:t.id,aliases:[`${d}:${b}`,b],attributes:{stage:b,command:j,runtime:d,workingDirectory:y,commandConfidence:m.confidence,preflight:m.preflight},proofIds:u});e.state.addRelation({from:v,to:w,kind:"contains",confidence:"high",proofIds:u});}}for(let c of i.filter(d=>x.has(f.extname(d).toLowerCase()))){let d="";try{d=await S.readFile(c,"utf8");}catch{continue}let l=Xt(d);if(!l)continue;let p=e.state.artifactPath(c,t),h=E("file",`file:${t.id}:${p}`);if(!e.state.entities.has(h))continue;let u=await e.state.addProof({provider:this.id,artifact:p,absolutePath:c,line:1,derivation:"extracted",trust:"observed",confidence:"high",detail:`Generated from ${l}`}),y=e.state.entities.get(h);y&&e.state.addEntity({kind:"file",key:y.identity.key,label:y.label,projectId:t.id,aliases:y.identity.aliases,attributes:{...y.attributes,generated:true},proofIds:[...y.proofIds,u]});let k=[...e.state.relations.values()].filter(w=>w.kind==="defines"&&w.from===h).map(w=>e.state.entities.get(w.to)).filter(w=>w?.kind==="symbol");for(let w of k)e.state.addEntity({kind:"symbol",key:w.identity.key,label:w.label,projectId:t.id,aliases:w.identity.aliases,attributes:{...w.attributes,generated:true},proofIds:[...w.proofIds,u]});let v=l.replace(/^\.\//,"").replace(/[.,:]$/,""),b=[f.resolve(t.root,v),f.resolve(f.dirname(c),v)].find(w=>i.includes(w));if(b){let w=e.state.artifactPath(b,t),$=E("file",`file:${t.id}:${w}`);if(e.state.entities.has($)){e.state.addRelation({from:h,to:$,kind:"generated-by",derivation:"extracted",trust:"observed",confidence:"high",proofIds:[u]});continue}}let j=e.state.addEntity({kind:"schema",key:`generation-source:${t.id}:${v}`,label:f.posix.basename(v),projectId:t.id,aliases:[v],attributes:{sourceReference:v,discoveredFromGeneratedHeader:true},proofIds:[u]});e.state.addRelation({from:h,to:j,kind:"generated-from",derivation:"extracted",trust:"observed",confidence:"medium",proofIds:[u]});}let a=[...e.state.entities.values()].filter(c=>c.projectId===t.id&&c.kind==="symbol"&&c.attributes.generated===true&&c.attributes.symbolKind==="type"&&typeof c.attributes.language=="string"&&oo.test(c.label)&&!so.has(c.label)),r=new Map;for(let c of a){let d=r.get(c.label)??[];d.push(c),r.set(c.label,d);}for(let[c,d]of [...r.entries()].filter(([,l])=>new Set(l.map(p=>p.attributes.language)).size>1).sort(([l],[p])=>l.localeCompare(p)).slice(0,1e3)){let l=d.sort((k,v)=>String(k.attributes.language).localeCompare(String(v.attributes.language))||k.id.localeCompare(v.id)),p=[...new Set(l.map(k=>String(k.attributes.language)))],h=[...new Set(l.flatMap(k=>k.proofIds))],u=e.state.addEntity({kind:"protocol",key:`protocol:${t.id}:${c}`,label:c,projectId:t.id,aliases:p.map(k=>`${k}:${c}`),attributes:{languages:p,implementationCount:l.length,source:"generated-types"},proofIds:h});for(let k of l)e.state.addRelation({from:k.id,to:u,kind:"implements-protocol",derivation:"inferred",trust:"corroborated",confidence:"high",proofIds:k.proofIds});let y=l[0];for(let k of l.slice(1))e.state.addRelation({from:k.id,to:y.id,kind:"equivalent-to",derivation:"inferred",trust:"corroborated",confidence:"high",proofIds:[...y.proofIds,...k.proofIds]});}}}},ro={id:"workspace-service-contract",version:"1.0.0",applicable(e){return !!e.contract?.projects.some(t=>t.ports.length>0||t.contracts.owns.length>0||t.contracts.apis.length>0||t.contracts.publishes.length>0||t.contracts.consumes.length>0||t.contracts.env.length>0)},async run(e){if(!e.contract)return;let t=new Map;for(let o of [...e.contract.projects].sort((i,s)=>i.slug.localeCompare(s.slug))){let i$1=o.contracts;if(o.ports.length===0&&i$1.owns.length===0&&i$1.apis.length===0&&i$1.publishes.length===0&&i$1.consumes.length===0&&i$1.env.length===0)continue;let s=await e.state.addProof({provider:this.id,artifact:i.workspaceContract,absolutePath:f.join(e.workspacePath,".workspai","workspace.contract.json"),pointer:`/projects/${o.slug}/contracts`,trust:"authoritative",derivation:"authored",detail:`Service contract for ${o.slug}`}),n=E("project",`project:${o.slug}`),a=e.state.addEntity({kind:"service",key:`contract-service:${o.slug}`,label:o.slug,projectId:o.slug,attributes:{ports:o.ports.map(r=>`${r.protocol}:${r.port}`),owns:[...i$1.owns].sort(),environmentKeys:[...i$1.env].sort()},proofIds:[s]});e.state.addRelation({from:n,to:a,kind:"implements",trust:"authoritative",derivation:"authored",proofIds:[s]});for(let r of [...i$1.apis].sort((c,d)=>c.name.localeCompare(d.name))){let c=e.state.addEntity({kind:"api",key:`contract-api:${o.slug}:${r.name}:${r.basePath}`,label:r.name,projectId:o.slug,attributes:{basePath:r.basePath},proofIds:[s]});e.state.addRelation({from:a,to:c,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[s]});}for(let r of [...i$1.publishes,...i$1.consumes].sort())t.has(r)||t.set(r,e.state.addEntity({kind:"queue",key:`event:${r}`,label:r,attributes:{protocol:"workspace-event"},proofIds:[s]}));for(let r of [...i$1.publishes].sort()){let c=t.get(r);c&&e.state.addRelation({from:a,to:c,kind:"publishes",trust:"authoritative",derivation:"authored",proofIds:[s]});}for(let r of [...i$1.consumes].sort()){let c=t.get(r);c&&e.state.addRelation({from:a,to:c,kind:"consumes",trust:"authoritative",derivation:"authored",proofIds:[s]});}}}},no={id:"openapi",version:"1.0.0",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(de))},async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).filter(de);for(let i of o){let s;try{s=await X(i);}catch(n){e.state.diagnostics.push({code:"graph.provider.openapi.parse_failed",severity:"warning",message:`Could not parse ${e.state.artifactPath(i,t)}: ${n instanceof Error?n.message:String(n)}`});continue}for(let n of s){if(!("openapi"in n)&&!("swagger"in n))continue;let a=C(n.info),r=P(a?.title)??`${t.id} API`,c=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(i,t),absolutePath:i,pointer:"/info",trust:"authoritative",detail:"Authored OpenAPI contract"}),d=E("project",`project:${t.id}`),l=e.state.addEntity({kind:"api",key:`api:${t.id}:${r}`,label:r,projectId:t.id,attributes:{version:P(a?.version),specification:P(n.openapi)??P(n.swagger)},proofIds:[c]});e.state.addRelation({from:d,to:l,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[c]});let p=C(C(n.components)?.schemas)??C(n.definitions),h=new Map;for(let y of Object.keys(p??{}).sort()){let k=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(i,t),absolutePath:i,pointer:`/components/schemas/${y}`,trust:"authoritative",detail:`OpenAPI schema ${y}`}),v=e.state.addEntity({kind:"schema",key:`schema:${t.id}:${r}:${y}`,label:y,projectId:t.id,proofIds:[k]});h.set(y,v),e.state.addRelation({from:l,to:v,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[k]});}let u=C(n.paths);for(let y of Object.keys(u??{}).sort()){let k=C(u?.[y]);for(let v of Object.keys(k??{}).filter(m=>pt.has(m.toLowerCase())).sort()){let m=C(k?.[v]),b=`/paths/${y.replace(/~/g,"~0").replace(/\//g,"~1")}/${v}`,j=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(i,t),absolutePath:i,pointer:b,trust:"authoritative",detail:`${v.toUpperCase()} ${y}`}),w=e.state.addEntity({kind:"endpoint",key:`endpoint:${t.id}:${r}:${v.toUpperCase()}:${y}`,label:`${v.toUpperCase()} ${y}`,projectId:t.id,aliases:N(m?.tags),attributes:{method:v.toUpperCase(),path:y,operationId:P(m?.operationId),deprecated:typeof m?.deprecated=="boolean"?m.deprecated:void 0,tags:N(m?.tags)},proofIds:[j]});e.state.addRelation({from:l,to:w,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[j]});let $=JSON.stringify(m??{});for(let[_,R]of h)$.includes(`/${_}`)&&e.state.addRelation({from:w,to:R,kind:"references",trust:"authoritative",derivation:"authored",proofIds:[j]});}}}}}}},ke=5e3;function Y(e,t){let o=B(f.relative(e,t)).toLowerCase(),i=0;return /(^|\/)(routes?|handlers?|controllers?|server|httpapi)(\/|$)/.test(o)&&(i+=100),/(?:^|\/)(?:api|routes?|handlers?|controllers?|server)(?:\.[a-z0-9]+)$/.test(o)&&(i+=80),/(^|\/)(src|app|lib)(\/|$)/.test(o)&&(i+=20),/(^|\/)(protocol|sdk|client)(\/|$)/.test(o)&&(i-=30),i}function ao(e,t){for(let o of ['"',"'","`"]){let i=e.indexOf(`${o}${t}${o}`);if(i>=0)return i}return -1}var co={id:"authored-api-implementation-binding",version:"1.0.0",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 o=new Map;for(let n of e.state.entities.values()){let a=n.attributes.operationId;if(n.kind!=="endpoint"||n.projectId!==t.id||typeof a!="string"||a.trim().length===0)continue;let r=o.get(a)??[];r.push(n),o.set(a,r);}if(o.size===0)continue;let i=(e.semanticFilesByProject.get(t.id)??[]).filter(n=>x.has(f.extname(n).toLowerCase())&&!Z(t.root,n)&&!te(t.root,n)).sort((n,a)=>Y(t.root,a)-Y(t.root,n)||n.localeCompare(a)).slice(0,ke),s=new Map;for(let n of i){let a;try{let c=await S.stat(n);if(!c.isFile()||c.size>2*1024*1024)continue;a=await S.readFile(n,"utf8");}catch{continue}let r=Y(t.root,n);if(!(r<50))for(let c of o.keys()){let d=ao(a,c);if(d<0)continue;let l=s.get(c);l&&(l.score>r||l.score===r&&l.file.localeCompare(n)<=0)||s.set(c,{file:n,contents:a,offset:d,score:r});}}for(let[n,a]of s){let r=e.state.artifactPath(a.file,t),c=a.contents.slice(0,a.offset).split(/\r?\n/).length,d=await e.state.addProof({provider:this.id,artifact:r,absolutePath:a.file,line:c,derivation:"extracted",trust:"observed",confidence:"high",detail:`Production handler binds OpenAPI operation ${n}`}),l=e.state.addEntity({kind:"file",key:`file:${t.id}:${r}`,label:r,projectId:t.id,aliases:[f.basename(a.file)],attributes:{artifact:r,language:q(a.file,t.runtime),bytes:Buffer.byteLength(a.contents)},proofIds:[d]});e.state.addRelation({from:E("project",`project:${t.id}`),to:l,kind:"contains",derivation:"extracted",trust:"observed",proofIds:[d]});for(let p of o.get(n)??[])e.state.addRelation({from:l,to:p.id,kind:"implements",derivation:"extracted",trust:"corroborated",confidence:"high",proofIds:[...p.proofIds,d]});}}}},lo=8,po=/(?:^|[,{\n]\s*)["']?(?:routes?|upstreams?|virtualHosts?|pathPrefix)["']?\s*[:=]/im;function Ge(e,t){let o=f.extname(e).toLowerCase();if(/\.(?:json|ya?ml|toml)$/i.test(e))return /(?:route|routing|gateway|proxy|ingress|server)/i.test(f.basename(e))?po.exec(t)?.index??-1:-1;let i=o===".py"?[/\b(?:include_router|add_api_route|mount)\s*\(/]:[".js",".jsx",".mjs",".cjs",".ts",".tsx",".mts",".cts"].includes(o)?[/\b(?:router|app)\.(?:use|route|register)\s*\(/,/\b(?:registerRoutes?|configureRoutes?)\s*\(/i,/\b(?:routeModule|routeMatcher|routesManifest|appPathsManifest)\b/]:o===".go"?[/\.\s*InstallAPIGroups?\s*\(/,/\.\s*registerResourceHandlers\s*\(/,/\b(?:registerRoutes?|configureRoutes?)\s*\(/i]:[".java",".kt",".kts",".scala",".cs",".fs",".fsx",".vb"].includes(o)?[/\b(?:RouterFunction|RequestMappingHandlerMapping|MapControllers|MapGroup)\s*[<(]/,/\b(?:registerRoutes?|configureRoutes?)\s*\(/i,/\bregister(?:Rest)?(?:Action|Handler)\s*\(/]:o===".rb"?[/\broutes\.draw\s+do\b/,/\b(?:resources|namespace)\s+[:"']/]:[/\b(?:registerRoutes?|configureRoutes?)\s*\(/i];for(let s of i){let n=s.exec(t);if(n)return n.index}return -1}var fo={id:"dynamic-api-registration-binding",version:"1.0.0",applicable(e){return [...e.state.entities.values()].some(t=>t.kind==="api")?e.projects.some(t=>(e.semanticFilesByProject.get(t.id)??[]).filter(o=>(x.has(f.extname(o).toLowerCase())||/\.(?:json|ya?ml|toml)$/i.test(o))&&(Y(t.root,o)>=20||/\.(?:json|ya?ml|toml)$/i.test(o))&&!Z(t.root,o)&&!te(t.root,o)&&!de(o)).slice(0,ke).some(o=>{try{let i=S.statSync(o);return i.isFile()&&i.size<=2*1024*1024&&Ge(o,S.readFileSync(o,"utf8"))>=0}catch{return false}})):false},async run(e){for(let t of e.projects){let o=[...e.state.entities.values()].filter(a=>a.kind==="api"&&a.projectId===t.id);if(o.length===0)continue;let i=(e.semanticFilesByProject.get(t.id)??[]).filter(a=>(x.has(f.extname(a).toLowerCase())||/\.(?:json|ya?ml|toml)$/i.test(a))&&!Z(t.root,a)&&!te(t.root,a)&&!de(a)&&(Y(t.root,a)>=20||/\.(?:json|ya?ml|toml)$/i.test(a))).sort((a,r)=>Y(t.root,r)-Y(t.root,a)||a.localeCompare(r)).slice(0,ke),s=0,n=Math.max(1,o.length*lo);for(let a of i){if(s>=n)break;let r;try{let y=await S.stat(a);if(!y.isFile()||y.size>2*1024*1024)continue;r=await S.readFile(a,"utf8");}catch{continue}let c=Ge(a,r);if(c<0)continue;let d=o.length===1?o:o.filter(y=>y.label.toLowerCase().split(/[^a-z0-9]+/).filter(k=>k.length>=4).some(k=>r.toLowerCase().includes(k)));if(d.length===0)continue;let l=e.state.artifactPath(a,t),p=await e.state.addProof({provider:this.id,artifact:l,absolutePath:a,line:r.slice(0,c).split(/\r?\n/).length,derivation:"extracted",trust:"observed",confidence:"high",detail:/\.(?:json|ya?ml|toml)$/i.test(a)?"Configuration-driven API topology registration":"Runtime-generated API topology registration"}),h=e.state.addEntity({kind:"file",key:`file:${t.id}:${l}`,label:l,projectId:t.id,aliases:[f.basename(a)],attributes:{artifact:l,language:q(a,t.runtime)},proofIds:[p]}),u=e.state.addEntity({kind:"runtime-unit",key:`dynamic-api-registration:${t.id}:${l}`,label:`${f.basename(a)} API registration`,projectId:t.id,attributes:{mechanism:/\.(?:json|ya?ml|toml)$/i.test(a)?"configuration-driven-routing":"runtime-generated-routing"},proofIds:[p]});e.state.addRelation({from:E("project",`project:${t.id}`),to:u,kind:"contains",derivation:"extracted",trust:"observed",proofIds:[p]}),e.state.addRelation({from:u,to:h,kind:"configured-by",derivation:"extracted",trust:"observed",proofIds:[p]});for(let y of d)e.state.addRelation({from:u,to:y.id,kind:"implements",derivation:"extracted",trust:"corroborated",confidence:"high",proofIds:[...y.proofIds,p]});s+=1;}}}},uo={id:"interface-contracts",version:"1.0.0",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(Se))},async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).filter(Se);for(let i of o){let s=e.state.artifactPath(i,t),n=f.extname(i).toLowerCase();if(n===".graphql"||n===".gql"){let a=await S.readFile(i,"utf8"),r=await e.state.addProof({provider:this.id,artifact:s,absolutePath:i,trust:"authoritative",derivation:"authored",detail:"GraphQL schema"}),c=e.state.addEntity({kind:"api",key:`graphql:${t.id}:${s}`,label:`${t.id} GraphQL API`,projectId:t.id,attributes:{specification:"graphql",artifact:s},proofIds:[r]});e.state.addRelation({from:E("project",`project:${t.id}`),to:c,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[r]});for(let d of a.matchAll(/^\s*(?:type|input|interface|enum|scalar|union)\s+([A-Za-z_]\w*)/gm)){let l=e.state.addEntity({kind:"schema",key:`graphql-schema:${t.id}:${s}:${d[1]}`,label:d[1],projectId:t.id,proofIds:[r]});e.state.addRelation({from:c,to:l,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[r]});}continue}if(n===".proto"){let a=await S.readFile(i,"utf8"),r=ce(a.replace(/\r\n/g,`
|
|
7
|
-
`).trim()),c=a.match(/^\s*package\s+([A-Za-z_][\w.]*)\s*;/m)?.[1],d=c||"unscoped",l=r.slice(0,16),p=await e.state.addProof({provider:this.id,artifact:s,absolutePath:i,trust:"authoritative",derivation:"authored",detail:"Protocol Buffers contract"});for(let h of a.matchAll(/^\s*service\s+([A-Za-z_]\w*)/gm)){let u=e.state.addEntity({kind:"api",key:`protobuf-service:${d}:${h[1]}:${l}`,label:h[1],aliases:[...c?[`${c}.${h[1]}`]:[],h[1]],attributes:{specification:"protobuf",package:c,definitionHash:r},proofIds:[p]});e.state.addRelation({from:E("project",`project:${t.id}`),to:u,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[p]});}for(let h of a.matchAll(/^\s*message\s+([A-Za-z_]\w*)/gm)){let u=e.state.addEntity({kind:"schema",key:`protobuf-message:${d}:${h[1]}:${l}`,label:h[1],aliases:[...c?[`${c}.${h[1]}`]:[],h[1]],attributes:{specification:"protobuf",package:c,definitionHash:r},proofIds:[p]});e.state.addRelation({from:E("project",`project:${t.id}`),to:u,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[p]});}continue}try{let a=(await X(i))[0];if(!a||!("asyncapi"in a))continue;let r=await e.state.addProof({provider:this.id,artifact:s,absolutePath:i,trust:"authoritative",derivation:"authored",detail:"AsyncAPI contract"}),c=e.state.addEntity({kind:"api",key:`asyncapi:${t.id}:${s}`,label:P(C(a.info)?.title)??`${t.id} AsyncAPI`,projectId:t.id,attributes:{specification:`asyncapi ${String(a.asyncapi)}`,artifact:s},proofIds:[r]});e.state.addRelation({from:E("project",`project:${t.id}`),to:c,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[r]});for(let d of Object.keys(C(a.channels)??{}).sort()){let l=e.state.addEntity({kind:"queue",key:`asyncapi-channel:${t.id}:${d}`,label:d,projectId:t.id,attributes:{protocol:"asyncapi"},proofIds:[r]});e.state.addRelation({from:c,to:l,kind:"publishes",trust:"authoritative",derivation:"authored",proofIds:[r]});}}catch{}}}}},mo={id:"infrastructure-as-code",version:"1.0.0",applicable(e){return oe(e).some(_e)},async run(e){let t=oe(e).filter(_e);for(let o of t){let i=U(e.projects,o),s=i?.id??e.state.workspaceName,n=i?E("project",`project:${i.id}`):E("workspace",`workspace:${e.state.workspaceName}`),a=e.state.artifactPath(o,i),r=await S.readFile(o,"utf8"),c=await e.state.addProof({provider:this.id,artifact:a,absolutePath:o,trust:"authoritative",derivation:"authored",detail:"Infrastructure definition"});if(/^Dockerfile/i.test(f.basename(o))){let l=[...r.matchAll(/^\s*FROM\s+([^\s]+)(?:\s+AS\s+([^\s]+))?/gim)],p=e.state.addEntity({kind:"container",key:`dockerfile:${s}:${a}`,label:`${s} container image`,...i?{projectId:i.id}:{},attributes:{artifact:a,baseImages:l.map(h=>h[1])},proofIds:[c]});e.state.addRelation({from:n,to:p,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[c]});continue}if(/\.tf$/i.test(o)){for(let l of r.matchAll(/^\s*resource\s+["']([^"']+)["']\s+["']([^"']+)["']/gm)){let p=l[1],h=/(?:db|sql|rds|database)/i.test(p)?"database":/(?:queue|kafka|sqs|pubsub|servicebus)/i.test(p)?"queue":"deployment",u=e.state.addEntity({kind:h,key:`terraform:${s}:${p}:${l[2]}`,label:`${p}.${l[2]}`,...i?{projectId:i.id}:{},attributes:{resourceType:p,artifact:a},proofIds:[c]});e.state.addRelation({from:n,to:u,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[c]});}continue}let d=e.state.addEntity({kind:"deployment",key:`helm:${s}:${a}`,label:`${s} Helm chart`,...i?{projectId:i.id}:{},attributes:{artifact:a,format:"helm"},proofIds:[c]});e.state.addRelation({from:n,to:d,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[c]});}}};function qe(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 go={id:"compose",version:"1.0.0",async applicable(e){return (await Me(e)).length>0},async run(e){let t=[];for(let o of await Me(e)){let i;try{i=(await X(o))[0];}catch(l){e.state.diagnostics.push({code:"graph.provider.compose.parse_failed",severity:"warning",message:`Could not parse ${e.state.artifactPath(o)}: ${l instanceof Error?l.message:String(l)}`});}let s=C(i?.services);if(!s)continue;let n=U(e.projects,o),a=e.state.artifactPath(o,n),r=f.basename(o).toLowerCase().startsWith("docker-compose")?"docker-compose":"compose",c=`${n?.id??"workspace"}:${f.posix.dirname(a)}:${r}`,d=l=>`compose-service:${c}:${l}`;for(let l of Object.keys(s).sort()){let p=C(s[l]),h=p?.build,u=P(h)??P(C(h)?.context),y=u?U(e.projects,f.resolve(f.dirname(o),u)):e.projects.find(R=>R.id.toLowerCase()===l.toLowerCase()||f.basename(R.path).toLowerCase()===l.toLowerCase())??n,k=await e.state.addProof({provider:this.id,artifact:a,absolutePath:o,pointer:`/services/${l}`,trust:"authoritative",derivation:"authored",detail:`Compose service ${l}`}),v=P(p?.image),m=d(l),b=e.state.entities.get(E("service",m)),j=Array.isArray(b?.attributes.ports)?b.attributes.ports.filter(R=>typeof R=="string"):[],w=Array.isArray(b?.attributes.networks)?b.attributes.networks.filter(R=>typeof R=="string"):[],$=Array.isArray(b?.attributes.environmentKeys)?b.attributes.environmentKeys.filter(R=>typeof R=="string"):[],_=e.state.addEntity({kind:"service",key:m,label:l,...y?.id||b?.projectId?{projectId:y?.id??b?.projectId}:{},attributes:{image:v??b?.attributes.image,ports:[...new Set([...j,...N(p?.ports).map(String)])].sort((R,I)=>R.localeCompare(I)),networks:[...new Set([...w,...N(p?.networks)])].sort((R,I)=>R.localeCompare(I)),environmentKeys:[...new Set([...$,...Ft(p?.environment)])].sort((R,I)=>R.localeCompare(I))},proofIds:[...b?.proofIds??[],k],mergeArrayAttributes:["ports","networks","environmentKeys"]});if(y&&e.state.addRelation({from:E("project",`project:${y.id}`),to:_,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[k]}),v){let R=e.state.addEntity({kind:qe(v),key:`image:${v}`,label:v,...y?{projectId:y.id}:{},attributes:{image:v},proofIds:[k]});e.state.addRelation({from:_,to:R,kind:qe(v)==="container"?"runs-on":"depends-on",trust:"authoritative",derivation:"authored",proofIds:[k]});}}for(let l of Object.keys(s).sort()){let p=C(s[l]);for(let h of N(p?.depends_on)){let u=await e.state.addProof({provider:this.id,artifact:a,absolutePath:o,pointer:`/services/${l}/depends_on/${h}`,trust:"authoritative",derivation:"authored",detail:`${l} depends on ${h}`});t.push({from:E("service",d(l)),to:E("service",d(h)),proofId:u});}}}for(let o of t)!e.state.entities.has(o.from)||!e.state.entities.has(o.to)||e.state.addRelation({from:o.from,to:o.to,kind:"depends-on",trust:"authoritative",derivation:"authored",proofIds:[o.proofId]});}},ho={id:"documentation",version:"1.0.0",applicable(e){return oe(e).some(Te)},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(n=>Te(n)&&!e.projects.some(a=>n.startsWith(`${a.root}${f.sep}`)&&Z(a.root,n)));for(let n of s){if(t.has(n))continue;t.add(n);let a=U(e.projects,n),c=(await S.readFile(n,"utf8")).match(/^#\s+(.+)$/m)?.[1]?.trim()??f.basename(n),d=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(n,a),absolutePath:n,line:1,trust:"authoritative",derivation:"authored",detail:`Documentation: ${c}`}),l=e.state.addEntity({kind:"document",key:`document:${e.state.artifactPath(n,a)}`,label:c,...a?{projectId:a.id}:{},attributes:{artifact:e.state.artifactPath(n,a)},proofIds:[d]}),p=a?E("project",`project:${a.id}`):E("workspace",`workspace:${e.state.workspaceName}`);e.state.addRelation({from:l,to:p,kind:"documents",trust:"authoritative",derivation:"authored",proofIds:[d]});}}}},yo={id:"kubernetes",version:"1.0.0",async applicable(e){return (await We(e)).length>0},async run(e){for(let t of await We(e)){let o=U(e.projects,t),i=o?E("project",`project:${o.id}`):E("workspace",`workspace:${e.state.workspaceName}`),s=await X(t);for(let n=0;n<s.length;n+=1){let a=s[n],r=P(a.kind),c=C(a.metadata),d=P(c?.name);if(!r||!d)continue;let l=P(c?.namespace)??"default",p=/Deployment|StatefulSet|DaemonSet/i.test(r)?"deployment":/Service|Ingress/i.test(r)?"service":/ConfigMap|Secret/i.test(r)?"environment":"deployment",h=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,o),absolutePath:t,pointer:`/documents/${n}`,trust:"authoritative",derivation:"authored",detail:`${r} ${l}/${d}`}),u=e.state.addEntity({kind:p,key:`kubernetes:${r}:${l}:${d}`,label:`${r}/${d}`,...o?{projectId:o.id}:{},attributes:{resourceKind:r,namespace:l,secret:r==="Secret",keys:r==="Secret"||r==="ConfigMap"?Object.keys(C(a.data)??{}).sort():void 0},proofIds:[h]});e.state.addRelation({from:i,to:u,kind:p==="deployment"?"deploys":"contains",trust:"authoritative",derivation:"authored",proofIds:[h]});let y=e.state.addEntity({kind:"environment",key:`kubernetes-namespace:${l}`,label:`Kubernetes namespace ${l}`,attributes:{namespace:l},proofIds:[h]});e.state.addRelation({from:u,to:y,kind:"runs-on",trust:"authoritative",derivation:"authored",proofIds:[h]});}}}},vo={id:"ci-workflow",version:"1.0.0",applicable(e){return Le(e).length>0},async run(e){let t=Le(e);for(let o of t){let i=U(e.projects,o),s=e.state.artifactPath(o,i),n=f.basename(o)==="Jenkinsfile",a=B(f.relative(i?.root??e.workspacePath,o)),r=/^prow\/[^/]+\.(?:sh|py)$/i.test(a),c=f.basename(o),d=[],l=[];if(n||r){let u=await S.readFile(o,"utf8");n?d=[...u.matchAll(/\bstage\s*\(\s*["']([^"']+)["']/g)].map(y=>y[1]):(c=`${f.basename(o)} \xB7 Prow`,d=[f.basename(o).replace(/\.(?:sh|py)$/i,"")],l=["external-provider"]);}else {let u;try{u=(await X(o))[0];}catch{continue}if(!u)continue;if(c=P(u.name)??c,/^\.gitlab-ci\./i.test(a)){let y=new Set(["stages","variables","workflow","include","default","image","services","cache","before_script","after_script"]);d=Object.keys(u).filter(k=>!k.startsWith(".")&&!y.has(k)).sort();}else d=[...new Set([...Object.keys(C(u.jobs)??{}),...Object.keys(C(C(u.workflows)?.jobs)??{}),...N(u.stages)])].sort();l=N(u.on);}d.length===0&&(d=["pipeline"]);let p=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,...!n&&!r?{pointer:"/jobs"}:{},trust:"authoritative",derivation:"authored",detail:"CI/CD workflow"}),h=e.state.addEntity({kind:"pipeline",key:`pipeline:${s}`,label:c,...i?{projectId:i.id}:{},attributes:{jobs:d,triggers:l,artifact:s},proofIds:[p]});e.state.addRelation({from:i?E("project",`project:${i.id}`):E("workspace",`workspace:${e.state.workspaceName}`),to:h,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[p]});}}},bo={id:"codeowners",version:"1.1.0",async applicable(e){return (await Oe(e)).length>0},async run(e){for(let t of await Oe(e)){let o=U(e.projects,t);if(f.basename(t)==="OWNERS"){let n=await X(t);for(let a of n)for(let r of ["approvers","reviewers"]){let c=Array.isArray(a[r])?a[r]:[];for(let d=0;d<c.length;d+=1){let l=P(c[d]);if(!l)continue;let p=l.startsWith("@")?l:`@${l}`,h=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,o),absolutePath:t,pointer:`/${r}/${d}`,trust:"authoritative",derivation:"authored",detail:`${r}: ${p}`}),u=e.state.addEntity({kind:"owner",key:`owner:${p.toLowerCase()}`,label:p,aliases:[l,p],proofIds:[h]});e.state.addRelation({from:u,to:o?E("project",`project:${o.id}`):E("workspace",`workspace:${e.state.workspaceName}`),kind:"owns",trust:"authoritative",derivation:"authored",proofIds:[h]});}}continue}let s=(await S.readFile(t,"utf8")).split(/\r?\n/);for(let n=0;n<s.length;n+=1){let a=s[n].trim();if(!a||a.startsWith("#"))continue;let[r,...c]=a.split(/\s+/);for(let d of c.filter(l=>l.startsWith("@"))){let l=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,o),absolutePath:t,line:n+1,trust:"authoritative",derivation:"authored",detail:`${r} ${d}`}),p=e.state.addEntity({kind:"owner",key:`owner:${d.toLowerCase()}`,label:d,aliases:[d],proofIds:[l]}),h=e.projects.filter(y=>{let k=r.replace(/^\//,"").replace(/\*.*$/,""),v=f.dirname(t),m=[".github","docs"].includes(f.basename(v))?f.dirname(v):v,b=B(f.relative(m,y.root));return k&&(b==="."||b.startsWith(k.replace(/\/$/,""))||y.path.startsWith(k.replace(/\/$/,"")))}),u=h.length>0?h.map(y=>E("project",`project:${y.id}`)):o?[E("project",`project:${o.id}`)]:[E("workspace",`workspace:${e.state.workspaceName}`)];for(let y of u)e.state.addRelation({from:p,to:y,kind:"owns",trust:"authoritative",derivation:"authored",proofIds:[l]});}}}}},ko={id:"architecture-decisions",version:"1.0.0",applicable(e){return [{root:e.workspacePath,files:e.workspaceFiles},...e.projects.map(t=>({root:t.root,files:e.filesByProject.get(t.id)??[]}))].some(t=>t.files.some(o=>Fe(t.root,o)))},async run(e){let t=new Set,o=[{root:e.workspacePath,files:e.workspaceFiles},...e.projects.map(i=>({root:i.root,files:e.filesByProject.get(i.id)??[]}))];for(let i of o){let s=i.files.filter(n=>Fe(i.root,n));for(let n of s){if(t.has(n))continue;t.add(n);let a=U(e.projects,n),r=await S.readFile(n,"utf8"),c=r.match(/^#\s+(.+)$/m)?.[1]?.trim()??f.basename(n,".md"),d=r.match(/^status\s*:\s*(.+)$/im)?.[1]?.trim(),l=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(n,a),absolutePath:n,line:1,trust:"authoritative",derivation:"authored",detail:`Architecture decision: ${c}`}),p=e.state.addEntity({kind:"decision",key:`decision:${e.state.artifactPath(n,a)}`,label:c,...a?{projectId:a.id}:{},attributes:{status:d,artifact:e.state.artifactPath(n,a)},proofIds:[l]}),h=a?E("project",`project:${a.id}`):E("workspace",`workspace:${e.state.workspaceName}`);e.state.addRelation({from:h,to:p,kind:"decided-by",trust:"authoritative",derivation:"authored",proofIds:[l]});}}}},xe=[Zt,Jt,Ht,Ut,Vt,Yt,to,io,ro,no,co,fo,uo,go,mo,yo,vo,bo,ho,ko];async function wo(e$1,t){for(let o of t.edges){let i=[];for(let s of o.evidence){let n=re(s.file);i.push(await e$1.addProof({provider:"project-topology",artifact:n,absolutePath:f.resolve(e$1.workspacePath,n),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$1.addProof({provider:"project-topology",artifact:e.model,derivation:"inferred",trust:"ambiguous",confidence:o.confidence,detail:`${o.kind} relationship without source locator`})),e$1.addRelation({from:E("project",`project:${o.from}`),to:E("project",`project:${o.to}`),kind:o.kind==="event-pub-sub"?"consumes":"depends-on",derivation:o.source==="inferred"?"inferred":"authored",trust:o.source==="inferred"?"observed":"authoritative",confidence:o.confidence,proofIds:i});}}function Po(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(),n=String(i.attributes.path??"");if(!i.projectId||!s||!n)continue;let a=`${i.projectId}\0${s}\0${n}`,r=o.get(a)??[];r.push(i),o.set(a,r);}for(let i of o.values()){if(i.length<2)continue;let s=i.find(n=>n.proofIds.some(a=>e.proofs.get(a)?.trust==="authoritative"));if(s)for(let n of i.filter(a=>a.id!==s.id))e.addRelation({from:n.id,to:s.id,kind:"implements",derivation:"extracted",trust:"corroborated",confidence:"high",proofIds:[...n.proofIds,...s.proofIds]});}}function ie(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 $o(e,t){let o=e.filter(u=>u.kind==="project").map(u=>u.id),i=e.filter(u=>u.kind==="endpoint").map(u=>u.id),s=new Set(i),n=e.filter(u=>u.kind==="api"&&!!u.projectId).map(u=>u.id),a=new Set(n),r=new Map(e.map(u=>[u.id,u.kind])),c=new Set(t.filter(u=>u.kind==="implements"||u.kind==="defines"&&r.get(u.from)==="file"&&r.get(u.to)==="endpoint").flatMap(u=>s.has(u.from)?[u.from]:s.has(u.to)?[u.to]:[])),d=new Set(t.filter(u=>u.kind==="implements"&&(r.get(u.from)==="runtime-unit"||r.get(u.to)==="runtime-unit")).flatMap(u=>a.has(u.from)?[u.from]:a.has(u.to)?[u.to]:[])),l=new Set(t.filter(u=>u.kind==="tests").flatMap(u=>[u.from,u.to]).filter(u=>o.includes(u))),p=new Set(t.filter(u=>u.kind==="deploys").flatMap(u=>[u.from,u.to]).filter(u=>o.includes(u))),h=new Set(t.filter(u=>u.kind==="owns").flatMap(u=>[u.from,u.to]).filter(u=>o.includes(u)));return {apiImplementation:ie(i,c),apiRuntimeRegistration:ie(n,d),projectTests:ie(o,l),projectDeployment:ie(o,p),projectOwnership:ie(o,h)}}async function Bo(e){let t=f.resolve(e.workspacePath),o=e.now??new Date,i=e.projects.map(g=>{let A=g.absolutePath?f.resolve(g.absolutePath):f.resolve(t,g.path),z=f.relative(t,A),H=z.startsWith(`..${f.sep}`)||z===".."||f.isAbsolute(z);return {...g,root:A,artifactPrefix:H?`external/${g.id}`:B(z||g.id)}}).sort((g,A)=>g.id.localeCompare(A.id)),s=new be(t,o,e.workspace.name),n=Math.max(100,Math.min(e.maxFilesPerProject??2e3,1e4)),a$1=Math.min(Math.max(n*10,2e4),5e4),r=new Map(await Promise.all(i.map(async g=>[g.id,await Ye(g.root)]))),c=new Map(await Promise.all(i.map(async g=>[g.id,[...new Set([...await ne(g.root,n),...r.get(g.id)??[]])].sort((A,z)=>A.localeCompare(z))]))),d=new Map(await Promise.all(i.map(async g=>[g.id,[...new Set([...await ne(g.root,a$1),...r.get(g.id)??[]])].sort((A,z)=>A.localeCompare(z))]))),l=Math.min(n*Math.max(i.length,1),2e4),p=await ne(t,l),h=await zt({workspacePath:t,projects:i,projectFileLimit:a$1,workspaceFileLimit:l,inventories:{workspaceFiles:p,projectFiles:d}}),u=new Map(h.scopes.filter(g=>g.kind==="project").map(g=>[g.id,g.hash])),y=new Map((e.previousGraph?.source.inputs?.scopes??[]).filter(g=>g.kind==="project").map(g=>[g.id,g.hash])),k=new Map((e.previousGraph?.providers??[]).filter(g=>g.id!=="incremental-project-cache").map(g=>[g.id,g.version])),v=xe.every(g=>k.get(g.id)===g.version),m=e.previousGraph?.workspace.name===e.workspace.name&&v&&u.size>0&&u.size===y.size&&[...u.keys()].every(g=>y.has(g)),b=new Set(m?[...u].filter(([g,A])=>y.get(g)===A).map(([g])=>g):[]),j=i.filter(g=>!b.has(g.id));if(e.previousGraph&&b.size>0){let g=e.previousGraph.entities.filter(O=>O.projectId&&b.has(O.projectId)),A=new Set(g.map(O=>O.id)),z=e.previousGraph.relations.filter(O=>A.has(O.from)&&A.has(O.to)),H=new Set([...g,...z].flatMap(O=>O.proofIds));for(let O of e.previousGraph.proofs)H.has(O.id)&&s.proofs.set(O.id,O);for(let O of g)s.entities.set(O.id,O);for(let O of z)s.relations.set(O.id,O);s.providers.push({id:"incremental-project-cache",version:"1.0.0",status:"passed",permission:"filesystem-read",discoveredEntities:g.length,discoveredRelations:z.length,proofCount:H.size,diagnostics:[`Reused ${b.size} unchanged project scope(s); rescanning ${j.length}.`]});}let w={workspacePath:t,projects:i,filesByProject:c,semanticFilesByProject:d,semanticScanLimit:a$1,workspaceFiles:p,now:o,maxFilesPerProject:n,contract:e.contract??null,state:s},$=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"]),_={...w,projects:j};for(let g of xe){let A={entities:s.entities.size,relations:s.relations.size,proofs:s.proofs.size,diagnostics:s.diagnostics.length},z="passed",H=null;try{let J=b.size>0&&$.has(g.id)?_:w;if(!(g.applicable?await g.applicable(J):true))z="skipped";else {await g.run(J);let et=s.entities.size-A.entities,tt=s.relations.size-A.relations,ot=s.proofs.size-A.proofs;et===0&&tt===0&&ot===0?(z="partial",s.diagnostics.push({code:`graph.provider.${g.id}.empty_result`,severity:"warning",message:`${g.id} found an applicable source surface but produced no graph evidence.`,recommendation:"Inspect the matching source format or extend the provider before treating this graph dimension as complete."})):s.diagnostics.length>A.diagnostics&&(z="partial");}}catch(J){z="failed";let pe=J instanceof Error?J.message:String(J);H=pe,s.diagnostics.push({code:`graph.provider.${g.id}.failed`,severity:"warning",message:`${g.id} provider failed: ${pe}`,recommendation:"Repair the referenced source artifact and rerun workspace graph emit."});}let O=s.diagnostics.slice(A.diagnostics).map(J=>`${J.code}: ${J.message}`);H&&O.length===0&&O.push(H),s.providers.push({id:g.id,version:g.version,status:z,permission:"filesystem-read",discoveredEntities:s.entities.size-A.entities,discoveredRelations:s.relations.size-A.relations,proofCount:s.proofs.size-A.proofs,diagnostics:O});}Po(s),await wo(s,e.projectTopology);let R=[...s.entities.values()].sort((g,A)=>g.id.localeCompare(A.id)),I=[...s.relations.values()].sort((g,A)=>g.id.localeCompare(A.id)),F=[...s.proofs.values()].sort((g,A)=>g.id.localeCompare(A.id)),T=R.filter(g=>g.proofIds.length>0).length,W=I.filter(g=>g.proofIds.length>0).length,M=s.providers.filter(g=>g.status!=="failed").length,L=e.projectTopology.diagnostics?.filter(g=>g.code==="graph.edges.missing").flatMap(g=>g.nodeIds??[])??[];L.length>0&&s.diagnostics.push({code:"graph.knowledge.project_relationships_unknown",severity:"warning",message:`${L.length} project(s) have no proven inter-project relationship. This is unknown topology, not proof of independence.`,entityIds:L.map(g=>E("project",`project:${g}`)),recommendation:"Author service contracts or add OpenAPI, Compose, Kubernetes, package or import evidence."});let K=s.diagnostics.filter(g=>g.code.includes("unknown")||g.code.includes("unresolved")||g.code.includes("limit_reached")||g.code.endsWith(".empty_result")).reduce((g,A)=>g+Math.max(A.entityIds?.length??0,A.relationIds?.length??0,1),0),D=$o(R,I),G=Object.values(D).reduce((g,A)=>g+A.unknownCount,0);return {schemaVersion:a,generatedAt:o.toISOString(),source:{...e.source,inputs:h},workspace:e.workspace,projectTopology:e.projectTopology,entities:R,relations:I,proofs:F,providers:[...s.providers].sort((g,A)=>g.id.localeCompare(A.id)),quality:{entityCount:R.length,relationCount:I.length,proofCount:F.length,entityProofCoverageRatio:R.length===0?1:T/R.length,relationProofCoverageRatio:I.length===0?1:W/I.length,providerSuccessRatio:s.providers.length===0?1:M/s.providers.length,conflictCount:s.diagnostics.filter(g=>g.code.includes("conflict")).length,unknownCount:K+G,bindingCoverage:D,portable:true,secretValuesEmitted:false},diagnostics:[...s.diagnostics].sort((g,A)=>g.code.localeCompare(A.code)||g.message.localeCompare(A.message))}}function Do(e,t){return E(e,t)}
|
|
8
|
-
export{Ko as a,No as b,zt as c,Bo as d,Do as e};
|