@kitelev/exocortex-cli 16.32.2 → 16.32.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +3 -3
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- // @kitelev/exocortex-cli v16.32.2
2
+ // @kitelev/exocortex-cli v16.32.3
3
3
  // CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more
4
4
  // License: MIT
5
5
 
@@ -100,7 +100,7 @@ ${i}
100
100
  ${a}`}};Hp.MetadataHelpers=ub});var nI=S(qo=>{"use strict";Object.defineProperty(qo,"__esModule",{value:!0});qo.TASK_DEFAULT_WORKFLOW=qo.PROJECT_DEFAULT_WORKFLOW=void 0;qo.buildWorkflowAssetContent=L6;var rI=mi(),cf=Tu(),Ee=Au(),Hr=eI(),fb=ra();qo.PROJECT_DEFAULT_WORKFLOW={id:"a1b2c3d4-1111-4000-a000-000000000001",name:"Project Default Workflow",targetClass:cf.AssetClass.PROJECT,initialState:Ee.EffortStatus.DRAFT,terminalStates:[Ee.EffortStatus.DONE,Ee.EffortStatus.TRASHED],isDefault:!0,states:[{status:Ee.EffortStatus.DRAFT,order:1,optional:!1,timestampOnEnter:[]},{status:Ee.EffortStatus.BACKLOG,order:2,optional:!1,timestampOnEnter:[]},{status:Ee.EffortStatus.ANALYSIS,order:3,optional:!0,timestampOnEnter:[]},{status:Ee.EffortStatus.TODO,order:4,optional:!0,timestampOnEnter:[]},{status:Ee.EffortStatus.DOING,order:5,optional:!1,timestampOnEnter:["ems__Effort_startTimestamp"]},{status:Ee.EffortStatus.DONE,order:6,optional:!1,timestampOnEnter:["ems__Effort_endTimestamp","ems__Effort_resolutionTimestamp"]},{status:Ee.EffortStatus.TRASHED,order:7,optional:!1,timestampOnEnter:["ems__Effort_resolutionTimestamp"]}],transitions:[{from:Ee.EffortStatus.DRAFT,to:Ee.EffortStatus.BACKLOG,label:"\u2192 Backlog",isRollback:!1},{from:Ee.EffortStatus.BACKLOG,to:Ee.EffortStatus.ANALYSIS,label:"\u2192 Analysis",isRollback:!1},{from:Ee.EffortStatus.ANALYSIS,to:Ee.EffortStatus.TODO,label:"\u2192 ToDo",isRollback:!1},{from:Ee.EffortStatus.TODO,to:Ee.EffortStatus.DOING,label:"\u25B6 Start",isRollback:!1},{from:Ee.EffortStatus.DOING,to:Ee.EffortStatus.DONE,label:"\u2713 Done",isRollback:!1},{from:Ee.EffortStatus.BACKLOG,to:Ee.EffortStatus.DRAFT,label:"\u2190 Draft",isRollback:!0},{from:Ee.EffortStatus.ANALYSIS,to:Ee.EffortStatus.BACKLOG,label:"\u2190 Backlog",isRollback:!0},{from:Ee.EffortStatus.TODO,to:Ee.EffortStatus.ANALYSIS,label:"\u2190 Analysis",isRollback:!0},{from:Ee.EffortStatus.DOING,to:Ee.EffortStatus.TODO,label:"\u2190 ToDo",isRollback:!0},{from:Ee.EffortStatus.DONE,to:Ee.EffortStatus.DOING,label:"\u2190 Doing",isRollback:!0}]};qo.TASK_DEFAULT_WORKFLOW={id:"a1b2c3d4-2222-4000-a000-000000000002",name:"Task Default Workflow",targetClass:cf.AssetClass.TASK,initialState:Ee.EffortStatus.DRAFT,terminalStates:[Ee.EffortStatus.DONE,Ee.EffortStatus.TRASHED],isDefault:!0,states:[{status:Ee.EffortStatus.DRAFT,order:1,optional:!1,timestampOnEnter:[]},{status:Ee.EffortStatus.BACKLOG,order:2,optional:!1,timestampOnEnter:[]},{status:Ee.EffortStatus.DOING,order:3,optional:!1,timestampOnEnter:["ems__Effort_startTimestamp"]},{status:Ee.EffortStatus.DONE,order:4,optional:!1,timestampOnEnter:["ems__Effort_endTimestamp","ems__Effort_resolutionTimestamp"]},{status:Ee.EffortStatus.TRASHED,order:5,optional:!1,timestampOnEnter:["ems__Effort_resolutionTimestamp"]}],transitions:[{from:Ee.EffortStatus.DRAFT,to:Ee.EffortStatus.BACKLOG,label:"\u2192 Backlog",isRollback:!1},{from:Ee.EffortStatus.BACKLOG,to:Ee.EffortStatus.DOING,label:"\u25B6 Start",isRollback:!1},{from:Ee.EffortStatus.DOING,to:Ee.EffortStatus.DONE,label:"\u2713 Done",isRollback:!1},{from:Ee.EffortStatus.BACKLOG,to:Ee.EffortStatus.DRAFT,label:"\u2190 Draft",isRollback:!0},{from:Ee.EffortStatus.DOING,to:Ee.EffortStatus.BACKLOG,label:"\u2190 Backlog",isRollback:!0},{from:Ee.EffortStatus.DONE,to:Ee.EffortStatus.DOING,label:"\u2190 Doing",isRollback:!0}]};function L6(n){let e=new Date().toISOString(),t=[],r=n.id,i={exo__Asset_uid:r,exo__Asset_label:`"${n.name}"`,exo__Asset_createdAt:e,exo__Instance_class:cf.AssetClass.WORKFLOW,[Hr.WorkflowProperty.TARGET_CLASS]:`"[[${n.targetClass}]]"`,[Hr.WorkflowProperty.INITIAL_STATE]:`"[[${n.initialState}]]"`,[Hr.WorkflowProperty.TERMINAL_STATES]:n.terminalStates.map(s=>`"[[${s}]]"`),[Hr.WorkflowProperty.IS_DEFAULT]:n.isDefault};t.push({filename:`${r}.md`,content:fb.MetadataHelpers.buildFileContent(i)});for(let s of n.states){let a=(0,rI.v4)(),c={exo__Asset_uid:a,exo__Asset_label:`"${n.name} - ${s.status}"`,exo__Asset_createdAt:e,exo__Instance_class:cf.AssetClass.WORKFLOW_STATE,[Hr.WorkflowStateProperty.WORKFLOW]:`"[[${r}]]"`,[Hr.WorkflowStateProperty.STATUS]:`"[[${s.status}]]"`,[Hr.WorkflowStateProperty.ORDER]:s.order,[Hr.WorkflowStateProperty.OPTIONAL]:s.optional};s.timestampOnEnter.length>0&&(c[Hr.WorkflowStateProperty.TIMESTAMP_ON_ENTER]=s.timestampOnEnter),s.badgeColor&&(c[Hr.WorkflowStateProperty.BADGE_COLOR]=`"${s.badgeColor}"`),t.push({filename:`${a}.md`,content:fb.MetadataHelpers.buildFileContent(c)})}for(let s of n.transitions){let a=(0,rI.v4)(),c={exo__Asset_uid:a,exo__Asset_label:`"${n.name} - ${s.label}"`,exo__Asset_createdAt:e,exo__Instance_class:cf.AssetClass.WORKFLOW_TRANSITION,[Hr.WorkflowTransitionProperty.WORKFLOW]:`"[[${r}]]"`,[Hr.WorkflowTransitionProperty.FROM]:`"[[${s.from}]]"`,[Hr.WorkflowTransitionProperty.TO]:`"[[${s.to}]]"`,[Hr.WorkflowTransitionProperty.LABEL]:`"${s.label}"`,[Hr.WorkflowTransitionProperty.IS_ROLLBACK]:s.isRollback};s.icon&&(c[Hr.WorkflowTransitionProperty.ICON]=`"${s.icon}"`),t.push({filename:`${a}.md`,content:fb.MetadataHelpers.buildFileContent(c)})}return t}o(L6,"buildWorkflowAssetContent")});var hb=S(na=>{"use strict";var k6=na&&na.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},j6=na&&na.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)};Object.defineProperty(na,"__esModule",{value:!0});na.WorkflowResolver=void 0;var M6=Ie(),lf=Ae(),hn=Me(),Et=Jt(),Go=Tu(),Qp=Au(),iI=nI(),db=class{static{o(this,"WorkflowResolver")}constructor(e){this.tripleStore=e,this.cache=new Map}async resolveForClass(e){let t=`class:${e}`,r=this.cache.get(t);if(r)return r;let s=await this.findDefaultWorkflow(e)??this.getHardcodedFallback(e);return this.cache.set(t,s),s}async resolveForAsset(e,t){let r=await this.tripleStore.match(e,Et.Namespace.EMS.term("Effort_workflow"),void 0);if(r.length>0){let i=r[0].object;if(i instanceof lf.IRI){let s=await this.loadWorkflowBySubject(i);if(s)return s}}return this.resolveForClass(t)}invalidateCache(){this.cache.clear()}async findDefaultWorkflow(e){let t=await this.tripleStore.match(void 0,Et.Namespace.RDF.term("type"),Et.Namespace.EMS.term("Workflow"));for(let r of t){let i=r.subject;if(!(!(await this.tripleStore.match(i,Et.Namespace.EMS.term("Workflow_targetClass"),void 0)).some(u=>{let f=u.object;return f instanceof lf.IRI?f.value.endsWith(e.replace(/^ems__/,"")):f instanceof hn.Literal?this.normalizeWikilink(f.value)===e:!1})||!(await this.tripleStore.match(i,Et.Namespace.EMS.term("Workflow_isDefault"),void 0)).some(u=>{let f=u.object instanceof hn.Literal?u.object.value:"";return f==="true"||f==="1"})))return this.loadWorkflowBySubject(i)}return null}async loadWorkflowBySubject(e){let t=await this.tripleStore.match(e,Et.Namespace.EXO.term("Asset_label"),void 0),r=t.length>0&&t[0].object instanceof hn.Literal?t[0].object.value:"Unknown Workflow",i=await this.tripleStore.match(e,Et.Namespace.EXO.term("Asset_uid"),void 0),s=i.length>0&&i[0].object instanceof hn.Literal?i[0].object.value:e.value,a=await this.tripleStore.match(e,Et.Namespace.EMS.term("Workflow_targetClass"),void 0),c=this.resolveAssetClass(a),l=await this.tripleStore.match(e,Et.Namespace.EMS.term("Workflow_initialState"),void 0),u=this.resolveEffortStatus(l)??Qp.EffortStatus.DRAFT,f=await this.tripleStore.match(e,Et.Namespace.EMS.term("Workflow_terminalStates"),void 0),d=this.resolveEffortStatuses(f),p=(await this.tripleStore.match(e,Et.Namespace.EMS.term("Workflow_isDefault"),void 0)).some(w=>{let v=w.object instanceof hn.Literal?w.object.value:"";return v==="true"||v==="1"}),y=await this.loadStates(e),b=await this.loadTransitions(e);return y.length===0&&b.length===0?null:{id:s,name:r,targetClass:c,states:y,transitions:b,initialState:u,terminalStates:d.length>0?d:[Qp.EffortStatus.DONE,Qp.EffortStatus.TRASHED],isDefault:p}}async loadStates(e){let t=await this.tripleStore.match(void 0,Et.Namespace.RDF.term("type"),Et.Namespace.EMS.term("WorkflowState")),r=[];for(let i of t){let s=i.subject;if(!(await this.tripleStore.match(s,Et.Namespace.EMS.term("WorkflowState_workflow"),void 0)).some(E=>this.isSameSubject(E.object,e)))continue;let l=await this.tripleStore.match(s,Et.Namespace.EMS.term("WorkflowState_status"),void 0),u=this.resolveEffortStatus(l);if(!u)continue;let f=await this.tripleStore.match(s,Et.Namespace.EMS.term("WorkflowState_order"),void 0),d=f.length>0&&f[0].object instanceof hn.Literal&&parseInt(f[0].object.value,10)||0,p=(await this.tripleStore.match(s,Et.Namespace.EMS.term("WorkflowState_optional"),void 0)).some(E=>{let I=E.object instanceof hn.Literal?E.object.value:"";return I==="true"||I==="1"}),b=(await this.tripleStore.match(s,Et.Namespace.EMS.term("WorkflowState_timestampOnEnter"),void 0)).map(E=>E.object instanceof hn.Literal?E.object.value:"").filter(E=>E.length>0),w=await this.tripleStore.match(s,Et.Namespace.EMS.term("WorkflowState_badgeColor"),void 0),v=w.length>0&&w[0].object instanceof hn.Literal?w[0].object.value:void 0;r.push({status:u,order:d,optional:p,timestampOnEnter:b,badgeColor:v})}return r.sort((i,s)=>i.order-s.order)}async loadTransitions(e){let t=await this.tripleStore.match(void 0,Et.Namespace.RDF.term("type"),Et.Namespace.EMS.term("WorkflowTransition")),r=[];for(let i of t){let s=i.subject;if(!(await this.tripleStore.match(s,Et.Namespace.EMS.term("WorkflowTransition_workflow"),void 0)).some(E=>this.isSameSubject(E.object,e)))continue;let l=await this.tripleStore.match(s,Et.Namespace.EMS.term("WorkflowTransition_from"),void 0),u=this.resolveEffortStatus(l),f=await this.tripleStore.match(s,Et.Namespace.EMS.term("WorkflowTransition_to"),void 0),d=this.resolveEffortStatus(f);if(!u||!d)continue;let h=await this.tripleStore.match(s,Et.Namespace.EMS.term("WorkflowTransition_label"),void 0),p=h.length>0&&h[0].object instanceof hn.Literal?h[0].object.value:`${u} \u2192 ${d}`,y=await this.tripleStore.match(s,Et.Namespace.EMS.term("WorkflowTransition_icon"),void 0),b=y.length>0&&y[0].object instanceof hn.Literal?y[0].object.value:void 0,v=(await this.tripleStore.match(s,Et.Namespace.EMS.term("WorkflowTransition_isRollback"),void 0)).some(E=>{let I=E.object instanceof hn.Literal?E.object.value:"";return I==="true"||I==="1"});r.push({from:u,to:d,label:p,icon:b,isRollback:v})}return r}normalizeWikilink(e){return e.replace(/["'[\]]/g,"").trim()}resolveAssetClass(e){if(e.length===0)return Go.AssetClass.TASK;let t=e[0].object;if(t instanceof lf.IRI){let i=`ems__${t.value.split("#").pop()??""}`;return Object.values(Go.AssetClass).includes(i)?i:Go.AssetClass.TASK}if(t instanceof hn.Literal){let r=this.normalizeWikilink(t.value);return Object.values(Go.AssetClass).includes(r)?r:Go.AssetClass.TASK}return Go.AssetClass.TASK}resolveEffortStatus(e){if(e.length===0)return null;let t=e[0].object,r;if(t instanceof lf.IRI)r=`ems__${t.value.split("#").pop()??""}`;else if(t instanceof hn.Literal)r=this.normalizeWikilink(t.value);else return null;return Object.values(Qp.EffortStatus).includes(r)?r:null}resolveEffortStatuses(e){return e.map(t=>this.resolveEffortStatus([t])).filter(t=>t!==null)}isSameSubject(e,t){if(e instanceof lf.IRI)return e.value===t.value;if(e instanceof hn.Literal){let r=this.normalizeWikilink(e.value);return t.value.includes(r)}return!1}getHardcodedFallback(e){return e===Go.AssetClass.PROJECT?{...iI.PROJECT_DEFAULT_WORKFLOW}:{...iI.TASK_DEFAULT_WORKFLOW}}};na.WorkflowResolver=db;na.WorkflowResolver=db=k6([(0,M6.injectable)(),j6("design:paramtypes",[Object])],db)});var yb=S(Ga=>{"use strict";Object.defineProperty(Ga,"__esModule",{value:!0});Ga.TransactionError=Ga.TripleNotFoundError=Ga.TripleAlreadyExistsError=void 0;var pb=class extends Error{static{o(this,"TripleAlreadyExistsError")}constructor(e){super(`Triple already exists: ${e.toString()}`),this.name="TripleAlreadyExistsError"}};Ga.TripleAlreadyExistsError=pb;var mb=class extends Error{static{o(this,"TripleNotFoundError")}constructor(e){super(`Triple not found: ${e.toString()}`),this.name="TripleNotFoundError"}};Ga.TripleNotFoundError=mb;var gb=class extends Error{static{o(this,"TransactionError")}constructor(e){super(e),this.name="TransactionError"}};Ga.TransactionError=gb});var Kp=S(Yp=>{"use strict";Object.defineProperty(Yp,"__esModule",{value:!0});Yp.LRUCache=void 0;var _b=class{static{o(this,"LRUCache")}constructor(e){this.maxSize=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this.maxSize){let r=this.cache.keys().next().value;r!==void 0&&this.cache.delete(r)}this.cache.set(e,t)}clear(){this.cache.clear()}size(){return this.cache.size}};Yp.LRUCache=_b});var vb=S(Jp=>{"use strict";Object.defineProperty(Jp,"__esModule",{value:!0});Jp.InMemoryTripleStore=void 0;var Wa=yb(),Xp=Ae(),$6=Ut(),U6=Me(),V6=Jt(),B6=Kp(),q6=V6.Namespace.XSD.term("string").value,G6=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi,ll="__default__",bb=class n{static{o(this,"InMemoryTripleStore")}constructor(){this.triples=new Map,this.spo=new Map,this.sop=new Map,this.pso=new Map,this.pos=new Map,this.osp=new Map,this.ops=new Map,this.queryCache=new B6.LRUCache(1e3),this.uuidIndex=new Map,this.namedGraphs=new Map}async add(e){let t=this.getTripleKey(e);if(this.triples.has(t))return;this.triples.set(t,e);let r=this.getNodeKey(e.subject),i=this.getNodeKey(e.predicate),s=this.getNodeKey(e.object);this.addToIndex(this.spo,r,i,s),this.addToIndex(this.sop,r,s,i),this.addToIndex(this.pso,i,r,s),this.addToIndex(this.pos,i,s,r),this.addToIndex(this.osp,s,r,i),this.addToIndex(this.ops,s,i,r),this.addToUUIDIndex(e.subject),this.queryCache.clear()}async remove(e){let t=this.getTripleKey(e);if(!this.triples.has(t))return!1;this.triples.delete(t);let r=this.getNodeKey(e.subject),i=this.getNodeKey(e.predicate),s=this.getNodeKey(e.object);return this.removeFromIndex(this.spo,r,i,s),this.removeFromIndex(this.sop,r,s,i),this.removeFromIndex(this.pso,i,r,s),this.removeFromIndex(this.pos,i,s,r),this.removeFromIndex(this.osp,s,r,i),this.removeFromIndex(this.ops,s,i,r),this.queryCache.clear(),!0}async has(e){let t=this.getTripleKey(e);return this.triples.has(t)}async match(e,t,r){let i=this.getMatchCacheKey(e,t,r),s=this.queryCache.get(i);if(s!==void 0)return s;let a;return!e&&!t&&!r?a=Array.from(this.triples.values()):e&&t&&r?a=this.matchSPO(e,t,r):e&&t?a=this.matchSP(e,t):e&&r?a=this.matchSO(e,r):t&&r?a=this.matchPO(t,r):e?a=this.matchS(e):t?a=this.matchP(t):r?a=this.matchO(r):a=[],this.queryCache.set(i,a),a}async addAll(e){for(let t of e)await this.add(t)}async removeAll(e){let t=0;for(let r of e)await this.remove(r)&&t++;return t}async clear(){this.triples.clear(),this.spo.clear(),this.sop.clear(),this.pso.clear(),this.pos.clear(),this.osp.clear(),this.ops.clear(),this.uuidIndex.clear(),this.queryCache.clear()}async count(){return this.triples.size}async subjects(){let e=new Set;for(let t of this.triples.values())e.add(t.subject);return Array.from(e)}async predicates(){let e=new Set;for(let t of this.triples.values())e.add(t.predicate);return Array.from(e)}async objects(){let e=new Set;for(let t of this.triples.values())e.add(t.object);return Array.from(e)}async beginTransaction(){return new Sb(this)}async findSubjectsByUUID(e){return this.findSubjectsByUUIDSync(e)}findSubjectsByUUIDSync(e){let t=e.toLowerCase(),r=this.uuidIndex.get(t);if(!r||r.size===0)return[];let i=[];for(let s of r)this.spo.has(`i:${s}`)&&i.push(new Xp.IRI(s));return i}addToUUIDIndex(e){if(!(e instanceof Xp.IRI))return;let t=e.value,r=t.match(G6);if(r)for(let i of r){let s=i.toLowerCase();this.uuidIndex.has(s)||this.uuidIndex.set(s,new Set),this.uuidIndex.get(s).add(t)}}matchSPO(e,t,r){let i=this.getNodeKey(e),s=this.getNodeKey(t),a=this.getNodeKey(r),c=this.spo.get(i);if(!c)return[];let l=c.get(s);if(!l)return[];if(l.has(a)){let u=this.buildTripleKey(i,s,a),f=this.triples.get(u);return f?[f]:[]}return[]}matchSP(e,t){let r=this.getNodeKey(e),i=this.getNodeKey(t),s=this.spo.get(r);if(!s)return[];let a=s.get(i);return a?this.getTriplesByKeys(Array.from(a).map(c=>this.buildTripleKey(r,i,c))):[]}matchSO(e,t){let r=this.getNodeKey(e),i=this.getNodeKey(t),s=this.sop.get(r);if(!s)return[];let a=s.get(i);return a?this.getTriplesByKeys(Array.from(a).map(c=>this.buildTripleKey(r,c,i))):[]}matchPO(e,t){let r=this.getNodeKey(e),i=this.getNodeKey(t),s=this.pos.get(r);if(!s)return[];let a=s.get(i);return a?this.getTriplesByKeys(Array.from(a).map(c=>this.buildTripleKey(c,r,i))):[]}matchS(e){let t=this.getNodeKey(e),r=this.spo.get(t);if(!r)return[];let i=[];for(let[s,a]of r.entries())for(let c of a)i.push(this.buildTripleKey(t,s,c));return this.getTriplesByKeys(i)}matchP(e){let t=this.getNodeKey(e),r=this.pso.get(t);if(!r)return[];let i=[];for(let[s,a]of r.entries())for(let c of a)i.push(this.buildTripleKey(s,t,c));return this.getTriplesByKeys(i)}matchO(e){let t=this.getNodeKey(e),r=this.osp.get(t);if(!r)return[];let i=[];for(let[s,a]of r.entries())for(let c of a)i.push(this.buildTripleKey(s,c,t));return this.getTriplesByKeys(i)}getTriplesByKeys(e){let t=[];for(let r of e){let i=this.triples.get(r);i&&t.push(i)}return t}addToIndex(e,t,r,i){e.has(t)||e.set(t,new Map);let s=e.get(t);s.has(r)||s.set(r,new Set),s.get(r).add(i)}removeFromIndex(e,t,r,i){let s=e.get(t);if(!s)return;let a=s.get(r);a&&(a.delete(i),a.size===0&&s.delete(r),s.size===0&&e.delete(t))}getTripleKey(e){let t=this.getNodeKey(e.subject),r=this.getNodeKey(e.predicate),i=this.getNodeKey(e.object);return this.buildTripleKey(t,r,i)}buildTripleKey(e,t,r){return`${e}|${t}|${r}`}getNodeKey(e){if(e instanceof Xp.IRI)return`i:${e.value}`;if(e instanceof $6.BlankNode)return`b:${e.id}`;if(e instanceof U6.Literal){let t=`l:${e.value}`;return e.datatype&&e.datatype.value!==q6?t+=`^^${e.datatype.value}`:e.language&&(t+=`@${e.language}`),t}return""}getMatchCacheKey(e,t,r){let i=e?this.getNodeKey(e):"?",s=t?this.getNodeKey(t):"?",a=r?this.getNodeKey(r):"?";return`${i}|${s}|${a}`}getGraphKey(e){return e?e.value:ll}getOrCreateGraphStore(e){let t=this.getGraphKey(e);return t===ll?this:(this.namedGraphs.has(t)||this.namedGraphs.set(t,new n),this.namedGraphs.get(t))}async addToGraph(e,t){await this.getOrCreateGraphStore(t).add(e)}async removeFromGraph(e,t){let r=this.getGraphKey(t);if(r===ll)return this.remove(e);let i=this.namedGraphs.get(r);return i?i.remove(e):!1}async matchInGraph(e,t,r,i){let s=this.getGraphKey(i);if(s===ll)return this.match(e,t,r);let a=this.namedGraphs.get(s);return a?a.match(e,t,r):[]}async getNamedGraphs(){return Array.from(this.namedGraphs.keys()).map(e=>new Xp.IRI(e))}async hasGraph(e){let t=this.namedGraphs.get(e.value);return t?await t.count()>0:!1}async clearGraph(e){let t=this.getGraphKey(e);if(t===ll){await this.clear();return}let r=this.namedGraphs.get(t);r&&(await r.clear(),this.namedGraphs.delete(t))}async countInGraph(e){let t=this.getGraphKey(e);if(t===ll)return this.count();let r=this.namedGraphs.get(t);return r?r.count():0}};Jp.InMemoryTripleStore=bb;var Sb=class{static{o(this,"InMemoryTransaction")}constructor(e){this.store=e,this.operations=[],this.committed=!1,this.rolledBack=!1}async add(e){if(this.committed)throw new Wa.TransactionError("Transaction already committed");if(this.rolledBack)throw new Wa.TransactionError("Transaction already rolled back");this.operations.push({type:"add",triple:e})}async remove(e){if(this.committed)throw new Wa.TransactionError("Transaction already committed");if(this.rolledBack)throw new Wa.TransactionError("Transaction already rolled back");return this.operations.push({type:"remove",triple:e}),!0}async commit(){if(this.committed)throw new Wa.TransactionError("Transaction already committed");if(this.rolledBack)throw new Wa.TransactionError("Transaction already rolled back");for(let e of this.operations)e.type==="add"?await this.store.add(e.triple):await this.store.remove(e.triple);this.committed=!0,this.operations=[]}async rollback(){if(this.committed)throw new Wa.TransactionError("Transaction already committed");if(this.rolledBack)throw new Wa.TransactionError("Transaction already rolled back");this.operations=[],this.rolledBack=!0}}});var em=S(ia=>{"use strict";var W6=ia&&ia.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},z6=ia&&ia.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)};Object.defineProperty(ia,"__esModule",{value:!0});ia.EffortStatusWorkflow=void 0;var H6=Ie(),Zp=Vn(),Q6=of(),Y6=hb(),K6=vb(),wb=class{static{o(this,"EffortStatusWorkflow")}constructor(){this.resolver=new Y6.WorkflowResolver(new K6.InMemoryTripleStore)}getPreviousStatus(e,t){let r=this.normalizeStatus(e),i=this.resolveDefinition(t),s=new Q6.WorkflowEngine(i);if(s.isInitialState(r))return null;let a=s.getPreviousStatus(r);if(a!==null)return this.wrapStatus(a)}normalizeStatus(e){return e.replace(/["'[\]]/g,"").trim()}wrapStatus(e){return`"[[${e}]]"`}resolveDefinition(e){return this.hasInstanceClass(e,Zp.AssetClass.TASK)||this.hasInstanceClass(e,Zp.AssetClass.MEETING)?this.resolver.getHardcodedFallback(Zp.AssetClass.TASK):this.resolver.getHardcodedFallback(Zp.AssetClass.PROJECT)}hasInstanceClass(e,t){return e?(Array.isArray(e)?e:[e]).some(i=>i.replace(/["'[\]]/g,"").trim()===t):!1}};ia.EffortStatusWorkflow=wb;ia.EffortStatusWorkflow=wb=W6([(0,H6.injectable)(),z6("design:paramtypes",[])],wb)});var Rt=S(tm=>{"use strict";Object.defineProperty(tm,"__esModule",{value:!0});tm.DI_TOKENS=void 0;tm.DI_TOKENS={IFileSystemAdapter:Symbol.for("IFileSystemAdapter"),IVaultAdapter:Symbol.for("IVaultAdapter"),IVaultContext:Symbol.for("IVaultContext"),IMultiVaultManager:Symbol.for("IMultiVaultManager"),ILogger:Symbol.for("ILogger"),IEventBus:Symbol.for("IEventBus"),IConfiguration:Symbol.for("IConfiguration"),INotificationService:Symbol.for("INotificationService"),AreaCreationService:Symbol.for("AreaCreationService"),ClassCreationService:Symbol.for("ClassCreationService"),ConceptCreationService:Symbol.for("ConceptCreationService"),SupervisionCreationService:Symbol.for("SupervisionCreationService"),GenericAssetCreationService:Symbol.for("GenericAssetCreationService"),DynamicFrontmatterGenerator:Symbol.for("DynamicFrontmatterGenerator"),AlgorithmExtractor:Symbol.for("AlgorithmExtractor"),TaskStatusService:Symbol.for("TaskStatusService"),EffortStatusWorkflow:Symbol.for("EffortStatusWorkflow"),StatusTimestampService:Symbol.for("StatusTimestampService"),PropertyCleanupService:Symbol.for("PropertyCleanupService"),FolderRepairService:Symbol.for("FolderRepairService"),LabelToAliasService:Symbol.for("LabelToAliasService"),RenameToUidService:Symbol.for("RenameToUidService"),PlanningService:Symbol.for("PlanningService"),EffortVotingService:Symbol.for("EffortVotingService"),SessionEventService:Symbol.for("SessionEventService"),CriticalityZoneService:Symbol.for("CriticalityZoneService"),AssetConversionService:Symbol.for("AssetConversionService"),NoteToRDFConverter:Symbol.for("NoteToRDFConverter"),IVaultSettings:Symbol.for("IVaultSettings"),AreaHierarchyBuilder:Symbol.for("AreaHierarchyBuilder"),URIConstructionService:Symbol.for("URIConstructionService"),ClassHierarchyResolver:Symbol.for("ClassHierarchyResolver")}});var rm=S(wi=>{"use strict";var X6=wi&&wi.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},J6=wi&&wi.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},Z6=wi&&wi.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(wi,"__esModule",{value:!0});wi.StatusTimestampService=void 0;var sI=Ie(),e7=fs(),ul=Fn(),t7=Rt(),Eb=class{static{o(this,"StatusTimestampService")}constructor(e){this.vault=e,this.frontmatterService=new e7.FrontmatterService}async addStartTimestamp(e){let t=await this.vault.read(e),r=ul.DateFormatter.toLocalTimestamp(new Date),i=this.frontmatterService.updateProperty(t,"ems__Effort_startTimestamp",r);await this.vault.modify(e,i)}async addEndTimestamp(e,t){let r=await this.vault.read(e),i=t||new Date,s=ul.DateFormatter.toLocalTimestamp(i),a=this.frontmatterService.updateProperty(r,"ems__Effort_endTimestamp",s);await this.vault.modify(e,a)}async addResolutionTimestamp(e){let t=await this.vault.read(e),r=ul.DateFormatter.toLocalTimestamp(new Date),i=this.frontmatterService.updateProperty(t,"ems__Effort_resolutionTimestamp",r);await this.vault.modify(e,i)}async addReviewTimestamp(e){let t=await this.vault.read(e),r=ul.DateFormatter.toLocalTimestamp(new Date),i=this.frontmatterService.updateProperty(t,"ems__Effort_lastReviewTimestamp",r);await this.vault.modify(e,i)}async addEndAndResolutionTimestamps(e,t){let r=await this.vault.read(e),i=t||new Date,s=ul.DateFormatter.toLocalTimestamp(i),a=this.frontmatterService.updateProperty(r,"ems__Effort_endTimestamp",s);a=this.frontmatterService.updateProperty(a,"ems__Effort_resolutionTimestamp",s),await this.vault.modify(e,a)}async removeStartTimestamp(e){let t=await this.vault.read(e),r=this.frontmatterService.removeProperty(t,"ems__Effort_startTimestamp");await this.vault.modify(e,r)}async removeEndTimestamp(e){let t=await this.vault.read(e),r=this.frontmatterService.removeProperty(t,"ems__Effort_endTimestamp");await this.vault.modify(e,r)}async removeResolutionTimestamp(e){let t=await this.vault.read(e),r=this.frontmatterService.removeProperty(t,"ems__Effort_resolutionTimestamp");await this.vault.modify(e,r)}async removeEndAndResolutionTimestamps(e){let t=await this.vault.read(e),r=this.frontmatterService.removeProperty(t,"ems__Effort_endTimestamp");r=this.frontmatterService.removeProperty(r,"ems__Effort_resolutionTimestamp"),await this.vault.modify(e,r)}async shiftPlannedEndTimestamp(e,t){let r=await this.vault.read(e),i=this.frontmatterService.parse(r);if(!i.exists)return;let s=this.frontmatterService.getPropertyValue(i.content,"ems__Effort_plannedEndTimestamp");if(!s)return;let a=new Date(s.replace(/["']/g,""));if(isNaN(a.getTime()))return;let c=new Date(a.getTime()+t),l=ul.DateFormatter.toLocalTimestamp(c),u=this.frontmatterService.updateProperty(r,"ems__Effort_plannedEndTimestamp",l);await this.vault.modify(e,u)}};wi.StatusTimestampService=Eb;wi.StatusTimestampService=Eb=X6([(0,sI.injectable)(),Z6(0,(0,sI.inject)(t7.DI_TOKENS.IVaultAdapter)),J6("design:paramtypes",[Object])],Eb)});var Ab=S(Ei=>{"use strict";var r7=Ei&&Ei.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},n7=Ei&&Ei.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},i7=Ei&&Ei.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(Ei,"__esModule",{value:!0});Ei.TaskStatusService=void 0;var aI=Ie(),s7=fs(),a7=Fn(),o7=em(),c7=rm(),l7=Rt(),Tb=class{static{o(this,"TaskStatusService")}constructor(e,t,r){this.vault=e,this.timestampService=r,this.frontmatterService=new s7.FrontmatterService}async syncEffortEndTimestamp(e,t){await this.timestampService.addEndAndResolutionTimestamps(e,t)}async shiftPlannedEndTimestamp(e,t){await this.timestampService.shiftPlannedEndTimestamp(e,t)}async planForEvening(e){let t=await this.vault.read(e),r=new Date;r.setHours(19,0,0,0);let i=a7.DateFormatter.toLocalTimestamp(r),s=this.frontmatterService.updateProperty(t,"ems__Effort_plannedStartTimestamp",i);await this.vault.modify(e,s)}};Ei.TaskStatusService=Tb;Ei.TaskStatusService=Tb=r7([(0,aI.injectable)(),i7(0,(0,aI.inject)(l7.DI_TOKENS.IVaultAdapter)),n7("design:paramtypes",[Object,o7.EffortStatusWorkflow,c7.StatusTimestampService])],Tb)});var xb=S(nm=>{"use strict";Object.defineProperty(nm,"__esModule",{value:!0});nm.MetadataExtractor=void 0;var u7=ra(),Ib=class{static{o(this,"MetadataExtractor")}constructor(e){this.vault=e}extractMetadata(e){return e?this.vault.getFrontmatter(e)||{}:{}}extractInstanceClass(e){return e.exo__Instance_class||null}extractStatus(e){return e.ems__Effort_status||null}extractIsArchived(e){return u7.MetadataHelpers.isAssetArchived(e)}static extractIsDefinedBy(e){let t=e.exo__Asset_isDefinedBy||'""';return Array.isArray(t)&&(t=t[0]||'""'),String(t)}extractExpectedFolder(e){let t=e.exo__Asset_isDefinedBy;if(!t)return null;let r=Array.isArray(t)?t[0]:t;if(!r||typeof r!="string")return null;let i=r.replace(/["'[\]]/g,"").trim();if(!i)return null;let s=i.split("/");return s.pop(),s.join("/")}extractCommandVisibilityContext(e){let t=this.extractMetadata(e),r=this.extractInstanceClass(t),i=this.extractStatus(t),s=this.extractIsArchived(t),a=e.parent?.path||"",c=this.extractExpectedFolder(t);return{instanceClass:r,currentStatus:i,metadata:t,isArchived:s,currentFolder:a,expectedFolder:c}}extractCache(e){return e?this.vault.getFrontmatter(e):null}};nm.MetadataExtractor=Ib});var Rb=S(Ti=>{"use strict";var f7=Ti&&Ti.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},d7=Ti&&Ti.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},h7=Ti&&Ti.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(Ti,"__esModule",{value:!0});Ti.AreaCreationService=void 0;var oI=Ie(),cI=mi(),p7=Vn(),m7=Fn(),g7=xb(),lI=ra(),y7=Rt(),Cb=class{static{o(this,"AreaCreationService")}constructor(e){this.vault=e}async createChildArea(e,t,r){let i=(0,cI.v4)(),s=`${i}.md`,a=this.generateChildAreaFrontmatter(t,e.basename,r,i),c=lI.MetadataHelpers.buildFileContent(a),l=e.parent?.path||"",u=l?`${l}/${s}`:s;return await this.vault.create(u,c)}generateChildAreaFrontmatter(e,t,r,i){let s=new Date,a=m7.DateFormatter.toLocalTimestamp(s),c=g7.MetadataExtractor.extractIsDefinedBy(e),l={};if(l.exo__Asset_isDefinedBy=lI.MetadataHelpers.ensureQuoted(c),l.exo__Asset_uid=i||(0,cI.v4)(),l.exo__Asset_createdAt=a,l.exo__Instance_class=[`"[[${p7.AssetClass.AREA}]]"`],l.ems__Area_parent=`"[[${t}]]"`,r&&r.trim()!==""){let u=r.trim();l.exo__Asset_label=u,l.aliases=[u]}return l}};Ti.AreaCreationService=Cb;Ti.AreaCreationService=Cb=f7([(0,oI.injectable)(),h7(0,(0,oI.inject)(y7.DI_TOKENS.IVaultAdapter)),d7("design:paramtypes",[Object])],Cb)});var Pb=S(Ai=>{"use strict";var _7=Ai&&Ai.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},b7=Ai&&Ai.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},S7=Ai&&Ai.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(Ai,"__esModule",{value:!0});Ai.AreaHierarchyBuilder=void 0;var uI=Ie(),fI=Vn(),v7=Rt(),im=is(),Ob=class{static{o(this,"AreaHierarchyBuilder")}constructor(e){this.vault=e}buildHierarchy(e,t){let r=this.vault.getAbstractFileByPath(e);if(!this.isFile(r))return null;let i=this.vault.getFrontmatter(r)||{};if(this.extractInstanceClass(i)!==fI.AssetClass.AREA)return null;let a=this.collectAllAreasFromVault(),c=new Set;return this.buildTree(e,a,c,0)}isFile(e){return!!e&&typeof e=="object"&&"basename"in e&&"path"in e}extractInstanceClass(e){let t=e.exo__Instance_class||"";return Array.isArray(t)?im.WikiLinkHelpers.normalize(String(t[0]||"")):im.WikiLinkHelpers.normalize(String(t))}collectAllAreasFromVault(){let e=new Map,t=new Map,r=this.vault.getAllFiles();for(let i of r){let s=this.vault.getFrontmatter(i)||{};if(this.extractInstanceClass(s)===fI.AssetClass.AREA){let c=this.extractParentPath(s);e.set(i.path,{path:i.path,title:i.basename,label:s.exo__Asset_label||void 0,isArchived:this.isArchived(s),depth:0,parentPath:c||void 0}),t.set(i.basename,i.path)}}for(let[,i]of e.entries())i.parentPath&&t.has(i.parentPath)&&(i.parentPath=t.get(i.parentPath));return e}extractParentPath(e){let t=e.ems__Area_parent;if(!t)return null;if(Array.isArray(t)){let r=t[0]||"";return im.WikiLinkHelpers.normalize(String(r))}return im.WikiLinkHelpers.normalize(String(t))}isArchived(e){let t=e.exo__Asset_archived;if(t===!0||t==="true")return!0;if(Array.isArray(t)&&t.length>0){let r=t[0];return r===!0||r==="true"}return!1}buildTree(e,t,r,i){if(r.has(e))return null;r.add(e);let s=t.get(e);if(!s)return null;let a=[];for(let[c,l]of t.entries())if(l.parentPath===e){let u=this.buildTree(c,t,r,i+1);u&&a.push(u)}return a.sort((c,l)=>{let u=c.label||c.title,f=l.label||l.title;return u.localeCompare(f)}),{path:s.path,title:s.title,label:s.label,isArchived:s.isArchived,depth:i,parentPath:s.parentPath,children:a}}};Ai.AreaHierarchyBuilder=Ob;Ai.AreaHierarchyBuilder=Ob=_7([(0,uI.injectable)(),S7(0,(0,uI.inject)(v7.DI_TOKENS.IVaultAdapter)),b7("design:paramtypes",[Object])],Ob)});var Fb=S(Ii=>{"use strict";var w7=Ii&&Ii.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},E7=Ii&&Ii.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},T7=Ii&&Ii.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(Ii,"__esModule",{value:!0});Ii.ClassCreationService=void 0;var dI=Ie(),A7=mi(),I7=Fn(),x7=ra(),C7=Rt(),Db=class{static{o(this,"ClassCreationService")}constructor(e){this.vault=e}async createSubclass(e,t,r){let i=(0,A7.v4)(),s=this.generateFileName(t),a=s.endsWith(".md")?s:`${s}.md`,c=this.generateClassFrontmatter(e.basename,t,i,r),l=x7.MetadataHelpers.buildFileContent(c),u="classes",f=`${u}/${a}`;return this.vault.getAbstractFileByPath(u)||await this.vault.createFolder(u),await this.vault.create(f,l)}generateFileName(e){let t=e.toLowerCase().replace(/[^a-z0-9]+/g,"-");for(;t.startsWith("-");)t=t.slice(1);for(;t.endsWith("-");)t=t.slice(0,-1);return t}generateClassFrontmatter(e,t,r,i){let s=new Date,a=I7.DateFormatter.toLocalTimestamp(s),c={};c.exo__Asset_uid=r,c.exo__Asset_label=t,c.exo__Asset_createdAt=a,c.exo__Instance_class=['"[[exo__Class]]"'],c.exo__Class_superClass=`"[[${e}]]"`;let l=i.exo__Asset_isDefinedBy||'"[[Ontology/EXO]]"';return c.exo__Asset_isDefinedBy=l,c.aliases=[t],c}};Ii.ClassCreationService=Db;Ii.ClassCreationService=Db=w7([(0,dI.injectable)(),T7(0,(0,dI.inject)(C7.DI_TOKENS.IVaultAdapter)),E7("design:paramtypes",[Object])],Db)});var Lb=S(xi=>{"use strict";var R7=xi&&xi.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},O7=xi&&xi.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},P7=xi&&xi.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(xi,"__esModule",{value:!0});xi.ConceptCreationService=void 0;var hI=Ie(),D7=mi(),F7=Fn(),N7=ra(),L7=Vn(),k7=Rt(),Nb=class{static{o(this,"ConceptCreationService")}constructor(e){this.vault=e}async createNarrowerConcept(e,t,r,i){let s=(0,D7.v4)(),a=t.endsWith(".md")?t:`${t}.md`,c=this.generateConceptFrontmatter(e.basename,r,i,s),l=N7.MetadataHelpers.buildFileContent(c),u="concepts",f=`${u}/${a}`;return this.vault.getAbstractFileByPath(u)||await this.vault.createFolder(u),await this.vault.create(f,l)}generateConceptFrontmatter(e,t,r,i){let s=new Date,a=F7.DateFormatter.toLocalTimestamp(s),c={};return c.exo__Asset_isDefinedBy='"[[!concepts]]"',c.exo__Asset_uid=i,c.exo__Asset_createdAt=a,c.exo__Instance_class=[`"[[${L7.AssetClass.CONCEPT}]]"`],c.ims__Concept_broader=`"[[${e}]]"`,c.ims__Concept_definition=t,r.length>0&&(c.aliases=r),c}};xi.ConceptCreationService=Nb;xi.ConceptCreationService=Nb=R7([(0,hI.injectable)(),P7(0,(0,hI.inject)(k7.DI_TOKENS.IVaultAdapter)),O7("design:paramtypes",[Object])],Nb)});var pI=S(aa=>{"use strict";var j7=aa&&aa.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},M7=aa&&aa.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)};Object.defineProperty(aa,"__esModule",{value:!0});aa.InstantiationRuleResolver=void 0;var $7=Ie(),kb=Ae(),fl=Me(),sa=Jt(),jb=class{static{o(this,"InstantiationRuleResolver")}constructor(e){this.tripleStore=e,this.cache=new Map}async getRule(e){let t=this.cache.get(e);if(t!==void 0)return t;let r=await this.findRuleForClass(e);return this.cache.set(e,r),r}invalidateCache(){this.cache.clear()}async findRuleForClass(e){let t=await this.tripleStore.match(void 0,sa.Namespace.RDF.term("type"),sa.Namespace.EXO.term("InstantiationRule"));for(let r of t){let i=r.subject;if((await this.tripleStore.match(i,sa.Namespace.EXO.term("rule_targetClass"),void 0)).some(c=>this.matchesTargetClass(c.object,e)))return this.loadRule(i)}return null}async loadRule(e){let t=await this.tripleStore.match(e,sa.Namespace.EXO.term("rule_prototypeUID"),void 0),r=t.length>0&&t[0].object instanceof fl.Literal?t[0].object.value:null,i=await this.tripleStore.match(e,sa.Namespace.EXO.term("rule_defaultFolder"),void 0),s=i.length>0&&i[0].object instanceof fl.Literal?i[0].object.value:null,a=await this.tripleStore.match(e,sa.Namespace.EXO.term("rule_propertySetRules"),void 0),c=[];for(let l of a){let u=l.object;if(!(u instanceof kb.IRI))continue;let f=await this.loadPropertySetRule(u);f&&c.push(f)}return{prototypeUID:r,defaultFolder:s,propertySetRules:c}}async loadPropertySetRule(e){let t=await this.tripleStore.match(e,sa.Namespace.EXO.term("rule_property"),void 0);if(t.length===0)return null;let r=t[0].object,i=r instanceof kb.IRI?this.extractLocalName(r):r instanceof fl.Literal?this.normalizeWikilink(r.value):null;if(!i)return null;let s=await this.tripleStore.match(e,sa.Namespace.EXO.term("rule_value"),void 0),a=s.length>0&&s[0].object instanceof fl.Literal?s[0].object.value:"",c=await this.tripleStore.match(e,sa.Namespace.EXO.term("rule_valueType"),void 0),l=c.length>0&&c[0].object instanceof fl.Literal?c[0].object.value:"literal";return{property:i,value:a,valueType:l}}matchesTargetClass(e,t){return e instanceof kb.IRI?this.extractLocalName(e)===t:e instanceof fl.Literal?this.normalizeWikilink(e.value)===t:!1}extractLocalName(e){let t=e.value,r=t.lastIndexOf("#");if(r>=0){let s=t.substring(r+1);return t.includes("/ems#")?`ems__${s}`:t.includes("/exo#")?`exo__${s}`:t.includes("/ims#")?`ims__${s}`:s}let i=t.lastIndexOf("/");return i>=0?t.substring(i+1):t}normalizeWikilink(e){return e.replace(/["'[\]]/g,"").trim()}};aa.InstantiationRuleResolver=jb;aa.InstantiationRuleResolver=jb=j7([(0,$7.injectable)(),M7("design:paramtypes",[Object])],jb)});var mI=S(oa=>{"use strict";var U7=oa&&oa.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},V7=oa&&oa.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)};Object.defineProperty(oa,"__esModule",{value:!0});oa.VisibilityGenerator=void 0;var B7=Ie(),q7=of(),Mb=class{static{o(this,"VisibilityGenerator")}constructor(e){this.engine=e}getVisibleCommands(e){return this.engine.getAllTransitions(e).map(t=>this.toCommand(t))}getForwardCommands(e){return this.engine.getAvailableTransitions(e).map(t=>this.toCommand(t))}getRollbackCommands(e){return this.engine.getRollbackTransitions(e).map(t=>this.toCommand(t))}toCommand(e){let t=e.from.replace("ems__EffortStatus","").toLowerCase(),r=e.to.replace("ems__EffortStatus","").toLowerCase();return{commandId:`workflow-${t}-to-${r}`,label:e.label,icon:e.icon,targetStatus:e.to,isRollback:e.isRollback}}};oa.VisibilityGenerator=Mb;oa.VisibilityGenerator=Mb=U7([(0,B7.injectable)(),V7("design:paramtypes",[q7.WorkflowEngine])],Mb)});var gI=S(ca=>{"use strict";var G7=ca&&ca.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},W7=ca&&ca.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)};Object.defineProperty(ca,"__esModule",{value:!0});ca.WorkflowCommandAdapter=void 0;var z7=Ie(),$b=xa(),H7=of(),Ub=class{static{o(this,"WorkflowCommandAdapter")}constructor(e){this.workflow=e,this.engine=new H7.WorkflowEngine(e)}adaptTransitions(e){return this.engine.getAllTransitions(e).map(r=>this.transitionToCommand(r))}adaptForwardTransitions(e){return this.engine.getAvailableTransitions(e).map(r=>this.transitionToCommand(r))}adaptRollbackTransitions(e){return this.engine.getRollbackTransitions(e).map(r=>this.transitionToCommand(r))}getEngine(){return this.engine}getWorkflow(){return this.workflow}transitionToCommand(e){let t=this.generateCommandId(e),r=this.buildPrecondition(e),i=this.buildGrounding(e),s=e.isRollback?"rollback":"workflow";return{id:t,name:e.label,icon:e.icon,precondition:r,grounding:i,category:s,confirmMessage:e.isRollback?`Rollback to ${this.shortStatus(e.to)}?`:void 0,successMessage:`Status changed to ${this.shortStatus(e.to)}`}}generateCommandId(e){let t=this.shortStatus(e.from),r=this.shortStatus(e.to);return`workflow-${t}-to-${r}`}buildPrecondition(e){return{id:`precond-${this.generateCommandId(e)}`,label:`Asset status is ${this.shortStatus(e.from)}`,sparqlAsk:`ASK { $target ems:Effort_status "${e.from}" }`}}buildGrounding(e){let t=[];t.push({id:`gnd-status-${this.shortStatus(e.to)}`,label:`Set status to ${this.shortStatus(e.to)}`,type:$b.GroundingType.PROPERTY_SET,targetProperty:"ems__Effort_status",targetValueRef:e.to});let r=this.engine.getTimestampsForStatus(e.to);for(let i of r)t.push({id:`gnd-ts-${i}`,label:`Set ${i}`,type:$b.GroundingType.PROPERTY_SET,targetProperty:i,targetValueSubstitution:"$now"});return t.length===1?t[0]:{id:`gnd-composite-${this.generateCommandId(e)}`,label:`Transition to ${this.shortStatus(e.to)}`,type:$b.GroundingType.COMPOSITE,steps:t}}shortStatus(e){return e.replace("ems__EffortStatus","").toLowerCase()}};ca.WorkflowCommandAdapter=Ub;ca.WorkflowCommandAdapter=Ub=G7([(0,z7.injectable)(),W7("design:paramtypes",[Object])],Ub)});var Bb=S(Ci=>{"use strict";var Q7=Ci&&Ci.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},Y7=Ci&&Ci.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},K7=Ci&&Ci.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(Ci,"__esModule",{value:!0});Ci.EffortVotingService=void 0;var yI=Ie(),X7=Rt(),Vb=class{static{o(this,"EffortVotingService")}constructor(e){this.vault=e}async incrementEffortVotes(e){let t=await this.vault.read(e),i=this.extractVoteCount(t)+1,s=this.updateFrontmatterWithVotes(t,i);return await this.vault.modify(e,s),i}extractVoteCount(e){let t=/^---\r?\n([\s\S]*?)\r?\n---/,r=e.match(t);if(!r)return 0;let s=r[1].match(/ems__Effort_votes:\s*(\d+)/);return s&&s[1]?parseInt(s[1],10):0}updateFrontmatterWithVotes(e,t){let r=/^---\r?\n([\s\S]*?)\r?\n---/,i=e.match(r),s=e.includes(`\r
