@a-company/paradigm 5.24.0 → 5.27.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/{agent-loader-EPXURMO7.js → agent-loader-MQMXCI3D.js} +1 -1
- package/dist/{agent-loader-PYGPX6D2.js → agent-loader-RGPE3LRD.js} +1 -1
- package/dist/{ambient-HYZR42NX.js → ambient-2RAKMUC7.js} +2 -2
- package/dist/{chunk-V7K6CQVX.js → chunk-4YIKDQRB.js} +9 -9
- package/dist/{chunk-Z34K6GY2.js → chunk-CUOEZAVL.js} +4 -4
- package/dist/{chunk-HXKWL3VK.js → chunk-DJERXYEL.js} +1 -1
- package/dist/{chunk-4ZGGWZ32.js → chunk-HBGRP73K.js} +1 -1
- package/dist/chunk-KYA4TP26.js +2 -0
- package/dist/{chunk-PUBB7LIT.js → chunk-PBVBTHGE.js} +1 -1
- package/dist/{chunk-AD5TAD2A.js → chunk-UELDOSWH.js} +1 -1
- package/dist/{chunk-6EX37L4Q.js → chunk-VZLGBGU3.js} +5 -5
- package/dist/{chunk-2QO33NYK.js → chunk-XGAOYG77.js} +2 -2
- package/dist/{chunk-XUFYOXOU.js → chunk-ZMQXXFG2.js} +2 -2
- package/dist/{compliance-NLG7KB73.js → compliance-LM2NN2S6.js} +1 -1
- package/dist/{docs-UIYXJ3O3.js → docs-5BX2YWYK.js} +1 -1
- package/dist/{enforcement-MKFUH4TE.js → enforcement-46XWPNSA.js} +1 -1
- package/dist/{enforcement-TJOXPSTJ.js → enforcement-BEGPQIUN.js} +1 -1
- package/dist/index.js +2 -2
- package/dist/mcp.js +7 -7
- package/dist/{nomination-engine-XF7TWPAP.js → nomination-engine-K7MQD53E.js} +1 -1
- package/dist/{platform-server-FXYBBH6E.js → platform-server-G6MJIAJS.js} +1 -1
- package/dist/reindex-HA3CJG7S.js +2 -0
- package/dist/{serve-5W6KOA4R.js → serve-ZJ3EXVA5.js} +1 -1
- package/dist/session-tracker-G7VOLRMR.js +2 -0
- package/dist/{session-work-log-3MNUDEZ6.js → session-work-log-HFOD7LEG.js} +1 -1
- package/dist/{session-work-log-J2H5OZBR.js → session-work-log-IEYBPFUC.js} +1 -1
- package/dist/{shift-TDOYQKR4.js → shift-WNP27SPB.js} +7 -7
- package/dist/{symphony-3QMBGCZY.js → symphony-43N4R6C2.js} +1 -1
- package/dist/{symphony-QI63XL62.js → symphony-ZQ5OHJTP.js} +3 -3
- package/dist/{symphony-loader-XACVV2E3.js → symphony-loader-XJT43FOS.js} +1 -1
- package/dist/{symphony-relay-5GY5JIPT.js → symphony-relay-KBHN3ZMR.js} +1 -1
- package/package.json +1 -1
- package/dist/chunk-27FBCZX6.js +0 -2
- package/dist/reindex-PGDQSM42.js +0 -2
- package/dist/session-tracker-SKOMBDOW.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {t,g as g$1,f,h}from'./chunk-
|
|
2
|
+
import {t,g as g$1,f,h}from'./chunk-ZMQXXFG2.js';import {g as g$2,f as f$1}from'./chunk-QGZRM6ZB.js';import {g as g$3,f as f$2}from'./chunk-VG7FN2TU.js';import {b,a,d}from'./chunk-5TAVYPOV.js';import*as u from'fs';import*as g from'path';import*as W from'js-yaml';import*as R from'os';function G(e){return g.join(e,q,st)}function at(){let e=Date.now(),t=Math.floor(Math.random()*9999).toString().padStart(4,"0");return `ev-${e}-${t}`}function k(e,t){let n={id:at(),timestamp:new Date().toISOString(),...t};w.push(n),w.length>N&&(w=w.slice(-N));try{let r=g.join(e,q);u.mkdirSync(r,{recursive:!0});let o=G(e);u.appendFileSync(o,JSON.stringify(n)+`
|
|
3
3
|
`,"utf8"),ct(o);}catch{}return n}function ct(e){try{if(u.statSync(e).size>512*1024){let r=u.readFileSync(e,"utf8").trim().split(`
|
|
4
4
|
`);if(r.length>N){let o=r.slice(-N);u.writeFileSync(e,o.join(`
|
|
5
5
|
`)+`
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {h,g as g$1}from'./chunk-AD5TAD2A.js';import {d}from'./chunk-5TAVYPOV.js';import*as i from'fs';import*as a from'path';import*as D from'os';import*as x from'crypto';import*as p from'js-yaml';function T(){let n=a.join(D.homedir(),".paradigm");return i.existsSync(n)||i.mkdirSync(n,{recursive:true}),n}function N(n){let s=a.resolve(n);return x.createHash("sha256").update(s).digest("hex").slice(0,12)}function f(n){let s=N(n),t=a.join(T(),"sessions",s);i.existsSync(t)||i.mkdirSync(t,{recursive:true});let e=a.join(t,"pending-handoffs");return i.existsSync(e)||i.mkdirSync(e,{recursive:true}),t}function b(n){let s=f(n),t=a.join(s,"_project-meta.json"),o={name:a.basename(a.resolve(n)),path:a.resolve(n),lastSeen:new Date().toISOString()};i.writeFileSync(t,JSON.stringify(o,null,2));}function M(n,s){let t=f(n),e=a.join(t,"pending-handoffs",`${s.id}.json`);i.writeFileSync(e,JSON.stringify(s,null,2));}function E(n){let s=f(n),t=a.join(s,"pending-handoffs");if(!i.existsSync(t))return [];let e=[];try{let o=i.readdirSync(t);for(let l of o)if(l.endsWith(".json"))try{let u=i.readFileSync(a.join(t,l),"utf8"),m=JSON.parse(u);m.status==="pending"&&e.push(m);}catch{}}catch{}return e.sort((o,l)=>new Date(o.timestamp).getTime()-new Date(l.timestamp).getTime()),e}function O(n,s){let t=f(n),e=a.join(t,"pending-handoffs",`${s}.json`);if(i.existsSync(e))try{let o=i.readFileSync(e,"utf8"),l=JSON.parse(o);l.status="delivered",i.writeFileSync(e,JSON.stringify(l,null,2));}catch{}}function g(){let n=a.join(T(),"wisdom");return i.existsSync(n)||i.mkdirSync(n,{recursive:true}),n}function A(){let n=a.join(g(),"antipatterns.yaml");if(!i.existsSync(n))return [];try{let s=i.readFileSync(n,"utf8");return p.load(s)?.antipatterns||[]}catch{return []}}function W(){let n=a.join(g(),"decisions");if(!i.existsSync(n))return [];let s=[];try{let t=i.readdirSync(n);for(let e of t)if(!(!e.endsWith(".yaml")&&!e.endsWith(".yml")))try{let o=i.readFileSync(a.join(n,e),"utf8"),l=p.load(o);s.push(l);}catch{}}catch{}return s.sort((t,e)=>t.id.localeCompare(e.id)),s}function H(){let n=a.join(g(),"preferences.yaml");if(!i.existsSync(n))return null;try{let s=i.readFileSync(n,"utf8");return p.load(s)}catch{return null}}function L(n){let s=a.join(g(),"antipatterns.yaml"),t={version:"1.0",antipatterns:[]};if(i.existsSync(s))try{let e=i.readFileSync(s,"utf8");t=p.load(e),t.antipatterns||(t.antipatterns=[]);}catch{}t.antipatterns.push({...n,added:new Date().toISOString()}),i.writeFileSync(s,p.dump(t,{lineWidth:-1}));}function _(n){let s=a.join(g(),"decisions");i.existsSync(s)||i.mkdirSync(s,{recursive:true});let t=n.title.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),e=`${n.id}-${t}.yaml`,o=a.join(s,e);i.writeFileSync(o,p.dump(n,{lineWidth:-1}));}var S={"claude-opus-4":{input:15,output:75,name:"Claude Opus 4"},"claude-sonnet-4":{input:3,output:15,name:"Claude Sonnet 4"},"claude-haiku-3.5":{input:.8,output:4,name:"Claude Haiku 3.5"}},w=50,j=".paradigm/session-breadcrumbs.json",P=".paradigm/session-checkpoint.json",F=10080*60*1e3,k=class{session;rootDir=null;_recovered=false;lastLoreEntryId=null;constructor(){this.session=this.createNewSession();}setRootDir(s){this.rootDir=s;try{let{clearSessionWorkLog:t}=(h(),d(g$1));t(s);}catch{}}createNewSession(){return {sessionId:`s${Date.now().toString(36)}`,startTime:Date.now(),lastActivity:Date.now(),model:"claude-sonnet-4",resourceReads:[],toolCalls:[],breadcrumbs:[],totals:{resourceReadCount:0,toolCallCount:0,totalBytes:0,totalTokens:0,estimatedCostUsd:0}}}addBreadcrumb(s,t,e={}){this.session.breadcrumbs.push({timestamp:Date.now(),action:s,tool:e.tool,symbol:e.symbol,summary:t}),this.session.breadcrumbs.length>w&&(this.session.breadcrumbs=this.session.breadcrumbs.slice(-w)),this.persistBreadcrumbs();}getBreadcrumbs(s=20){return this.session.breadcrumbs.slice(-s)}persistBreadcrumbs(){if(!this.rootDir)return;let s={sessionId:this.session.sessionId,startTime:this.session.startTime,lastActivity:this.session.lastActivity,breadcrumbs:this.session.breadcrumbs,symbolsModified:this.extractSymbolsFromBreadcrumbs(),filesExplored:this.extractFilesFromBreadcrumbs()},t;try{t=JSON.stringify(s,null,2);}catch(e){console.error("[paradigm-mcp] persistBreadcrumbs: JSON.stringify failed:",e.message);return}try{let e=a.join(this.rootDir,j),o=a.dirname(e);i.existsSync(o)||i.mkdirSync(o,{recursive:!0}),i.writeFileSync(e,t);}catch(e){console.error("[paradigm-mcp] persistBreadcrumbs: local write failed:",e.message);}try{let e=f(this.rootDir);i.writeFileSync(a.join(e,"breadcrumbs.json"),t),b(this.rootDir);}catch(e){console.error("[paradigm-mcp] persistBreadcrumbs: global write failed:",e.message);}}loadPreviousSession(){if(!this.rootDir)return null;try{let s=f(this.rootDir),t=a.join(s,"breadcrumbs.json");if(i.existsSync(t)){let e=i.readFileSync(t,"utf8");return JSON.parse(e)}}catch{}try{let s=a.join(this.rootDir,j);if(!i.existsSync(s))return null;let t=i.readFileSync(s,"utf8");return JSON.parse(t)}catch{return null}}saveCheckpoint(s){let t={phase:s.phase,context:s.context,timestamp:Date.now(),sessionId:this.session.sessionId,externalId:s.externalId,plan:s.plan,modifiedFiles:s.modifiedFiles,symbolsTouched:s.symbolsTouched,decisions:s.decisions,recentBreadcrumbs:this.session.breadcrumbs.slice(-10)},e=this.persistCheckpoint(t);return {checkpoint:t,persisted:e}}loadCheckpoint(){if(!this.rootDir)return null;let s=null;try{let t=f(this.rootDir),e=a.join(t,"checkpoint.json");if(i.existsSync(e)){let o=i.readFileSync(e,"utf8");s=JSON.parse(o);}}catch{}if(!s)try{let t=a.join(this.rootDir,P);if(i.existsSync(t)){let e=i.readFileSync(t,"utf8");s=JSON.parse(e);}}catch{}if(s&&Date.now()-s.timestamp>F)return null;if(s)for(let t of ["modifiedFiles","symbolsTouched","decisions"]){let e=s[t];if(typeof e=="string")try{s[t]=JSON.parse(e);}catch{s[t]=[];}}return s}persistCheckpoint(s){let t={local:false,global:false};if(!this.rootDir)return console.error("[paradigm-mcp] persistCheckpoint: rootDir not set, skipping write"),t;let e;try{e=JSON.stringify(s,null,2);}catch(o){return console.error("[paradigm-mcp] persistCheckpoint: JSON.stringify failed:",o.message),t}try{let o=a.join(this.rootDir,P),l=a.dirname(o);i.existsSync(l)||i.mkdirSync(l,{recursive:!0}),i.writeFileSync(o,e),t.local=!0;}catch(o){console.error("[paradigm-mcp] persistCheckpoint: local write failed:",o.message);}try{let o=f(this.rootDir);i.writeFileSync(a.join(o,"checkpoint.json"),e),b(this.rootDir),t.global=!0;}catch(o){console.error("[paradigm-mcp] persistCheckpoint: global write failed:",o.message);}return t}setLastLoreEntryId(s){this.lastLoreEntryId=s;}getLastLoreEntryId(){return this.lastLoreEntryId}hasRecoveredThisSession(){return this._recovered}markRecovered(){this._recovered=true;}extractSymbolsFromBreadcrumbs(){let s=new Set;for(let t of this.session.breadcrumbs)t.symbol&&s.add(t.symbol);return Array.from(s)}extractFilesFromBreadcrumbs(){let s=new Set;for(let t of this.session.breadcrumbs){let e=t.summary.match(/\b[\w./]+\.(ts|js|tsx|jsx|py|go|rs|yaml|json|md)\b/g);if(e)for(let o of e)s.add(o);}return Array.from(s)}estimateTokens(s){let t=typeof s=="number"?s:s.length;return Math.ceil(t/3.5)}calculateCost(s,t=true){let e=S[this.session.model],o=t?e.output:e.input;return s/1e6*o}setModel(s){this.session.model=s,this.recalculateTotals();}getModel(){return this.session.model}trackResourceRead(s,t){let e=this.extractResourceType(s),o=this.estimateTokens(t);this.session.resourceReads.push({timestamp:Date.now(),resourceType:e,uri:s,bytes:t,tokens:o}),this.session.lastActivity=Date.now(),this.updateTotals(t,o);}trackToolCall(s,t){let e=this.estimateTokens(t);this.session.toolCalls.push({timestamp:Date.now(),toolName:s,responseBytes:t,responseTokens:e}),this.session.lastActivity=Date.now(),this.updateTotals(t,e);}updateTotals(s,t){this.session.totals.resourceReadCount=this.session.resourceReads.length,this.session.totals.toolCallCount=this.session.toolCalls.length,this.session.totals.totalBytes+=s,this.session.totals.totalTokens+=t,this.session.totals.estimatedCostUsd=this.calculateCost(this.session.totals.totalTokens);}recalculateTotals(){this.session.totals.estimatedCostUsd=this.calculateCost(this.session.totals.totalTokens);}extractResourceType(s){return s.replace("paradigm://","").split("/")[0]||"unknown"}getStats(){return {...this.session}}getCostBreakdown(){let s={},t=0,e=0;for(let r of this.session.resourceReads)s[r.resourceType]||(s[r.resourceType]={count:0,bytes:0,tokens:0}),s[r.resourceType].count++,s[r.resourceType].bytes+=r.bytes,s[r.resourceType].tokens+=r.tokens,t+=r.bytes,e+=r.tokens;let o={},l=0,u=0;for(let r of this.session.toolCalls)o[r.toolName]||(o[r.toolName]={count:0,bytes:0,tokens:0}),o[r.toolName].count++,o[r.toolName].bytes+=r.responseBytes,o[r.toolName].tokens+=r.responseTokens,l+=r.responseBytes,u+=r.responseTokens;let m=e+u,h=this.calculateCost(m);return {model:S[this.session.model].name,modelId:this.session.model,pricing:S[this.session.model],resources:{count:this.session.resourceReads.length,bytes:t,tokens:e,costUsd:this.calculateCost(e),byType:s},tools:{count:this.session.toolCalls.length,bytes:l,tokens:u,costUsd:this.calculateCost(u),byName:o},total:{tokens:m,costUsd:h}}}getHandoffRecommendation(s=2e5,t){let e=this.session.totals.totalTokens,o=e*4,l=t||e+o,u=Math.round(l/s*100),m,h;u>=85?(m="handoff-urgent",h="Context is nearly full. Initiate handoff immediately to preserve session continuity."):u>=70?(m="handoff-recommended",h="Context usage is high. Consider initiating handoff soon to ensure smooth transition."):u>=50?(m="consider-handoff",h="Context usage is moderate. Plan a good stopping point for potential handoff."):(m="continue",h="Context usage is healthy. Continue working.");let r=[],C=Math.round((Date.now()-this.session.startTime)/6e4),v=this.session.toolCalls.length+this.session.resourceReads.length;return v>50&&r.push(`High number of MCP interactions (${v})`),C>30&&r.push(`Session duration >30 min (${C} min)`),this.session.totals.totalBytes>5e5&&r.push(`Large data volume (${Math.round(this.session.totals.totalBytes/1024)}KB)`),{recommendation:m,message:h,usagePercent:u,signals:r}}getDurationMinutes(){return Math.round((Date.now()-this.session.startTime)/6e4)}reset(){this.session=this.createNewSession(),this._recovered=false,this.lastLoreEntryId=null;}},y=null;function G(){return y||(y=new k),y}function $(){y&&y.reset();}
|
|
2
|
+
import {h,g as g$1}from'./chunk-UELDOSWH.js';import {d}from'./chunk-5TAVYPOV.js';import*as i from'fs';import*as a from'path';import*as D from'os';import*as x from'crypto';import*as p from'js-yaml';function T(){let n=a.join(D.homedir(),".paradigm");return i.existsSync(n)||i.mkdirSync(n,{recursive:true}),n}function N(n){let s=a.resolve(n);return x.createHash("sha256").update(s).digest("hex").slice(0,12)}function f(n){let s=N(n),t=a.join(T(),"sessions",s);i.existsSync(t)||i.mkdirSync(t,{recursive:true});let e=a.join(t,"pending-handoffs");return i.existsSync(e)||i.mkdirSync(e,{recursive:true}),t}function b(n){let s=f(n),t=a.join(s,"_project-meta.json"),o={name:a.basename(a.resolve(n)),path:a.resolve(n),lastSeen:new Date().toISOString()};i.writeFileSync(t,JSON.stringify(o,null,2));}function M(n,s){let t=f(n),e=a.join(t,"pending-handoffs",`${s.id}.json`);i.writeFileSync(e,JSON.stringify(s,null,2));}function E(n){let s=f(n),t=a.join(s,"pending-handoffs");if(!i.existsSync(t))return [];let e=[];try{let o=i.readdirSync(t);for(let l of o)if(l.endsWith(".json"))try{let u=i.readFileSync(a.join(t,l),"utf8"),m=JSON.parse(u);m.status==="pending"&&e.push(m);}catch{}}catch{}return e.sort((o,l)=>new Date(o.timestamp).getTime()-new Date(l.timestamp).getTime()),e}function O(n,s){let t=f(n),e=a.join(t,"pending-handoffs",`${s}.json`);if(i.existsSync(e))try{let o=i.readFileSync(e,"utf8"),l=JSON.parse(o);l.status="delivered",i.writeFileSync(e,JSON.stringify(l,null,2));}catch{}}function g(){let n=a.join(T(),"wisdom");return i.existsSync(n)||i.mkdirSync(n,{recursive:true}),n}function A(){let n=a.join(g(),"antipatterns.yaml");if(!i.existsSync(n))return [];try{let s=i.readFileSync(n,"utf8");return p.load(s)?.antipatterns||[]}catch{return []}}function W(){let n=a.join(g(),"decisions");if(!i.existsSync(n))return [];let s=[];try{let t=i.readdirSync(n);for(let e of t)if(!(!e.endsWith(".yaml")&&!e.endsWith(".yml")))try{let o=i.readFileSync(a.join(n,e),"utf8"),l=p.load(o);s.push(l);}catch{}}catch{}return s.sort((t,e)=>t.id.localeCompare(e.id)),s}function H(){let n=a.join(g(),"preferences.yaml");if(!i.existsSync(n))return null;try{let s=i.readFileSync(n,"utf8");return p.load(s)}catch{return null}}function L(n){let s=a.join(g(),"antipatterns.yaml"),t={version:"1.0",antipatterns:[]};if(i.existsSync(s))try{let e=i.readFileSync(s,"utf8");t=p.load(e),t.antipatterns||(t.antipatterns=[]);}catch{}t.antipatterns.push({...n,added:new Date().toISOString()}),i.writeFileSync(s,p.dump(t,{lineWidth:-1}));}function _(n){let s=a.join(g(),"decisions");i.existsSync(s)||i.mkdirSync(s,{recursive:true});let t=n.title.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),e=`${n.id}-${t}.yaml`,o=a.join(s,e);i.writeFileSync(o,p.dump(n,{lineWidth:-1}));}var S={"claude-opus-4":{input:15,output:75,name:"Claude Opus 4"},"claude-sonnet-4":{input:3,output:15,name:"Claude Sonnet 4"},"claude-haiku-3.5":{input:.8,output:4,name:"Claude Haiku 3.5"}},w=50,j=".paradigm/session-breadcrumbs.json",P=".paradigm/session-checkpoint.json",F=10080*60*1e3,k=class{session;rootDir=null;_recovered=false;lastLoreEntryId=null;constructor(){this.session=this.createNewSession();}setRootDir(s){this.rootDir=s;try{let{clearSessionWorkLog:t}=(h(),d(g$1));t(s);}catch{}}createNewSession(){return {sessionId:`s${Date.now().toString(36)}`,startTime:Date.now(),lastActivity:Date.now(),model:"claude-sonnet-4",resourceReads:[],toolCalls:[],breadcrumbs:[],totals:{resourceReadCount:0,toolCallCount:0,totalBytes:0,totalTokens:0,estimatedCostUsd:0}}}addBreadcrumb(s,t,e={}){this.session.breadcrumbs.push({timestamp:Date.now(),action:s,tool:e.tool,symbol:e.symbol,summary:t}),this.session.breadcrumbs.length>w&&(this.session.breadcrumbs=this.session.breadcrumbs.slice(-w)),this.persistBreadcrumbs();}getBreadcrumbs(s=20){return this.session.breadcrumbs.slice(-s)}persistBreadcrumbs(){if(!this.rootDir)return;let s={sessionId:this.session.sessionId,startTime:this.session.startTime,lastActivity:this.session.lastActivity,breadcrumbs:this.session.breadcrumbs,symbolsModified:this.extractSymbolsFromBreadcrumbs(),filesExplored:this.extractFilesFromBreadcrumbs()},t;try{t=JSON.stringify(s,null,2);}catch(e){console.error("[paradigm-mcp] persistBreadcrumbs: JSON.stringify failed:",e.message);return}try{let e=a.join(this.rootDir,j),o=a.dirname(e);i.existsSync(o)||i.mkdirSync(o,{recursive:!0}),i.writeFileSync(e,t);}catch(e){console.error("[paradigm-mcp] persistBreadcrumbs: local write failed:",e.message);}try{let e=f(this.rootDir);i.writeFileSync(a.join(e,"breadcrumbs.json"),t),b(this.rootDir);}catch(e){console.error("[paradigm-mcp] persistBreadcrumbs: global write failed:",e.message);}}loadPreviousSession(){if(!this.rootDir)return null;try{let s=f(this.rootDir),t=a.join(s,"breadcrumbs.json");if(i.existsSync(t)){let e=i.readFileSync(t,"utf8");return JSON.parse(e)}}catch{}try{let s=a.join(this.rootDir,j);if(!i.existsSync(s))return null;let t=i.readFileSync(s,"utf8");return JSON.parse(t)}catch{return null}}saveCheckpoint(s){let t={phase:s.phase,context:s.context,timestamp:Date.now(),sessionId:this.session.sessionId,externalId:s.externalId,plan:s.plan,modifiedFiles:s.modifiedFiles,symbolsTouched:s.symbolsTouched,decisions:s.decisions,recentBreadcrumbs:this.session.breadcrumbs.slice(-10)},e=this.persistCheckpoint(t);return {checkpoint:t,persisted:e}}loadCheckpoint(){if(!this.rootDir)return null;let s=null;try{let t=f(this.rootDir),e=a.join(t,"checkpoint.json");if(i.existsSync(e)){let o=i.readFileSync(e,"utf8");s=JSON.parse(o);}}catch{}if(!s)try{let t=a.join(this.rootDir,P);if(i.existsSync(t)){let e=i.readFileSync(t,"utf8");s=JSON.parse(e);}}catch{}if(s&&Date.now()-s.timestamp>F)return null;if(s)for(let t of ["modifiedFiles","symbolsTouched","decisions"]){let e=s[t];if(typeof e=="string")try{s[t]=JSON.parse(e);}catch{s[t]=[];}}return s}persistCheckpoint(s){let t={local:false,global:false};if(!this.rootDir)return console.error("[paradigm-mcp] persistCheckpoint: rootDir not set, skipping write"),t;let e;try{e=JSON.stringify(s,null,2);}catch(o){return console.error("[paradigm-mcp] persistCheckpoint: JSON.stringify failed:",o.message),t}try{let o=a.join(this.rootDir,P),l=a.dirname(o);i.existsSync(l)||i.mkdirSync(l,{recursive:!0}),i.writeFileSync(o,e),t.local=!0;}catch(o){console.error("[paradigm-mcp] persistCheckpoint: local write failed:",o.message);}try{let o=f(this.rootDir);i.writeFileSync(a.join(o,"checkpoint.json"),e),b(this.rootDir),t.global=!0;}catch(o){console.error("[paradigm-mcp] persistCheckpoint: global write failed:",o.message);}return t}setLastLoreEntryId(s){this.lastLoreEntryId=s;}getLastLoreEntryId(){return this.lastLoreEntryId}hasRecoveredThisSession(){return this._recovered}markRecovered(){this._recovered=true;}extractSymbolsFromBreadcrumbs(){let s=new Set;for(let t of this.session.breadcrumbs)t.symbol&&s.add(t.symbol);return Array.from(s)}extractFilesFromBreadcrumbs(){let s=new Set;for(let t of this.session.breadcrumbs){let e=t.summary.match(/\b[\w./]+\.(ts|js|tsx|jsx|py|go|rs|yaml|json|md)\b/g);if(e)for(let o of e)s.add(o);}return Array.from(s)}estimateTokens(s){let t=typeof s=="number"?s:s.length;return Math.ceil(t/3.5)}calculateCost(s,t=true){let e=S[this.session.model],o=t?e.output:e.input;return s/1e6*o}setModel(s){this.session.model=s,this.recalculateTotals();}getModel(){return this.session.model}trackResourceRead(s,t){let e=this.extractResourceType(s),o=this.estimateTokens(t);this.session.resourceReads.push({timestamp:Date.now(),resourceType:e,uri:s,bytes:t,tokens:o}),this.session.lastActivity=Date.now(),this.updateTotals(t,o);}trackToolCall(s,t){let e=this.estimateTokens(t);this.session.toolCalls.push({timestamp:Date.now(),toolName:s,responseBytes:t,responseTokens:e}),this.session.lastActivity=Date.now(),this.updateTotals(t,e);}updateTotals(s,t){this.session.totals.resourceReadCount=this.session.resourceReads.length,this.session.totals.toolCallCount=this.session.toolCalls.length,this.session.totals.totalBytes+=s,this.session.totals.totalTokens+=t,this.session.totals.estimatedCostUsd=this.calculateCost(this.session.totals.totalTokens);}recalculateTotals(){this.session.totals.estimatedCostUsd=this.calculateCost(this.session.totals.totalTokens);}extractResourceType(s){return s.replace("paradigm://","").split("/")[0]||"unknown"}getStats(){return {...this.session}}getCostBreakdown(){let s={},t=0,e=0;for(let r of this.session.resourceReads)s[r.resourceType]||(s[r.resourceType]={count:0,bytes:0,tokens:0}),s[r.resourceType].count++,s[r.resourceType].bytes+=r.bytes,s[r.resourceType].tokens+=r.tokens,t+=r.bytes,e+=r.tokens;let o={},l=0,u=0;for(let r of this.session.toolCalls)o[r.toolName]||(o[r.toolName]={count:0,bytes:0,tokens:0}),o[r.toolName].count++,o[r.toolName].bytes+=r.responseBytes,o[r.toolName].tokens+=r.responseTokens,l+=r.responseBytes,u+=r.responseTokens;let m=e+u,h=this.calculateCost(m);return {model:S[this.session.model].name,modelId:this.session.model,pricing:S[this.session.model],resources:{count:this.session.resourceReads.length,bytes:t,tokens:e,costUsd:this.calculateCost(e),byType:s},tools:{count:this.session.toolCalls.length,bytes:l,tokens:u,costUsd:this.calculateCost(u),byName:o},total:{tokens:m,costUsd:h}}}getHandoffRecommendation(s=2e5,t){let e=this.session.totals.totalTokens,o=e*4,l=t||e+o,u=Math.round(l/s*100),m,h;u>=85?(m="handoff-urgent",h="Context is nearly full. Initiate handoff immediately to preserve session continuity."):u>=70?(m="handoff-recommended",h="Context usage is high. Consider initiating handoff soon to ensure smooth transition."):u>=50?(m="consider-handoff",h="Context usage is moderate. Plan a good stopping point for potential handoff."):(m="continue",h="Context usage is healthy. Continue working.");let r=[],C=Math.round((Date.now()-this.session.startTime)/6e4),v=this.session.toolCalls.length+this.session.resourceReads.length;return v>50&&r.push(`High number of MCP interactions (${v})`),C>30&&r.push(`Session duration >30 min (${C} min)`),this.session.totals.totalBytes>5e5&&r.push(`Large data volume (${Math.round(this.session.totals.totalBytes/1024)}KB)`),{recommendation:m,message:h,usagePercent:u,signals:r}}getDurationMinutes(){return Math.round((Date.now()-this.session.startTime)/6e4)}reset(){this.session=this.createNewSession(),this._recovered=false,this.lastLoreEntryId=null;}},y=null;function G(){return y||(y=new k),y}function $(){y&&y.reset();}
|
|
3
3
|
export{M as a,E as b,O as c,A as d,W as e,H as f,L as g,_ as h,S as i,G as j,$ as k};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import*as i from'fs';import*as u from'path';import*as f from'js-yaml';var s=["purpose-coverage","purpose-exists","portal-gates","aspect-anchors","purpose-freshness","aspect-advisory","lore-required","habits-blocking","purpose-required-patterns","drift-detection","portal-compliance","graduation-tracking","orchestration-required"];var A={"purpose-coverage":"block","purpose-exists":"block","portal-gates":"block","aspect-anchors":"block","purpose-freshness":"warn","aspect-advisory":"warn","lore-required":"block","habits-blocking":"block","purpose-required-patterns":"block","drift-detection":"block","portal-compliance":"block","graduation-tracking":"warn","orchestration-required":"block"},O={"purpose-coverage":"block","purpose-exists":"warn","portal-gates":"warn","aspect-anchors":"warn","purpose-freshness":"warn","aspect-advisory":"off","lore-required":"warn","habits-blocking":"block","purpose-required-patterns":"warn","drift-detection":"warn","portal-compliance":"warn","graduation-tracking":"off","orchestration-required":"warn"},P={"purpose-coverage":"warn","purpose-exists":"off","portal-gates":"off","aspect-anchors":"off","purpose-freshness":"off","aspect-advisory":"off","lore-required":"off","habits-blocking":"warn","purpose-required-patterns":"off","drift-detection":"off","portal-compliance":"off","graduation-tracking":"off","orchestration-required":"off"},x={strict:A,balanced:O,minimal:P};function p(e){return {...x[e]}}function V(e,t){return x[e][t]}function b(e){return s.includes(e)}function E(e){return e==="block"||e==="warn"||e==="off"}function S(e){return e==="strict"||e==="balanced"||e==="minimal"}var L="minimal",j={threshold:3,detection:"git-diff",exempt:["*.md","*.yaml","*.yml",".purpose"]};function T(e){let t=u.join(e,".paradigm","config.yaml");if(!i.existsSync(t))return h();try{let n=i.readFileSync(t,"utf8"),r=f.load(n);if(!r||typeof r!="object")return h();let o=r.enforcement;if(!o||typeof o!="object")return h();let y=o.level,q=typeof y=="string"&&S(y)?y:L,v=o.checks,w={};if(v&&typeof v=="object")for(let[d,C]of Object.entries(v))b(d)&&typeof C=="string"&&E(C)&&(w[d]=C);let c=o.orchestration,l={...j};return c&&typeof c=="object"&&(typeof c.threshold=="number"&&(l.threshold=c.threshold),typeof c.detection=="string"&&(l.detection=c.detection),Array.isArray(c.exempt)&&(l.exempt=c.exempt.filter(d=>typeof d=="string"))),{level:q,checks:w,orchestration:l}}catch{return h()}}function h(){return {level:L,checks:{},orchestration:{...j}}}function _(e,t){let n=e.checks[t];return n!==void 0?n:p(e.level)[t]}function D(e){let t=p(e.level);for(let n of s){let r=e.checks[n];r!==void 0&&(t[n]=r);}return t}function k(e){let t=u.join(e,".paradigm","config.yaml");if(!i.existsSync(t))throw new Error(`Config not found: ${t}`);let n=i.readFileSync(t,"utf8"),r=f.load(n);if(!r||typeof r!="object")throw new Error("Config is not a valid YAML object");return [r,n]}function a(e,t){let n=u.join(e,".paradigm","config.yaml"),r=f.dump(t,{lineWidth:-1,noRefs:true,sortKeys:false,quotingType:"'"});i.writeFileSync(n,r,"utf8");}function g(e){return (!e.enforcement||typeof e.enforcement!="object")&&(e.enforcement={level:"minimal",checks:{}}),e.enforcement}function F(e,t){let[n]=k(e),r=g(n);r.level=t,a(e,n);}function H(e,t,n){let[r]=k(e),o=g(r);(!o.checks||typeof o.checks!="object")&&(o.checks={}),o.checks[t]=n,a(e,r);}function K(e,t){let[n]=k(e),r=g(n);r.checks&&typeof r.checks=="object"&&delete r.checks[t],a(e,n);}function M(e){let[t]=k(e),n=g(t);n.checks={},a(e,t);}function N(e){let t=u.join(e,".paradigm","config.yaml");if(!i.existsSync(t))return false;try{let n=i.readFileSync(t,"utf8"),r=f.load(n);return !r||typeof r!="object"||r.enforcement?!1:(r.enforcement={level:"balanced",checks:{},orchestration:{threshold:3,detection:"git-diff",exempt:["*.md","*.yaml","*.yml",".purpose"]}},a(e,r),!0)}catch{return false}}export{s as a,p as b,V as c,b as d,E as e,S as f,T as g,_ as h,D as i,F as j,H as k,K as l,M as m,N as n};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import*as i from'fs';import*as f from'path';var u=".paradigm/events/session-log.jsonl",y=200;function h(e,t){try{let n=f.join(e,u),o=f.dirname(n);if(i.existsSync(o)||i.mkdirSync(o,{recursive:!0}),i.existsSync(n)&&i.readFileSync(n,"utf8").trim().split(`
|
|
3
3
|
`).filter(r=>r.trim()).length>=y)return;let g=JSON.stringify(t)+`
|
|
4
|
-
`;i.appendFileSync(n,g,"utf8"),t.type==="user-verdict"&&t.agent&&t.symbols?.length&&import('./agent-loader-
|
|
4
|
+
`;i.appendFileSync(n,g,"utf8"),t.type==="user-verdict"&&t.agent&&t.symbols?.length&&import('./agent-loader-RGPE3LRD.js').then(({loadAgentProfile:c,saveAgentProfile:s})=>{try{let r=c(e,t.agent);if(r?.expertise){let d=t.verdict==="accepted"?.03:t.verdict==="dismissed"?-.02:t.verdict==="revised"?-.01:0;if(d!==0){for(let p of t.symbols){let a=r.expertise.find(S=>S.symbol===p);a&&(a.confidence=Math.max(0,Math.min(1,a.confidence+d)),a.sessions=(a.sessions||0)+1,a.lastTouch=new Date().toISOString());}s(t.agent,r,"global");}}}catch{}}).catch(()=>{});}catch{}}function l(e){try{let t=f.join(e,u);return i.existsSync(t)?i.readFileSync(t,"utf8").trim().split(`
|
|
5
5
|
`).filter(n=>n.trim()).map(n=>{try{return JSON.parse(n)}catch{return null}}).filter(n=>n!==null):[]}catch{return []}}function v(e){try{let t=f.join(e,u);i.existsSync(t)&&i.writeFileSync(t,"","utf8");}catch{}}function b(e){let t=l(e),n=new Set;for(let o of t)o.agent&&n.add(o.agent);return Array.from(n)}function m(e,t){return l(e).filter(n=>n.agent===t)}function E(e,t){let n=m(e,t),o=n.filter(s=>s.type==="agent-contribution"),g=n.filter(s=>s.type==="user-verdict"),c=[];for(let s of o)c.push({contribution:s});for(let s of g){let r=c.find(d=>!d.verdict&&d.contribution);r?r.verdict=s:c.push({verdict:s});}return c}export{h as a,l as b,v as c,b as d,m as e,E as f};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {c,b as b$1}from'./chunk-5TAVYPOV.js';import*as i from'fs';import*as f from'path';var W={};c(W,{appendSessionWorkEntry:()=>b,clearSessionWorkLog:()=>E,getAgentEntries:()=>p,getAgentVerdicts:()=>k,getContributingAgents:()=>x,readSessionWorkLog:()=>l});function b(e,t){try{let n=f.join(e,u),o=f.dirname(n);if(i.existsSync(o)||i.mkdirSync(o,{recursive:!0}),i.existsSync(n)&&i.readFileSync(n,"utf8").trim().split(`
|
|
3
3
|
`).filter(r=>r.trim()).length>=v)return;let g=JSON.stringify(t)+`
|
|
4
|
-
`;i.appendFileSync(n,g,"utf8"),t.type==="user-verdict"&&t.agent&&t.symbols?.length&&import('./agent-loader-
|
|
4
|
+
`;i.appendFileSync(n,g,"utf8"),t.type==="user-verdict"&&t.agent&&t.symbols?.length&&import('./agent-loader-MQMXCI3D.js').then(({loadAgentProfile:c,saveAgentProfile:s})=>{try{let r=c(e,t.agent);if(r?.expertise){let d=t.verdict==="accepted"?.03:t.verdict==="dismissed"?-.02:t.verdict==="revised"?-.01:0;if(d!==0){for(let S of t.symbols){let a=r.expertise.find(y=>y.symbol===S);a&&(a.confidence=Math.max(0,Math.min(1,a.confidence+d)),a.sessions=(a.sessions||0)+1,a.lastTouch=new Date().toISOString());}s(t.agent,r,"global");}}}catch{}}).catch(()=>{});}catch{}}function l(e){try{let t=f.join(e,u);return i.existsSync(t)?i.readFileSync(t,"utf8").trim().split(`
|
|
5
5
|
`).filter(n=>n.trim()).map(n=>{try{return JSON.parse(n)}catch{return null}}).filter(n=>n!==null):[]}catch{return []}}function E(e){try{let t=f.join(e,u);i.existsSync(t)&&i.writeFileSync(t,"","utf8");}catch{}}function x(e){let t=l(e),n=new Set;for(let o of t)o.agent&&n.add(o.agent);return Array.from(n)}function p(e,t){return l(e).filter(n=>n.agent===t)}function k(e,t){let n=p(e,t),o=n.filter(s=>s.type==="agent-contribution"),g=n.filter(s=>s.type==="user-verdict"),c=[];for(let s of o)c.push({contribution:s});for(let s of g){let r=c.find(d=>!d.verdict&&d.contribution);r?r.verdict=s:c.push({verdict:s});}return c}var u,v,A=b$1(()=>{u=".paradigm/events/session-log.jsonl",v=200;});export{b as a,l as b,E as c,x as d,p as e,k as f,W as g,A as h};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import*as s from'fs';import*as a from'path';import*as
|
|
2
|
+
import*as s from'fs';import*as a from'path';import*as P from'os';import*as p from'crypto';var g=a.join(P.homedir(),".paradigm","score"),D=a.join(P.homedir(),".paradigm","mail"),h=a.join(g,"agents"),S=a.join(g,"threads"),x=a.join(g,"file-requests"),O=a.join(g,"trust.yaml"),K=3600*1e3,T={users:{},defaults:{level:"restricted",autoApprove:[],neverApprove:[".env*","**/*.key","**/*.pem","**/credentials*","**/secrets/**"]}};function Y(){if(s.existsSync(D)&&!s.existsSync(g))try{s.renameSync(D,g);}catch{}}function d(){Y();for(let t of [h,S,x])s.existsSync(t)||s.mkdirSync(t,{recursive:true});}var tt=d;function f(t){return a.join(h,t)}function v(t){let n=f(t);return s.existsSync(n)||s.mkdirSync(n,{recursive:true}),n}function m(t){if(!s.existsSync(t))return [];let e=s.readFileSync(t,"utf-8").split(`
|
|
3
3
|
`).filter(i=>i.trim().length>0),r=[];for(let i of e)try{r.push(JSON.parse(i));}catch{}return r}function E(t,n){let e=a.dirname(t);s.existsSync(e)||s.mkdirSync(e,{recursive:true}),s.appendFileSync(t,JSON.stringify(n)+`
|
|
4
|
-
`,"utf-8");}function w(t){return t.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").slice(0,40)||"unknown"}function C(t){try{let n=a.join(t,".paradigm","config.yaml");if(s.existsSync(n)){let r=s.readFileSync(n,"utf-8").match(/^project:\s*(.+)$/m);if(r)return w(r[1].trim().replace(/["']/g,""))}}catch{}return w(a.basename(t))}function J(t,n){return `${C(t)}/${n||"core"}`}function et(t,n,e){d();let r=J(t,n),i=v(r),o=C(t),c={id:r,name:e||`${o} (${n||"core"})`,type:"agent",project:o,role:n||"core",pid:process.pid,startedAt:new Date().toISOString(),label:e};return s.writeFileSync(a.join(i,"identity.json"),JSON.stringify(c,null,2),"utf-8"),c}function Q(t){let n=
|
|
4
|
+
`,"utf-8");}function w(t){return t.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").slice(0,40)||"unknown"}function C(t){try{let n=a.join(t,".paradigm","config.yaml");if(s.existsSync(n)){let r=s.readFileSync(n,"utf-8").match(/^project:\s*(.+)$/m);if(r)return w(r[1].trim().replace(/["']/g,""))}}catch{}return w(a.basename(t))}function J(t,n){return `${C(t)}/${n||"core"}`}function et(t,n,e){d();let r=J(t,n),i=v(r),o=C(t),c={id:r,name:e||`${o} (${n||"core"})`,type:"agent",project:o,role:n||"core",pid:process.pid,startedAt:new Date().toISOString(),label:e};return s.writeFileSync(a.join(i,"identity.json"),JSON.stringify(c,null,2),"utf-8"),c}function Q(t){let n=f(t);if(!s.existsSync(n))return false;try{return s.rmSync(n,{recursive:!0,force:!0}),!0}catch{return false}}function F(){if(d(),!s.existsSync(h))return [];let t=[],n=s.readdirSync(h,{withFileTypes:true}).filter(e=>e.isDirectory());for(let e of n){let r=a.join(h,e.name),i=s.readdirSync(r,{withFileTypes:true}).filter(o=>o.isDirectory());for(let o of i){let c=a.join(r,o.name,"identity.json");if(s.existsSync(c))try{let u=s.readFileSync(c,"utf-8"),l=JSON.parse(u);t.push(l);}catch{}}}return t}function nt(){let t=F(),n=0;for(let e of t)b(e.pid)||(Q(e.id),n++);return n}function rt(t){let n=J(t),e=a.join(f(n),"identity.json");if(!s.existsSync(e))return null;try{return JSON.parse(s.readFileSync(e,"utf-8"))}catch{return null}}function st(t,n){let e=a.join(f(t),"identity.json");if(s.existsSync(e))try{let r=JSON.parse(s.readFileSync(e,"utf-8"));r.lastPoll=new Date().toISOString(),n!==void 0&&(r.statusBlurb=n||void 0),s.writeFileSync(e,JSON.stringify(r,null,2),"utf-8");}catch{}}function it(t,n){let e=a.join(f(t),"identity.json");if(s.existsSync(e))try{let r=JSON.parse(s.readFileSync(e,"utf-8"));r.statusBlurb=n||void 0,s.writeFileSync(e,JSON.stringify(r,null,2),"utf-8");}catch{}}function ot(t,n=6e4){if(!t.lastPoll)return true;let e=new Date(t.lastPoll).getTime();return Date.now()-e>n}function at(){let n=F().filter(e=>b(e.pid));try{let e=a.join(P.homedir(),".conductor","sessions");if(s.existsSync(e)){let r=s.readdirSync(e).filter(i=>i.endsWith(".json"));for(let i of r)try{let o=s.readFileSync(a.join(e,i),"utf-8"),c=JSON.parse(o),u=parseInt(a.basename(i,".json"),10);!n.some(l=>l.pid===u)&&b(u)&&n.push({id:`conductor/${u}`,name:c.label||`Session ${u}`,type:"agent",project:c.projectDir?a.basename(c.projectDir):"unknown",role:"conductor",pid:u,startedAt:c.registeredAt||new Date().toISOString()});}catch{}}}catch{}return n}function y(t){return a.join(f(t),"inbox.jsonl")}function j(t){return a.join(f(t),"outbox.jsonl")}function $(t){return a.join(f(t),"ack.json")}function ct(t){let n=y(t);if(!s.existsSync(n))return {hasNew:false,inboxSize:0};let r=s.statSync(n).size;if(!k(t))return {hasNew:r>0,inboxSize:r};let o=a.join(f(t),"ack-size.json");if(s.existsSync(o))try{let c=JSON.parse(s.readFileSync(o,"utf-8"));return {hasNew:r>(c.size||0),inboxSize:r}}catch{}return {hasNew:r>0,inboxSize:r}}function ut(t){let n=y(t),e=a.join(f(t),"ack-size.json");try{let r=s.existsSync(n)?s.statSync(n).size:0;v(t),s.writeFileSync(e,JSON.stringify({size:r}),"utf-8");}catch{}}function N(t,n){v(t),E(y(t),n);}function ft(t,n){let e=m(y(t));if(!n){let i=k(t);if(i){let o=e.findIndex(c=>c.id===i);if(o>=0)return e.slice(o+1)}return e}let r=e.findIndex(i=>i.id===n);return r>=0?e.slice(r+1):e}function V(t,n){v(t),E(j(t),n);}function lt(t){return m(j(t))}function dt(t,n){let e=$(t);v(t),s.writeFileSync(e,JSON.stringify({lastAck:n}),"utf-8");}function k(t){let n=$(t);if(!s.existsSync(n))return null;try{return JSON.parse(s.readFileSync(n,"utf-8")).lastAck||null}catch{return null}}function pt(t){let n=k(t);if(!n)return 0;let e=y(t),r=m(e),i=r.findIndex(u=>u.id===n);if(i<0)return 0;let o=r.slice(i+1),c=r.length-o.length;return o.length===0?s.existsSync(e)&&s.writeFileSync(e,"","utf-8"):s.writeFileSync(e,o.map(u=>JSON.stringify(u)).join(`
|
|
5
5
|
`)+`
|
|
6
|
-
`,"utf-8"),c}function I(t){return a.join(S,`${t}.json`)}function gt(t,n){d();let e="thr-"+p.randomBytes(4).toString("hex"),r=new Date().toISOString(),i={id:e,topic:t,initiator:n,participants:[n],status:"active",createdAt:r,lastActivity:r,messageCount:0};return s.writeFileSync(I(e),JSON.stringify(i,null,2),"utf-8"),i}function z(t){let n=I(t);if(!s.existsSync(n))return null;try{return JSON.parse(s.readFileSync(n,"utf-8"))}catch{return null}}function yt(t){if(d(),!s.existsSync(S))return [];let n=s.readdirSync(S).filter(r=>r.endsWith(".json")),e=[];for(let r of n)try{let i=s.readFileSync(a.join(S,r),"utf-8"),o=JSON.parse(i);(!t||o.status===t)&&e.push(o);}catch{}return e.sort((r,i)=>i.lastActivity.localeCompare(r.lastActivity))}function _(t,n){let e=z(t);if(!e)return false;let r={...e,...n};return s.writeFileSync(I(t),JSON.stringify(r,null,2),"utf-8"),true}function ht(t,n){return _(t,{status:"resolved",resolvedAt:new Date().toISOString(),decision:n})}function St(t){let n=
|
|
7
|
-
`).map(
|
|
8
|
-
`);}let
|
|
6
|
+
`,"utf-8"),c}function I(t){return a.join(S,`${t}.json`)}function gt(t,n){d();let e="thr-"+p.randomBytes(4).toString("hex"),r=new Date().toISOString(),i={id:e,topic:t,initiator:n,participants:[n],status:"active",createdAt:r,lastActivity:r,messageCount:0};return s.writeFileSync(I(e),JSON.stringify(i,null,2),"utf-8"),i}function z(t){let n=I(t);if(!s.existsSync(n))return null;try{return JSON.parse(s.readFileSync(n,"utf-8"))}catch{return null}}function yt(t){if(d(),!s.existsSync(S))return [];let n=s.readdirSync(S).filter(r=>r.endsWith(".json")),e=[];for(let r of n)try{let i=s.readFileSync(a.join(S,r),"utf-8"),o=JSON.parse(i);(!t||o.status===t)&&e.push(o);}catch{}return e.sort((r,i)=>i.lastActivity.localeCompare(r.lastActivity))}function _(t,n){let e=z(t);if(!e)return false;let r={...e,...n};return s.writeFileSync(I(t),JSON.stringify(r,null,2),"utf-8"),true}function ht(t,n){return _(t,{status:"resolved",resolvedAt:new Date().toISOString(),decision:n})}function St(t){let n=F(),e=[];for(let r of n){let i=m(y(r.id)),o=m(j(r.id));for(let c of [...i,...o])(c.threadRoot===t||c.id===t)&&(e.some(u=>u.id===c.id)||e.push(c));}return e.sort((r,i)=>r.timestamp.localeCompare(i.timestamp))}function B(t){return {id:p.randomUUID(),parentId:t.parentId,threadRoot:t.threadRoot,timestamp:new Date().toISOString(),sender:t.sender,recipients:t.recipients,intent:t.intent,content:{text:t.text,diff:t.diff,decision:t.decision},symbols:t.symbols||[],attachments:t.attachments,metadata:t.metadata}}function L(t){d(),V(t.sender.id,t);let n=0;if(t.recipients&&t.recipients.length>0)for(let e of t.recipients)N(e.id,t),n++;else {let e=F();for(let r of e)r.id!==t.sender.id&&(N(r.id,t),n++);}if(t.threadRoot){let e=z(t.threadRoot);if(e){let i=e.participants.some(o=>o.id===t.sender.id)?e.participants:[...e.participants,t.sender];_(t.threadRoot,{participants:i,lastActivity:t.timestamp,messageCount:e.messageCount+1});}}return n}function A(t){return a.join(x,`${t}.json`)}function U(){if(!s.existsSync(O))return T;try{let t=s.readFileSync(O,"utf-8");try{return JSON.parse(t)}catch{return T}}catch{return T}}function xt(t){d();let n="freq-"+p.randomBytes(4).toString("hex"),e={request:{requestId:n,filePath:t.filePath,reason:t.reason,requester:t.requester,urgency:t.urgency||"normal",snippet:t.snippet,threadRoot:t.threadRoot},status:"pending",createdAt:new Date().toISOString()};return s.writeFileSync(A(n),JSON.stringify(e,null,2),"utf-8"),e}function G(t){let n=A(t);if(!s.existsSync(n))return null;try{return JSON.parse(s.readFileSync(n,"utf-8"))}catch{return null}}function Z(t){if(d(),!s.existsSync(x))return [];let n=s.readdirSync(x).filter(r=>r.endsWith(".json")),e=[];for(let r of n)try{let i=s.readFileSync(a.join(x,r),"utf-8"),o=JSON.parse(i);(!t||o.status===t)&&e.push(o);}catch{}return e.sort((r,i)=>i.createdAt.localeCompare(r.createdAt))}function mt(t,n,e){let r=G(t);if(!r)return {success:false,error:`File request not found: ${t}`};if(r.status!=="pending")return {success:false,error:`Request already ${r.status}`};let i=a.resolve(n,r.request.filePath);if(!i.startsWith(a.resolve(n)))return {success:false,error:"File path escapes project directory"};if(!s.existsSync(i))return {success:false,error:`File not found: ${r.request.filePath}`};try{let o=s.readFileSync(i,"utf-8"),c="utf8";if(e){let W=[/(?:api[_-]?key|secret|token|password|credential|auth)\s*[:=]/i,/(?:^|\s)(?:export\s+)?[A-Z_]+(?:KEY|SECRET|TOKEN|PASSWORD|CREDENTIAL)\s*=/,/-----BEGIN (?:RSA |EC )?PRIVATE KEY-----/];o=o.split(`
|
|
7
|
+
`).map(M=>{for(let H of W)if(H.test(M))return "[REDACTED]";return M}).join(`
|
|
8
|
+
`);}let u=p.createHash("sha256").update(o).digest("hex"),l={requestId:t,filePath:r.request.filePath,content:o,encoding:c,size:Buffer.byteLength(o),hash:u};r.status="approved",r.resolvedAt=new Date().toISOString(),r.delivery=l,s.writeFileSync(A(t),JSON.stringify(r,null,2),"utf-8");let q=B({sender:{id:"system",name:"File Transfer",type:"human"},recipients:[r.request.requester],intent:"fileDelivery",text:`File delivered: ${r.request.filePath} (${l.size} bytes, SHA-256: ${u.slice(0,12)}...)`,threadRoot:r.request.threadRoot,symbols:[]});return q.attachments=[{name:a.basename(r.request.filePath),type:"file",content:l.content,encoding:l.encoding}],L(q),{success:!0,delivery:l}}catch(o){return {success:false,error:`Failed to read file: ${o.message}`}}}function vt(t,n){let e=G(t);if(!e||e.status!=="pending")return false;e.status="denied",e.resolvedAt=new Date().toISOString(),e.denyReason=n,s.writeFileSync(A(t),JSON.stringify(e,null,2),"utf-8");let r=B({sender:{id:"system",name:"File Transfer",type:"human"},recipients:[e.request.requester],intent:"fileDenied",text:`File request denied: ${e.request.filePath}${n?` \u2014 ${n}`:""}`,threadRoot:e.request.threadRoot,symbols:[]});return L(r),true}function R(t,n){let e=n.replace(/\./g,"\\.").replace(/\*\*/g,"{{GLOBSTAR}}").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]").replace(/\{\{GLOBSTAR\}\}/g,".*");return new RegExp(`^${e}$`).test(t)}function X(t,n,e){let r=n||U();if(e&&r.users[e]){for(let i of r.users[e].neverApprove)if(R(t,i))return true}for(let i of r.defaults.neverApprove)if(R(t,i))return true;return false}function At(t,n,e){let r=n||U();if(X(t,r,e))return false;if(e&&r.users[e]){for(let i of r.users[e].autoApprove)if(R(t,i))return true}for(let i of r.defaults.autoApprove)if(R(t,i))return true;return false}function Rt(){let t=Z("pending"),n=0;for(let e of t)Date.now()-new Date(e.createdAt).getTime()>K&&(e.status="expired",e.resolvedAt=new Date().toISOString(),s.writeFileSync(A(e.request.requestId),JSON.stringify(e,null,2),"utf-8"),n++);return n}function b(t){try{return process.kill(t,0),!0}catch{return false}}export{z as A,yt as B,_ as C,ht as D,St as E,B as F,L as G,U as H,xt as I,G as J,Z as K,mt as L,vt as M,X as N,At as O,Rt as P,g as a,d as b,tt as c,f as d,m as e,E as f,J as g,et as h,Q as i,F as j,nt as k,rt as l,st as m,it as n,ot as o,at as p,ct as q,ut as r,N as s,ft as t,V as u,lt as v,dt as w,k as x,pt as y,gt as z};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import*as l from'fs';import*as u from'path';import*as S from'os';import*as T from'crypto';import*as d from'js-yaml';var P={architect:{style:"deliberate",risk:"conservative",verbosity:"detailed"},builder:{style:"rapid",risk:"balanced",verbosity:"concise"},tester:{style:"methodical",risk:"conservative",verbosity:"concise"},reviewer:{style:"deliberate",risk:"conservative",verbosity:"detailed"},security:{style:"methodical",risk:"conservative",verbosity:"detailed"},documentor:{style:"methodical",risk:"conservative",verbosity:"concise"}},v={architect:{symbols:["$*","#*"],concepts:["architecture","design","pattern","refactor"],signals:[{type:"flow-modified"},{type:"compliance-violation"}],threshold:.5},builder:{paths:["src/**","lib/**","packages/**"],signals:[{type:"file-modified"},{type:"error-encountered"}],threshold:.7},reviewer:{concepts:["code quality","bug","smell","convention"],signals:[{type:"compliance-violation"}],threshold:.6},tester:{paths:["**/*.test.*","**/*.spec.*"],concepts:["test","coverage","assertion"],signals:[{type:"error-encountered"},{type:"test-result"}],threshold:.5},security:{symbols:["^*","#*-auth","#*-middleware"],paths:["auth/**","middleware/**","guards/**"],concepts:["permission","JWT","session","RBAC","XSS","injection"],signals:[{type:"gate-added"},{type:"route-created"},{type:"gate-checked"},{type:"compliance-violation"}],threshold:.4},documentor:{paths:["**/.purpose","**/portal.yaml",".paradigm/**"],concepts:["purpose","portal","symbol","documentation","component","gate","flow"],signals:[{type:"file-modified"},{type:"compliance-violation"},{type:"work-completed"}],threshold:.3}},w={architect:{stance:"lead",debate:{will_challenge:true,evidence_required:true,escalate_to_human:true}},builder:{stance:"supportive",with:{architect:{stance:"supportive",can_contradict:false}}},reviewer:{stance:"advisory",debate:{will_challenge:true,evidence_required:true,escalate_to_human:true}},tester:{stance:"supportive",debate:{will_challenge:false,evidence_required:true,escalate_to_human:false}},security:{stance:"advisory",with:{architect:{stance:"peer",can_contradict:true},builder:{stance:"advisory",review_output:true}},debate:{will_challenge:true,evidence_required:true,escalate_to_human:true}},documentor:{stance:"supportive",with:{architect:{stance:"supportive"},builder:{stance:"supportive"},reviewer:{stance:"supportive"},security:{stance:"supportive"}},debate:{will_challenge:false,evidence_required:false,escalate_to_human:false}}};var y=u.join(S.homedir(),".paradigm","agents"),x=".paradigm/agents",h=".agent",E=".paradigm/roster.yaml",b=.3,L=60,$=7,N=.2;function m(e,t){let o=(Date.now()-new Date(t).getTime())/(1e3*60*60*24);if(o<=$)return e;let r=Math.pow(.5,(o-$)/L);return e*r}function F(e){let t=u.join(e,E);if(!l.existsSync(t))return null;try{return d.load(l.readFileSync(t,"utf8"))?.active??null}catch{return null}}function W(e,t){let i=F(t);return i?i.includes(e):true}function U(e,t){let i=u.join(e,E),o=u.dirname(i);l.existsSync(o)||l.mkdirSync(o,{recursive:true});let r={version:"1.0",active:t.sort()};l.writeFileSync(i,d.dump(r,{lineWidth:-1,noRefs:true}),"utf8");}function H(){if(!l.existsSync(y))return [];try{return l.readdirSync(y).filter(e=>e.endsWith(h)).map(e=>e.replace(h,""))}catch{return []}}function j(e,t){let i=u.join(e,x,`${t}${h}`);if(l.existsSync(i))try{let r=l.readFileSync(i,"utf-8");return d.load(r)}catch{}let o=u.join(y,`${t}${h}`);if(l.existsSync(o))try{let r=l.readFileSync(o,"utf-8"),n=d.load(r);if(l.existsSync(i))try{let a=l.readFileSync(i,"utf-8"),f=d.load(a);return R(n,f)}catch{}return n}catch{}return null}function O(e){let t=new Map;if(l.existsSync(y))try{let o=l.readdirSync(y).filter(r=>r.endsWith(h));for(let r of o)try{let n=l.readFileSync(u.join(y,r),"utf-8"),a=d.load(n);a?.id&&t.set(a.id,a);}catch{}}catch{}let i=u.join(e,x);if(l.existsSync(i))try{let o=l.readdirSync(i).filter(r=>r.endsWith(h));for(let r of o)try{let n=l.readFileSync(u.join(i,r),"utf-8"),a=d.load(n);if(!a?.id)continue;let f=t.get(a.id);f?t.set(a.id,R(f,a)):t.set(a.id,a);}catch{}}catch{}return Array.from(t.values())}function A(e,t,i,o){let r=i==="global"?y:u.join(o||process.cwd(),x);l.existsSync(r)||l.mkdirSync(r,{recursive:true});let n=u.join(r,`${e}${h}`);t.permissions&&(t.integrityHash=k(t)),t.updated=new Date().toISOString();let a=d.dump(t,{lineWidth:120,noRefs:true,sortKeys:false});return l.writeFileSync(n,a,"utf-8"),n}function D(e,t={}){let i=new Date().toISOString(),o={id:e,role:t.role||`${e.charAt(0).toUpperCase()+e.slice(1)} agent`,description:t.description||`Persistent identity for the ${e} agent role`,version:"1.0.0",personality:P[e]||{style:"balanced",risk:"balanced",verbosity:"concise"},expertise:[],transferable:[],contexts:{},created:i,updated:i};P[e]||(o.personality={style:"deliberate",risk:"balanced",verbosity:"concise"}),v[e]&&(o.attention={...v[e]}),w[e]&&(o.collaboration={...w[e]});let r=t.scope||"global",n=A(e,o,r,t.rootDir);return {profile:o,filePath:n}}function G(e,t){let i=O(e),o=[];for(let r of i){let n=(r.expertise||[]).find(a=>a.symbol===t);n&&o.push({agentId:r.id,entry:n});}return o.sort((r,n)=>m(n.entry.confidence,n.entry.lastTouch)-m(r.entry.confidence,r.entry.lastTouch))}function Y(e,t,i){let o=j(e,t);if(!o)return false;let r=new Date().toISOString(),n=o.expertise||[];for(let c of i.symbols_touched){let p=n.find(g=>g.symbol===c);p?(p.sessions++,p.lastTouch=r,i.confidence!=null&&(p.confidence=(1-b)*p.confidence+b*i.confidence)):n.push({symbol:c,confidence:i.confidence??.5,sessions:1,lastTouch:r});}o.expertise=n;let a=I(e);if(a){let c=o.contexts[a]||{focus:[],sessionsInProject:0};c.lastActive=r,c.sessionsInProject=(c.sessionsInProject||0)+1,o.contexts[a]=c;}let f=u.join(e,x,`${t}${h}`),s=l.existsSync(f)?"project":"global";return A(t,o,s,e),true}function J(e,t,i){let o=j(e,t);if(!o)return false;let n={correct:1,partial:.5,incorrect:0}[i.verdict];for(let s of i.symbols_touched){let c=(o.expertise||[]).find(p=>p.symbol===s);c&&(c.confidence=(1-b)*c.confidence+b*n);}let a=u.join(e,x,`${t}${h}`),f=l.existsSync(a)?"project":"global";return A(t,o,f,e),true}function B(e,t,i){return t?{personality:t.personality||null,topExpertise:(t.expertise||[]).sort((o,r)=>m(r.confidence,r.lastTouch)-m(o.confidence,o.lastTouch)).slice(0,10),projectContext:t.contexts?.[i]||null,transferablePatterns:(t.transferable||[]).filter(o=>o.successRate>=.7).map(o=>({id:o.id,description:o.description,successRate:o.successRate}))}:{personality:null,topExpertise:[],projectContext:null,transferablePatterns:[]}}function z(e,t,i,o,r){let n=[];if(e.personality){let s=e.personality;n.push(`## Agent Identity: ${e.id}`),n.push(`**Style:** ${s.style} | **Risk:** ${s.risk} | **Verbosity:** ${s.verbosity}`),n.push("");}let a=(e.expertise||[]).filter(s=>t.length===0||t.includes(s.symbol)).sort((s,c)=>m(c.confidence,c.lastTouch)-m(s.confidence,s.lastTouch)).slice(0,8);if(a.length>0){n.push("## Your Expertise on Relevant Symbols");for(let s of a){let p=1-m(s.confidence,s.lastTouch)/s.confidence,g=s.confidence>0&&p>N?" (aging)":"";n.push(`- \`${s.symbol}\`: confidence ${s.confidence.toFixed(2)} (${s.sessions} sessions)${g}`);}n.push("");}let f=(e.transferable||[]).filter(s=>s.successRate>=.7);if(f.length>0){n.push("## Transferable Patterns");for(let s of f){let c=s.appliedIn?.length||0;n.push(`- ${s.id}: ${(s.successRate*100).toFixed(0)}% success (learned in ${s.learnedIn}${c>0?`, applied in ${c} projects`:""})`);}n.push("");}if(i&&i.length>0){n.push("## Relevant Notebook Entries");for(let s of i.slice(0,5)){n.push(`### ${s.context}`),n.push(`Concepts: ${s.concepts.join(", ")}`),n.push("```");let c=s.snippet.length>300?s.snippet.slice(0,300)+"...":s.snippet;n.push(c),n.push("```"),n.push("");}}if(r){if(n.push(""),n.push("## Your Recent Work on This Project"),r.lastSession){let s=Date.now()-new Date(r.lastSession.date).getTime(),c=Math.floor(s/(3600*1e3)),p=c<24?`${c}h ago`:`${Math.floor(c/24)}d ago`;n.push(`Last session (${p}): ${r.lastSession.summary}`);}if(r.sessionsOnProject&&n.push(`Sessions on this project: ${r.sessionsOnProject}`),r.pendingWork?.length){n.push("**Pending from last session:**");for(let s of r.pendingWork.slice(0,5))n.push(`- ${s}`);}if(r.recentPatterns?.length){n.push("**Project patterns you've learned:**");for(let s of r.recentPatterns.slice(0,5))n.push(`- ${s}`);}n.push("");}if(e.attention){let s=e.attention,c=[];s.symbols?.length&&c.push(`Symbols: ${s.symbols.join(", ")}`),s.paths?.length&&c.push(`Paths: ${s.paths.join(", ")}`),s.concepts?.length&&c.push(`Concepts: ${s.concepts.join(", ")}`),s.signals?.length&&c.push(`Signals: ${s.signals.map(p=>p.type).join(", ")}`),c.length>0&&(n.push(""),n.push("### Attention"),n.push(`Threshold: ${s.threshold??.6}`),n.push(c.join(" | ")));}if(e.collaboration){let s=e.collaboration;if(n.push(""),n.push("### Collaboration"),n.push(`Default stance: ${s.stance||"supportive"}`),s.with)for(let[c,p]of Object.entries(s.with)){let g=[`${c}: ${p.stance||"peer"}`];p.can_contradict&&g.push("can contradict"),p.review_output&&g.push("reviews output"),n.push(`- ${g.join(", ")}`);}if(s.debate){let c=s.debate,p=[];c.will_challenge&&p.push("challenges"),c.evidence_required&&p.push("evidence-based"),c.escalate_to_human&&p.push("escalates to human"),p.length&&n.push(`Debate: ${p.join(", ")}`);}}if(e.nomination){let s=e.nomination;if(n.push(""),n.push("### Nomination"),s.speak_when?.urgency?.length&&n.push(`Always speaks on: ${s.speak_when.urgency.join(", ")}`),s.contribution_style){let c=[];s.contribution_style.brief_first&&c.push("brief first"),s.contribution_style.cite_sources&&c.push("cites sources"),s.contribution_style.offer_action&&c.push("offers action"),c.length&&n.push(`Style: ${c.join(", ")}`);}}if(o){if(o.recentDecisions?.length){n.push(""),n.push("## Recent Team Decisions");for(let s of o.recentDecisions.slice(0,5))n.push(`- **${s.title}**: ${s.decision.slice(0,150)}${s.decision.length>150?"...":""}`);}if(o.journalInsights?.length){n.push(""),n.push("## Transferable Insights");for(let s of o.journalInsights.slice(0,5))n.push(`- [${s.trigger}] ${s.insight.slice(0,150)}${s.insight.length>150?"...":""}`);}if(o.pendingNominations?.length){n.push(""),n.push("## Pending Nominations");for(let s of o.pendingNominations.slice(0,10))n.push(`- [${s.urgency}] ${s.brief}`);}}return n.join(`
|
|
3
|
-
`)}async function X(e,t,i=false){let{loadLoreEntries:o}=await import('./lore-loader-XY5MZRR2.js'),r=await o(e,{limit:500}),n=0,a=new Set,f=j(e,t)||
|
|
2
|
+
import*as l from'fs';import*as u from'path';import*as S from'os';import*as k from'crypto';import*as d from'js-yaml';var P={architect:{style:"deliberate",risk:"conservative",verbosity:"detailed"},builder:{style:"rapid",risk:"balanced",verbosity:"concise"},tester:{style:"methodical",risk:"conservative",verbosity:"concise"},reviewer:{style:"deliberate",risk:"conservative",verbosity:"detailed"},security:{style:"methodical",risk:"conservative",verbosity:"detailed"},documentor:{style:"methodical",risk:"conservative",verbosity:"concise"}},v={architect:{symbols:["$*","#*"],concepts:["architecture","design","pattern","refactor"],signals:[{type:"flow-modified"},{type:"compliance-violation"}],threshold:.5},builder:{paths:["src/**","lib/**","packages/**"],signals:[{type:"file-modified"},{type:"error-encountered"}],threshold:.7},reviewer:{concepts:["code quality","bug","smell","convention"],signals:[{type:"compliance-violation"}],threshold:.6},tester:{paths:["**/*.test.*","**/*.spec.*"],concepts:["test","coverage","assertion"],signals:[{type:"error-encountered"},{type:"test-result"}],threshold:.5},security:{symbols:["^*","#*-auth","#*-middleware"],paths:["auth/**","middleware/**","guards/**"],concepts:["permission","JWT","session","RBAC","XSS","injection"],signals:[{type:"gate-added"},{type:"route-created"},{type:"gate-checked"},{type:"compliance-violation"}],threshold:.4},documentor:{paths:["**/.purpose","**/portal.yaml",".paradigm/**"],concepts:["purpose","portal","symbol","documentation","component","gate","flow"],signals:[{type:"file-modified"},{type:"compliance-violation"},{type:"work-completed"}],threshold:.3}},w={architect:{stance:"lead",debate:{will_challenge:true,evidence_required:true,escalate_to_human:true}},builder:{stance:"supportive",with:{architect:{stance:"supportive",can_contradict:false}}},reviewer:{stance:"advisory",debate:{will_challenge:true,evidence_required:true,escalate_to_human:true}},tester:{stance:"supportive",debate:{will_challenge:false,evidence_required:true,escalate_to_human:false}},security:{stance:"advisory",with:{architect:{stance:"peer",can_contradict:true},builder:{stance:"advisory",review_output:true}},debate:{will_challenge:true,evidence_required:true,escalate_to_human:true}},documentor:{stance:"supportive",with:{architect:{stance:"supportive"},builder:{stance:"supportive"},reviewer:{stance:"supportive"},security:{stance:"supportive"}},debate:{will_challenge:false,evidence_required:false,escalate_to_human:false}}};var y=u.join(S.homedir(),".paradigm","agents"),x=".paradigm/agents",h=".agent",T=".paradigm/roster.yaml",b=.3,L=60,$=7,N=.2;function m(e,t){let o=(Date.now()-new Date(t).getTime())/(1e3*60*60*24);if(o<=$)return e;let r=Math.pow(.5,(o-$)/L);return e*r}function F(e){let t=u.join(e,T);if(!l.existsSync(t))return null;try{return d.load(l.readFileSync(t,"utf8"))?.active??null}catch{return null}}function W(e,t){let i=F(t);return i?i.includes(e):true}function U(e,t){let i=u.join(e,T),o=u.dirname(i);l.existsSync(o)||l.mkdirSync(o,{recursive:true});let r={version:"1.0",active:t.sort()};l.writeFileSync(i,d.dump(r,{lineWidth:-1,noRefs:true}),"utf8");}function H(){if(!l.existsSync(y))return [];try{return l.readdirSync(y).filter(e=>e.endsWith(h)).map(e=>e.replace(h,""))}catch{return []}}function j(e,t){let i=u.join(e,x,`${t}${h}`);if(l.existsSync(i))try{let r=l.readFileSync(i,"utf-8");return d.load(r)}catch{}let o=u.join(y,`${t}${h}`);if(l.existsSync(o))try{let r=l.readFileSync(o,"utf-8"),n=d.load(r);if(l.existsSync(i))try{let a=l.readFileSync(i,"utf-8"),f=d.load(a);return R(n,f)}catch{}return n}catch{}return null}function O(e){let t=new Map;if(l.existsSync(y))try{let o=l.readdirSync(y).filter(r=>r.endsWith(h));for(let r of o)try{let n=l.readFileSync(u.join(y,r),"utf-8"),a=d.load(n);a?.id&&t.set(a.id,a);}catch{}}catch{}let i=u.join(e,x);if(l.existsSync(i))try{let o=l.readdirSync(i).filter(r=>r.endsWith(h));for(let r of o)try{let n=l.readFileSync(u.join(i,r),"utf-8"),a=d.load(n);if(!a?.id)continue;let f=t.get(a.id);f?t.set(a.id,R(f,a)):t.set(a.id,a);}catch{}}catch{}return Array.from(t.values())}function _(e,t,i,o){let r=i==="global"?y:u.join(o||process.cwd(),x);l.existsSync(r)||l.mkdirSync(r,{recursive:true});let n=u.join(r,`${e}${h}`);t.permissions&&(t.integrityHash=E(t)),t.updated=new Date().toISOString();let a=d.dump(t,{lineWidth:120,noRefs:true,sortKeys:false});return l.writeFileSync(n,a,"utf-8"),n}function I(e,t={}){let i=new Date().toISOString(),o={id:e,role:t.role||`${e.charAt(0).toUpperCase()+e.slice(1)} agent`,description:t.description||`Persistent identity for the ${e} agent role`,version:"1.0.0",personality:P[e]||{style:"balanced",risk:"balanced",verbosity:"concise"},expertise:[],transferable:[],contexts:{},created:i,updated:i};P[e]||(o.personality={style:"deliberate",risk:"balanced",verbosity:"concise"}),v[e]&&(o.attention={...v[e]}),w[e]&&(o.collaboration={...w[e]});let r=t.scope||"global",n=_(e,o,r,t.rootDir);return {profile:o,filePath:n}}function G(e,t){let i=O(e),o=[];for(let r of i){let n=(r.expertise||[]).find(a=>a.symbol===t);n&&o.push({agentId:r.id,entry:n});}return o.sort((r,n)=>m(n.entry.confidence,n.entry.lastTouch)-m(r.entry.confidence,r.entry.lastTouch))}function Y(e,t,i){let o=j(e,t);if(!o)return false;let r=new Date().toISOString(),n=o.expertise||[];for(let c of i.symbols_touched){let p=n.find(g=>g.symbol===c);p?(p.sessions++,p.lastTouch=r,i.confidence!=null&&(p.confidence=(1-b)*p.confidence+b*i.confidence)):n.push({symbol:c,confidence:i.confidence??.5,sessions:1,lastTouch:r});}o.expertise=n;let a=D(e);if(a){let c=o.contexts[a]||{focus:[],sessionsInProject:0};c.lastActive=r,c.sessionsInProject=(c.sessionsInProject||0)+1,o.contexts[a]=c;}let f=u.join(e,x,`${t}${h}`),s=l.existsSync(f)?"project":"global";return _(t,o,s,e),true}function B(e,t,i){let o=j(e,t);if(!o)return false;let n={correct:1,partial:.5,incorrect:0}[i.verdict];for(let s of i.symbols_touched){let c=(o.expertise||[]).find(p=>p.symbol===s);c&&(c.confidence=(1-b)*c.confidence+b*n);}let a=u.join(e,x,`${t}${h}`),f=l.existsSync(a)?"project":"global";return _(t,o,f,e),true}function J(e,t,i){return t?{personality:t.personality||null,topExpertise:(t.expertise||[]).sort((o,r)=>m(r.confidence,r.lastTouch)-m(o.confidence,o.lastTouch)).slice(0,10),projectContext:t.contexts?.[i]||null,transferablePatterns:(t.transferable||[]).filter(o=>o.successRate>=.7).map(o=>({id:o.id,description:o.description,successRate:o.successRate}))}:{personality:null,topExpertise:[],projectContext:null,transferablePatterns:[]}}function z(e,t,i,o,r){let n=[];if(e.personality){let s=e.personality;n.push(`## Agent Identity: ${e.id}`),n.push(`**Style:** ${s.style} | **Risk:** ${s.risk} | **Verbosity:** ${s.verbosity}`),n.push("");}let a=(e.expertise||[]).filter(s=>t.length===0||t.includes(s.symbol)).sort((s,c)=>m(c.confidence,c.lastTouch)-m(s.confidence,s.lastTouch)).slice(0,8);if(a.length>0){n.push("## Your Expertise on Relevant Symbols");for(let s of a){let p=1-m(s.confidence,s.lastTouch)/s.confidence,g=s.confidence>0&&p>N?" (aging)":"";n.push(`- \`${s.symbol}\`: confidence ${s.confidence.toFixed(2)} (${s.sessions} sessions)${g}`);}n.push("");}let f=(e.transferable||[]).filter(s=>s.successRate>=.7);if(f.length>0){n.push("## Transferable Patterns");for(let s of f){let c=s.appliedIn?.length||0;n.push(`- ${s.id}: ${(s.successRate*100).toFixed(0)}% success (learned in ${s.learnedIn}${c>0?`, applied in ${c} projects`:""})`);}n.push("");}if(i&&i.length>0){n.push("## Relevant Notebook Entries");for(let s of i.slice(0,5)){n.push(`### ${s.context}`),n.push(`Concepts: ${s.concepts.join(", ")}`),n.push("```");let c=s.snippet.length>300?s.snippet.slice(0,300)+"...":s.snippet;n.push(c),n.push("```"),n.push("");}}if(r){if(n.push(""),n.push("## Your Recent Work on This Project"),r.lastSession){let s=Date.now()-new Date(r.lastSession.date).getTime(),c=Math.floor(s/(3600*1e3)),p=c<24?`${c}h ago`:`${Math.floor(c/24)}d ago`;n.push(`Last session (${p}): ${r.lastSession.summary}`);}if(r.sessionsOnProject&&n.push(`Sessions on this project: ${r.sessionsOnProject}`),r.pendingWork?.length){n.push("**Pending from last session:**");for(let s of r.pendingWork.slice(0,5))n.push(`- ${s}`);}if(r.recentPatterns?.length){n.push("**Project patterns you've learned:**");for(let s of r.recentPatterns.slice(0,5))n.push(`- ${s}`);}n.push("");}if(e.attention){let s=e.attention,c=[];s.symbols?.length&&c.push(`Symbols: ${s.symbols.join(", ")}`),s.paths?.length&&c.push(`Paths: ${s.paths.join(", ")}`),s.concepts?.length&&c.push(`Concepts: ${s.concepts.join(", ")}`),s.signals?.length&&c.push(`Signals: ${s.signals.map(p=>p.type).join(", ")}`),c.length>0&&(n.push(""),n.push("### Attention"),n.push(`Threshold: ${s.threshold??.6}`),n.push(c.join(" | ")));}if(e.collaboration){let s=e.collaboration;if(n.push(""),n.push("### Collaboration"),n.push(`Default stance: ${s.stance||"supportive"}`),s.with)for(let[c,p]of Object.entries(s.with)){let g=[`${c}: ${p.stance||"peer"}`];p.can_contradict&&g.push("can contradict"),p.review_output&&g.push("reviews output"),n.push(`- ${g.join(", ")}`);}if(s.debate){let c=s.debate,p=[];c.will_challenge&&p.push("challenges"),c.evidence_required&&p.push("evidence-based"),c.escalate_to_human&&p.push("escalates to human"),p.length&&n.push(`Debate: ${p.join(", ")}`);}}if(e.nomination){let s=e.nomination;if(n.push(""),n.push("### Nomination"),s.speak_when?.urgency?.length&&n.push(`Always speaks on: ${s.speak_when.urgency.join(", ")}`),s.contribution_style){let c=[];s.contribution_style.brief_first&&c.push("brief first"),s.contribution_style.cite_sources&&c.push("cites sources"),s.contribution_style.offer_action&&c.push("offers action"),c.length&&n.push(`Style: ${c.join(", ")}`);}}if(o){if(o.recentDecisions?.length){n.push(""),n.push("## Recent Team Decisions");for(let s of o.recentDecisions.slice(0,5))n.push(`- **${s.title}**: ${s.decision.slice(0,150)}${s.decision.length>150?"...":""}`);}if(o.journalInsights?.length){n.push(""),n.push("## Transferable Insights");for(let s of o.journalInsights.slice(0,5))n.push(`- [${s.trigger}] ${s.insight.slice(0,150)}${s.insight.length>150?"...":""}`);}if(o.pendingNominations?.length){n.push(""),n.push("## Pending Nominations");for(let s of o.pendingNominations.slice(0,10))n.push(`- [${s.urgency}] ${s.brief}`);}}return n.join(`
|
|
3
|
+
`)}async function X(e,t,i=false){let{loadLoreEntries:o}=await import('./lore-loader-XY5MZRR2.js'),r=await o(e,{limit:500}),n=0,a=new Set,f=j(e,t)||I(t,{rootDir:e}).profile,s=f.expertise||[];for(let c of r)if(!(!c.symbols_touched||c.symbols_touched.length===0)){n++;for(let p of c.symbols_touched){a.add(p);let g=s.find(C=>C.symbol===p);g?(g.sessions++,g.lastTouch=c.timestamp,c.confidence!=null&&(g.confidence=(1-b)*g.confidence+b*c.confidence)):s.push({symbol:p,confidence:c.confidence??.5,sessions:1,lastTouch:c.timestamp});}}if(f.expertise=s,!i){let c=u.join(e,x,`${t}${h}`),p=l.existsSync(c)?"project":"global";_(t,f,p,e);}return {entriesProcessed:n,symbolsUpdated:a.size}}function K(e,t,i){if(!e.permissions?.paths)return {allowed:true};let{read:o,write:r,deny:n}=e.permissions.paths;if(n&&n.length>0){for(let f of n)if(A(f,t))return {allowed:false,reason:`Path denied by pattern: ${f}`}}let a=i==="read"?o:r;if(a&&a.length>0){for(let f of a)if(A(f,t))return {allowed:true};return {allowed:false,reason:`No ${i} pattern matches: ${t}`}}return {allowed:true}}function V(e,t){if(!e.permissions?.tools)return {allowed:true};let{allow:i,deny:o}=e.permissions.tools;if(o&&o.length>0){for(let r of o)if(A(r,t))return {allowed:false,reason:`Tool denied by pattern: ${r}`}}if(i&&i.length>0){for(let r of i)if(A(r,t))return {allowed:true};return {allowed:false,reason:`Tool not in allow list: ${t}`}}return {allowed:true}}function E(e){let t=JSON.stringify({id:e.id,role:e.role,permissions:e.permissions||null});return k.createHash("sha256").update(t).digest("hex")}function Q(e){return e.integrityHash?E(e)===e.integrityHash?{valid:true}:{valid:false,reason:"Integrity hash mismatch \u2014 profile may have been tampered with"}:{valid:true,reason:"No integrity hash stored (pre-4.0 profile)"}}function A(e,t){let i=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return new RegExp(`^${i}$`).test(t)}function R(e,t){let i={...e};if(t.role&&(i.role=t.role),t.description&&(i.description=t.description),t.version&&(i.version=t.version),t.personality&&(i.personality={...e.personality,...t.personality}),t.expertise){let o=new Map(e.expertise.map(r=>[r.symbol,r]));for(let r of t.expertise)o.set(r.symbol,r);i.expertise=Array.from(o.values());}if(t.transferable){let o=new Map(e.transferable.map(r=>[r.id,r]));for(let r of t.transferable)o.set(r.id,r);i.transferable=Array.from(o.values());}if(t.contexts){i.contexts={...e.contexts};for(let[o,r]of Object.entries(t.contexts))i.contexts[o]={...i.contexts[o],...r};}return i}function D(e){try{let t=u.join(e,".paradigm","config.yaml");if(l.existsSync(t)){let i=l.readFileSync(t,"utf-8"),o=d.load(i);if(o?.project&&typeof o.project=="string")return o.project}}catch{}return u.basename(e)}export{m as a,F as b,W as c,U as d,H as e,j as f,O as g,_ as h,I as i,G as j,Y as k,B as l,J as m,z as n,X as o,K as p,V as q,E as r,Q as s};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {b as b$1}from'./chunk-5TAVYPOV.js';import*as l from'fs';import*as u from'path';import*as E from'os';import*as k from'crypto';import*as d from'js-yaml';var P,v,w,S=b$1(()=>{P={architect:{style:"deliberate",risk:"conservative",verbosity:"detailed"},builder:{style:"rapid",risk:"balanced",verbosity:"concise"},tester:{style:"methodical",risk:"conservative",verbosity:"concise"},reviewer:{style:"deliberate",risk:"conservative",verbosity:"detailed"},security:{style:"methodical",risk:"conservative",verbosity:"detailed"},documentor:{style:"methodical",risk:"conservative",verbosity:"concise"}},v={architect:{symbols:["$*","#*"],concepts:["architecture","design","pattern","refactor"],signals:[{type:"flow-modified"},{type:"compliance-violation"}],threshold:.5},builder:{paths:["src/**","lib/**","packages/**"],signals:[{type:"file-modified"},{type:"error-encountered"}],threshold:.7},reviewer:{concepts:["code quality","bug","smell","convention"],signals:[{type:"compliance-violation"}],threshold:.6},tester:{paths:["**/*.test.*","**/*.spec.*"],concepts:["test","coverage","assertion"],signals:[{type:"error-encountered"},{type:"test-result"}],threshold:.5},security:{symbols:["^*","#*-auth","#*-middleware"],paths:["auth/**","middleware/**","guards/**"],concepts:["permission","JWT","session","RBAC","XSS","injection"],signals:[{type:"gate-added"},{type:"route-created"},{type:"gate-checked"},{type:"compliance-violation"}],threshold:.4},documentor:{paths:["**/.purpose","**/portal.yaml",".paradigm/**"],concepts:["purpose","portal","symbol","documentation","component","gate","flow"],signals:[{type:"file-modified"},{type:"compliance-violation"},{type:"work-completed"}],threshold:.3}},w={architect:{stance:"lead",debate:{will_challenge:true,evidence_required:true,escalate_to_human:true}},builder:{stance:"supportive",with:{architect:{stance:"supportive",can_contradict:false}}},reviewer:{stance:"advisory",debate:{will_challenge:true,evidence_required:true,escalate_to_human:true}},tester:{stance:"supportive",debate:{will_challenge:false,evidence_required:true,escalate_to_human:false}},security:{stance:"advisory",with:{architect:{stance:"peer",can_contradict:true},builder:{stance:"advisory",review_output:true}},debate:{will_challenge:true,evidence_required:true,escalate_to_human:true}},documentor:{stance:"supportive",with:{architect:{stance:"supportive"},builder:{stance:"supportive"},reviewer:{stance:"supportive"},security:{stance:"supportive"}},debate:{will_challenge:false,evidence_required:false,escalate_to_human:false}}};});function m(e,t){let o=(Date.now()-new Date(t).getTime())/(1e3*60*60*24);if(o<=T)return e;let r=Math.pow(.5,(o-T)/F);return e*r}function D(e){let t=u.join(e,R);if(!l.existsSync(t))return null;try{return d.load(l.readFileSync(t,"utf8"))?.active??null}catch{return null}}function G(e,t){let i=D(t);return i?i.includes(e):true}function Y(e,t){let i=u.join(e,R),o=u.dirname(i);l.existsSync(o)||l.mkdirSync(o,{recursive:true});let r={version:"1.0",active:t.sort()};l.writeFileSync(i,d.dump(r,{lineWidth:-1,noRefs:true}),"utf8");}function J(){if(!l.existsSync(y))return [];try{return l.readdirSync(y).filter(e=>e.endsWith(h)).map(e=>e.replace(h,""))}catch{return []}}function j(e,t){let i=u.join(e,x,`${t}${h}`);if(l.existsSync(i))try{let r=l.readFileSync(i,"utf-8");return d.load(r)}catch{}let o=u.join(y,`${t}${h}`);if(l.existsSync(o))try{let r=l.readFileSync(o,"utf-8"),n=d.load(r);if(l.existsSync(i))try{let a=l.readFileSync(i,"utf-8"),f=d.load(a);return L(n,f)}catch{}return n}catch{}return null}function I(e){let t=new Map;if(l.existsSync(y))try{let o=l.readdirSync(y).filter(r=>r.endsWith(h));for(let r of o)try{let n=l.readFileSync(u.join(y,r),"utf-8"),a=d.load(n);a?.id&&t.set(a.id,a);}catch{}}catch{}let i=u.join(e,x);if(l.existsSync(i))try{let o=l.readdirSync(i).filter(r=>r.endsWith(h));for(let r of o)try{let n=l.readFileSync(u.join(i,r),"utf-8"),a=d.load(n);if(!a?.id)continue;let f=t.get(a.id);f?t.set(a.id,L(f,a)):t.set(a.id,a);}catch{}}catch{}return Array.from(t.values())}function A(e,t,i,o){let r=i==="global"?y:u.join(o||process.cwd(),x);l.existsSync(r)||l.mkdirSync(r,{recursive:true});let n=u.join(r,`${e}${h}`);t.permissions&&(t.integrityHash=C(t)),t.updated=new Date().toISOString();let a=d.dump(t,{lineWidth:120,noRefs:true,sortKeys:false});return l.writeFileSync(n,a,"utf-8"),n}function M(e,t={}){let i=new Date().toISOString(),o={id:e,role:t.role||`${e.charAt(0).toUpperCase()+e.slice(1)} agent`,description:t.description||`Persistent identity for the ${e} agent role`,version:"1.0.0",personality:P[e]||{style:"balanced",risk:"balanced",verbosity:"concise"},expertise:[],transferable:[],contexts:{},created:i,updated:i};P[e]||(o.personality={style:"deliberate",risk:"balanced",verbosity:"concise"}),v[e]&&(o.attention={...v[e]}),w[e]&&(o.collaboration={...w[e]});let r=t.scope||"global",n=A(e,o,r,t.rootDir);return {profile:o,filePath:n}}function B(e,t){let i=I(e),o=[];for(let r of i){let n=(r.expertise||[]).find(a=>a.symbol===t);n&&o.push({agentId:r.id,entry:n});}return o.sort((r,n)=>m(n.entry.confidence,n.entry.lastTouch)-m(r.entry.confidence,r.entry.lastTouch))}function z(e,t,i){let o=j(e,t);if(!o)return false;let r=new Date().toISOString(),n=o.expertise||[];for(let c of i.symbols_touched){let p=n.find(g=>g.symbol===c);p?(p.sessions++,p.lastTouch=r,i.confidence!=null&&(p.confidence=(1-b)*p.confidence+b*i.confidence)):n.push({symbol:c,confidence:i.confidence??.5,sessions:1,lastTouch:r});}o.expertise=n;let a=q(e);if(a){let c=o.contexts[a]||{focus:[],sessionsInProject:0};c.lastActive=r,c.sessionsInProject=(c.sessionsInProject||0)+1,o.contexts[a]=c;}let f=u.join(e,x,`${t}${h}`),s=l.existsSync(f)?"project":"global";return A(t,o,s,e),true}function X(e,t,i){let o=j(e,t);if(!o)return false;let n={correct:1,partial:.5,incorrect:0}[i.verdict];for(let s of i.symbols_touched){let c=(o.expertise||[]).find(p=>p.symbol===s);c&&(c.confidence=(1-b)*c.confidence+b*n);}let a=u.join(e,x,`${t}${h}`),f=l.existsSync(a)?"project":"global";return A(t,o,f,e),true}function K(e,t,i){return t?{personality:t.personality||null,topExpertise:(t.expertise||[]).sort((o,r)=>m(r.confidence,r.lastTouch)-m(o.confidence,o.lastTouch)).slice(0,10),projectContext:t.contexts?.[i]||null,transferablePatterns:(t.transferable||[]).filter(o=>o.successRate>=.7).map(o=>({id:o.id,description:o.description,successRate:o.successRate}))}:{personality:null,topExpertise:[],projectContext:null,transferablePatterns:[]}}function V(e,t,i,o,r){let n=[];if(e.personality){let s=e.personality;n.push(`## Agent Identity: ${e.id}`),n.push(`**Style:** ${s.style} | **Risk:** ${s.risk} | **Verbosity:** ${s.verbosity}`),n.push("");}let a=(e.expertise||[]).filter(s=>t.length===0||t.includes(s.symbol)).sort((s,c)=>m(c.confidence,c.lastTouch)-m(s.confidence,s.lastTouch)).slice(0,8);if(a.length>0){n.push("## Your Expertise on Relevant Symbols");for(let s of a){let p=1-m(s.confidence,s.lastTouch)/s.confidence,g=s.confidence>0&&p>O?" (aging)":"";n.push(`- \`${s.symbol}\`: confidence ${s.confidence.toFixed(2)} (${s.sessions} sessions)${g}`);}n.push("");}let f=(e.transferable||[]).filter(s=>s.successRate>=.7);if(f.length>0){n.push("## Transferable Patterns");for(let s of f){let c=s.appliedIn?.length||0;n.push(`- ${s.id}: ${(s.successRate*100).toFixed(0)}% success (learned in ${s.learnedIn}${c>0?`, applied in ${c} projects`:""})`);}n.push("");}if(i&&i.length>0){n.push("## Relevant Notebook Entries");for(let s of i.slice(0,5)){n.push(`### ${s.context}`),n.push(`Concepts: ${s.concepts.join(", ")}`),n.push("```");let c=s.snippet.length>300?s.snippet.slice(0,300)+"...":s.snippet;n.push(c),n.push("```"),n.push("");}}if(r){if(n.push(""),n.push("## Your Recent Work on This Project"),r.lastSession){let s=Date.now()-new Date(r.lastSession.date).getTime(),c=Math.floor(s/(3600*1e3)),p=c<24?`${c}h ago`:`${Math.floor(c/24)}d ago`;n.push(`Last session (${p}): ${r.lastSession.summary}`);}if(r.sessionsOnProject&&n.push(`Sessions on this project: ${r.sessionsOnProject}`),r.pendingWork?.length){n.push("**Pending from last session:**");for(let s of r.pendingWork.slice(0,5))n.push(`- ${s}`);}if(r.recentPatterns?.length){n.push("**Project patterns you've learned:**");for(let s of r.recentPatterns.slice(0,5))n.push(`- ${s}`);}n.push("");}if(e.attention){let s=e.attention,c=[];s.symbols?.length&&c.push(`Symbols: ${s.symbols.join(", ")}`),s.paths?.length&&c.push(`Paths: ${s.paths.join(", ")}`),s.concepts?.length&&c.push(`Concepts: ${s.concepts.join(", ")}`),s.signals?.length&&c.push(`Signals: ${s.signals.map(p=>p.type).join(", ")}`),c.length>0&&(n.push(""),n.push("### Attention"),n.push(`Threshold: ${s.threshold??.6}`),n.push(c.join(" | ")));}if(e.collaboration){let s=e.collaboration;if(n.push(""),n.push("### Collaboration"),n.push(`Default stance: ${s.stance||"supportive"}`),s.with)for(let[c,p]of Object.entries(s.with)){let g=[`${c}: ${p.stance||"peer"}`];p.can_contradict&&g.push("can contradict"),p.review_output&&g.push("reviews output"),n.push(`- ${g.join(", ")}`);}if(s.debate){let c=s.debate,p=[];c.will_challenge&&p.push("challenges"),c.evidence_required&&p.push("evidence-based"),c.escalate_to_human&&p.push("escalates to human"),p.length&&n.push(`Debate: ${p.join(", ")}`);}}if(e.nomination){let s=e.nomination;if(n.push(""),n.push("### Nomination"),s.speak_when?.urgency?.length&&n.push(`Always speaks on: ${s.speak_when.urgency.join(", ")}`),s.contribution_style){let c=[];s.contribution_style.brief_first&&c.push("brief first"),s.contribution_style.cite_sources&&c.push("cites sources"),s.contribution_style.offer_action&&c.push("offers action"),c.length&&n.push(`Style: ${c.join(", ")}`);}}if(o){if(o.recentDecisions?.length){n.push(""),n.push("## Recent Team Decisions");for(let s of o.recentDecisions.slice(0,5))n.push(`- **${s.title}**: ${s.decision.slice(0,150)}${s.decision.length>150?"...":""}`);}if(o.journalInsights?.length){n.push(""),n.push("## Transferable Insights");for(let s of o.journalInsights.slice(0,5))n.push(`- [${s.trigger}] ${s.insight.slice(0,150)}${s.insight.length>150?"...":""}`);}if(o.pendingNominations?.length){n.push(""),n.push("## Pending Nominations");for(let s of o.pendingNominations.slice(0,10))n.push(`- [${s.urgency}] ${s.brief}`);}}return n.join(`
|
|
3
|
-
`)}async function Q(e,t,i=false){let{loadLoreEntries:o}=await import('./lore-loader-RVQI5GXL.js'),r=await o(e,{limit:500}),n=0,a=new Set,f=j(e,t)||M(t,{rootDir:e}).profile,s=f.expertise||[];for(let c of r)if(!(!c.symbols_touched||c.symbols_touched.length===0)){n++;for(let p of c.symbols_touched){a.add(p);let g=s.find(N=>N.symbol===p);g?(g.sessions++,g.lastTouch=c.timestamp,c.confidence!=null&&(g.confidence=(1-b)*g.confidence+b*c.confidence)):s.push({symbol:p,confidence:c.confidence??.5,sessions:1,lastTouch:c.timestamp});}}if(f.expertise=s,!i){let c=u.join(e,x,`${t}${h}`),p=l.existsSync(c)?"project":"global";
|
|
2
|
+
import {b as b$1}from'./chunk-5TAVYPOV.js';import*as l from'fs';import*as u from'path';import*as T from'os';import*as E from'crypto';import*as d from'js-yaml';var P,v,w,S=b$1(()=>{P={architect:{style:"deliberate",risk:"conservative",verbosity:"detailed"},builder:{style:"rapid",risk:"balanced",verbosity:"concise"},tester:{style:"methodical",risk:"conservative",verbosity:"concise"},reviewer:{style:"deliberate",risk:"conservative",verbosity:"detailed"},security:{style:"methodical",risk:"conservative",verbosity:"detailed"},documentor:{style:"methodical",risk:"conservative",verbosity:"concise"}},v={architect:{symbols:["$*","#*"],concepts:["architecture","design","pattern","refactor"],signals:[{type:"flow-modified"},{type:"compliance-violation"}],threshold:.5},builder:{paths:["src/**","lib/**","packages/**"],signals:[{type:"file-modified"},{type:"error-encountered"}],threshold:.7},reviewer:{concepts:["code quality","bug","smell","convention"],signals:[{type:"compliance-violation"}],threshold:.6},tester:{paths:["**/*.test.*","**/*.spec.*"],concepts:["test","coverage","assertion"],signals:[{type:"error-encountered"},{type:"test-result"}],threshold:.5},security:{symbols:["^*","#*-auth","#*-middleware"],paths:["auth/**","middleware/**","guards/**"],concepts:["permission","JWT","session","RBAC","XSS","injection"],signals:[{type:"gate-added"},{type:"route-created"},{type:"gate-checked"},{type:"compliance-violation"}],threshold:.4},documentor:{paths:["**/.purpose","**/portal.yaml",".paradigm/**"],concepts:["purpose","portal","symbol","documentation","component","gate","flow"],signals:[{type:"file-modified"},{type:"compliance-violation"},{type:"work-completed"}],threshold:.3}},w={architect:{stance:"lead",debate:{will_challenge:true,evidence_required:true,escalate_to_human:true}},builder:{stance:"supportive",with:{architect:{stance:"supportive",can_contradict:false}}},reviewer:{stance:"advisory",debate:{will_challenge:true,evidence_required:true,escalate_to_human:true}},tester:{stance:"supportive",debate:{will_challenge:false,evidence_required:true,escalate_to_human:false}},security:{stance:"advisory",with:{architect:{stance:"peer",can_contradict:true},builder:{stance:"advisory",review_output:true}},debate:{will_challenge:true,evidence_required:true,escalate_to_human:true}},documentor:{stance:"supportive",with:{architect:{stance:"supportive"},builder:{stance:"supportive"},reviewer:{stance:"supportive"},security:{stance:"supportive"}},debate:{will_challenge:false,evidence_required:false,escalate_to_human:false}}};});function m(e,t){let o=(Date.now()-new Date(t).getTime())/(1e3*60*60*24);if(o<=k)return e;let r=Math.pow(.5,(o-k)/F);return e*r}function I(e){let t=u.join(e,R);if(!l.existsSync(t))return null;try{return d.load(l.readFileSync(t,"utf8"))?.active??null}catch{return null}}function G(e,t){let i=I(t);return i?i.includes(e):true}function Y(e,t){let i=u.join(e,R),o=u.dirname(i);l.existsSync(o)||l.mkdirSync(o,{recursive:true});let r={version:"1.0",active:t.sort()};l.writeFileSync(i,d.dump(r,{lineWidth:-1,noRefs:true}),"utf8");}function B(){if(!l.existsSync(y))return [];try{return l.readdirSync(y).filter(e=>e.endsWith(h)).map(e=>e.replace(h,""))}catch{return []}}function j(e,t){let i=u.join(e,x,`${t}${h}`);if(l.existsSync(i))try{let r=l.readFileSync(i,"utf-8");return d.load(r)}catch{}let o=u.join(y,`${t}${h}`);if(l.existsSync(o))try{let r=l.readFileSync(o,"utf-8"),n=d.load(r);if(l.existsSync(i))try{let a=l.readFileSync(i,"utf-8"),f=d.load(a);return L(n,f)}catch{}return n}catch{}return null}function D(e){let t=new Map;if(l.existsSync(y))try{let o=l.readdirSync(y).filter(r=>r.endsWith(h));for(let r of o)try{let n=l.readFileSync(u.join(y,r),"utf-8"),a=d.load(n);a?.id&&t.set(a.id,a);}catch{}}catch{}let i=u.join(e,x);if(l.existsSync(i))try{let o=l.readdirSync(i).filter(r=>r.endsWith(h));for(let r of o)try{let n=l.readFileSync(u.join(i,r),"utf-8"),a=d.load(n);if(!a?.id)continue;let f=t.get(a.id);f?t.set(a.id,L(f,a)):t.set(a.id,a);}catch{}}catch{}return Array.from(t.values())}function _(e,t,i,o){let r=i==="global"?y:u.join(o||process.cwd(),x);l.existsSync(r)||l.mkdirSync(r,{recursive:true});let n=u.join(r,`${e}${h}`);t.permissions&&(t.integrityHash=C(t)),t.updated=new Date().toISOString();let a=d.dump(t,{lineWidth:120,noRefs:true,sortKeys:false});return l.writeFileSync(n,a,"utf-8"),n}function M(e,t={}){let i=new Date().toISOString(),o={id:e,role:t.role||`${e.charAt(0).toUpperCase()+e.slice(1)} agent`,description:t.description||`Persistent identity for the ${e} agent role`,version:"1.0.0",personality:P[e]||{style:"balanced",risk:"balanced",verbosity:"concise"},expertise:[],transferable:[],contexts:{},created:i,updated:i};P[e]||(o.personality={style:"deliberate",risk:"balanced",verbosity:"concise"}),v[e]&&(o.attention={...v[e]}),w[e]&&(o.collaboration={...w[e]});let r=t.scope||"global",n=_(e,o,r,t.rootDir);return {profile:o,filePath:n}}function J(e,t){let i=D(e),o=[];for(let r of i){let n=(r.expertise||[]).find(a=>a.symbol===t);n&&o.push({agentId:r.id,entry:n});}return o.sort((r,n)=>m(n.entry.confidence,n.entry.lastTouch)-m(r.entry.confidence,r.entry.lastTouch))}function z(e,t,i){let o=j(e,t);if(!o)return false;let r=new Date().toISOString(),n=o.expertise||[];for(let c of i.symbols_touched){let p=n.find(g=>g.symbol===c);p?(p.sessions++,p.lastTouch=r,i.confidence!=null&&(p.confidence=(1-b)*p.confidence+b*i.confidence)):n.push({symbol:c,confidence:i.confidence??.5,sessions:1,lastTouch:r});}o.expertise=n;let a=q(e);if(a){let c=o.contexts[a]||{focus:[],sessionsInProject:0};c.lastActive=r,c.sessionsInProject=(c.sessionsInProject||0)+1,o.contexts[a]=c;}let f=u.join(e,x,`${t}${h}`),s=l.existsSync(f)?"project":"global";return _(t,o,s,e),true}function X(e,t,i){let o=j(e,t);if(!o)return false;let n={correct:1,partial:.5,incorrect:0}[i.verdict];for(let s of i.symbols_touched){let c=(o.expertise||[]).find(p=>p.symbol===s);c&&(c.confidence=(1-b)*c.confidence+b*n);}let a=u.join(e,x,`${t}${h}`),f=l.existsSync(a)?"project":"global";return _(t,o,f,e),true}function K(e,t,i){return t?{personality:t.personality||null,topExpertise:(t.expertise||[]).sort((o,r)=>m(r.confidence,r.lastTouch)-m(o.confidence,o.lastTouch)).slice(0,10),projectContext:t.contexts?.[i]||null,transferablePatterns:(t.transferable||[]).filter(o=>o.successRate>=.7).map(o=>({id:o.id,description:o.description,successRate:o.successRate}))}:{personality:null,topExpertise:[],projectContext:null,transferablePatterns:[]}}function V(e,t,i,o,r){let n=[];if(e.personality){let s=e.personality;n.push(`## Agent Identity: ${e.id}`),n.push(`**Style:** ${s.style} | **Risk:** ${s.risk} | **Verbosity:** ${s.verbosity}`),n.push("");}let a=(e.expertise||[]).filter(s=>t.length===0||t.includes(s.symbol)).sort((s,c)=>m(c.confidence,c.lastTouch)-m(s.confidence,s.lastTouch)).slice(0,8);if(a.length>0){n.push("## Your Expertise on Relevant Symbols");for(let s of a){let p=1-m(s.confidence,s.lastTouch)/s.confidence,g=s.confidence>0&&p>O?" (aging)":"";n.push(`- \`${s.symbol}\`: confidence ${s.confidence.toFixed(2)} (${s.sessions} sessions)${g}`);}n.push("");}let f=(e.transferable||[]).filter(s=>s.successRate>=.7);if(f.length>0){n.push("## Transferable Patterns");for(let s of f){let c=s.appliedIn?.length||0;n.push(`- ${s.id}: ${(s.successRate*100).toFixed(0)}% success (learned in ${s.learnedIn}${c>0?`, applied in ${c} projects`:""})`);}n.push("");}if(i&&i.length>0){n.push("## Relevant Notebook Entries");for(let s of i.slice(0,5)){n.push(`### ${s.context}`),n.push(`Concepts: ${s.concepts.join(", ")}`),n.push("```");let c=s.snippet.length>300?s.snippet.slice(0,300)+"...":s.snippet;n.push(c),n.push("```"),n.push("");}}if(r){if(n.push(""),n.push("## Your Recent Work on This Project"),r.lastSession){let s=Date.now()-new Date(r.lastSession.date).getTime(),c=Math.floor(s/(3600*1e3)),p=c<24?`${c}h ago`:`${Math.floor(c/24)}d ago`;n.push(`Last session (${p}): ${r.lastSession.summary}`);}if(r.sessionsOnProject&&n.push(`Sessions on this project: ${r.sessionsOnProject}`),r.pendingWork?.length){n.push("**Pending from last session:**");for(let s of r.pendingWork.slice(0,5))n.push(`- ${s}`);}if(r.recentPatterns?.length){n.push("**Project patterns you've learned:**");for(let s of r.recentPatterns.slice(0,5))n.push(`- ${s}`);}n.push("");}if(e.attention){let s=e.attention,c=[];s.symbols?.length&&c.push(`Symbols: ${s.symbols.join(", ")}`),s.paths?.length&&c.push(`Paths: ${s.paths.join(", ")}`),s.concepts?.length&&c.push(`Concepts: ${s.concepts.join(", ")}`),s.signals?.length&&c.push(`Signals: ${s.signals.map(p=>p.type).join(", ")}`),c.length>0&&(n.push(""),n.push("### Attention"),n.push(`Threshold: ${s.threshold??.6}`),n.push(c.join(" | ")));}if(e.collaboration){let s=e.collaboration;if(n.push(""),n.push("### Collaboration"),n.push(`Default stance: ${s.stance||"supportive"}`),s.with)for(let[c,p]of Object.entries(s.with)){let g=[`${c}: ${p.stance||"peer"}`];p.can_contradict&&g.push("can contradict"),p.review_output&&g.push("reviews output"),n.push(`- ${g.join(", ")}`);}if(s.debate){let c=s.debate,p=[];c.will_challenge&&p.push("challenges"),c.evidence_required&&p.push("evidence-based"),c.escalate_to_human&&p.push("escalates to human"),p.length&&n.push(`Debate: ${p.join(", ")}`);}}if(e.nomination){let s=e.nomination;if(n.push(""),n.push("### Nomination"),s.speak_when?.urgency?.length&&n.push(`Always speaks on: ${s.speak_when.urgency.join(", ")}`),s.contribution_style){let c=[];s.contribution_style.brief_first&&c.push("brief first"),s.contribution_style.cite_sources&&c.push("cites sources"),s.contribution_style.offer_action&&c.push("offers action"),c.length&&n.push(`Style: ${c.join(", ")}`);}}if(o){if(o.recentDecisions?.length){n.push(""),n.push("## Recent Team Decisions");for(let s of o.recentDecisions.slice(0,5))n.push(`- **${s.title}**: ${s.decision.slice(0,150)}${s.decision.length>150?"...":""}`);}if(o.journalInsights?.length){n.push(""),n.push("## Transferable Insights");for(let s of o.journalInsights.slice(0,5))n.push(`- [${s.trigger}] ${s.insight.slice(0,150)}${s.insight.length>150?"...":""}`);}if(o.pendingNominations?.length){n.push(""),n.push("## Pending Nominations");for(let s of o.pendingNominations.slice(0,10))n.push(`- [${s.urgency}] ${s.brief}`);}}return n.join(`
|
|
3
|
+
`)}async function Q(e,t,i=false){let{loadLoreEntries:o}=await import('./lore-loader-RVQI5GXL.js'),r=await o(e,{limit:500}),n=0,a=new Set,f=j(e,t)||M(t,{rootDir:e}).profile,s=f.expertise||[];for(let c of r)if(!(!c.symbols_touched||c.symbols_touched.length===0)){n++;for(let p of c.symbols_touched){a.add(p);let g=s.find(N=>N.symbol===p);g?(g.sessions++,g.lastTouch=c.timestamp,c.confidence!=null&&(g.confidence=(1-b)*g.confidence+b*c.confidence)):s.push({symbol:p,confidence:c.confidence??.5,sessions:1,lastTouch:c.timestamp});}}if(f.expertise=s,!i){let c=u.join(e,x,`${t}${h}`),p=l.existsSync(c)?"project":"global";_(t,f,p,e);}return {entriesProcessed:n,symbolsUpdated:a.size}}function Z(e,t,i){if(!e.permissions?.paths)return {allowed:true};let{read:o,write:r,deny:n}=e.permissions.paths;if(n&&n.length>0){for(let f of n)if(A(f,t))return {allowed:false,reason:`Path denied by pattern: ${f}`}}let a=i==="read"?o:r;if(a&&a.length>0){for(let f of a)if(A(f,t))return {allowed:true};return {allowed:false,reason:`No ${i} pattern matches: ${t}`}}return {allowed:true}}function ee(e,t){if(!e.permissions?.tools)return {allowed:true};let{allow:i,deny:o}=e.permissions.tools;if(o&&o.length>0){for(let r of o)if(A(r,t))return {allowed:false,reason:`Tool denied by pattern: ${r}`}}if(i&&i.length>0){for(let r of i)if(A(r,t))return {allowed:true};return {allowed:false,reason:`Tool not in allow list: ${t}`}}return {allowed:true}}function C(e){let t=JSON.stringify({id:e.id,role:e.role,permissions:e.permissions||null});return E.createHash("sha256").update(t).digest("hex")}function te(e){return e.integrityHash?C(e)===e.integrityHash?{valid:true}:{valid:false,reason:"Integrity hash mismatch \u2014 profile may have been tampered with"}:{valid:true,reason:"No integrity hash stored (pre-4.0 profile)"}}function A(e,t){let i=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return new RegExp(`^${i}$`).test(t)}function L(e,t){let i={...e};if(t.role&&(i.role=t.role),t.description&&(i.description=t.description),t.version&&(i.version=t.version),t.personality&&(i.personality={...e.personality,...t.personality}),t.expertise){let o=new Map(e.expertise.map(r=>[r.symbol,r]));for(let r of t.expertise)o.set(r.symbol,r);i.expertise=Array.from(o.values());}if(t.transferable){let o=new Map(e.transferable.map(r=>[r.id,r]));for(let r of t.transferable)o.set(r.id,r);i.transferable=Array.from(o.values());}if(t.contexts){i.contexts={...e.contexts};for(let[o,r]of Object.entries(t.contexts))i.contexts[o]={...i.contexts[o],...r};}return i}function q(e){try{let t=u.join(e,".paradigm","config.yaml");if(l.existsSync(t)){let i=l.readFileSync(t,"utf-8"),o=d.load(i);if(o?.project&&typeof o.project=="string")return o.project}}catch{}return u.basename(e)}var y,x,h,R,b,F,k,O,W=b$1(()=>{S();y=u.join(T.homedir(),".paradigm","agents"),x=".paradigm/agents",h=".agent",R=".paradigm/roster.yaml",b=.3,F=60,k=7,O=.2;});export{m as a,I as b,G as c,Y as d,B as e,j as f,D as g,_ as h,M as i,J as j,z as k,X as l,K as m,V as n,Q as o,Z as p,ee as q,C as r,te as s,W as t};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {a,e,d}from'./chunk-73R63P7K.js';import'./chunk-5TAVYPOV.js';import*as c from'fs';import*as p from'path';import {execSync}from'child_process';import n from'chalk';import*as w from'js-yaml';function R(s){return s.match(/(?:^|\s)((?:\/|\.\/|[a-zA-Z0-9_-]+\/)[^\s,;:'"]+\.[a-zA-Z]{1,10})\b/)?.[1]}async function $(s,l){try{let a$1=a(s),f=[];try{f=execSync("git diff --name-only HEAD",{cwd:s,encoding:"utf8",timeout:5e3}).trim().split(`
|
|
3
3
|
`).filter(Boolean);}catch{}let i;try{i=execSync("git status --porcelain",{cwd:s,encoding:"utf8",timeout:5e3}).trim()==="";}catch{}let u=p.join(s,"portal.yaml"),g=!1;if(c.existsSync(u))try{let t=c.readFileSync(u,"utf8"),e=w.load(t);g=e?.routes!=null&&Object.keys(e.routes).length>0;}catch{}let r=e({toolsCalled:[],filesModified:f,symbolsTouched:[],loreRecorded:!1,hasPortalRoutes:g,taskAddsRoutes:!1,gitClean:i}),o=d(a$1,l,r),d$1=0;if(o.evaluations.length>0)try{let t=p.join(s,".paradigm","sentinel");if(c.existsSync(t)){let{SentinelStorage:e}=await import('./dist-VGFSP3XM.js'),m=new e(t);for(let b of o.evaluations)m.recordPracticeEvent({habitId:b.habit.id,habitCategory:b.habit.category,result:b.result,engineer:"agent",sessionId:`cli-${Date.now().toString(36)}`,symbolsTouched:[],filesModified:f,notes:b.reason}),d$1++;}}catch{}let h=p.join(s,".paradigm",".habits-blocking");try{if(l==="on-stop"&&o.blocksCompletion){let t=o.evaluations.filter(e=>e.result==="skipped"&&e.habit.severity==="block").map(e=>`${e.habit.name}: ${e.reason}`);c.writeFileSync(h,t.join(`
|
|
4
|
-
`),"utf8");}else l==="on-stop"&&c.existsSync(h)&&c.unlinkSync(h);}catch{}return {trigger:l,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:d$1}}catch{return null}}async function P(s,l){let a=p.join(s,".paradigm","aspect-graph.db");if(!c.existsSync(a))return {driftedCount:0,healedCount:0,cleanCount:0,missingCount:0,details:[]};try{let{driftCheckCommand:f}=await import('./drift-ILZE5BFJ.js'),i="",u=console.log;console.log=g=>{i=g;};try{await f({json:!0,autoHeal:l});}finally{console.log=u;}return i?JSON.parse(i):null}catch{return null}}async function B(s){if(!c.existsSync(p.join(s,"portal.yaml")))return null;try{let{checkPortalCompliance:l}=await import('./portal-compliance-4MG5F2GI.js'),a=await l(s);return {status:a.status,declaredButUnusedCount:a.declaredButUnused.length,usedButUndeclaredCount:a.usedButUndeclared.length,properlyDeclaredCount:a.properlyDeclared.length,declaredButUnused:a.declaredButUnused,usedButUndeclared:a.usedButUndeclared,properlyDeclared:a.properlyDeclared}}catch{return null}}async function j(s){try{let{runPostflightLearning:l}=await import('./ambient-
|
|
4
|
+
`),"utf8");}else l==="on-stop"&&c.existsSync(h)&&c.unlinkSync(h);}catch{}return {trigger:l,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:d$1}}catch{return null}}async function P(s,l){let a=p.join(s,".paradigm","aspect-graph.db");if(!c.existsSync(a))return {driftedCount:0,healedCount:0,cleanCount:0,missingCount:0,details:[]};try{let{driftCheckCommand:f}=await import('./drift-ILZE5BFJ.js'),i="",u=console.log;console.log=g=>{i=g;};try{await f({json:!0,autoHeal:l});}finally{console.log=u;}return i?JSON.parse(i):null}catch{return null}}async function B(s){if(!c.existsSync(p.join(s,"portal.yaml")))return null;try{let{checkPortalCompliance:l}=await import('./portal-compliance-4MG5F2GI.js'),a=await l(s);return {status:a.status,declaredButUnusedCount:a.declaredButUnused.length,usedButUndeclaredCount:a.usedButUndeclared.length,properlyDeclaredCount:a.properlyDeclared.length,declaredButUnused:a.declaredButUnused,usedButUndeclared:a.usedButUndeclared,properlyDeclared:a.properlyDeclared}}catch{return null}}async function j(s){try{let{runPostflightLearning:l}=await import('./ambient-2RAKMUC7.js');return await l(s)}catch{return null}}async function A(s){let l=process.cwd(),a=s.trigger||"on-stop",f=s.autoHeal!==false,i=[],u=[],g=await $(l,a),r=await P(l,f),o=await B(l);if(g?.evaluation.blocksCompletion){let t=g.habits.filter(e=>e.result==="skipped"&&e.severity==="block");for(let e of t){let m=`Blocking habit not satisfied: ${e.name} \u2014 ${e.reason}`;i.push(m),u.push({message:m,source:"habits",file:R(e.reason),severity:"blocking"});}}if(r&&r.driftedCount>0){let t=`${r.driftedCount} aspect anchor(s) have drifted (content genuinely changed). Run paradigm_aspect_check to review.`;i.push(t);for(let e of r.details.filter(m=>m.status==="drifted"))u.push({message:`Aspect ~${e.aspectId} drifted at lines ${e.startLine}-${e.endLine}`,source:"drift",file:e.path,severity:"advisory"});u.filter(e=>e.source==="drift").length===0&&u.push({message:t,source:"drift",severity:"advisory"});}if(o&&o.usedButUndeclaredCount>0){let t=`${o.usedButUndeclaredCount} gate(s) used in code but not declared in portal.yaml: ${o.usedButUndeclared.join(", ")}`;i.push(t);for(let e of o.usedButUndeclared)u.push({message:`Gate ^${e} used in code but not declared in portal.yaml`,source:"portal",file:"portal.yaml",severity:"blocking"});}let d=null;s.learn&&(d=await j(l));let h={habits:g,drift:r,portal:o,violations:i,structuredViolations:u,postflight:s.learn?d:void 0};if(s.json)console.log(JSON.stringify(h));else {if(console.log(n.magenta(`
|
|
5
5
|
Paradigm Compliance Check
|
|
6
6
|
`)),g){let{evaluation:t}=g,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(r&&(console.log(n.white(" Drift:")),r.healedCount>0&&console.log(n.green(` Auto-healed: ${r.healedCount} shifted anchor(s)`)),r.cleanCount>0&&console.log(n.green(` Clean: ${r.cleanCount} anchor(s)`)),r.driftedCount>0&&console.log(n.red(` Drifted: ${r.driftedCount} anchor(s)`)),r.missingCount>0&&console.log(n.yellow(` Missing: ${r.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(d){if(console.log(n.white(" Postflight Learning:")),d.journalsWritten>0){console.log(n.green(` Journals written: ${d.journalsWritten}`));for(let[t,e]of Object.entries(d.journalsByAgent))e>0&&console.log(n.gray(` ${t}: ${e} entries`));}else console.log(n.gray(" No verdicts to learn from"));d.promoted>0&&console.log(n.green(` Promoted to notebooks: ${d.promoted}`)),console.log();}if(i.length>0){console.log(n.red(` ${i.length} violation(s):`));for(let t of i)console.log(n.red(` - ${t}`));}else console.log(n.green(" All checks passed."));console.log();}i.length>0&&(process.exitCode=1);}export{A as complianceCheckCommand};
|
|
@@ -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-G6MJIAJS.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
|
-
import {g,i,a as a$1,f as f$1,j,d as d$1,e,k,m,l}from'./chunk-
|
|
2
|
+
import {g,i,a as a$1,f as f$1,j,d as d$1,e,k,m,l}from'./chunk-KYA4TP26.js';import {h,f,a,g as g$1,d,b}from'./chunk-WR6D3SC6.js';import'./chunk-5TAVYPOV.js';import t from'chalk';async function M(e){let o=process.cwd(),r=g(o),c=i(r),f$1=Object.keys(r.checks);if(e.json){h({level:r.level,orchestration:r.orchestration,overrides:r.checks,resolved:c});return}f("Enforcement Configuration"),a(""),g$1("Level",$(r.level)),g$1("Orchestration threshold",String(r.orchestration.threshold)+" files"),g$1("Detection",r.orchestration.detection),g$1("Overrides",f$1.length>0?String(f$1.length):t.dim("none")),a("");let i$1=30,m=12,b=12;a(" "+t.dim("Check ID".padEnd(i$1))+t.dim("Severity".padEnd(m))+t.dim("Source")),a(" "+t.dim("\u2500".repeat(i$1+m+b)));for(let v of a$1){let j=c[v],D=r.checks[v]!==void 0?t.cyan("override"):t.dim("preset");a(" "+v.padEnd(i$1)+y(j).padEnd(m+10)+D);}a("");}async function U(e){if(!f$1(e)){d(`Invalid level: ${e}. Must be one of: strict, balanced, minimal`),process.exitCode=1;return}let o=process.cwd();try{j(o,e),b(`Enforcement level set to ${$(e)}`);}catch(r){d(`Failed to set level: ${r.message}`),process.exitCode=1;}}async function H(e$1,o){if(!d$1(e$1)){d(`Unknown check ID: ${e$1}`),a(" Valid IDs: "+a$1.join(", ")),process.exitCode=1;return}if(!e(o)){d(`Invalid severity: ${o}. Must be one of: block, warn, off`),process.exitCode=1;return}let r=process.cwd();try{k(r,e$1,o),b(`Override set: ${e$1} = ${y(o)}`);}catch(c){d(`Failed to set override: ${c.message}`),process.exitCode=1;}}async function P(e){let o=process.cwd();if(!e){try{m(o),b("All enforcement overrides cleared");}catch(r){d(`Failed to reset overrides: ${r.message}`),process.exitCode=1;}return}if(!d$1(e)){d(`Unknown check ID: ${e}`),a(" Valid IDs: "+a$1.join(", ")),process.exitCode=1;return}try{l(o,e),b(`Override removed: ${e} (reverted to preset default)`);}catch(r){d(`Failed to reset override: ${r.message}`),process.exitCode=1;}}async function _(e){let o=process.cwd(),r=g(o),c=i(r);if(e.json){h(c);return}f("Resolved Enforcement Checks"),a("");for(let[f,i]of Object.entries(c))a(" "+f.padEnd(30)+y(i));a("");}function y(e){switch(e){case "block":return t.red("block");case "warn":return t.yellow("warn");case "off":return t.dim("off");default:return String(e)}}function $(e){switch(e){case "strict":return t.red(e);case "balanced":return t.yellow(e);case "minimal":return t.green(e);default:return e}}export{H as enforcementOverrideCommand,P as enforcementResetCommand,_ as enforcementResolveCommand,U as enforcementSetCommand,M as enforcementStatusCommand};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export{a as CHECK_IDS,n as ensureEnforcementDefaults,h as getCheckSeverity,b as getPreset,c as getPresetSeverity,d as isValidCheckId,f as isValidLevel,e as isValidSeverity,g as loadEnforcementConfig,m as resetAllOverrides,l as resetCheckOverride,i as resolveAllChecks,k as setCheckOverride,j as setEnforcementLevel}from'./chunk-
|
|
2
|
+
export{a as CHECK_IDS,n as ensureEnforcementDefaults,h as getCheckSeverity,b as getPreset,c as getPresetSeverity,d as isValidCheckId,f as isValidLevel,e as isValidSeverity,g as loadEnforcementConfig,m as resetAllOverrides,l as resetCheckOverride,i as resolveAllChecks,k as setCheckOverride,j as setEnforcementLevel}from'./chunk-KYA4TP26.js';import'./chunk-5TAVYPOV.js';
|