olympus-ai 3.6.3 → 3.6.4
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/.claude-plugin/plugin.json +1 -1
- package/dist/hooks/olympus-hooks.cjs +1 -1
- package/dist/installer/index.d.ts +1 -1
- package/dist/installer/index.js +1 -1
- package/dist/learning/storage.d.ts.map +1 -1
- package/dist/learning/storage.js +4 -0
- package/dist/learning/storage.js.map +1 -1
- package/package.json +1 -1
|
@@ -186,7 +186,7 @@ Incomplete tasks remain in your todo list. Continue working on the next pending
|
|
|
186
186
|
|
|
187
187
|
- Proceed without asking for permission
|
|
188
188
|
- Mark each task complete when finished
|
|
189
|
-
- Do not stop until all tasks are done`;var dh={hooks:{UserPromptSubmit:[{hooks:[{type:"command",command:Se()?'node "%USERPROFILE%\\.claude\\hooks\\keyword-detector.mjs"':'node "$HOME/.claude/hooks/keyword-detector.mjs"'}]}],SessionStart:[{hooks:[{type:"command",command:Se()?'node "%USERPROFILE%\\.claude\\hooks\\session-start.mjs"':'node "$HOME/.claude/hooks/session-start.mjs"'}]}],Stop:[{hooks:[{type:"command",command:Se()?'node "%USERPROFILE%\\.claude\\hooks\\persistent-mode.mjs"':'node "$HOME/.claude/hooks/persistent-mode.mjs"'}]}]}},fh={hooks:{UserPromptSubmit:[{hooks:[{type:"command",command:Se()?`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=UserPromptSubmit`:`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=UserPromptSubmit`}]}],SessionStart:[{hooks:[{type:"command",command:Se()?`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=SessionStart`:`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=SessionStart`}]}],Stop:[{hooks:[{type:"command",command:Se()?`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=Stop`:`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=Stop`}]}],PreToolUse:[{hooks:[{type:"command",command:Se()?`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=PreToolUse`:`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=PreToolUse`}]}],PostToolUse:[{hooks:[{type:"command",command:Se()?`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=PostToolUse`:`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=PostToolUse`}]}],PostToolUseFailure:[{hooks:[{type:"command",command:Se()?`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=PostToolUseFailure`:`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=PostToolUseFailure`}]}],Notification:[{hooks:[{type:"command",command:Se()?`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=Notification`:`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=Notification`}]}]}};var ki=require("path");var ui=require("os"),Ne=require("path"),U=require("fs"),Zu=require("crypto");function no(e){if(!e.token_usage)return null;let{token_usage:t}=e;return typeof t.input_tokens!="number"||typeof t.output_tokens!="number"||typeof t.total_tokens!="number"||typeof t.estimated!="boolean"?null:t}function et(e){return no(e)?.total_tokens||0}var ed=1e4;function Pe(){return(0,Ne.join)((0,ui.homedir)(),".claude","olympus","learning")}function St(e){return(0,Ne.join)(e,".olympus","learning")}function di(e){let t=Pe();if((0,U.existsSync)(t)||(0,U.mkdirSync)(t,{recursive:!0}),e){let n=St(e);(0,U.existsSync)(n)||(0,U.mkdirSync)(n,{recursive:!0})}}function fi(e,t=ed){if((0,U.existsSync)(e))try{let o=(0,U.readFileSync)(e,"utf-8").split(`
|
|
189
|
+
- Do not stop until all tasks are done`;var dh={hooks:{UserPromptSubmit:[{hooks:[{type:"command",command:Se()?'node "%USERPROFILE%\\.claude\\hooks\\keyword-detector.mjs"':'node "$HOME/.claude/hooks/keyword-detector.mjs"'}]}],SessionStart:[{hooks:[{type:"command",command:Se()?'node "%USERPROFILE%\\.claude\\hooks\\session-start.mjs"':'node "$HOME/.claude/hooks/session-start.mjs"'}]}],Stop:[{hooks:[{type:"command",command:Se()?'node "%USERPROFILE%\\.claude\\hooks\\persistent-mode.mjs"':'node "$HOME/.claude/hooks/persistent-mode.mjs"'}]}]}},fh={hooks:{UserPromptSubmit:[{hooks:[{type:"command",command:Se()?`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=UserPromptSubmit`:`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=UserPromptSubmit`}]}],SessionStart:[{hooks:[{type:"command",command:Se()?`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=SessionStart`:`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=SessionStart`}]}],Stop:[{hooks:[{type:"command",command:Se()?`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=Stop`:`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=Stop`}]}],PreToolUse:[{hooks:[{type:"command",command:Se()?`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=PreToolUse`:`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=PreToolUse`}]}],PostToolUse:[{hooks:[{type:"command",command:Se()?`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=PostToolUse`:`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=PostToolUse`}]}],PostToolUseFailure:[{hooks:[{type:"command",command:Se()?`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=PostToolUseFailure`:`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=PostToolUseFailure`}]}],Notification:[{hooks:[{type:"command",command:Se()?`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=Notification`:`node "${(0,Y.join)(te(),"olympus-hooks.cjs")}" --event=Notification`}]}]}};var ki=require("path");var ui=require("os"),Ne=require("path"),U=require("fs"),Zu=require("crypto");function no(e){if(!e.token_usage)return null;let{token_usage:t}=e;return typeof t.input_tokens!="number"||typeof t.output_tokens!="number"||typeof t.total_tokens!="number"||typeof t.estimated!="boolean"?null:t}function et(e){return no(e)?.total_tokens||0}var ed=1e4;function Pe(){return process.env.OLYMPUS_TEST_LEARNING_DIR?process.env.OLYMPUS_TEST_LEARNING_DIR:(0,Ne.join)((0,ui.homedir)(),".claude","olympus","learning")}function St(e){return(0,Ne.join)(e,".olympus","learning")}function di(e){let t=Pe();if((0,U.existsSync)(t)||(0,U.mkdirSync)(t,{recursive:!0}),e){let n=St(e);(0,U.existsSync)(n)||(0,U.mkdirSync)(n,{recursive:!0})}}function fi(e,t=ed){if((0,U.existsSync)(e))try{let o=(0,U.readFileSync)(e,"utf-8").split(`
|
|
190
190
|
`).filter(r=>r.trim()).length;if(o>=t){let r=new Date().toISOString().replace(/[:.]/g,"-"),i=e.replace(".jsonl",`.${r}.old.jsonl`);(0,U.renameSync)(e,i),console.log(`[Olympus Learning] Archived ${o} entries to ${i}`)}}catch(n){console.error(`[Olympus Learning] Failed to rotate ${e}:`,n)}}function xe(e){di();let t=(0,Ne.join)(Pe(),"feedback-log.jsonl");fi(t),(0,U.appendFileSync)(t,JSON.stringify(e)+`
|
|
191
191
|
`,"utf-8")}function td(){let e=(0,Ne.join)(Pe(),"feedback-log.jsonl");return(0,U.existsSync)(e)?(0,U.readFileSync)(e,"utf-8").split(`
|
|
192
192
|
`).filter(n=>n.trim()).map(n=>JSON.parse(n)):[]}function pi(){return td()}function mi(e,t){let n=t.filter(u=>u.agent_used===e);if(n.length===0)return null;let o=n.length,r=n.filter(u=>u.event_type==="success").length,i=n.filter(u=>u.event_type==="revision").length,s=n.filter(u=>u.event_type==="cancellation").length,c=o>0?r/o:0,a,l=n.filter(u=>no(u)!==null);if(l.length>0){let u=l.filter(y=>y.event_type==="success"),d=l.filter(y=>y.event_type==="revision"||y.event_type==="cancellation"),f=l.reduce((y,w)=>y+et(w),0),g=u.reduce((y,w)=>y+et(w),0),m=d.reduce((y,w)=>y+et(w),0),p=u.length>0?g/u.length:0,h=d.length>0?m/d.length:0;if(a={avg_tokens_per_success:p,avg_tokens_per_failure:h,total_tokens:f,invocation_count:l.length,efficiency_score:p,trend:"insufficient_data"},l.length>=10){let y=Math.floor(l.length/2),w=l.slice(0,y),k=l.slice(y),C=w.reduce((ye,T)=>ye+et(T),0)/w.length,I=k.reduce((ye,T)=>ye+et(T),0)/k.length-C,_=C*.1;Math.abs(I)<_?a.trend="stable":I<0?a.trend="improving":a.trend="declining"}}return{agent_name:e,total_invocations:o,success_count:r,revision_count:i,cancellation_count:s,success_rate:c,failure_patterns:[],strong_areas:[],weak_areas:[],last_updated:new Date().toISOString(),token_efficiency:a}}function tt(e,t){if(!(0,U.existsSync)(e))return t;try{return JSON.parse((0,U.readFileSync)(e,"utf-8"))}catch(n){return console.error(`[Olympus Learning] Failed to read ${e}:`,n),t}}function gi(e,t){try{let n=(0,Ne.dirname)(e);n&&!(0,U.existsSync)(n)&&(0,U.mkdirSync)(n,{recursive:!0}),(0,U.writeFileSync)(e,JSON.stringify(t,null,2),"utf-8")}catch(n){console.error(`[Olympus Learning] Failed to write ${e}:`,n)}}var yi=require("crypto");function Be(e,t,n){return!n||n.sample_count<5?1e4:e&&n.by_project[e]!==void 0?n.by_project[e]:t&&n.by_task_type[t]!==void 0?n.by_task_type[t]:n.overall_avg}var nd=10,od=1800*1e3;function Ei(e){return(0,ki.join)(e,".olympus","session-state.json")}function hi(e,t){let n=Be(t);return{session_id:e||(0,yi.randomUUID)(),started_at:new Date().toISOString(),last_updated:new Date().toISOString(),recent_prompts:[],pending_completion:null,todo_snapshot:null,token_budget:{session_baseline:n,current_usage:0,input_tokens:0,output_tokens:0,warning_threshold:1.5,warning_issued:!1,started_at:new Date().toISOString()}}}function ne(e,t){let n=Ei(e),o=tt(n,null);if(!o)return hi(t,e);let r=new Date(o.last_updated).getTime();if(Date.now()-r>od)return hi(t,e);if(t&&o.session_id!==t&&(o.session_id=t),o.token_budget)o.token_budget.input_tokens===void 0&&(o.token_budget.input_tokens=0),o.token_budget.output_tokens===void 0&&(o.token_budget.output_tokens=0);else{let s=Be(e);o.token_budget={session_baseline:s,current_usage:0,input_tokens:0,output_tokens:0,warning_threshold:1.5,warning_issued:!1,started_at:o.started_at}}return o}function z(e,t){let n=Ei(e);t.last_updated=new Date().toISOString(),gi(n,t)}function Si(e,t,n){let o={prompt:t,timestamp:new Date().toISOString(),detected_feedback:n};return e.recent_prompts=[o,...e.recent_prompts].slice(0,nd),e.last_updated=new Date().toISOString(),e}function Ti(e){return e.pending_completion=null,e.last_updated=new Date().toISOString(),e}function zt(e){if(!e.pending_completion?.claimed_at)return!1;let t=new Date(e.pending_completion.claimed_at).getTime();return Date.now()-t<300*1e3}function wi(e,t){let n=Be(t);return e.token_budget={session_baseline:n,current_usage:0,input_tokens:0,output_tokens:0,warning_threshold:1.5,warning_issued:!1,started_at:new Date().toISOString()},e.last_updated=new Date().toISOString(),e}function _i(e,t){return e.token_budget||(e.token_budget={session_baseline:Be(),current_usage:0,input_tokens:0,output_tokens:0,warning_threshold:1.5,warning_issued:!1,started_at:new Date().toISOString()}),e.token_budget.current_usage+=t,e.last_updated=new Date().toISOString(),e}function Oi(e){return e.token_budget&&(e.token_budget.warning_issued=!0,e.last_updated=new Date().toISOString()),e}function vi(e){if(!e.token_budget||e.token_budget.warning_issued)return!1;let t=e.token_budget.session_baseline*e.token_budget.warning_threshold;return e.token_budget.current_usage>=t}var Ri=require("crypto"),rd={correction:[{regex:/no[,.]?\s*(that's|thats)?\s*(not|wrong)/i,confidence:.9},{regex:/that's\s*(incorrect|not right|not what)/i,confidence:.9},{regex:/you\s*(misunderstood|got it wrong)/i,confidence:.85},{regex:/actually,?\s*(I|it|the)/i,confidence:.6}],rejection:[{regex:/\b(stop|cancel|abort|halt)\b/i,confidence:.95},{regex:/don't\s*(do|want|need)\s*(that|this)/i,confidence:.85},{regex:/never\s*mind/i,confidence:.9},{regex:/forget\s*(it|that|about)/i,confidence:.8}],clarification:[{regex:/I\s*(meant|wanted|asked for)/i,confidence:.85},{regex:/what I\s*(mean|want|need)/i,confidence:.8},{regex:/to clarify/i,confidence:.9},{regex:/let me\s*(rephrase|explain|be clearer)/i,confidence:.85}],explicit_preference:[{regex:/always\s+(use|do|include|add|prefer)/i,confidence:.95},{regex:/never\s+(use|do|include|add)/i,confidence:.95},{regex:/I\s*(prefer|like|want)\s*(you to)?/i,confidence:.7},{regex:/from now on/i,confidence:.9},{regex:/in the future,?\s*(please|always)/i,confidence:.85}],praise:[{regex:/\bperfect\b/i,confidence:.9},{regex:/exactly(\s+what I (wanted|needed))?/i,confidence:.85},{regex:/great(\s+job)?/i,confidence:.7},{regex:/\bthanks?\b/i,confidence:.5},{regex:/looks?\s+good/i,confidence:.75}],enhancement:[{regex:/also\s+(add|include|do)/i,confidence:.7},{regex:/can you (also|additionally)/i,confidence:.7},{regex:/one more thing/i,confidence:.75}]};function oo(e){let t=e.replace(/```[\s\S]*?```/g,"").replace(/`[^`]+`/g,""),n=null;for(let[o,r]of Object.entries(rd))for(let{regex:i,confidence:s}of r)i.test(t)&&(!n||s>n.confidence)&&(n={category:o,confidence:s});return n}async function Ii(e){let{prompt:t,directory:n,sessionId:o}=e;if(!t||!n)return;let r=ne(n,o),i=oo(t),s=Si(r,t,i?.category);if(i&&zt(r)){let c={id:(0,Ri.randomUUID)(),timestamp:new Date().toISOString(),session_id:r.session_id,project_path:n,event_type:i.category==="explicit_preference"?"explicit_preference":"revision",original_task:r.pending_completion?.task_description,agent_used:r.pending_completion?.agent_used,user_message:t,feedback_category:i.category,confidence:i.confidence};xe(c)}z(n,s)}var bi=require("crypto");async function Ci(e){let{prompt:t,directory:n,sessionId:o}=e;if(!t||!n)return;let r=ne(n,o);if(!zt(r))return;let i=oo(t),s=i?.category==="praise"&&i.confidence>.7,c=id(t,r.pending_completion?.task_description||"");if(s||c){let a={id:(0,bi.randomUUID)(),timestamp:new Date().toISOString(),session_id:r.session_id,project_path:n,event_type:"success",original_task:r.pending_completion?.task_description,agent_used:r.pending_completion?.agent_used,user_message:t,feedback_category:s?"praise":"enhancement",confidence:s?i.confidence:.6};xe(a);let l=Ti(r);z(n,l)}}function id(e,t){let n=a=>new Set(a.toLowerCase().replace(/[^\w\s]/g,"").split(/\s+/).filter(l=>l.length>3)),o=n(e),r=n(t),i=new Set([...o].filter(a=>r.has(a))),s=new Set([...o,...r]);return(s.size>0?i.size/s.size:0)<.2}var ie=F(cn(),1),bt=require("path"),So=".olympus/workflow",va="checkpoint.json",Eo=new Map,lp=5e3;function Ra(e,t){return`${e}:${t}`}function up(e){return Date.now()-e.timestamp<lp}async function Fe(e,t){let n=(0,bt.join)(e,So,t.workflow_id),o=(0,bt.join)(n,va);try{if(t.updated_at=new Date().toISOString(),await ie.ensureDir(n),JSON.stringify(t).length>1e4){let c=JSON.stringify(t);await ie.writeFile(o,c,"utf-8")}else await ie.writeJson(o,t,{spaces:2});let s=Ra(e,t.workflow_id);Eo.set(s,{checkpoint:{...t},timestamp:Date.now(),dirty:!1})}catch(r){let i=r;throw i.code==="ENOSPC"?(console.error("[Checkpoint] Failed to save checkpoint: Disk full"),console.error("[Checkpoint] Please free up disk space and try again."),console.error(`[Checkpoint] Attempted path: ${o}`),new Error("Failed to save checkpoint: Disk is full. Please free up space and retry.")):i.code==="EACCES"||i.code==="EPERM"?(console.error("[Checkpoint] Failed to save checkpoint: Permission denied"),console.error(`[Checkpoint] Path: ${o}`),new Error(`Failed to save checkpoint: Permission denied for ${o}`)):i.code==="EROFS"?(console.error("[Checkpoint] Failed to save checkpoint: Read-only filesystem"),console.error(`[Checkpoint] Path: ${o}`),new Error("Failed to save checkpoint: Filesystem is read-only")):(console.error("[Checkpoint] Failed to save checkpoint:",i.message),console.error(`[Checkpoint] Workflow ID: ${t.workflow_id}`),console.error(`[Checkpoint] Path: ${o}`),new Error(`Failed to save checkpoint for workflow ${t.workflow_id}: ${i.message}`))}}async function ge(e,t){let n=Ra(e,t),o=Eo.get(n);if(o&&up(o))return{...o.checkpoint};let r=(0,bt.join)(e,So,t,va);try{let i=await ie.readFile(r,"utf-8"),s=JSON.parse(i);return s.schema_version?(Eo.set(n,{checkpoint:{...s},timestamp:Date.now(),dirty:!1}),s):(console.warn(`[Checkpoint] Checkpoint ${t} missing schema_version, treating as invalid`),console.warn("[Checkpoint] Checkpoint may be corrupt or from an older version"),console.warn(`[Checkpoint] Consider deleting: ${r}`),null)}catch(i){let s=i,c=s;return c.code==="ENOENT"?null:s.name==="SyntaxError"||s.message.includes("JSON")?(console.warn(`[Checkpoint] Corrupt checkpoint detected for workflow ${t}`),console.warn(`[Checkpoint] Path: ${r}`),console.warn(`[Checkpoint] Error: ${s.message}`),console.warn("[Checkpoint] To reset this workflow, delete the checkpoint file and start over"),null):c.code==="EACCES"||c.code==="EPERM"?(console.warn(`[Checkpoint] Permission denied reading checkpoint ${t}`),console.warn(`[Checkpoint] Path: ${r}`),null):(console.warn(`[Checkpoint] Failed to load checkpoint ${t}: ${s.message}`),console.warn(`[Checkpoint] Path: ${r}`),null)}}async function Ia(e){let t=(0,bt.join)(e,So);try{return await ie.pathExists(t)?(await ie.readdir(t,{withFileTypes:!0})).filter(r=>r.isDirectory()).map(r=>r.name):[]}catch(n){let o=n;return o.code==="EACCES"||o.code==="EPERM"?(console.warn(`[Checkpoint] Permission denied listing workflows in ${t}`),[]):(console.warn(`[Checkpoint] Failed to list workflows: ${o.message}`),console.warn(`[Checkpoint] Directory: ${t}`),[])}}var Re=F(require("path"),1),ae=F(cn(),1);async function ba(e,t){let n=Re.join(e,".olympus","workflow",t),o=Re.join(n,"intents"),r=Re.join(n,"validation"),i=Re.join(n,"checkpoint.json");try{await ae.ensureDir(n),await ae.ensureDir(o),await ae.ensureDir(r),await ae.pathExists(i)||await ae.writeJson(i,{workflow_id:t,current_stage:"idea",created_at:new Date().toISOString(),updated_at:new Date().toISOString()},{spaces:2})}catch(s){let c=s;throw c.code==="ENOSPC"?(console.error("[Artifacts] Failed to create workflow directory: Disk full"),console.error("[Artifacts] Please free up disk space and try again."),console.error(`[Artifacts] Attempted path: ${n}`),new Error("Failed to create workflow directory: Disk is full. Please free up space and retry.")):c.code==="EACCES"||c.code==="EPERM"?(console.error("[Artifacts] Failed to create workflow directory: Permission denied"),console.error(`[Artifacts] Path: ${n}`),new Error(`Failed to create workflow directory: Permission denied for ${n}`)):c.code==="EROFS"?(console.error("[Artifacts] Failed to create workflow directory: Read-only filesystem"),console.error(`[Artifacts] Path: ${n}`),new Error("Failed to create workflow directory: Filesystem is read-only")):(console.error(`[Artifacts] Failed to create workflow directory: ${c.message}`),console.error(`[Artifacts] Workflow ID: ${t}`),console.error(`[Artifacts] Path: ${n}`),new Error(`Failed to create workflow directory for ${t}: ${c.message}`))}}function Ue(e,t,n){if(n==="complete")throw new Error("No artifact file for complete stage");if(n==="intents")throw new Error("Intents is a directory, not a single file. Use getIntentsDir() instead.");let o=Re.join(e,".olympus","workflow",t),i={idea:"idea.md",prd:"prd.md",spec:"spec.md"}[n];return Re.join(o,i)}async function ln(e,t,n,o){if(n==="intents")throw new Error("Cannot write single artifact for intents stage. Use writeIntentFile() instead.");let r=Ue(e,t,n);try{await ae.ensureDir(Re.dirname(r)),await ae.writeFile(r,o,"utf-8")}catch(i){let s=i;throw s.code==="ENOSPC"?(console.error(`[Artifacts] Failed to write ${n} artifact: Disk full`),console.error("[Artifacts] Please free up disk space and try again."),console.error(`[Artifacts] Path: ${r}`),new Error(`Failed to write ${n} artifact: Disk is full. Please free up space and retry.`)):s.code==="EACCES"||s.code==="EPERM"?(console.error(`[Artifacts] Failed to write ${n} artifact: Permission denied`),console.error(`[Artifacts] Path: ${r}`),new Error(`Failed to write ${n} artifact: Permission denied for ${r}`)):s.code==="EROFS"?(console.error(`[Artifacts] Failed to write ${n} artifact: Read-only filesystem`),console.error(`[Artifacts] Path: ${r}`),new Error(`Failed to write ${n} artifact: Filesystem is read-only`)):(console.error(`[Artifacts] Failed to write ${n} artifact: ${s.message}`),console.error(`[Artifacts] Path: ${r}`),new Error(`Failed to write ${n} artifact: ${s.message}`))}}var Ve=require("fs"),Ca=new Map,dp=1e4;function fp(e){let t=Ca.get(e);if(t&&Date.now()-t.timestamp<dp)return t.content;let n=(0,Ve.readFileSync)(e,"utf-8");return Ca.set(e,{content:n,timestamp:Date.now()}),n}var pp=["Problem Statement","Business Context","Success Metrics","Constraints","Solution Approach"];async function Aa(e){let t=new Date().toISOString(),n=[],o;try{o=fp(e)}catch(d){let f=d;return f.code==="ENOENT"?(console.error(`[Validation] IDEA artifact not found: ${e}`),{passed:!1,coverage_percentage:0,blocking_issues:["Artifact file not found"],timestamp:t}):f.code==="EACCES"||f.code==="EPERM"?(console.error(`[Validation] Permission denied reading IDEA artifact: ${e}`),{passed:!1,coverage_percentage:0,blocking_issues:["Permission denied reading artifact file"],timestamp:t}):(console.error(`[Validation] Failed to read IDEA artifact: ${f.message}`),console.error(`[Validation] Path: ${e}`),{passed:!1,coverage_percentage:0,blocking_issues:[`Failed to read artifact: ${f.message}`],timestamp:t})}let r=mp(o);(!r||!r.risk_tier)&&n.push("Risk tier not specified in frontmatter");let i=at(o),s=Ct(i),c=[()=>{let d=s.get("Problem Statement");return!d||d.trim().length===0?"Missing problem statement section":null},()=>{let d=s.get("Business Context");return!d||d.trim().length===0?"Business context section is empty":null},()=>{let d=s.get("Success Metrics");if(d){let f=Na(d);if(f<2)return`Only ${f} success metric found, need at least 2`}else return"Missing success metrics section";return null},()=>{let d=s.get("Constraints");return!d||d.trim().length===0?"Constraints section missing":null},()=>{let d=[];for(let f of pp)s.has(f)||d.push(`Missing required section: ${f}`);return d.length>0?d.join("; "):null}];for(let d of c){let f=d();f&&n.push(f)}let a=6,l=a-n.length,u=Math.round(l/a*100);return{passed:n.length===0,coverage_percentage:u,blocking_issues:n,timestamp:t}}function mp(e){let t=e.match(/^---\n([\s\S]*?)\n---/);if(!t)return null;let n=t[1];try{let o={},r=n.split(`
|
|
@@ -24,7 +24,7 @@ export declare const HOOKS_DIR: string;
|
|
|
24
24
|
export declare const SETTINGS_FILE: string;
|
|
25
25
|
export declare const VERSION_FILE: string;
|
|
26
26
|
/** Current version - MUST match package.json */
|
|
27
|
-
export declare const VERSION = "3.6.
|
|
27
|
+
export declare const VERSION = "3.6.4";
|
|
28
28
|
/** Installation result */
|
|
29
29
|
export interface InstallResult {
|
|
30
30
|
success: boolean;
|
package/dist/installer/index.js
CHANGED
|
@@ -33,7 +33,7 @@ export const HOOKS_DIR = join(CLAUDE_CONFIG_DIR, 'hooks');
|
|
|
33
33
|
export const SETTINGS_FILE = join(CLAUDE_CONFIG_DIR, 'settings.json');
|
|
34
34
|
export const VERSION_FILE = join(CLAUDE_CONFIG_DIR, '.olympus-version.json');
|
|
35
35
|
/** Current version - MUST match package.json */
|
|
36
|
-
export const VERSION = '3.6.
|
|
36
|
+
export const VERSION = '3.6.4';
|
|
37
37
|
/**
|
|
38
38
|
* Check if the current Node.js version meets the minimum requirement
|
|
39
39
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/learning/storage.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAmB,MAAM,YAAY,CAAC;AAMnF,sDAAsD;AACtD,wBAAgB,cAAc,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/learning/storage.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAmB,MAAM,YAAY,CAAC;AAMnF,sDAAsD;AACtD,wBAAgB,cAAc,IAAI,MAAM,CAMvC;AAED,8CAA8C;AAC9C,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,mDAAmD;AACnD,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wCAAwC;AACxC,wBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAY7D;AAED,qDAAqD;AACrD,iBAAS,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAwB,GAAG,IAAI,CAiBlF;AAED,yCAAyC;AACzC,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAQzD;AAED,wBAAwB;AACxB,wBAAgB,eAAe,IAAI,aAAa,EAAE,CASjD;AAED,qDAAqD;AACrD,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAEvD;AAED,wDAAwD;AACxD,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAE9C;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,aAAa,EAAE,GAC/B,gBAAgB,GAAG,IAAI,CA4EzB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE;YAAE,eAAe,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,GAAG,MAAM,CAElH;AAED,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAQhE;AAED,0CAA0C;AAC1C,wBAAgB,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAWhE;AAED,mEAAmE;AACnE,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
package/dist/learning/storage.js
CHANGED
|
@@ -7,6 +7,10 @@ import { getTokenUsage, safeTokenTotal } from './utils.js';
|
|
|
7
7
|
const MAX_JSONL_LINES = 10000;
|
|
8
8
|
/** Get learning storage directory (cross-platform) */
|
|
9
9
|
export function getLearningDir() {
|
|
10
|
+
// Allow tests to override the learning directory via environment variable
|
|
11
|
+
if (process.env.OLYMPUS_TEST_LEARNING_DIR) {
|
|
12
|
+
return process.env.OLYMPUS_TEST_LEARNING_DIR;
|
|
13
|
+
}
|
|
10
14
|
return join(homedir(), '.claude', 'olympus', 'learning');
|
|
11
15
|
}
|
|
12
16
|
/** Get project-specific learning directory */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/learning/storage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/learning/storage.ts"],"names":[],"mappings":"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"}
|