101
101
  `)?`\r
102
102
  `:`
103
- `;if(!i)return`---${s}ems__Effort_votes: ${t}${s}---${s}${e}`;let c=i[1];return c.includes("ems__Effort_votes:")?c=c.replace(/ems__Effort_votes:.*$/m,`ems__Effort_votes: ${t}`):c+=`${s}ems__Effort_votes: ${t}`,e.replace(r,`---${s}${c}${s}---`)}};Ci.EffortVotingService=Vb;Ci.EffortVotingService=Vb=Q7([(0,yI.injectable)(),K7(0,(0,yI.inject)(X7.DI_TOKENS.IVaultAdapter)),Y7("design:paramtypes",[Object])],Vb)});var Gb=S(Ri=>{"use strict";var J7=Ri&&Ri.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},Z7=Ri&&Ri.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},e8=Ri&&Ri.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(Ri,"__esModule",{value:!0});Ri.FolderRepairService=void 0;var _I=Ie(),t8=Rt(),qb=class{static{o(this,"FolderRepairService")}constructor(e){this.vault=e}async getExpectedFolder(e,t){let r=t?.exo__Asset_isDefinedBy;if(!r)return null;let i=this.extractReference(r);if(!i)return null;let s=this.vault.getFirstLinkpathDest(i,e.path);return s?this.getFileFolder(s):null}async repairFolder(e,t){let r=`${t}/${e.name}`;if(this.vault.getAbstractFileByPath(r))throw new Error(`Cannot move file: ${r} already exists`);await this.ensureFolderExists(t),await this.vault.rename(e,r)}getFileFolder(e){return e.parent?.path||""}extractReference(e){if(typeof e!="string")return null;let t=e.trim().replace(/^["']|["']$/g,"");t=t.replace(/^\[\[|\]\]$/g,"");let r=t.indexOf("|");return r!==-1&&(t=t.slice(0,r).trim()),t||null}async ensureFolderExists(e){if(!e)return;let t=this.vault.getAbstractFileByPath(e);if(!(t&&"children"in t))try{await this.vault.createFolder(e)}catch(r){if(r instanceof Error&&r.message.includes("Folder already exists"))return;throw r}}};Ri.FolderRepairService=qb;Ri.FolderRepairService=qb=J7([(0,_I.injectable)(),e8(0,(0,_I.inject)(t8.DI_TOKENS.IVaultAdapter)),Z7("design:paramtypes",[Object])],qb)});var zb=S(Oi=>{"use strict";var r8=Oi&&Oi.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},n8=Oi&&Oi.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},i8=Oi&&Oi.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(Oi,"__esModule",{value:!0});Oi.LabelToAliasService=void 0;var bI=Ie(),s8=Rt(),Wb=class{static{o(this,"LabelToAliasService")}constructor(e){this.vault=e}async copyLabelToAliases(e){let t=await this.vault.read(e),r=this.extractLabel(t);if(!r)throw new Error("No exo__Asset_label found in file");let i=this.addLabelToAliases(t,r);await this.vault.modify(e,i)}extractLabel(e){let t=/^---\r?\n([\s\S]*?)\r?\n---/,r=e.match(t);if(!r)return null;let s=r[1].match(/exo__Asset_label:\s*["']?([^"'\r\n]+)["']?/);return s&&s[1]?s[1].trim():null}addLabelToAliases(e,t){let r=/^---\r?\n([\s\S]*?)\r?\n---/,i=e.match(r),s=e.includes(`\r
103
+ `;if(!i)return`---${s}ems__Effort_votes: ${t}${s}---${s}${e}`;let c=i[1];return c.includes("ems__Effort_votes:")?c=c.replace(/ems__Effort_votes:.*$/m,`ems__Effort_votes: ${t}`):c+=`${s}ems__Effort_votes: ${t}`,e.replace(r,`---${s}${c}${s}---`)}};Ci.EffortVotingService=Vb;Ci.EffortVotingService=Vb=Q7([(0,yI.injectable)(),K7(0,(0,yI.inject)(X7.DI_TOKENS.IVaultAdapter)),Y7("design:paramtypes",[Object])],Vb)});var Gb=S(Ri=>{"use strict";var J7=Ri&&Ri.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},Z7=Ri&&Ri.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},e8=Ri&&Ri.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(Ri,"__esModule",{value:!0});Ri.FolderRepairService=void 0;var _I=Ie(),t8=Rt(),qb=class{static{o(this,"FolderRepairService")}constructor(e){this.vault=e}async getExpectedFolder(e,t){return this.getExpectedFolderSync(e,t)}getExpectedFolderSync(e,t){let r=t?.exo__Asset_isDefinedBy;if(!r)return null;let i=this.extractReference(r);if(!i)return null;let s=this.vault.getFirstLinkpathDest(i,e.path);return s?this.getFileFolder(s):null}async repairFolder(e,t){let r=`${t}/${e.name}`;if(this.vault.getAbstractFileByPath(r))throw new Error(`Cannot move file: ${r} already exists`);await this.ensureFolderExists(t),await this.vault.rename(e,r)}getFileFolder(e){return e.parent?.path||""}extractReference(e){if(typeof e!="string")return null;let t=e.trim().replace(/^["']|["']$/g,"");t=t.replace(/^\[\[|\]\]$/g,"");let r=t.indexOf("|");return r!==-1&&(t=t.slice(0,r).trim()),t||null}async ensureFolderExists(e){if(!e)return;let t=this.vault.getAbstractFileByPath(e);if(!(t&&"children"in t))try{await this.vault.createFolder(e)}catch(r){if(r instanceof Error&&r.message.includes("Folder already exists"))return;throw r}}};Ri.FolderRepairService=qb;Ri.FolderRepairService=qb=J7([(0,_I.injectable)(),e8(0,(0,_I.inject)(t8.DI_TOKENS.IVaultAdapter)),Z7("design:paramtypes",[Object])],qb)});var zb=S(Oi=>{"use strict";var r8=Oi&&Oi.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},n8=Oi&&Oi.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},i8=Oi&&Oi.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(Oi,"__esModule",{value:!0});Oi.LabelToAliasService=void 0;var bI=Ie(),s8=Rt(),Wb=class{static{o(this,"LabelToAliasService")}constructor(e){this.vault=e}async copyLabelToAliases(e){let t=await this.vault.read(e),r=this.extractLabel(t);if(!r)throw new Error("No exo__Asset_label found in file");let i=this.addLabelToAliases(t,r);await this.vault.modify(e,i)}extractLabel(e){let t=/^---\r?\n([\s\S]*?)\r?\n---/,r=e.match(t);if(!r)return null;let s=r[1].match(/exo__Asset_label:\s*["']?([^"'\r\n]+)["']?/);return s&&s[1]?s[1].trim():null}addLabelToAliases(e,t){let r=/^---\r?\n([\s\S]*?)\r?\n---/,i=e.match(r),s=e.includes(`\r
104
104
  `)?`\r
