workspai 0.75.2 → 0.76.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 (113) hide show
  1. package/contracts/agent-framework-capabilities.v1.json +2 -2
  2. package/contracts/cli-runtime-command-inventory.v1.snapshot.json +12 -0
  3. package/contracts/create-planner-capabilities.v1.json +24 -0
  4. package/contracts/extension-cli-compatibility.v1.json +4 -2
  5. package/contracts/published-contract-catalog.v1.json +10 -0
  6. package/contracts/runtime-command-surface.v1.json +3 -1
  7. package/contracts/workspace-intelligence/agent-framework-admission-candidate.v2.json +217 -0
  8. package/contracts/workspace-intelligence/agent-framework-conformance-report.v2.json +274 -0
  9. package/contracts/workspace-intelligence-architecture.v1.json +5 -3
  10. package/dist/analyze-QVRVJB7I.js +1 -0
  11. package/dist/autopilot-release-DOGIETAT.js +1 -0
  12. package/dist/capabilities-command-FYBUVHZ7.js +1 -0
  13. package/dist/{chunk-ADHX7D3F.js → chunk-23CNBYIW.js} +1 -1
  14. package/dist/{chunk-IKBE3HOH.js → chunk-2I2A55RE.js} +1 -1
  15. package/dist/{chunk-4JXJRIJM.js → chunk-4BBFEHPL.js} +1 -1
  16. package/dist/{chunk-VHMDWRDG.js → chunk-4BPZJR4Z.js} +4 -4
  17. package/dist/{chunk-KDVNRNDU.js → chunk-4MXKXHLW.js} +1 -1
  18. package/dist/{chunk-JKAAKE4Z.js → chunk-4R44E7HN.js} +1 -1
  19. package/dist/chunk-5S6IZ6PY.js +2 -0
  20. package/dist/chunk-6BO4QHKA.js +1 -0
  21. package/dist/{chunk-VWBWDDU2.js → chunk-AGI46TSQ.js} +1 -1
  22. package/dist/{chunk-GDOO2YZW.js → chunk-BZLDCASY.js} +1 -1
  23. package/dist/{chunk-OA2YJN22.js → chunk-DWDYLKVW.js} +1 -1
  24. package/dist/{chunk-P36TACKN.js → chunk-FBF767WP.js} +1 -1
  25. package/dist/{chunk-PFAGXI3G.js → chunk-FD2ZGGCQ.js} +1 -1
  26. package/dist/chunk-H4YHIOCT.js +7 -0
  27. package/dist/{chunk-ZI54C2AO.js → chunk-HRGIHWYH.js} +1 -1
  28. package/dist/{chunk-LFY7KTPD.js → chunk-IKNWNGLY.js} +1 -1
  29. package/dist/{chunk-ZGVODK5C.js → chunk-KO4DM2AV.js} +1 -1
  30. package/dist/{chunk-FNVWDXK2.js → chunk-KW35SWG6.js} +5 -5
  31. package/dist/{chunk-EP7SUMAX.js → chunk-L6VNI4DN.js} +1 -1
  32. package/dist/chunk-NSC4VWV2.js +1 -0
  33. package/dist/chunk-P5LI5DL3.js +1 -0
  34. package/dist/chunk-PSQPKK6H.js +97 -0
  35. package/dist/chunk-PUH3TSPC.js +1 -0
  36. package/dist/chunk-QFDTKOYS.js +2649 -0
  37. package/dist/chunk-QIPW3G2H.js +1 -0
  38. package/dist/chunk-QVFIR64T.js +10 -0
  39. package/dist/{chunk-FZWLWFR4.js → chunk-R3Z4LY3O.js} +1 -1
  40. package/dist/chunk-RKFTUIZ4.js +4 -0
  41. package/dist/{chunk-COOVCORC.js → chunk-SVO2GGTV.js} +1 -1
  42. package/dist/{chunk-5K4O3TAW.js → chunk-TFFNHWXY.js} +1 -1
  43. package/dist/chunk-TJ3MDZMC.js +6 -0
  44. package/dist/{chunk-WXUCAVFT.js → chunk-UOTOJJI4.js} +8 -8
  45. package/dist/chunk-VODNLROY.js +1 -0
  46. package/dist/{chunk-WHBKKJ7L.js → chunk-X7MDTBX5.js} +1 -1
  47. package/dist/chunk-YLLCZMKP.js +2 -0
  48. package/dist/{chunk-K52IQX3J.js → chunk-Z2M2XCIB.js} +1 -1
  49. package/dist/{chunk-DTNOF3MP.js → chunk-ZXQC36NJ.js} +1 -1
  50. package/dist/{create-ZFSFWAW3.js → create-ZRUQ3KNZ.js} +1 -1
  51. package/dist/{doctor-4KL4XUCS.js → doctor-7V7LJLHX.js} +1 -1
  52. package/dist/{goal-lifecycle-EXQZD7IA.js → goal-lifecycle-EM4DUJCR.js} +1 -1
  53. package/dist/{goal-pack-DKJU2DEP.js → goal-pack-YMWZHAH6.js} +1 -1
  54. package/dist/index.d.ts +12 -6
  55. package/dist/index.js +251 -250
  56. package/dist/{pipeline-4GVAOCEN.js → pipeline-6MBH3MU2.js} +1 -1
  57. package/dist/platform-capabilities-RWOWND5Q.js +1 -0
  58. package/dist/{project-agent-entry-7QKNEEXP.js → project-agent-entry-ZXAE2MAJ.js} +1 -1
  59. package/dist/{project-intelligence-lens-IHRYCLNU.js → project-intelligence-lens-NBTPOK2R.js} +1 -1
  60. package/dist/{project-test-coverage-3P5FH6E5.js → project-test-coverage-HOZC72EK.js} +1 -1
  61. package/dist/proof-carrying-change-WJFAKK3C.js +1 -0
  62. package/dist/{pythonRapidkitExec-UMFLDIYR.js → pythonRapidkitExec-S35OEIEF.js} +1 -1
  63. package/dist/{verified-goal-XI4RQESU.js → verified-goal-B7EX2PBE.js} +1 -1
  64. package/dist/{workspace-EYXAKMVI.js → workspace-EBPYCSEM.js} +1 -1
  65. package/dist/{workspace-agent-sync-SN55KT6N.js → workspace-agent-sync-Y4F6FBBC.js} +1 -1
  66. package/dist/{workspace-context-PW6ESEHH.js → workspace-context-Y7F7GJCQ.js} +1 -1
  67. package/dist/{workspace-contract-FPLFL4G3.js → workspace-contract-XJMWMVQE.js} +1 -1
  68. package/dist/{workspace-explain-TVQ5IF5D.js → workspace-explain-T2J5ZLY7.js} +1 -1
  69. package/dist/{workspace-foundation-DWIJPZRH.js → workspace-foundation-2UP6IMTH.js} +1 -1
  70. package/dist/{workspace-graph-stream-RUTNWLQB.js → workspace-graph-stream-MZVL3OCX.js} +1 -1
  71. package/dist/{workspace-intelligence-4CA2CSPZ.js → workspace-intelligence-FZRQIFFM.js} +1 -1
  72. package/dist/{workspace-intelligence-runner-VM5SXXAT.js → workspace-intelligence-runner-IXT62JG7.js} +1 -1
  73. package/dist/{workspace-knowledge-graph-JXN2ZOAF.js → workspace-knowledge-graph-EFC4TUDZ.js} +1 -1
  74. package/dist/workspace-knowledge-graph-snapshot-QIMF7TCF.js +1 -0
  75. package/dist/{workspace-mcp-serve-4WN4CSD7.js → workspace-mcp-serve-C42UUU7W.js} +1 -1
  76. package/dist/{workspace-model-D4IECQML.js → workspace-model-72SJ6WXT.js} +1 -1
  77. package/dist/{workspace-onboarding-6XWDKLM5.js → workspace-onboarding-TFDAIHTS.js} +1 -1
  78. package/dist/{workspace-registry-summary-Y3ET36NH.js → workspace-registry-summary-ZNTXSUI4.js} +1 -1
  79. package/dist/{workspace-repair-engine-HBUXRHDY.js → workspace-repair-engine-542TAL3Z.js} +1 -1
  80. package/dist/workspace-run-NAPJYNSZ.js +1 -0
  81. package/dist/{workspace-verify-OOAZ3NMZ.js → workspace-verify-UXKENOQU.js} +1 -1
  82. package/dist/{workspace-watch-BNM5B6HU.js → workspace-watch-DV5AHLOK.js} +1 -1
  83. package/docs/README.md +2 -2
  84. package/docs/agent-framework-adapters.md +164 -39
  85. package/docs/ci-workflows.md +29 -22
  86. package/docs/commands-reference.md +17 -8
  87. package/docs/creating-workspaces-and-projects.md +4 -2
  88. package/docs/doctor-command.md +6 -4
  89. package/docs/native-kit-baselines.md +2 -1
  90. package/docs/workspace-run.md +3 -1
  91. package/package.json +3 -1
  92. package/scripts/enterprise-package-smoke.mjs +98 -5
  93. package/dist/analyze-6UEBC5OJ.js +0 -1
  94. package/dist/autopilot-release-H5TO6NYY.js +0 -1
  95. package/dist/capabilities-command-VK3LQLP2.js +0 -1
  96. package/dist/chunk-3N27P3KO.js +0 -7
  97. package/dist/chunk-3RNWBFRP.js +0 -4
  98. package/dist/chunk-66O62XNJ.js +0 -97
  99. package/dist/chunk-7NKM6EHE.js +0 -7
  100. package/dist/chunk-BR6QIYQS.js +0 -1
  101. package/dist/chunk-DFREJHG7.js +0 -1
  102. package/dist/chunk-E42IFQFR.js +0 -6
  103. package/dist/chunk-EWD6QTAM.js +0 -2
  104. package/dist/chunk-G5UCEXP6.js +0 -1
  105. package/dist/chunk-LARREYZN.js +0 -1
  106. package/dist/chunk-RGNCL5OB.js +0 -1
  107. package/dist/chunk-SZHRPELL.js +0 -1
  108. package/dist/chunk-VXFIMEC6.js +0 -2
  109. package/dist/chunk-X7OI24LO.js +0 -418
  110. package/dist/platform-capabilities-DB4BZPTD.js +0 -1
  111. package/dist/proof-carrying-change-O37XUPIZ.js +0 -1
  112. package/dist/workspace-knowledge-graph-snapshot-KBNUXA64.js +0 -1
  113. package/dist/workspace-run-VN7KV4BU.js +0 -1
