workspai 0.55.0 → 0.56.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 (167) hide show
  1. package/contracts/artifact-remediation-plan.v1.json +110 -2
  2. package/contracts/cli-runtime-command-inventory.v1.snapshot.json +29 -1
  3. package/contracts/doctor-project-evidence.v1.json +68 -2
  4. package/contracts/doctor-remediation-plan.v1.json +29 -2
  5. package/contracts/doctor-workspace-evidence.v1.json +68 -2
  6. package/contracts/extension-cli-compatibility.v1.json +6 -1
  7. package/contracts/published-contract-catalog.v1.json +25 -0
  8. package/contracts/runtime-command-surface.v1.json +63 -0
  9. package/contracts/workspace-intelligence/doctor-capabilities.v1.json +133 -0
  10. package/contracts/workspace-intelligence/doctor-diagnosis.v1.json +273 -0
  11. package/contracts/workspace-intelligence/doctor-graph-diagnosis.v1.json +3 -0
  12. package/contracts/workspace-intelligence/doctor-receipt.v1.json +136 -0
  13. package/contracts/workspace-intelligence/doctor-summary.v1.json +99 -0
  14. package/contracts/workspace-intelligence/doctor-validation.v1.json +109 -0
  15. package/contracts/workspace-intelligence/project-context-agent.v1.json +110 -0
  16. package/contracts/workspace-intelligence/studio-blocker-handoff.v1.json +25 -0
  17. package/contracts/workspace-intelligence/workspace-explain.v1.json +3 -0
  18. package/contracts/workspace-intelligence/workspace-knowledge-graph.v1.json +36 -0
  19. package/contracts/workspace-intelligence/workspace-knowledge-search.v1.json +54 -0
  20. package/contracts/workspace-intelligence/workspace-repair-transaction.v1.json +27 -0
  21. package/contracts/workspace-repair-capabilities.v1.json +1 -0
  22. package/dist/analyze-HJ774J3E.js +1 -0
  23. package/dist/{artifact-remediation-plan-O3YIULQN.js → artifact-remediation-plan-BPLON5VX.js} +1 -1
  24. package/dist/autopilot-release-CH57CGET.js +1 -0
  25. package/dist/capabilities-command-WEOGFCWF.js +1 -0
  26. package/dist/chunk-2647BYBC.js +1 -0
  27. package/dist/chunk-2L4PSZQB.js +1 -0
  28. package/dist/chunk-3U4VLIGW.js +1 -0
  29. package/dist/chunk-5BGPGNRQ.js +2 -0
  30. package/dist/chunk-5EPPPMAS.js +1 -0
  31. package/dist/{chunk-M5ICGR55.js → chunk-5RL254O2.js} +1 -1
  32. package/dist/chunk-5ZA4JYOP.js +1 -0
  33. package/dist/{chunk-AMB42V2F.js → chunk-64JUYYRC.js} +1 -1
  34. package/dist/chunk-664GXRLD.js +1 -0
  35. package/dist/chunk-6HCAGHCY.js +8 -0
  36. package/dist/chunk-7PNARN6S.js +4 -0
  37. package/dist/chunk-7Y3KVZJF.js +8 -0
  38. package/dist/{chunk-WIO6L24E.js → chunk-ADL3CK44.js} +1 -1
  39. package/dist/chunk-AO2ZI42U.js +4 -0
  40. package/dist/chunk-BDN32Y2N.js +81 -0
  41. package/dist/chunk-D4RST2HE.js +1 -0
  42. package/dist/{chunk-6HJJHEL6.js → chunk-DIZSHNZ5.js} +1 -1
  43. package/dist/chunk-DOIZANFA.js +2 -0
  44. package/dist/{chunk-HY3RMPW5.js → chunk-E53BGUOW.js} +1 -1
  45. package/dist/{chunk-FZCYTRBQ.js → chunk-ESWFBSYM.js} +1 -1
  46. package/dist/chunk-GBMCHFOV.js +1 -0
  47. package/dist/{chunk-HUPLAFZQ.js → chunk-HASVV34S.js} +1 -1
  48. package/dist/chunk-IZLEMTES.js +1 -0
  49. package/dist/chunk-KR7CIEQR.js +1 -0
  50. package/dist/chunk-KS4FB5W7.js +6 -0
  51. package/dist/chunk-LYVDRRDO.js +2 -0
  52. package/dist/chunk-NHTLE3WN.js +1 -0
  53. package/dist/chunk-NS53IPAC.js +1 -0
  54. package/dist/{chunk-WZA5ISAQ.js → chunk-OX53L237.js} +6 -6
  55. package/dist/chunk-PKIRVQLG.js +1 -0
  56. package/dist/chunk-QAF26ZQX.js +36 -0
  57. package/dist/{chunk-NWQ5VWUW.js → chunk-QFCKHUEP.js} +1 -1
  58. package/dist/chunk-QRWWYL52.js +88 -0
  59. package/dist/chunk-QTCZPS5I.js +1 -0
  60. package/dist/{chunk-WSAFBPS5.js → chunk-SV2SP22H.js} +4 -4
  61. package/dist/chunk-T5YRFRJV.js +1 -0
  62. package/dist/chunk-UQEQ6CXU.js +1 -0
  63. package/dist/chunk-V5EYVQ63.js +1 -0
  64. package/dist/chunk-VGJVIHHR.js +1 -0
  65. package/dist/{chunk-MRFN5ZQP.js → chunk-W5ZFXKSL.js} +1 -1
  66. package/dist/chunk-WLCBXCZV.js +5 -0
  67. package/dist/chunk-WOTTSPSF.js +2 -0
  68. package/dist/chunk-X7FYEKLI.js +1 -0
  69. package/dist/chunk-XH7PDHBF.js +1 -0
  70. package/dist/{chunk-KFKZOPZC.js → chunk-XMTLKDPP.js} +1 -1
  71. package/dist/chunk-YJTEMJFV.js +3 -0
  72. package/dist/chunk-YM77FQB3.js +8 -0
  73. package/dist/chunk-ZCPT6KC3.js +6 -0
  74. package/dist/chunk-ZPA6ECBJ.js +7 -0
  75. package/dist/{create-3NSOY7CA.js → create-DLUWG46F.js} +1 -1
  76. package/dist/doctor-IZ4YOCYE.js +1 -0
  77. package/dist/index.d.ts +15 -0
  78. package/dist/index.js +168 -168
  79. package/dist/pipeline-IBQYDLFF.js +5 -0
  80. package/dist/{project-intelligence-lens-ZOAWXYC5.js → project-intelligence-lens-SIU7IXKG.js} +1 -1
  81. package/dist/project-test-coverage-FRMVYTFB.js +1 -0
  82. package/dist/verified-goal-M4GPOXNL.js +1 -0
  83. package/dist/{workspace-C4UETGY7.js → workspace-3AAOUELG.js} +1 -1
  84. package/dist/{workspace-agent-sync-446AXPHJ.js → workspace-agent-sync-QGYLY7HH.js} +1 -1
  85. package/dist/{workspace-archive-VHUPOBAV.js → workspace-archive-BA3ONVXX.js} +1 -1
  86. package/dist/{workspace-context-XSECHC7O.js → workspace-context-JCLPRYNC.js} +1 -1
  87. package/dist/workspace-contract-IUUPBQXU.js +1 -0
  88. package/dist/workspace-explain-CZGBVDE6.js +1 -0
  89. package/dist/workspace-explain-contract-KVQO57RC.js +1 -0
  90. package/dist/{workspace-feedback-WXE7NVMV.js → workspace-feedback-PCZKXG5R.js} +1 -1
  91. package/dist/{workspace-foundation-3EVAQ5X6.js → workspace-foundation-7IGMO4CW.js} +1 -1
  92. package/dist/{workspace-graph-stream-AJPS45FD.js → workspace-graph-stream-5YMLJXAJ.js} +1 -1
  93. package/dist/workspace-graph-token-efficiency-HK4KNWWP.js +1 -0
  94. package/dist/{workspace-history-YY7YRDOH.js → workspace-history-CHJOABME.js} +1 -1
  95. package/dist/{workspace-intelligence-FWRB47EJ.js → workspace-intelligence-XHSUFTAT.js} +1 -1
  96. package/dist/workspace-intelligence-evaluation-YMY3C5AW.js +1 -0
  97. package/dist/{workspace-intelligence-runner-GLC666ER.js → workspace-intelligence-runner-EN5V4KSC.js} +1 -1
  98. package/dist/workspace-intelligence-runtime-registry-NCVHKCMP.js +1 -0
  99. package/dist/workspace-knowledge-graph-VWQTIEYK.js +1 -0
  100. package/dist/{workspace-knowledge-graph-query-EKHIE3E2.js → workspace-knowledge-graph-query-TXA3KVUV.js} +1 -1
  101. package/dist/workspace-knowledge-graph-snapshot-WB62AVDK.js +1 -0
  102. package/dist/workspace-mcp-serve-NCAGGWQS.js +3 -0
  103. package/dist/{workspace-model-MNJOGBPP.js → workspace-model-NXFIKX26.js} +1 -1
  104. package/dist/{workspace-onboarding-5KO7Z7AD.js → workspace-onboarding-OP22NHQ4.js} +1 -1
  105. package/dist/{workspace-readme-4S6PJ74A.js → workspace-readme-IVJXSIBS.js} +1 -1
  106. package/dist/{workspace-registry-summary-GPJEL7K7.js → workspace-registry-summary-A5VDPRHU.js} +1 -1
  107. package/dist/workspace-repair-engine-N4KXNSVL.js +3 -0
  108. package/dist/workspace-run-PXKC3ELS.js +1 -0
  109. package/dist/{workspace-verify-C6HWHRLJ.js → workspace-verify-TUVLFPPN.js} +1 -1
  110. package/dist/{workspace-watch-DLPHLF5R.js → workspace-watch-2ZNOYSUQ.js} +1 -1
  111. package/docs/commands-reference.md +35 -6
  112. package/docs/contracts/ARTIFACT_CATALOG.md +6 -1
  113. package/docs/contracts/README.md +5 -0
  114. package/docs/doctor-command.md +158 -7
  115. package/docs/graph-benchmark-methodology.md +13 -0
  116. package/docs/workspace-intelligence-runner.md +4 -0
  117. package/docs/workspace-knowledge-graph.md +53 -4
  118. package/docs/workspace-run.md +14 -3
  119. package/package.json +10 -3
  120. package/dist/analyze-AAZEJ4FC.js +0 -1
  121. package/dist/autopilot-release-EZXOGAVE.js +0 -1
  122. package/dist/chunk-2PY65U6X.js +0 -5
  123. package/dist/chunk-3DONU3DU.js +0 -1
  124. package/dist/chunk-44VJHNZB.js +0 -1
  125. package/dist/chunk-4GPKQFPY.js +0 -1
  126. package/dist/chunk-5XDPQ3CB.js +0 -1
  127. package/dist/chunk-7AR5PDLD.js +0 -1
  128. package/dist/chunk-7KKP7RNB.js +0 -3
  129. package/dist/chunk-7T4TSV5C.js +0 -1
  130. package/dist/chunk-B5AY55A5.js +0 -1
  131. package/dist/chunk-BQ24743S.js +0 -5
  132. package/dist/chunk-BYVTHIC3.js +0 -2
  133. package/dist/chunk-CEIJIFY7.js +0 -88
  134. package/dist/chunk-EBKYSDCX.js +0 -1
  135. package/dist/chunk-FQLB4BIC.js +0 -7
  136. package/dist/chunk-GDU7VP6G.js +0 -1
  137. package/dist/chunk-H7P7SSUW.js +0 -75
  138. package/dist/chunk-KJYLCZRI.js +0 -8
  139. package/dist/chunk-KVUYAYTY.js +0 -8
  140. package/dist/chunk-MQ73VS4E.js +0 -2
  141. package/dist/chunk-NYHVCFBT.js +0 -1
  142. package/dist/chunk-OUBBBC7T.js +0 -36
  143. package/dist/chunk-P7K5RHJC.js +0 -2
  144. package/dist/chunk-PS5F4DCT.js +0 -1
  145. package/dist/chunk-QZ7PNMVP.js +0 -1
  146. package/dist/chunk-RA24WQLF.js +0 -1
  147. package/dist/chunk-RMXXK64P.js +0 -4
  148. package/dist/chunk-S7Z4DP3P.js +0 -2
  149. package/dist/chunk-SJLUE6AY.js +0 -1
  150. package/dist/chunk-TEHQ7XKK.js +0 -3
  151. package/dist/chunk-UFOCUHG3.js +0 -1
  152. package/dist/chunk-WD2XDMGB.js +0 -1
  153. package/dist/chunk-XVRJVKOX.js +0 -1
  154. package/dist/doctor-UEFFNAUD.js +0 -1
  155. package/dist/pipeline-ZYKDWUKK.js +0 -5
  156. package/dist/project-test-coverage-44ZPCOPV.js +0 -1
  157. package/dist/verified-goal-PE2PGAHF.js +0 -1
  158. package/dist/workspace-contract-AYFTZIKM.js +0 -1
  159. package/dist/workspace-explain-SZI2WAAD.js +0 -1
  160. package/dist/workspace-explain-contract-N2XQHAPM.js +0 -1
  161. package/dist/workspace-graph-token-efficiency-5FNH4JZ5.js +0 -1
  162. package/dist/workspace-intelligence-evaluation-UP2K3L35.js +0 -1
  163. package/dist/workspace-intelligence-runtime-registry-MRSF7RTT.js +0 -1
  164. package/dist/workspace-knowledge-graph-BMMM2FUE.js +0 -1
  165. package/dist/workspace-mcp-serve-COA4FMCA.js +0 -3
  166. package/dist/workspace-repair-engine-NMKOWUQP.js +0 -3
  167. package/dist/workspace-run-2DEVJOVH.js +0 -1