105
105
  `:`
106
106
  `;if(!i)return`---${s}aliases:${s} - "${t}"${s}---${s}${e}`;let c=i[1];return c.includes("aliases:")?c.match(/(aliases:\r?\n(?: {2}- .*\r?\n)*)/)&&(c=c.replace(/(aliases:\r?\n(?: {2}- .*\r?\n)*)/,`$1 - "${t}"${s}`)):c+=`${s}aliases:${s} - "${t}"`,e.replace(r,`---${s}${c}${s}---`)}};Oi.LabelToAliasService=Wb;Oi.LabelToAliasService=Wb=r8([(0,bI.injectable)(),i8(0,(0,bI.inject)(s8.DI_TOKENS.IVaultAdapter)),n8("design:paramtypes",[Object])],Wb)});var Yb=S(Pi=>{"use strict";var a8=Pi&&Pi.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},o8=Pi&&Pi.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},SI=Pi&&Pi.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(Pi,"__esModule",{value:!0});Pi.PropertyCleanupService=void 0;var Hb=Ie(),vI=Rt(),c8=xc(),Qb=class{static{o(this,"PropertyCleanupService")}constructor(e,t=c8.NullLogger){this.vault=e,this.logger=t,this.logger.debug("PropertyCleanupService initialized")}async cleanEmptyProperties(e){this.logger.debug("Cleaning empty properties",{path:e.path});let t=await this.vault.read(e),r=this.removeEmptyPropertiesFromContent(t);await this.vault.modify(e,r),this.logger.info("Empty properties cleaned",{path:e.path})}removeEmptyPropertiesFromContent(e){let t=/^---\n([\s\S]*?)\n---/,r=e.match(t);if(!r)return e;let s=r[1].split(`
