workspai 0.56.0 → 0.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/README.md +38 -8
  2. package/contracts/adopt-effects.v1.json +72 -0
  3. package/contracts/agent-customization-pack.v1.json +10 -0
  4. package/contracts/cli-runtime-command-inventory.v1.snapshot.json +81 -0
  5. package/contracts/doctor-project-evidence.v1.json +27 -0
  6. package/contracts/doctor-workspace-evidence.v1.json +29 -0
  7. package/contracts/extension-cli-compatibility.v1.json +6 -0
  8. package/contracts/published-contract-catalog.v1.json +30 -0
  9. package/contracts/runtime-command-surface.v1.json +45 -0
  10. package/contracts/workspace-intelligence/doctor-summary.v1.json +3 -1
  11. package/contracts/workspace-intelligence/goal-agent-handoff.v1.json +96 -0
  12. package/contracts/workspace-intelligence/goal-index.v1.json +45 -0
  13. package/contracts/workspace-intelligence/goal-lifecycle-result.v1.json +96 -0
  14. package/contracts/workspace-intelligence/goal-pack.v1.json +250 -0
  15. package/contracts/workspace-intelligence/goal-plan-result.v1.json +46 -0
  16. package/contracts/workspace-intelligence/workspace-repair-proposal.v1.json +1 -0
  17. package/contracts/workspace-intelligence-architecture.v1.json +20 -0
  18. package/dist/analyze-MAU36FTX.js +1 -0
  19. package/dist/{artifact-remediation-plan-BPLON5VX.js → artifact-remediation-plan-JRX4XZ7C.js} +1 -1
  20. package/dist/autopilot-release-TA2L7SCB.js +1 -0
  21. package/dist/capabilities-command-HE2FICLG.js +1 -0
  22. package/dist/chunk-42Q5E2YV.js +1 -0
  23. package/dist/{workspace-knowledge-graph-snapshot-WB62AVDK.js → chunk-4NN5QWOB.js} +1 -1
  24. package/dist/chunk-4YICCES6.js +8 -0
  25. package/dist/{chunk-HASVV34S.js → chunk-6TNSCVR4.js} +1 -1
  26. package/dist/{chunk-PKIRVQLG.js → chunk-7IRGSM25.js} +1 -1
  27. package/dist/{chunk-NHTLE3WN.js → chunk-7KXRA5ST.js} +1 -1
  28. package/dist/{chunk-5RL254O2.js → chunk-7WUT5ZSO.js} +1 -1
  29. package/dist/{chunk-ESWFBSYM.js → chunk-A3JCETSF.js} +1 -1
  30. package/dist/{chunk-KR7CIEQR.js → chunk-AA4PNQKR.js} +1 -1
  31. package/dist/{chunk-5ZA4JYOP.js → chunk-AUCHMXUZ.js} +1 -1
  32. package/dist/{chunk-2L4PSZQB.js → chunk-C4NYG57I.js} +1 -1
  33. package/dist/{chunk-QFCKHUEP.js → chunk-CFBAGPB4.js} +1 -1
  34. package/dist/{chunk-WLCBXCZV.js → chunk-CHMCKYJJ.js} +1 -1
  35. package/dist/chunk-CNWUIXF3.js +1 -0
  36. package/dist/chunk-EEMRRCGR.js +2 -0
  37. package/dist/{chunk-QTCZPS5I.js → chunk-FXIE2WVG.js} +1 -1
  38. package/dist/{chunk-YJTEMJFV.js → chunk-FY6OHOXR.js} +1 -1
  39. package/dist/{chunk-W5ZFXKSL.js → chunk-G4VMNWSU.js} +1 -1
  40. package/dist/{chunk-ADL3CK44.js → chunk-GRGUPSNP.js} +1 -1
  41. package/dist/{chunk-XH7PDHBF.js → chunk-GVS5OFUB.js} +1 -1
  42. package/dist/{chunk-E53BGUOW.js → chunk-H545P6LN.js} +1 -1
  43. package/dist/chunk-HH54C3XJ.js +1 -0
  44. package/dist/{chunk-XMTLKDPP.js → chunk-HI7ONEFI.js} +1 -1
  45. package/dist/chunk-HYY5PQCV.js +1 -0
  46. package/dist/chunk-I5PDN2P2.js +13 -0
  47. package/dist/{chunk-V5EYVQ63.js → chunk-II4ROT6X.js} +1 -1
  48. package/dist/{chunk-GBMCHFOV.js → chunk-LGJAAPNR.js} +1 -1
  49. package/dist/{chunk-UQEQ6CXU.js → chunk-M2BK3XTP.js} +1 -1
  50. package/dist/{chunk-7PNARN6S.js → chunk-MFJ6ZP7S.js} +1 -1
  51. package/dist/{chunk-64JUYYRC.js → chunk-N3DFX4BY.js} +1 -1
  52. package/dist/chunk-NQ5H4R2I.js +83 -0
  53. package/dist/chunk-PCXBPQO6.js +1 -0
  54. package/dist/chunk-QXW3SLEX.js +1 -0
  55. package/dist/{chunk-KS4FB5W7.js → chunk-RJDGC6AQ.js} +1 -1
  56. package/dist/{chunk-ZPA6ECBJ.js → chunk-RMDVRNU7.js} +1 -1
  57. package/dist/chunk-SM55RK3C.js +91 -0
  58. package/dist/{chunk-LYVDRRDO.js → chunk-T63WRURN.js} +1 -1
  59. package/dist/{chunk-WOTTSPSF.js → chunk-TMOKXYAQ.js} +1 -1
  60. package/dist/{chunk-6HCAGHCY.js → chunk-TTLVG5AR.js} +1 -1
  61. package/dist/{chunk-5BGPGNRQ.js → chunk-VAWV3UKV.js} +1 -1
  62. package/dist/chunk-VIFTO53Y.js +1 -0
  63. package/dist/chunk-WP3CXMVA.js +2 -0
  64. package/dist/{chunk-IZLEMTES.js → chunk-WSDVFLHT.js} +1 -1
  65. package/dist/{chunk-SV2SP22H.js → chunk-XC26FNRL.js} +3 -3
  66. package/dist/chunk-YMY6EFX4.js +1 -0
  67. package/dist/{chunk-YM77FQB3.js → chunk-YYCPRYP7.js} +1 -1
  68. package/dist/{chunk-QAF26ZQX.js → chunk-ZDYGO3T7.js} +17 -17
  69. package/dist/{create-DLUWG46F.js → create-QIN56Y4M.js} +1 -1
  70. package/dist/{doctor-IZ4YOCYE.js → doctor-RP4Q2CKJ.js} +1 -1
  71. package/dist/goal-command-contract-CHE7U6YY.js +1 -0
  72. package/dist/goal-lifecycle-YTBU3ICP.js +1 -0
  73. package/dist/goal-pack-MYYH7K43.js +1 -0
  74. package/dist/index.d.ts +21 -2
  75. package/dist/index.js +168 -166
  76. package/dist/{pipeline-IBQYDLFF.js → pipeline-77NUVYQD.js} +1 -1
  77. package/dist/{project-intelligence-lens-SIU7IXKG.js → project-intelligence-lens-AM2B2PXU.js} +1 -1
  78. package/dist/project-test-coverage-MUSS7Z7V.js +1 -0
  79. package/dist/{verified-goal-M4GPOXNL.js → verified-goal-ZSIZYNVO.js} +1 -1
  80. package/dist/{workspace-3AAOUELG.js → workspace-LFESVKE7.js} +1 -1
  81. package/dist/{workspace-agent-sync-QGYLY7HH.js → workspace-agent-sync-JMRX6J2Y.js} +1 -1
  82. package/dist/{workspace-archive-BA3ONVXX.js → workspace-archive-MFHCFCDO.js} +1 -1
  83. package/dist/{workspace-context-JCLPRYNC.js → workspace-context-TBKRMVMT.js} +1 -1
  84. package/dist/{workspace-contract-IUUPBQXU.js → workspace-contract-KKVC2DUQ.js} +1 -1
  85. package/dist/workspace-explain-RGGZL5IW.js +1 -0
  86. package/dist/workspace-explain-contract-4ZZ6CJ44.js +1 -0
  87. package/dist/{workspace-feedback-PCZKXG5R.js → workspace-feedback-O6J3RQML.js} +1 -1
  88. package/dist/{workspace-foundation-7IGMO4CW.js → workspace-foundation-JQWT7YGC.js} +1 -1
  89. package/dist/{workspace-graph-stream-5YMLJXAJ.js → workspace-graph-stream-V5WOXP4B.js} +1 -1
  90. package/dist/workspace-graph-token-efficiency-TF23UYEF.js +1 -0
  91. package/dist/{workspace-history-CHJOABME.js → workspace-history-TOCRMJUJ.js} +1 -1
  92. package/dist/{workspace-intelligence-XHSUFTAT.js → workspace-intelligence-SDBIRKMK.js} +1 -1
  93. package/dist/{workspace-intelligence-evaluation-YMY3C5AW.js → workspace-intelligence-evaluation-E4UMWDAZ.js} +1 -1
  94. package/dist/{workspace-intelligence-runner-EN5V4KSC.js → workspace-intelligence-runner-DIMNL6CJ.js} +1 -1
  95. package/dist/{workspace-intelligence-runtime-registry-NCVHKCMP.js → workspace-intelligence-runtime-registry-YGWB2RRS.js} +1 -1
  96. package/dist/{workspace-knowledge-graph-VWQTIEYK.js → workspace-knowledge-graph-MUW6UAGI.js} +1 -1
  97. package/dist/{workspace-knowledge-graph-query-TXA3KVUV.js → workspace-knowledge-graph-query-6DAOXGGT.js} +1 -1
  98. package/dist/workspace-knowledge-graph-snapshot-7IU2QAXI.js +1 -0
  99. package/dist/{workspace-mcp-serve-NCAGGWQS.js → workspace-mcp-serve-2SWLIH4I.js} +1 -1
  100. package/dist/{workspace-model-NXFIKX26.js → workspace-model-VPFCKTYQ.js} +1 -1
  101. package/dist/{workspace-onboarding-OP22NHQ4.js → workspace-onboarding-GHI6UTQJ.js} +1 -1
  102. package/dist/{workspace-readme-IVJXSIBS.js → workspace-readme-RASXBZRQ.js} +1 -1
  103. package/dist/{workspace-registry-summary-A5VDPRHU.js → workspace-registry-summary-7QT7YMIU.js} +1 -1
  104. package/dist/workspace-repair-engine-AZTJIFCY.js +3 -0
  105. package/dist/workspace-run-VMZY6LIF.js +1 -0
  106. package/dist/{workspace-verify-TUVLFPPN.js → workspace-verify-RYCQZYYB.js} +1 -1
  107. package/dist/{workspace-watch-2ZNOYSUQ.js → workspace-watch-U3YGN3GG.js} +1 -1
  108. package/docs/From Code to Shared Understanding-B.png +0 -0
  109. package/docs/From Code to Shared Understanding.png +0 -0
  110. package/docs/README.md +2 -0
  111. package/docs/README_CONTENT_CONTRACT.md +25 -12
  112. package/docs/ci-workflows.md +9 -1
  113. package/docs/commands-reference.md +13 -1
  114. package/docs/contracts/ARTIFACT_CATALOG.md +11 -0
  115. package/docs/contracts/COMMAND_OWNERSHIP_MATRIX.md +1 -0
  116. package/docs/contracts/README.md +16 -12
  117. package/docs/doctor-command.md +35 -11
  118. package/docs/from-code-to-shared-understanding.md +22 -17
  119. package/docs/goal-packs.md +174 -0
  120. package/docs/real-world-qualification.md +92 -0
  121. package/docs/workspace-knowledge-graph.md +24 -3
  122. package/docs/workspace-operations.md +14 -2
  123. package/docs/workspace-run.md +16 -4
  124. package/package.json +5 -1
  125. package/dist/analyze-HJ774J3E.js +0 -1
  126. package/dist/autopilot-release-CH57CGET.js +0 -1
  127. package/dist/capabilities-command-WEOGFCWF.js +0 -1
  128. package/dist/chunk-3U4VLIGW.js +0 -1
  129. package/dist/chunk-5EPPPMAS.js +0 -1
  130. package/dist/chunk-664GXRLD.js +0 -1
  131. package/dist/chunk-7Y3KVZJF.js +0 -8
  132. package/dist/chunk-BDN32Y2N.js +0 -81
  133. package/dist/chunk-D4RST2HE.js +0 -1
  134. package/dist/chunk-DIZSHNZ5.js +0 -2
  135. package/dist/chunk-DOIZANFA.js +0 -2
  136. package/dist/chunk-OX53L237.js +0 -13
  137. package/dist/chunk-QRWWYL52.js +0 -88
  138. package/dist/chunk-VGJVIHHR.js +0 -1
  139. package/dist/project-test-coverage-FRMVYTFB.js +0 -1
  140. package/dist/workspace-explain-CZGBVDE6.js +0 -1
  141. package/dist/workspace-explain-contract-KVQO57RC.js +0 -1
  142. package/dist/workspace-graph-token-efficiency-HK4KNWWP.js +0 -1
  143. package/dist/workspace-repair-engine-N4KXNSVL.js +0 -3
  144. package/dist/workspace-run-PXKC3ELS.js +0 -1