@@ -0,0 +1,6 @@
1
+ import {a}from'./chunk-GR6442P7.js';import o from'fs';import s from'path';var g={nextjs:{key:"nextjs",runtime:"node",displayName:"Next.js",supportTier:"extended",importStack:"nextjs",aliases:["next","nextjs","next.js"],dependencyHints:["next"],scriptHints:["next dev","next build","next start"],fileHints:["next.config.js","next.config.mjs","next.config.ts"]},remix:{key:"remix",runtime:"node",displayName:"Remix",supportTier:"extended",importStack:"remix",aliases:["remix"],dependencyHints:["@remix-run/react","@remix-run/node","@remix-run/dev"],scriptHints:["remix dev","remix vite:dev"],fileHints:["remix.config.js","remix.config.mjs"]},nuxt:{key:"nuxt",runtime:"node",displayName:"Nuxt",supportTier:"extended",importStack:"nuxt",aliases:["nuxt","nuxtjs","nuxt.js"],dependencyHints:["nuxt","nuxt3"],scriptHints:["nuxt dev","nuxt build","nuxi dev","nuxi build"],fileHints:["nuxt.config.js","nuxt.config.ts","nuxt.config.mjs"]},react:{key:"react",runtime:"node",displayName:"React",supportTier:"extended",importStack:"react",aliases:["react"],dependencyHints:["react","react-dom"],scriptHints:["react-scripts start","react-scripts build"],fileHints:[]},vite:{key:"vite",runtime:"node",displayName:"Vite",supportTier:"extended",importStack:"vite",aliases:["vite"],dependencyHints:["vite"],scriptHints:["vite","vite dev","vite build"],fileHints:["vite.config.js","vite.config.ts","vite.config.mjs"]},vue:{key:"vue",runtime:"node",displayName:"Vue",supportTier:"extended",importStack:"vue",aliases:["vue","vuejs","vue.js"],dependencyHints:["vue","@vue/cli-service"],scriptHints:["vue-cli-service serve","vue-cli-service build"],fileHints:["vue.config.js"]},sveltekit:{key:"sveltekit",runtime:"node",displayName:"SvelteKit",supportTier:"extended",importStack:"sveltekit",aliases:["sveltekit","svelte-kit"],dependencyHints:["@sveltejs/kit"],scriptHints:["svelte-kit dev","svelte-kit build"],fileHints:["svelte.config.js"]},svelte:{key:"svelte",runtime:"node",displayName:"Svelte",supportTier:"extended",importStack:"svelte",aliases:["svelte"],dependencyHints:["svelte"],scriptHints:["svelte"],fileHints:[]},angular:{key:"angular",runtime:"node",displayName:"Angular",supportTier:"extended",importStack:"angular",aliases:["angular","@angular/core"],dependencyHints:["@angular/core","@angular/cli"],scriptHints:["ng serve","ng build"],fileHints:["angular.json"]},astro:{key:"astro",runtime:"node",displayName:"Astro",supportTier:"extended",importStack:"astro",aliases:["astro"],dependencyHints:["astro"],scriptHints:["astro dev","astro build"],fileHints:["astro.config.js","astro.config.ts","astro.config.mjs"]},solid:{key:"solid",runtime:"node",displayName:"Solid",supportTier:"extended",importStack:"solid",aliases:["solid","solidjs","solid-js"],dependencyHints:["solid-js"],scriptHints:[],fileHints:[]},unknown:{key:"unknown",runtime:"unknown",displayName:"Unknown frontend",supportTier:"observed",importStack:"unknown",aliases:["unknown"],dependencyHints:[],scriptHints:[],fileHints:[]}},_={nextjs:{dev:["dev"],start:["start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},remix:{dev:["dev"],start:["start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},nuxt:{dev:["dev"],start:["start","preview"],build:["build"],test:["test"],lint:["lint"],format:["format"]},react:{dev:["dev","start"],start:["serve"],build:["build"],test:["test"],lint:["lint"],format:["format"]},vite:{dev:["dev"],start:["preview","start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},vue:{dev:["dev","serve"],start:["preview","start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},sveltekit:{dev:["dev"],start:["start","preview"],build:["build"],test:["test"],lint:["lint"],format:["format"]},svelte:{dev:["dev"],start:["preview","start"],build:["build"],test:["test"],lint:["lint"],format:["format"]},angular:{dev:["start","serve"],start:["serve"],build:["build"],test:["test"],lint:["lint"],format:["format"]},astro:{dev:["dev"],start:["start","preview"],build:["build"],test:["test"],lint:["lint"],format:["format"]},solid:{dev:["dev"],start:["preview","start"],build:["build"],test:["test"],lint:["lint"],format:["format"]}};function te(e,n){let t=typeof e=="string"?T(e):e;return t==="unknown"?[]:_[t]?.[n]??[]}function A(e){try{return o.existsSync(e)?JSON.parse(o.readFileSync(e,"utf8")):null}catch{return null}}function I(e){let n=A(s.join(e,"package.json"));if(!n)return {dependencies:{},scriptText:""};let t={...n.dependencies??{},...n.devDependencies??{},...n.peerDependencies??{}},i=n.scripts??{},l=Object.values(i).filter(d=>typeof d=="string").join(" ").toLowerCase();return {dependencies:t,scriptText:l}}function O(e,n){return n.some(t=>o.existsSync(s.join(e,t)))}function F(e){return e.vite?e.react||e["react-dom"]||e["@vitejs/plugin-react"]?"react":e.vue||e["@vitejs/plugin-vue"]?"vue":e.svelte||e["@sveltejs/vite-plugin-svelte"]?"svelte":e["solid-js"]||e["vite-plugin-solid"]?"solid":null:null}function y(e,n,t){let i=g[e]??g.unknown;return {key:i.key,runtime:i.runtime,displayName:i.displayName,supportTier:i.supportTier,importStack:i.importStack,confidence:n,source:t}}function ie(e){return g[e]??g.unknown}function T(e){let n=(e??"").trim().toLowerCase().replace(/[_\s]+/g,"-");if(!n)return "unknown";for(let t of Object.values(g))if(t.aliases.includes(n))return t.key;return "unknown"}function B(e,n){let t=T(typeof n?.framework=="string"?n.framework:typeof n?.kit_name=="string"?n.kit_name:typeof n?.kit=="string"?n.kit:void 0);if(t!=="unknown")return y(t,"high","framework");let{dependencies:i,scriptText:l}=I(e);for(let d of ["nextjs","remix","nuxt","sveltekit","angular","astro","vue","solid","vite","react","svelte"]){let c=g[d];if(c.dependencyHints.some(u=>i[u])){if(d==="vite"){let u=F(i);if(u)return y(u,"high","manifest")}return y(d,"high","manifest")}if(c.fileHints.length>0&&O(e,c.fileHints)){if(d==="vite"){let u=F(i);if(u)return y(u,"high","manifest")}return y(d,"high","manifest")}if(c.scriptHints.some(u=>l.includes(u)))return y(d,"medium","manifest")}return y("unknown","low","unknown")}var x={fastapi:{key:"fastapi",runtime:"python",displayName:"FastAPI",supportTier:"first-class",importStack:"fastapi",aliases:["fastapi"],kitPrefixes:["fastapi"]},django:{key:"django",runtime:"python",displayName:"Django",supportTier:"extended",importStack:"django",aliases:["django"]},flask:{key:"flask",runtime:"python",displayName:"Flask",supportTier:"extended",importStack:"flask",aliases:["flask"]},python:{key:"python",runtime:"python",displayName:"Python",supportTier:"observed",importStack:"unknown",aliases:["python"]},nestjs:{key:"nestjs",runtime:"node",displayName:"NestJS",supportTier:"first-class",importStack:"nestjs",aliases:["nestjs","nest"],kitPrefixes:["nestjs"]},nextjs:{key:"nextjs",runtime:"node",displayName:"Next.js",supportTier:"extended",importStack:"nextjs",aliases:["nextjs","next.js","next"]},remix:{key:"remix",runtime:"node",displayName:"Remix",supportTier:"extended",importStack:"remix",aliases:["remix"]},nuxt:{key:"nuxt",runtime:"node",displayName:"Nuxt",supportTier:"extended",importStack:"nuxt",aliases:["nuxt","nuxtjs","nuxt.js"]},react:{key:"react",runtime:"node",displayName:"React",supportTier:"extended",importStack:"react",aliases:["react"]},vite:{key:"vite",runtime:"node",displayName:"Vite",supportTier:"extended",importStack:"vite",aliases:["vite"]},vue:{key:"vue",runtime:"node",displayName:"Vue",supportTier:"extended",importStack:"vue",aliases:["vue","vuejs","vue.js"]},sveltekit:{key:"sveltekit",runtime:"node",displayName:"SvelteKit",supportTier:"extended",importStack:"sveltekit",aliases:["sveltekit","svelte-kit"]},svelte:{key:"svelte",runtime:"node",displayName:"Svelte",supportTier:"extended",importStack:"svelte",aliases:["svelte"]},angular:{key:"angular",runtime:"node",displayName:"Angular",supportTier:"extended",importStack:"angular",aliases:["angular","@angular/core"]},astro:{key:"astro",runtime:"node",displayName:"Astro",supportTier:"extended",importStack:"astro",aliases:["astro"]},solid:{key:"solid",runtime:"node",displayName:"Solid",supportTier:"extended",importStack:"solid",aliases:["solid","solidjs","solid-js"]},express:{key:"express",runtime:"node",displayName:"Express",supportTier:"extended",importStack:"express",aliases:["express"]},fastify:{key:"fastify",runtime:"node",displayName:"Fastify",supportTier:"extended",importStack:"unknown",aliases:["fastify"]},koa:{key:"koa",runtime:"node",displayName:"Koa",supportTier:"extended",importStack:"koa",aliases:["koa"]},node:{key:"node",runtime:"node",displayName:"Node.js",supportTier:"observed",importStack:"unknown",aliases:["node","nodejs","typescript","javascript"]},gofiber:{key:"gofiber",runtime:"go",displayName:"Go/Fiber",supportTier:"extended",importStack:"go",aliases:["gofiber","fiber","go-fiber","go/fiber"],kitPrefixes:["gofiber"]},gogin:{key:"gogin",runtime:"go",displayName:"Go/Gin",supportTier:"extended",importStack:"go",aliases:["gogin","gin","go-gin","go/gin"],kitPrefixes:["gogin"]},echo:{key:"echo",runtime:"go",displayName:"Echo",supportTier:"extended",importStack:"go",aliases:["echo"]},go:{key:"go",runtime:"go",displayName:"Go",supportTier:"observed",importStack:"go",aliases:["go","golang"],kitPrefixes:["go"]},springboot:{key:"springboot",runtime:"java",displayName:"Spring Boot",supportTier:"extended",importStack:"springboot",aliases:["springboot","spring","spring-boot"],kitPrefixes:["springboot"]},java:{key:"java",runtime:"java",displayName:"Java",supportTier:"observed",importStack:"unknown",aliases:["java"]},laravel:{key:"laravel",runtime:"php",displayName:"Laravel",supportTier:"extended",importStack:"unknown",aliases:["laravel"]},symfony:{key:"symfony",runtime:"php",displayName:"Symfony",supportTier:"extended",importStack:"unknown",aliases:["symfony"]},php:{key:"php",runtime:"php",displayName:"PHP",supportTier:"observed",importStack:"unknown",aliases:["php"]},rails:{key:"rails",runtime:"ruby",displayName:"Ruby on Rails",supportTier:"extended",importStack:"rails",aliases:["rails","ruby-on-rails","ruby on rails"]},sinatra:{key:"sinatra",runtime:"ruby",displayName:"Sinatra",supportTier:"extended",importStack:"unknown",aliases:["sinatra"]},ruby:{key:"ruby",runtime:"ruby",displayName:"Ruby",supportTier:"observed",importStack:"unknown",aliases:["ruby"]},dotnet:{key:"dotnet",runtime:"dotnet",displayName:"ASP.NET Core",supportTier:"extended",importStack:"dotnet",aliases:["dotnet","asp.net","aspnet","asp.net core","csharp","c#"],kitPrefixes:["dotnet","aspnet","aspnetcore"]},actix:{key:"actix",runtime:"rust",displayName:"Actix-web",supportTier:"extended",importStack:"unknown",aliases:["actix","actix-web"]},axum:{key:"axum",runtime:"rust",displayName:"Axum",supportTier:"extended",importStack:"unknown",aliases:["axum"]},rocket:{key:"rocket",runtime:"rust",displayName:"Rocket",supportTier:"extended",importStack:"unknown",aliases:["rocket"]},rust:{key:"rust",runtime:"rust",displayName:"Rust",supportTier:"observed",importStack:"unknown",aliases:["rust"]},phoenix:{key:"phoenix",runtime:"elixir",displayName:"Phoenix",supportTier:"extended",importStack:"unknown",aliases:["phoenix"]},elixir:{key:"elixir",runtime:"elixir",displayName:"Elixir",supportTier:"observed",importStack:"unknown",aliases:["elixir"]},clojure:{key:"clojure",runtime:"clojure",displayName:"Clojure",supportTier:"extended",importStack:"unknown",aliases:["clojure"]},scala:{key:"scala",runtime:"scala",displayName:"Scala",supportTier:"extended",importStack:"unknown",aliases:["scala"]},kotlin:{key:"kotlin",runtime:"kotlin",displayName:"Kotlin",supportTier:"extended",importStack:"unknown",aliases:["kotlin"]},deno:{key:"deno",runtime:"deno",displayName:"Deno",supportTier:"extended",importStack:"unknown",aliases:["deno"]},bun:{key:"bun",runtime:"bun",displayName:"Bun",supportTier:"extended",importStack:"unknown",aliases:["bun"]},tauri:{key:"tauri",runtime:"node",displayName:"Tauri",supportTier:"extended",importStack:"unknown",aliases:["tauri","tauri-app"],kitPrefixes:["desktop.tauri"]},electron:{key:"electron",runtime:"node",displayName:"Electron",supportTier:"extended",importStack:"unknown",aliases:["electron","electron-forge"],kitPrefixes:["desktop.electron"]},"vscode-extension":{key:"vscode-extension",runtime:"node",displayName:"VS Code Extension",supportTier:"extended",importStack:"unknown",aliases:["vscode-extension","visual-studio-code-extension"],kitPrefixes:["extension.vscode"]},c:{key:"c",runtime:"c",displayName:"C",supportTier:"observed",importStack:"unknown",aliases:["c","clang","gcc"]},cpp:{key:"cpp",runtime:"cpp",displayName:"C++",supportTier:"observed",importStack:"unknown",aliases:["cpp","c++","cplusplus","cc","clang++","g++"]},unknown:{key:"unknown",runtime:"unknown",displayName:"Unknown",supportTier:"observed",importStack:"unknown",aliases:["unknown"]}},C=new Map;for(let e of Object.values(x))for(let n of e.aliases)C.set(n,e.key);function r(e,n,t){let i=x[e]??x.unknown;return {key:i.key,runtime:i.runtime,displayName:i.displayName,supportTier:i.supportTier,importStack:i.importStack,confidence:n,source:t}}function H(e){return e.trim().toLowerCase().replace(/[_\s]+/g,"-")}function m(e){try{return o.existsSync(e)?o.readFileSync(e,"utf8").toLowerCase():""}catch{return ""}}function K(e){try{return o.existsSync(e)?JSON.parse(o.readFileSync(e,"utf8")):null}catch{return null}}var G=new Set([".git",".hg",".svn",".workspai",".rapidkit",".venv","venv","node_modules","vendor","dist","build","target","coverage",".next",".cache"]);function S(e,n){if(n<0||!o.existsSync(e))return [];let t=[],i=[];try{i=o.readdirSync(e,{withFileTypes:true});}catch{return []}for(let l of i){let d=s.join(e,l.name);l.isDirectory()?t.push(...S(d,n-1)):t.push(d);}return t}function D(e,n){if(n<0||!o.existsSync(e))return [];let t=[];try{t=o.readdirSync(e,{withFileTypes:true});}catch{return []}let i=[];for(let l of t){let d=s.join(e,l.name);if(l.isDirectory()){if(G.has(l.name)||a(l.name))continue;i.push(...D(d,n-1));}else i.push(d);}return i}function p(e,n,t=2){return S(e,t).some(i=>i.toLowerCase().endsWith(n.toLowerCase()))}function R(e,n,t=2){return S(e,t).filter(i=>i.toLowerCase().endsWith(n.toLowerCase()))}function M(e){let n=H(e??"");if(!n)return "unknown";for(let t of Object.values(x))if(t.kitPrefixes?.some(i=>n.startsWith(i)))return t.key;return "unknown"}function w(e){return e?C.get(H(e))??"unknown":"unknown"}function ce(e){return w(e)}function le(e){let n=w(e);return n!=="unknown"?x[n].runtime:"unknown"}function V(e){let n=M(e.kitName);if(n!=="unknown")return r(n,"high","kit");let t=w(e.framework);if(t!=="unknown")return r(t,"high","framework");let i=w(e.runtime);return i!=="unknown"?r(i,"medium","runtime"):r("unknown","low","unknown")}function z(e){let n=K(s.join(e,"package.json"));if(!n)return r("unknown","low","unknown");let t={...n.dependencies??{},...n.devDependencies??{}},i=n.scripts??{},l=Object.values(i).filter(d=>typeof d=="string").join(" ").toLowerCase();return t["@nestjs/core"]||l.includes("nest start")?r("nestjs","high","manifest"):t.express?r("express","high","manifest"):t.fastify?r("fastify","high","manifest"):t.koa?r("koa","high","manifest"):r("node","medium","marker")}function q(e){let n=K(s.join(e,"package.json"));if(!n)return r("unknown","low","unknown");let t={...n.dependencies??{},...n.devDependencies??{}},i=n.engines??{},l=n.scripts??{},d=Object.values(l).filter(c=>typeof c=="string").join(" ").toLowerCase();return t["@tauri-apps/api"]||t["@tauri-apps/cli"]||o.existsSync(s.join(e,"src-tauri","Cargo.toml"))?r("tauri","high","manifest"):t.electron||t["@electron-forge/cli"]||d.includes("electron-forge")||d.includes("electron ")?r("electron","high","manifest"):typeof i.vscode=="string"&&(n.activationEvents!==void 0||n.contributes!==void 0)?r("vscode-extension","high","manifest"):r("unknown","low","unknown")}function W(e){let n=[m(s.join(e,"pyproject.toml")),m(s.join(e,"requirements.txt")),m(s.join(e,"requirements.in"))].join(`
2
+ `);return n.includes("fastapi")?r("fastapi","high","manifest"):n.includes("django")?r("django","high","manifest"):n.includes("flask")?r("flask","high","manifest"):n.trim()?r("python","medium","marker"):r("unknown","low","unknown")}function U(e){let n=[m(s.join(e,"go.mod")),m(s.join(e,"main.go"))].join(`
3
+ `);return n.includes("github.com/gofiber/fiber")?r("gofiber","high","manifest"):n.includes("github.com/gin-gonic/gin")?r("gogin","high","manifest"):n.includes("github.com/labstack/echo")?r("echo","high","manifest"):n.trim()?r("go","medium","marker"):r("unknown","low","unknown")}function Y(e){let n=[m(s.join(e,"pom.xml")),m(s.join(e,"build.gradle")),m(s.join(e,"build.gradle.kts"))].join(`
4
+ `);return n.includes("spring-boot")||n.includes("org.springframework")?r("springboot","high","manifest"):n.trim()?r("java","medium","marker"):r("unknown","low","unknown")}function $(e){let n=m(s.join(e,"composer.json"));return n.includes("laravel/framework")?r("laravel","high","manifest"):n.includes("symfony/")?r("symfony","high","manifest"):n.trim()?r("php","medium","marker"):r("unknown","low","unknown")}function Q(e){let n=m(s.join(e,"Gemfile"));return n.includes("gem 'rails'")||n.includes('gem "rails"')?r("rails","high","manifest"):n.includes("gem 'sinatra'")||n.includes('gem "sinatra"')?r("sinatra","high","manifest"):n.trim()?r("ruby","medium","marker"):r("unknown","low","unknown")}function X(e){let t=[...R(e,".csproj",3),...R(e,".sln",2)].map(i=>m(i)).join(`
5
+ `);return t.includes("microsoft.net.sdk.web")||t.includes("microsoft.aspnetcore")||t.includes("swashbuckle.aspnetcore")?r("dotnet","high","manifest"):t.trim()?r("dotnet","medium","marker"):r("unknown","low","unknown")}function Z(e){let n=m(s.join(e,"Cargo.toml"));return n.includes("actix-web")?r("actix","high","manifest"):n.includes("axum")?r("axum","high","manifest"):n.includes("rocket")?r("rocket","high","manifest"):n.trim()?r("rust","medium","marker"):r("unknown","low","unknown")}function J(e){let n=m(s.join(e,"mix.exs"));return n.includes("phoenix")?r("phoenix","high","manifest"):n.trim()?r("elixir","medium","marker"):r("unknown","low","unknown")}function P(e){let n=[],t=i=>{n.includes(i)||n.push(i);};return o.existsSync(s.join(e,"go.mod"))&&t("go"),(o.existsSync(s.join(e,"Cargo.toml"))||o.existsSync(s.join(e,"src-tauri","Cargo.toml")))&&t("rust"),(o.existsSync(s.join(e,"pom.xml"))||o.existsSync(s.join(e,"build.gradle"))||o.existsSync(s.join(e,"build.gradle.kts")))&&t("java"),o.existsSync(s.join(e,"mix.exs"))&&t("elixir"),o.existsSync(s.join(e,"composer.json"))&&t("php"),(p(e,".csproj")||p(e,".sln"))&&t("dotnet"),o.existsSync(s.join(e,"package.json"))&&t("node"),o.existsSync(s.join(e,"Gemfile"))&&t("ruby"),(o.existsSync(s.join(e,"pyproject.toml"))||o.existsSync(s.join(e,"setup.py"))||o.existsSync(s.join(e,"requirements.txt"))||o.existsSync(s.join(e,"requirements.in")))&&t("python"),(o.existsSync(s.join(e,"deps.edn"))||o.existsSync(s.join(e,"project.clj")))&&t("clojure"),o.existsSync(s.join(e,"build.sbt"))&&t("scala"),(o.existsSync(s.join(e,"deno.json"))||o.existsSync(s.join(e,"deno.jsonc")))&&t("deno"),(o.existsSync(s.join(e,"bun.lockb"))||o.existsSync(s.join(e,"bun.lock")))&&t("bun"),(o.existsSync(s.join(e,"CMakeLists.txt"))||o.existsSync(s.join(e,"meson.build"))||p(e,".cpp",3)||p(e,".cc",3)||p(e,".cxx",3)||p(e,".hpp",3)||p(e,".hh",3)||p(e,".hxx",3))&&t("cpp"),(p(e,".c",3)||p(e,".h",3))&&t("c"),(o.existsSync(s.join(e,"settings.gradle.kts"))||p(s.join(e,"src"),".kt",3)||m(s.join(e,"build.gradle.kts")).includes("kotlin"))&&t("kotlin"),n}function me(e,n=4){let t=D(e,Math.max(0,Math.min(12,n))),i=new Set(t.map(k=>s.basename(k))),l=t.map(k=>k.toLowerCase()),d=[],c=k=>{d.includes(k)||d.push(k);},u=(...k)=>k.some(a=>i.has(a)),f=(...k)=>l.some(a=>k.some(v=>a.endsWith(v)));return u("go.mod")&&c("go"),u("Cargo.toml")&&c("rust"),u("pom.xml","build.gradle","build.gradle.kts")&&c("java"),u("mix.exs")&&c("elixir"),u("composer.json")&&c("php"),f(".csproj",".sln")&&c("dotnet"),u("package.json")&&c("node"),u("Gemfile")&&c("ruby"),u("pyproject.toml","setup.py","requirements.txt","requirements.in")&&c("python"),u("deps.edn","project.clj")&&c("clojure"),u("build.sbt")&&c("scala"),u("deno.json","deno.jsonc")&&c("deno"),u("bun.lockb","bun.lock")&&c("bun"),(u("CMakeLists.txt","meson.build")||f(".cpp",".cc",".cxx",".hpp",".hh",".hxx"))&&c("cpp"),f(".c",".h")&&c("c"),(u("settings.gradle.kts")||f(".kt")||t.some(k=>s.basename(k)==="build.gradle.kts"&&m(k).includes("kotlin")))&&c("kotlin"),d}function ke(e,n){let t=V({framework:typeof n?.framework=="string"?n.framework:void 0,runtime:typeof n?.runtime=="string"?n.runtime:void 0,kitName:typeof n?.kit_name=="string"?n.kit_name:typeof n?.kit=="string"?n.kit:void 0});if(t.key!=="unknown")return t;let i=P(e),l=m(s.join(e,"CMakeLists.txt")),d=m(s.join(e,"meson.build")),c=l.trim().length>0||d.trim().length>0,u=p(e,".cpp",3)||p(e,".cc",3)||p(e,".cxx",3),f=p(e,".c",3),k=/(?:\bcxx\b|\bcplusplus\b|\bc\+\+\b)/u.test(`${l}
6
+ ${d}`);if(c&&i.includes("cpp")&&(u||k))return r("cpp","high","manifest");if(c&&i.includes("c")&&f&&!u&&!k)return r("c","high","manifest");if(i.includes("bun"))return r("bun","high","marker");if(i.includes("deno"))return r("deno","high","marker");if(i.includes("kotlin"))return r("kotlin","medium","marker");if(i.includes("node")){let a=q(e);if(a.key!=="unknown")return a;let v=B(e,n);if(v.key!=="unknown")return v;let j=z(e);if(j.key!=="unknown")return j}if(i.includes("python")){let a=W(e);if(a.key!=="unknown")return a}if(i.includes("go")){let a=U(e);if(a.key!=="unknown")return a}if(i.includes("java")){let a=Y(e);if(a.key!=="unknown")return a}if(i.includes("php")){let a=$(e);if(a.key!=="unknown")return a}if(i.includes("ruby")){let a=Q(e);if(a.key!=="unknown")return a}if(i.includes("rust")){let a=Z(e);if(a.key!=="unknown")return a}if(i.includes("elixir")){let a=J(e);if(a.key!=="unknown")return a}if(i.includes("dotnet")){let a=X(e);if(a.key!=="unknown")return a}return i.includes("clojure")?r("clojure","medium","marker"):i.includes("scala")?r("scala","medium","marker"):i.includes("c")&&f&&!u?r("c","medium","marker"):i.includes("cpp")?r("cpp","medium","marker"):i.includes("c")?r("c","medium","marker"):i.length>0?r(w(i[0]),"medium","runtime"):r("unknown","low","unknown")}export{te as a,ie as b,T as c,B as d,ce as e,le as f,V as g,P as h,me as i,ke as j};
@@ -0,0 +1,7 @@
1
+ import {a}from'./chunk-A5FBGRJA.js';import {a as a$1}from'./chunk-AFIFZTOY.js';import {i as i$1,h}from'./chunk-5EPPPMAS.js';import {j,u,e,a as a$2,t,f as f$1}from'./chunk-MOSXTVPU.js';import {s}from'./chunk-RJIYCDVC.js';import b from'crypto';import P from'fs';import d from'fs/promises';import i from'path';import T from'fs-extra';var x=h.projectWorkspaceLink.schemaVersion,L="workspai.project-workspace-link",l=class extends Error{constructor(r,a,o={}){super(a);this.code=r;this.context=o;this.name="ProjectWorkspaceResolutionError";}code;context};function $(e){return P.existsSync(i.join(e,".workspai-workspace"))?".workspai-workspace":".workspai/workspace.json"}function _(e){return b.createHash("sha256").update([e.workspaceName,a(e.workspacePath),e.projectName,a(e.projectPath),e.relativePath.replace(/\\/g,"/"),e.relationship].join("\0")).digest("hex")}function I(e){let t=i.resolve(e);for(;;){if(j(t))return t;let r=i.dirname(t);if(r===t)return null;t=r;}}function J(e){let t$1=i.resolve(e);for(;;){if([...t(t$1,"project.json"),...t(t$1,"context.json")].some(a=>P.existsSync(a)))return t$1;let r=i.dirname(t$1);if(r===t$1)return null;t$1=r;}}function y(e){return JSON.parse(P.readFileSync(e,"utf8"))}function K(e){let t=y(e);if(!t||typeof t!="object"||Array.isArray(t))throw new l("project.workspace.link-invalid",`Project workspace link is not a JSON object: ${e}`,{linkPath:e});let r=t;if(r.schemaVersion!==x||r.kind!==L||r.state!=="active"||!r.workspace||typeof r.workspace.name!="string"||r.workspace.name.trim().length===0||typeof r.workspace.root!="string"||!i.isAbsolute(r.workspace.root)||![".workspai-workspace",".workspai/workspace.json"].includes(r.workspace.marker??"")||r.workspace.contract!==i$1.workspaceContract||!r.project||typeof r.project.name!="string"||r.project.name.trim().length===0||typeof r.project.relativePath!="string"||i.isAbsolute(r.project.relativePath)||r.project.relativePath.split(/[\\/]/).includes("..")||!["managed","adopted","imported","linked","restored"].includes(r.project.relationship??"")||!r.integrity||r.integrity.algorithm!=="sha256"||typeof r.integrity.binding!="string"||!/^[a-f0-9]{64}$/.test(r.integrity.binding))throw new l("project.workspace.link-invalid",`Project workspace link does not satisfy ${x}: ${e}`,{linkPath:e});try{a$1(t,"contracts/project-workspace-link.v1.json","Project workspace link");}catch(a){throw new l("project.workspace.link-invalid",`Project workspace link does not satisfy ${x}: ${e}`,{linkPath:e,validationError:a instanceof Error?a.message:String(a)})}return r}function f(e,t){let r=i.join(e,".workspai","workspace.contract.json");if(!P.existsSync(r))return null;try{let a$1=y(r);if(!Array.isArray(a$1.projects))return false;let o=a(t);return a$1.projects.some(n=>typeof n.externalPath=="string"?a(n.externalPath)===o:typeof n.relativePath!="string"||n.relativePath.startsWith("external/")?false:a(i.resolve(e,n.relativePath))===o)}catch{return false}}function M(e,t,r){let a$1=a(e),o=new Map;for(let n of s(t,r)){if(!P.existsSync(n))continue;let c;try{c=y(n);}catch{continue}if(Array.isArray(c.workspaces))for(let p of c.workspaces){if(!p||typeof p.name!="string"||typeof p.path!="string"||!Array.isArray(p.projects)||!p.projects.some(w=>w&&typeof w.path=="string"&&a(w.path)===a$1))continue;let s=a(p.path);!j(s)||f(s,e)!==true||o.set(s,{name:p.name,path:s});}}return [...o.values()].sort((n,c)=>n.path.localeCompare(c.path))}function m(e,t){if(e)throw t;return null}function te(e$1){let t=e$1.strict===true,r=i.resolve(e$1.startPath),a=e$1.explicitWorkspacePath?i.resolve(e$1.explicitWorkspacePath):null,o=J(r);if(a)return j(a)?e$1.requireProjectMembership===true&&o&&f(a,o)!==true?m(t,new l("project.workspace.membership-missing",`Project is not registered in the explicit workspace contract: ${a}`,{workspacePath:a,projectPath:o})):{workspacePath:a,projectPath:o,source:"explicit",linkPath:o?u(o,e):null,recovered:false}:m(t,new l("project.workspace.explicit-invalid",`Explicit workspace path is not a Workspai workspace: ${a}`,{workspacePath:a,projectPath:o}));let n=I(r);if(n)return e$1.requireProjectMembership===true&&o&&f(n,o)!==true?m(t,new l("project.workspace.membership-missing",`Project is not registered in its parent workspace contract: ${n}`,{workspacePath:n,projectPath:o})):{workspacePath:n,projectPath:o,source:"parent",linkPath:o?u(o,e):null,recovered:false};if(!o)return m(t,new l("project.workspace.unlinked","No Workspai project or workspace could be resolved from the current directory.",{startPath:r}));let c=u(o,e),p=null;if(P.existsSync(c)){let s;try{s=K(c);}catch(O){if(t)throw O;return null}let u=_({workspaceName:s.workspace.name,workspacePath:s.workspace.root,projectName:s.project.name,projectPath:o,relativePath:s.project.relativePath,relationship:s.project.relationship}),w=f(s.workspace.root,o);if(s.integrity.binding===u&&j(s.workspace.root)&&P.existsSync(i.join(s.workspace.root,s.workspace.marker))&&w===true)return {workspacePath:i.resolve(s.workspace.root),projectPath:o,source:"local-link",linkPath:c,recovered:false};p=s;}let h=M(o,e$1.env??process.env,e$1.platform??process.platform);return h.length>1?m(t,new l("project.workspace.ambiguous",`Project is registered in more than one valid workspace: ${h.map(s=>s.name).join(", ")}. Pass --workspace <path> or run project workspace relink.`,{projectPath:o,candidates:h})):h.length===1?{workspacePath:h[0].path,projectPath:o,source:"registry",linkPath:c,recovered:p!==null}:p?m(t,new l("project.workspace.link-stale",`Project workspace link is stale and no valid registry relocation was found: ${p.workspace.root}`,{projectPath:o,linkPath:c,linkedWorkspacePath:p.workspace.root})):m(t,new l("project.workspace.unlinked","This Workspai project is not linked to a valid workspace. Run `npx workspai adopt .` or `npx workspai project workspace relink --workspace <path>`.",{projectPath:o,linkPath:c}))}async function F(e,t){await d.mkdir(i.dirname(e),{recursive:true});let r=`${e}.${process.pid}.${b.randomUUID()}.tmp`;try{await d.writeFile(r,`${JSON.stringify(t,null,2)}
2
+ `,{encoding:"utf8",mode:384});try{await d.rename(r,e);}catch(a){let o=a.code;if(o!=="EEXIST"&&o!=="EPERM")throw a;await T.move(r,e,{overwrite:true});}}finally{await d.rm(r,{force:true}).catch(()=>{});}}async function D(e){let t=i.join(e,".gitignore"),r=await d.readFile(t,"utf8").catch(c=>{if(c.code==="ENOENT")return "";throw c});if(r.split(/\r?\n/).map(c=>c.trim()).includes(f$1))return;let n=`${r.length>0&&!r.endsWith(`
3
+ `)?`
4
+ `:""}
5
+ # Workspai machine-local workspace binding
6
+ ${f$1}
7
+ `;await d.writeFile(t,`${r}${n}`,"utf8");}async function V(e$1){let t=i.resolve(e$1.workspacePath),r=i.resolve(e$1.projectPath);if(!j(t))throw new l("project.workspace.explicit-invalid",`Cannot link project to an invalid Workspai workspace: ${t}`,{workspacePath:t,projectPath:r});let a$3=i.join(t,".workspai","workspace.contract.json"),o=e$1.workspaceName??i.basename(t),n=e$1.relativePath;if(P.existsSync(a$3)){let h=y(a$3);typeof h.workspace?.name=="string"&&(o=h.workspace.name);let s=a(r),u=h.projects?.find(w=>typeof w.externalPath=="string"?a(w.externalPath)===s:typeof w.relativePath=="string"&&!w.relativePath.startsWith("external/")&&a(i.resolve(t,w.relativePath))===s);u&&typeof u.relativePath=="string"&&(n=u.relativePath);}if(n??=i.relative(t,r).replace(/\\/g,"/"),(!n||n.startsWith(".."))&&(n=`external/${e$1.projectName}`),f(t,r)!==true)throw new l("project.workspace.membership-missing",`Project is not registered in the canonical workspace contract: ${e$1.projectName}`,{workspacePath:t,projectPath:r,projectName:e$1.projectName});let c={schemaVersion:x,kind:L,generatedAt:(e$1.now??new Date).toISOString(),state:"active",workspace:{name:o,root:t,marker:$(t),contract:i$1.workspaceContract},project:{name:e$1.projectName,relativePath:n,relationship:e$1.relationship},integrity:{algorithm:"sha256",binding:_({workspaceName:o,workspacePath:t,projectName:e$1.projectName,projectPath:r,relativePath:n,relationship:e$1.relationship})}};a$1(c,"contracts/project-workspace-link.v1.json","Project workspace link");let p=i.join(r,a$2,e);return await D(r),await F(p,c),{linkPath:p,link:c}}async function oe(e,t$1="linked"){if(!e.projectPath)return null;let r=t(e.projectPath,"project.json").find(o=>P.existsSync(o)),a=i.basename(e.projectPath);if(r)try{let o=y(r);typeof o.name=="string"?a=o.name:typeof o.slug=="string"&&(a=o.slug);}catch{}return V({workspacePath:e.workspacePath,projectPath:e.projectPath,projectName:a,relationship:t$1})}export{l as a,te as b,V as c,oe as d};
@@ -1 +1 @@
1
- export{c as PYTHON_FREE_WORKSPACE_PROFILES,a as buildWorkspaceManifest,f as createProject,g as registerWorkspaceAtPath,d as resolvePythonFreeFallbackProfile,b as syncWorkspaceFoundationFiles,e as writeWorkspaceLauncher}from'./chunk-NWQ5VWUW.js';
1
+ export{c as PYTHON_FREE_WORKSPACE_PROFILES,a as buildWorkspaceManifest,f as createProject,g as registerWorkspaceAtPath,d as resolvePythonFreeFallbackProfile,b as syncWorkspaceFoundationFiles,e as writeWorkspaceLauncher}from'./chunk-QFCKHUEP.js';
@@ -0,0 +1 @@
1
+ export{a as DOCTOR_WORKSPACE_REPORT_PATH,n as applyEnvKeyAddFix,j as applyFileAppendFix,k as applyFileCopyFix,i as applyFileCreateFix,m as applyJsonEditFix,o as applyMakefileTargetFix,h as applyPackageScriptFix,f as assertOperationPathInsideProject,g as assertOperationPathInsideProjectResolved,e as buildRepairOperationIdentity,q as computeDoctorFixAwareExitCode,p as computeDoctorGateExitCode,l as decodeJsonPointerSegment,d as parseInternalRepairCommand,c as parsePackageScriptFix,b as resolveDoctorPolicyProfile,r as runDoctor}from'./chunk-QRWWYL52.js';
package/dist/index.d.ts CHANGED
@@ -55,6 +55,11 @@ declare function getPublishedContractVersions(): {
55
55
  doctorProjectEvidence: "doctor-project-evidence-v1";
56
56
  doctorWorkspaceEvidence: "doctor-workspace-evidence-v1";
57
57
  doctorGraphDiagnosis: "doctor-graph-diagnosis.v1";
58
+ doctorDiagnosis: "workspai.doctor-diagnosis.v1";
59
+ doctorCapabilities: "workspai.doctor-capabilities.v1";
60
+ doctorValidation: "workspai.doctor-validation.v1";
61
+ doctorReceipt: "workspai.doctor-receipt.v1";
62
+ doctorSummary: "workspai.doctor-summary.v1";
58
63
  projectTestCoverage: "workspai.project-test-coverage.v1";
59
64
  verifiedGoal: string;
60
65
  verifiedGoalStatus: "workspai.verified-goal-status.v1";
@@ -248,6 +253,11 @@ declare function getVersionContract(): {
248
253
  doctorProjectEvidence: "doctor-project-evidence-v1";
249
254
  doctorWorkspaceEvidence: "doctor-workspace-evidence-v1";
250
255
  doctorGraphDiagnosis: "doctor-graph-diagnosis.v1";
256
+ doctorDiagnosis: "workspai.doctor-diagnosis.v1";
257
+ doctorCapabilities: "workspai.doctor-capabilities.v1";
258
+ doctorValidation: "workspai.doctor-validation.v1";
259
+ doctorReceipt: "workspai.doctor-receipt.v1";
260
+ doctorSummary: "workspai.doctor-summary.v1";
251
261
  projectTestCoverage: "workspai.project-test-coverage.v1";
252
262
  verifiedGoal: string;
253
263
  verifiedGoalStatus: "workspai.verified-goal-status.v1";
@@ -435,6 +445,11 @@ declare function getGlobalCommandCapabilities(): {
435
445
  doctorProjectEvidence: "doctor-project-evidence-v1";
436
446
  doctorWorkspaceEvidence: "doctor-workspace-evidence-v1";
437
447
  doctorGraphDiagnosis: "doctor-graph-diagnosis.v1";
448
+ doctorDiagnosis: "workspai.doctor-diagnosis.v1";
449
+ doctorCapabilities: "workspai.doctor-capabilities.v1";
450
+ doctorValidation: "workspai.doctor-validation.v1";
451
+ doctorReceipt: "workspai.doctor-receipt.v1";
452
+ doctorSummary: "workspai.doctor-summary.v1";
438
453
  projectTestCoverage: "workspai.project-test-coverage.v1";
439
454
  verifiedGoal: string;
440
455
  verifiedGoalStatus: "workspai.verified-goal-status.v1";