@a-company/paradigm 6.6.6 → 7.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{accept-orchestration-JHDCVHB2.js → accept-orchestration-WMGFGYDK.js} +1 -1
- package/dist/{agent-loader-VGBPL3TH.js → agent-loader-Z753DQWH.js} +1 -1
- package/dist/{agents-suggest-IKY6VD2R.js → agents-suggest-WZEGQT5E.js} +1 -1
- package/dist/{ambient-FNNFB4AP.js → ambient-HAXPDIWK.js} +1 -1
- package/dist/ambient-OW5M5LVN.js +2 -0
- package/dist/ambient-QB7V4TBR.js +6 -0
- package/dist/calibrate-PHVP7RPH.js +4 -0
- package/dist/captain-3COP6YTD.js +2 -0
- package/dist/chunk-33ERV2MW.js +18 -0
- package/dist/chunk-4CGPLLWQ.js +30 -0
- package/dist/chunk-6HVOZANP.js +4 -0
- package/dist/chunk-ACJWUOMA.js +3 -0
- package/dist/chunk-B5KLSBOZ.js +2 -0
- package/dist/chunk-CHSU6LTR.js +2 -0
- package/dist/chunk-DLMDHS2X.js +10 -0
- package/dist/chunk-ECO3LHCE.js +2 -0
- package/dist/chunk-EG22HDXI.js +33 -0
- package/dist/{chunk-5RFISGUW.js → chunk-G6DK3ND3.js} +250 -25
- package/dist/{chunk-GD4F2HC6.js → chunk-H55W26AR.js} +1 -1
- package/dist/chunk-HSY75GRR.js +6 -0
- package/dist/chunk-KAUGQMXU.js +4 -0
- package/dist/chunk-KP5VOYAH.js +20 -0
- package/dist/chunk-OIYJUU6T.js +25 -0
- package/dist/chunk-RDWWSQGH.js +142 -0
- package/dist/chunk-RVXQNS6K.js +30 -0
- package/dist/chunk-VPNJL4LS.js +93 -0
- package/dist/{chunk-XKNJSPB5.js → chunk-W4BW7GXA.js} +1 -1
- package/dist/chunk-XPPFILCM.js +2 -0
- package/dist/chunk-YCDOA5IQ.js +18 -0
- package/dist/chunk-YQK3XU63.js +504 -0
- package/dist/{chunk-TQOT2LBO.js → chunk-YXLGVOZO.js} +1 -1
- package/dist/chunk-ZSWXLFN7.js +12 -0
- package/dist/{compliance-J3VOV445.js → compliance-4P3EE5OA.js} +1 -1
- package/dist/{diff-ANKTFDRA.js → diff-VBVIUNL5.js} +1 -1
- package/dist/{docs-TSAAS4W3.js → docs-NTP6UENF.js} +1 -1
- package/dist/doctor-CBZYYQQH.js +2 -0
- package/dist/{hooks-45WDP6QS.js → hooks-AXBWYJ5V.js} +1 -1
- package/dist/index.js +6 -6
- package/dist/journal-loader-CNNA4EAU.js +2 -0
- package/dist/lore-loader-HAZ5FRLP.js +2 -0
- package/dist/mcp.js +3 -3
- package/dist/{migrate-R64OQGSM.js → migrate-5M4KUQ2L.js} +1 -1
- package/dist/nomination-engine-ORHH4L2W.js +2 -0
- package/dist/{nomination-engine-NCLTGMAK.js → nomination-engine-YRHZZZUN.js} +1 -1
- package/dist/notebook-loader-TZVIMNDJ.js +2 -0
- package/dist/orchestrate-MLUGQOEJ.js +8 -0
- package/dist/orchestration-O2OVPTIZ.js +2 -0
- package/dist/{platform-server-ANOALDPL.js → platform-server-Y6TLEXR2.js} +1 -1
- package/dist/propose-block-ZEMEWJQF.js +2 -0
- package/dist/{providers-TBPOE4DI.js → providers-5EHD45C6.js} +1 -1
- package/dist/reindex-ZLDQBFUR.js +2 -0
- package/dist/{serve-3FMUWW5K.js → serve-XZ6GBUS3.js} +1 -1
- package/dist/session-tracker-BZ7FU4AT.js +2 -0
- package/dist/session-work-log-FF7CKMWP.js +2 -0
- package/dist/session-work-log-T2IE4Y4T.js +2 -0
- package/dist/{shift-TNA2E5O7.js → shift-PM4GI736.js} +2 -2
- package/dist/solo-OWR3MX74.js +3 -0
- package/dist/{spawn-KKDDR6UR.js → spawn-PHA2SVQ3.js} +1 -1
- package/dist/{symphony-G6IENE4K.js → symphony-CFAYJGLF.js} +1 -1
- package/dist/{symphony-7INZR43F.js → symphony-L56O5ZG3.js} +3 -3
- package/dist/{symphony-relay-2RHG25Z4.js → symphony-relay-Y2UR3YNR.js} +1 -1
- package/dist/task-loader-H7HQAYGL.js +2 -0
- package/dist/task-loader-YZME4RKE.js +2 -0
- package/dist/task-settlement-HINBVZBE.js +3 -0
- package/dist/task-settlement-XC6E6JNT.js +3 -0
- package/dist/team-25LK6CWM.js +2 -0
- package/dist/team-funnel-RAJ6EDG3.js +2 -0
- package/dist/tools-GAU5WOEI.js +2 -0
- package/dist/university-content/notes/N-para-801-cid-becomes-real.md +60 -0
- package/dist/university-content/notes/N-para-801-falsifiable-self-improvement.md +66 -0
- package/dist/university-content/notes/N-para-801-honest-routing-and-the-method.md +57 -0
- package/dist/university-content/notes/N-para-801-orchestration-emits-dag.md +60 -0
- package/dist/university-content/notes/N-para-801-settlement-closes-the-loop.md +64 -0
- package/dist/university-content/notes/N-para-801-the-task-dag.md +93 -0
- package/dist/university-content/paths/LP-para-801.yaml +43 -0
- package/dist/university-content/quizzes/Q-para-801-cid-becomes-real.yaml +54 -0
- package/dist/university-content/quizzes/Q-para-801-falsifiable-self-improvement.yaml +54 -0
- package/dist/university-content/quizzes/Q-para-801-honest-routing-and-the-method.yaml +54 -0
- package/dist/university-content/quizzes/Q-para-801-orchestration-emits-dag.yaml +54 -0
- package/dist/university-content/quizzes/Q-para-801-settlement-closes-the-loop.yaml +54 -0
- package/dist/university-content/quizzes/Q-para-801-the-task-dag.yaml +54 -0
- package/dist/university-ui/assets/{index-DrtbBC21.js → index-AbTjHBCf.js} +2 -2
- package/dist/university-ui/assets/{index-DrtbBC21.js.map → index-AbTjHBCf.js.map} +1 -1
- package/dist/university-ui/index.html +1 -1
- package/dist/work-log-loader-CRVTOMVB.js +2 -0
- package/package.json +1 -1
- package/dist/ambient-AI42BOM5.js +0 -35
- package/dist/chunk-3OXR6F65.js +0 -666
- package/dist/chunk-4N56FRNE.js +0 -29
- package/dist/chunk-6QXBXZF6.js +0 -3
- package/dist/chunk-AMLD7IYC.js +0 -10
- package/dist/chunk-DVZWCXB6.js +0 -2
- package/dist/chunk-F6E3HW45.js +0 -14
- package/dist/chunk-K7X3Z3GL.js +0 -4
- package/dist/chunk-LAYBUKMB.js +0 -14
- package/dist/chunk-MU5YWTNE.js +0 -24
- package/dist/chunk-PMKZMCTS.js +0 -111
- package/dist/chunk-QGZRM6ZB.js +0 -2
- package/dist/chunk-XQLO5URP.js +0 -11
- package/dist/doctor-L5XZENCF.js +0 -2
- package/dist/journal-loader-GLH7XFTK.js +0 -2
- package/dist/lore-loader-D2ISOASW.js +0 -2
- package/dist/notebook-loader-3J2OFMS3.js +0 -2
- package/dist/orchestrate-UG5QXNAU.js +0 -8
- package/dist/reindex-PTIQ2UGY.js +0 -2
- package/dist/session-tracker-HHNY6J4I.js +0 -2
- package/dist/session-work-log-MEJ33TYD.js +0 -2
- package/dist/session-work-log-ZVVJGO7X.js +0 -2
- package/dist/task-loader-NZFDTUQ5.js +0 -2
- package/dist/team-PEGP6F7S.js +0 -2
- package/dist/tools-PUSDXUYE.js +0 -2
- /package/dist/{chunk-HXGYVS2N.js → chunk-ECLUYHAR.js} +0 -0
- /package/dist/{chunk-CVPKQ3JH.js → chunk-HE2NA5QF.js} +0 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {c,a as a$1}from'./chunk-YNDPSWOE.js';import {e}from'./chunk-VIG5LSGZ.js';import {a}from'./chunk-LKAT7IAK.js';import*as t from'fs';import*as i from'path';import*as w from'js-yaml';import l from'chalk';async function rs(P={}){let p=P.rootDir||process.cwd(),s=[],$=P.quiet,E=P.context;$||(console.log(l.blue(`
|
|
3
|
+
\u{1FA7A} Paradigm Doctor
|
|
4
|
+
`)),console.log(E?l.gray(`Running context audit checks...
|
|
5
|
+
`):l.gray(`Checking Paradigm setup...
|
|
6
|
+
`)));let q=a.command("doctor").start("Running health checks");if(!E){let N=function(a){let e=[];try{let o=t.readdirSync(a,{withFileTypes:!0});for(let n of o){if(n.name==="node_modules"||n.name==="dist"||n.name===".git")continue;let d=i.join(a,n.name);n.isDirectory()?e.push(...N(d)):n.name===".purpose"&&e.push(d);}}catch{}return e};let r=i.join(p,".paradigm");if(t.existsSync(r))if(t.statSync(r).isFile())s.push({name:".paradigm",status:"warn",message:"Legacy file format (should be directory)",fix:"paradigm upgrade --all"});else {s.push({name:".paradigm/",status:"ok",message:"Directory exists"});let e$1=i.join(r,"config.yaml");if(t.existsSync(e$1))try{let f=t.readFileSync(e$1,"utf8");e(f),s.push({name:".paradigm/config.yaml",status:"ok",message:"Valid YAML"});}catch(f){s.push({name:".paradigm/config.yaml",status:"error",message:`Invalid YAML: ${f.message}`,fix:"Check YAML syntax"});}else s.push({name:".paradigm/config.yaml",status:"missing",message:"Config file not found",fix:"paradigm init --force"});let o=["logger.md","probe.md","symbols.md"],n=i.join(r,"specs");if(t.existsSync(n))for(let f of o){let x=i.join(n,f);t.existsSync(x)?s.push({name:`.paradigm/specs/${f}`,status:"ok",message:"Present"}):s.push({name:`.paradigm/specs/${f}`,status:"missing",message:"Spec file not found",fix:"paradigm upgrade --all"});}else s.push({name:".paradigm/specs/",status:"missing",message:"Specs directory not found",fix:"paradigm upgrade --all"});let d=i.join(r,"docs");t.existsSync(d)?s.push({name:".paradigm/docs/",status:"ok",message:"Directory exists"}):s.push({name:".paradigm/docs/",status:"missing",message:"Docs directory not found",fix:"paradigm upgrade --all"});let u=i.join(r,"prompts");t.existsSync(u)?s.push({name:".paradigm/prompts/",status:"ok",message:"Directory exists"}):s.push({name:".paradigm/prompts/",status:"missing",message:"Prompts directory not found",fix:"paradigm upgrade --all"});let h=["specs","implementation-guides","prompts","decisions"],m=[];for(let f of h){let x=i.join(r,f);if(t.existsSync(x)&&t.statSync(x).isDirectory()){let k=i.join(x,".index.yaml");t.existsSync(k)||m.push(`.paradigm/${f}/`);}}m.length>0?s.push({name:"Docs-class indexes",status:"warn",message:`${m.length} director${m.length===1?"y":"ies"} missing .index.yaml: ${m.join(", ")}`,fix:"paradigm docs scaffold"}):s.push({name:"Docs-class indexes",status:"ok",message:"All docs-class directories have .index.yaml"});let y=i.join(r,"scan-index.json"),b=i.join(p,".paradigm-scan-index.json");if(t.existsSync(y)){let f=t.statSync(y),x=Date.now()-f.mtime.getTime(),k=Math.floor(x/(1e3*60*60));k>24?s.push({name:".paradigm/scan-index.json",status:"warn",message:`Stale (${k} hours old)`,fix:"paradigm index"}):s.push({name:".paradigm/scan-index.json",status:"ok",message:k>0?`${k} hours old`:"Fresh"});}else t.existsSync(b)?s.push({name:"scan-index",status:"warn",message:"Using legacy location",fix:"paradigm index"}):s.push({name:".paradigm/scan-index.json",status:"missing",message:"Not generated",fix:"paradigm index"});}else s.push({name:".paradigm/",status:"missing",message:"Not initialized",fix:"paradigm init"});let g=c(p);if(g.detected){let a=a$1(g.detected);if(a){let e=i.join(p,a.outputPath);t.existsSync(e)?s.push({name:a.outputPath,status:"ok",message:`Present (${g.detected})`}):s.push({name:a.outputPath,status:"missing",message:`Not generated for ${g.detected}`,fix:"paradigm sync"});}}let c$1=i.join(p,".premise");t.existsSync(c$1)?s.push({name:".premise",status:"ok",message:"Present"}):s.push({name:".premise",status:"missing",message:"Not found (optional)"});let A=i.join(p,".purpose");t.existsSync(A)?s.push({name:".purpose",status:"ok",message:"Present"}):s.push({name:".purpose",status:"warn",message:"Root .purpose not found",fix:"paradigm init"});let R=i.join(p,".paradigm","config.yaml");if(t.existsSync(R))try{let a=t.readFileSync(R,"utf8"),o=w.load(a)?.["purpose-required"];if(o&&Array.isArray(o)){let n=[];for(let d of o){if(!d.pattern)continue;let{glob:u}=await import('glob'),h=await u(d.pattern,{cwd:p,nodir:!1});for(let m of h){let y=i.join(p,m);try{t.statSync(y).isDirectory()&&!t.existsSync(i.join(y,".purpose"))&&n.push(m);}catch{}}}n.length>0?s.push({name:"Purpose-required",status:"warn",message:`${n.length} director${n.length===1?"y":"ies"} missing .purpose: ${n.join(", ")}`,fix:"Create .purpose files with paradigm_purpose_init + paradigm_purpose_add_component"}):s.push({name:"Purpose-required",status:"ok",message:"All required directories have .purpose files"});}}catch{}let M=/\[NEEDS CLARIFICATION:\s*[^\]]+\]/gi,F=0,Y=N(p);for(let a of Y)try{let o=t.readFileSync(a,"utf8").match(M);o&&(F+=o.length);}catch{}F>0?s.push({name:"Clarification markers",status:"warn",message:`${F} [NEEDS CLARIFICATION] marker${F>1?"s":""} found in .purpose files`,fix:"Resolve open clarification markers before shipping"}):Y.length>0&&s.push({name:"Clarification markers",status:"ok",message:"No unresolved markers"});let I=i.join(p,"portal.yaml");if(t.existsSync(I))try{let a=t.readFileSync(I,"utf8"),e=w.load(a);if(e?.version&&e?.gates){let o=Object.keys(e.gates||{}).length,n=Object.keys(e.routes||{}).length;s.push({name:"portal.yaml",status:"ok",message:`Valid (${o} gates, ${n} routes)`});}else s.push({name:"portal.yaml",status:"warn",message:"Missing version or gates section",fix:'Add version: "1.0" and gates: {} to portal.yaml'});}catch(a){s.push({name:"portal.yaml",status:"error",message:`Invalid YAML: ${a.message}`,fix:"Check YAML syntax in portal.yaml"});}if(t.existsSync(I))try{let{checkPortalCompliance:a,getComplianceSummary:e}=await import('./portal-compliance-JONQ4SOP.js'),o=await a(p),n=e(o);s.push({name:"Portal compliance",status:n.status,message:n.message,fix:n.status!=="ok"?"paradigm portal check":void 0});}catch{}{let a=i.join(p,".paradigm","scan-index.json"),e=i.join(p,".paradigm","roster.yaml");try{if(t.existsSync(a)){let o=t.readFileSync(a,"utf8"),n=JSON.parse(o),d=Object.keys(n.components??{}).length,u=Object.keys(n.aspects??{}).length;if(d>0){let h=!1;if(t.existsSync(e))try{let y=w.load(t.readFileSync(e,"utf8"));h=Array.isArray(y?.active)&&y.active.includes("compliance");}catch{}let m=`${d}:${u} components:aspects`;h?s.push({name:"Aspect coverage",status:"ok",message:`${m} (claimant: rune)`}):u===0?s.push({name:"Aspect coverage",status:"info",message:`${m} ${l.dim("(no aspects defined)")}`}):s.push({name:"Aspect coverage",status:"info",message:`${m} ${l.dim("(no claimant active)")}`});}}}catch{}}let H=i.join(p,".paradigm","flows.yaml");if(t.existsSync(H))try{let a=t.readFileSync(H,"utf8"),e=w.load(a);if(e?.version&&e?.flows){let o=Object.keys(e.flows||{}).length,n=Object.entries(e.flows||{}).filter(([,d])=>!d?.steps||(d.steps?.length??0)===0);n.length>0?s.push({name:".paradigm/flows.yaml",status:"warn",message:`${o} flows defined, ${n.length} have no steps`,fix:"Add steps to empty flow definitions"}):s.push({name:".paradigm/flows.yaml",status:"ok",message:`Valid (${o} flows)`});}else s.push({name:".paradigm/flows.yaml",status:"warn",message:"Missing version or flows section",fix:'Ensure flows.yaml has version: "1.0" and flows: {}'});}catch(a){s.push({name:".paradigm/flows.yaml",status:"error",message:`Invalid YAML: ${a.message}`,fix:"Check YAML syntax in flows.yaml"});}let U=i.join(p,".paradigm","lore");if(t.existsSync(U))try{let a=t.readdirSync(U).filter(e=>e.endsWith(".yaml"));a.length===0?s.push({name:"Lore entries",status:"warn",message:"Lore directory exists but no entries found",fix:"Record a lore entry: paradigm lore record"}):s.push({name:"Lore entries",status:"ok",message:`${a.length} lore file${a.length>1?"s":""}`});}catch{s.push({name:"Lore entries",status:"warn",message:"Could not read lore directory"});}let _=i.join(p,".paradigm","university");if(t.existsSync(_))try{let a=i.join(_,"content"),e=0,o=0;if(t.existsSync(a))for(let n of ["notes","policies","quizzes","paths"]){let d=i.join(a,n);t.existsSync(d)&&(e+=t.readdirSync(d).filter(u=>u.endsWith(".md")||u.endsWith(".yaml")).length);}if(e===0)s.push({name:"University content",status:"warn",message:"University directory exists but no content found",fix:'Add content: paradigm university add note --title "Getting Started"'});else {let n=i.join(a,"quizzes");if(t.existsSync(n))for(let u of t.readdirSync(n).filter(h=>h.endsWith(".yaml")))try{let h=w.load(t.readFileSync(i.join(n,u),"utf8"));if(h?.questions)for(let m of h.questions)m.choices&&m.correct&&!(m.correct in m.choices)&&o++;}catch{}let d=i.join(a,"paths");if(t.existsSync(d))for(let u of t.readdirSync(d).filter(h=>h.endsWith(".yaml")))try{let h=w.load(t.readFileSync(i.join(d,u),"utf8"));if(h?.steps){for(let m of h.steps)if(m.content&&!m.content.startsWith("plsat:")){let y=!1;for(let b of ["notes","policies","quizzes","paths"]){let f=i.join(a,b);if(t.existsSync(f)&&t.readdirSync(f).some(k=>k.startsWith(m.content))){y=!0;break}}y||o++;}}}catch{}o>0?s.push({name:"University content",status:"warn",message:`${e} items, ${o} issue${o>1?"s":""}`,fix:"Run: paradigm university validate --deep"}):s.push({name:"University content",status:"ok",message:`${e} content item${e>1?"s":""}`});}}catch{s.push({name:"University content",status:"warn",message:"Could not read university directory"});}let G=i.join(p,".claude","hooks.json"),ss=i.join(p,"plugins","paradigm","hooks.json");if(t.existsSync(G)){let a=t.statSync(G),e=Date.now()-a.mtime.getTime(),o=Math.floor(e/(1e3*60*60*24));o>30?s.push({name:"Claude Code hooks",status:"warn",message:`Hooks are ${o} days old \u2014 may be outdated`,fix:"paradigm hooks install"}):s.push({name:"Claude Code hooks",status:"ok",message:o>0?`${o} days old`:"Fresh"});}else t.existsSync(ss)?s.push({name:"Claude Code hooks",status:"ok",message:"Using plugin hooks"}):s.push({name:"Claude Code hooks",status:"missing",message:"No hooks installed",fix:"paradigm hooks install"});let V=i.join(p,".paradigm","habits.yaml");if(t.existsSync(V))try{let a=t.readFileSync(V,"utf8"),e=w.load(a);if(e?.version&&Array.isArray(e?.habits)){let o=e.habits.filter(n=>n.enabled!==!1).length;s.push({name:"Habits config",status:"ok",message:`Valid (${o}/${e.habits.length} enabled)`});}else s.push({name:"Habits config",status:"warn",message:"Missing version or habits array",fix:"Regenerate habits.yaml with paradigm habits init"});}catch(a){s.push({name:"Habits config",status:"error",message:`Invalid YAML: ${a.message}`,fix:"Check YAML syntax in habits.yaml"});}let J=i.join(p,"AGENTS.md");if(t.existsSync(J)){let a=t.statSync(J),e=Date.now()-a.mtime.getTime(),o=Math.floor(e/(1e3*60*60*24));o>60?s.push({name:"AGENTS.md",status:"warn",message:`${o} days since last update \u2014 may be stale`,fix:"paradigm sync"}):s.push({name:"AGENTS.md",status:"ok",message:o>0?`Updated ${o} days ago`:"Fresh"});}try{let{summarizeTeamFunnel:a}=await import('./team-funnel-RAJ6EDG3.js'),e=a(p,30);if(e.orchestrated+e.soloDeclared+e.bypasses>0||e.eligible>0){let n=e.invocationRate!==null?`${Math.round(e.invocationRate*100)}%`:"n/a",d=e.legibleRate!==null?`${Math.round(e.legibleRate*100)}%`:"n/a",u=Object.entries(e.soloByReason).map(([h,m])=>`${h}:${m}`).join(" ");s.push({name:"Team funnel (30d)",status:e.bypasses>e.orchestrated?"warn":"info",message:`eligible ${e.eligible} \xB7 orchestrated ${e.orchestrated} \xB7 solo ${e.soloDeclared}${u?` (${u})`:""} \xB7 bypass ${e.bypasses} \xB7 invocation ${n} \xB7 legible ${d}`,...e.bypasses>e.orchestrated?{fix:"Orchestrate eligible tasks (paradigm_orchestrate_inline) or declare `paradigm solo <reason>`"}:{}});}}catch{}try{let a=i.join(p,".paradigm","events","settlement-liveness.jsonl");if(t.existsSync(a)){let o=t.readFileSync(a,"utf8").trim().split(`
|
|
7
|
+
`).filter(n=>n.trim()).map(n=>{try{return JSON.parse(n)}catch{return null}}).filter(n=>n!==null);if(o.length===0)s.push({name:"Learning-loop liveness",status:"info",message:"No settlements recorded yet (probe writes on each task-DAG settlement)"});else {let n=o.slice(-20),d=o.slice(-5),u=n.filter(f=>f.chainLive===!1),h=d.filter(f=>f.chainLive===!1),m=u.length>0?u[u.length-1]:void 0,y=m?.stages?Object.entries(m.stages).filter(([,f])=>f==="threw").map(([f])=>f):[],b=y.length>0?` (stage: ${y.join(", ")})`:"";h.length>=3?s.push({name:"Learning-loop liveness",status:"error",message:`DEAD CHAIN: ${h.length}/5 recent settlements severed${b} \u2014 the learning loop is not closing`,fix:"A settlement-chain stage is throwing. Inspect .paradigm/events/settlement-liveness.jsonl and the named stage."}):u.length>0?s.push({name:"Learning-loop liveness",status:"warn",message:`${u.length}/${n.length} recent settlements had a severed chain${b}`,fix:"Inspect the named stage in .paradigm/events/settlement-liveness.jsonl."}):s.push({name:"Learning-loop liveness",status:"ok",message:`${n.length} recent settlements, chain live`});}}}catch{}}let O=0,T=0,v=0;for(let r of s){let g,c;switch(r.status){case "ok":g="\u2713",c=l.green;break;case "warn":g="\u26A0",c=l.yellow,T++;break;case "error":g="\u2717",c=l.red,O++;break;case "missing":g="\u25CB",c=l.gray,v++;break;case "info":g="\u2802",c=l.gray;break}if(!$){let A=r.name.padEnd(30);console.log(` ${c(g)} ${A} ${c(r.message)}`),r.fix&&console.log(l.gray(` \u2514\u2500 Fix: ${r.fix}`));}}let{runContextAudit:Z}=await import('./context-audit-JVCA6GSV.js'),L=await Z(p,{quiet:$}),z=0,W=0,S=0;!$&&L.length>0&&(console.log(""),console.log(l.blue(" Context Audit")),console.log(l.gray(" \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")));for(let r of L){let g,c;switch(r.status){case "ok":g="\u2713",c=l.green;break;case "warn":g="\u26A0",c=l.yellow,W++;break;case "error":g="\u2717",c=l.red,z++;break;case "advisory":g="\u2139",c=l.cyan,S++;break}if(!$){let A=r.check.padEnd(30);if(console.log(` ${c(g)} ${A} ${c(r.message)}`),r.details&&r.details.length>0){let R=r.details.slice(0,5);for(let M of R)console.log(l.gray(` \u2502 ${M}`));r.details.length>5&&console.log(l.gray(` \u2502 ... and ${r.details.length-5} more`));}r.fix&&console.log(l.gray(` \u2514\u2500 Fix: ${r.fix}`));}}let j=O+z,C=T+W,D=j+C+v===0;if(!$)if(console.log(""),D)console.log(l.green(`\u2728 All checks passed!
|
|
8
|
+
`));else {let r=[];j>0&&r.push(l.red(`${j} error${j>1?"s":""}`)),C>0&&r.push(l.yellow(`${C} warning${C>1?"s":""}`)),v>0&&r.push(l.gray(`${v} missing`)),S>0&&r.push(l.cyan(`${S} advisor${S>1?"ies":"y"}`)),console.log(`${r.join(", ")} found.
|
|
9
|
+
`),console.log(l.gray("Run the suggested commands to fix issues.")),console.log(l.gray(`Troubleshooting guide: .paradigm/docs/troubleshooting.md
|
|
10
|
+
`));}if(!$&&P.explain&&!D)try{let{narrateAllGaps:r}=await import('./gap-narrator-NTXLUI7I.js'),g=[];for(let c of s)c.status!=="ok"&&(c.name===".purpose"||c.name.startsWith("Purpose-required")?g.push({type:"missing-purpose",target:c.name,severity:"improvement"}):c.name===".paradigm/scan-index.json"&&c.status==="warn"?g.push({type:"index-stale",target:c.name,severity:"improvement"}):c.name==="Portal compliance"?g.push({type:"portal-mismatch",target:c.name,severity:c.status==="error"?"blocking":"improvement"}):c.name==="Clarification markers"&&g.push({type:"missing-description",target:c.name,severity:"improvement"}));if(g.length>0){let c=r(g);console.log(l.blue(`
|
|
11
|
+
Gap Narrations (--explain)
|
|
12
|
+
`)),console.log(l.gray(c.narrative)),console.log("");}}catch{}D?q.success("All health checks passed",{total:s.length+L.length}):q.error("Health checks found issues",{errors:j,warnings:C,missing:v,advisories:S});try{let{captureSnapshot:r}=await import('./metrics-UESGUHTA.js');r(p);}catch{}return D}export{rs as a};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {a,e,d}from'./chunk-QO7YPQXC.js';import'./chunk-5TAVYPOV.js';import*as u from'fs';import*as m from'path';import {execSync}from'child_process';import n from'chalk';import*as w from'js-yaml';function $(s){return s.match(/(?:^|\s)((?:\/|\.\/|[a-zA-Z0-9_-]+\/)[^\s,;:'"]+\.[a-zA-Z]{1,10})\b/)?.[1]}async function R(s,a$1){try{let r=a(s),d$1=[];try{d$1=execSync("git diff --name-only HEAD",{cwd:s,encoding:"utf8",timeout:5e3}).trim().split(`
|
|
3
3
|
`).filter(Boolean);}catch{}let l;try{l=execSync("git status --porcelain",{cwd:s,encoding:"utf8",timeout:5e3}).trim()==="";}catch{}let c=m.join(s,"portal.yaml"),f=!1;if(u.existsSync(c))try{let t=u.readFileSync(c,"utf8"),e=w.load(t);f=e?.routes!=null&&Object.keys(e.routes).length>0;}catch{}let i=e({toolsCalled:[],filesModified:d$1,symbolsTouched:[],loreRecorded:!1,hasPortalRoutes:f,taskAddsRoutes:!1,gitClean:l}),o=d(r,a$1,i),g=0;if(o.evaluations.length>0)try{let t=m.join(s,".paradigm","sentinel");if(u.existsSync(t)){let{SentinelStorage:e}=await import('./dist-VGFSP3XM.js'),p=new e(t);for(let b of o.evaluations)p.recordPracticeEvent({habitId:b.habit.id,habitCategory:b.habit.category,result:b.result,engineer:"agent",sessionId:`cli-${Date.now().toString(36)}`,symbolsTouched:[],filesModified:d$1,notes:b.reason}),g++;}}catch{}let h=m.join(s,".paradigm",".habits-blocking");try{if(a$1==="on-stop"&&o.blocksCompletion){let t=o.evaluations.filter(e=>e.result==="skipped"&&e.habit.severity==="block").map(e=>`${e.habit.name}: ${e.reason}`);u.writeFileSync(h,t.join(`
|
|
4
|
-
`),"utf8");}else a$1==="on-stop"&&u.existsSync(h)&&u.unlinkSync(h);}catch{}return {trigger:a$1,evaluation:{total:o.summary.total,followed:o.summary.followed,skipped:o.summary.skipped,partial:o.summary.partial,blockingViolations:o.summary.blockingViolations,blocksCompletion:o.blocksCompletion},habits:o.evaluations.map(t=>({id:t.habit.id,name:t.habit.name,category:t.habit.category,severity:t.habit.severity,result:t.result,reason:t.reason,evidence:t.evidence})),recorded:g}}catch{return null}}async function P(s,a){let r=m.join(s,".paradigm","aspect-graph.db");if(!u.existsSync(r))return {driftedCount:0,healedCount:0,cleanCount:0,missingCount:0,details:[]};try{let{driftCheckCommand:d}=await import('./drift-ILZE5BFJ.js'),l="",c=console.log;console.log=f=>{l=f;};try{await d({json:!0,autoHeal:a});}finally{console.log=c;}return l?JSON.parse(l):null}catch{return null}}async function B(s){if(!u.existsSync(m.join(s,"portal.yaml")))return null;try{let{checkPortalCompliance:a}=await import('./portal-compliance-JONQ4SOP.js'),r=await a(s);return {status:r.status,declaredButUnusedCount:r.declaredButUnused.length,usedButUndeclaredCount:r.usedButUndeclared.length,properlyDeclaredCount:r.properlyDeclared.length,declaredButUnused:r.declaredButUnused,usedButUndeclared:r.usedButUndeclared,properlyDeclared:r.properlyDeclared,portalError:r.portalError,...r.nearMatches&&r.nearMatches.length>0?{suggestions:r.nearMatches.map(d=>({gate:d.gate,didYouMean:d.didYouMean,distance:d.distance}))}:{}}}catch{return null}}async function j(s){try{let{runPostflightLearning:a}=await import('./ambient-
|
|
4
|
+
`),"utf8");}else a$1==="on-stop"&&u.existsSync(h)&&u.unlinkSync(h);}catch{}return {trigger:a$1,evaluation:{total:o.summary.total,followed:o.summary.followed,skipped:o.summary.skipped,partial:o.summary.partial,blockingViolations:o.summary.blockingViolations,blocksCompletion:o.blocksCompletion},habits:o.evaluations.map(t=>({id:t.habit.id,name:t.habit.name,category:t.habit.category,severity:t.habit.severity,result:t.result,reason:t.reason,evidence:t.evidence})),recorded:g}}catch{return null}}async function P(s,a){let r=m.join(s,".paradigm","aspect-graph.db");if(!u.existsSync(r))return {driftedCount:0,healedCount:0,cleanCount:0,missingCount:0,details:[]};try{let{driftCheckCommand:d}=await import('./drift-ILZE5BFJ.js'),l="",c=console.log;console.log=f=>{l=f;};try{await d({json:!0,autoHeal:a});}finally{console.log=c;}return l?JSON.parse(l):null}catch{return null}}async function B(s){if(!u.existsSync(m.join(s,"portal.yaml")))return null;try{let{checkPortalCompliance:a}=await import('./portal-compliance-JONQ4SOP.js'),r=await a(s);return {status:r.status,declaredButUnusedCount:r.declaredButUnused.length,usedButUndeclaredCount:r.usedButUndeclared.length,properlyDeclaredCount:r.properlyDeclared.length,declaredButUnused:r.declaredButUnused,usedButUndeclared:r.usedButUndeclared,properlyDeclared:r.properlyDeclared,portalError:r.portalError,...r.nearMatches&&r.nearMatches.length>0?{suggestions:r.nearMatches.map(d=>({gate:d.gate,didYouMean:d.didYouMean,distance:d.distance}))}:{}}}catch{return null}}async function j(s){try{let{runPostflightLearning:a}=await import('./ambient-QB7V4TBR.js');return await a(s)}catch{return null}}async function A(s){let a=process.cwd(),r=s.trigger||"on-stop",d=s.autoHeal!==false,l=[],c=[],f=await R(a,r),i=await P(a,d),o=await B(a);if(f?.evaluation.blocksCompletion){let t=f.habits.filter(e=>e.result==="skipped"&&e.severity==="block");for(let e of t){let p=`Blocking habit not satisfied: ${e.name} \u2014 ${e.reason}`;l.push(p),c.push({message:p,source:"habits",file:$(e.reason),severity:"blocking"});}}if(i&&i.driftedCount>0){let t=`${i.driftedCount} aspect anchor(s) have drifted (content genuinely changed). Run paradigm_aspect_check to review.`;l.push(t);for(let e of i.details.filter(p=>p.status==="drifted"))c.push({message:`Aspect ~${e.aspectId} drifted at lines ${e.startLine}-${e.endLine}`,source:"drift",file:e.path,severity:"advisory"});c.filter(e=>e.source==="drift").length===0&&c.push({message:t,source:"drift",severity:"advisory"});}if(o&&o.portalError?.kind==="unparseable"){let e=`portal.yaml unparseable: ${o.portalError.errorClass} \u2014 run 'paradigm doctor' for details`;l.push(e),c.push({message:e,source:"portal",file:"portal.yaml",severity:"blocking"});}else if(o&&o.usedButUndeclaredCount>0){let t=o.usedButUndeclared.filter(e=>e!=="__portal_unparseable__");if(t.length>0){let e=`${t.length} gate(s) used in code but not declared in portal.yaml: ${t.join(", ")}`;l.push(e);for(let p of t)c.push({message:`Gate ^${p} used in code but not declared in portal.yaml`,source:"portal",file:"portal.yaml",severity:"blocking"});}}let g=null;s.learn&&(g=await j(a));let h={habits:f,drift:i,portal:o,violations:l,structuredViolations:c,postflight:s.learn?g:void 0};if(s.json)console.log(JSON.stringify(h));else {if(console.log(n.magenta(`
|
|
5
5
|
Paradigm Compliance Check
|
|
6
6
|
`)),f){let{evaluation:t}=f,e=t.blocksCompletion?n.red:n.green;console.log(n.white(" Habits:")),console.log(` ${e(`${t.followed} followed, ${t.skipped} skipped, ${t.partial} partial`)}`),t.blockingViolations>0&&console.log(n.red(` ${t.blockingViolations} blocking violation(s)`)),console.log();}if(i&&(console.log(n.white(" Drift:")),i.healedCount>0&&console.log(n.green(` Auto-healed: ${i.healedCount} shifted anchor(s)`)),i.cleanCount>0&&console.log(n.green(` Clean: ${i.cleanCount} anchor(s)`)),i.driftedCount>0&&console.log(n.red(` Drifted: ${i.driftedCount} anchor(s)`)),i.missingCount>0&&console.log(n.yellow(` Missing: ${i.missingCount} anchor file(s)`)),console.log()),o){console.log(n.white(" Portal:"));let t=o.status==="compliant"?n.green:o.status==="warnings"?n.yellow:n.red;console.log(` Status: ${t(o.status)}`),o.usedButUndeclaredCount>0&&console.log(n.red(` ${o.usedButUndeclaredCount} undeclared gate(s)`)),console.log();}if(g){if(console.log(n.white(" Postflight Learning:")),g.journalsWritten>0){console.log(n.green(` Journals written: ${g.journalsWritten}`));for(let[t,e]of Object.entries(g.journalsByAgent))e>0&&console.log(n.gray(` ${t}: ${e} entries`));}else console.log(n.gray(" No verdicts to learn from"));g.promoted>0&&console.log(n.green(` Promoted to notebooks: ${g.promoted}`)),console.log();}if(l.length>0){console.log(n.red(` ${l.length} violation(s):`));for(let t of l)console.log(n.red(` - ${t}`));}else console.log(n.green(" All checks passed."));console.log();}l.length>0&&(process.exitCode=1);}export{A as complianceCheckCommand};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {b}from'./chunk-
|
|
2
|
+
import {b}from'./chunk-EG22HDXI.js';import'./chunk-DLMDHS2X.js';import'./chunk-FYDRENK7.js';import'./chunk-ECLUYHAR.js';import'./chunk-TYWB5IQJ.js';import'./chunk-YXLGVOZO.js';import'./chunk-XPPFILCM.js';import'./chunk-MBPLJKE5.js';import'./chunk-EKZDFEJW.js';import'./chunk-LPBCQM5Y.js';import'./chunk-4GC35IFF.js';import'./chunk-JIXHEBGK.js';import'./chunk-ZJQY5PPP.js';import'./chunk-5TAVYPOV.js';import*as i from'fs';import*as a from'path';import o from'chalk';async function D(l,f,t){let d=f?a.resolve(f):process.cwd();if(!l){t.json?console.log(JSON.stringify({error:"Orchestration ID required"})):(console.log(o.red(`
|
|
3
3
|
Orchestration ID required.`)),console.log(o.gray(`Usage: paradigm team diff <orchestration-id>
|
|
4
4
|
`)));return}let e=new b(d).getOrchestration(l);if(!e){t.json?console.log(JSON.stringify({error:"Orchestration not found",id:l})):console.log(o.red(`
|
|
5
5
|
Orchestration not found: ${l}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {a,d,e,f,g,b}from'./chunk-BFD3GFRK.js';import'./chunk-5TAVYPOV.js';import n from'chalk';import*as t from'fs';import*as o from'path';import {fileURLToPath}from'url';async function C(c){let s=process.cwd(),e=parseInt(c.port||"3850",10),p=c.open!==false;console.log(n.cyan(`
|
|
3
3
|
Starting Paradigm Docs...
|
|
4
|
-
`));try{let{startPlatformServer:i}=await import('./platform-server-
|
|
4
|
+
`));try{let{startPlatformServer:i}=await import('./platform-server-Y6TLEXR2.js');await i({projectDir:s,port:e,open:p,sections:["overview","docs"]}),console.log(n.green(` Docs running at ${n.bold(`http://localhost:${e}`)}`)),console.log(n.gray(` Press Ctrl+C to stop
|
|
5
5
|
`)),await new Promise(()=>{});}catch(i){i.code==="EADDRINUSE"?(console.error(n.red(`
|
|
6
6
|
Error: Port ${e} is already in use.`)),console.log(n.gray(` Try: paradigm docs serve --port ${e+1}
|
|
7
7
|
`))):console.error(n.red(`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export{a as hooksInstallCommand,c as hooksStatusCommand,b as hooksUninstallCommand}from'./chunk-
|
|
2
|
+
export{a as hooksInstallCommand,c as hooksStatusCommand,b as hooksUninstallCommand}from'./chunk-G6DK3ND3.js';import'./chunk-5TAVYPOV.js';
|