@@ -0,0 +1,8 @@
1
+ import {a as a$1}from'./chunk-2647BYBC.js';import {l}from'./chunk-AUCHMXUZ.js';import {d,c}from'./chunk-EWZZUQBR.js';import {a}from'./chunk-GR6442P7.js';import {f,e,i}from'./chunk-HH54C3XJ.js';import p from'path';import {createHash}from'crypto';import {createReadStream}from'fs';import {execFile}from'child_process';import {promisify}from'util';import S from'fs-extra';import {parseAllDocuments}from'yaml';var pe=f.knowledgeGraph;var Yt=e.knowledgeGraph;function Xt(e$1,t){if(e$1.source.kind!=="workspace-model")throw new Error(`Workspace knowledge graph is not bound to the canonical workspace model (source: ${e$1.source.kind}).`);if(e$1.source.artifact!==e.model)throw new Error(`Workspace knowledge graph source artifact is ${e$1.source.artifact}; expected ${e.model}.`);if(e$1.source.hashAlgorithm!=="sha256")throw new Error(`Workspace knowledge graph source hash algorithm is ${e$1.source.hashAlgorithm}; expected sha256.`);let o=d(t);if(e$1.source.hash!==o)throw new Error("Workspace knowledge graph is stale: its source hash does not match the canonical workspace model.");if(e$1.workspace.name!==t.workspace.name||(e$1.workspace.profile??void 0)!==(t.workspace.profile??void 0))throw new Error("Workspace knowledge graph identity does not match the canonical workspace model.");let i=l(t);if(!i)throw new Error("Canonical workspace model has no project topology for the workspace knowledge graph.");let r=c=>({...c,generatedAt:"<ignored>"});if(c(r(e$1.projectTopology))!==c(r(i)))throw new Error("Workspace knowledge graph project topology does not match the canonical workspace model.")}var De=new Set([".git",".hg",".svn",".workspai",".rapidkit",".venv","venv","vendor","node_modules","dist","build","target","coverage",".next",".turbo",".cache",".vscode-test","graphify-out",".pytest_cache",".mypy_cache",".ruff_cache",".tox",".gradle","fixture","fixtures","__fixtures__","testdata"]),Me=new Set(["test","tests","spec","specs","e2e","integration","integration-tests","integration_tests","__tests__","fixture","fixtures","__fixtures__","testdata"]),ze=new Set(["examples","samples","worked"]);function se(e,t){let o=p.relative(e,t).split(p.sep).map(r=>r.toLowerCase()),i=p.basename(t).toLowerCase();return o.some(r=>Me.has(r))||/(?:\.test|\.spec|_test)\.[a-z0-9]+$/i.test(i)||/^test_.+\.[a-z0-9]+$/i.test(i)||/(?:tests?|specs?)\.(?:cs|fs|vb|java|kt|kts)$/i.test(i)}function ie(e,t){return p.relative(e,t).split(p.sep).map(o=>o.toLowerCase()).some(o=>ze.has(o))}function M(e,t){return se(e,t)||ie(e,t)}function oe(e,t){return p.relative(e,t).split(p.sep).some(o=>o.toLowerCase()==="generated")}var fe=new Set(["package.json","pyproject.toml","requirements.txt","Pipfile","go.mod","Cargo.toml","pom.xml","build.gradle","build.gradle.kts","composer.json","Gemfile","mix.exs","pubspec.yaml","Package.swift","CMakeLists.txt","deno.json","deno.jsonc","project.clj","deps.edn","build.sbt","BUILD","BUILD.bazel","WORKSPACE.bazel"]),Be=new Set(["get","put","post","delete","options","head","patch","trace"]),T=new Set([".c",".cc",".cpp",".cs",".dart",".ex",".exs",".go",".h",".hpp",".java",".js",".jsx",".kt",".kts",".mjs",".php",".py",".r",".rb",".rs",".scala",".svelte",".swift",".ts",".tsx",".vue",".clj",".cljs",".fs",".fsx",".lua",".vb"]);function F(e,t){let o=p.extname(e).toLowerCase();return o===".h"&&t==="cpp"?"cpp":{".c":"c",".cc":"cpp",".cpp":"cpp",".cs":"csharp",".dart":"dart",".ex":"elixir",".exs":"elixir",".go":"go",".h":"c",".hpp":"cpp",".java":"java",".js":"javascript",".jsx":"javascript",".kt":"kotlin",".kts":"kotlin",".mjs":"javascript",".php":"php",".py":"python",".r":"r",".rb":"ruby",".rs":"rust",".scala":"scala",".svelte":"svelte",".swift":"swift",".ts":"typescript",".tsx":"typescript",".vue":"vue",".clj":"clojure",".cljs":"clojure",".fs":"fsharp",".fsx":"fsharp",".lua":"lua",".vb":"visual-basic"}[o]??o.slice(1)}function Ge(e,t){if(e.length<=t)return [...e];let o=new Map;for(let c of e){let s=F(c),a=o.get(s)??[];a.push(c),o.set(s,a);}let i=new Set,r=Math.max(1,Math.min(25,Math.floor(t/Math.max(o.size,1))));for(let c of [...o.values()])for(let s of c.slice(0,r))i.add(s);for(let c of e){if(i.size>=t)break;i.add(c);}return [...i].sort((c,s)=>c.localeCompare(s))}function Q(e,t,o){let i=[],r=e.split(/\r?\n/);for(let c=0;c<r.length&&i.length<o;c+=1)for(let s of t){let n=r[c].match(s.pattern)?.[1]?.trim();if(n){i.push({name:n,line:c+1,detail:s.detail});break}}return i}var xe=[{pattern:/^\s*(?:export\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)/,detail:"function"},{pattern:/^\s*(?:export\s+)?(?:abstract\s+)?(?:class|interface|enum|type)\s+([A-Za-z_$][\w$]*)/,detail:"type"},{pattern:/^\s*(?:export\s+)?(?:declare\s+)?(?:const|let|var)\s+([A-Za-z_$][\w$]*)/,detail:"value"},{pattern:/^\s*(?:async\s+)?def\s+([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*class\s+([A-Za-z_]\w*)/,detail:"type"},{pattern:/^\s*func\s+(?:\([^)]*\)\s*)?([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*type\s+([A-Za-z_]\w*)\s+/,detail:"type"},{pattern:/^\s*(?:public\s+|private\s+|protected\s+|internal\s+|abstract\s+|final\s+)*(?:class|interface|record|enum)\s+([A-Za-z_]\w*)/,detail:"type"},{pattern:/^\s*(?:public|protected|internal)\s+(?:(?:static|virtual|override|abstract|async|sealed|final|synchronized|native|unsafe|partial|extern|new)\s+)*(?:<[^>]+>\s*)?[A-Za-z_$][\w$<>,.?\[\]: ]*\s+([A-Za-z_$][\w$]*)\s*\(/,detail:"method"},{pattern:/^\s*(?:pub(?:\([^)]*\))?\s+)?(?:async\s+)?fn\s+([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*(?:pub(?:\([^)]*\))?\s+)?(?:struct|trait|enum|type)\s+([A-Za-z_]\w*)/,detail:"type"},{pattern:/^\s*(?:public\s+|private\s+|protected\s+)?function\s+([A-Za-z_]\w*)/,detail:"function"},{pattern:/^\s*(?:class|module|struct|protocol|mixin)\s+([A-Za-z_]\w*)/,detail:"type"}],qe=[{pattern:/^\s*import(?:.+?from\s*)?["']([^"']+)["']/,detail:"import"},{pattern:/require\(["']([^"']+)["']\)/,detail:"require"},{pattern:/^\s*from\s+([A-Za-z0-9_.]+)\s+import\s+/,detail:"import"},{pattern:/^\s*import\s+([A-Za-z0-9_.]+)(?:\s|$)/,detail:"import"},{pattern:/^\s*(?:import|using|use)\s+([A-Za-z0-9_:.*\\/.-]+)/,detail:"import"},{pattern:/^\s*require(?:_relative)?\s+["']([^"']+)["']/,detail:"require"}];function Ze(e,t,o,i){let r=p.extname(e).toLowerCase()===".py",c;if(r){let d=t.match(/^\.+/)?.[0].length??0,l=d>0?p.dirname(e):p.resolve(i??"");for(let u=1;u<d;u+=1)l=p.dirname(l);let m=t.slice(d).replace(/\./g,p.sep);c=m?p.join(l,m):l;}else {if(!t.startsWith("."))return null;c=p.resolve(p.dirname(e),t);}let s=p.extname(c).toLowerCase(),a=T.has(s),n=new Set([c]);if(r&&(n.add(`${c}.py`),n.add(p.join(c,"__init__.py"))),a){let d=c.slice(0,-s.length);if([".js",".jsx",".mjs"].includes(s))for(let l of [".ts",".tsx",".js",".jsx",".mjs"])n.add(`${d}${l}`);}else for(let d of T)n.add(`${c}${d}`),n.add(p.join(c,`index${d}`));return [...n].find(d=>o.has(p.resolve(d)))??null}function He(e,t){let o=t.trimStart(),i=p.extname(e).toLowerCase();return [".py",".rb",".sh",".bash",".zsh"].includes(i)?o.startsWith("#"):[".sql",".lua",".hs"].includes(i)?o.startsWith("--"):o.startsWith("//")||o.startsWith("/*")||o.startsWith("*")}function Ve(e,t){if(p.extname(e).toLowerCase()!==".py")return t;let o=null;return t.split(/\r?\n/).map(i=>{let r=0,c="";for(;r<i.length;){if(o){let l=i.indexOf(o,r);if(l<0)return c;r=l+3,o=null;continue}let s=i.indexOf("'''",r),a=i.indexOf('"""',r),n=i.indexOf("#",r),d=s<0?a:a<0?s:Math.min(s,a);if(n>=0&&(d<0||n<d)){c+=i.slice(r,n);break}if(d<0){c+=i.slice(r);break}c+=i.slice(r,d),o=i.startsWith("'''",d)?"'''":'"""',r=d+3;}return c}).join(`
2
+ `)}function Je(e,t){if(![".js",".jsx",".mjs",".ts",".tsx"].includes(p.extname(e).toLowerCase()))return t;let o=false,i=false;return t.split(/\r?\n/).map(r=>{let c="",s=null,a=false;for(let n=0;n<r.length;n+=1){let d=r[n],l=r[n+1];if(o){c+=" ",d==="*"&&l==="/"&&(c+=" ",n+=1,o=false);continue}if(i){c+=" ",d==="`"&&!a&&(i=false),a=d==="\\"&&!a,d!=="\\"&&(a=false);continue}if(s){c+=d,d===s&&!a&&(s=null),a=d==="\\"&&!a,d!=="\\"&&(a=false);continue}if(d==="/"&&l==="/")return c.padEnd(r.length," ");if(d==="/"&&l==="*"){c+=" ",n+=1,o=true;continue}if(d==="`"){c+=" ",i=true,a=false;continue}(d==="'"||d==='"')&&(s=d),c+=d;}return c}).join(`
3
+ `)}function Ue(e,t){return Je(e,Ve(e,t))}var Ye=[{pattern:/@(?:Get|Post|Put|Delete|Patch|Options|Head)\s*\(\s*["']([^"']*)["']/i,detail:"decorated route"},{pattern:/\b(?:app|router|server|api|route|fastify|fiber)\.(?:get|post|put|delete|patch|options|head)\s*\(\s*["']([^"']+)["']/i,detail:"router route"},{pattern:/@(?:GetMapping|PostMapping|PutMapping|DeleteMapping|PatchMapping|RequestMapping)\s*\([^"']*["']([^"']*)["']/,detail:"mapped route"},{pattern:/\[Http(?:Get|Post|Put|Delete|Patch)\s*\(\s*["']([^"']*)["']/i,detail:"HTTP route"},{pattern:/^\s*(?:get|post|put|delete|patch)\s+["']([^"']+)["']/i,detail:"HTTP route"}];function V(e){return createHash("sha256").update(e).digest("hex")}function E(e,t){return `wkg:${e}:${V(`${e}\0${t}`).slice(0,20)}`}function O(e){return e.replace(/\\/g,"/")}function x(e){let t=O(e).replace(/^\.\//,"");return !t||t.startsWith("/")||/^[A-Za-z]:\//.test(t)||t.split("/").includes("..")?"unknown":t}function j(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function b(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function K(e){if(Array.isArray(e))return e.filter(o=>typeof o=="string").map(o=>o.trim()).filter(Boolean).sort();let t=j(e);return t?Object.keys(t).map(o=>o.trim()).filter(Boolean).sort():[]}function Xe(e){if(Array.isArray(e))return e.map(o=>typeof o=="string"?o.split("=",1)[0]?.trim():"").filter(o=>!!o).sort();let t=j(e);return t?Object.keys(t).sort():[]}function Qe(e){return Object.fromEntries(Object.entries(e).filter(t=>t[1]!==void 0).sort(([t],[o])=>t.localeCompare(o)))}async function q(e,t){let o=[],i=[e],r=0;for(;r<i.length&&o.length<t;){let c=i[r++],s;try{s=await S.readdir(c,{withFileTypes:true});}catch{continue}s.sort((a,n)=>a.name.localeCompare(n.name));for(let a$1 of s){if(o.length>=t)break;if(a$1.isSymbolicLink())continue;let n=p.join(c,a$1.name);a$1.isDirectory()?!De.has(a$1.name)&&!a(a$1.name)&&i.push(n):a$1.isFile()&&o.push(n);}}return o.sort((c,s)=>c.localeCompare(s))}async function Se(e){return new Promise(t=>{let o=createHash("sha256"),i=createReadStream(e);i.on("data",r=>o.update(r)),i.on("error",r=>{t(`unreadable:${r.code??"unknown"}`);}),i.on("end",()=>t(o.digest("hex")));})}var et=promisify(execFile);async function D(e,t){let o=await et("git",t,{cwd:e,encoding:"buffer",maxBuffer:268435456,windowsHide:true});return Buffer.isBuffer(o.stdout)?o.stdout:Buffer.from(o.stdout)}async function tt(e){try{let t=(await D(e.root,["rev-parse","--show-prefix"])).toString("utf8").trim().replace(/\\/gu,"/"),o=t?`${t.replace(/^\/+|\/+$/gu,"")}/`:"";if(p.posix.isAbsolute(o)||o==="../"||o.startsWith("../")||o.includes("/../"))return null;let i=o.replace(/\/$/u,""),r=i?`HEAD:${i}`:"HEAD^{tree}",[c,s,a,n,d,l]=await Promise.all([D(e.root,["rev-parse",r]),D(e.root,["diff","--no-ext-diff","--no-textconv","--binary","HEAD","--","."]),D(e.root,["ls-files","--full-name","--others","--exclude-standard","-z","--","."]),D(e.root,["ls-files","--full-name","--others","--ignored","--exclude-standard","-z","--","."]),D(e.root,["ls-files","-v","--","."]),D(e.root,["ls-files","--full-name","-s","--","."])]);if(d.toString("utf8").split(/\r?\n/u).some(f=>/^[a-z] /u.test(f)))return null;let m=e.files.map(f=>{let y=O(p.relative(e.root,f));return `${o}${y}`});if(l.toString("utf8").split(/\r?\n/u).filter(f=>f.startsWith("160000 ")).map(f=>f.split(" ",2)[1]).filter(f=>!!f).map(f=>f.replace(/\\/gu,"/").replace(/\/$/u,"")).some(f=>m.some(y=>y.startsWith(`${f}/`))))return null;let v=new Set(m),g=Buffer.concat([a,n]).toString("utf8").split("\0").filter(Boolean).map(f=>f.replace(/\\/gu,"/")).filter(f=>v.has(f)),w=await Ae([...new Set(g)].sort((f,y)=>f.localeCompare(y)),16,async f=>{let y=o?f.slice(o.length):f;return {path:y,hash:await Se(p.resolve(e.root,...y.split("/").filter(Boolean)))}}),P=createHash("sha256");P.update(`git-worktree-v2\0${e.kind}\0${e.id}\0${e.fileLimit}\0`),P.update(c),P.update(createHash("sha256").update(s).digest());for(let f of w)P.update(`${f.path}\0${f.hash}\0`);return {kind:e.kind,id:e.id,strategy:"git-worktree-v2",hash:P.digest("hex"),fileCount:e.files.length,fileLimit:e.fileLimit,truncated:e.files.length>=e.fileLimit}}catch{return null}}async function Ae(e,t,o){let i=new Array(e.length),r=0,c=Array.from({length:Math.min(t,Math.max(e.length,1))},async()=>{for(;r<e.length;){let s=r++;i[s]=await o(e[s]);}});return await Promise.all(c),i}async function ue(e){let t=await tt(e);if(t)return t;let o=await Ae(e.files,16,async r=>({path:O(p.relative(e.root,r)),hash:await Se(r)}));o.sort((r,c)=>r.path.localeCompare(c.path));let i=createHash("sha256");i.update(`content-merkle-v1\0${e.kind}\0${e.id}\0${e.fileLimit}\0`);for(let r of o)i.update(`${r.path}\0${r.hash}\0`);return {kind:e.kind,id:e.id,strategy:"content-merkle-v1",hash:i.digest("hex"),fileCount:o.length,fileLimit:e.fileLimit,truncated:o.length>=e.fileLimit}}async function ot(e){let t=p.resolve(e.workspacePath),o=[...e.projects].sort((s,a)=>s.id.localeCompare(a.id)),i=e.inventories?.workspaceFiles??await q(t,e.workspaceFileLimit),r=await Promise.all([ue({kind:"workspace",id:"workspace",root:t,files:i,fileLimit:e.workspaceFileLimit}),...o.map(async s=>{let a=s.absolutePath?p.resolve(s.absolutePath):p.resolve(t,s.path),n=e.inventories?.projectFiles?.get(s.id)??await q(a,e.projectFileLimit);return ue({kind:"project",id:s.id,root:a,files:n,fileLimit:e.projectFileLimit})})]);r.sort((s,a)=>s.kind.localeCompare(a.kind)||s.id.localeCompare(a.id));let c=createHash("sha256");c.update("workspace-knowledge-graph-inputs.v1\0hybrid-git-content-v2\0");for(let s of r)c.update(`${s.kind}\0${s.id}\0${s.hash}\0${s.fileCount}\0${s.fileLimit}\0${s.truncated}\0`);return {schemaVersion:"workspace-knowledge-graph-inputs.v1",strategy:"hybrid-git-content-v2",hashAlgorithm:"sha256",hash:c.digest("hex"),scopes:r}}async function B(e){let t=await S.readFile(e,"utf8");if(e.toLowerCase().endsWith(".json")){let o=JSON.parse(t),i=j(o);return i?[i]:[]}return parseAllDocuments(t,{logLevel:"silent"}).map(o=>j(o.toJSON())).filter(o=>o!==null)}function J(e){return [...new Set([...e.workspaceFiles,...e.projects.flatMap(t=>e.filesByProject.get(t.id)??[])])].sort((t,o)=>t.localeCompare(o))}function me(e){return /^(?:openapi|swagger)(?:\.[^.]+)?\.(?:json|ya?ml)$/i.test(p.basename(e))}function ge(e){let t=p.basename(e).toLowerCase();return /\.(?:graphql|gql|proto)$/.test(t)||/^asyncapi(?:\.[^.]+)?\.(?:json|ya?ml)$/.test(t)}function he(e){let t=p.basename(e);return /^Dockerfile(?:\..+)?$/i.test(t)||/\.tf$/i.test(t)||t==="Chart.yaml"}function ye(e){return /(?:^|[\\/])(?:README|ARCHITECTURE|CONTRIBUTING|SECURITY)\.md$/i.test(e)}function rt(e,t){let o=O(p.relative(e,t));return /^\.github\/workflows\/.+\.ya?ml$/i.test(o)||/^(?:\.gitlab-ci\.ya?ml|azure-pipelines\.ya?ml|Jenkinsfile|bitbucket-pipelines\.ya?ml|\.woodpecker\.ya?ml)$/i.test(o)||/^\.circleci\/config\.ya?ml$/i.test(o)}function ve(e,t){let o=O(p.relative(e,t));return /(?:^|\/)(?:adr|adrs|decisions)(?:\/).+\.md$/i.test(o)||/(?:^|\/)ADR[-_0-9].+\.md$/i.test(o)}async function ke(e){let t=new Set;for(let o of [e.workspacePath,...e.projects.map(i=>i.root)])for(let i of ["compose.yml","compose.yaml","docker-compose.yml","docker-compose.yaml"]){let r=p.join(o,i);await S.pathExists(r)&&t.add(r);}return [...t].sort((o,i)=>o.localeCompare(i))}async function be(e){let o=[e.workspacePath,...e.projects.map(r=>r.root)].flatMap(r=>[p.join(r,"CODEOWNERS"),p.join(r,".github","CODEOWNERS"),p.join(r,"docs","CODEOWNERS")]),i=await Promise.all(o.map(async r=>await S.pathExists(r)?r:null));return [...new Set(i.filter(r=>!!r))].sort((r,c)=>r.localeCompare(c))}function we(e){let t=[{root:e.workspacePath,files:e.workspaceFiles},...e.projects.map(o=>({root:o.root,files:e.filesByProject.get(o.id)??[]}))];return [...new Set(t.flatMap(o=>o.files.filter(i=>rt(o.root,i))))].sort((o,i)=>o.localeCompare(i))}async function Pe(e){let t=[];for(let o of J(e))if(/\.ya?ml$/i.test(o))try{(await B(o)).some(r=>{let c=j(r.metadata);return !!(b(r.apiVersion)&&b(r.kind)&&b(c?.name))})&&t.push(o);}catch{}return t.sort((o,i)=>o.localeCompare(i))}function N(e,t){let o=p.resolve(t);return e.filter(i=>o===i.root||o.startsWith(`${i.root}${p.sep}`)).sort((i,r)=>r.root.length-i.root.length)[0]??null}var re=class{constructor(t,o,i){this.workspacePath=t;this.now=o;this.workspaceName=i;}workspacePath;now;workspaceName;entities=new Map;relations=new Map;proofs=new Map;providers=[];diagnostics=[];contentHashes=new Map;attributeConflicts=new Set;emptyLabelDiagnostics=new Set;artifactPath(t,o){if(o){let i=O(p.relative(o.root,t));return x(p.posix.join(o.artifactPrefix,i))}return x(p.relative(this.workspacePath,t))}async addProof(t){let o;if(t.absolutePath){if(!this.contentHashes.has(t.absolutePath))try{this.contentHashes.set(t.absolutePath,V(await S.readFile(t.absolutePath)));}catch{this.contentHashes.set(t.absolutePath,null);}o=this.contentHashes.get(t.absolutePath)??void 0;}let i=x(t.artifact),r=E("proof",[t.provider,i,t.pointer??"",t.line??"",t.detail??""].join("\0"));return this.proofs.has(r)||this.proofs.set(r,{id:r,provider:t.provider,artifact:i,...t.pointer?{pointer:t.pointer}:{},...t.line?{line:t.line}:{},...t.column?{column:t.column}:{},...o?{contentHash:o}:{},observedAt:this.now.toISOString(),derivation:t.derivation??"extracted",trust:t.trust??"observed",confidence:t.confidence??"high",freshness:"fresh",...t.detail?{detail:t.detail}:{}}),r}addEntity(t){let o=E(t.kind,t.key),i=Qe(t.attributes??{}),r=this.entities.get(o),c=t.label.trim(),s=c||r?.label||t.key.trim()||t.kind;!c&&!this.emptyLabelDiagnostics.has(o)&&(this.emptyLabelDiagnostics.add(o),this.diagnostics.push({code:"graph.knowledge.empty_label_normalized",severity:"warning",message:`An empty ${t.kind} label was normalized to ${s}.`,entityIds:[o],recommendation:"Inspect the provider proof and preserve a non-empty source identifier before publishing the entity."}));let a={...r?.attributes??{}};for(let[l,m]of Object.entries(i)){if(l in a&&JSON.stringify(a[l])!==JSON.stringify(m)){let u=`${o}\0${l}`;this.attributeConflicts.has(u)||(this.attributeConflicts.add(u),this.diagnostics.push({code:"graph.knowledge.attribute_conflict",severity:"warning",message:`Conflicting ${l} values were observed for ${t.kind} ${s}.`,entityIds:[o],recommendation:"Inspect the entity proof paths and make the authoritative source explicit."}));continue}a[l]=m;}let n=[...new Set([...r?.identity.aliases??[],...t.aliases??[]].map(l=>l.trim()).filter(Boolean))].sort(),d=[...new Set([...r?.proofIds??[],...t.proofIds??[]])].sort();return this.entities.set(o,{id:o,kind:t.kind,label:s,...t.projectId?{projectId:t.projectId}:{},identity:{key:t.key,scope:t.projectId?"project":"workspace",aliases:n,fingerprint:V(JSON.stringify({kind:t.kind,key:t.key,attributes:a}))},attributes:a,proofIds:d}),o}addRelation(t){let o=E("relation",`${t.from}\0${t.kind}\0${t.to}`),i=this.relations.get(o),r=[...new Set([...i?.proofIds??[],...t.proofIds])].sort(),c=new Set(r.map(n=>this.proofs.get(n)?.provider).filter(Boolean)).size,s=t.trust??i?.trust??"observed",a=c>=2&&s!=="ambiguous"?"corroborated":s;return this.relations.set(o,{id:o,from:t.from,to:t.to,kind:t.kind,derivation:t.derivation??i?.derivation??"extracted",trust:a,confidence:a==="corroborated"?"high":t.confidence??i?.confidence??"high",proofIds:r}),o}};function ee(e){let t=[],o=null;for(let i of e.split(/\r?\n/)){let r=i.match(/^\s*\[\[([^\]]+)\]\]\s*(?:#.*)?$/)?.[1]?.trim()??i.match(/^\s*\[([^\]]+)\]\s*(?:#.*)?$/)?.[1]?.trim();if(r){o&&t.push({name:o.name,body:o.lines.join(`
4
+ `)}),o={name:r,lines:[]};continue}o?.lines.push(i);}return o&&t.push({name:o.name,body:o.lines.join(`
5
+ `)}),t}function st(e){return [...e.matchAll(/["']([^"']+)["']/g)].map(t=>t[1])}function $e(e,t){let o=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),i=new RegExp(`^\\s*${o}\\s*=\\s*\\[`,"m").exec(e);if(!i)return [];let r=i.index+i[0].lastIndexOf("["),c=null,s=false;for(let a=r+1;a<e.length;a+=1){let n=e[a];if(c){n===c&&!s&&(c=null),s=n==="\\"&&!s,n!=="\\"&&(s=false);continue}if(n==="'"||n==='"'){c=n;continue}if(n==="]")return st(e.slice(r+1,a))}return []}function je(e){return e.trim().match(/^([A-Za-z0-9][A-Za-z0-9_.-]*)/)?.[1]??""}function ne(e){return e.replace(/\.(?:workspace|version|path|git|optional|features|default-features|package)$/,"")}function it(e,t){let o=p.basename(e);try{if(o==="package.json"||o==="composer.json"){let s=JSON.parse(t);return {ecosystem:o==="package.json"?"npm":"composer",name:b(s.name),version:b(s.version),dependencies:[...K(s.dependencies),...K(s.devDependencies),...K(s.require),...K(s["require-dev"])].filter((a,n,d)=>d.indexOf(a)===n).sort(),metadata:o==="package.json"?{entrypoints:[b(s.main),b(s.module),b(s.types)].filter(a=>!!a),exports:j(s.exports)?Object.keys(j(s.exports)).sort():b(s.exports)?["."]:[],executables:j(s.bin)?Object.keys(j(s.bin)).sort():b(s.bin)?[b(s.name)??"default"]:[],runtimeConstraints:Object.entries(j(s.engines)??{}).map(([a,n])=>`${a}:${String(n)}`).sort()}:void 0}}if(o==="deno.json"||o==="deno.jsonc"){let s=JSON.parse(t.replace(/\/\*[\s\S]*?\*\/|^\s*\/\/.*$/gm,""));return {ecosystem:"deno",name:b(s.name),version:b(s.version),dependencies:K(s.imports)}}}catch{}let i=s=>t.match(s)?.[1]?.trim();if(o==="pyproject.toml"){let a=ee(t).filter(({name:n})=>n==="project"||n==="project.optional-dependencies"||n==="dependency-groups"||n==="tool.poetry.dependencies"||/^tool\.poetry\.group\.[^.]+\.dependencies$/.test(n)).flatMap(({name:n,body:d})=>n==="project"?$e(d,"dependencies").map(je):n==="project.optional-dependencies"||n==="dependency-groups"?[...d.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=\s*\[/gm)].flatMap(l=>$e(d,l[1]??l[2])).map(je):[...d.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=/gm)].map(l=>l[1]??l[2]).filter(l=>l!=="python"));return {ecosystem:"python",name:i(/^(?:name)\s*=\s*["']([^"']+)["']/m),version:i(/^(?:version)\s*=\s*["']([^"']+)["']/m),dependencies:a.filter(Boolean).filter((n,d,l)=>l.indexOf(n)===d).sort(),metadata:{requiresPython:i(/^requires-python\s*=\s*["']([^"']+)["']/m)??"unknown"}}}if(o==="go.mod")return {ecosystem:"go",name:i(/^module\s+(\S+)/m),dependencies:[...t.matchAll(/^\s*([A-Za-z0-9_.~/-]+)\s+v\d+/gm)].map(s=>s[1]).sort(),metadata:{goVersion:i(/^go\s+(\S+)/m)??"unknown"}};if(o==="Cargo.toml"){let s=ee(t).filter(({name:a})=>/(?:^|\.)(?:dev-|build-)?dependencies$/.test(a)).map(({body:a})=>a).join(`
6
+ `);return {ecosystem:"cargo",name:i(/^name\s*=\s*["']([^"']+)["']/m),version:i(/^version\s*=\s*["']([^"']+)["']/m),dependencies:[...s.matchAll(/^\s*(?:["']([^"']+)["']|([A-Za-z0-9_.-]+))\s*=/gm)].map(a=>a[1]??a[2]).map(ne).filter((a,n,d)=>d.indexOf(a)===n).sort(),metadata:{edition:i(/^edition\s*=\s*["']([^"']+)["']/m)??"unknown",rustVersion:i(/^rust-version\s*=\s*["']([^"']+)["']/m)??"unknown",features:ee(t).find(({name:a})=>a==="features")?.body.match(/^\s*([A-Za-z0-9_.-]+)\s*=/gm)?.map(a=>a.split("=",1)[0].trim()).sort()??[]}}}if(o==="pom.xml"){let s=[...t.matchAll(/<dependency>([\s\S]*?)<\/dependency>/g)].map(a=>{let n=a[1].match(/<groupId>([^<]+)<\/groupId>/)?.[1]?.trim(),d=a[1].match(/<artifactId>([^<]+)<\/artifactId>/)?.[1]?.trim();return n&&d?`${n}:${d}`:d}).filter(a=>!!a);return {ecosystem:"maven",name:i(/<artifactId>([^<]+)<\/artifactId>/),version:i(/<version>([^<]+)<\/version>/),dependencies:s.filter((a,n,d)=>d.indexOf(a)===n).sort(),metadata:{groupId:i(/<groupId>([^<]+)<\/groupId>/)??"unknown",packaging:i(/<packaging>([^<]+)<\/packaging>/)??"jar"}}}if(/\.(?:cs|fs|vb)proj$/i.test(o))return {ecosystem:"nuget",name:i(/<AssemblyName>([^<]+)<\/AssemblyName>/)??o.replace(/\.[^.]+$/,""),version:i(/<Version>([^<]+)<\/Version>/),dependencies:[...t.matchAll(/<PackageReference\s+Include=["']([^"']+)["']/g)].map(s=>s[1]).sort(),metadata:{targetFrameworks:(i(/<TargetFrameworks?>([^<]+)<\/TargetFrameworks?>/)??"unknown").split(";"),rootNamespace:i(/<RootNamespace>([^<]+)<\/RootNamespace>/)??"unknown"}};let r={"requirements.txt":"python",Pipfile:"python","build.gradle":"gradle","build.gradle.kts":"gradle",Gemfile:"ruby","mix.exs":"elixir","pubspec.yaml":"dart","Package.swift":"swift","CMakeLists.txt":"cmake","deno.json":"deno","deno.jsonc":"deno","project.clj":"clojure","deps.edn":"clojure","build.sbt":"scala",BUILD:"bazel","BUILD.bazel":"bazel","WORKSPACE.bazel":"bazel"},c=o==="requirements.txt"?t.split(/\r?\n/).map(s=>s.trim().match(/^([A-Za-z0-9_.-]+)/)?.[1]):o.startsWith("build.gradle")?[...t.matchAll(/(?:implementation|api|compileOnly|runtimeOnly|testImplementation)\s*\(?["']([^:"']+):([^:"']+)/g)].map(s=>`${s[1]}:${s[2]}`):o==="Gemfile"?[...t.matchAll(/^\s*gem\s+["']([^"']+)["']/gm)].map(s=>s[1]):o==="mix.exs"?[...t.matchAll(/\{:\s*([A-Za-z0-9_]+)\s*,/g)].map(s=>s[1]):o==="pubspec.yaml"?[...t.matchAll(/^\s{2}([A-Za-z0-9_]+):\s+/gm)].map(s=>s[1]):o==="Package.swift"?[...t.matchAll(/\.package\s*\(\s*url:\s*["']([^"']+)["']/g)].map(s=>s[1]):o==="CMakeLists.txt"?[...t.matchAll(/find_package\s*\(\s*([A-Za-z0-9_.+-]+)/gi)].map(s=>s[1]):o==="project.clj"||o==="deps.edn"?[...t.matchAll(/\[?([A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+)\s+/g)].map(s=>s[1]):o==="build.sbt"?[...t.matchAll(/["']([^"']+)["']\s*%%?\s*["']([^"']+)["']/g)].map(s=>`${s[1]}:${s[2]}`):[];return {ecosystem:r[o]??"unknown",dependencies:c.filter(s=>!!s).filter((s,a,n)=>n.indexOf(s)===a).sort()}}function Ie(e,t){let o=e==="cargo"?ne(t):t;return e==="cargo"?o.toLowerCase().replace(/[-_]/g,""):o.toLowerCase()}function nt(e,t){let o=[...e.entities.values()].filter(r=>r.kind==="package"&&r.projectId===t),i=new Map;for(let r of o){let c=String(r.attributes.ecosystem??"unknown");for(let s of new Set([r.label,...r.identity.aliases])){let a=`${c}\0${Ie(c,s)}`,n=i.get(a)??[];n.push(r),i.set(a,n);}}for(let r of o){let c=String(r.attributes.ecosystem??"unknown"),s=Array.isArray(r.attributes.dependencies)?r.attributes.dependencies.filter(a=>typeof a=="string"):[];for(let a of s){let n=`${c}\0${Ie(c,a)}`,d=(i.get(n)??[]).filter(u=>u.id!==r.id);if(d.length!==1)continue;let l=d[0];e.addRelation({from:r.id,to:l.id,kind:"depends-on",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:r.proofIds});let m=E("module",`dependency:${c}:${ne(a)}`);e.relations.delete(E("relation",`${r.id}\0depends-on\0${m}`));}}for(let r of [...e.entities.values()]){if(r.kind!=="module"||r.projectId)continue;[...e.relations.values()].some(s=>s.from===r.id||s.to===r.id)||e.entities.delete(r.id);}}var at={id:"workspace-foundation",version:"1.0.0",async run(e){let{state:t}=e,o=await t.addProof({provider:this.id,artifact:i.workspaceContract,absolutePath:p.join(e.workspacePath,".workspai","workspace.contract.json"),trust:"authoritative",derivation:"authored",detail:"Workspace identity and project registry boundary"}),i$1=t.addEntity({kind:"workspace",key:`workspace:${t.workspaceName}`,label:t.workspaceName,aliases:[t.workspaceName],proofIds:[o]});for(let r of e.projects){let c=e.filesByProject.get(r.id)??[],s=c.find(v=>/[\\/]\.(?:workspai|rapidkit)[\\/](?:project|context)\.json$/.test(v)),a=c.find(v=>fe.has(p.basename(v))),n=s??a,d=await t.addProof({provider:this.id,artifact:n?t.artifactPath(n,r):x(p.posix.join(r.artifactPrefix,".workspai/project.json")),...n?{absolutePath:n}:{},trust:s?"authoritative":"observed",derivation:s?"authored":"inferred",detail:`Project ${r.id}`}),l=t.addEntity({kind:"project",key:`project:${r.id}`,label:r.id,projectId:r.id,aliases:[r.id,r.path],attributes:{path:r.path,runtime:r.runtime,runtimeCandidates:r.runtimeCandidates,framework:r.framework,kit:r.kit,kind:r.kind,category:r.category},proofIds:[d]});t.addRelation({from:i$1,to:l,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[d]});let m=new Set,u=[];for(let v of c){let g=p.basename(v);if(/^(?:\.env\.example|\.env\.sample|\.env\.template)$/i.test(g))try{let P=await S.readFile(v,"utf8");for(let f of P.split(/\r?\n/)){let y=f.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=/)?.[1];y&&m.add(y);}}catch{}let w=se(r.root,v);if(w&&u.push(v),!(w||ie(r.root,v))&&!(!fe.has(g)&&!/\.(?:cs|fs|vb)proj$/i.test(g)))try{let P=await S.readFile(v,"utf8"),f=it(v,P),y=await t.addProof({provider:this.id,artifact:t.artifactPath(v,r),absolutePath:v,pointer:"/",confidence:f.name?"high":"medium",detail:`${f.ecosystem} manifest`}),$=t.addEntity({kind:"package",key:`package:${r.id}:${f.ecosystem}:${f.name??t.artifactPath(v,r)}`,label:f.name??`${r.id}/${O(p.relative(r.root,v))}`,projectId:r.id,aliases:[g,...f.name?[f.name]:[]],attributes:{ecosystem:f.ecosystem,version:f.version,manifest:t.artifactPath(v,r),dependencies:f.dependencies,...f.metadata??{}},proofIds:[y]});t.addRelation({from:l,to:$,kind:"contains",proofIds:[y]});for(let k of f.dependencies.slice(0,500)){let C=t.addEntity({kind:"module",key:`dependency:${f.ecosystem}:${k}`,label:k,aliases:[k],attributes:{ecosystem:f.ecosystem,external:true},proofIds:[y]});t.addRelation({from:$,to:C,kind:"depends-on",trust:"authoritative",derivation:"authored",proofIds:[y]});}}catch{}}if(nt(t,r.id),m.size>0){let v=c.find(g=>/^\.env\.(?:example|sample|template)$/i.test(p.basename(g)));if(v){let g=await t.addProof({provider:this.id,artifact:t.artifactPath(v,r),absolutePath:v,detail:"Public environment template keys only; values are intentionally excluded"}),w=t.addEntity({kind:"environment",key:`environment:${r.id}:template`,label:`${r.id} environment contract`,projectId:r.id,attributes:{keys:[...m].sort(),valuesEmitted:false},proofIds:[g]});t.addRelation({from:l,to:w,kind:"configured-by",proofIds:[g]});}}if(u.length>0){let v=await t.addProof({provider:this.id,artifact:t.artifactPath(u[0],r),absolutePath:u[0],detail:`${u.length} test file(s) discovered`}),g=t.addEntity({kind:"test-suite",key:`tests:${r.id}`,label:`${r.id} tests`,projectId:r.id,attributes:{fileCount:u.length},proofIds:[v]});t.addRelation({from:g,to:l,kind:"tests",proofIds:[v]});let w=new Map;for(let P of u){if(!T.has(p.extname(P).toLowerCase()))continue;let f=F(P,r.runtime),y=w.get(f)??[];y.push(P),w.set(f,y);}for(let[P,f]of [...w].sort(([y],[$])=>y.localeCompare($))){let y=await t.addProof({provider:this.id,artifact:t.artifactPath(f[0],r),absolutePath:f[0],detail:`${f.length} ${P} test source file(s) discovered`}),$=t.addEntity({kind:"test-suite",key:`tests:${r.id}:${P}`,label:`${r.id} ${P} tests`,projectId:r.id,attributes:{fileCount:f.length,language:P},proofIds:[y]});t.addRelation({from:$,to:l,kind:"tests",proofIds:[y]});}}}}};function te(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function ct(e){if(Array.isArray(e))return e.length;let t=j(e);return t?Object.keys(t).length:0}var dt={id:"vscode-extension-manifest",version:"1.0.0",async applicable(e){for(let t of e.projects){let o=p.join(t.root,"package.json");try{let i=j(await S.readJson(o));if(b(j(i?.engines)?.vscode)||j(i?.contributes))return true}catch{}}return false},async run(e){for(let t of e.projects){let o=p.join(t.root,"package.json"),i=null;try{i=j(await S.readJson(o));}catch{continue}let r=j(i?.contributes),c=b(j(i?.engines)?.vscode);if(!c&&!r)continue;let s=e.state.artifactPath(o,t),a=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,pointer:"/",trust:"authoritative",derivation:"authored",confidence:"high",detail:`VS Code extension manifest for ${t.id}`}),n=e.state.addEntity({kind:"project",key:`project:${t.id}`,label:t.id,projectId:t.id,attributes:{vscodeExtension:true,vscodeEngine:c,extensionEntry:b(i?.main)??b(i?.browser),extensionKind:K(i?.extensionKind),activationEvents:K(i?.activationEvents),contributionCounts:Object.entries(r??{}).map(([y,$])=>`${y}:${ct($)}`).sort()},proofIds:[a]}),d=Array.isArray(r?.commands)?r.commands:[],l=j(r?.menus),m=Object.values(l??{}).flatMap(y=>Array.isArray(y)?y:[]),u=Array.isArray(r?.keybindings)?r.keybindings:[];for(let[y,$]of d.entries()){let k=j($),C=b(k?.command);if(!C)continue;let R=`/contributes/commands/${y}`,h=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,pointer:R,trust:"authoritative",derivation:"authored",confidence:"high",detail:`VS Code command ${C}`}),I=m.filter(W=>b(j(W)?.command)===C).length,A=u.filter(W=>b(j(W)?.command)===C).length,_=e.state.addEntity({kind:"api",key:`vscode-command:${t.id}:${C}`,label:C,projectId:t.id,aliases:[b(k?.title),b(k?.shortTitle)].filter(W=>!!W),attributes:{surface:"vscode-command",title:b(k?.title),shortTitle:b(k?.shortTitle),category:b(k?.category),enablement:b(k?.enablement),icon:b(k?.icon),menuCount:I,keybindingCount:A,manifest:s,pointer:R},proofIds:[h]});e.state.addRelation({from:n,to:_,kind:"exposes",trust:"authoritative",derivation:"authored",confidence:"high",proofIds:[h]});}let v=j(r?.viewsContainers),g=new Map;for(let[y,$]of Object.entries(v??{}))if(Array.isArray($))for(let[k,C]of $.entries()){let R=j(C),h=b(R?.id);if(!h)continue;let I=`/contributes/viewsContainers/${te(y)}/${k}`,A=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,pointer:I,trust:"authoritative",derivation:"authored",detail:`VS Code view container ${h}`}),_=e.state.addEntity({kind:"service",key:`vscode-view-container:${t.id}:${h}`,label:h,projectId:t.id,aliases:[b(R?.title)].filter(W=>!!W),attributes:{surface:"vscode-view-container",title:b(R?.title),location:y,icon:b(R?.icon),manifest:s,pointer:I},proofIds:[A]});g.set(h,_),e.state.addRelation({from:n,to:_,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[A]});}let w=j(r?.views);for(let[y,$]of Object.entries(w??{}))if(Array.isArray($))for(let[k,C]of $.entries()){let R=j(C),h=b(R?.id);if(!h)continue;let I=`/contributes/views/${te(y)}/${k}`,A=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,pointer:I,trust:"authoritative",derivation:"authored",detail:`VS Code view ${h}`}),_=e.state.addEntity({kind:"service",key:`vscode-view:${t.id}:${h}`,label:h,projectId:t.id,aliases:[b(R?.name),b(R?.contextualTitle)].filter(W=>!!W),attributes:{surface:R?.type==="webview"?"vscode-webview":"vscode-view",name:b(R?.name),contextualTitle:b(R?.contextualTitle),containerId:y,viewType:b(R?.type)??"tree",manifest:s,pointer:I},proofIds:[A]});e.state.addRelation({from:g.get(y)??n,to:_,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[A]});}let P=Array.isArray(r?.configuration)?r.configuration:r?.configuration?[r.configuration]:[];for(let[y,$]of P.entries()){let k=j($),C=j(k?.properties);for(let[R,h]of Object.entries(C??{})){let I=j(h),_=`${Array.isArray(r?.configuration)?`/contributes/configuration/${y}`:"/contributes/configuration"}/properties/${te(R)}`,W=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,pointer:_,trust:"authoritative",derivation:"authored",detail:`VS Code configuration ${R}`}),L=e.state.addEntity({kind:"schema",key:`vscode-configuration:${t.id}:${R}`,label:R,projectId:t.id,attributes:{surface:"vscode-configuration",title:b(k?.title),type:b(I?.type),scope:b(I?.scope),description:b(I?.description)??b(I?.markdownDescription),manifest:s,pointer:_},proofIds:[W]});e.state.addRelation({from:n,to:L,kind:"configured-by",trust:"authoritative",derivation:"authored",proofIds:[W]});}}let f=Array.isArray(r?.chatParticipants)?r.chatParticipants:[];for(let[y,$]of f.entries()){let k=j($),C=b(k?.id);if(!C)continue;let R=`/contributes/chatParticipants/${y}`,h=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,pointer:R,trust:"authoritative",derivation:"authored",detail:`VS Code chat participant ${C}`}),I=e.state.addEntity({kind:"api",key:`vscode-chat-participant:${t.id}:${C}`,label:C,projectId:t.id,aliases:[b(k?.name),b(k?.fullName)].filter(A=>!!A),attributes:{surface:"vscode-chat-participant",name:b(k?.name),fullName:b(k?.fullName),description:b(k?.description),manifest:s,pointer:R},proofIds:[h]});e.state.addRelation({from:n,to:I,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[h]});}}}};function Ee(e,t){let o=[],i=false;for(let r of e.split(/\r?\n/)){let c=r.match(/^\s*\[([^\]]+)\]\s*(?:#.*)?$/)?.[1]?.trim();if(c){i=c===t;continue}if(!i||/^\s*(?:#|$)/.test(r))continue;let s=r.match(/^\s*(?:"([^"]+)"|'([^']+)'|([A-Za-z0-9_.-]+))\s*=\s*["']([^"']+)["']/),a=s?.[1]??s?.[2]??s?.[3],n=s?.[4];a&&n&&o.push([a,n]);}return o}var lt={id:"python-project-manifest",version:"1.0.0",async applicable(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).find(i=>p.dirname(i)===t.root&&p.basename(i).toLowerCase()==="pyproject.toml");if(o)try{if(Ee(await S.readFile(o,"utf8"),"project.scripts").length>0)return true}catch{}}return false},async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).find(n=>p.dirname(n)===t.root&&p.basename(n).toLowerCase()==="pyproject.toml");if(!o)continue;let i=await S.readFile(o,"utf8"),r=Ee(i,"project.scripts"),c=e.state.artifactPath(o,t),s=await e.state.addProof({provider:this.id,artifact:c,absolutePath:o,pointer:"/project",trust:"authoritative",derivation:"authored",detail:"Python project manifest"}),a=e.state.addEntity({kind:"project",key:`project:${t.id}`,label:t.id,projectId:t.id,attributes:{pythonProject:true,requiresPython:i.match(/^requires-python\s*=\s*["']([^"']+)["']/m)?.[1],buildBackend:i.match(/^build-backend\s*=\s*["']([^"']+)["']/m)?.[1],consoleScriptCount:r.length},proofIds:[s]});for(let[n,d]of r){let l=`/project/scripts/${n}`,m=await e.state.addProof({provider:this.id,artifact:c,absolutePath:o,pointer:l,trust:"authoritative",derivation:"authored",detail:`Python console script ${n}`}),u=e.state.addEntity({kind:"api",key:`python-console-script:${t.id}:${n}`,label:n,projectId:t.id,aliases:[d],attributes:{surface:"python-console-script",entrypoint:d,manifest:c,pointer:l},proofIds:[m]});e.state.addRelation({from:a,to:u,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[m]});}}}},pt={id:"source-language-inventory",version:"1.0.0",applicable(e){return e.projects.some(t=>(e.semanticFilesByProject.get(t.id)??[]).some(o=>T.has(p.extname(o).toLowerCase())))},async run(e){for(let t of e.projects){let o=e.semanticFilesByProject.get(t.id)??[],i=o.filter(s=>T.has(p.extname(s).toLowerCase())),r=new Map;for(let s of i){let a=F(s,t.runtime),n=r.get(a)??{files:[],production:[],tests:[],examples:[],generated:[],extensions:new Set};n.files.push(s),n.extensions.add(p.extname(s).toLowerCase()),oe(t.root,s)&&n.generated.push(s),se(t.root,s)?n.tests.push(s):ie(t.root,s)?n.examples.push(s):n.production.push(s),r.set(a,n);}let c=E("project",`project:${t.id}`);for(let[s,a]of [...r].sort(([n],[d])=>n.localeCompare(d))){let n=[a.production[0],a.tests[0],a.examples[0],a.generated[0],a.files[0]].filter((u,v,g)=>!!u&&g.indexOf(u)===v),d=await Promise.all(n.map(u=>e.state.addProof({provider:this.id,artifact:e.state.artifactPath(u,t),absolutePath:u,derivation:"extracted",trust:"observed",confidence:"high",detail:`${s} source-language inventory evidence`}))),l=[...a.production.length>0?["production"]:[],...a.tests.length>0?["test"]:[],...a.examples.length>0?["example"]:[],...a.generated.length>0?["generated"]:[]],m=e.state.addEntity({kind:"language",key:`language:${t.id}:${s}`,label:`${t.id} programming language: ${s}`,projectId:t.id,aliases:[s,`${s} source`,`${s} programming language`,"programming languages actually used"],attributes:{language:s,usage:"source-build-test",roles:l,fileCount:a.files.length,productionFileCount:a.production.length,testFileCount:a.tests.length,exampleFileCount:a.examples.length,generatedFileCount:a.generated.length,extensions:[...a.extensions].sort(),inventoryTruncated:o.length>=e.semanticScanLimit},proofIds:d});e.state.addRelation({from:c,to:m,kind:"uses-language",derivation:"extracted",trust:"observed",confidence:o.length>=e.semanticScanLimit?"medium":"high",proofIds:d});}o.length>=e.semanticScanLimit&&e.state.diagnostics.push({code:"graph.provider.source_language_inventory.limit_reached",severity:"warning",message:`Language inventory for ${t.id} reached ${e.semanticScanLimit} files. Counts are lower bounds.`,recommendation:"Increase maxFilesPerProject or use a scoped project run before treating language counts as complete."});}}},ft={id:"source-structure",version:"1.0.0",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(o=>T.has(p.extname(o).toLowerCase())&&!M(t.root,o)))},async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).filter(d=>!M(t.root,d)),i=e.semanticFilesByProject.get(t.id)??o,r=Ge((e.filesByProject.get(t.id)??[]).filter(d=>T.has(p.extname(d).toLowerCase())&&!M(t.root,d)),1e3),c=new Set(i.filter(d=>!M(t.root,d)).map(d=>p.resolve(d))),s=new Map;await Promise.all(o.map(async d=>{try{let l=await S.stat(d);if(l.isFile()&&l.size<=2*1024*1024){let m=p.resolve(d);c.add(m),s.set(m,l.size);}}catch{}}));let a=0,n=0;for(let d of r){let l;try{if((await S.stat(d)).size>2*1024*1024)continue;l=await S.readFile(d,"utf8");}catch{continue}let m=Ue(d,l),u=e.state.artifactPath(d,t),v=await e.state.addProof({provider:this.id,artifact:u,absolutePath:d,derivation:"extracted",trust:"observed",confidence:"high",detail:`${F(d,t.runtime)} source file`}),g=e.state.addEntity({kind:"file",key:`file:${t.id}:${u}`,label:u,projectId:t.id,aliases:[p.basename(d)],attributes:{artifact:u,language:F(d,t.runtime),bytes:Buffer.byteLength(l),...oe(t.root,d)?{generated:true}:{}},proofIds:[v]});e.state.addRelation({from:E("project",`project:${t.id}`),to:g,kind:"contains",proofIds:[v]});let w=Q(m,qe,250);for(let f of w){let y=await e.state.addProof({provider:this.id,artifact:u,absolutePath:d,line:f.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${f.detail}: ${f.name}`}),$=Ze(d,f.name,c,t.root);if($){let k=e.state.artifactPath($,t),C=E("file",`file:${t.id}:${k}`);if(!e.state.entities.has(C)){let R=await S.stat($).catch(()=>null),h=await e.state.addProof({provider:this.id,artifact:k,...R?.isFile()&&R.size<=2*1024*1024?{absolutePath:$}:{},derivation:"extracted",trust:"observed",confidence:"high",detail:"Locally imported artifact resolved from the project inventory"}),I=e.state.addEntity({kind:"file",key:`file:${t.id}:${k}`,label:k,projectId:t.id,aliases:[p.basename($)],attributes:{artifact:k,language:F($,t.runtime),bytes:s.get(p.resolve($))??(R?.isFile()?R.size:void 0)},proofIds:[h]});e.state.addRelation({from:E("project",`project:${t.id}`),to:I,kind:"contains",proofIds:[h]});}e.state.addRelation({from:g,to:C,kind:"imports",confidence:"high",proofIds:[y]});}else {let k=f.name.startsWith(".");k&&(n+=1);let C=e.state.addEntity({kind:"module",key:`module:${t.id}:${f.name}`,label:f.name,projectId:t.id,aliases:[f.name],attributes:{specifier:f.name,resolution:k?"unresolved-local":"external"},proofIds:[y]});e.state.addRelation({from:g,to:C,kind:"imports",confidence:k?"low":"medium",proofIds:[y]});}}if(a<1e4){let f=Q(m,xe,Math.min(100,1e4-a));a+=f.length;for(let y of f){let $=await e.state.addProof({provider:this.id,artifact:u,absolutePath:d,line:y.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${y.detail}: ${y.name}`}),k=e.state.addEntity({kind:"symbol",key:`symbol:${t.id}:${u}:${y.detail}:${y.name}`,label:y.name,projectId:t.id,attributes:{symbolKind:y.detail,language:F(d,t.runtime),...oe(t.root,d)?{generated:true}:{}},proofIds:[$]});e.state.addRelation({from:g,to:k,kind:"defines",confidence:"medium",proofIds:[$]});}}let P=t.framework!=="vscode-extension"&&t.kind!=="extension";for(let f of P?Q(m,Ye,100):[]){let y=l.split(/\r?\n/)[f.line-1]??"";if(He(d,y))continue;let $=y.match(/(?:@|\.|\[|^\s*)(get|post|put|delete|patch|options|head)/i)?.[1]?.toUpperCase()??"HTTP",k=await e.state.addProof({provider:this.id,artifact:u,absolutePath:d,line:f.line,derivation:"extracted",trust:"observed",confidence:"medium",detail:`${$} ${f.name}`}),C=e.state.addEntity({kind:"endpoint",key:`source-endpoint:${t.id}:${u}:${$}:${f.name}`,label:`${$} ${f.name||"/"}`,projectId:t.id,attributes:{method:$,path:f.name||"/",source:u},proofIds:[k]});e.state.addRelation({from:g,to:C,kind:"defines",confidence:"medium",proofIds:[k]});}}(r.length>=1e3||a>=1e4)&&e.state.diagnostics.push({code:"graph.provider.source_structure.limit_reached",severity:"info",message:`Source extraction for ${t.id} sampled ${r.length} file(s) from ${o.length} indexed candidate(s).`,recommendation:"Use bounded graph search, evidence, and path queries for proof-backed retrieval; do not treat the sampled symbol inventory as exhaustive."}),n>0&&e.state.diagnostics.push({code:"graph.provider.source_structure.unresolved_local_imports",severity:"warning",message:`${n} local import(s) in ${t.id} could not be resolved to an indexed source file.`,recommendation:"Check path aliases, generated sources, extension mapping, or provider limits before treating the import graph as complete."});}}};function ut(e){let o=e.slice(0,12e3).match(/(?:code generated by|generated from:|@generated by)\s*(?:(?:\/\/|#|\*)\s*)?[`"']?([^`"'\s;*]+)/i)?.[1];return !o||!p.posix.basename(o.replace(/\\/g,"/"))?null:o}function mt(e,t){let o=0,i=null,r=false;for(let c=t;c<e.length;c+=1){let s=e[c];if(i){s===i&&!r&&(i=null),r=s==="\\"&&!r,s!=="\\"&&(r=false);continue}if(s==='"'){i=s;continue}if(s==="("&&(o+=1),s===")"&&(o-=1,o===0))return e.slice(t+1,c)}return null}function gt(e){let t=[],o=/(?:deno_core::)?extension!\s*\(/g;for(let i of e.matchAll(o)){let r=(i.index??0)+i[0].lastIndexOf("("),c=mt(e,r);if(!c)continue;let s=c.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*,/)?.[1];if(!s)continue;let a=[...new Set([...c.matchAll(/\bops\s*=\s*\[([\s\S]*?)\]/g)].flatMap(d=>[...d[1].matchAll(/\b(op_[A-Za-z0-9_]+)\b/g)].map(l=>l[1])))].sort(),n=[...new Set([...c.matchAll(/\b(?:esm|js|lazy_loaded_esm|lazy_loaded_js)\s*=\s*\[([\s\S]*?)\]/g)].flatMap(d=>[...d[1].matchAll(/["']([^"']+\.(?:[cm]?[jt]s|tsx?|jsx?))["']/g)].map(l=>l[1])))].sort();t.push({name:s,line:e.slice(0,i.index??0).split(/\r?\n/).length,operations:a,scripts:n});}return t}function Ce(e,t){let o=e.indexOf(t);return o<0?void 0:e.slice(0,o).split(/\r?\n/).length}var ht={id:"runtime-bridge-semantics",version:"1.0.0",async applicable(e){for(let t of e.projects)for(let o of e.semanticFilesByProject.get(t.id)??[])if(!(p.extname(o).toLowerCase()!==".rs"||M(t.root,o)))try{let i=await S.readFile(o,"utf8");if(/(?:deno_core::)?extension!\s*\(/.test(i))return true}catch{}return false},async run(e){for(let t of e.projects){let i=(e.semanticFilesByProject.get(t.id)??[]).filter(r=>p.extname(r).toLowerCase()===".rs"&&!M(t.root,r));for(let r of i){let c="";try{if((await S.stat(r)).size>2*1024*1024)continue;c=await S.readFile(r,"utf8");}catch{continue}let s=gt(c);if(s.length===0)continue;let a=e.state.artifactPath(r,t),n=await e.state.addProof({provider:this.id,artifact:a,absolutePath:r,derivation:"extracted",trust:"observed",confidence:"high",detail:"Deno Core Rust extension declaration"}),d=e.state.addEntity({kind:"file",key:`file:${t.id}:${a}`,label:a,projectId:t.id,aliases:[p.basename(r)],attributes:{artifact:a,language:"rust",runtimeBridge:"deno-core"},proofIds:[n]});e.state.addRelation({from:E("project",`project:${t.id}`),to:d,kind:"contains",proofIds:[n]});for(let l of s){let m=await e.state.addProof({provider:this.id,artifact:a,absolutePath:r,line:l.line,derivation:"extracted",trust:"observed",confidence:"high",detail:`Deno Core extension ${l.name}`}),u=e.state.addEntity({kind:"protocol",key:`runtime-bridge:${t.id}:deno-core:${a}:${l.name}`,label:`${l.name} Rust JavaScript runtime bridge`,projectId:t.id,aliases:[l.name,`${l.name} cross-language bridge`,"Rust JavaScript TypeScript bridge"],attributes:{mechanism:"deno_core::extension!",languages:["javascript","rust","typescript"]},proofIds:[m]});e.state.addRelation({from:E("project",`project:${t.id}`),to:u,kind:"contains",proofIds:[m]}),e.state.addRelation({from:d,to:u,kind:"implements-protocol",proofIds:[m]});for(let g of ["rust","javascript","typescript"]){let w=E("language",`language:${t.id}:${g}`);e.state.entities.has(w)&&e.state.addRelation({from:u,to:w,kind:"uses-language",proofIds:[m]});}let v=new Map;for(let g of l.operations){let w=Ce(c,g),P=await e.state.addProof({provider:this.id,artifact:a,absolutePath:r,...w?{line:w}:{},derivation:"extracted",trust:"observed",confidence:"high",detail:`Rust op2 bridge operation ${g}`}),f=e.state.addEntity({kind:"symbol",key:`symbol:${t.id}:${a}:function:${g}`,label:g,projectId:t.id,aliases:[`rust:${g}`,`javascript:${g}`],attributes:{symbolKind:"function",language:"rust",bridgeMechanism:"op2"},proofIds:[P]});v.set(g,f),e.state.addRelation({from:d,to:f,kind:"defines",proofIds:[P]}),e.state.addRelation({from:f,to:u,kind:"implements-protocol",proofIds:[P,m]});}for(let g of l.scripts){let w=p.resolve(p.dirname(r),g);if(!await S.pathExists(w))continue;let P="";try{P=await S.readFile(w,"utf8");}catch{continue}let f=e.state.artifactPath(w,t),y=await e.state.addProof({provider:this.id,artifact:f,absolutePath:w,derivation:"extracted",trust:"observed",confidence:"high",detail:`${l.name} JavaScript/TypeScript extension source`}),$=e.state.addEntity({kind:"file",key:`file:${t.id}:${f}`,label:f,projectId:t.id,aliases:[p.basename(w)],attributes:{artifact:f,language:F(w,t.runtime),runtimeBridge:"deno-core"},proofIds:[y]});e.state.addRelation({from:d,to:$,kind:"references",confidence:"high",proofIds:[m,y]}),e.state.addRelation({from:$,to:u,kind:"implements-protocol",proofIds:[y,m]});for(let[k,C]of v){let R=Ce(P,k);if(!R)continue;let h=await e.state.addProof({provider:this.id,artifact:f,absolutePath:w,line:R,derivation:"extracted",trust:"observed",confidence:"high",detail:`JavaScript/TypeScript call to Rust operation ${k}`});e.state.addRelation({from:$,to:C,kind:"calls",confidence:"high",proofIds:[h,m]});}}}}}}},yt=/^[A-Z][A-Za-z0-9_]{3,}$/,vt=new Set(["Client","Config","Context","Data","Error","Event","Message","Options","Request","Response","Result","Schema","Type","Value"]),kt={id:"polyglot-semantics",version:"1.0.0",applicable(e){return e.projects.some(t=>(t.runtimeCandidates?.length??0)>1||a$1(t.root).polyglot)},async run(e){for(let t of e.projects){let o=E("project",`project:${t.id}`),i=e.filesByProject.get(t.id)??[],r=a$1(t.root),c=[...e.state.entities.values()].filter(n=>n.kind==="package"&&n.projectId===t.id);for(let n of r.units){let d=n.runtime,l=p.resolve(t.root,n.manifest),m=e.state.artifactPath(l,t),u=c.find(f=>f.attributes.manifest===m),v=u?.proofIds??[await e.state.addProof({provider:this.id,artifact:m,absolutePath:l,derivation:"extracted",trust:"observed",confidence:"high",detail:`${d} runtime-unit manifest`})],g=e.state.artifactPath(p.dirname(l),t),w=Object.fromEntries(n.stages.map(f=>[f.stage,f.command])),P=e.state.addEntity({kind:"runtime-unit",key:`runtime-unit:${t.id}:${d}:${m}`,label:`${d}:${g}:${p.basename(l)}`,projectId:t.id,aliases:[d,g],attributes:{runtime:d,root:g,ecosystem:n.ecosystem,role:n.role,manifest:m,stages:Object.keys(w).sort(),orchestrationMode:"native-manifest"},proofIds:v});e.state.addRelation({from:o,to:P,kind:"contains",confidence:"high",proofIds:v}),u&&e.state.addRelation({from:P,to:u.id,kind:"configured-by",confidence:"high",proofIds:v});for(let f of n.stages){let{stage:y,command:$}=f,k=e.state.addEntity({kind:"lifecycle-stage",key:`lifecycle-stage:${t.id}:${d}:${m}:${y}`,label:`${y} \xB7 ${d}:${g}:${p.basename(l)}`,projectId:t.id,aliases:[`${d}:${y}`,y],attributes:{stage:y,command:$,runtime:d,workingDirectory:g,commandConfidence:f.confidence,preflight:f.preflight},proofIds:v});e.state.addRelation({from:P,to:k,kind:"contains",confidence:"high",proofIds:v});}}for(let n of i.filter(d=>T.has(p.extname(d).toLowerCase()))){let d="";try{d=await S.readFile(n,"utf8");}catch{continue}let l=ut(d);if(!l)continue;let m=e.state.artifactPath(n,t),u=E("file",`file:${t.id}:${m}`);if(!e.state.entities.has(u))continue;let v=await e.state.addProof({provider:this.id,artifact:m,absolutePath:n,line:1,derivation:"extracted",trust:"observed",confidence:"high",detail:`Generated from ${l}`}),g=e.state.entities.get(u);g&&e.state.addEntity({kind:"file",key:g.identity.key,label:g.label,projectId:t.id,aliases:g.identity.aliases,attributes:{...g.attributes,generated:true},proofIds:[...g.proofIds,v]});let w=[...e.state.relations.values()].filter(k=>k.kind==="defines"&&k.from===u).map(k=>e.state.entities.get(k.to)).filter(k=>k?.kind==="symbol");for(let k of w)e.state.addEntity({kind:"symbol",key:k.identity.key,label:k.label,projectId:t.id,aliases:k.identity.aliases,attributes:{...k.attributes,generated:true},proofIds:[...k.proofIds,v]});let P=l.replace(/^\.\//,"").replace(/[.,:]$/,""),y=[p.resolve(t.root,P),p.resolve(p.dirname(n),P)].find(k=>i.includes(k));if(y){let k=e.state.artifactPath(y,t),C=E("file",`file:${t.id}:${k}`);if(e.state.entities.has(C)){e.state.addRelation({from:u,to:C,kind:"generated-by",derivation:"extracted",trust:"observed",confidence:"high",proofIds:[v]});continue}}let $=e.state.addEntity({kind:"schema",key:`generation-source:${t.id}:${P}`,label:p.posix.basename(P),projectId:t.id,aliases:[P],attributes:{sourceReference:P,discoveredFromGeneratedHeader:true},proofIds:[v]});e.state.addRelation({from:u,to:$,kind:"generated-from",derivation:"extracted",trust:"observed",confidence:"medium",proofIds:[v]});}let s=[...e.state.entities.values()].filter(n=>n.projectId===t.id&&n.kind==="symbol"&&n.attributes.generated===true&&n.attributes.symbolKind==="type"&&typeof n.attributes.language=="string"&&yt.test(n.label)&&!vt.has(n.label)),a=new Map;for(let n of s){let d=a.get(n.label)??[];d.push(n),a.set(n.label,d);}for(let[n,d]of [...a.entries()].filter(([,l])=>new Set(l.map(m=>m.attributes.language)).size>1).sort(([l],[m])=>l.localeCompare(m)).slice(0,1e3)){let l=d.sort((w,P)=>String(w.attributes.language).localeCompare(String(P.attributes.language))||w.id.localeCompare(P.id)),m=[...new Set(l.map(w=>String(w.attributes.language)))],u=[...new Set(l.flatMap(w=>w.proofIds))],v=e.state.addEntity({kind:"protocol",key:`protocol:${t.id}:${n}`,label:n,projectId:t.id,aliases:m.map(w=>`${w}:${n}`),attributes:{languages:m,implementationCount:l.length,source:"generated-types"},proofIds:u});for(let w of l)e.state.addRelation({from:w.id,to:v,kind:"implements-protocol",derivation:"inferred",trust:"corroborated",confidence:"high",proofIds:w.proofIds});let g=l[0];for(let w of l.slice(1))e.state.addRelation({from:w.id,to:g.id,kind:"equivalent-to",derivation:"inferred",trust:"corroborated",confidence:"high",proofIds:[...g.proofIds,...w.proofIds]});}}}},bt={id:"workspace-service-contract",version:"1.0.0",applicable(e){return !!e.contract?.projects.some(t=>t.ports.length>0||t.contracts.owns.length>0||t.contracts.apis.length>0||t.contracts.publishes.length>0||t.contracts.consumes.length>0||t.contracts.env.length>0)},async run(e){if(!e.contract)return;let t=new Map;for(let o of [...e.contract.projects].sort((i,r)=>i.slug.localeCompare(r.slug))){let i$1=o.contracts;if(o.ports.length===0&&i$1.owns.length===0&&i$1.apis.length===0&&i$1.publishes.length===0&&i$1.consumes.length===0&&i$1.env.length===0)continue;let r=await e.state.addProof({provider:this.id,artifact:i.workspaceContract,absolutePath:p.join(e.workspacePath,".workspai","workspace.contract.json"),pointer:`/projects/${o.slug}/contracts`,trust:"authoritative",derivation:"authored",detail:`Service contract for ${o.slug}`}),c=E("project",`project:${o.slug}`),s=e.state.addEntity({kind:"service",key:`contract-service:${o.slug}`,label:o.slug,projectId:o.slug,attributes:{ports:o.ports.map(a=>`${a.protocol}:${a.port}`),owns:[...i$1.owns].sort(),environmentKeys:[...i$1.env].sort()},proofIds:[r]});e.state.addRelation({from:c,to:s,kind:"implements",trust:"authoritative",derivation:"authored",proofIds:[r]});for(let a of [...i$1.apis].sort((n,d)=>n.name.localeCompare(d.name))){let n=e.state.addEntity({kind:"api",key:`contract-api:${o.slug}:${a.name}:${a.basePath}`,label:a.name,projectId:o.slug,attributes:{basePath:a.basePath},proofIds:[r]});e.state.addRelation({from:s,to:n,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[r]});}for(let a of [...i$1.publishes,...i$1.consumes].sort())t.has(a)||t.set(a,e.state.addEntity({kind:"queue",key:`event:${a}`,label:a,attributes:{protocol:"workspace-event"},proofIds:[r]}));for(let a of [...i$1.publishes].sort()){let n=t.get(a);n&&e.state.addRelation({from:s,to:n,kind:"publishes",trust:"authoritative",derivation:"authored",proofIds:[r]});}for(let a of [...i$1.consumes].sort()){let n=t.get(a);n&&e.state.addRelation({from:s,to:n,kind:"consumes",trust:"authoritative",derivation:"authored",proofIds:[r]});}}}},wt={id:"openapi",version:"1.0.0",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(me))},async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).filter(me);for(let i of o){let r;try{r=await B(i);}catch(c){e.state.diagnostics.push({code:"graph.provider.openapi.parse_failed",severity:"warning",message:`Could not parse ${e.state.artifactPath(i,t)}: ${c instanceof Error?c.message:String(c)}`});continue}for(let c of r){if(!("openapi"in c)&&!("swagger"in c))continue;let s=j(c.info),a=b(s?.title)??`${t.id} API`,n=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(i,t),absolutePath:i,pointer:"/info",trust:"authoritative",detail:"Authored OpenAPI contract"}),d=E("project",`project:${t.id}`),l=e.state.addEntity({kind:"api",key:`api:${t.id}:${a}`,label:a,projectId:t.id,attributes:{version:b(s?.version),specification:b(c.openapi)??b(c.swagger)},proofIds:[n]});e.state.addRelation({from:d,to:l,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[n]});let m=j(j(c.components)?.schemas)??j(c.definitions),u=new Map;for(let g of Object.keys(m??{}).sort()){let w=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(i,t),absolutePath:i,pointer:`/components/schemas/${g}`,trust:"authoritative",detail:`OpenAPI schema ${g}`}),P=e.state.addEntity({kind:"schema",key:`schema:${t.id}:${a}:${g}`,label:g,projectId:t.id,proofIds:[w]});u.set(g,P),e.state.addRelation({from:l,to:P,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[w]});}let v=j(c.paths);for(let g of Object.keys(v??{}).sort()){let w=j(v?.[g]);for(let P of Object.keys(w??{}).filter(f=>Be.has(f.toLowerCase())).sort()){let f=j(w?.[P]),y=`/paths/${g.replace(/~/g,"~0").replace(/\//g,"~1")}/${P}`,$=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(i,t),absolutePath:i,pointer:y,trust:"authoritative",detail:`${P.toUpperCase()} ${g}`}),k=e.state.addEntity({kind:"endpoint",key:`endpoint:${t.id}:${a}:${P.toUpperCase()}:${g}`,label:`${P.toUpperCase()} ${g}`,projectId:t.id,aliases:K(f?.tags),attributes:{method:P.toUpperCase(),path:g,operationId:b(f?.operationId),deprecated:typeof f?.deprecated=="boolean"?f.deprecated:void 0,tags:K(f?.tags)},proofIds:[$]});e.state.addRelation({from:l,to:k,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[$]});let C=JSON.stringify(f??{});for(let[R,h]of u)C.includes(`/${R}`)&&e.state.addRelation({from:k,to:h,kind:"references",trust:"authoritative",derivation:"authored",proofIds:[$]});}}}}}}},Pt={id:"interface-contracts",version:"1.0.0",applicable(e){return e.projects.some(t=>(e.filesByProject.get(t.id)??[]).some(ge))},async run(e){for(let t of e.projects){let o=(e.filesByProject.get(t.id)??[]).filter(ge);for(let i of o){let r=e.state.artifactPath(i,t),c=p.extname(i).toLowerCase();if(c===".graphql"||c===".gql"){let s=await S.readFile(i,"utf8"),a=await e.state.addProof({provider:this.id,artifact:r,absolutePath:i,trust:"authoritative",derivation:"authored",detail:"GraphQL schema"}),n=e.state.addEntity({kind:"api",key:`graphql:${t.id}:${r}`,label:`${t.id} GraphQL API`,projectId:t.id,attributes:{specification:"graphql",artifact:r},proofIds:[a]});e.state.addRelation({from:E("project",`project:${t.id}`),to:n,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[a]});for(let d of s.matchAll(/^\s*(?:type|input|interface|enum|scalar|union)\s+([A-Za-z_]\w*)/gm)){let l=e.state.addEntity({kind:"schema",key:`graphql-schema:${t.id}:${r}:${d[1]}`,label:d[1],projectId:t.id,proofIds:[a]});e.state.addRelation({from:n,to:l,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[a]});}continue}if(c===".proto"){let s=await S.readFile(i,"utf8"),a=V(s.replace(/\r\n/g,`
7
+ `).trim()),n=s.match(/^\s*package\s+([A-Za-z_][\w.]*)\s*;/m)?.[1],d=n||"unscoped",l=a.slice(0,16),m=await e.state.addProof({provider:this.id,artifact:r,absolutePath:i,trust:"authoritative",derivation:"authored",detail:"Protocol Buffers contract"});for(let u of s.matchAll(/^\s*service\s+([A-Za-z_]\w*)/gm)){let v=e.state.addEntity({kind:"api",key:`protobuf-service:${d}:${u[1]}:${l}`,label:u[1],aliases:[...n?[`${n}.${u[1]}`]:[],u[1]],attributes:{specification:"protobuf",package:n,definitionHash:a},proofIds:[m]});e.state.addRelation({from:E("project",`project:${t.id}`),to:v,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[m]});}for(let u of s.matchAll(/^\s*message\s+([A-Za-z_]\w*)/gm)){let v=e.state.addEntity({kind:"schema",key:`protobuf-message:${d}:${u[1]}:${l}`,label:u[1],aliases:[...n?[`${n}.${u[1]}`]:[],u[1]],attributes:{specification:"protobuf",package:n,definitionHash:a},proofIds:[m]});e.state.addRelation({from:E("project",`project:${t.id}`),to:v,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[m]});}continue}try{let s=(await B(i))[0];if(!s||!("asyncapi"in s))continue;let a=await e.state.addProof({provider:this.id,artifact:r,absolutePath:i,trust:"authoritative",derivation:"authored",detail:"AsyncAPI contract"}),n=e.state.addEntity({kind:"api",key:`asyncapi:${t.id}:${r}`,label:b(j(s.info)?.title)??`${t.id} AsyncAPI`,projectId:t.id,attributes:{specification:`asyncapi ${String(s.asyncapi)}`,artifact:r},proofIds:[a]});e.state.addRelation({from:E("project",`project:${t.id}`),to:n,kind:"exposes",trust:"authoritative",derivation:"authored",proofIds:[a]});for(let d of Object.keys(j(s.channels)??{}).sort()){let l=e.state.addEntity({kind:"queue",key:`asyncapi-channel:${t.id}:${d}`,label:d,projectId:t.id,attributes:{protocol:"asyncapi"},proofIds:[a]});e.state.addRelation({from:n,to:l,kind:"publishes",trust:"authoritative",derivation:"authored",proofIds:[a]});}}catch{}}}}},$t={id:"infrastructure-as-code",version:"1.0.0",applicable(e){return J(e).some(he)},async run(e){let t=J(e).filter(he);for(let o of t){let i=N(e.projects,o),r=i?.id??e.state.workspaceName,c=i?E("project",`project:${i.id}`):E("workspace",`workspace:${e.state.workspaceName}`),s=e.state.artifactPath(o,i),a=await S.readFile(o,"utf8"),n=await e.state.addProof({provider:this.id,artifact:s,absolutePath:o,trust:"authoritative",derivation:"authored",detail:"Infrastructure definition"});if(/^Dockerfile/i.test(p.basename(o))){let l=[...a.matchAll(/^\s*FROM\s+([^\s]+)(?:\s+AS\s+([^\s]+))?/gim)],m=e.state.addEntity({kind:"container",key:`dockerfile:${r}:${s}`,label:`${r} container image`,...i?{projectId:i.id}:{},attributes:{artifact:s,baseImages:l.map(u=>u[1])},proofIds:[n]});e.state.addRelation({from:c,to:m,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[n]});continue}if(/\.tf$/i.test(o)){for(let l of a.matchAll(/^\s*resource\s+["']([^"']+)["']\s+["']([^"']+)["']/gm)){let m=l[1],u=/(?:db|sql|rds|database)/i.test(m)?"database":/(?:queue|kafka|sqs|pubsub|servicebus)/i.test(m)?"queue":"deployment",v=e.state.addEntity({kind:u,key:`terraform:${r}:${m}:${l[2]}`,label:`${m}.${l[2]}`,...i?{projectId:i.id}:{},attributes:{resourceType:m,artifact:s},proofIds:[n]});e.state.addRelation({from:c,to:v,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[n]});}continue}let d=e.state.addEntity({kind:"deployment",key:`helm:${r}:${s}`,label:`${r} Helm chart`,...i?{projectId:i.id}:{},attributes:{artifact:s,format:"helm"},proofIds:[n]});e.state.addRelation({from:c,to:d,kind:"deploys",trust:"authoritative",derivation:"authored",proofIds:[n]});}}};function Re(e){let t=e.toLowerCase();return /(?:postgres|mysql|mariadb|mongo|cassandra|cockroach|mssql|oracle)/.test(t)?"database":/(?:rabbitmq|kafka|nats|pulsar|activemq|redis)/.test(t)?"queue":"container"}var jt={id:"compose",version:"1.0.0",async applicable(e){return (await ke(e)).length>0},async run(e){for(let t of await ke(e)){let o;try{o=(await B(t))[0];}catch(s){e.state.diagnostics.push({code:"graph.provider.compose.parse_failed",severity:"warning",message:`Could not parse ${e.state.artifactPath(t)}: ${s instanceof Error?s.message:String(s)}`});}let i=j(o?.services);if(!i)continue;let r=N(e.projects,t),c=new Map;for(let s of Object.keys(i).sort()){let a=j(i[s]),n=a?.build,d=b(n)??b(j(n)?.context),l=d?N(e.projects,p.resolve(p.dirname(t),d)):e.projects.find(g=>g.id.toLowerCase()===s.toLowerCase()||p.basename(g.path).toLowerCase()===s.toLowerCase())??r,m=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,r),absolutePath:t,pointer:`/services/${s}`,trust:"authoritative",derivation:"authored",detail:`Compose service ${s}`}),u=b(a?.image),v=e.state.addEntity({kind:"service",key:`compose-service:${e.state.artifactPath(t,r)}:${s}`,label:s,...l?{projectId:l.id}:{},attributes:{image:u,ports:K(a?.ports).map(String),networks:K(a?.networks),environmentKeys:Xe(a?.environment)},proofIds:[m]});if(c.set(s,v),l&&e.state.addRelation({from:E("project",`project:${l.id}`),to:v,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[m]}),u){let g=e.state.addEntity({kind:Re(u),key:`image:${u}`,label:u,...l?{projectId:l.id}:{},attributes:{image:u},proofIds:[m]});e.state.addRelation({from:v,to:g,kind:Re(u)==="container"?"runs-on":"depends-on",trust:"authoritative",derivation:"authored",proofIds:[m]});}}for(let s of Object.keys(i).sort()){let a=j(i[s]),n=c.get(s);if(n)for(let d of K(a?.depends_on)){let l=c.get(d);if(!l)continue;let m=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,r),absolutePath:t,pointer:`/services/${s}/depends_on/${d}`,trust:"authoritative",derivation:"authored",detail:`${s} depends on ${d}`});e.state.addRelation({from:n,to:l,kind:"depends-on",trust:"authoritative",derivation:"authored",proofIds:[m]});}}}}},It={id:"documentation",version:"1.0.0",applicable(e){return J(e).some(ye)},async run(e){let t=new Set,o=[e.workspaceFiles,...e.projects.map(i=>e.filesByProject.get(i.id)??[])];for(let i of o){let r=i.filter(c=>ye(c)&&!e.projects.some(s=>c.startsWith(`${s.root}${p.sep}`)&&M(s.root,c)));for(let c of r){if(t.has(c))continue;t.add(c);let s=N(e.projects,c),n=(await S.readFile(c,"utf8")).match(/^#\s+(.+)$/m)?.[1]?.trim()??p.basename(c),d=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(c,s),absolutePath:c,line:1,trust:"authoritative",derivation:"authored",detail:`Documentation: ${n}`}),l=e.state.addEntity({kind:"document",key:`document:${e.state.artifactPath(c,s)}`,label:n,...s?{projectId:s.id}:{},attributes:{artifact:e.state.artifactPath(c,s)},proofIds:[d]}),m=s?E("project",`project:${s.id}`):E("workspace",`workspace:${e.state.workspaceName}`);e.state.addRelation({from:l,to:m,kind:"documents",trust:"authoritative",derivation:"authored",proofIds:[d]});}}}},Et={id:"kubernetes",version:"1.0.0",async applicable(e){return (await Pe(e)).length>0},async run(e){for(let t of await Pe(e)){let o=N(e.projects,t),i=o?E("project",`project:${o.id}`):E("workspace",`workspace:${e.state.workspaceName}`),r=await B(t);for(let c=0;c<r.length;c+=1){let s=r[c],a=b(s.kind),n=j(s.metadata),d=b(n?.name);if(!a||!d)continue;let l=b(n?.namespace)??"default",m=/Deployment|StatefulSet|DaemonSet/i.test(a)?"deployment":/Service|Ingress/i.test(a)?"service":/ConfigMap|Secret/i.test(a)?"environment":"deployment",u=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,o),absolutePath:t,pointer:`/documents/${c}`,trust:"authoritative",derivation:"authored",detail:`${a} ${l}/${d}`}),v=e.state.addEntity({kind:m,key:`kubernetes:${a}:${l}:${d}`,label:`${a}/${d}`,...o?{projectId:o.id}:{},attributes:{resourceKind:a,namespace:l,secret:a==="Secret",keys:a==="Secret"||a==="ConfigMap"?Object.keys(j(s.data)??{}).sort():void 0},proofIds:[u]});e.state.addRelation({from:i,to:v,kind:m==="deployment"?"deploys":"contains",trust:"authoritative",derivation:"authored",proofIds:[u]});let g=e.state.addEntity({kind:"environment",key:`kubernetes-namespace:${l}`,label:`Kubernetes namespace ${l}`,attributes:{namespace:l},proofIds:[u]});e.state.addRelation({from:v,to:g,kind:"runs-on",trust:"authoritative",derivation:"authored",proofIds:[u]});}}}},Ct={id:"ci-workflow",version:"1.0.0",applicable(e){return we(e).length>0},async run(e){let t=we(e);for(let o of t){let i=N(e.projects,o),r=e.state.artifactPath(o,i),c=p.basename(o)==="Jenkinsfile",s=p.basename(o),a=[],n=[];if(c)a=[...(await S.readFile(o,"utf8")).matchAll(/\bstage\s*\(\s*["']([^"']+)["']/g)].map(u=>u[1]);else {let m;try{m=(await B(o))[0];}catch{continue}if(!m)continue;s=b(m.name)??s;let u=O(p.relative(i?.root??e.workspacePath,o));if(/^\.gitlab-ci\./i.test(u)){let v=new Set(["stages","variables","workflow","include","default","image","services","cache","before_script","after_script"]);a=Object.keys(m).filter(g=>!g.startsWith(".")&&!v.has(g)).sort();}else a=[...new Set([...Object.keys(j(m.jobs)??{}),...Object.keys(j(j(m.workflows)?.jobs)??{}),...K(m.stages)])].sort();n=K(m.on);}a.length===0&&(a=["pipeline"]);let d=await e.state.addProof({provider:this.id,artifact:r,absolutePath:o,...c?{}:{pointer:"/jobs"},trust:"authoritative",derivation:"authored",detail:"CI/CD workflow"}),l=e.state.addEntity({kind:"pipeline",key:`pipeline:${r}`,label:s,attributes:{jobs:a,triggers:n,artifact:r},proofIds:[d]});e.state.addRelation({from:i?E("project",`project:${i.id}`):E("workspace",`workspace:${e.state.workspaceName}`),to:l,kind:"contains",trust:"authoritative",derivation:"authored",proofIds:[d]});}}},Rt={id:"codeowners",version:"1.0.0",async applicable(e){return (await be(e)).length>0},async run(e){for(let t of await be(e)){let o=N(e.projects,t),r=(await S.readFile(t,"utf8")).split(/\r?\n/);for(let c=0;c<r.length;c+=1){let s=r[c].trim();if(!s||s.startsWith("#"))continue;let[a,...n]=s.split(/\s+/);for(let d of n.filter(l=>l.startsWith("@"))){let l=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(t,o),absolutePath:t,line:c+1,trust:"authoritative",derivation:"authored",detail:`${a} ${d}`}),m=e.state.addEntity({kind:"owner",key:`owner:${d.toLowerCase()}`,label:d,aliases:[d],proofIds:[l]}),u=e.projects.filter(g=>{let w=a.replace(/^\//,"").replace(/\*.*$/,""),P=p.dirname(t),f=[".github","docs"].includes(p.basename(P))?p.dirname(P):P,y=O(p.relative(f,g.root));return w&&(y==="."||y.startsWith(w.replace(/\/$/,""))||g.path.startsWith(w.replace(/\/$/,"")))}),v=u.length>0?u.map(g=>E("project",`project:${g.id}`)):o?[E("project",`project:${o.id}`)]:[E("workspace",`workspace:${e.state.workspaceName}`)];for(let g of v)e.state.addRelation({from:m,to:g,kind:"owns",trust:"authoritative",derivation:"authored",proofIds:[l]});}}}}},St={id:"architecture-decisions",version:"1.0.0",applicable(e){return [{root:e.workspacePath,files:e.workspaceFiles},...e.projects.map(t=>({root:t.root,files:e.filesByProject.get(t.id)??[]}))].some(t=>t.files.some(o=>ve(t.root,o)))},async run(e){let t=new Set,o=[{root:e.workspacePath,files:e.workspaceFiles},...e.projects.map(i=>({root:i.root,files:e.filesByProject.get(i.id)??[]}))];for(let i of o){let r=i.files.filter(c=>ve(i.root,c));for(let c of r){if(t.has(c))continue;t.add(c);let s=N(e.projects,c),a=await S.readFile(c,"utf8"),n=a.match(/^#\s+(.+)$/m)?.[1]?.trim()??p.basename(c,".md"),d=a.match(/^status\s*:\s*(.+)$/im)?.[1]?.trim(),l=await e.state.addProof({provider:this.id,artifact:e.state.artifactPath(c,s),absolutePath:c,line:1,trust:"authoritative",derivation:"authored",detail:`Architecture decision: ${n}`}),m=e.state.addEntity({kind:"decision",key:`decision:${e.state.artifactPath(c,s)}`,label:n,...s?{projectId:s.id}:{},attributes:{status:d,artifact:e.state.artifactPath(c,s)},proofIds:[l]}),u=s?E("project",`project:${s.id}`):E("workspace",`workspace:${e.state.workspaceName}`);e.state.addRelation({from:u,to:m,kind:"decided-by",trust:"authoritative",derivation:"authored",proofIds:[l]});}}}},At=[at,dt,lt,pt,ft,ht,kt,bt,wt,Pt,jt,$t,Et,Ct,Rt,It,St];async function Wt(e$1,t){for(let o of t.edges){let i=[];for(let r of o.evidence){let c=x(r.file);i.push(await e$1.addProof({provider:"project-topology",artifact:c,absolutePath:p.resolve(e$1.workspacePath,c),derivation:o.source==="inferred"?"inferred":"authored",trust:o.source==="inferred"?"observed":"authoritative",confidence:o.confidence,detail:r.detail??`${o.kind} relationship`}));}i.length===0&&i.push(await e$1.addProof({provider:"project-topology",artifact:e.model,derivation:"inferred",trust:"ambiguous",confidence:o.confidence,detail:`${o.kind} relationship without source locator`})),e$1.addRelation({from:E("project",`project:${o.from}`),to:E("project",`project:${o.to}`),kind:o.kind==="event-pub-sub"?"consumes":"depends-on",derivation:o.source==="inferred"?"inferred":"authored",trust:o.source==="inferred"?"observed":"authoritative",confidence:o.confidence,proofIds:i});}}function _t(e){let t=[...e.entities.values()].filter(i=>i.kind==="endpoint"),o=new Map;for(let i of t){let r=String(i.attributes.method??"").toUpperCase(),c=String(i.attributes.path??"");if(!i.projectId||!r||!c)continue;let s=`${i.projectId}\0${r}\0${c}`,a=o.get(s)??[];a.push(i),o.set(s,a);}for(let i of o.values()){if(i.length<2)continue;let r=i.find(c=>c.proofIds.some(s=>e.proofs.get(s)?.trust==="authoritative"));if(r)for(let c of i.filter(s=>s.id!==r.id))e.addRelation({from:c.id,to:r.id,kind:"implements",derivation:"extracted",trust:"corroborated",confidence:"high",proofIds:[...c.proofIds,...r.proofIds]});}}function H(e,t){let o=[...new Set(e)],i=o.filter(r=>t.has(r)).length;return {eligibleCount:o.length,boundCount:i,unknownCount:o.length-i,coverageRatio:o.length===0?null:i/o.length}}function Kt(e,t){let o=e.filter(n=>n.kind==="project").map(n=>n.id),i=e.filter(n=>n.kind==="endpoint").map(n=>n.id),r=new Set(t.filter(n=>n.kind==="implements").flatMap(n=>[n.from,n.to])),c=new Set(t.filter(n=>n.kind==="tests").flatMap(n=>[n.from,n.to]).filter(n=>o.includes(n))),s=new Set(t.filter(n=>n.kind==="deploys").flatMap(n=>[n.from,n.to]).filter(n=>o.includes(n))),a=new Set(t.filter(n=>n.kind==="owns").flatMap(n=>[n.from,n.to]).filter(n=>o.includes(n)));return {apiImplementation:H(i,r),projectTests:H(o,c),projectDeployment:H(o,s),projectOwnership:H(o,a)}}async function Qt(e){let t=p.resolve(e.workspacePath),o=e.now??new Date,i=e.projects.map(h=>{let I=h.absolutePath?p.resolve(h.absolutePath):p.resolve(t,h.path),A=p.relative(t,I),_=A.startsWith(`..${p.sep}`)||A===".."||p.isAbsolute(A);return {...h,root:I,artifactPrefix:_?`external/${h.id}`:O(A||h.id)}}).sort((h,I)=>h.id.localeCompare(I.id)),r=new re(t,o,e.workspace.name),c=Math.max(100,Math.min(e.maxFilesPerProject??2e3,1e4)),s=Math.min(Math.max(c*10,2e4),5e4),a=new Map(await Promise.all(i.map(async h=>[h.id,await q(h.root,c)]))),n=new Map(await Promise.all(i.map(async h=>[h.id,await q(h.root,s)]))),d=Math.min(c*Math.max(i.length,1),2e4),l=await q(t,d),m=await ot({workspacePath:t,projects:i,projectFileLimit:s,workspaceFileLimit:d,inventories:{workspaceFiles:l,projectFiles:n}}),u={workspacePath:t,projects:i,filesByProject:a,semanticFilesByProject:n,semanticScanLimit:s,workspaceFiles:l,now:o,maxFilesPerProject:c,contract:e.contract??null,state:r};for(let h of At){let I={entities:r.entities.size,relations:r.relations.size,proofs:r.proofs.size,diagnostics:r.diagnostics.length},A="passed",_=null;try{if(!(h.applicable?await h.applicable(u):true))A="skipped";else {await h.run(u);let Z=r.entities.size-I.entities,We=r.relations.size-I.relations,_e=r.proofs.size-I.proofs;Z===0&&We===0&&_e===0?(A="partial",r.diagnostics.push({code:`graph.provider.${h.id}.empty_result`,severity:"warning",message:`${h.id} found an applicable source surface but produced no graph evidence.`,recommendation:"Inspect the matching source format or extend the provider before treating this graph dimension as complete."})):r.diagnostics.length>I.diagnostics&&(A="partial");}}catch(L){A="failed";let Z=L instanceof Error?L.message:String(L);_=Z,r.diagnostics.push({code:`graph.provider.${h.id}.failed`,severity:"warning",message:`${h.id} provider failed: ${Z}`,recommendation:"Repair the referenced source artifact and rerun workspace graph emit."});}let W=r.diagnostics.slice(I.diagnostics).map(L=>`${L.code}: ${L.message}`);_&&W.length===0&&W.push(_),r.providers.push({id:h.id,version:h.version,status:A,permission:"filesystem-read",discoveredEntities:r.entities.size-I.entities,discoveredRelations:r.relations.size-I.relations,proofCount:r.proofs.size-I.proofs,diagnostics:W});}_t(r),await Wt(r,e.projectTopology);let v=[...r.entities.values()].sort((h,I)=>h.id.localeCompare(I.id)),g=[...r.relations.values()].sort((h,I)=>h.id.localeCompare(I.id)),w=[...r.proofs.values()].sort((h,I)=>h.id.localeCompare(I.id)),P=v.filter(h=>h.proofIds.length>0).length,f=g.filter(h=>h.proofIds.length>0).length,y=r.providers.filter(h=>h.status!=="failed").length,$=e.projectTopology.diagnostics?.filter(h=>h.code==="graph.edges.missing").flatMap(h=>h.nodeIds??[])??[];$.length>0&&r.diagnostics.push({code:"graph.knowledge.project_relationships_unknown",severity:"warning",message:`${$.length} project(s) have no proven inter-project relationship. This is unknown topology, not proof of independence.`,entityIds:$.map(h=>E("project",`project:${h}`)),recommendation:"Author service contracts or add OpenAPI, Compose, Kubernetes, package or import evidence."});let k=r.diagnostics.filter(h=>h.code.includes("unknown")||h.code.includes("unresolved")||h.code.includes("limit_reached")||h.code.endsWith(".empty_result")).reduce((h,I)=>h+Math.max(I.entityIds?.length??0,I.relationIds?.length??0,1),0),C=Kt(v,g),R=Object.values(C).reduce((h,I)=>h+I.unknownCount,0);return {schemaVersion:pe,generatedAt:o.toISOString(),source:{...e.source,inputs:m},workspace:e.workspace,projectTopology:e.projectTopology,entities:v,relations:g,proofs:w,providers:[...r.providers].sort((h,I)=>h.id.localeCompare(I.id)),quality:{entityCount:v.length,relationCount:g.length,proofCount:w.length,entityProofCoverageRatio:v.length===0?1:P/v.length,relationProofCoverageRatio:g.length===0?1:f/g.length,providerSuccessRatio:r.providers.length===0?1:y/r.providers.length,conflictCount:r.diagnostics.filter(h=>h.code.includes("conflict")).length,unknownCount:k+R,bindingCoverage:C,portable:true,secretValuesEmitted:false},diagnostics:[...r.diagnostics].sort((h,I)=>h.code.localeCompare(I.code)||h.message.localeCompare(I.message))}}function eo(e,t){return E(e,t)}
8
+ export{pe as a,Yt as b,Xt as c,ot as d,Qt as e,eo as f};
@@ -1 +1 @@
1
- import e from'path';import N from'fs-extra';import F from'chalk';async function K(n,o={}){let t=e.resolve(n),{WORKSPACE_CONTRACT_PATH:i,syncWorkspaceContract:c,verifyWorkspaceContract:m,writeWorkspaceContractVerifyEvidence:k}=await import('./workspace-contract-IUUPBQXU.js'),p=await c({workspacePath:t,strict:true}),{syncWorkspaceReadme:f,WORKSPACE_README_PATH:d}=await import('./workspace-readme-IVJXSIBS.js'),h=await f({workspacePath:t,workspaceName:p.contract.workspace.name,profile:p.contract.workspace.profile??"minimal",projectCount:p.contract.projects.length}),{buildWorkspaceModel:u,writeWorkspaceModel:g}=await import('./workspace-model-NXFIKX26.js'),a=await u({workspacePath:t,includeEvidence:true}),P=await g(a,t),{buildWorkspaceImpact:W,buildWorkspaceModelSnapshot:C,diffWorkspaceModel:y,writeWorkspaceImpact:A,writeWorkspaceModelDiff:j,writeWorkspaceModelSnapshot:E}=await import('./workspace-intelligence-XHSUFTAT.js'),{WORKSPACE_INTELLIGENCE_ARTIFACTS:s}=await import('./workspace-intelligence-runtime-registry-NCVHKCMP.js'),R=e.join(t,s.snapshot),l=false;if(!await N.pathExists(R)){let r=await C({workspacePath:t,model:a});await E(r,t),l=true;}let S=await y({workspacePath:t,fromPath:s.snapshot,model:a}),b=await j(S,t),v=await W({workspacePath:t,fromPath:s.diff}),O=await A(v,t),T=await m({workspacePath:t,strict:true}),_=await k({workspacePath:t,result:T}),{syncWorkspaceAgentGrounding:M}=await import('./workspace-agent-sync-QGYLY7HH.js'),w=await M({workspacePath:t,model:a,write:true,refreshContext:true,strict:false,preset:"enterprise",targets:["all"],projectGrounding:o.projectGrounding??"managed"}),x=[i,(await import('./workspace-registry-summary-A5VDPRHU.js')).WORKSPACE_REGISTRY_SUMMARY_RELATIVE_PATH,e.relative(t,h).split(e.sep).join("/")||d,e.relative(t,P).split(e.sep).join("/"),s.knowledgeGraph,...l?[s.snapshot]:[],e.relative(t,b).split(e.sep).join("/"),e.relative(t,O).split(e.sep).join("/"),e.relative(t,_).split(e.sep).join("/"),...w.writtenFiles].filter((r,I,G)=>G.indexOf(r)===I);return o.silent||console.log(F.gray(`\u2713 Workspace Intelligence synced \xB7 ${a.summary.projectCount} project(s) \xB7 model + graph + agent grounding`)),{workspacePath:t,projectCount:a.summary.projectCount,baselineCreated:l,writtenFiles:x,warnings:w.projectLenses?.skipped.map(r=>`${r.name}: ${r.reason}`)??[]}}async function D(n,o={}){let t=e.resolve(n),i=o.workspaceName??e.basename(t),{registerWorkspaceStrict:c}=await import('./workspace-3AAOUELG.js');return await c(t,i),K(t,{silent:o.silent})}export{K as a,D as b};
1
+ import e from'path';import N from'fs-extra';import F from'chalk';async function K(n,o={}){let t=e.resolve(n),{WORKSPACE_CONTRACT_PATH:i,syncWorkspaceContract:c,verifyWorkspaceContract:m,writeWorkspaceContractVerifyEvidence:k}=await import('./workspace-contract-KKVC2DUQ.js'),p=await c({workspacePath:t,strict:true}),{syncWorkspaceReadme:f,WORKSPACE_README_PATH:d}=await import('./workspace-readme-RASXBZRQ.js'),h=await f({workspacePath:t,workspaceName:p.contract.workspace.name,profile:p.contract.workspace.profile??"minimal",projectCount:p.contract.projects.length}),{buildWorkspaceModel:u,writeWorkspaceModel:g}=await import('./workspace-model-VPFCKTYQ.js'),a=await u({workspacePath:t,includeEvidence:true}),P=await g(a,t),{buildWorkspaceImpact:W,buildWorkspaceModelSnapshot:C,diffWorkspaceModel:y,writeWorkspaceImpact:A,writeWorkspaceModelDiff:j,writeWorkspaceModelSnapshot:E}=await import('./workspace-intelligence-SDBIRKMK.js'),{WORKSPACE_INTELLIGENCE_ARTIFACTS:s}=await import('./workspace-intelligence-runtime-registry-YGWB2RRS.js'),R=e.join(t,s.snapshot),l=false;if(!await N.pathExists(R)){let r=await C({workspacePath:t,model:a});await E(r,t),l=true;}let S=await y({workspacePath:t,fromPath:s.snapshot,model:a}),b=await j(S,t),v=await W({workspacePath:t,fromPath:s.diff}),O=await A(v,t),T=await m({workspacePath:t,strict:true}),_=await k({workspacePath:t,result:T}),{syncWorkspaceAgentGrounding:M}=await import('./workspace-agent-sync-JMRX6J2Y.js'),w=await M({workspacePath:t,model:a,write:true,refreshContext:true,strict:false,preset:"enterprise",targets:["all"],projectGrounding:o.projectGrounding??"managed"}),x=[i,(await import('./workspace-registry-summary-7QT7YMIU.js')).WORKSPACE_REGISTRY_SUMMARY_RELATIVE_PATH,e.relative(t,h).split(e.sep).join("/")||d,e.relative(t,P).split(e.sep).join("/"),s.knowledgeGraph,...l?[s.snapshot]:[],e.relative(t,b).split(e.sep).join("/"),e.relative(t,O).split(e.sep).join("/"),e.relative(t,_).split(e.sep).join("/"),...w.writtenFiles].filter((r,I,G)=>G.indexOf(r)===I);return o.silent||console.log(F.gray(`\u2713 Workspace Intelligence synced \xB7 ${a.summary.projectCount} project(s) \xB7 model + graph + agent grounding`)),{workspacePath:t,projectCount:a.summary.projectCount,baselineCreated:l,writtenFiles:x,warnings:w.projectLenses?.skipped.map(r=>`${r.name}: ${r.reason}`)??[]}}async function D(n,o={}){let t=e.resolve(n),i=o.workspaceName??e.basename(t),{registerWorkspaceStrict:c}=await import('./workspace-LFESVKE7.js');return await c(t,i),K(t,{silent:o.silent})}export{K as a,D as b};
@@ -1 +1 @@
1
- import {a as a$1}from'./chunk-FPJNWPKU.js';import {f,e as e$1,g as g$1,i}from'./chunk-5EPPPMAS.js';var v="workspai.studio-card-repair-capabilities.v1",k="npx workspai workspace verify --json",r=e$1,a=i;function e(f,n,c,o={}){return {cardId:f,scope:o.scope??"workspace",producerCommand:n,producerArtifact:c,verifyCommand:n,verifyArtifact:c,aggregateVerifyCommand:k,targetClosure:"exact-producer-and-causal-action-set",workspacePosture:"reported-separately",repairPolicy:o.repairPolicy??"refresh-producer",remediationArtifacts:o.remediationArtifacts??[]}}var b=[e("doctor","npx workspai doctor workspace --json",r.doctor,{repairPolicy:"diagnose-and-repair",remediationArtifacts:[a.doctorRemediationPlan,a.artifactRemediationPlan]}),e("projectDoctor","npx workspai doctor project --json",a.doctorProject,{scope:"project",repairPolicy:"diagnose-and-repair",remediationArtifacts:[a.doctorRemediationPlan,a.artifactRemediationPlan]}),e("pipeline","npx workspai pipeline --json --strict",a.pipelineLastRun,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("analyze","npx workspai analyze --json",r.analyze,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("readiness","npx workspai readiness --json",r.readiness,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("bootstrap","npx workspai bootstrap --ci --json",a.bootstrapCompliance,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("workspaceSync","npx workspai workspace sync --json",a.workspaceRegistry),e("foundation","npx workspai workspace foundation ensure --json",".workspai/workspace.json"),e("contract","npx workspai workspace contract verify --strict --json",r.contractVerify,{repairPolicy:"source-repair-then-produce"}),e("autopilot","npx workspai autopilot release --json",a.autopilotReleaseLastRun,{repairPolicy:"source-repair-then-produce"}),e("workspaceRun","npx workspai workspace run test --json",a.workspaceRunLast,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("setup","npx workspai setup --json",".workspai/toolchain.lock",{repairPolicy:"source-repair-then-produce"}),e("importReadiness","npx workspai doctor project --json",a.doctorProject,{scope:"project",repairPolicy:"diagnose-and-repair",remediationArtifacts:[a.artifactRemediationPlan]}),e("snapshot","npx workspai snapshot create --json",".workspai/reports/snapshot-last-run.json"),e("workspaceModel","npx workspai workspace model --json --write",r.model),e("intelligenceSnapshot","npx workspai workspace snapshot --json",r.snapshot),e("workspaceDiff",`npx workspai workspace diff --from ${r.snapshot} --json`,r.diff),e("workspaceImpact",`npx workspai workspace impact --from ${r.diff} --json`,r.impact),e("workspaceIntelligenceRun","npx workspai workspace intelligence run --for-agent generic --strict --json",r.intelligenceRun,{repairPolicy:"source-repair-then-produce"}),e("workspaceVerify",k,r.verify,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("workspaceExplain","npx workspai workspace explain release-blocked --json --write",r.explain),e("workspaceWhy","npx workspai workspace why release-blocked --json --write",a.workspaceWhy),e("workspaceTrace",`npx workspai workspace trace --from ${r.diff} --json --write`,a.workspaceTrace),e("workspaceWatch","npx workspai workspace watch --once --json",r.model),e("workspaceContextAgent","npx workspai workspace context --for-agent --json --write",r.agentContext),e("agentGrounding","npx workspai workspace agent-sync --write --refresh-context --json --preset enterprise --target vscode",r.agentCustomizationPack),e("share",`npx workspai workspace share --output ${a.workspaceShareBundle} --json`,a.workspaceShareBundle),e("archive","npx workspai workspace export --output team-workspace.workspai-archive.zip --json",".workspai/archive-manifest.json"),e("mirror","npx workspai mirror status --json",a.mirrorOps),e("cache","npx workspai cache status --json",".workspai/cache-config.yml"),e("policy","npx workspai workspace policy show --json",".workspai/policies.yml",{repairPolicy:"source-repair-then-produce"}),e("infra","npx workspai infra plan --json",a.infraPlan,{repairPolicy:"source-repair-then-produce"})];var g=f.repairTransaction,h=e$1.repairTransaction,E=g$1.repairTransaction;var m="workspai.workspace-repair-proposal.v1",I="contracts/workspace-intelligence/workspace-repair-proposal.v1.json";var R="workspai.workspace-repair-capabilities.v1",y="workspai.workspace-repair-consumer-protocol.v1",w=[{id:"node",ecosystem:"JavaScript / TypeScript",manifests:["package.json"],lockfiles:["package-lock.json","npm-shrinkwrap.json","pnpm-lock.yaml","yarn.lock","bun.lock","bun.lockb"],packageManagers:["npm","pnpm","yarn","bun"],support:"full",stages:{reconcile:"native",audit:"native",test:"declared",build:"declared"},requiredToolFamilies:["selected package manager"]},{id:"python",ecosystem:"Python",manifests:["pyproject.toml","requirements.txt"],lockfiles:["uv.lock","poetry.lock","requirements.txt"],packageManagers:["uv","poetry","pip"],support:"conditional",stages:{reconcile:"conditional",audit:"conditional",test:"conditional",build:"declared"},requiredToolFamilies:["isolated Python","selected environment manager","pip-audit or governed Doctor audit"],limitation:"A bounded isolated environment and an installed audit surface are required."},{id:"go",ecosystem:"Go",manifests:["go.mod"],lockfiles:["go.sum"],packageManagers:["go modules"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["go","govulncheck"],limitation:"govulncheck must be installed; the engine never fetches an unreviewed tool."},{id:"rust",ecosystem:"Rust",manifests:["Cargo.toml"],lockfiles:["Cargo.lock"],packageManagers:["cargo"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["cargo","cargo-audit"],limitation:"The cargo-audit subcommand must already be installed."},{id:"php-composer",ecosystem:"PHP",manifests:["composer.json"],lockfiles:["composer.lock"],packageManagers:["composer"],support:"full",stages:{reconcile:"native",audit:"native",test:"declared",build:"declared"},requiredToolFamilies:["composer"]},{id:"ruby-bundler",ecosystem:"Ruby",manifests:["Gemfile"],lockfiles:["Gemfile.lock"],packageManagers:["bundler"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"declared",build:"declared"},requiredToolFamilies:["bundle","bundle-audit"],limitation:"bundle-audit and the declared Rake tasks must already exist."},{id:"elixir-mix",ecosystem:"Elixir",manifests:["mix.exs"],lockfiles:["mix.lock"],packageManagers:["mix"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["mix","Hex audit task"],limitation:"The project must expose the Hex audit task used by its dependency policy."},{id:"deno",ecosystem:"Deno",manifests:["deno.json","deno.jsonc"],lockfiles:["deno.lock"],packageManagers:["deno"],support:"full",stages:{reconcile:"native",audit:"native",test:"declared",build:"declared"},requiredToolFamilies:["deno"]},{id:"dotnet",ecosystem:".NET",manifests:["*.sln","*.csproj","*.fsproj","*.vbproj"],lockfiles:["Directory.Packages.props","packages.lock.json"],packageManagers:["NuGet / dotnet"],support:"full",stages:{reconcile:"native",audit:"native",test:"native",build:"native"},requiredToolFamilies:["dotnet"]},{id:"jvm-maven",ecosystem:"JVM / Maven",manifests:["pom.xml"],lockfiles:[],packageManagers:["Maven Wrapper","Maven"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["mvnw or mvn","governed Doctor audit"],limitation:"A project-specific dependency audit command must be declared by Doctor evidence."},{id:"jvm-gradle",ecosystem:"JVM / Gradle",manifests:["build.gradle.kts","build.gradle"],lockfiles:["gradle.lockfile","gradle/libs.versions.toml"],packageManagers:["Gradle Wrapper","Gradle"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["gradlew or gradle","governed Doctor audit"],limitation:"A project-specific dependency audit command must be declared by Doctor evidence."},{id:"clojure",ecosystem:"Clojure",manifests:["deps.edn","project.clj"],lockfiles:[],packageManagers:["Clojure CLI","Leiningen"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"conditional",build:"conditional"},requiredToolFamilies:["clojure or lein","governed project audit"],limitation:"Tests and builds run only when the selected Clojure project surface declares a deterministic entrypoint."},{id:"scala-sbt",ecosystem:"Scala / sbt",manifests:["build.sbt"],lockfiles:[],packageManagers:["sbt"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["sbt","governed project audit"],limitation:"A project-specific dependency audit command must be declared by Doctor evidence."}];function M(){return {schemaVersion:R,owner:"Workspai CLI",workflow:["plan","preconditions","approval","target-precondition","checkpoint","execute","reconcile","audit","test","build","target-producer-verify","canonical-verify","close-or-rollback-or-decision"],invariants:{multiAdapterProjects:true,missingTools:"decision-required",unsupportedEcosystems:"decision-required",silentFallbackToModelExecution:false,mutationAuthority:"cli-only",targetClosure:"selected-causal-action-set",changeReceipt:"checkpoint-hash-delta",consumerTimeline:"durable-transaction-events",typedDecisionCauses:true,consumerHandshakeRequired:true,ephemeralProposalsAreEvidence:false,approvalBoundToPlanHash:true,canonicalVerificationRequired:true,rollbackConflictDetection:true},consumerProtocol:{protocolVersion:y,versionProbe:{args:["--version","--json"],schemaVersion:"rapidkit-version-v1"},capabilityProbe:{args:["workspace","repair","capabilities","--json"],schemaVersion:R},invocation:{command:"workspace repair",workspaceResolution:["process-cwd","--workspace"],actions:["capabilities","plan","propose","approve","decide","execute","resume","status","list","rollback","cancel"]},contracts:{operationResult:a$1,proposal:m,transaction:g},transientPaths:[".workspai/repair/inbox/*.json",".workspai/repair/engine.lock"]},adapters:w}}export{v as a,b,g as c,h as d,E as e,m as f,I as g,R as h,w as i,M as j};
1
+ import {a as a$1}from'./chunk-FPJNWPKU.js';import {f,e as e$1,g as g$1,i}from'./chunk-HH54C3XJ.js';var v="workspai.studio-card-repair-capabilities.v1",k="npx workspai workspace verify --json",r=e$1,a=i;function e(f,n,c,o={}){return {cardId:f,scope:o.scope??"workspace",producerCommand:n,producerArtifact:c,verifyCommand:n,verifyArtifact:c,aggregateVerifyCommand:k,targetClosure:"exact-producer-and-causal-action-set",workspacePosture:"reported-separately",repairPolicy:o.repairPolicy??"refresh-producer",remediationArtifacts:o.remediationArtifacts??[]}}var b=[e("doctor","npx workspai doctor workspace --json",r.doctor,{repairPolicy:"diagnose-and-repair",remediationArtifacts:[a.doctorRemediationPlan,a.artifactRemediationPlan]}),e("projectDoctor","npx workspai doctor project --json",a.doctorProject,{scope:"project",repairPolicy:"diagnose-and-repair",remediationArtifacts:[a.doctorRemediationPlan,a.artifactRemediationPlan]}),e("pipeline","npx workspai pipeline --json --strict",a.pipelineLastRun,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("analyze","npx workspai analyze --json",r.analyze,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("readiness","npx workspai readiness --json",r.readiness,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("bootstrap","npx workspai bootstrap --ci --json",a.bootstrapCompliance,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("workspaceSync","npx workspai workspace sync --json",a.workspaceRegistry),e("foundation","npx workspai workspace foundation ensure --json",".workspai/workspace.json"),e("contract","npx workspai workspace contract verify --strict --json",r.contractVerify,{repairPolicy:"source-repair-then-produce"}),e("autopilot","npx workspai autopilot release --json",a.autopilotReleaseLastRun,{repairPolicy:"source-repair-then-produce"}),e("workspaceRun","npx workspai workspace run test --json",a.workspaceRunLast,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("setup","npx workspai setup --json",".workspai/toolchain.lock",{repairPolicy:"source-repair-then-produce"}),e("importReadiness","npx workspai doctor project --json",a.doctorProject,{scope:"project",repairPolicy:"diagnose-and-repair",remediationArtifacts:[a.artifactRemediationPlan]}),e("snapshot","npx workspai snapshot create --json",".workspai/reports/snapshot-last-run.json"),e("workspaceModel","npx workspai workspace model --json --write",r.model),e("intelligenceSnapshot","npx workspai workspace snapshot --json",r.snapshot),e("workspaceDiff",`npx workspai workspace diff --from ${r.snapshot} --json`,r.diff),e("workspaceImpact",`npx workspai workspace impact --from ${r.diff} --json`,r.impact),e("workspaceIntelligenceRun","npx workspai workspace intelligence run --for-agent generic --strict --json",r.intelligenceRun,{repairPolicy:"source-repair-then-produce"}),e("workspaceVerify",k,r.verify,{repairPolicy:"source-repair-then-produce",remediationArtifacts:[a.artifactRemediationPlan]}),e("workspaceExplain","npx workspai workspace explain release-blocked --json --write",r.explain),e("workspaceWhy","npx workspai workspace why release-blocked --json --write",a.workspaceWhy),e("workspaceTrace",`npx workspai workspace trace --from ${r.diff} --json --write`,a.workspaceTrace),e("workspaceWatch","npx workspai workspace watch --once --json",r.model),e("workspaceContextAgent","npx workspai workspace context --for-agent --json --write",r.agentContext),e("agentGrounding","npx workspai workspace agent-sync --write --refresh-context --json --preset enterprise --target vscode",r.agentCustomizationPack),e("share",`npx workspai workspace share --output ${a.workspaceShareBundle} --json`,a.workspaceShareBundle),e("archive","npx workspai workspace export --output team-workspace.workspai-archive.zip --json",".workspai/archive-manifest.json"),e("mirror","npx workspai mirror status --json",a.mirrorOps),e("cache","npx workspai cache status --json",".workspai/cache-config.yml"),e("policy","npx workspai workspace policy show --json",".workspai/policies.yml",{repairPolicy:"source-repair-then-produce"}),e("infra","npx workspai infra plan --json",a.infraPlan,{repairPolicy:"source-repair-then-produce"})];var g=f.repairTransaction,h=e$1.repairTransaction,E=g$1.repairTransaction;var m="workspai.workspace-repair-proposal.v1",I="contracts/workspace-intelligence/workspace-repair-proposal.v1.json";var R="workspai.workspace-repair-capabilities.v1",y="workspai.workspace-repair-consumer-protocol.v1",w=[{id:"node",ecosystem:"JavaScript / TypeScript",manifests:["package.json"],lockfiles:["package-lock.json","npm-shrinkwrap.json","pnpm-lock.yaml","yarn.lock","bun.lock","bun.lockb"],packageManagers:["npm","pnpm","yarn","bun"],support:"full",stages:{reconcile:"native",audit:"native",test:"declared",build:"declared"},requiredToolFamilies:["selected package manager"]},{id:"python",ecosystem:"Python",manifests:["pyproject.toml","requirements.txt"],lockfiles:["uv.lock","poetry.lock","requirements.txt"],packageManagers:["uv","poetry","pip"],support:"conditional",stages:{reconcile:"conditional",audit:"conditional",test:"conditional",build:"declared"},requiredToolFamilies:["isolated Python","selected environment manager","pip-audit or governed Doctor audit"],limitation:"A bounded isolated environment and an installed audit surface are required."},{id:"go",ecosystem:"Go",manifests:["go.mod"],lockfiles:["go.sum"],packageManagers:["go modules"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["go","govulncheck"],limitation:"govulncheck must be installed; the engine never fetches an unreviewed tool."},{id:"rust",ecosystem:"Rust",manifests:["Cargo.toml"],lockfiles:["Cargo.lock"],packageManagers:["cargo"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["cargo","cargo-audit"],limitation:"The cargo-audit subcommand must already be installed."},{id:"php-composer",ecosystem:"PHP",manifests:["composer.json"],lockfiles:["composer.lock"],packageManagers:["composer"],support:"full",stages:{reconcile:"native",audit:"native",test:"declared",build:"declared"},requiredToolFamilies:["composer"]},{id:"ruby-bundler",ecosystem:"Ruby",manifests:["Gemfile"],lockfiles:["Gemfile.lock"],packageManagers:["bundler"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"declared",build:"declared"},requiredToolFamilies:["bundle","bundle-audit"],limitation:"bundle-audit and the declared Rake tasks must already exist."},{id:"elixir-mix",ecosystem:"Elixir",manifests:["mix.exs"],lockfiles:["mix.lock"],packageManagers:["mix"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["mix","Hex audit task"],limitation:"The project must expose the Hex audit task used by its dependency policy."},{id:"deno",ecosystem:"Deno",manifests:["deno.json","deno.jsonc"],lockfiles:["deno.lock"],packageManagers:["deno"],support:"full",stages:{reconcile:"native",audit:"native",test:"declared",build:"declared"},requiredToolFamilies:["deno"]},{id:"dotnet",ecosystem:".NET",manifests:["*.sln","*.csproj","*.fsproj","*.vbproj"],lockfiles:["Directory.Packages.props","packages.lock.json"],packageManagers:["NuGet / dotnet"],support:"full",stages:{reconcile:"native",audit:"native",test:"native",build:"native"},requiredToolFamilies:["dotnet"]},{id:"jvm-maven",ecosystem:"JVM / Maven",manifests:["pom.xml"],lockfiles:[],packageManagers:["Maven Wrapper","Maven"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["mvnw or mvn","governed Doctor audit"],limitation:"A project-specific dependency audit command must be declared by Doctor evidence."},{id:"jvm-gradle",ecosystem:"JVM / Gradle",manifests:["build.gradle.kts","build.gradle"],lockfiles:["gradle.lockfile","gradle/libs.versions.toml"],packageManagers:["Gradle Wrapper","Gradle"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["gradlew or gradle","governed Doctor audit"],limitation:"A project-specific dependency audit command must be declared by Doctor evidence."},{id:"clojure",ecosystem:"Clojure",manifests:["deps.edn","project.clj"],lockfiles:[],packageManagers:["Clojure CLI","Leiningen"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"conditional",build:"conditional"},requiredToolFamilies:["clojure or lein","governed project audit"],limitation:"Tests and builds run only when the selected Clojure project surface declares a deterministic entrypoint."},{id:"scala-sbt",ecosystem:"Scala / sbt",manifests:["build.sbt"],lockfiles:[],packageManagers:["sbt"],support:"conditional",stages:{reconcile:"native",audit:"conditional",test:"native",build:"native"},requiredToolFamilies:["sbt","governed project audit"],limitation:"A project-specific dependency audit command must be declared by Doctor evidence."}];function M(){return {schemaVersion:R,owner:"Workspai CLI",workflow:["plan","preconditions","approval","target-precondition","checkpoint","execute","reconcile","audit","test","build","target-producer-verify","canonical-verify","close-or-rollback-or-decision"],invariants:{multiAdapterProjects:true,missingTools:"decision-required",unsupportedEcosystems:"decision-required",silentFallbackToModelExecution:false,mutationAuthority:"cli-only",targetClosure:"selected-causal-action-set",changeReceipt:"checkpoint-hash-delta",consumerTimeline:"durable-transaction-events",typedDecisionCauses:true,consumerHandshakeRequired:true,ephemeralProposalsAreEvidence:false,approvalBoundToPlanHash:true,canonicalVerificationRequired:true,rollbackConflictDetection:true},consumerProtocol:{protocolVersion:y,versionProbe:{args:["--version","--json"],schemaVersion:"rapidkit-version-v1"},capabilityProbe:{args:["workspace","repair","capabilities","--json"],schemaVersion:R},invocation:{command:"workspace repair",workspaceResolution:["process-cwd","--workspace"],actions:["capabilities","plan","propose","approve","decide","execute","resume","status","list","rollback","cancel"]},contracts:{operationResult:a$1,proposal:m,transaction:g},transientPaths:[".workspai/repair/inbox/*.json",".workspai/repair/engine.lock"]},adapters:w}}export{v as a,b,g as c,h as d,E as e,m as f,I as g,R as h,w as i,M as j};
@@ -1 +1 @@
1
- import {f}from'./chunk-5EPPPMAS.js';var i=f.explain,u=["project","release-blocked","blocker","trace"];function s(t){let e=t.trim();if(!e)return null;if(e==="release-blocked")return {kind:"release-blocked"};if(e.startsWith("project:")){let r=e.slice(8).trim();return r?{kind:"project",project:r}:null}if(e.startsWith("blocker:")){let r=e.slice(8).trim();return r?{kind:"blocker",blockerId:r}:null}if(e.startsWith("trace:")){let r=e.slice(6).trim();return r?{kind:"trace",diffRef:r}:null}return {kind:"project",project:e}}function E(t){let e=t.trim();if(!e)return null;if(e.startsWith("trace:")){let n=s(e);return n?.kind==="trace"?n:null}let r=e.replace(/\\/g,"/").trim().toLowerCase();return r.endsWith(".json")||r.includes("workspace-model-diff")||r.startsWith(".rapidkit/")||r.includes("/.rapidkit/")?{kind:"trace",diffRef:e}:null}function A(t){if(!t||typeof t!="object"||Array.isArray(t))return false;let e=t;return e.schemaVersion===i&&typeof e.generatedAt=="string"&&typeof e.summary=="string"&&Array.isArray(e.sections)&&e.target!=null&&typeof e.target=="object"&&!Array.isArray(e.target)&&typeof e.target.kind=="string"}export{i as a,u as b,s as c,E as d,A as e};
1
+ import {f}from'./chunk-HH54C3XJ.js';var i=f.explain,u=["project","release-blocked","blocker","trace"];function s(t){let e=t.trim();if(!e)return null;if(e==="release-blocked")return {kind:"release-blocked"};if(e.startsWith("project:")){let r=e.slice(8).trim();return r?{kind:"project",project:r}:null}if(e.startsWith("blocker:")){let r=e.slice(8).trim();return r?{kind:"blocker",blockerId:r}:null}if(e.startsWith("trace:")){let r=e.slice(6).trim();return r?{kind:"trace",diffRef:r}:null}return {kind:"project",project:e}}function E(t){let e=t.trim();if(!e)return null;if(e.startsWith("trace:")){let n=s(e);return n?.kind==="trace"?n:null}let r=e.replace(/\\/g,"/").trim().toLowerCase();return r.endsWith(".json")||r.includes("workspace-model-diff")||r.startsWith(".rapidkit/")||r.includes("/.rapidkit/")?{kind:"trace",diffRef:e}:null}function A(t){if(!t||typeof t!="object"||Array.isArray(t))return false;let e=t;return e.schemaVersion===i&&typeof e.generatedAt=="string"&&typeof e.summary=="string"&&Array.isArray(e.sections)&&e.target!=null&&typeof e.target=="object"&&!Array.isArray(e.target)&&typeof e.target.kind=="string"}export{i as a,u as b,s as c,E as d,A as e};
@@ -1,2 +1,2 @@
1
- import {b as b$1}from'./chunk-KVSYBHUR.js';import {i,o}from'./chunk-WJVB6SSD.js';import {c}from'./chunk-DIZSHNZ5.js';import {f,g}from'./chunk-VRW6KXNK.js';import {b}from'./chunk-RO73VVHW.js';import {l,k}from'./chunk-MOSXTVPU.js';import {promises}from'fs';import s from'path';import F,{homedir}from'os';import {pathToFileURL}from'url';import f$1 from'process';import T from'fs-extra';function I(e){let o=e.label.indexOf(" \u2014 ");return o>=0?e.label.slice(o+3).trim():e.label.trim()}function L(){let e=c().map(r=>({value:r.id,label:`${j(r.category)} \xB7 ${I(r)}`,hint:`${r.runtime} \xB7 tested baseline`,name:r.label})),t=i().map(r=>({value:r.kitId,label:`Frontend \xB7 ${r.displayName}`,hint:"official \xB7 latest stable",name:`${r.displayName} \u2014 ${r.framework}`})),o$1=o().map(r=>({value:r.kitId,label:`${j(r.category)} \xB7 ${r.displayName}`,hint:`${r.runtimeCandidates.join(" + ")} \xB7 official latest stable`,name:`${r.displayName} \u2014 ${r.category}`})),n=[...e,...t,...o$1].sort((r,i)=>{let a=["Backend","Frontend","Desktop","Extension"],c=r.label?.split(" \xB7 ")[0]??"",p=i.label?.split(" \xB7 ")[0]??"";return a.indexOf(c)-a.indexOf(p)||(r.label??"").localeCompare(i.label??"")});return E(n),n}function j(e){return e.charAt(0).toUpperCase()+e.slice(1)}function E(e){let t=new Set,o=new Set;for(let n of e){let r=n.label??n.name??String(n.value),i=String(n.value);if(t.has(r))throw new Error(`Duplicate kit picker label: ${r}`);if(o.has(i))throw new Error(`Duplicate kit picker value: ${i}`);t.add(r),o.add(i);}}var U=".workspairc.json",A=".rapidkitrc.json",O=["workspai.config.js","workspai.config.mjs","workspai.config.cjs","rapidkit.config.js","rapidkit.config.mjs","rapidkit.config.cjs"],R=["workspai.config.json","rapidkit.config.json"];function $(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="ENOENT"}function h(e,t){let o=t instanceof Error?t.message:String(t),n=e.endsWith(".js")&&/module is not defined in ES module scope/i.test(o)?' CommonJS syntax in a .js config is not valid when the project package uses "type": "module"; rename the file to .cjs or use export default.':"";return `Failed to load Workspai config at ${e}.${n} Cause: ${o}`}async function We(){for(let e of [s.join(F.homedir(),U),s.join(F.homedir(),A)])try{let t=await promises.readFile(e,"utf-8"),o=JSON.parse(t);return f.debug(`Loaded config from ${e}`),o}catch{}return f.debug("No user config found, using defaults"),{}}async function je(e=process.cwd(),t={}){let o=e,n=s.parse(o).root;for(;o!==n;){for(let r of R){let i=s.join(o,r);try{let a=await promises.readFile(i,"utf-8"),c=JSON.parse(a);if(!c||typeof c!="object"||Array.isArray(c))throw new Error("configuration root must be a JSON object");return f.debug(`Loaded data-only Workspai config from ${r}`),c}catch(a){if($(a))continue;throw new Error(h(i,a))}}for(let r of O){let i=s.join(o,r);try{await promises.access(i);}catch(a){if($(a))continue;throw new Error(h(i,a))}if(f.debug(`Found config file: ${i}`),!t.trustExecutableConfig)throw new Error(`Refusing to execute Workspai config at ${i} without explicit trust. Use a data-only workspai.config.json file, pass --trust-config, or set WORKSPAI_TRUST_CONFIG=1.`);try{let c=await import(pathToFileURL(i).href),p=c.default||c;return f.debug(`Loaded Workspai config from ${r}`),p}catch(a){throw new Error(h(i,a))}}o=s.dirname(o);}return f.debug("No Workspai config file found, using defaults"),{}}function Ee(e,t,o){return {author:o.author||t.workspace?.defaultAuthor||e.author,pythonVersion:o.pythonVersion||t.workspace?.pythonVersion||e.pythonVersion,defaultInstallMethod:o.defaultInstallMethod||t.workspace?.installMethod||e.defaultInstallMethod,defaultKit:o.defaultKit||t.projects?.defaultKit||e.defaultKit,skipGit:o.skipGit??t.projects?.skipGit??e.skipGit,license:o.license||e.license,testRapidKitPath:o.testRapidKitPath||e.testRapidKitPath}}function Fe(e){return g("DEV_PATH")||e.testRapidKitPath||void 0}var w=class extends Error{constructor(o,n){super(["Workspai workspaces cannot be nested.",`Target: ${o}`,`Containing workspace: ${n}`,"Choose Managed home or pass --output <path> with a location outside the current workspace."].join(`
1
+ import {b as b$1}from'./chunk-KVSYBHUR.js';import {i,o}from'./chunk-WJVB6SSD.js';import {c}from'./chunk-WP3CXMVA.js';import {f,g}from'./chunk-VRW6KXNK.js';import {b}from'./chunk-RO73VVHW.js';import {l,k}from'./chunk-MOSXTVPU.js';import {promises}from'fs';import s from'path';import F,{homedir}from'os';import {pathToFileURL}from'url';import f$1 from'process';import T from'fs-extra';function I(e){let o=e.label.indexOf(" \u2014 ");return o>=0?e.label.slice(o+3).trim():e.label.trim()}function L(){let e=c().map(r=>({value:r.id,label:`${j(r.category)} \xB7 ${I(r)}`,hint:`${r.runtime} \xB7 tested baseline`,name:r.label})),t=i().map(r=>({value:r.kitId,label:`Frontend \xB7 ${r.displayName}`,hint:"official \xB7 latest stable",name:`${r.displayName} \u2014 ${r.framework}`})),o$1=o().map(r=>({value:r.kitId,label:`${j(r.category)} \xB7 ${r.displayName}`,hint:`${r.runtimeCandidates.join(" + ")} \xB7 official latest stable`,name:`${r.displayName} \u2014 ${r.category}`})),n=[...e,...t,...o$1].sort((r,i)=>{let a=["Backend","Frontend","Desktop","Extension"],c=r.label?.split(" \xB7 ")[0]??"",p=i.label?.split(" \xB7 ")[0]??"";return a.indexOf(c)-a.indexOf(p)||(r.label??"").localeCompare(i.label??"")});return E(n),n}function j(e){return e.charAt(0).toUpperCase()+e.slice(1)}function E(e){let t=new Set,o=new Set;for(let n of e){let r=n.label??n.name??String(n.value),i=String(n.value);if(t.has(r))throw new Error(`Duplicate kit picker label: ${r}`);if(o.has(i))throw new Error(`Duplicate kit picker value: ${i}`);t.add(r),o.add(i);}}var U=".workspairc.json",A=".rapidkitrc.json",O=["workspai.config.js","workspai.config.mjs","workspai.config.cjs","rapidkit.config.js","rapidkit.config.mjs","rapidkit.config.cjs"],R=["workspai.config.json","rapidkit.config.json"];function $(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="ENOENT"}function h(e,t){let o=t instanceof Error?t.message:String(t),n=e.endsWith(".js")&&/module is not defined in ES module scope/i.test(o)?' CommonJS syntax in a .js config is not valid when the project package uses "type": "module"; rename the file to .cjs or use export default.':"";return `Failed to load Workspai config at ${e}.${n} Cause: ${o}`}async function We(){for(let e of [s.join(F.homedir(),U),s.join(F.homedir(),A)])try{let t=await promises.readFile(e,"utf-8"),o=JSON.parse(t);return f.debug(`Loaded config from ${e}`),o}catch{}return f.debug("No user config found, using defaults"),{}}async function je(e=process.cwd(),t={}){let o=e,n=s.parse(o).root;for(;o!==n;){for(let r of R){let i=s.join(o,r);try{let a=await promises.readFile(i,"utf-8"),c=JSON.parse(a);if(!c||typeof c!="object"||Array.isArray(c))throw new Error("configuration root must be a JSON object");return f.debug(`Loaded data-only Workspai config from ${r}`),c}catch(a){if($(a))continue;throw new Error(h(i,a))}}for(let r of O){let i=s.join(o,r);try{await promises.access(i);}catch(a){if($(a))continue;throw new Error(h(i,a))}if(f.debug(`Found config file: ${i}`),!t.trustExecutableConfig)throw new Error(`Refusing to execute Workspai config at ${i} without explicit trust. Use a data-only workspai.config.json file, pass --trust-config, or set WORKSPAI_TRUST_CONFIG=1.`);try{let c=await import(pathToFileURL(i).href),p=c.default||c;return f.debug(`Loaded Workspai config from ${r}`),p}catch(a){throw new Error(h(i,a))}}o=s.dirname(o);}return f.debug("No Workspai config file found, using defaults"),{}}function Ee(e,t,o){return {author:o.author||t.workspace?.defaultAuthor||e.author,pythonVersion:o.pythonVersion||t.workspace?.pythonVersion||e.pythonVersion,defaultInstallMethod:o.defaultInstallMethod||t.workspace?.installMethod||e.defaultInstallMethod,defaultKit:o.defaultKit||t.projects?.defaultKit||e.defaultKit,skipGit:o.skipGit??t.projects?.skipGit??e.skipGit,license:o.license||e.license,testRapidKitPath:o.testRapidKitPath||e.testRapidKitPath}}function Fe(e){return g("DEV_PATH")||e.testRapidKitPath||void 0}var w=class extends Error{constructor(o,n){super(["Workspai workspaces cannot be nested.",`Target: ${o}`,`Containing workspace: ${n}`,"Choose Managed home or pass --output <path> with a location outside the current workspace."].join(`
2
2
  `));this.targetPath=o;this.containingWorkspacePath=n;this.name="NestedWorkspaceCreationError";}targetPath;containingWorkspacePath;code="WORKSPACE_NESTING_NOT_SUPPORTED"};async function _(e){try{return !!await T.stat(e)}catch{return false}}function G(e,t){let o=e.indexOf(t);if(o>=0&&o+1<e.length)return e[o+1];let n=e.find(r=>r.startsWith(`${t}=`));if(n)return n.slice(t.length+1)}function M(e){return e.includes("--here")}async function N(e){let t=s.resolve(e);for(;;){let o=[s.join(t,".workspai-workspace"),s.join(t,".rapidkit-workspace"),s.join(t,".workspai","workspace.json"),s.join(t,".rapidkit","workspace.json")];if((await Promise.all(o.map(_))).some(Boolean))return t;let n=s.dirname(t);if(n===t)return;t=n;}}async function Oe(e){let t=s.resolve(e),o=await N(s.dirname(t));if(o)throw new w(t,o)}async function V(e,t=homedir()){let n=[{value:"managed",label:"Managed home",hint:k(t)}];return await N(e)||n.push({value:"here",label:"Current directory",hint:e}),n}function S(e,t=f$1.cwd()){if(M(e))return s.resolve(t);let o=G(e,"--output");if(o)return s.resolve(o)}function Re(e,t=f$1.cwd()){let o=s.resolve(e),n=s.resolve(t),r=s.relative(n,o);return r.length>0&&!r.startsWith("..")&&!s.isAbsolute(r)?`cd ${r}`:`cd ${o}`}function Te(e,t={}){let o=t.argv??[],n=t.outputParent??S(o,f$1.cwd());return l(e.trim(),{homeDir:t.homeDir,outputDir:n})}function _e(e,t,o={}){return e?s.resolve(e)===s.resolve(t)?true:o.outputParent===void 0:false}async function Ge(e,t={}){let o=t.cwd??f$1.cwd(),n=t.homeDir??homedir(),r=S(e,o);if(r!==void 0)return r;let i=t.hasYes??(e.includes("--yes")||e.includes("-y"));if(!(t.interactive??(!i&&!!f$1.stdin.isTTY&&!b())))return;let c=await V(o,n);if(c.length===1)return;let{location:p}=await b$1([{type:"rawlist",name:"location",message:"Where should the workspace be created?",choices:c,default:0}]);if(p==="here")return s.resolve(o)}export{L as a,We as b,je as c,Ee as d,Fe as e,Oe as f,Re as g,Te as h,_e as i,Ge as j};
@@ -1 +1 @@
1
- import {f,l}from'./chunk-5ZA4JYOP.js';import {a,b}from'./chunk-S5KTATOU.js';function u(r){let s=new Map;for(let n of r.projects)s.has(n.name)||s.set(n.name,f(n));return s}function w(r){let s=u(r),n=l(r)??{nodes:r.projects.map(t=>({id:t.name,path:t.path})),edges:[]},a$1=a(n),o=new Map;for(let t of n.nodes){let e=s.get(t.id)??f({missing:t.id}),l=[...b(a$1,[t.id],{direction:"dependencies"}).keys()].filter(c=>c!==t.id).sort((c,f)=>c.localeCompare(f)).map(c=>({id:c,hash:s.get(c)??"<unknown>"}));o.set(t.id,{id:t.id,ownHash:e,transitiveInputsHash:f({own:e,dependencies:l})});}return o}function y(r,s){if(!s||Object.keys(s).length===0)return {verdict:"unknown",baseline:"none",changed:[],added:[],removed:[]};let n=[],a=[];for(let[e,i]of r.entries())e in s?s[e]!==i.transitiveInputsHash&&n.push(e):a.push(e);let o=[];for(let e of Object.keys(s))r.has(e)||o.push(e);return n.sort((e,i)=>e.localeCompare(i)),a.sort((e,i)=>e.localeCompare(i)),o.sort((e,i)=>e.localeCompare(i)),{verdict:n.length>0||a.length>0||o.length>0?"stale":"fresh",baseline:"recorded",changed:n,added:a,removed:o}}function M(r){let s={};for(let[n,a]of [...r.entries()].sort((o,t)=>o[0].localeCompare(t[0])))s[n]=a.transitiveInputsHash;return s}export{u as a,w as b,y as c,M as d};
1
+ import {f,l}from'./chunk-AUCHMXUZ.js';import {a,b}from'./chunk-S5KTATOU.js';function u(r){let s=new Map;for(let n of r.projects)s.has(n.name)||s.set(n.name,f(n));return s}function w(r){let s=u(r),n=l(r)??{nodes:r.projects.map(t=>({id:t.name,path:t.path})),edges:[]},a$1=a(n),o=new Map;for(let t of n.nodes){let e=s.get(t.id)??f({missing:t.id}),l=[...b(a$1,[t.id],{direction:"dependencies"}).keys()].filter(c=>c!==t.id).sort((c,f)=>c.localeCompare(f)).map(c=>({id:c,hash:s.get(c)??"<unknown>"}));o.set(t.id,{id:t.id,ownHash:e,transitiveInputsHash:f({own:e,dependencies:l})});}return o}function y(r,s){if(!s||Object.keys(s).length===0)return {verdict:"unknown",baseline:"none",changed:[],added:[],removed:[]};let n=[],a=[];for(let[e,i]of r.entries())e in s?s[e]!==i.transitiveInputsHash&&n.push(e):a.push(e);let o=[];for(let e of Object.keys(s))r.has(e)||o.push(e);return n.sort((e,i)=>e.localeCompare(i)),a.sort((e,i)=>e.localeCompare(i)),o.sort((e,i)=>e.localeCompare(i)),{verdict:n.length>0||a.length>0||o.length>0?"stale":"fresh",baseline:"recorded",changed:n,added:a,removed:o}}function M(r){let s={};for(let[n,a]of [...r.entries()].sort((o,t)=>o[0].localeCompare(t[0])))s[n]=a.transitiveInputsHash;return s}export{u as a,w as b,y as c,M as d};
@@ -1 +1 @@
1
- import {f}from'./chunk-VGJVIHHR.js';import s from'path';import p from'fs-extra';var b=4,w="workspace-graph-token-efficiency.v1";function k(e){return Math.ceil(e/b)}function y(e,t){let r=s.resolve(e,t),o=s.relative(e,r);return !o||o.startsWith("..")||s.isAbsolute(o)?null:r}async function C(e){let t=new Map,r=[s.join(e,".workspai","workspace.contract.json"),s.join(e,".rapidkit","workspace.contract.json")];for(let o of r)if(await p.pathExists(o))try{let a=await p.readJson(o);for(let n of a.projects??[])typeof n.relativePath=="string"&&typeof n.externalPath=="string"&&s.isAbsolute(n.externalPath)&&t.set(n.relativePath.replace(/\\/g,"/").replace(/\/$/,""),n.externalPath);break}catch{}return t}function P(e,t,r){if(!t||s.isAbsolute(t))return null;let o=s.resolve(e),a=t.replace(/\\/g,"/");for(let[n,i]of [...r.entries()].sort(([u],[h])=>h.length-u.length))if(a.startsWith(`${n}/`))return y(i,a.slice(n.length+1));return y(o,a)}async function S(e){let t=s.resolve(e.workspacePath),r=f(e.graph,{query:e.query,...e.kind?{kind:e.kind}:{},...e.projectId?{projectId:e.projectId}:{},limit:e.limit,projection:"agent"}),o=[...new Set(e.graph.proofs.map(l=>l.artifact))].sort(),a=[],n=await C(t),i=0,u=0;for(let l of o){let f=P(t,l,n);if(!f){a.push(l);continue}try{let v=await p.readFile(f,"utf8");i+=v.length,u+=1;}catch{a.push(l);}}let h=JSON.stringify(r).length,c=k(i),d=k(h),g=Math.max(0,c-d);return {schemaVersion:w,generatedAt:(e.now??new Date).toISOString(),workspacePath:t,query:e.query,graph:{schemaVersion:e.graph.schemaVersion,sourceArtifact:e.graph.source.artifact,sourceHash:e.graph.source.hash,entityCount:e.graph.entities.length,relationCount:e.graph.relations.length,proofCount:e.graph.proofs.length},methodology:{id:"indexed-corpus-vs-bounded-retrieval.v1",estimated:true,charsPerToken:b,claimBoundary:"Measures retrieval payload reduction against readable proof-source text; it does not claim equivalent answer quality or model-specific billing savings."},corpus:{artifactCount:u,characterCount:i,estimatedTokens:c,unreadableArtifacts:a},retrieval:{matchCount:r.entities.length,characterCount:h,estimatedTokens:d,truncated:r.truncated,payload:r},savings:{estimatedTokensAvoided:g,reductionRatio:d===0?0:Number((c/d).toFixed(2)),reductionPercent:c===0?0:Number((g/c*100).toFixed(2))}}}export{w as a,S as b};
1
+ import {f}from'./chunk-CNWUIXF3.js';import s from'path';import p from'fs-extra';var b=4,w="workspace-graph-token-efficiency.v1";function k(e){return Math.ceil(e/b)}function y(e,t){let r=s.resolve(e,t),o=s.relative(e,r);return !o||o.startsWith("..")||s.isAbsolute(o)?null:r}async function C(e){let t=new Map,r=[s.join(e,".workspai","workspace.contract.json"),s.join(e,".rapidkit","workspace.contract.json")];for(let o of r)if(await p.pathExists(o))try{let a=await p.readJson(o);for(let n of a.projects??[])typeof n.relativePath=="string"&&typeof n.externalPath=="string"&&s.isAbsolute(n.externalPath)&&t.set(n.relativePath.replace(/\\/g,"/").replace(/\/$/,""),n.externalPath);break}catch{}return t}function P(e,t,r){if(!t||s.isAbsolute(t))return null;let o=s.resolve(e),a=t.replace(/\\/g,"/");for(let[n,i]of [...r.entries()].sort(([u],[h])=>h.length-u.length))if(a.startsWith(`${n}/`))return y(i,a.slice(n.length+1));return y(o,a)}async function S(e){let t=s.resolve(e.workspacePath),r=f(e.graph,{query:e.query,...e.kind?{kind:e.kind}:{},...e.projectId?{projectId:e.projectId}:{},limit:e.limit,projection:"agent"}),o=[...new Set(e.graph.proofs.map(l=>l.artifact))].sort(),a=[],n=await C(t),i=0,u=0;for(let l of o){let f=P(t,l,n);if(!f){a.push(l);continue}try{let v=await p.readFile(f,"utf8");i+=v.length,u+=1;}catch{a.push(l);}}let h=JSON.stringify(r).length,c=k(i),d=k(h),g=Math.max(0,c-d);return {schemaVersion:w,generatedAt:(e.now??new Date).toISOString(),workspacePath:t,query:e.query,graph:{schemaVersion:e.graph.schemaVersion,sourceArtifact:e.graph.source.artifact,sourceHash:e.graph.source.hash,entityCount:e.graph.entities.length,relationCount:e.graph.relations.length,proofCount:e.graph.proofs.length},methodology:{id:"indexed-corpus-vs-bounded-retrieval.v1",estimated:true,charsPerToken:b,claimBoundary:"Measures retrieval payload reduction against readable proof-source text; it does not claim equivalent answer quality or model-specific billing savings."},corpus:{artifactCount:u,characterCount:i,estimatedTokens:c,unreadableArtifacts:a},retrieval:{matchCount:r.entities.length,characterCount:h,estimatedTokens:d,truncated:r.truncated,payload:r},savings:{estimatedTokensAvoided:g,reductionRatio:d===0?0:Number((c/d).toFixed(2)),reductionPercent:c===0?0:Number((g/c*100).toFixed(2))}}}export{w as a,S as b};