@@ -0,0 +1 @@
1
+ import {j,m,e}from'./chunk-H4YHIOCT.js';import {u}from'./chunk-VQZ5PI5J.js';import {t}from'./chunk-ODK4LCEL.js';import u$1 from'path';import d from'fs-extra';import {parse}from'yaml';import w from'fs';var F=new Set(["backend","desktop","extension","service","frontend","worker","agent","platform","library","infra","docs","test-suite","unknown"]),O=new Set([".git",".workspai","vendor","node_modules","test","tests","testdata","fixtures","samples","examples","third_party"]),I=new Set([...O,".cache",".venv","build","dist","target"]);async function L(e){let n=0,t=async(o,r)=>{if(r>5)return false;let s;try{s=await d.readdir(o,{withFileTypes:true});}catch{return false}for(let a of s.sort((f,l)=>f.name.localeCompare(l.name))){if(a.isFile()&&a.name==="main.go"){let f=await d.readFile(u$1.join(o,a.name),"utf8").catch(()=>"");if(/^\s*package\s+main\b/m.test(f)&&(n+=1,n>1))return true}if(a.isDirectory()&&!O.has(a.name)&&await t(u$1.join(o,a.name),r+1))return true}return false};return t(e,0)}async function M(e,n){if(n!=="c"&&n!=="cpp")return false;let t=new Set,o=async(r,s)=>{if(s>3||t.size>=3)return;let a;try{a=await d.readdir(r,{withFileTypes:true});}catch{return}for(let f of a)if(f.isFile()){let l=f.name.toLowerCase();l==="cmakelists.txt"||l==="meson.build"?t.add("native"):l==="pyproject.toml"||l==="setup.py"?t.add("python"):l==="description"&&u$1.basename(r).toLowerCase()==="r"?t.add("r"):l.endsWith(".gemspec")?t.add("ruby"):l==="pom.xml"||l==="build.gradle"||l==="build.gradle.kts"?t.add("java"):l==="cargo.toml"?t.add("rust"):l==="go.mod"?t.add("go"):l==="package.json"&&t.add("node");}else f.isDirectory()&&!I.has(f.name)&&await o(u$1.join(r,f.name),s+1);};return await o(e,0),t.has("native")&&t.size>=3}async function K(e){if((((await d.readFile(u$1.join(e,"pom.xml"),"utf8").catch(()=>"")).match(/<modules\b[^>]*>([\s\S]*?)<\/modules>/iu)?.[1]??"").match(/<module\b[^>]*>[^<]+<\/module>/giu)??[]).length>=2)return true;for(let o of ["settings.gradle","settings.gradle.kts"]){let r=await d.readFile(u$1.join(e,o),"utf8").catch(()=>"");if(!r)continue;if(new Set([...r.matchAll(/['"](:[^'"]+)['"]/gu)].map(a=>a[1])).size>=2)return true}return false}async function $(e){for(let n of ["compose.yaml","compose.yml","docker-compose.yaml","docker-compose.yml"]){let t=await d.readFile(u$1.join(e,n),"utf8").catch(()=>"");if(t)try{let r=parse(t)?.services??{},s=Object.entries(r).map(([i,p])=>{let g=(()=>{if(typeof p?.build=="string")return `${p.build}|Dockerfile`;if(!p?.build||typeof p.build!="object")return null;let c=p.build.context;if(typeof c!="string"||c.length===0)return null;let j="dockerfile"in p.build&&typeof p.build.dockerfile=="string"?p.build.dockerfile:"Dockerfile";return `${c}|${j}`})();return g?{serviceName:i,service:p,identity:g.replaceAll("\\","/").replace(/\/$/,"")}:null}).filter(i=>i!==null);if(new Set(s.map(i=>i.identity)).size<2)continue;let f=new Set(s.map(i=>i.serviceName)),l=new Set(s.filter(({service:i})=>Array.isArray(i.ports)&&i.ports.length>0).map(({identity:i})=>i)),y=s.some(({service:i})=>(Array.isArray(i.depends_on)?i.depends_on:i.depends_on&&typeof i.depends_on=="object"?Object.keys(i.depends_on):[]).some(g=>typeof g=="string"&&f.has(g)));if(l.size>=2||y)return true}catch{}}return false}async function A(e){try{if(!await d.pathExists(e))return null;let n=await d.readJSON(e);return n&&typeof n=="object"?n:null}catch{return null}}async function z(e){for(let n of e){let t=await A(n);if(t)return t}return null}function S(e){if(typeof e!="string")return null;let n=e.trim().toLowerCase();return F.has(n)?n==="service"?"backend":n:null}function re(e){switch(e){case "backend":case "service":case "worker":return "backend";case "agent":return "agent";case "frontend":case "desktop":case "extension":case "library":case "platform":return e;case "infra":return "infrastructure";case "docs":return "documentation";case "test-suite":return "quality";default:return "unknown"}}async function oe(e$1,n,t={}){let o=n??await z(u(e$1,"project.json")),r=j(o)?null:o,s=r===null&&o!==null?m(e$1,null):null,a=S(r?.kind)??S(r?.type);if(a)return a==="worker"&&typeof r?.framework=="string"&&(r.framework.trim().toLowerCase()==="microsoft-agent-framework"||r.framework.trim().toLowerCase()==="openai-agents")?"agent":a;let f=typeof r?.kit_name=="string"?r.kit_name:typeof r?.kit=="string"?r.kit:t.kit,l=typeof r?.framework=="string"?r.framework:t.framework??s?.key,y=typeof r?.runtime=="string"?r.runtime:t.runtime??s?.runtime,i=`${typeof f=="string"?f:""} ${l??""} ${y??""}`.trim().toLowerCase();if(await $(e$1))return "platform";if(/\b(tauri|electron|wails|desktop)\b/.test(i))return "desktop";if(/\b(vscode-extension|visual studio code extension|jetbrains-plugin|browser-extension)\b/.test(i))return "extension";let p=await d.readFile(u$1.join(e$1,"Cargo.toml"),"utf8").catch(()=>""),g=/^\s*\[workspace\]\s*$/m.test(p)&&!/^\s*\[package\]\s*$/m.test(p),c=await A(u$1.join(e$1,"package.json"));if(c!==null&&(Array.isArray(c.workspaces)||c.workspaces!==null&&typeof c.workspaces=="object")||g||e(e$1))return "platform";if(/\b(frontend|nextjs|next\.js|react|vue|svelte|vite|angular|astro|remix|nuxt)\b/.test(i))return "frontend";if(/\b(fastapi|nestjs|springboot|spring boot|gofiber|gogin|webapi|django|flask|express|fastify|laravel|rails|phoenix|axum|actix|rocket)\b/.test(i))return "backend";if(c){let m={...c.dependencies??{},...c.devDependencies??{}},D=c.scripts??{},b=Object.values(D).filter(k=>typeof k=="string").join(" ").toLowerCase(),_=c.engines??{},N=Array.isArray(c.categories)?c.categories.filter(k=>typeof k=="string"):[];if(m["@tauri-apps/api"]||m["@tauri-apps/cli"]||await d.pathExists(u$1.join(e$1,"src-tauri","tauri.conf.json"))||await d.pathExists(u$1.join(e$1,"src-tauri","tauri.conf.json5"))||m.electron||m["@electron-forge/cli"]||b.includes("electron-forge")||b.includes("electron "))return "desktop";if(typeof _.vscode=="string"||N.some(k=>k.toLowerCase()==="extension packs")||c.publisher&&(c.activationEvents||c.contributes))return "extension";if(m.next||m.react||m.vue||m.svelte||m.vite||m["@angular/core"]||b.includes("next ")||b.includes("vite "))return "frontend";if(c.private===true&&!m.express&&!m["@nestjs/core"])return "library"}return g||await K(e$1)||await d.pathExists(u$1.join(e$1,"go.work"))||await d.pathExists(u$1.join(e$1,"go.mod"))&&await L(e$1)?"platform":await M(e$1,y)?"library":await d.pathExists(u$1.join(e$1,"compose.yaml"))||await d.pathExists(u$1.join(e$1,"compose.yml"))||await d.pathExists(u$1.join(e$1,"docker-compose.yml"))||await d.pathExists(u$1.join(e$1,"docker-compose.yaml"))||await d.pathExists(u$1.join(e$1,"terraform.tf"))?"infra":"backend"}var B={ci:[".github/workflows",".gitlab-ci.yml",".circleci/config.yml","azure-pipelines.yml","bitbucket-pipelines.yml","cloudbuild.yaml","Jenkinsfile",".buildkite/pipeline.yml","prow"],release:[".changeset",".releaserc",".releaserc.json","release.config.js",".goreleaser.yml",".goreleaser.yaml","RELEASING.md","RELEASE.md","tools/release","scripts/release","docs/release","doc/release","build/release.sh","hack/lib/release.sh"],ownership:[".github/CODEOWNERS",".gitlab/CODEOWNERS","CODEOWNERS","docs/CODEOWNERS","OWNERS","OWNERS_ALIASES","MAINTAINERS"]},J=/(?:^|[-_.])(?:release|publish|publishing|distribution)(?:[-_.]|$)/i,V={ci:/\b(?:prow|buildkite|jenkins|teamcity|travis|external ci|test-infra)\b/i,release:/\b(?:release automation|release engineering|release infrastructure|external release)\b/i,ownership:/\b(?:external ownership|central owners|maintainer team|code owners)\b/i};async function U(e,n){let t=[];for(let o of n)try{await w.promises.access(u$1.join(e,o),w.constants.F_OK),t.push(o);}catch{}return t}async function Y(e,n){let t=["README.md","CONTRIBUTING.md","DEVELOPMENT.md","docs/devel/README.md"],o=[];for(let r of t)try{let s=u$1.join(e,r),a=await w.promises.stat(s);if(!a.isFile()||a.size>1024*1024)continue;let f=await w.promises.readFile(s,"utf8");n.test(f)&&o.push(r);}catch{}return o}async function q(e){let n=u$1.join(e,".github","workflows");try{return (await w.promises.readdir(n,{withFileTypes:true})).filter(o=>o.isFile()&&/\.(?:ya?ml)$/i.test(o.name)&&J.test(o.name)).map(o=>`.github/workflows/${o.name}`).sort()}catch{return []}}function H(e,n){let t$1=e?.[n];return t$1?.mode?{status:t$1.mode==="external"?"external-declared":"repository",provider:t$1.provider?.trim()||null,evidence:[t.workspaceContract],reference:t$1.reference?.trim()||null}:null}async function v(e,n,t){let o=H(n,t);if(o)return o;let r=[...await U(e,B[t]),...t==="release"?await q(e):[]];if(r.length>0)return {status:"repository",provider:null,evidence:r,reference:null};let s=await Y(e,V[t]);return s.length>0?{status:"external-observed",provider:null,evidence:s,reference:null}:{status:"unknown",provider:null,evidence:[],reference:null}}async function ue(e){let[n,t,o]=await Promise.all([v(e.projectPath,e.declaration,"ci"),v(e.projectPath,e.declaration,"release"),v(e.projectPath,e.declaration,"ownership")]);return {schemaVersion:"workspai.project-governance.v1",ci:n,release:t,ownership:o}}export{re as a,oe as b,ue as c};
@@ -0,0 +1 @@
1
+ import {f,h as h$1}from'./chunk-BLEIUQL6.js';import {t as t$1}from'./chunk-VQZ5PI5J.js';import {t,s}from'./chunk-ODK4LCEL.js';import g from'fs';import W from'path';var c=s.workspaceRunLast.schemaVersion,P="workspace-run-last.json",a=t.workspaceRunLast;var _=new Set(["init","test","build","start"]);function C(e){return _.has(e)}async function A(e){try{return await g.promises.access(e,g.constants.F_OK),true}catch{return false}}async function w(e){try{let t=await g.promises.readFile(e,"utf-8");return JSON.parse(t)}catch{return null}}function h(e){return !e||typeof e!="object"||Array.isArray(e)?null:e}function N(e){let t=e.stage;return typeof t!="string"||t.trim().length===0||!Array.isArray(e.projects)?false:C(t)||/^[a-z][a-z0-9_-]*$/i.test(t)}function v(e){let t=h(e);return !t||t.schemaVersion===c?false:N(t)}function j(e){let t=h(e);return t?t.schemaVersion===c&&t.stages!=null:false}function l(e){if(j(e)){let t=e.enterpriseControls;return {...e,projectStages:e.projectStages??t.projectStages,enterpriseControls:t}}if(v(e)){let t=e.stage;return {schemaVersion:c,generatedAt:e.generatedAt,workspacePath:e.workspacePath,latestStage:t,stages:{[t]:e},enterpriseControls:e.enterpriseControls??{jsonReady:true,evidencePath:a}}}return null}function V(e,t){let n=l(e);if(!n)return null;let s=t??n.latestStage;return n.stages[s]??null}async function K(e){let t=(await Promise.all(t$1(W.resolve(e),"reports",P).map(async s=>await A(s)?s:null))).find(s=>typeof s=="string");if(!t)return null;let n=await w(t);return l(n)}function T(e){let t=typeof e.relativePath=="string"?e.relativePath.replace(/\\/g,"/"):"";if(t)return t.toLowerCase();let n=typeof e.path=="string"?e.path.replace(/\\/g,"/"):"";return n?n.toLowerCase():(e.projectName??"").toLowerCase()}async function F(e,t){let n=W.resolve(e);return f(n,a,async()=>{let s=(await Promise.all(t$1(n,"reports",P).map(async r=>await A(r)?r:null))).find(r=>typeof r=="string"),R=s?await w(s):null,o=l(R);if(s&&!o)throw new Error(`Workspace run evidence is unreadable or invalid; refusing to overwrite: ${s}`);let k=o?{...o.stages}:{};k[t.stage]=t;let i={...o?.projectStages??o?.enterpriseControls?.projectStages??{}};for(let r of t.projects){if(!r.selected)continue;let u=T(r);u&&(i[u]={...i[u],[t.stage]:{generatedAt:t.generatedAt,status:r.status,projectName:r.projectName,relativePath:r.relativePath,command:r.executionCommand,exitCode:r.exitCode,runtime:r.runtimeDetected}});}let d={schemaVersion:c,generatedAt:t.generatedAt,workspacePath:t.workspacePath,latestStage:t.stage,stages:k,enterpriseControls:{jsonReady:true,evidencePath:a,projectStages:i}};return await h$1(n,a,d),d})}export{P as a,a as b,V as c,K as d,F as e};