workspai 0.75.0 → 0.75.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analyze-Z3EZNJRI.js +1 -0
- package/dist/autopilot-release-T6XFRWZT.js +1 -0
- package/dist/{chunk-FS3WLRQ4.js → chunk-25V5XMWB.js} +1 -1
- package/dist/{chunk-WOPZX56J.js → chunk-2CT5SN2L.js} +1 -1
- package/dist/{chunk-V5WVGPOP.js → chunk-2GWQ6NZV.js} +1 -1
- package/dist/{chunk-GE46XKD2.js → chunk-2OCJKLTW.js} +1 -1
- package/dist/{chunk-ZW4QV6SB.js → chunk-3WQ5TYCO.js} +1 -1
- package/dist/{chunk-NGU7RYXA.js → chunk-4VSQNSGH.js} +1 -1
- package/dist/{chunk-CGNMS32W.js → chunk-566NQQTJ.js} +1 -1
- package/dist/{chunk-G3ZC5W4U.js → chunk-5EEXLM45.js} +1 -1
- package/dist/{chunk-YP436V7Q.js → chunk-65AE7EC5.js} +1 -1
- package/dist/{chunk-HLSOZOL3.js → chunk-6KMR5PKQ.js} +2 -2
- package/dist/{chunk-J4J3RYCL.js → chunk-6NSJBKKK.js} +1 -1
- package/dist/{chunk-TXVMHEJS.js → chunk-ABUSBLBH.js} +1 -1
- package/dist/{chunk-RX3U7JKF.js → chunk-AICCXYY5.js} +1 -1
- package/dist/{chunk-O2CFT2A3.js → chunk-FU6SQ2ND.js} +1 -1
- package/dist/{chunk-MXI2DWLL.js → chunk-HDISUL3F.js} +1 -1
- package/dist/{chunk-LMOTDLJF.js → chunk-M6DVNC6X.js} +1 -1
- package/dist/{chunk-4KEZQLBU.js → chunk-NGZF4YJS.js} +1 -1
- package/dist/{chunk-CK73SQFF.js → chunk-NI5QWBZK.js} +1 -1
- package/dist/{chunk-NFWUAEVQ.js → chunk-NRIMJMTF.js} +8 -8
- package/dist/{chunk-36VNERGC.js → chunk-QBKOPXKC.js} +1 -1
- package/dist/{chunk-SRCZX2KC.js → chunk-RTD5D35M.js} +1 -1
- package/dist/{chunk-GIFAGOMK.js → chunk-SCKEFXF5.js} +1 -1
- package/dist/{chunk-DT3LRKZQ.js → chunk-UE7ART6X.js} +1 -1
- package/dist/{chunk-P5RZO5BY.js → chunk-VJQPIH2S.js} +35 -35
- package/dist/{chunk-4DX4HBG3.js → chunk-WPPRUFJW.js} +1 -1
- package/dist/{create-7UENFCJK.js → create-P4XJVZCL.js} +1 -1
- package/dist/{doctor-KGADT4PI.js → doctor-PFN6KB6P.js} +1 -1
- package/dist/{goal-lifecycle-HIQGDEEP.js → goal-lifecycle-BDWTWS55.js} +1 -1
- package/dist/{goal-pack-63PEP2ND.js → goal-pack-5JDNZFKV.js} +1 -1
- package/dist/index.js +179 -172
- package/dist/{pipeline-VFI35PR4.js → pipeline-OUYS4ZYV.js} +1 -1
- package/dist/{project-agent-entry-Z3OY3S7T.js → project-agent-entry-75WO3QWP.js} +1 -1
- package/dist/{project-intelligence-lens-YWICXW6P.js → project-intelligence-lens-JCHFOIA7.js} +1 -1
- package/dist/{proof-carrying-change-BAP2C3KV.js → proof-carrying-change-LAYV4LTI.js} +1 -1
- package/dist/{verified-goal-A6WOMNTU.js → verified-goal-75KGBWTE.js} +1 -1
- package/dist/{workspace-PAXTJCMH.js → workspace-CBQDOUSH.js} +1 -1
- package/dist/{workspace-agent-sync-MGCEF4ON.js → workspace-agent-sync-RTOTO3DY.js} +1 -1
- package/dist/{workspace-context-2G6QZ6D3.js → workspace-context-STRZO2N3.js} +1 -1
- package/dist/{workspace-contract-VWPOIYHJ.js → workspace-contract-PMHUUKFM.js} +1 -1
- package/dist/{workspace-explain-HLEBUK4K.js → workspace-explain-CATMJUMN.js} +1 -1
- package/dist/{workspace-foundation-X7LOGTS3.js → workspace-foundation-OULCDCXG.js} +1 -1
- package/dist/{workspace-graph-stream-XGSRDRLI.js → workspace-graph-stream-Q55CI4K4.js} +1 -1
- package/dist/{workspace-intelligence-GFJKIWBX.js → workspace-intelligence-3RPZRWSF.js} +1 -1
- package/dist/{workspace-intelligence-runner-BU6JKNUD.js → workspace-intelligence-runner-BNZUYUUN.js} +1 -1
- package/dist/{workspace-knowledge-graph-OUTCLYS2.js → workspace-knowledge-graph-VJLD35ES.js} +1 -1
- package/dist/workspace-knowledge-graph-snapshot-TQAKDDUA.js +1 -0
- package/dist/{workspace-mcp-serve-JYUKX3YS.js → workspace-mcp-serve-67NTYD67.js} +1 -1
- package/dist/{workspace-model-DUGPW5IB.js → workspace-model-6TKZMNEF.js} +1 -1
- package/dist/{workspace-onboarding-C4CKWTJ3.js → workspace-onboarding-7V7EH3RH.js} +1 -1
- package/dist/{workspace-registry-summary-4KX4QD55.js → workspace-registry-summary-ILVO7DEU.js} +1 -1
- package/dist/{workspace-repair-engine-OVW4J3DI.js → workspace-repair-engine-2VGFB3DJ.js} +1 -1
- package/dist/workspace-run-X7KV6MIT.js +1 -0
- package/dist/{workspace-verify-B7HEFYO6.js → workspace-verify-VQWYDAF2.js} +1 -1
- package/dist/{workspace-watch-TQYAMLIV.js → workspace-watch-2Z636HWS.js} +1 -1
- package/docs/ci-workflows.md +15 -8
- package/docs/commands-reference.md +6 -0
- package/docs/workspace-operations.md +12 -2
- package/package.json +1 -1
- package/dist/analyze-FRQVJ3VJ.js +0 -1
- package/dist/autopilot-release-D3UES53H.js +0 -1
- package/dist/workspace-knowledge-graph-snapshot-XWJRUMAC.js +0 -1
- package/dist/workspace-run-NVQGRZYO.js +0 -1
- /package/dist/{chunk-D4AMCZJU.js → chunk-PTI743SC.js} +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {m,g,f,h as h$2}from'./chunk-
|
|
1
|
+
import {m,g,f,h as h$2}from'./chunk-65AE7EC5.js';import {b as b$3}from'./chunk-HDISUL3F.js';import {b as b$6,a as a$3}from'./chunk-D5LLTUTY.js';import {b as b$1}from'./chunk-B6FJ6RG6.js';import {a as a$2}from'./chunk-2OCJKLTW.js';import {e as e$1,g as g$1,h as h$1,c as c$2,i as i$1,f as f$1,b as b$5,d as d$3}from'./chunk-CMLLERGG.js';import {g as g$2}from'./chunk-M6DVNC6X.js';import {e,c as c$1}from'./chunk-252EKOR6.js';import {i,b as b$4,k as k$1,j,m as m$1,t,s as s$1,q}from'./chunk-RGNCL5OB.js';import {h,e as e$2,b as b$2,d as d$1}from'./chunk-6B7L4NZE.js';import {a}from'./chunk-TQEMLBAG.js';import {b,a as a$1,c,d as d$2}from'./chunk-VQZ5PI5J.js';import {promises}from'fs';import*as k from'fs-extra';import d from'path';import s from'chalk';import {execa}from'execa';function pt(e){let t=e.projectCount??0,n=t===1?"project":"projects",i=e.pythonEngine==="installed"?`Python ${e.pythonVersion||"3.10+"} \xB7 ${e.installMethod||"local environment"}`:e.pythonEngine==="skipped"?"Python engine not installed":"Runtime-neutral foundation";return ["","\u2713 Workspace ready",`${e.workspaceName} \xB7 ${e.profile} \xB7 ${t} registered ${n}`,`Location ${e.workspacePath}`,`Runtime ${i}`,...e.note?[`Note ${e.note}`]:[],"","Workspace Intelligence"," \u2713 Contract and project registry"," \u2713 Canonical model and proof-backed graph"," \u2713 Agent context, grounding, and evidence index","","Next",` ${h$2(e.workspacePath)}`," npx workspai create"," npx workspai workspace intelligence run --for-agent generic --strict --json","","Evidence .workspai/reports/INDEX.json","Guide README.md",""]}function B(e){let t=pt(e);for(let n of t)n==="\u2713 Workspace ready"?console.log(s.green.bold(n)):n==="Workspace Intelligence"||n==="Next"?console.log(s.cyan.bold(n)):n.startsWith(" \u2713")?console.log(s.green(n)):n.startsWith("Location")||n.startsWith("Runtime")?console.log(s.gray(n)):console.log(n);}function M(){return i()}var dt="transactions";function ut(){return d.join(q(),dt)}async function He(){let e=ut();return await b$6(e),a$3({journalDirectory:e})}async function Ue(e){for(let t of s$1())await e.captureFile(t);}async function se(e){let t=await He();try{return await Ue(t),await t.captureOwnedTree(e),t}catch(n){return F(t,n)}}async function mt(e){let t=await He();try{return await qe(t,e),t}catch(n){return F(t,n)}}async function qe(e,t){await Ue(e),await e.captureOwnedTree(d.join(t,a$1)),await e.captureOwnedTree(d.join(t,".venv"));for(let i of [".agents",".amazonq",".claude",".cursor",".github",".grok",".vscode",".windsurf"])await e.captureOwnedTree(d.join(t,i));let n=[c,".gitignore",d.join(a$1,"workspace.json"),d.join(a$1,"toolchain.lock"),d.join(a$1,"policies.yml"),d.join(a$1,"cache-config.yml"),g$2,a$2,"pyproject.toml","poetry.toml","poetry.lock","rapidkit","rapidkit.cmd","README.md","AGENTS.md","CLAUDE.md","GEMINI.md","QWEN.md",".windsurfrules",".rapidkit-global"];for(let i of n)await e.captureFile(d.join(t,i));}async function J(e){await e.commit(),e.journalPath&&await promises.rm(d.dirname(e.journalPath),{recursive:true,force:true}).catch(t=>e$2.debug(`Could not remove committed lifecycle journal: ${t}`));}async function F(e,t){try{await e.rollback();}catch(n){throw new AggregateError([t,n],"Workspace lifecycle failed and rollback was incomplete.")}throw t}async function Q(e$1,t,n,i,a){let l=e(t,h(),n,a?.pythonEngine?{coreStatus:a.pythonEngine,...a.pythonEngineReason?{coreReason:a.pythonEngineReason}:{},...i?{pythonVersion:i}:{}}:void 0);i&&!a?.pythonEngine&&(l.metadata||(l.metadata={}),l.metadata.python={pythonVersion:i}),await c$1(e$1,l);}async function H(e){await k.outputFile(d.join(e,".gitignore"),`.venv/
|
|
2
2
|
__pycache__/
|
|
3
3
|
*.pyc
|
|
4
4
|
.env
|
|
5
5
|
${d$2}
|
|
6
6
|
${b}/
|
|
7
7
|
|
|
8
|
-
`,"utf-8");}async function
|
|
9
|
-
`)}function
|
|
8
|
+
`,"utf-8");}async function Ye(e){try{let t=await execa("git",["rev-parse","--show-toplevel"],{cwd:e,env:a()});return t.stdout.trim()?d.resolve(e,t.stdout.trim()):null}catch{return null}}function yt(e){if(!e||typeof e!="object")return String(e??"");let t=e;return [t.message,t.shortMessage,t.stderr].filter(n=>typeof n=="string").join(`
|
|
9
|
+
`)}function gt(e){return /(?:gpg|sign(?:ed|ing|ature)?|pinentry|cancel(?:led|ed))/i.test(yt(e))}async function X(e,t,n){if(await Ye(e)){t.warn("Git initialization skipped because target is already inside a git worktree");return}t.start("Initializing git repository");try{await execa("git",["init"],{cwd:e,env:a()});}catch{t.warn("Could not initialize git repository");return}try{await execa("git",["add","."],{cwd:e,env:a()});}catch{t.warn("Git repository initialized, but generated files could not be staged");return}try{await execa("git",["-c","user.name=Workspai","-c","user.email=workspai@localhost","commit","-m",n],{cwd:e,env:a()}),t.succeed("Git repository initialized");}catch(a){t.warn(gt(a)?"Git repository initialized; signed initial commit was not created. Files remain staged.":"Git repository initialized; initial commit was not created. Files remain staged.");}}async function ze(e,t){let n=t.replace(/[^a-z0-9-]/gi,"-").toLowerCase();await k.outputFile(d.join(e,"poetry.toml"),`[virtualenvs]
|
|
10
10
|
in-project = true
|
|
11
11
|
`,"utf-8"),await k.outputFile(d.join(e,"pyproject.toml"),`[tool.poetry]
|
|
12
|
-
name = "${
|
|
12
|
+
name = "${n}"
|
|
13
13
|
version = "0.1.0"
|
|
14
14
|
description = "Workspai workspace"
|
|
15
15
|
authors = []
|
|
@@ -22,7 +22,7 @@ rapidkit-core = "*"
|
|
|
22
22
|
[build-system]
|
|
23
23
|
requires = ["poetry-core"]
|
|
24
24
|
build-backend = "poetry.core.masonry.api"
|
|
25
|
-
`,"utf-8");}function
|
|
25
|
+
`,"utf-8");}function Be(e,t,n,i,a){return JSON.stringify({schema_version:"1.0",workspace_name:e,workspai_version:h(),rapidkit_version:h(),created_at:new Date().toISOString(),created_by:"workspai",profile:i||"minimal",...a?.profileRequested?{profile_requested:a.profileRequested}:{},...a?.bootstrapNote?{bootstrap_note:a.bootstrapNote}:{},engine:{install_method:t,python_version:n||null,...a?.pythonEngine?{python_core:{status:a.pythonEngine,...a.pythonEngineReason?{reason:a.pythonEngineReason}:{}}}:{}}},null,2)}function Je(e,t,n,i,a,l){return JSON.stringify({schema_version:"1.0",generated_by:"workspai",generated_at:new Date().toISOString(),runtime:{python:{version:t||null,install_method:e,...l?.pythonEngine?{core:{status:l.pythonEngine,...l.pythonEngineReason?{reason:l.pythonEngineReason}:{}}}:{}},node:{version:n||process.version},go:{version:i||null},java:{version:null,build_tool:null,build_tool_version:null},dotnet:{version:a||null,sdk:a||null}}},null,2)}function Qe(){return `version: "1.0"
|
|
26
26
|
mode: warn # "warn" or "strict"
|
|
27
27
|
dependency_sharing_mode: isolated # "isolated" or "shared-runtime-caches" or "shared-node-deps"
|
|
28
28
|
# change profile (recommended): npx workspai bootstrap --profile polyglot
|
|
@@ -31,20 +31,20 @@ rules:
|
|
|
31
31
|
enforce_workspace_marker: true
|
|
32
32
|
enforce_toolchain_lock: false
|
|
33
33
|
disallow_untrusted_tool_sources: false
|
|
34
|
-
`}function
|
|
34
|
+
`}function Xe(){return `version: "1.0"
|
|
35
35
|
cache:
|
|
36
36
|
strategy: shared # "shared" or "on-demand"
|
|
37
37
|
prune_on_bootstrap: false
|
|
38
38
|
self_heal: true
|
|
39
39
|
verify_integrity: false
|
|
40
|
-
`}async function
|
|
41
|
-
`,"utf-8"),e$2.debug(`Created .python-version with ${
|
|
40
|
+
`}async function Ze(){try{let{stdout:e}=await execa("go",["version"],{timeout:3e3,stdio:"pipe"}),t=e.match(/go(\d+\.\d+(?:\.\d+)?)/i);return t?t[1]:void 0}catch{return}}async function et(){try{let{stdout:e}=await execa("dotnet",["--version"],{timeout:3e3,stdio:"pipe"}),t=e.trim();return t.length>0?t:void 0}catch{return}}async function Z(e,t,n,i,a,l){let[u,g]=await Promise.all([Ze(),et()]),c=[{fileName:"workspace.json",content:Be(t,n,i,a,l)},{fileName:"toolchain.lock",content:Je(n,i,process.version,u,g,l)},{fileName:"policies.yml",content:Qe()},{fileName:"cache-config.yml",content:Xe()}];for(let f of c)await k.outputFile(d.join(e,a$1,f.fileName),f.content,"utf-8");}async function on(e$1,t){let{workspaceName:n=d.basename(e$1),installMethod:i="venv",pythonVersion:a,profile:l,writeMarker:u=true,writeGitignore:g=true,onlyIfMissing:c$2=true}=t||{},f=[],[y,h$1]=await Promise.all([Ze(),et()]),p=[{relPath:d.join(a$1,"workspace.json"),legacyRelPath:d.join(b,"workspace.json"),content:Be(n,i,a,l)},{relPath:d.join(a$1,"toolchain.lock"),legacyRelPath:d.join(b,"toolchain.lock"),content:Je(i,a,process.version,y,h$1)},{relPath:d.join(a$1,"policies.yml"),legacyRelPath:d.join(b,"policies.yml"),content:Qe()},{relPath:d.join(a$1,"cache-config.yml"),legacyRelPath:d.join(b,"cache-config.yml"),content:Xe()}];for(let r of p){let o=d.join(e$1,r.relPath),_=d.join(e$1,r.legacyRelPath),P=await k.pathExists(o),R=await k.pathExists(_);c$2&&P||(c$2&&R?(await k.copy(_,o),f.push(r.relPath)):(await k.outputFile(o,r.content,"utf-8"),f.push(r.relPath)));}if(u&&(!await k.pathExists(d.join(e$1,c))||!c$2)){let o=e(n,h(),i);a&&(o.metadata||(o.metadata={}),o.metadata.python={pythonVersion:a}),await c$1(e$1,o),f.push(c);}if(g){let r=d.join(e$1,".gitignore");(!c$2||!await k.pathExists(r))&&(await H(e$1),f.push(".gitignore"));}return f}var ht={"python-only":"minimal",polyglot:"node-only",enterprise:"polyglot"};function ft(e){let t=e,n=new Set;for(;!m(t);){if(n.has(t))return "minimal";n.add(t);let i=ht[t];if(!i)return "minimal";t=i;}return t}var G="3.10",tt=["3.10","3.11","3.12"];async function xe(e){try{let{stdout:t}=await execa(e,["--version"],{timeout:3e3}),n=t.match(/Python (\d+\.\d+\.\d+)/);if(n)return n[1]}catch{}return null}async function wt(e,t){try{await promises.writeFile(d.join(e,".python-version"),`${t}
|
|
41
|
+
`,"utf-8"),e$2.debug(`Created .python-version with ${t}`);}catch(n){e$2.warn(`Failed to create .python-version: ${n}`);}}function le(){let n=[...(process.env.PATH||"").split(d.delimiter).filter(Boolean)];for(let i of t())n.includes(i)||n.unshift(i);process.env.PATH=n.join(d.delimiter);}async function he(e,t){le(),e.start("Checking pipx installation");try{return await execa("pipx",["--version"]),e.succeed("pipx found"),{kind:"binary"}}catch{}let n=M();try{return await execa(n,["-m","pipx","--version"]),e.succeed("pipx found"),{kind:"python-module",pythonCmd:n}}catch{}if(t)throw new d$3;try{await execa(n,["-m","pip","--version"],{timeout:2500});}catch{throw new h$1}e.stop?.();let{installPipx:i}=await b$1([{type:"confirm",name:"installPipx",message:"pipx is not installed. Install it now (user install via python -m pip)?",default:true}]);if(!i)throw new d$3;e.start("Installing pipx (user install)");try{try{await execa(n,["-m","pip","install","--user","--upgrade","pip"]);}catch{}await execa(n,["-m","pip","install","--user","--upgrade","pipx"]);}catch(a){let l=a,u=String(l?.stderr||l?.shortMessage||l?.message||"");throw new f$1("Install pipx with python -m pip",a instanceof Error?a:new Error(u))}e.succeed("pipx installed"),le();try{return await execa(n,["-m","pipx","--version"]),{kind:"python-module",pythonCmd:n}}catch(a){let l=a,u=String(l?.stderr||l?.shortMessage||l?.message||"pipx not runnable after install");throw new f$1("Verify pipx after install",new Error(`${u}
|
|
42
42
|
|
|
43
|
-
Try reopening your terminal or run: ${
|
|
44
|
-
${p.stderr||""}`);r&&ee(r,G)&&
|
|
45
|
-
${
|
|
43
|
+
Try reopening your terminal or run: ${n} -m pipx ensurepath`))}}async function U(e,t){return e.kind==="binary"?execa("pipx",t):execa(e.pythonCmd,["-m","pipx",...t])}function nt(e){let t=e.match(/^(\d+)\.(\d+)/);return t?`${t[1]}.${t[2]}`:null}function Ge(e){if(!e)return null;let t=e.match(/Python\s+(\d+)\.(\d+)(?:\.\d+)?/i);return t?`${t[1]}.${t[2]}`:null}function Ie(e,t){let[n,i]=e.split(".").map(u=>Number(u)),[a,l]=t.split(".").map(u=>Number(u));return n!==a?n-a:i-l}function ee(e,t){return Ie(e,t)>=0}async function vt(e){let t=new Set,n=k$1(14,10);for(let h of n)try{let p=await execa(h.command,h.args,{timeout:2500}),r=Ge(`${p.stdout||""}
|
|
44
|
+
${p.stderr||""}`);r&&ee(r,G)&&t.add(r);}catch{}let i=null;try{let h=await execa(M(),["--version"],{timeout:2500}),p=Ge(`${h.stdout||""}
|
|
45
|
+
${h.stderr||""}`);p&&ee(p,G)&&(i=p,t.add(p));}catch{}let a=tt.filter(h=>ee(h,G)),l=new Set([...a,...t]),u=Array.from(l).sort((h,p)=>Ie(p,h)),g=e?nt(e):null,c=g&&ee(g,G)?g:i||u[0]||G;return l.has(c)||l.add(c),{choices:Array.from(l).sort((h,p)=>Ie(p,h)).map(h=>{let p=[];return h===i&&p.push("current system"),h===G&&p.push("minimum supported"),t.has(h)&&h!==i&&p.push("detected"),{name:p.length>0?`${h} (${p.join(", ")})`:h,value:h}}),defaultValue:c}}async function kt(){le();let e=false,t=false,n=false,i$1=false;try{await execa("poetry",["--version"],{timeout:2500}),e=true;}catch{e=false;}try{await execa("pipx",["--version"],{timeout:2500}),t=true;}catch{let l=i();try{await execa(l,["-m","pipx","--version"],{timeout:2500}),t=true;}catch{t=false;}}let a=i();try{await execa(a,["-m","pip","--version"],{timeout:2500}),n=true;}catch{n=false;}try{await execa(a,["-c","import venv, ensurepip"],{timeout:2500}),i$1=true;}catch{i$1=false;}return {poetry:e,pipx:t,pip:n,venv:i$1}}function Pt(e,t){return e==="poetry"&&t.poetry?"poetry":e==="pipx"&&t.pipx?"pipx":e==="venv"&&t.venv?"venv":t.poetry?"poetry":t.venv?"venv":"pipx"}async function bt(e,t){le(),e.start("Checking Poetry installation");try{await execa("poetry",["--version"]),e.succeed("Poetry found");return}catch{}if(t)throw new c$2;let{installPoetry:n}=await b$1([{type:"confirm",name:"installPoetry",message:"Poetry is not installed. Install it now using pipx?",default:true}]);if(!n)throw new c$2;let i=await he(e,t);e.start("Installing Poetry with pipx");try{await U(i,["install","poetry"]);}catch(a){let l=a,u=String(l?.stderr||l?.shortMessage||l?.message||"");if(/already\s+installed|already\s+seems\s+to\s+be\s+installed|exists/i.test(u))try{await U(i,["upgrade","poetry"]);}catch{}else throw new f$1("Install Poetry with pipx",a instanceof Error?a:new Error(u))}e.succeed("Poetry installed"),le();try{await execa("poetry",["--version"]);}catch(a){let l=a,u=String(l?.stderr||l?.shortMessage||l?.message||"Poetry not found on PATH");throw new f$1("Verify Poetry after pipx install",new Error(`${u}
|
|
46
46
|
|
|
47
|
-
Poetry may be installed but not on PATH yet. Try reopening your terminal or run: pipx ensurepath`))}}function
|
|
47
|
+
Poetry may be installed but not on PATH yet. Try reopening your terminal or run: pipx ensurepath`))}}function Rt(e,t={}){let n=e==="poetry",i=t.pythonEngineSkipped?`echo "- Python engine installation was intentionally skipped for this workspace." 1>&2
|
|
48
48
|
echo "- For npm-owned workspace commands, run: npx workspai <command>" 1>&2
|
|
49
49
|
echo "- To install the local Python engine later, create a RapidKit Core module-enabled project, then run: npx workspai workspace run init" 1>&2
|
|
50
50
|
`:`echo "- If you used venv: ensure .venv exists (or re-run the installer)." 1>&2
|
|
@@ -58,7 +58,7 @@ if [ -x "$VENV_RAPIDKIT" ]; then
|
|
|
58
58
|
exec "$VENV_RAPIDKIT" "$@"
|
|
59
59
|
fi
|
|
60
60
|
|
|
61
|
-
${
|
|
61
|
+
${n?`if command -v poetry >/dev/null 2>&1 && [ -f "$SCRIPT_DIR/pyproject.toml" ]; then
|
|
62
62
|
exec poetry run rapidkit "$@"
|
|
63
63
|
fi
|
|
64
64
|
|
|
@@ -76,11 +76,11 @@ for RAPIDKIT_CORE in "$HOME/.local/bin/rapidkit" "$HOME/Library/Python/3.14/bin/
|
|
|
76
76
|
done
|
|
77
77
|
|
|
78
78
|
echo "RapidKit launcher could not find a local Python CLI." 1>&2
|
|
79
|
-
${
|
|
80
|
-
`:""}${
|
|
79
|
+
${i}${t.pythonEngineSkipped?"":n?`echo "- If you used Poetry: run 'poetry install' and retry, or activate the env." 1>&2
|
|
80
|
+
`:""}${t.pythonEngineSkipped?`echo "Tip: use 'npx workspai workspace model --json' for Workspace Intelligence without the Python engine." 1>&2
|
|
81
81
|
`:`echo "Tip: you can also run: ./.venv/bin/rapidkit --help" 1>&2
|
|
82
82
|
`}exit 1
|
|
83
|
-
`}function
|
|
83
|
+
`}function xt(e,t={}){let n=e==="poetry",i=t.pythonEngineSkipped?`echo - Python engine installation was intentionally skipped for this workspace. 1>&2
|
|
84
84
|
echo - For npm-owned workspace commands, run: npx workspai ^<command^> 1>&2
|
|
85
85
|
echo - To install the local Python engine later, create a RapidKit Core module-enabled project, then run: npx workspai workspace run init 1>&2
|
|
86
86
|
`:`echo Tip: run .venv\\Scripts\\rapidkit.exe --help 1>&2
|
|
@@ -94,7 +94,7 @@ if exist "%SCRIPT_DIR%\\.venv\\Scripts\\rapidkit.exe" (
|
|
|
94
94
|
exit /b %ERRORLEVEL%
|
|
95
95
|
)
|
|
96
96
|
|
|
97
|
-
${
|
|
97
|
+
${n?`where poetry >nul 2>nul
|
|
98
98
|
if %ERRORLEVEL%==0 if exist "%SCRIPT_DIR%\\pyproject.toml" (
|
|
99
99
|
poetry run rapidkit %*
|
|
100
100
|
exit /b %ERRORLEVEL%
|
|
@@ -118,9 +118,9 @@ for %%R in ("%USERPROFILE%\\.local\\bin\\rapidkit.exe" "%APPDATA%\\Python\\Scrip
|
|
|
118
118
|
)
|
|
119
119
|
|
|
120
120
|
echo RapidKit launcher could not find a local Python CLI. 1>&2
|
|
121
|
-
${
|
|
121
|
+
${i}echo Tip: for npm-owned workspace commands, run npx --yes --package workspai workspai %* from a shell where npm is on PATH. 1>&2
|
|
122
122
|
exit /b 1
|
|
123
|
-
`}async function ge(e,n
|
|
123
|
+
`}async function ge(e,t,n={}){await k.outputFile(d.join(e,"rapidkit"),Rt(t,n),{encoding:"utf-8",mode:493}),await k.outputFile(d.join(e,"rapidkit.cmd"),xt(t,n),"utf-8");}async function an(e,t){let{skipGit:n=false,skipPythonEngine:i$1=false,testMode:a=false,demoMode:l=false,dryRun:u=false,yes:g$2=false,userConfig:c={},installMethod:f,profile:y,parentDirectory:h,suppressReceipt:p=false}=t,r=e||"rapidkit",o=h?d.resolve(h,r):d.resolve(process.cwd(),r);if(await k.pathExists(o))throw new e$1(r);if(await g(o),u){let w=y||(g$2?"minimal":void 0),I=f||c.defaultInstallMethod||"poetry",E=c.pythonVersion||"3.10";await Et(o,r,l,c,w,I,E,n,i$1);return}if(l){await It(o,r,n);return}let _=new Set(["python-only","polyglot","enterprise"]),P=y||"";if(!g$2&&!y){let{selectedProfile:w}=await b$1([{type:"rawlist",name:"selectedProfile",message:"Select workspace profile:",choices:[{name:"minimal \u2014 Foundation files only (fastest bootstrap, mixed projects)",value:"minimal"},{name:"java-only \u2014 Java runtime (Spring Boot services)",value:"java-only"},{name:"python-only \u2014 Python + Poetry (FastAPI, Django, ML pipelines)",value:"python-only"},{name:"node-only \u2014 Node.js runtime (NestJS, Express, Next.js)",value:"node-only"},{name:"go-only \u2014 Go runtime (Fiber, Gin, gRPC, microservices)",value:"go-only"},{name:"dotnet-only \u2014 .NET runtime (ASP.NET Core services)",value:"dotnet-only"},{name:"polyglot \u2014 Python + Node.js + Go + Java + .NET multi-runtime workspace",value:"polyglot"},{name:"enterprise \u2014 Polyglot + governance + Sigstore verification",value:"enterprise"}],default:1}]);P=w;}else P||(P="minimal");let R=!g$2&&_.has(P),O=_.has(P)?i$1?"skip":R?(await b$1([{type:"confirm",name:"installPythonEngine",message:"Install the optional RapidKit Python engine now? (needed for Python-backed kits/modules)",default:true}])).installPythonEngine!==false?"install":"skip":"install":"skip",ce=R&&O==="install",rt=typeof c.pythonVersion=="string"&&c.pythonVersion.trim().length>0?c.pythonVersion.trim():void 0,st=f||c.defaultInstallMethod||"poetry",A=O==="install"?await kt():{poetry:true,pipx:true,pip:true,venv:true},_e=ce?await vt(rt):{choices:tt.map(w=>({name:w,value:w})),defaultValue:G},lt=Pt(st,A),ct=[{name:A.poetry?"\u{1F3AF} Poetry (Recommended - includes virtual env + dependency mgmt)":A.pipx||A.pip?"\u{1F3AF} Poetry (Recommended) \u2014 not detected (can be installed)":"\u{1F3AF} Poetry (Recommended) \u2014 unavailable (system pipx package required)",value:"poetry"},{name:A.venv?"\u{1F4E6} pip with venv (Standard, zero extra tools)":"\u{1F4E6} pip with venv \u2014 unavailable (system venv package required)",value:"venv"},{name:A.pipx?"\u{1F527} pipx (Global isolated - RapidKit Core only, no local venv)":A.pip?"\u{1F527} pipx (Global isolated) \u2014 not detected (can be installed)":"\u{1F527} pipx (Global isolated) \u2014 unavailable (system pipx package required)",value:"pipx"}],x=ce?await b$1([{type:"rawlist",name:"pythonVersion",message:"Select minimum Python version for RapidKit:",choices:_e.choices,default:_e.defaultValue},{type:"rawlist",name:"installMethod",message:"How would you like to manage the workspace environment?",choices:ct,default:lt}]):await(async()=>{if(O==="skip")return {pythonVersion:c.pythonVersion||"3.10",installMethod:"venv"};let w=f||c.defaultInstallMethod||await(async()=>{try{return await execa("poetry",["--version"],{timeout:3e3}),"poetry"}catch{return e$2.warn("Poetry not found \u2014 auto-selecting venv. Pass --install-method poetry to override."),"venv"}})();return {pythonVersion:c.pythonVersion||"3.10",installMethod:w}})();if(m(P)){let w=b$2("Creating workspace",{component:"create",phase:"workspace.python-free"}),I=await se(o);try{await k.ensureDir(o),w.succeed("Directory created"),await Q(o,r,"venv",void 0),await Z(o,r,"venv",void 0,P,{bootstrapNote:"python-engine-skipped",pythonEngine:"skipped",pythonEngineReason:"workspace-profile-does-not-install-python-at-create"}),await H(o);let E=await b$3(o,{workspaceName:r,silent:true});await J(I),n||await X(o,w,"Initial commit: Workspai workspace"),p||B({workspaceName:r,workspacePath:o,profile:P,projectCount:E?.projectCount??0});}catch(E){return w.fail("Failed to create workspace"),F(I,E)}return}if(_.has(P)&&O==="skip"){let w=b$2("Creating workspace",{component:"create",phase:"workspace.python-engine-skipped"}),I=await se(o);try{await k.ensureDir(o),w.succeed("Directory created");let E={bootstrapNote:"python-engine-skipped",pythonEngine:"skipped",pythonEngineReason:"user-opted-out"};await Q(o,r,"venv",void 0,E),await Z(o,r,"venv",void 0,P,E),await H(o),await ge(o,"venv",{pythonEngineSkipped:true});let b=await b$3(o,{workspaceName:r,silent:true});await J(I),n||await X(o,w,`Initial commit: Workspai workspace (${P})`),p||B({workspaceName:r,workspacePath:o,profile:P,projectCount:b?.projectCount??0,pythonEngine:"skipped",note:"Install the optional Python engine later only when a Python-backed kit needs it."});return}catch(E){return w.fail("Failed to create workspace"),F(I,E)}}{let w=M(),I=false;try{await execa(w,["--version"],{timeout:5e3}),I=true;}catch{try{await execa("python",["--version"],{timeout:5e3}),I=true;}catch{I=false;}}if(!I){let E=P,b=ft(P);if(R&&!g$2){console.log(s.yellow(`
|
|
124
124
|
\u26A0\uFE0F Python 3.10+ is not detected on this system.
|
|
125
125
|
`)),console.log(s.cyan(`You have 3 options:
|
|
126
126
|
`));let{pythonAction:D}=await b$1([{type:"rawlist",name:"pythonAction",message:"What would you like to do?",choices:[{name:"\u{1F4E5} Install Python now (I'll show you the command for your OS)",value:"install"},{name:`\u{1F504} Switch to "${b}" profile (no Python required)`,value:"fallback"},{name:"\u274C Cancel and install Python manually",value:"cancel"}]}]);if(D==="cancel"&&(console.log(s.cyan(`
|
|
@@ -136,9 +136,9 @@ exit /b 1
|
|
|
136
136
|
`))),console.log(s.gray(` After installing, run: npx workspai ${r}
|
|
137
137
|
`)),process.exit(0);}if(D==="fallback"&&(console.log(s.green(`
|
|
138
138
|
\u2705 Switching to "${b}" profile (no Python required).
|
|
139
|
-
`)),P=b,m(b))){let S=b$2("Creating workspace",{component:"create",phase:"workspace.python-free"}),q=await se(
|
|
139
|
+
`)),P=b,m(b))){let S=b$2("Creating workspace",{component:"create",phase:"workspace.python-free"}),q=await se(o);try{await k.ensureDir(o),S.succeed("Directory created"),await Q(o,r,"venv",void 0),await Z(o,r,"venv",void 0,b,{profileRequested:E,bootstrapNote:"python-free-fallback",pythonEngine:"skipped",pythonEngineReason:"python-runtime-unavailable"}),await H(o);let fe=await b$3(o,{workspaceName:r,silent:true});await J(q),n||await X(o,S,`Initial commit: Workspai workspace (${b} profile)`),p||B({workspaceName:r,workspacePath:o,profile:b,projectCount:fe?.projectCount??0,note:`Requested ${E}; used ${b} because Python was unavailable.`});return}catch(fe){return S.fail("Failed to create workspace"),F(q,fe)}}}else if(console.log(s.yellow(`
|
|
140
140
|
\u26A0\uFE0F Python not detected. Auto-switching to "${b}" profile (no Python required).
|
|
141
|
-
`)),P=b,m(b)){let D=b$2("Creating workspace",{component:"create",phase:"workspace.python-free"}),S=await se(
|
|
141
|
+
`)),P=b,m(b)){let D=b$2("Creating workspace",{component:"create",phase:"workspace.python-free"}),S=await se(o);try{await k.ensureDir(o),D.succeed("Directory created"),await Q(o,r,"venv",void 0),await Z(o,r,"venv",void 0,b,{profileRequested:E,bootstrapNote:"python-free-fallback",pythonEngine:"skipped",pythonEngineReason:"python-runtime-unavailable"}),await H(o);let q=await b$3(o,{workspaceName:r,silent:true});await J(S),n||await X(o,D,`Initial commit: Workspai workspace (${b})`),p||B({workspaceName:r,workspacePath:o,profile:b,projectCount:q?.projectCount??0,note:`Requested ${E}; used ${b} because Python was unavailable.`});return}catch(q){return D.fail("Failed to create workspace"),F(S,q)}}}}if(x.installMethod==="venv"&&!A.venv){let w=await xe(i()),I=w?nt(w):null;throw new g$1(`python${I||x.pythonVersion}-venv`,d.basename(o))}if(x.installMethod==="pipx"&&!A.pipx&&!A.pip)throw new h$1;if(x.installMethod==="poetry"&&!A.poetry&&!A.pipx&&!A.pip)throw new c$2;let C=b$2("Creating directory",{component:"create",phase:"workspace.directory"}),Ce=await se(o);try{await k.ensureDir(o),C.succeed("Directory created"),C.start("Detecting Python version");let w=null,I=await ot(x.pythonVersion);if(I)w=await xe(I),w?(e$2.info(` Detected Python ${w}`),C.succeed(`Python ${w} detected`)):C.warn("Could not detect exact Python version");else {let b=M();w=await xe(b),w?C.succeed(`Python ${w} detected`):C.warn("Could not detect Python version, proceeding with defaults");}if(await Q(o,r,x.installMethod,w||void 0),await Z(o,r,x.installMethod,w||x.pythonVersion,P||y),await H(o),await ze(o,r),x.installMethod==="poetry")try{await it(o,x.pythonVersion,C,a,c,g$2);}catch(b){let te=b?.details||b?.message||String(b);if(te.includes("pyenv")||te.includes("exit status 127")||te.includes("returned non-zero exit status 127")){C.warn("Poetry encountered Python discovery issues, trying venv method"),e$2.debug(`Poetry error (attempting venv fallback): ${te}`);try{await Ee(o,x.pythonVersion,C,a,c),x.installMethod="venv";}catch(S){throw S}}else throw b}else x.installMethod==="venv"?await Ee(o,x.pythonVersion,C,a,c):await at(o,C,a,c,g$2);w&&await wt(o,w),await ge(o,x.installMethod),C.succeed("Workspai environment ready!");let E=await b$3(o,{workspaceName:r,silent:true});await J(Ce),t.skipGit||await X(o,C,"Initial commit: Workspai environment"),p||B({workspaceName:r,workspacePath:o,profile:P,projectCount:E?.projectCount??0,pythonEngine:"installed",pythonVersion:x.pythonVersion,installMethod:x.installMethod});}catch(w){return C.fail("Failed to create Workspai environment"),F(Ce,w)}}async function ot(e){let t=[];if(!b$4())try{let{stdout:l}=await execa("pyenv",["which","python"]),u=l.trim();u&&t.push(u);}catch{}let n=Number(e.split(".")[1]),i=k$1(n,10).map(l=>l.command).filter(Boolean);t.push(`python${e}`,...i,...j());let a=[...new Set(t)];for(let l of a)try{let u=l==="py"?["-3","--version"]:["--version"],g=l==="py"?["-3","-c","import sys; sys.exit(0)"]:["-c","import sys; sys.exit(0)"],{stdout:c}=await execa(l,u,{timeout:2e3}),f=c.match(/Python (\d+\.\d+)/)?.[1];if(f&&ee(f,e))return await execa(l,g,{timeout:2e3}),l}catch{continue}return null}async function it(e,t,n,i,a,l=false){await bt(n,l),n.start("Finding Python interpreter");let u=await ot(t);u?(e$2.debug(`Found working Python: ${u}`),n.succeed("Python found")):n.warn("Could not verify Python path, proceeding with default"),n.start("Initializing Poetry project");let g=d.join(e,"pyproject.toml"),f$2=(await k.pathExists(g)?await promises.readFile(g,"utf-8"):"").includes("rapidkit-core");if(f$2)n.succeed("Poetry project initialized");else {await execa("poetry",["init","--no-interaction","--python",`^${t}`],{cwd:e}),n.succeed("Poetry project initialized");let r=await promises.readFile(g,"utf-8");r.includes("[tool.poetry]")?r=r.replace("[tool.poetry]",`[tool.poetry]
|
|
142
142
|
package-mode = false`):r.includes("[project]")&&(r.includes("[build-system]")?r=r.replace("[build-system]",`
|
|
143
143
|
[tool.poetry]
|
|
144
144
|
package-mode = false
|
|
@@ -147,27 +147,27 @@ package-mode = false
|
|
|
147
147
|
|
|
148
148
|
[tool.poetry]
|
|
149
149
|
package-mode = false
|
|
150
|
-
`),await promises.writeFile(g,r,"utf-8");}
|
|
150
|
+
`),await promises.writeFile(g,r,"utf-8");}n.start("Configuring Poetry");try{await execa("poetry",["config","virtualenvs.in-project","true","--local"],{cwd:e}),n.succeed("Poetry configured");}catch{n.warn("Could not configure Poetry virtualenvs.in-project");}n.start("Creating virtualenv");let y=u||M(),h=m$1(d.join(e,".venv"));try{await execa(y,["-m","venv",".venv"],{cwd:e,timeout:6e4}),n.succeed("Virtualenv created");}catch(p){e$2.debug(`python -m venv failed: ${p}`),n.warn("Could not pre-create virtualenv, Poetry will try"),h=u||M();}try{await execa("poetry",["env","use",h||M()],{cwd:e}),e$2.debug(`Poetry env set to: ${h}`);}catch(p){e$2.debug(`Could not set Poetry env: ${p}`);}if(n.start("Installing RapidKit"),f$2&&!i){let p=f(a||{}),r=p?await k.pathExists(p):false,o=r&&p?p:"rapidkit-core";p&&!r&&e$2.warn(`WORKSPAI_DEV_PATH/RAPIDKIT_DEV_PATH points to a path that does not exist: ${p}. Falling back to PyPI.`),n.text=r?"Installing RapidKit from local path":"Installing RapidKit from PyPI";let _=false,P=null;for(let R=1;R<=3;R++)try{r||d$1({status:"started",message:"Installing RapidKit from PyPI",installMethod:"poetry",attempt:R,maxAttempts:3}),await execa(h,["-m","pip","install",o,"--quiet"],{cwd:e,timeout:18e4}),_=true,r||d$1({status:"succeeded",message:"RapidKit installed from PyPI",installMethod:"poetry",attempt:R,maxAttempts:3});break}catch(O){P=O,e$2.debug(`pip install rapidkit-core attempt ${R} failed: ${O}`),R<3&&(n.text=`Retrying installation (attempt ${R+1}/3)`,await new Promise(ce=>setTimeout(ce,2e3)));}if(!_){let R=P?.stderr||P?.message||"Unknown error";throw e$2.debug(`All pip install attempts failed. Last error: ${R}`),R.includes("Could not find")||R.includes("No matching distribution")?new i$1:new f$1("Install rapidkit-core with pip",new Error(`Failed to install rapidkit-core after 3 attempts.
|
|
151
151
|
Error: ${R}
|
|
152
152
|
|
|
153
153
|
Possible solutions:
|
|
154
154
|
1. Check your internet connection
|
|
155
155
|
2. Try installing manually: cd ${d.basename(e)} && poetry add rapidkit-core
|
|
156
|
-
3. Use venv method instead: npx workspai ${d.basename(e)} --install-method=venv`))}}else {
|
|
157
|
-
Error: ${
|
|
156
|
+
3. Use venv method instead: npx workspai ${d.basename(e)} --install-method=venv`))}}else {n.text="Syncing Poetry environment";try{await execa("poetry",["install","--no-root"],{cwd:e,timeout:12e4}),n.succeed("Poetry environment synced");}catch(p){e$2.debug(`poetry install --no-root failed: ${p}`),n.warn("Could not sync Poetry environment, proceeding with add command");}if(n.start("Installing RapidKit"),i){let p=f(a||{});if(!p)throw new f$1("Test mode installation",new Error("No local RapidKit path configured. Set WORKSPAI_DEV_PATH (or legacy RAPIDKIT_DEV_PATH)."));e$2.debug(`Installing from local path: ${p}`),n.text="Installing RapidKit from local path (test mode)",await execa("poetry",["add",p],{cwd:e});}else {n.text="Installing RapidKit from PyPI";let p=false,r=null;for(let o=1;o<=3;o++)try{d$1({status:"started",message:"Installing RapidKit from PyPI",installMethod:"poetry",attempt:o,maxAttempts:3}),await execa("poetry",["add","rapidkit-core"],{cwd:e,timeout:6e4*o}),p=true,d$1({status:"succeeded",message:"RapidKit installed from PyPI",installMethod:"poetry",attempt:o,maxAttempts:3});break}catch(_){r=_,e$2.debug(`Poetry add attempt ${o} failed: ${_}`),o<3&&(n.text=`Retrying installation (attempt ${o+1}/3)`,await new Promise(P=>setTimeout(P,2e3)));}if(!p){let o=r?.stderr||r?.message||"Unknown error";throw e$2.debug(`All Poetry install attempts failed. Last error: ${o}`),o.includes("Could not find")||o.includes("No matching distribution")?new i$1:new f$1("Install rapidkit-core with Poetry",new Error(`Failed to install rapidkit-core after 3 attempts.
|
|
157
|
+
Error: ${o}
|
|
158
158
|
|
|
159
159
|
Possible solutions:
|
|
160
160
|
1. Check your internet connection
|
|
161
161
|
2. Try installing manually: cd ${d.basename(e)} && poetry add rapidkit-core
|
|
162
|
-
3. Use venv method instead: npx workspai ${d.basename(e)} --install-method=venv`))}}}
|
|
162
|
+
3. Use venv method instead: npx workspai ${d.basename(e)} --install-method=venv`))}}}n.succeed("RapidKit installed in project virtualenv");try{let{checkRapidkitCoreAvailable:p}=await import('./pythonRapidkitExec-UMFLDIYR.js');if(!await p()&&!i){n.start("Checking optional global pipx installation");let o=await he(n,true);try{n.start("Installing RapidKit globally with pipx for CLI access"),await U(o,["install","rapidkit-core"]),n.succeed("RapidKit installed globally");}catch(_){n.warn("Could not install globally (non-fatal, project virtualenv has RapidKit)"),e$2.debug(`pipx install failed: ${_}`);}}}catch(p){n.succeed("Skipped optional global pipx installation"),e$2.debug(`Global install check skipped: ${p}`);}}async function Ee(e,t,n,i,a,l=false){n.start(`Checking Python ${t}`);let u=M();try{let{stdout:c}=await execa(u,["--version"]),f=c.match(/Python (\d+\.\d+)/)?.[1];if(f&&!ee(f,t))throw new b$5(t,f);n.succeed(`Python ${f} found`);}catch(c){throw c instanceof b$5?c:new b$5(t)}n.start("Creating virtual environment");try{await execa(u,["-m","venv",".venv"],{cwd:e}),n.succeed("Virtual environment created");}catch(c){if(n.fail("Failed to create virtual environment"),(y=>typeof y=="object"&&y!==null&&"stdout"in y&&typeof y.stdout=="string")(c)&&c.stdout.includes("ensurepip is not")){let y=c.stdout.match(/apt install (python[\d.]+-venv)/),h=y?y[1]:"python3-venv";throw new g$1(h,d.basename(e))}throw new f$1("Virtual environment creation",c instanceof Error?c:new Error(String(c)))}n.start("Installing RapidKit");let g=m$1(d.join(e,".venv"));if(await execa(g,["-m","pip","install","--upgrade","pip"],{cwd:e}),i){let c=f(a||{});if(!c)throw new f$1("Test mode installation",new Error("No local RapidKit path configured. Set WORKSPAI_DEV_PATH (or legacy RAPIDKIT_DEV_PATH)."));e$2.debug(`Installing from local path: ${c}`),n.text="Installing RapidKit from local path (test mode)",await execa(g,["-m","pip","install","-e",c],{cwd:e});}else {n.text="Installing RapidKit from PyPI";let c=false,f=null;for(let y=1;y<=3;y++)try{d$1({status:"started",message:"Installing RapidKit from PyPI",installMethod:"venv",attempt:y,maxAttempts:3}),await execa(g,["-m","pip","install","rapidkit-core"],{cwd:e,timeout:6e4*y}),c=true,d$1({status:"succeeded",message:"RapidKit installed from PyPI",installMethod:"venv",attempt:y,maxAttempts:3});break}catch(h){f=h,e$2.debug(`pip install attempt ${y} failed: ${h}`),y<3&&(n.text=`Retrying installation (attempt ${y+1}/3)`,await new Promise(p=>setTimeout(p,2e3)));}if(!c){let y=f?.stderr||f?.message||"Unknown error";throw e$2.debug(`All pip install attempts failed. Last error: ${y}`),y.includes("Could not find")||y.includes("No matching distribution")?new i$1:new f$1("Install rapidkit-core with pip",new Error(`Failed to install rapidkit-core after 3 attempts.
|
|
163
163
|
Error: ${y}
|
|
164
164
|
|
|
165
165
|
Possible solutions:
|
|
166
166
|
1. Check your internet connection
|
|
167
167
|
2. Try installing manually: cd ${d.basename(e)} && ${m$1(".venv")} -m pip install rapidkit-core
|
|
168
|
-
3. Use Poetry instead: npx workspai ${d.basename(e)} --install-method=poetry`))}}
|
|
169
|
-
`,"utf-8");return}g.reason==="constraint-missing"?e$2.debug('Version-aware global reuse skipped: no explicit rapidkit-core version constraint found. Set RAPIDKIT_CORE_PYTHON_PACKAGE (example: RAPIDKIT_CORE_PYTHON_PACKAGE="rapidkit-core>=0.4.0,<0.9.0") to enable version-aware reuse. Proceeding with pipx install/upgrade.'):g.reason==="constraint-unsupported"&&e$2.debug('Version-aware global reuse skipped: RAPIDKIT_CORE_PYTHON_PACKAGE uses an unsupported spec (path/url/git). Use a version range instead (example: RAPIDKIT_CORE_PYTHON_PACKAGE="rapidkit-core==0.4.0" or "rapidkit-core>=0.4.0,<0.9.0"). Proceeding with pipx install/upgrade.'),e$2.debug(`Global RapidKit install is not reusable via version-aware policy (reason=${g.reason}, installed=${g.installedVersion??"unknown"}, expected=${g.expectedConstraint??"none"}). Proceeding with pipx install/upgrade.`);}catch(u){e$2.debug(`Global RapidKit version-aware check failed before pipx install: ${u}`);}let l=await he(
|
|
170
|
-
`,"utf-8");}async function
|
|
168
|
+
3. Use Poetry instead: npx workspai ${d.basename(e)} --install-method=poetry`))}}n.succeed("RapidKit installed in project virtualenv");try{let{checkRapidkitCoreAvailable:c}=await import('./pythonRapidkitExec-UMFLDIYR.js');if(!await c()&&!i){n.start("Checking optional global pipx installation");let y=await he(n,true);try{n.start("Installing RapidKit globally with pipx for CLI access"),await U(y,["install","rapidkit-core"]),n.succeed("RapidKit installed globally");}catch(h){n.warn("Could not install globally (non-fatal, project virtualenv has RapidKit)"),e$2.debug(`pipx install failed: ${h}`);}}}catch(c){n.succeed("Skipped optional global pipx installation"),e$2.debug(`Global install check skipped: ${c}`);}}async function at(e,t,n,i,a=false){if(!n)try{let{checkRapidkitCoreVersionCompatible:u}=await import('./pythonRapidkitExec-UMFLDIYR.js'),g=await u();if(g.isCompatible){t.succeed(`RapidKit ${g.installedVersion??""} already compatible globally; skipping pipx installation`),await k.outputFile(d.join(e,".rapidkit-global"),`RapidKit already available globally (version ${g.installedVersion??"unknown"}) and satisfies expected constraint ${g.expectedConstraint??"n/a"}; workspace will reuse the existing installation
|
|
169
|
+
`,"utf-8");return}g.reason==="constraint-missing"?e$2.debug('Version-aware global reuse skipped: no explicit rapidkit-core version constraint found. Set RAPIDKIT_CORE_PYTHON_PACKAGE (example: RAPIDKIT_CORE_PYTHON_PACKAGE="rapidkit-core>=0.4.0,<0.9.0") to enable version-aware reuse. Proceeding with pipx install/upgrade.'):g.reason==="constraint-unsupported"&&e$2.debug('Version-aware global reuse skipped: RAPIDKIT_CORE_PYTHON_PACKAGE uses an unsupported spec (path/url/git). Use a version range instead (example: RAPIDKIT_CORE_PYTHON_PACKAGE="rapidkit-core==0.4.0" or "rapidkit-core>=0.4.0,<0.9.0"). Proceeding with pipx install/upgrade.'),e$2.debug(`Global RapidKit install is not reusable via version-aware policy (reason=${g.reason}, installed=${g.installedVersion??"unknown"}, expected=${g.expectedConstraint??"none"}). Proceeding with pipx install/upgrade.`);}catch(u){e$2.debug(`Global RapidKit version-aware check failed before pipx install: ${u}`);}let l=await he(t,a);if(t.start("Installing RapidKit globally with pipx"),n){let u=f(i||{});if(!u)throw new f$1("Test mode installation",new Error("No local RapidKit path configured. Set WORKSPAI_DEV_PATH (or legacy RAPIDKIT_DEV_PATH)."));e$2.debug(`Installing from local path: ${u}`),t.text="Installing RapidKit from local path (test mode)",await U(l,["install","-e",u]);}else {t.text="Installing RapidKit from PyPI",d$1({status:"started",message:"Installing RapidKit from PyPI",installMethod:"pipx"});try{await U(l,["install","rapidkit-core"]),d$1({status:"succeeded",message:"RapidKit installed from PyPI",installMethod:"pipx"});}catch(u){try{t.text="RapidKit already installed globally, upgrading to match expected version",await U(l,["upgrade","rapidkit-core"]),d$1({status:"succeeded",message:"RapidKit upgraded from PyPI",installMethod:"pipx"});}catch(g){throw e$2.debug(`pipx install/upgrade failed: install=${u}, upgrade=${g}`),new i$1}}}t.succeed("RapidKit installed globally"),await k.outputFile(d.join(e,".rapidkit-global"),`RapidKit installed globally with pipx
|
|
170
|
+
`,"utf-8");}async function rn(e,t){let{skipGit:n=false,installPythonEngine:i=false,testMode:a=false,userConfig:l={},yes:u=false,installMethod:g,pythonVersion:c="3.10"}=t||{},f="venv";i&&(f=g||l.defaultInstallMethod||await(async()=>{try{return await execa("poetry",["--version"],{timeout:3e3}),"poetry"}catch{return e$2.warn("Poetry not found \u2014 auto-selecting venv. Pass --install-method poetry to override."),"venv"}})());let y=b$2("Registering workspace",{component:"create",phase:"workspace.register"}),h=!t?.lifecycleTransaction,p=t?.lifecycleTransaction??await mt(e);h||await qe(p,e);try{let r=d.basename(e),o=i?void 0:{bootstrapNote:"python-engine-skipped",pythonEngine:"skipped",pythonEngineReason:"project-workspace-foundation"};await Q(e,r,f,i?c:void 0,o),await H(e),await Z(e,r,f,i?c:void 0,t?.profile??"minimal",o),i?f==="poetry"?(await ze(e,r),await it(e,c,y,a,l,u)):f==="venv"?await Ee(e,c,y,a,l):await at(e,y,a,l,u):await ge(e,f,{pythonEngineSkipped:true}),i&&await ge(e,f),y.succeed(i?"Workspace registered":"Workspace registered (Python engine skipped)"),await b$3(e,{workspaceName:d.basename(e),silent:a}),h&&await J(p),n||await X(e,y,"Initial commit: Workspai workspace");}catch(r){if(y.fail("Failed to register workspace"),h)return F(p,r);throw r}}async function It(e,t,n){let i=b$2("Creating demo workspace",{component:"create",phase:"workspace.demo"});try{await k.ensureDir(e),i.succeed("Directory created"),i.start("Setting up demo kit generator");let a$1=JSON.stringify({name:`${t}-workspace`,version:"1.0.0",private:true,description:"Workspai demo workspace",scripts:{generate:"node generate-demo.js"}},null,2);await promises.writeFile(d.join(e,"package.json"),a$1,"utf-8"),await promises.writeFile(d.join(e,"generate-demo.js"),`#!/usr/bin/env node
|
|
171
171
|
/**
|
|
172
172
|
* Demo Kit Generator - Create FastAPI demo projects
|
|
173
173
|
*
|
|
@@ -636,7 +636,7 @@ pipx install rapidkit-core
|
|
|
636
636
|
## \u{1F6E0}\uFE0F Workspace Structure
|
|
637
637
|
|
|
638
638
|
\`\`\`
|
|
639
|
-
${
|
|
639
|
+
${t}/
|
|
640
640
|
\u251C\u2500\u2500 generate-demo.js # Demo project generator
|
|
641
641
|
\u251C\u2500\u2500 README.md # This file
|
|
642
642
|
\u2514\u2500\u2500 my-api/ # Your generated projects go here
|
|
@@ -652,7 +652,7 @@ ${n}/
|
|
|
652
652
|
---
|
|
653
653
|
|
|
654
654
|
**Generated with Workspai** | [GitHub](https://github.com/chistiq/workspai)
|
|
655
|
-
`;if(await promises.writeFile(d.join(e,"README.md"),u,"utf-8"),
|
|
655
|
+
`;if(await promises.writeFile(d.join(e,"README.md"),u,"utf-8"),i.succeed("Demo workspace setup complete"),!n)if(await Ye(e))i.warn("Git initialization skipped because target is already inside a git worktree");else {i.start("Initializing git repository");try{await execa("git",["init"],{cwd:e,env:a()}),await k.outputFile(d.join(e,".gitignore"),`# Dependencies
|
|
656
656
|
node_modules/
|
|
657
657
|
|
|
658
658
|
# Generated projects
|
|
@@ -665,17 +665,17 @@ __pycache__/
|
|
|
665
665
|
*.pyc
|
|
666
666
|
.venv/
|
|
667
667
|
.env
|
|
668
|
-
`,"utf-8"),await execa("git",["add","."],{cwd:e,env:a()}),await execa("git",["commit","-m","Initial commit: Demo workspace"],{cwd:e,env:a()}),
|
|
668
|
+
`,"utf-8"),await execa("git",["add","."],{cwd:e,env:a()}),await execa("git",["commit","-m","Initial commit: Demo workspace"],{cwd:e,env:a()}),i.succeed("Git repository initialized");}catch{i.warn("Could not initialize git repository");}}console.log(s.green(`
|
|
669
669
|
\u2728 Demo workspace created successfully!
|
|
670
670
|
`)),console.log(s.cyan("\u{1F4C2} Location:"),s.white(e)),console.log(s.cyan(`\u{1F680} Get started:
|
|
671
|
-
`)),console.log(s.white(` ${h$2(e)}`)),console.log(s.white(" node generate-demo.js my-api")),console.log(s.white(" cd my-api")),console.log(s.white(" workspai init")),console.log(s.white(" workspai dev")),console.log(),console.log(s.yellow("\u{1F4A1} Note:"),"This is a demo workspace. For Python engine features:"),console.log(s.cyan(" pipx install rapidkit-core")),console.log();}catch(a){throw
|
|
671
|
+
`)),console.log(s.white(` ${h$2(e)}`)),console.log(s.white(" node generate-demo.js my-api")),console.log(s.white(" cd my-api")),console.log(s.white(" workspai init")),console.log(s.white(" workspai dev")),console.log(),console.log(s.yellow("\u{1F4A1} Note:"),"This is a demo workspace. For Python engine features:"),console.log(s.cyan(" pipx install rapidkit-core")),console.log();}catch(a){throw i.fail("Failed to create demo workspace"),a}}async function Et(e,t,n,i,a,l,u,g=false,c=false){if(console.log(s.cyan(`
|
|
672
672
|
\u{1F50D} Dry-run mode - what would be created:
|
|
673
|
-
`)),console.log(s.white("\u{1F4C2} Workspace path:"),e),console.log(s.white("\u{1F4DB} Name:"),s.cyan(
|
|
673
|
+
`)),console.log(s.white("\u{1F4C2} Workspace path:"),e),console.log(s.white("\u{1F4DB} Name:"),s.cyan(t)),n)console.log(s.white("\u{1F4E6} Type:"),"Demo environment"),console.log(s.white(`
|
|
674
674
|
\u{1F4DD} Files to create:`)),console.log(s.gray(" - package.json")),console.log(s.gray(" - generate-demo.js (project generator)")),console.log(s.gray(" - README.md")),console.log(s.gray(" - .gitignore")),console.log(s.white(`
|
|
675
|
-
\u{1F3AF} Capabilities:`)),console.log(s.gray(" - Generate FastAPI/NestJS demo projects")),console.log(s.gray(" - No Python RapidKit installation required")),console.log(s.gray(" - Bundled templates"));else {let
|
|
675
|
+
\u{1F3AF} Capabilities:`)),console.log(s.gray(" - Generate FastAPI/NestJS demo projects")),console.log(s.gray(" - No Python RapidKit installation required")),console.log(s.gray(" - Bundled templates"));else {let f=a||"minimal",y=l,h=u,r=new Set(["python-only","polyglot","enterprise"]).has(f);console.log(s.white("\u{1F4E6} Profile:"),s.cyan(f)),console.log(s.white("\u{1F4DD} Configuration:")),r?(console.log(s.gray(` - Python version: ${h}`)),console.log(s.gray(` - Python engine: ${c?"Skipped":`Install with ${y}`}`)),console.log(s.gray(` - Git init: ${g?"No":"Yes"}`))):(console.log(s.gray(" - Python-free profile (no Python needed)")),console.log(s.gray(` - Git init: ${g?"No":"Yes"}`))),console.log(s.white(`
|
|
676
676
|
\u{1F4CB} Files to create:`)),console.log(s.gray(" - .workspai-workspace (workspace marker)")),console.log(s.gray(" - .workspai/ (workspace config directory)")),console.log(s.gray(" - README.md")),console.log(s.gray(" - .gitignore")),r&&!c&&console.log(s.gray(` - ${y==="poetry"?"pyproject.toml + poetry.lock":".venv/ (virtual environment)"}`)),console.log(s.white(`
|
|
677
677
|
\u2699\uFE0F Environment setup:`)),r&&c?console.log(s.gray(" - Python engine setup skipped")):r&&console.log(y==="poetry"?s.gray(" - Poetry virtual environment created (recommended, includes dependency management)"):y==="venv"?s.gray(" - Python venv created in .venv/ (standard, zero extra tools)"):s.gray(" - Global pipx install (isolated, not local to workspace)")),console.log(s.white(`
|
|
678
678
|
\u{1F680} Next steps:`)),console.log(s.gray(` 1. ${h$2(e)}`)),console.log(s.gray(" 2. npx workspai create project")),console.log(s.gray(" 3. npx workspai init")),console.log(s.gray(" 4. npx workspai dev")),console.log(s.white(`
|
|
679
679
|
\u{1F4A1} Learn more:`)),console.log(s.gray(" \u2022 Change profile later: workspai bootstrap --profile <profile>")),console.log(s.gray(" \u2022 Profile options: minimal|java-only|python-only|node-only|go-only|dotnet-only|polyglot|enterprise")),console.log(s.gray(" \u2022 Help: npx workspai --help"));}console.log(s.white(`
|
|
680
680
|
\u2728 To proceed: remove --dry-run flag
|
|
681
|
-
`));}export{X as a,
|
|
681
|
+
`));}export{X as a,Be as b,on as c,ft as d,ge as e,an as f,rn as g};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {f as f$1,e}from'./chunk-XF65LQ6M.js';import {a as a$1,b as b$2}from'./chunk-X7FYEKLI.js';import {c,d as d$1}from'./chunk-N4B2M44I.js';import {a,b}from'./chunk-COOVCORC.js';import {j as j$1,i}from'./chunk-OH6LV5JP.js';import {a as a$2,h}from'./chunk-BLEIUQL6.js';import {b as b$1}from'./chunk-VN2MKTQO.js';import {t}from'./chunk-VQZ5PI5J.js';import {q as q$1,p as p$1}from'./chunk-ODK4LCEL.js';import p from'chalk';import d from'fs';import f from'path';var K=p$1.readiness;function H(n){return n.vulnerableDependencies>0?`${n.vulnerableDependencies} known dependency vulnerability finding(s) reported`:`${n.blockingFindings} blocking dependency/security finding(s) reported`}var U=q$1.readiness;function q(n){let e=j(n,"workspace.contract.json");if(!d.existsSync(e))return [];try{let t=JSON.parse(d.readFileSync(e,"utf-8"));return (Array.isArray(t.projects)?t.projects:[]).map(i=>{let c=v(i),o=typeof c.externalPath=="string"?c.externalPath.trim():"",s=typeof c.relativePath=="string"?c.relativePath.trim():"",r=o||s;return r?f.resolve(n,r):""}).filter(Boolean)}catch{return []}}function B(n,e){let t=f.resolve(n);if(!b(t))return t;let a=j(e,"workspace.contract.json");if(d.existsSync(a))try{let o=JSON.parse(d.readFileSync(a,"utf-8")),s=Array.isArray(o.projects)?o.projects:[];for(let r of s){let y=v(r),m=typeof y.externalPath=="string"?y.externalPath.trim():"";if(m)return f.resolve(e,m);let g=typeof y.relativePath=="string"?y.relativePath.trim():"";if(g)return f.join(e,g)}}catch{}let i=M(e),c=Array.isArray(i.payload?.projects)?i.payload.projects:[];for(let o of c){let s=v(o),r=typeof s.path=="string"?s.path.trim():"";if(r)return f.resolve(r)}return t}function z(n){let e=j$1(n);return i(e,n)}function _(n,e){if(!d.existsSync(n))return null;let t=d.readdirSync(n).filter(a=>a.endsWith(".json")&&e.some(i=>i.test(a))).map(a=>f.join(n,a));return t.length===0?null:(t.sort((a,i)=>d.statSync(i).mtimeMs-d.statSync(a).mtimeMs),t[0])}function v(n){return n&&typeof n=="object"&&!Array.isArray(n)?n:{}}function J(n){for(let e of n)if(d.existsSync(e))return e;return null}function j(n,...e){let t$1=t(n,...e);return J(t$1)??t$1[0]}function A(n,e){let t=a$2(n,`.workspai/reports/${e}`);return J([t,f.join(n,".rapidkit","reports",e)])??t}async function Q(n){let{readWorkspaceRegistrySummary:e,resolveWorkspaceRegisteredProjects:t}=await import('./workspace-registry-summary-4KX4QD55.js'),a=await e(n);return a?a.projectCount:(await t(n)).summary.projectCount}function X(n,e,t){let a=j(n,"toolchain.lock");if(!d.existsSync(a))return {gate:"env",status:"fail",summary:"toolchain.lock is missing",details:["Run workspai bootstrap to pin runtime versions and generate a reproducible toolchain."],evidencePath:a};try{let i=JSON.parse(d.readFileSync(a,"utf-8")),c=v(i.runtime),o=["python","node","go","java","dotnet","rust","php"],s=o.filter(l=>{let u=v(c[l]);return typeof u.version=="string"&&u.version.trim().length>0});if(s.length===0)return {gate:"env",status:"fail",summary:"No runtime versions are pinned in toolchain.lock",details:["Pin at least one runtime version via workspai setup <runtime> and re-run bootstrap."],evidencePath:a};let r=[...new Set((Array.isArray(e)?e:[e]).filter(l=>l!=="unknown"))],y=r.filter(l=>o.includes(l)),m=r.filter(l=>!o.includes(l)),g=y.filter(l=>{let u=v(c[l]);return typeof u.version!="string"||u.version.trim().length===0});return g.length>0?{gate:"env",status:"fail",summary:`${t?.hasRegisteredProjects?"Project runtime":"Workspace"}${g.length===1?"":"s"} (${g.join(", ")}) ${g.length===1?"is":"are"} not pinned in toolchain.lock`,details:g.map(u=>`Run workspai setup ${u} and workspai bootstrap to lock ${u} for this workspace.`),evidencePath:a}:m.length>0?{gate:"env",status:"warn",summary:`${t?.hasRegisteredProjects?"Project runtime":"Workspace"}${m.length===1?"":"s"} (${m.join(", ")}) cannot be verified by toolchain.lock`,details:[`Pinned Workspai runtimes (${s.join(", ")}) do not prove the ${m.join(", ")} compiler or runtime toolchain.`,"Declare and verify this runtime or toolchain through the project command contract or organization CI policy."],evidencePath:a}:{gate:"env",status:"pass",summary:`Pinned runtimes: ${s.join(", ")}`,details:[],evidencePath:a}}catch{return {gate:"env",status:"fail",summary:"toolchain.lock is invalid JSON",details:["Regenerate lockfile with workspai bootstrap."],evidencePath:a}}}function M(n){let e=A(n,"doctor-last-run.json");if(!d.existsSync(e))return {payload:null,path:e};try{let t=JSON.parse(d.readFileSync(e,"utf-8"));return c(t,"workspace")?(d$1(t),{payload:t,path:e}):{payload:null,path:e}}catch{return {payload:null,path:e}}}function Y(n){let e=M(n);if(!e.payload)return {gate:{gate:"doctor",status:"fail",summary:"Doctor evidence is missing",details:["Run workspai doctor workspace --json before release readiness checks."],evidencePath:e.path},payload:null};let t=a$1(e.payload);if(t.hasSystemErrors)return {gate:{gate:"doctor",status:"fail",summary:"Doctor reported system errors",details:["Resolve system-level doctor errors before proceeding."],evidencePath:e.path},payload:e.payload};if(t.blockingFindings>0)return {gate:{gate:"doctor",status:"fail",summary:`Doctor reported ${t.blockingFindings} blocking finding(s)`,details:["Resolve the canonical Doctor findings and regenerate fresh Doctor evidence."],evidencePath:e.path},payload:e.payload};let a=[...t.advisoryFindings>0?[`${t.advisoryFindings} advisory finding(s)`]:[],...t.unknownFindings>0?[`${t.unknownFindings} unknown finding(s)`]:[],...t.contradictionCount>0?[`${t.contradictionCount} evidence contradiction(s)`]:[],...t.missingDiagnosisProjects>0?[`${t.missingDiagnosisProjects} project(s) without canonical diagnosis`]:[],...t.staleEvidence?["stale Doctor evidence"]:[],...t.unknownFreshness?["unknown Doctor evidence freshness"]:[],...t.minimumDiagnosisCompleteness<100?[`diagnosis completeness ${t.minimumDiagnosisCompleteness}%`]:[]];return a.length>0?{gate:{gate:"doctor",status:"warn",summary:"Doctor evidence requires attention",details:a,evidencePath:e.path},payload:e.payload}:{gate:{gate:"doctor",status:"pass",summary:"Doctor checks passed without issues",details:[],evidencePath:e.path},payload:e.payload}}function Z(n){let e=A(n,"analyze-last-run.json");if(!d.existsSync(e))return {gate:"analyze",status:"fail",summary:"Analyze evidence is missing",details:["Run workspai analyze --json before release readiness checks."],evidencePath:e};try{let t=JSON.parse(d.readFileSync(e,"utf-8"));b$1(p$1.analyze,t,e);let a=v(t.summary),i=String(a.verdict??"").toLowerCase(),c=Number(a.score??0),o=v(a.findings),s=Number(o.fail??0);return i==="blocked"||s>0?{gate:"analyze",status:"fail",summary:`Analyze verdict is blocked (score ${c}/100)`,details:["Resolve analyze findings and regenerate analyze-last-run.json."],evidencePath:e}:i==="needs-attention"?{gate:"analyze",status:"warn",summary:`Analyze needs attention (score ${c}/100)`,details:["Review analyze warnings before release."],evidencePath:e}:{gate:"analyze",status:"pass",summary:`Analyze passed (score ${c}/100)`,details:[],evidencePath:e}}catch{return {gate:"analyze",status:"fail",summary:"Analyze evidence is invalid or violates its contract",details:["Re-run workspai analyze --json to regenerate evidence."],evidencePath:e}}}function ee(n){try{let e=JSON.parse(d.readFileSync(n,"utf-8")),t=String(e.status??"").toLowerCase(),a=v(e.summary),i=Number(a.failedChecks??0);return t==="fail"||i>0?{gate:"verify",status:"fail",summary:"Verify-pack contract reports failed checks",details:["Fix failed verify checks and regenerate verify-pack contract evidence."],evidencePath:n}:t==="pass"?{gate:"verify",status:"pass",summary:"Verify-pack contract passed",details:[],evidencePath:n}:{gate:"verify",status:"warn",summary:"Verify-pack contract status is not explicit",details:["Ensure contract status is pass/fail and keep schema aligned with v1 contract."],evidencePath:n}}catch{return {gate:"verify",status:"fail",summary:"Verify-pack contract is invalid JSON",details:["Regenerate verify-pack contract artifact."],evidencePath:n}}}async function te(n,e){if(e.skipVerify)return {gate:"verify",status:"pass",summary:"Verify gate skipped (--skip-verify)",details:["Verification was explicitly skipped for this readiness run."]};let t=[a$2(n,".workspai/reports"),f.join(n,".rapidkit","reports")],a=t[0],i=t.map(s=>_(s,[/verify-pack-contract/i,/^verify.*\.json$/i])).find(s=>typeof s=="string")??null;if(i)return ee(i);let c=a$2(n,p$1.contractVerify),o=t.map(s=>_(s,[/workspace-contract-verify-last-run/i,/workspace-contract-verify/i])).find(s=>typeof s=="string")??null;if(o)try{let s=JSON.parse(d.readFileSync(o,"utf-8")),r=String(s.status??"").toLowerCase();if(r==="passed"||r==="pass")return {gate:"verify",status:"pass",summary:"Workspace contract verification passed (CLI cache)",details:[],evidencePath:o};if(r==="failed"||r==="fail")return {gate:"verify",status:"fail",summary:"Workspace contract verification failed (CLI cache)",details:(Array.isArray(s.violations)?s.violations:[]).slice(0,5),evidencePath:o}}catch{}try{let{verifyWorkspaceContract:s}=await import('./workspace-contract-VWPOIYHJ.js'),r=await s({workspacePath:n}),y={schemaVersion:"v1",source:"cli",generatedAt:new Date().toISOString(),status:r.status,contractPath:r.contractPath,projectCount:r.projectCount,checks:r.checks,violations:r.violations};return await h(n,p$1.contractVerify,y),r.status==="failed"?{gate:"verify",status:"fail",summary:"Workspace contract verification failed (CLI)",details:r.violations.slice(0,5),evidencePath:c}:{gate:"verify",status:"pass",summary:"Workspace contract verification passed (CLI)",details:[],evidencePath:c}}catch(s){return {gate:"verify",status:"fail",summary:"No verify evidence and workspace contract verification unavailable",details:["Run workspai workspace contract verify --json or export verify-pack contract from CI.",s instanceof Error?s.message:String(s)],evidencePath:f.join(a,"*verify*.json")}}}function ne(n,e){let t=A(e,"doctor-last-run.json");if(!n)return {gate:"dependency",status:"warn",summary:"Dependency risk check skipped (doctor evidence missing)",details:["Run workspai doctor workspace --json to include dependency findings."],evidencePath:t};let a=b$2(n);return a.blockingFindings>0||a.vulnerableDependencies>0?{gate:"dependency",status:"fail",summary:H(a),details:["Resolve the typed dependency/security findings and regenerate focused audit evidence."],evidencePath:t}:a.auditFailed>0?{gate:"dependency",status:"fail",summary:`${a.auditFailed} dependency audit(s) failed`,details:["Repair the audit runner or dependency environment; failed audits are not clean."],evidencePath:t}:a.missingDependencies>0||a.auditUnavailable>0||a.unknownFindings>0||a.advisoryFindings>0?{gate:"dependency",status:"warn",summary:"Dependency evidence is incomplete or requires attention",details:[...a.missingDependencies>0?[`${a.missingDependencies} project(s) have no materialized dependency tree.`]:[],...a.auditUnavailable>0?[`${a.auditUnavailable} audit provider(s) are unavailable or unsupported.`]:[],...a.unknownFindings>0?[`${a.unknownFindings} dependency/security finding(s) remain unknown.`]:[],...a.advisoryFindings>0?[`${a.advisoryFindings} dependency/security advisory finding(s) remain.`]:[]],evidencePath:t}:{gate:"dependency",status:"pass",summary:"No dependency vulnerabilities reported",details:[],evidencePath:t}}function ae(n){return n.some(e=>e.status==="fail")?"fail":n.some(e=>e.status==="warn")?"warn":"pass"}async function se(n,e){return h(n,K,e)}async function re(n={}){let e$1=f.resolve(n.startPath??process.cwd()),t=a(e$1)??e$1,a$1=await Q(t)>0,i=a$1&&b(e$1)?t:B(e$1,t),c=i===t?"unknown":z(i),o=a$1?c:"unknown";if(a$1&&i===t){let{resolveWorkspaceRegisteredProjects:h}=await import('./workspace-registry-summary-4KX4QD55.js'),T=await h(t),E=q(t);o=(E.length>0?E:T.summary.projects.map(w=>f.resolve(t,w.relativePath))).map(w=>z(w));}let s=X(t,o,{hasRegisteredProjects:a$1}),r=Y(t),y=Z(t),m=await te(t,{skipVerify:n.skipVerify}),g=ne(r.payload,t),l=[s,r.gate,y,m,g],u=ae(l),k={schemaVersion:U,generatedAt:new Date().toISOString(),workspacePath:t,projectPath:i,action:n.action,overallStatus:u,blocking:u==="fail",blockingReasons:l.filter(h=>h.status==="fail").map(h=>`${h.gate}: ${h.summary}`),gates:l};if(n.writeReport!==false){let h=f$1(k,{commandId:"workspaceReadiness",exitCode:u==="fail"?2:u==="warn"?1:0,generatedAt:k.generatedAt,blockers:k.blockingReasons,runId:e()});k.evidencePath=await se(t,h);}return k}function ie(n){return n==="pass"?p.green("PASS"):n==="warn"?p.yellow("WARN"):p.red("FAIL")}function oe(n){return n==="pass"?p.green("PASS"):n==="warn"?p.yellow("WARN"):p.red("FAIL")}async function Se(n){let e=await re({startPath:n.workspace,writeReport:true,skipVerify:n.skipVerify===true});if(n.json)console.log(JSON.stringify(e,null,2));else {console.log(p.bold.cyan(`
|
|
1
|
+
import {f as f$1,e}from'./chunk-XF65LQ6M.js';import {a as a$1,b as b$2}from'./chunk-X7FYEKLI.js';import {c,d as d$1}from'./chunk-N4B2M44I.js';import {a,b}from'./chunk-COOVCORC.js';import {j as j$1,i}from'./chunk-OH6LV5JP.js';import {a as a$2,h}from'./chunk-BLEIUQL6.js';import {b as b$1}from'./chunk-VN2MKTQO.js';import {t}from'./chunk-VQZ5PI5J.js';import {q as q$1,p as p$1}from'./chunk-ODK4LCEL.js';import p from'chalk';import d from'fs';import f from'path';var K=p$1.readiness;function H(n){return n.vulnerableDependencies>0?`${n.vulnerableDependencies} known dependency vulnerability finding(s) reported`:`${n.blockingFindings} blocking dependency/security finding(s) reported`}var U=q$1.readiness;function q(n){let e=j(n,"workspace.contract.json");if(!d.existsSync(e))return [];try{let t=JSON.parse(d.readFileSync(e,"utf-8"));return (Array.isArray(t.projects)?t.projects:[]).map(i=>{let c=v(i),o=typeof c.externalPath=="string"?c.externalPath.trim():"",s=typeof c.relativePath=="string"?c.relativePath.trim():"",r=o||s;return r?f.resolve(n,r):""}).filter(Boolean)}catch{return []}}function B(n,e){let t=f.resolve(n);if(!b(t))return t;let a=j(e,"workspace.contract.json");if(d.existsSync(a))try{let o=JSON.parse(d.readFileSync(a,"utf-8")),s=Array.isArray(o.projects)?o.projects:[];for(let r of s){let y=v(r),m=typeof y.externalPath=="string"?y.externalPath.trim():"";if(m)return f.resolve(e,m);let g=typeof y.relativePath=="string"?y.relativePath.trim():"";if(g)return f.join(e,g)}}catch{}let i=M(e),c=Array.isArray(i.payload?.projects)?i.payload.projects:[];for(let o of c){let s=v(o),r=typeof s.path=="string"?s.path.trim():"";if(r)return f.resolve(r)}return t}function z(n){let e=j$1(n);return i(e,n)}function _(n,e){if(!d.existsSync(n))return null;let t=d.readdirSync(n).filter(a=>a.endsWith(".json")&&e.some(i=>i.test(a))).map(a=>f.join(n,a));return t.length===0?null:(t.sort((a,i)=>d.statSync(i).mtimeMs-d.statSync(a).mtimeMs),t[0])}function v(n){return n&&typeof n=="object"&&!Array.isArray(n)?n:{}}function J(n){for(let e of n)if(d.existsSync(e))return e;return null}function j(n,...e){let t$1=t(n,...e);return J(t$1)??t$1[0]}function A(n,e){let t=a$2(n,`.workspai/reports/${e}`);return J([t,f.join(n,".rapidkit","reports",e)])??t}async function Q(n){let{readWorkspaceRegistrySummary:e,resolveWorkspaceRegisteredProjects:t}=await import('./workspace-registry-summary-ILVO7DEU.js'),a=await e(n);return a?a.projectCount:(await t(n)).summary.projectCount}function X(n,e,t){let a=j(n,"toolchain.lock");if(!d.existsSync(a))return {gate:"env",status:"fail",summary:"toolchain.lock is missing",details:["Run workspai bootstrap to pin runtime versions and generate a reproducible toolchain."],evidencePath:a};try{let i=JSON.parse(d.readFileSync(a,"utf-8")),c=v(i.runtime),o=["python","node","go","java","dotnet","rust","php"],s=o.filter(l=>{let u=v(c[l]);return typeof u.version=="string"&&u.version.trim().length>0});if(s.length===0)return {gate:"env",status:"fail",summary:"No runtime versions are pinned in toolchain.lock",details:["Pin at least one runtime version via workspai setup <runtime> and re-run bootstrap."],evidencePath:a};let r=[...new Set((Array.isArray(e)?e:[e]).filter(l=>l!=="unknown"))],y=r.filter(l=>o.includes(l)),m=r.filter(l=>!o.includes(l)),g=y.filter(l=>{let u=v(c[l]);return typeof u.version!="string"||u.version.trim().length===0});return g.length>0?{gate:"env",status:"fail",summary:`${t?.hasRegisteredProjects?"Project runtime":"Workspace"}${g.length===1?"":"s"} (${g.join(", ")}) ${g.length===1?"is":"are"} not pinned in toolchain.lock`,details:g.map(u=>`Run workspai setup ${u} and workspai bootstrap to lock ${u} for this workspace.`),evidencePath:a}:m.length>0?{gate:"env",status:"warn",summary:`${t?.hasRegisteredProjects?"Project runtime":"Workspace"}${m.length===1?"":"s"} (${m.join(", ")}) cannot be verified by toolchain.lock`,details:[`Pinned Workspai runtimes (${s.join(", ")}) do not prove the ${m.join(", ")} compiler or runtime toolchain.`,"Declare and verify this runtime or toolchain through the project command contract or organization CI policy."],evidencePath:a}:{gate:"env",status:"pass",summary:`Pinned runtimes: ${s.join(", ")}`,details:[],evidencePath:a}}catch{return {gate:"env",status:"fail",summary:"toolchain.lock is invalid JSON",details:["Regenerate lockfile with workspai bootstrap."],evidencePath:a}}}function M(n){let e=A(n,"doctor-last-run.json");if(!d.existsSync(e))return {payload:null,path:e};try{let t=JSON.parse(d.readFileSync(e,"utf-8"));return c(t,"workspace")?(d$1(t),{payload:t,path:e}):{payload:null,path:e}}catch{return {payload:null,path:e}}}function Y(n){let e=M(n);if(!e.payload)return {gate:{gate:"doctor",status:"fail",summary:"Doctor evidence is missing",details:["Run workspai doctor workspace --json before release readiness checks."],evidencePath:e.path},payload:null};let t=a$1(e.payload);if(t.hasSystemErrors)return {gate:{gate:"doctor",status:"fail",summary:"Doctor reported system errors",details:["Resolve system-level doctor errors before proceeding."],evidencePath:e.path},payload:e.payload};if(t.blockingFindings>0)return {gate:{gate:"doctor",status:"fail",summary:`Doctor reported ${t.blockingFindings} blocking finding(s)`,details:["Resolve the canonical Doctor findings and regenerate fresh Doctor evidence."],evidencePath:e.path},payload:e.payload};let a=[...t.advisoryFindings>0?[`${t.advisoryFindings} advisory finding(s)`]:[],...t.unknownFindings>0?[`${t.unknownFindings} unknown finding(s)`]:[],...t.contradictionCount>0?[`${t.contradictionCount} evidence contradiction(s)`]:[],...t.missingDiagnosisProjects>0?[`${t.missingDiagnosisProjects} project(s) without canonical diagnosis`]:[],...t.staleEvidence?["stale Doctor evidence"]:[],...t.unknownFreshness?["unknown Doctor evidence freshness"]:[],...t.minimumDiagnosisCompleteness<100?[`diagnosis completeness ${t.minimumDiagnosisCompleteness}%`]:[]];return a.length>0?{gate:{gate:"doctor",status:"warn",summary:"Doctor evidence requires attention",details:a,evidencePath:e.path},payload:e.payload}:{gate:{gate:"doctor",status:"pass",summary:"Doctor checks passed without issues",details:[],evidencePath:e.path},payload:e.payload}}function Z(n){let e=A(n,"analyze-last-run.json");if(!d.existsSync(e))return {gate:"analyze",status:"fail",summary:"Analyze evidence is missing",details:["Run workspai analyze --json before release readiness checks."],evidencePath:e};try{let t=JSON.parse(d.readFileSync(e,"utf-8"));b$1(p$1.analyze,t,e);let a=v(t.summary),i=String(a.verdict??"").toLowerCase(),c=Number(a.score??0),o=v(a.findings),s=Number(o.fail??0);return i==="blocked"||s>0?{gate:"analyze",status:"fail",summary:`Analyze verdict is blocked (score ${c}/100)`,details:["Resolve analyze findings and regenerate analyze-last-run.json."],evidencePath:e}:i==="needs-attention"?{gate:"analyze",status:"warn",summary:`Analyze needs attention (score ${c}/100)`,details:["Review analyze warnings before release."],evidencePath:e}:{gate:"analyze",status:"pass",summary:`Analyze passed (score ${c}/100)`,details:[],evidencePath:e}}catch{return {gate:"analyze",status:"fail",summary:"Analyze evidence is invalid or violates its contract",details:["Re-run workspai analyze --json to regenerate evidence."],evidencePath:e}}}function ee(n){try{let e=JSON.parse(d.readFileSync(n,"utf-8")),t=String(e.status??"").toLowerCase(),a=v(e.summary),i=Number(a.failedChecks??0);return t==="fail"||i>0?{gate:"verify",status:"fail",summary:"Verify-pack contract reports failed checks",details:["Fix failed verify checks and regenerate verify-pack contract evidence."],evidencePath:n}:t==="pass"?{gate:"verify",status:"pass",summary:"Verify-pack contract passed",details:[],evidencePath:n}:{gate:"verify",status:"warn",summary:"Verify-pack contract status is not explicit",details:["Ensure contract status is pass/fail and keep schema aligned with v1 contract."],evidencePath:n}}catch{return {gate:"verify",status:"fail",summary:"Verify-pack contract is invalid JSON",details:["Regenerate verify-pack contract artifact."],evidencePath:n}}}async function te(n,e){if(e.skipVerify)return {gate:"verify",status:"pass",summary:"Verify gate skipped (--skip-verify)",details:["Verification was explicitly skipped for this readiness run."]};let t=[a$2(n,".workspai/reports"),f.join(n,".rapidkit","reports")],a=t[0],i=t.map(s=>_(s,[/verify-pack-contract/i,/^verify.*\.json$/i])).find(s=>typeof s=="string")??null;if(i)return ee(i);let c=a$2(n,p$1.contractVerify),o=t.map(s=>_(s,[/workspace-contract-verify-last-run/i,/workspace-contract-verify/i])).find(s=>typeof s=="string")??null;if(o)try{let s=JSON.parse(d.readFileSync(o,"utf-8")),r=String(s.status??"").toLowerCase();if(r==="passed"||r==="pass")return {gate:"verify",status:"pass",summary:"Workspace contract verification passed (CLI cache)",details:[],evidencePath:o};if(r==="failed"||r==="fail")return {gate:"verify",status:"fail",summary:"Workspace contract verification failed (CLI cache)",details:(Array.isArray(s.violations)?s.violations:[]).slice(0,5),evidencePath:o}}catch{}try{let{verifyWorkspaceContract:s}=await import('./workspace-contract-PMHUUKFM.js'),r=await s({workspacePath:n}),y={schemaVersion:"v1",source:"cli",generatedAt:new Date().toISOString(),status:r.status,contractPath:r.contractPath,projectCount:r.projectCount,checks:r.checks,violations:r.violations};return await h(n,p$1.contractVerify,y),r.status==="failed"?{gate:"verify",status:"fail",summary:"Workspace contract verification failed (CLI)",details:r.violations.slice(0,5),evidencePath:c}:{gate:"verify",status:"pass",summary:"Workspace contract verification passed (CLI)",details:[],evidencePath:c}}catch(s){return {gate:"verify",status:"fail",summary:"No verify evidence and workspace contract verification unavailable",details:["Run workspai workspace contract verify --json or export verify-pack contract from CI.",s instanceof Error?s.message:String(s)],evidencePath:f.join(a,"*verify*.json")}}}function ne(n,e){let t=A(e,"doctor-last-run.json");if(!n)return {gate:"dependency",status:"warn",summary:"Dependency risk check skipped (doctor evidence missing)",details:["Run workspai doctor workspace --json to include dependency findings."],evidencePath:t};let a=b$2(n);return a.blockingFindings>0||a.vulnerableDependencies>0?{gate:"dependency",status:"fail",summary:H(a),details:["Resolve the typed dependency/security findings and regenerate focused audit evidence."],evidencePath:t}:a.auditFailed>0?{gate:"dependency",status:"fail",summary:`${a.auditFailed} dependency audit(s) failed`,details:["Repair the audit runner or dependency environment; failed audits are not clean."],evidencePath:t}:a.missingDependencies>0||a.auditUnavailable>0||a.unknownFindings>0||a.advisoryFindings>0?{gate:"dependency",status:"warn",summary:"Dependency evidence is incomplete or requires attention",details:[...a.missingDependencies>0?[`${a.missingDependencies} project(s) have no materialized dependency tree.`]:[],...a.auditUnavailable>0?[`${a.auditUnavailable} audit provider(s) are unavailable or unsupported.`]:[],...a.unknownFindings>0?[`${a.unknownFindings} dependency/security finding(s) remain unknown.`]:[],...a.advisoryFindings>0?[`${a.advisoryFindings} dependency/security advisory finding(s) remain.`]:[]],evidencePath:t}:{gate:"dependency",status:"pass",summary:"No dependency vulnerabilities reported",details:[],evidencePath:t}}function ae(n){return n.some(e=>e.status==="fail")?"fail":n.some(e=>e.status==="warn")?"warn":"pass"}async function se(n,e){return h(n,K,e)}async function re(n={}){let e$1=f.resolve(n.startPath??process.cwd()),t=a(e$1)??e$1,a$1=await Q(t)>0,i=a$1&&b(e$1)?t:B(e$1,t),c=i===t?"unknown":z(i),o=a$1?c:"unknown";if(a$1&&i===t){let{resolveWorkspaceRegisteredProjects:h}=await import('./workspace-registry-summary-ILVO7DEU.js'),T=await h(t),E=q(t);o=(E.length>0?E:T.summary.projects.map(w=>f.resolve(t,w.relativePath))).map(w=>z(w));}let s=X(t,o,{hasRegisteredProjects:a$1}),r=Y(t),y=Z(t),m=await te(t,{skipVerify:n.skipVerify}),g=ne(r.payload,t),l=[s,r.gate,y,m,g],u=ae(l),k={schemaVersion:U,generatedAt:new Date().toISOString(),workspacePath:t,projectPath:i,action:n.action,overallStatus:u,blocking:u==="fail",blockingReasons:l.filter(h=>h.status==="fail").map(h=>`${h.gate}: ${h.summary}`),gates:l};if(n.writeReport!==false){let h=f$1(k,{commandId:"workspaceReadiness",exitCode:u==="fail"?2:u==="warn"?1:0,generatedAt:k.generatedAt,blockers:k.blockingReasons,runId:e()});k.evidencePath=await se(t,h);}return k}function ie(n){return n==="pass"?p.green("PASS"):n==="warn"?p.yellow("WARN"):p.red("FAIL")}function oe(n){return n==="pass"?p.green("PASS"):n==="warn"?p.yellow("WARN"):p.red("FAIL")}async function Se(n){let e=await re({startPath:n.workspace,writeReport:true,skipVerify:n.skipVerify===true});if(n.json)console.log(JSON.stringify(e,null,2));else {console.log(p.bold.cyan(`
|
|
2
2
|
\u{1F6A6} Workspai Release Readiness
|
|
3
3
|
`)),console.log(p.bold(`Workspace: ${p.cyan(f.basename(e.workspacePath))}`)),console.log(p.gray(`Path: ${e.workspacePath}`)),console.log(`Overall: ${oe(e.overallStatus)}`);for(let t of e.gates){console.log(` - ${t.gate}: ${ie(t.status)} ${t.summary}`);for(let a of t.details)console.log(p.gray(` ${a}`));t.evidencePath&&console.log(p.gray(` evidence: ${t.evidencePath}`));}e.evidencePath&&console.log(p.gray(`
|
|
4
4
|
Evidence saved: ${e.evidencePath}`));}n.strict&&e.overallStatus!=="pass"&&process.exit(1);}export{re as a,Se as b};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{b as buildWorkspaceManifest,f as createProject,a as initializeStandaloneGitRepository,g as registerWorkspaceAtPath,d as resolvePythonFreeFallbackProfile,c as syncWorkspaceFoundationFiles,e as writeWorkspaceLauncher}from'./chunk-
|
|
1
|
+
export{b as buildWorkspaceManifest,f as createProject,a as initializeStandaloneGitRepository,g as registerWorkspaceAtPath,d as resolvePythonFreeFallbackProfile,c as syncWorkspaceFoundationFiles,e as writeWorkspaceLauncher}from'./chunk-VJQPIH2S.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{d as DOCTOR_WORKSPACE_REPORT_PATH,r as applyEnvKeyAddFix,n as applyFileAppendFix,o as applyFileCopyFix,m as applyFileCreateFix,q as applyJsonEditFix,s as applyMakefileTargetFix,l as applyPackageScriptFix,j as assertOperationPathInsideProject,k as assertOperationPathInsideProjectResolved,i as buildRepairOperationIdentity,u as computeDoctorFixAwareExitCode,t as computeDoctorGateExitCode,p as decodeJsonPointerSegment,h as parseInternalRepairCommand,g as parsePackageScriptFix,f as pythonPackageListProvesDependencies,e as resolveDoctorPolicyProfile,v as runDoctor}from'./chunk-
|
|
1
|
+
export{d as DOCTOR_WORKSPACE_REPORT_PATH,r as applyEnvKeyAddFix,n as applyFileAppendFix,o as applyFileCopyFix,m as applyFileCreateFix,q as applyJsonEditFix,s as applyMakefileTargetFix,l as applyPackageScriptFix,j as assertOperationPathInsideProject,k as assertOperationPathInsideProjectResolved,i as buildRepairOperationIdentity,u as computeDoctorFixAwareExitCode,t as computeDoctorGateExitCode,p as decodeJsonPointerSegment,h as parseInternalRepairCommand,g as parsePackageScriptFix,f as pythonPackageListProvesDependencies,e as resolveDoctorPolicyProfile,v as runDoctor}from'./chunk-566NQQTJ.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{f as GOAL_INDEX_PATH,e as GOAL_INDEX_SCHEMA_VERSION,k as buildGoalLifecycleResult,l as inspectGoalLifecycle,q as linkGoalChangeTransaction,p as linkGoalRepairTransaction,n as prepareGoalVerification,m as transitionGoalLifecycle,o as verifyGoalLifecycle}from'./chunk-
|
|
1
|
+
export{f as GOAL_INDEX_PATH,e as GOAL_INDEX_SCHEMA_VERSION,k as buildGoalLifecycleResult,l as inspectGoalLifecycle,q as linkGoalChangeTransaction,p as linkGoalRepairTransaction,n as prepareGoalVerification,m as transitionGoalLifecycle,o as verifyGoalLifecycle}from'./chunk-QBKOPXKC.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{a as planGoalPack}from'./chunk-
|
|
1
|
+
export{a as planGoalPack}from'./chunk-ABUSBLBH.js';export{b as GOAL_AGENT_HANDOFF_SCHEMA_VERSION,f as GOAL_INDEX_PATH,e as GOAL_INDEX_SCHEMA_VERSION,g as GOAL_LIFECYCLE_RESULT_SCHEMA_VERSION,d as GOAL_PACK_LAST_RUN_PATH,a as GOAL_PACK_SCHEMA_VERSION,c as GOAL_PLAN_RESULT_SCHEMA_VERSION}from'./chunk-QBKOPXKC.js';
|