@@ -766,7 +766,7 @@ ${r}`}o(LJ,"serializeFile");function IN(n,e,t={}){let r=my.default.dirname(n),i=
766
766
  `).map(s=>s.trim()).filter(Boolean)){let s=kJ.exec(i);if(s){r.push({sessionName:i,uuid:s[1],type:"full"});continue}let a=jJ.exec(i);a&&r.push({sessionName:i,uuid:a[1],type:"short"})}return r}o($J,"listClaudeChildSessions");function UJ(n,e,t){let r=null,i=e.toLowerCase();function s(a){if(r)return;let c;try{c=(0,yy.readdirSync)(a,{withFileTypes:!0})}catch{return}for(let l of c){if(r)return;if(l.name.startsWith(".")||l.name==="node_modules")continue;let u=(0,xN.join)(a,l.name);if(l.isDirectory())s(u);else if(l.name.endsWith(".md")){let f=l.name.slice(0,-3).toLowerCase();(t==="full"&&f===i||t==="short"&&f.startsWith(i))&&(r=u)}}}return o(s,"walk"),s(n),r}o(UJ,"findVaultFile");function VJ(n,e){try{let i=(e??(s=>(0,yy.readFileSync)(s,"utf8")))(n).match(/ems__Effort_status\s*:.*\[\[([^\]]+)\]\]/);return i?i[1].includes(MJ):!1}catch{return!1}}o(VJ,"isTaskDoing");async function RN(n,e=gy.exec,t){let r=await $J(e),i=[];for(let s of r){let a=UJ(n,s.uuid,s.type);if(!a){i.push({sessionName:s.sessionName,taskUuid:s.uuid,taskFilePath:null,reason:"vault task not found"});continue}VJ(a,t)||i.push({sessionName:s.sessionName,taskUuid:s.uuid,taskFilePath:a,reason:"vault task status != Doing"})}return i}o(RN,"detectOrphans");async function ON(n,e,t=gy.exec,r=IN){let i=CN(t);if(e)return{ok:!0};let s=new Date().toISOString();if(n.taskFilePath)try{r(n.taskFilePath,{ems__Effort_status:"[[ems__EffortStatusFailed]]",aiTask__Task_lastError:`orphan recovery: ${n.reason}`,exo__Asset_updatedAt:s})}catch(a){return{ok:!1,error:`vault update failed: ${a.message}`}}try{await i(`tmux kill-session -t ${JSON.stringify(n.sessionName)}`)}catch{}return{ok:!0}}o(ON,"recoverOrphan");function BJ(){return process.env.EXOCORTEX_VAULT??(0,_y.join)((0,DN.homedir)(),"vault-2025")}o(BJ,"defaultVault");function FN(){return new we("recover").description("Detect and recover orphaned claude-child tmux sessions. A session is orphaned when the corresponding vault task is not in Doing status. Default mode: dry-run (no changes). Use --apply to perform recovery.").option("--vault <path>","Path to Obsidian vault",BJ()).option("--dry-run","List orphans without applying changes (default)",!1).option("--apply","Apply orphan recovery: set Failed + kill tmux session",!1).action(async n=>{let e=(0,_y.resolve)(n.vault);if(!(0,PN.existsSync)(e)){console.error(`[recover] vault not found: ${e}`),process.exitCode=1;return}let t=!n.apply;console.log(`[recover] vault=${e} mode=${t?"dry-run":"apply"}`);let r=await RN(e);if(r.length===0){console.log("[recover] No orphaned claude-child sessions found.");return}console.log(`[recover] Found ${r.length} orphan(s):`);for(let a of r){let c=a.taskFilePath??"(not found in vault)";console.log(` session=${a.sessionName} uuid=${a.taskUuid} reason=${a.reason}`),console.log(` file=${c}`)}if(t){console.log("[recover] Dry-run mode: no changes applied. Use --apply to recover.");return}let i=0,s=0;for(let a of r){let c=await ON(a,!1);c.ok?(i++,console.log(`[recover] RECOVERED: ${a.sessionName}`)):(s++,console.error(`[recover] ERROR recovering ${a.sessionName}: ${c.error}`))}console.log(`[recover] Done: recovered=${i} errors=${s}`),s>0&&(process.exitCode=1)})}o(FN,"recoverCommand");var ZE=require("fs"),by=require("path"),Kn=oe(ir());function qJ(n,e){return e.concat([n])}o(qJ,"collectAlso");var GJ="https://exocortex.my/ontology/find#Alias_sparql",WJ="https://exocortex.my/ontology/exo#Asset_label";function uu(n){if(n&&typeof n=="object"&&"value"in n){let e=n.value;return typeof e=="string"?e:String(e)}return String(n)}o(uu,"nodeValue");async function zJ(n,e){let t=await n.match(void 0,void 0,void 0),r=[];for(let s of t)uu(s.predicate)!==WJ||uu(s.object)!==e||r.push(uu(s.subject));if(r.length===0)return null;let i=[];for(let s of r)for(let a of t)uu(a.predicate)===GJ&&uu(a.subject)===s&&i.push(uu(a.object));if(i.length===0)return null;if(i.length>1)throw new Bt(`Ambiguous find__Alias "${e}" \u2014 ${i.length} instances define a sparql fragment`,`Ensure exactly one find__Alias asset has exo:Asset_label "${e}"`);return i[0]}o(zJ,"resolveAliasFragment");var HJ=/^([a-z][a-zA-Z0-9]*)__([A-Za-z0-9_]+)$/,QJ="https://exocortex.my/ontology/";function YJ(n,e){let t=HJ.exec(e);if(t){let i=`<${QJ}${t[1]}#${t[2]}>`;return n.replace(/\?value\b/g,i)}let r=e.replace(/\\/g,"\\\\").replace(/"/g,'\\"');return n.replace(/\?value\b/g,`"${r}"`)}o(YJ,"bindValueLiteral");function NN(){return new we("find").description("Find vault assets via SPARQL \u2014 outputs file paths one per line (RFC 8e83442b T1.1)").option("--vault <path>","Path to Obsidian vault",process.cwd()).option("--also <path>","Additional vault to include (repeatable)",qJ,[]).option("--sparql <query>","SPARQL SELECT query (must bind ?path)").option("--class <value>","Filter by class label via find__Alias 'class' (e.g. ems__Task)").action(async n=>{se.setFormat("text");try{if(n.sparql&&n.class)throw new Bt("--sparql and --class are mutually exclusive","Pass either a raw --sparql query or a find__Alias-backed flag like --class");if(!n.sparql&&!n.class)throw new Bt("one of --sparql <query> or --class <value> is required",'exocortex find --class ems__Task OR exocortex find --sparql "SELECT ?path WHERE { ... }"');let e=(0,by.resolve)(n.vault);if(!(0,ZE.existsSync)(e))throw new Re(e);let t=new jt(e),i=await new Kn.NoteToRDFConverter(t).convertVault(),s=n.also||[];for(let v of s){let E=(0,by.resolve)(v);if(!(0,ZE.existsSync)(E))throw new Re(E);let I=new jt(E),$=await new Kn.NoteToRDFConverter(I).convertVault();i=i.concat($)}let a=new Kn.InMemoryTripleStore;await a.addAll(i);let c;if(n.class){let v=await zJ(a,"class");if(v===null)throw new Bt('No find__Alias with exo:Asset_label "class" was found in the vault',"Seed a find__Alias asset (label=class) or fall back to exocortex find --sparql");c=`SELECT ?path WHERE { ${YJ(v,n.class)} }`}else c=n.sparql;let l=ru(c);l=lo(l);let u=new Kn.ExoQLParser,f=uo(co(e));for(let v of s){let E=uo(co((0,by.resolve)(v)));for(let[I,F]of E)f.has(I)||f.set(I,F)}f.size>0&&u.setVaultPrefixes(f);let d=u.parse(l),p=new Kn.ExoQLAlgebraTranslator().translate(d);p.type!=="construct"&&(p=new Kn.AlgebraOptimizer().optimize(p));let b=await new Kn.ExoQLQueryExecutor(a).executeAll(p),w="obsidian://vault/";for(let v of b){let I=v.toJSON().path;if(typeof I!="string"||!I.startsWith(w))continue;let F=I.slice(w.length),$;try{$=decodeURIComponent(F)}catch{$=F}process.stdout.write($+`
767
767
  `)}}catch(e){se.handle(e),process.exit(5)}})}o(NN,"findCommand");var n2=require("fs"),i2=require("path"),Oe=oe(ir());var UN=oe(ir()),Ft=oe(jN());var MN="obsidian://vault/";function lZ(n){let e=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;return{async resolveTargetPath(t){if(!t)throw new Error("Cannot resolve empty targetIRI to a vault path");let r=t;if(r.startsWith(MN))r=decodeURI(r.slice(MN.length));else if(e.test(r)){let i=await n.findFileByUID(r);if(!i)throw new Error(`No vault file found for UID: ${r}`);r=i}if(r.endsWith(".md")||(r=`${r}.md`),!await n.fileExists(r))throw new Error(`Cannot resolve target file for IRI "${t}" (tried "${r}")`);return r}}}o(lZ,"createCliPathResolver");var uZ=["openFile","sparqlSelect","getActiveFileIRI","getActiveFilePath","trashFile","duplicateFile"],r2=class extends Error{constructor(t){super(`Service "${t}" is not implemented in the CLI (no-op stub). dyncommand exec on this service_call grounding cannot change vault state. See CLI parity issues #2865-#2868 for port status.`);this.serviceId=t;this.name="CliServiceNotImplementedError"}static{o(this,"CliServiceNotImplementedError")}};function $N(n){return{async execute(){throw new r2(n)}}}o($N,"notImplementedService");function fZ(n){return e=>{let t=n.getFirstLinkpathDest(e,"");if(!t||!("basename"in t))return null;let i=n.getFrontmatter(t)?.exo__Asset_label;return typeof i=="string"&&i.length>0?i:null}}o(fZ,"createCliClassResolver");function VN(n,e){for(let t of uZ)n.register(t,$N(t));for(let t of["updateProperty","removeProperty","setStatus","createAsset"])n.register(t,$N(t));if(e){if(e.fsAdapter){let t=new UN.FrontmatterService,r=lZ(e.fsAdapter);n.register("updateProperty",(0,Ft.createUpdatePropertyService)(e.fsAdapter,t,r)),n.register("removeProperty",(0,Ft.createRemovePropertyService)(e.fsAdapter,t,r)),n.register("setStatus",(0,Ft.createSetStatusService)(e.fsAdapter,t,r)),n.register("createAsset",(0,Ft.createCreateAssetService)(e.vaultAdapter,e.fsAdapter,fZ(e.vaultAdapter)))}n.register("createRelatedTask",(0,Ft.createCreateRelatedTaskService)(e.vaultAdapter,e.genericAssetCreationService)),n.register("createRelatedProject",(0,Ft.createCreateRelatedProjectService)(e.vaultAdapter,e.genericAssetCreationService)),n.register("archiveAsset",(0,Ft.createArchiveAssetService)(e.vaultAdapter,e.archiveAssetService)),n.register("planForEvening",(0,Ft.createPlanForEveningService)(e.vaultAdapter,e.taskStatusService)),n.register("cleanProperties",(0,Ft.createCleanPropertiesService)(e.vaultAdapter,e.propertyCleanupService)),n.register("renameToUid",(0,Ft.createRenameToUidService)(e.vaultAdapter,e.renameToUidService)),n.register("repairFolder",(0,Ft.createRepairFolderService)(e.vaultAdapter,e.folderRepairService)),n.register("fixMissingLabel",(0,Ft.createFixMissingLabelService)(e.vaultAdapter,e.fixMissingLabelService))}}o(VN,"populateCliServiceRegistry");var dZ=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function hZ(){if(process.stdin.isTTY)return[];let n=[];for await(let t of process.stdin)n.push(t);return Buffer.concat(n).toString("utf-8").split(`
768
768
  `).map(t=>t.trim()).filter(t=>t.length>0)}o(hZ,"readStdinLines");function vy(n){if(n&&typeof n=="object"&&"value"in n){let e=n.value;return typeof e=="string"?e:String(e)}return String(n)}o(vy,"nodeValue");async function pZ(n,e){let t=new Oe.IRI("https://exocortex.my/ontology/exocmd#Command_cliName"),r=await n.match(void 0,t,void 0),i=[];for(let s of r)if(vy(s.object)===e){let l=vy(s.subject).match(/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.md$/i);l&&i.push(l[1])}if(i.length===0)return null;if(i.length>1)throw new Bt(`Ambiguous cliName "${e}" \u2014 resolves to ${i.length} commands: ${i.join(", ")}`,"Use the UUID directly: exocortex apply <uuid> <path>");return i[0]}o(pZ,"resolveSlugToUuid");async function mZ(n,e){let t=new Oe.IRI("https://exocortex.my/ontology/exocmd#Command_destructive"),r=await n.match(void 0,t,void 0);for(let i of r)if(vy(i.subject).includes(e)){let a=vy(i.object);if(a==="true"||a==="True")return!0}return!1}o(mZ,"isDestructive");async function gZ(n,e,t,r,i,s,a){let c=(0,i2.resolve)(n,r);if(!(0,n2.existsSync)(c))return console.error(`\u274C Target file not found: ${r}`),!1;let u=await new Oe.CommandResolver(e).loadCommand(t);if(!u)return console.error(`\u274C Command with UID "${t}" not found.`),!1;if(await mZ(e,t)&&!i.dryRun&&!i.yes)return console.error(`\u274C Command "${u.name}" is marked destructive. Add --dry-run to preview, or --yes to apply.`),!1;let d=(0,Oe.vaultPathToIRI)(r);if(!await new Oe.PreconditionEvaluator(e,void 0,{clock:s}).evaluate(u.precondition,d))return console.error(`\u274C Precondition not satisfied for "${u.name}" on "${r}".`),!1;if(i.dryRun)return console.log(`\u{1F50D} Dry-run: would apply "${u.name}" to "${r}" (precondition passed).`),!0;let y=new Oe.ServiceRegistry,b=new jt(n),w=new Oe.GenericAssetCreationService(b).withDeterminism({clock:s,uidGenerator:a}),v=new Oe.ArchiveAssetService(b),E=new Oe.PropertyCleanupService(b),I=new Oe.FixMissingLabelService(b),F=new Oe.RenameToUidService(b),$=new Oe.FolderRepairService(b),ee=new Oe.TaskStatusService(b,new Oe.EffortStatusWorkflow,new Oe.StatusTimestampService(b)),V=new yr(n);VN(y,{vaultAdapter:b,fsAdapter:V,genericAssetCreationService:w,archiveAssetService:v,taskStatusService:ee,propertyCleanupService:E,fixMissingLabelService:I,renameToUidService:F,folderRepairService:$});let W=new Oe.GroundingExecutor(V,V,y,(0,Oe.createVaultFrontmatterClassLabelResolver)(V),{clock:s,uidGenerator:a}),D;if(i.input)try{let G=JSON.parse(i.input);if(typeof G!="object"||G===null||Array.isArray(G))throw new Error("must be a JSON object");D=G}catch(G){let Fe=G instanceof Error?G.message:String(G);return console.error(`\u274C --input: invalid JSON object (${Fe})`),!1}let N=await W.execute(u.grounding,d,r,D);if(N.success){let G=u.successMessage??`Applied "${u.name}" to "${r}".`;return console.log(`\u2705 ${G}`),!0}else return console.error(`\u274C "${u.name}" failed on "${r}": ${N.error}`),!1}o(gZ,"executeOnTarget");function BN(){return new we("apply").description("Apply an exocmd__Command to one or more vault assets (RFC 8e83442b T1.2). Pass a path arg or pipe paths via stdin.").argument("<cmd>","Command UUID or cliName slug").argument("[path]","Vault-relative path to target asset (omit to read paths from stdin)").option("--vault <path>","Path to Obsidian vault",process.cwd()).option("--dry-run","Preview without writing").option("--yes","Skip destructive-command confirmation").option("--input <json>","JSON userInput for service_call groundings").option("--seed <uuid>","Deterministic UID seed for test/replay (uses seededUidGenerator)").option("--frozen-clock <iso>","Freeze clock to ISO timestamp for test/replay (uses frozenClock)").action(async(n,e,t)=>{se.setFormat("text");try{let r=(0,i2.resolve)(t.vault);if(!(0,n2.existsSync)(r))throw new Re(r);sy(r);let i=t.frozenClock?(0,Oe.frozenClock)(t.frozenClock):(0,Oe.liveClock)(),s=t.seed?(0,Oe.seededUidGenerator)(t.seed):(0,Oe.liveUidGenerator)(),a=new jt(r),l=await new Oe.NoteToRDFConverter(a).convertVault(),u=new Oe.InMemoryTripleStore;await u.addAll(l);let f;if(dZ.test(n))f=n;else{let y=await pZ(u,n);y||(console.error(`\u274C No command found with UUID or cliName "${n}".`),process.exit(3)),f=y}let d;if(e)d=[e];else if(d=await hZ(),d.length===0)throw new Bt("No target path provided and stdin is empty.","exocortex apply <uuid> <path> OR exocortex find ... | exocortex apply <uuid>");let h=0,p=0;for(let y of d)await gZ(r,u,f,y,t,i,s)?h++:p++;d.length>1&&console.log(`
769
- \u{1F4CA} Applied to ${h}/${d.length} target(s) (${p} failed).`),p>0&&process.exit(5)}catch(r){se.handle(r),process.exit(5)}})}o(BN,"applyCommand");var ho=require("fs"),fu=require("path");var qN=/^---\s*$/,yZ=/^exocmd__Grounding_type:\s*(.+?)\s*$/,_Z=/^"?\[\[[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}(?:\|[^\]]*)?\]\]"?$/i,bZ=new Set(["node_modules"]);function SZ(n){return n.startsWith(".")||bZ.has(n)}o(SZ,"shouldSkipDir");function*GN(n){let e;try{e=(0,ho.readdirSync)(n,{withFileTypes:!0})}catch(t){let r=t;if(r.code==="EPERM"||r.code==="EACCES"||r.code==="ENOENT")return;throw t}for(let t of e){let r=(0,fu.join)(n,t.name);if(t.isDirectory()){if(SZ(t.name))continue;yield*GN(r)}else t.isFile()&&t.name.endsWith(".md")&&(yield r)}}o(GN,"walkMarkdownFiles");function vZ(n){let e=n.split(/\r?\n/);if(e.length<2||!qN.test(e[0]))return null;for(let t=1;t<e.length;t++)if(qN.test(e[t]))return{lines:e.slice(1,t),startLine:2};return null}o(vZ,"extractFrontmatter");function wZ(n){let e=n.trim();return e===""||e==="null"||e==="~"?!1:!_Z.test(e)}o(wZ,"isLiteralForm");function EZ(n){let e=[];for(let t of GN(n)){let r;try{r=(0,ho.readFileSync)(t,"utf-8")}catch{continue}let i=vZ(r);if(i)for(let s=0;s<i.lines.length;s++){let a=i.lines[s].match(yZ);if(!a)continue;let c=a[1];wZ(c)&&e.push({path:(0,fu.relative)(n,t),line:i.startLine+s,value:c})}}return e}o(EZ,"scanVaultForLiteralForm");function WN(){return new we("grounding-type-literal-form").description("Detect post-Phase-4+1 regressions: any exocmd__Grounding_type literal-string form (not wikilink) in vault frontmatter").requiredOption("--vault <path>","Vault root directory").option("--output <type>","Response format: text|json","text").action(n=>{let e=n.output??"text";se.setFormat(e);try{let t=(0,fu.resolve)(n.vault);if(!(0,ho.existsSync)(t)||!(0,ho.statSync)(t).isDirectory())throw new Re(t);let r=EZ(t);if(e==="json")console.log(JSON.stringify({vaultPath:t,violationCount:r.length,violations:r,clean:r.length===0},null,2));else if(r.length===0)console.log(`OK ${t}: 0 exocmd__Grounding_type literal-form violations`);else{console.error(`FAIL ${t}: ${r.length} exocmd__Grounding_type literal-form violation(s):`);for(let i of r)console.error(` ${i.path}:${i.line} \u2014 value: ${i.value}`);console.error("\nRFC 9d20c91f Phase 3 migrated all values to wikilink form `[[<uid>]]`. Re-run the Phase 3 migration script or hand-edit offending files.")}r.length>0&&(process.exitCode=1)}catch(t){se.handle(t)}})}o(WN,"auditGroundingTypeLiteralFormCommand");function zN(){let n=new we("audit").description("Audit vault for regression patterns (RFC cutover detectors)");return n.addCommand(WN()),n}o(zN,"auditCommand");function HN(n){let e=new we;return e.name("exocortex").description("CLI tool for Exocortex knowledge management system").version(n??"16.32.2"),e.addCommand(NN()),e.addCommand(BN()),e.addCommand(cF()),e.addCommand(dF()),e.addCommand(MF()),e.addCommand(mF()),e.addCommand(gF()),e.addCommand(vF()),e.addCommand(VF()),e.addCommand(JF()),e.addCommand(tN()),e.addCommand(rN()),e.addCommand(iN()),e.addCommand(mN()),e.addCommand(gN()),e.addCommand(EN()),e.addCommand(FN()),e.addCommand(zN()),e}o(HN,"createProgram");HN().parse();0&&(module.exports={createProgram});
769
+ \u{1F4CA} Applied to ${h}/${d.length} target(s) (${p} failed).`),p>0&&process.exit(5)}catch(r){se.handle(r),process.exit(5)}})}o(BN,"applyCommand");var ho=require("fs"),fu=require("path");var qN=/^---\s*$/,yZ=/^exocmd__Grounding_type:\s*(.+?)\s*$/,_Z=/^"?\[\[[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}(?:\|[^\]]*)?\]\]"?$/i,bZ=new Set(["node_modules"]);function SZ(n){return n.startsWith(".")||bZ.has(n)}o(SZ,"shouldSkipDir");function*GN(n){let e;try{e=(0,ho.readdirSync)(n,{withFileTypes:!0})}catch(t){let r=t;if(r.code==="EPERM"||r.code==="EACCES"||r.code==="ENOENT")return;throw t}for(let t of e){let r=(0,fu.join)(n,t.name);if(t.isDirectory()){if(SZ(t.name))continue;yield*GN(r)}else t.isFile()&&t.name.endsWith(".md")&&(yield r)}}o(GN,"walkMarkdownFiles");function vZ(n){let e=n.split(/\r?\n/);if(e.length<2||!qN.test(e[0]))return null;for(let t=1;t<e.length;t++)if(qN.test(e[t]))return{lines:e.slice(1,t),startLine:2};return null}o(vZ,"extractFrontmatter");function wZ(n){let e=n.trim();return e===""||e==="null"||e==="~"?!1:!_Z.test(e)}o(wZ,"isLiteralForm");function EZ(n){let e=[];for(let t of GN(n)){let r;try{r=(0,ho.readFileSync)(t,"utf-8")}catch{continue}let i=vZ(r);if(i)for(let s=0;s<i.lines.length;s++){let a=i.lines[s].match(yZ);if(!a)continue;let c=a[1];wZ(c)&&e.push({path:(0,fu.relative)(n,t),line:i.startLine+s,value:c})}}return e}o(EZ,"scanVaultForLiteralForm");function WN(){return new we("grounding-type-literal-form").description("Detect post-Phase-4+1 regressions: any exocmd__Grounding_type literal-string form (not wikilink) in vault frontmatter").requiredOption("--vault <path>","Vault root directory").option("--output <type>","Response format: text|json","text").action(n=>{let e=n.output??"text";se.setFormat(e);try{let t=(0,fu.resolve)(n.vault);if(!(0,ho.existsSync)(t)||!(0,ho.statSync)(t).isDirectory())throw new Re(t);let r=EZ(t);if(e==="json")console.log(JSON.stringify({vaultPath:t,violationCount:r.length,violations:r,clean:r.length===0},null,2));else if(r.length===0)console.log(`OK ${t}: 0 exocmd__Grounding_type literal-form violations`);else{console.error(`FAIL ${t}: ${r.length} exocmd__Grounding_type literal-form violation(s):`);for(let i of r)console.error(` ${i.path}:${i.line} \u2014 value: ${i.value}`);console.error("\nRFC 9d20c91f Phase 3 migrated all values to wikilink form `[[<uid>]]`. Re-run the Phase 3 migration script or hand-edit offending files.")}r.length>0&&(process.exitCode=1)}catch(t){se.handle(t)}})}o(WN,"auditGroundingTypeLiteralFormCommand");function zN(){let n=new we("audit").description("Audit vault for regression patterns (RFC cutover detectors)");return n.addCommand(WN()),n}o(zN,"auditCommand");function HN(n){let e=new we;return e.name("exocortex").description("CLI tool for Exocortex knowledge management system").version(n??"16.32.3"),e.addCommand(NN()),e.addCommand(BN()),e.addCommand(cF()),e.addCommand(dF()),e.addCommand(MF()),e.addCommand(mF()),e.addCommand(gF()),e.addCommand(vF()),e.addCommand(VF()),e.addCommand(JF()),e.addCommand(tN()),e.addCommand(rN()),e.addCommand(iN()),e.addCommand(mN()),e.addCommand(gN()),e.addCommand(EN()),e.addCommand(FN()),e.addCommand(zN()),e}o(HN,"createProgram");HN().parse();0&&(module.exports={createProgram});
770
770
  /*! Bundled license information:
771
771
 
772
772
  reflect-metadata/Reflect.js:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kitelev/exocortex-cli",
3
- "version": "16.32.2",
3
+ "version": "16.32.3",
4
4
  "description": "CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more",
5
5
  "main": "dist/index.js",
6
6
  "bin": {