@kitelev/exocortex-cli 17.8.0 → 17.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 v17.8.0
2
+ // @kitelev/exocortex-cli v17.8.1
3
3
  // CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more
4
4
  // License: MIT
5
5
 
@@ -153,7 +153,7 @@ ${c}
153
153
  ---
154
154
  ${u}`}};i_.MetadataHelpers=n_;n_.ARCHIVED_FLAG_KEYS=["exo__Asset_archived","exo__Asset_isArchived","archived"]});var n$=T(tu=>{"use strict";Object.defineProperty(tu,"__esModule",{value:!0});tu.TASK_DEFAULT_WORKFLOW=tu.PROJECT_DEFAULT_WORKFLOW=void 0;tu.buildWorkflowAssetContent=pre;var r$=ef(),Bh=El(),ct=vl(),Un=e$(),BI=Rc();tu.PROJECT_DEFAULT_WORKFLOW={id:"a1b2c3d4-1111-4000-a000-000000000001",name:"Project Default Workflow",targetClass:Bh.AssetClass.PROJECT,initialState:ct.EffortStatus.DRAFT,terminalStates:[ct.EffortStatus.DONE,ct.EffortStatus.TRASHED],isDefault:!0,states:[{status:ct.EffortStatus.DRAFT,order:1,optional:!1,timestampOnEnter:[]},{status:ct.EffortStatus.BACKLOG,order:2,optional:!1,timestampOnEnter:[]},{status:ct.EffortStatus.DOING,order:3,optional:!1,timestampOnEnter:["ems__Effort_startTimestamp"]},{status:ct.EffortStatus.DONE,order:4,optional:!1,timestampOnEnter:["ems__Effort_endTimestamp","ems__Effort_resolutionTimestamp"]},{status:ct.EffortStatus.TRASHED,order:5,optional:!1,timestampOnEnter:["ems__Effort_resolutionTimestamp"]}],transitions:[{from:ct.EffortStatus.DRAFT,to:ct.EffortStatus.BACKLOG,label:"\u2192 Backlog",isRollback:!1},{from:ct.EffortStatus.BACKLOG,to:ct.EffortStatus.DOING,label:"\u25B6 Start",isRollback:!1},{from:ct.EffortStatus.DOING,to:ct.EffortStatus.DONE,label:"\u2713 Done",isRollback:!1},{from:ct.EffortStatus.BACKLOG,to:ct.EffortStatus.DRAFT,label:"\u2190 Draft",isRollback:!0},{from:ct.EffortStatus.DOING,to:ct.EffortStatus.BACKLOG,label:"\u2190 Backlog",isRollback:!0},{from:ct.EffortStatus.DONE,to:ct.EffortStatus.DOING,label:"\u2190 Doing",isRollback:!0}]};tu.TASK_DEFAULT_WORKFLOW={id:"a1b2c3d4-2222-4000-a000-000000000002",name:"Task Default Workflow",targetClass:Bh.AssetClass.TASK,initialState:ct.EffortStatus.DRAFT,terminalStates:[ct.EffortStatus.DONE,ct.EffortStatus.TRASHED],isDefault:!0,states:[{status:ct.EffortStatus.DRAFT,order:1,optional:!1,timestampOnEnter:[]},{status:ct.EffortStatus.BACKLOG,order:2,optional:!1,timestampOnEnter:[]},{status:ct.EffortStatus.DOING,order:3,optional:!1,timestampOnEnter:["ems__Effort_startTimestamp"]},{status:ct.EffortStatus.DONE,order:4,optional:!1,timestampOnEnter:["ems__Effort_endTimestamp","ems__Effort_resolutionTimestamp"]},{status:ct.EffortStatus.TRASHED,order:5,optional:!1,timestampOnEnter:["ems__Effort_resolutionTimestamp"]}],transitions:[{from:ct.EffortStatus.DRAFT,to:ct.EffortStatus.BACKLOG,label:"\u2192 Backlog",isRollback:!1},{from:ct.EffortStatus.BACKLOG,to:ct.EffortStatus.DOING,label:"\u25B6 Start",isRollback:!1},{from:ct.EffortStatus.DOING,to:ct.EffortStatus.DONE,label:"\u2713 Done",isRollback:!1},{from:ct.EffortStatus.BACKLOG,to:ct.EffortStatus.DRAFT,label:"\u2190 Draft",isRollback:!0},{from:ct.EffortStatus.DOING,to:ct.EffortStatus.BACKLOG,label:"\u2190 Backlog",isRollback:!0},{from:ct.EffortStatus.DONE,to:ct.EffortStatus.DOING,label:"\u2190 Doing",isRollback:!0}]};function pre(r){let e=new Date().toISOString(),t=[],n=r.id,i={exo__Asset_uid:n,exo__Asset_label:`"${r.name}"`,exo__Asset_createdAt:e,exo__Instance_class:Bh.AssetClass.WORKFLOW,[Un.WorkflowProperty.TARGET_CLASS]:`"[[${r.targetClass}]]"`,[Un.WorkflowProperty.INITIAL_STATE]:`"[[${r.initialState}]]"`,[Un.WorkflowProperty.TERMINAL_STATES]:r.terminalStates.map(s=>`"[[${s}]]"`),[Un.WorkflowProperty.IS_DEFAULT]:r.isDefault};t.push({filename:`${n}.md`,content:BI.MetadataHelpers.buildFileContent(i)});for(let s of r.states){let o=(0,r$.v4)(),c={exo__Asset_uid:o,exo__Asset_label:`"${r.name} - ${s.status}"`,exo__Asset_createdAt:e,exo__Instance_class:Bh.AssetClass.WORKFLOW_STATE,[Un.WorkflowStateProperty.WORKFLOW]:`"[[${n}]]"`,[Un.WorkflowStateProperty.STATUS]:`"[[${s.status}]]"`,[Un.WorkflowStateProperty.ORDER]:s.order,[Un.WorkflowStateProperty.OPTIONAL]:s.optional};s.timestampOnEnter.length>0&&(c[Un.WorkflowStateProperty.TIMESTAMP_ON_ENTER]=s.timestampOnEnter),s.badgeColor&&(c[Un.WorkflowStateProperty.BADGE_COLOR]=`"${s.badgeColor}"`),t.push({filename:`${o}.md`,content:BI.MetadataHelpers.buildFileContent(c)})}for(let s of r.transitions){let o=(0,r$.v4)(),c={exo__Asset_uid:o,exo__Asset_label:`"${r.name} - ${s.label}"`,exo__Asset_createdAt:e,exo__Instance_class:Bh.AssetClass.WORKFLOW_TRANSITION,[Un.WorkflowTransitionProperty.WORKFLOW]:`"[[${n}]]"`,[Un.WorkflowTransitionProperty.FROM]:`"[[${s.from}]]"`,[Un.WorkflowTransitionProperty.TO]:`"[[${s.to}]]"`,[Un.WorkflowTransitionProperty.LABEL]:`"${s.label}"`,[Un.WorkflowTransitionProperty.IS_ROLLBACK]:s.isRollback};s.icon&&(c[Un.WorkflowTransitionProperty.ICON]=`"${s.icon}"`),t.push({filename:`${o}.md`,content:BI.MetadataHelpers.buildFileContent(c)})}return t}a(pre,"buildWorkflowAssetContent")});var VI=T(Aa=>{"use strict";var hre=Aa&&Aa.__decorate||function(r,e,t,n){var i=arguments.length,s=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(r,e,t,n);else for(var c=r.length-1;c>=0;c--)(o=r[c])&&(s=(i<3?o(s):i>3?o(e,t,s):o(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},mre=Aa&&Aa.__metadata||function(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)},UI;Object.defineProperty(Aa,"__esModule",{value:!0});Aa.WorkflowResolver=void 0;var gre=ft(),Cc=Le(),In=Ye(),Ct=Rt(),To=El(),s_=vl(),i$=n$(),yre=RI(),bre=yc(),_re=E0(),Sre=Zl(),wre="\0",o_=UI=class{static{a(this,"WorkflowResolver")}constructor(e){this.tripleStore=e,this.cache=new Map,this.ancestryCache=new Map}async resolveForClass(e){let t=`class:${e}`,n=this.cache.get(t);if(n)return n;let s=await this.findDefaultWorkflow(e)??this.getHardcodedFallback(e);return this.cache.set(t,s),s}async resolveForAsset(e,t){let n=await this.tripleStore.match(e,Ct.Namespace.EMS.term("Effort_workflow"),void 0);if(n.length>0){let i=n[0].object;if(i instanceof Cc.IRI){let s=await this.loadWorkflowBySubject(i);if(s)return s}}return this.resolveForClass(t)}async resolveForAssetOrNull(e,t){let n=await this.tripleStore.match(e,Ct.Namespace.EMS.term("Effort_workflow"),void 0);if(n.length>0){let s=n[0].object;if(s instanceof Cc.IRI){let o=await this.loadWorkflowBySubject(s);if(o)return o}}for(let s of t){let o=this.classRefToBuiltInClass(s);if(o!==null)return this.resolveForClass(o)}let i=await this.findBuiltInWorkflowByAncestry(t);return i||null}classRefToBuiltInClass(e){let t=this.normalizeWikilink(e),n=t.includes("|")?(t.split("|").pop()??"").trim():t.trim(),i=new Set([To.AssetClass.TASK,To.AssetClass.PROJECT,To.AssetClass.MEETING]);if(i.has(n))return n;let s=t.match(/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/i);if(s){let o=yre.CLASS_UID_TO_LABEL[s[1].toLowerCase()];if(o&&i.has(o))return o}return null}async findBuiltInWorkflowByAncestry(e){let t=`ancestry:${[...e].sort().join(wre)}`,n=this.ancestryCache.get(t);if(n!==void 0)return n;let i=null;try{i=await this.walkAncestryForBuiltIn(e)}catch(s){Sre.LoggingService.warn(`[WorkflowResolver] subclass-workflow ancestry walk failed for [${e.join(", ")}] \u2014 treating as no workflow: ${s instanceof Error?s.message:String(s)}`),i=null}return this.ancestryCache.set(t,i),i}async walkAncestryForBuiltIn(e){let t=new Set,n=[];for(let s of e){let o=await this.resolveClassFileIRI(s);o&&n.push(o)}let i=0;for(;n.length>0&&i<UI.MAX_HIERARCHY_DEPTH;){let s=[];for(let o of n){if(t.has(o.value))continue;t.add(o.value);let c=await this.tripleStore.match(o,Ct.Namespace.EXO.term("Class_superClass"),void 0);for(let l of c){let u=l.object;if(!(u instanceof Cc.IRI))continue;let f=(0,bre.iriToObsidianName)(u.value);if(f){let p=this.classRefToBuiltInClass(f);if(p!==null)return this.resolveForClass(p)}let d=u.value.startsWith("obsidian://vault/")?u:f?await this.resolveClassFileIRI(f):null;d&&!t.has(d.value)&&s.push(d)}}n=s,i++}return null}async resolveClassFileIRI(e){let t=this.normalizeWikilink(e),n=t.match(/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i);if(n)return this.findSubjectByUID(n[0]);let i=t.includes("|")?(t.split("|").pop()??"").trim():t.trim();if(!i)return null;let s=await this.findUidByLabel(i);return s?this.findSubjectByUID(s):null}async findSubjectByUID(e){if(this.tripleStore.findSubjectsByUUID){let n=await this.tripleStore.findSubjectsByUUID(e);if(n.length>0)return n[0]}let t=await this.tripleStore.match(void 0,Ct.Namespace.EXO.term("Asset_uid"),void 0);for(let n of t)if(n.object instanceof In.Literal&&n.object.value===e)return n.subject;return null}async findUidByLabel(e){return(0,_re.findUidByAssetLabel)(this.tripleStore,e)}invalidateCache(){this.cache.clear(),this.ancestryCache.clear()}async findDefaultWorkflow(e){let t=await this.tripleStore.match(void 0,Ct.Namespace.RDF.term("type"),Ct.Namespace.EMS.term("Workflow"));for(let n of t){let i=n.subject;if(!(!(await this.tripleStore.match(i,Ct.Namespace.EMS.term("Workflow_targetClass"),void 0)).some(u=>{let f=u.object;return f instanceof Cc.IRI?f.value.endsWith(e.replace(/^ems__/,"")):f instanceof In.Literal?this.normalizeWikilink(f.value)===e:!1})||!(await this.tripleStore.match(i,Ct.Namespace.EMS.term("Workflow_isDefault"),void 0)).some(u=>{let f=u.object instanceof In.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,Ct.Namespace.EXO.term("Asset_label"),void 0),n=t.length>0&&t[0].object instanceof In.Literal?t[0].object.value:"Unknown Workflow",i=await this.tripleStore.match(e,Ct.Namespace.EXO.term("Asset_uid"),void 0),s=i.length>0&&i[0].object instanceof In.Literal?i[0].object.value:e.value,o=await this.tripleStore.match(e,Ct.Namespace.EMS.term("Workflow_targetClass"),void 0),c=this.resolveAssetClass(o),l=await this.tripleStore.match(e,Ct.Namespace.EMS.term("Workflow_initialState"),void 0),u=this.resolveEffortStatus(l)??s_.EffortStatus.DRAFT,f=await this.tripleStore.match(e,Ct.Namespace.EMS.term("Workflow_terminalStates"),void 0),d=this.resolveEffortStatuses(f),h=(await this.tripleStore.match(e,Ct.Namespace.EMS.term("Workflow_isDefault"),void 0)).some(b=>{let S=b.object instanceof In.Literal?b.object.value:"";return S==="true"||S==="1"}),g=await this.loadStates(e),m=await this.loadTransitions(e);return g.length===0&&m.length===0?null:{id:s,name:n,targetClass:c,states:g,transitions:m,initialState:u,terminalStates:d.length>0?d:[s_.EffortStatus.DONE,s_.EffortStatus.TRASHED],isDefault:h}}async loadStates(e){let t=await this.tripleStore.match(void 0,Ct.Namespace.RDF.term("type"),Ct.Namespace.EMS.term("WorkflowState")),n=[];for(let i of t){let s=i.subject;if(!(await this.tripleStore.match(s,Ct.Namespace.EMS.term("WorkflowState_workflow"),void 0)).some(_=>this.isSameSubject(_.object,e)))continue;let l=await this.tripleStore.match(s,Ct.Namespace.EMS.term("WorkflowState_status"),void 0),u=this.resolveEffortStatus(l);if(!u)continue;let f=await this.tripleStore.match(s,Ct.Namespace.EMS.term("WorkflowState_order"),void 0),d=f.length>0&&f[0].object instanceof In.Literal&&parseInt(f[0].object.value,10)||0,h=(await this.tripleStore.match(s,Ct.Namespace.EMS.term("WorkflowState_optional"),void 0)).some(_=>{let A=_.object instanceof In.Literal?_.object.value:"";return A==="true"||A==="1"}),m=(await this.tripleStore.match(s,Ct.Namespace.EMS.term("WorkflowState_timestampOnEnter"),void 0)).map(_=>_.object instanceof In.Literal?_.object.value:"").filter(_=>_.length>0),b=await this.tripleStore.match(s,Ct.Namespace.EMS.term("WorkflowState_badgeColor"),void 0),S=b.length>0&&b[0].object instanceof In.Literal?b[0].object.value:void 0;n.push({status:u,order:d,optional:h,timestampOnEnter:m,badgeColor:S})}return n.sort((i,s)=>i.order-s.order)}async loadTransitions(e){let t=await this.tripleStore.match(void 0,Ct.Namespace.RDF.term("type"),Ct.Namespace.EMS.term("WorkflowTransition")),n=[];for(let i of t){let s=i.subject;if(!(await this.tripleStore.match(s,Ct.Namespace.EMS.term("WorkflowTransition_workflow"),void 0)).some(E=>this.isSameSubject(E.object,e)))continue;let l=await this.tripleStore.match(s,Ct.Namespace.EMS.term("WorkflowTransition_from"),void 0),u=this.resolveEffortStatus(l),f=await this.tripleStore.match(s,Ct.Namespace.EMS.term("WorkflowTransition_to"),void 0),d=this.resolveEffortStatus(f);if(!u||!d)continue;let p=await this.tripleStore.match(s,Ct.Namespace.EMS.term("WorkflowTransition_label"),void 0),h=p.length>0&&p[0].object instanceof In.Literal?p[0].object.value:`${u} \u2192 ${d}`,g=await this.tripleStore.match(s,Ct.Namespace.EMS.term("WorkflowTransition_icon"),void 0),m=g.length>0&&g[0].object instanceof In.Literal?g[0].object.value:void 0,S=(await this.tripleStore.match(s,Ct.Namespace.EMS.term("WorkflowTransition_isRollback"),void 0)).some(E=>{let w=E.object instanceof In.Literal?E.object.value:"";return w==="true"||w==="1"}),A=(await this.tripleStore.match(s,Ct.Namespace.EMS.term("WorkflowTransition_postActions"),void 0)).map(E=>this.extractUid(E.object)).filter(E=>E!==null);n.push({from:u,to:d,label:h,icon:m,isRollback:S,postActions:A.length>0?A:void 0})}return n}extractUid(e){let t=/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/i,n=e instanceof Cc.IRI||e instanceof In.Literal?e.value:null;if(n===null)return null;let i=n.match(t);return i?i[1].toLowerCase():null}normalizeWikilink(e){return e.replace(/["'[\]]/g,"").trim()}resolveAssetClass(e){if(e.length===0)return To.AssetClass.TASK;let t=e[0].object;if(t instanceof Cc.IRI){let i=`ems__${t.value.split("#").pop()??""}`;return Object.values(To.AssetClass).includes(i)?i:To.AssetClass.TASK}if(t instanceof In.Literal){let n=this.normalizeWikilink(t.value);return Object.values(To.AssetClass).includes(n)?n:To.AssetClass.TASK}return To.AssetClass.TASK}resolveEffortStatus(e){if(e.length===0)return null;let t=e[0].object,n;if(t instanceof Cc.IRI)n=`ems__${t.value.split("#").pop()??""}`;else if(t instanceof In.Literal)n=this.normalizeWikilink(t.value);else return null;return Object.values(s_.EffortStatus).includes(n)?n:null}resolveEffortStatuses(e){return e.map(t=>this.resolveEffortStatus([t])).filter(t=>t!==null)}isSameSubject(e,t){if(e instanceof Cc.IRI)return e.value===t.value;if(e instanceof In.Literal){let n=this.normalizeWikilink(e.value);return t.value.includes(n)}return!1}getHardcodedFallback(e){return e===To.AssetClass.PROJECT?{...i$.PROJECT_DEFAULT_WORKFLOW}:{...i$.TASK_DEFAULT_WORKFLOW}}};Aa.WorkflowResolver=o_;o_.MAX_HIERARCHY_DEPTH=16;Aa.WorkflowResolver=o_=UI=hre([(0,gre.injectable)(),mre("design:paramtypes",[Object])],o_)});var zI=T(Oc=>{"use strict";Object.defineProperty(Oc,"__esModule",{value:!0});Oc.TransactionError=Oc.TripleNotFoundError=Oc.TripleAlreadyExistsError=void 0;var GI=class extends Error{static{a(this,"TripleAlreadyExistsError")}constructor(e){super(`Triple already exists: ${e.toString()}`),this.name="TripleAlreadyExistsError"}};Oc.TripleAlreadyExistsError=GI;var qI=class extends Error{static{a(this,"TripleNotFoundError")}constructor(e){super(`Triple not found: ${e.toString()}`),this.name="TripleNotFoundError"}};Oc.TripleNotFoundError=qI;var WI=class extends Error{static{a(this,"TransactionError")}constructor(e){super(e),this.name="TransactionError"}};Oc.TransactionError=WI});var c_=T(a_=>{"use strict";Object.defineProperty(a_,"__esModule",{value:!0});a_.LRUCache=void 0;var KI=class{static{a(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 n=this.cache.keys().next().value;n!==void 0&&this.cache.delete(n)}this.cache.set(e,t)}clear(){this.cache.clear()}size(){return this.cache.size}};a_.LRUCache=KI});var XI=T(u_=>{"use strict";Object.defineProperty(u_,"__esModule",{value:!0});u_.InMemoryTripleStore=void 0;var xc=zI(),l_=Le(),Ere=cr(),vre=Ye(),Tre=Rt(),Are=c_(),Ire=Tre.Namespace.XSD.term("string").value,Rre=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi,Zf="__default__",HI=class r{static{a(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 Are.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 n=this.getNodeKey(e.subject),i=this.getNodeKey(e.predicate),s=this.getNodeKey(e.object);this.addToIndex(this.spo,n,i,s),this.addToIndex(this.sop,n,s,i),this.addToIndex(this.pso,i,n,s),this.addToIndex(this.pos,i,s,n),this.addToIndex(this.osp,s,n,i),this.addToIndex(this.ops,s,i,n),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 n=this.getNodeKey(e.subject),i=this.getNodeKey(e.predicate),s=this.getNodeKey(e.object);return this.removeFromIndex(this.spo,n,i,s),this.removeFromIndex(this.sop,n,s,i),this.removeFromIndex(this.pso,i,n,s),this.removeFromIndex(this.pos,i,s,n),this.removeFromIndex(this.osp,s,n,i),this.removeFromIndex(this.ops,s,i,n),this.queryCache.clear(),!0}async has(e){let t=this.getTripleKey(e);return this.triples.has(t)}async match(e,t,n){let i=this.getMatchCacheKey(e,t,n),s=this.queryCache.get(i);if(s!==void 0)return s;let o;return!e&&!t&&!n?o=Array.from(this.triples.values()):e&&t&&n?o=this.matchSPO(e,t,n):e&&t?o=this.matchSP(e,t):e&&n?o=this.matchSO(e,n):t&&n?o=this.matchPO(t,n):e?o=this.matchS(e):t?o=this.matchP(t):n?o=this.matchO(n):o=[],this.queryCache.set(i,o),o}async addAll(e){for(let t of e)await this.add(t)}async removeAll(e){let t=0;for(let n of e)await this.remove(n)&&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 YI(this)}async findSubjectsByUUID(e){return this.findSubjectsByUUIDSync(e)}findSubjectsByUUIDSync(e){let t=e.toLowerCase(),n=this.uuidIndex.get(t);if(!n||n.size===0)return[];let i=[];for(let s of n)this.spo.has(`i:${s}`)&&i.push(new l_.IRI(s));return i}addToUUIDIndex(e){if(!(e instanceof l_.IRI))return;let t=e.value,n=t.match(Rre);if(n)for(let i of n){let s=i.toLowerCase();this.uuidIndex.has(s)||this.uuidIndex.set(s,new Set),this.uuidIndex.get(s).add(t)}}matchSPO(e,t,n){let i=this.getNodeKey(e),s=this.getNodeKey(t),o=this.getNodeKey(n),c=this.spo.get(i);if(!c)return[];let l=c.get(s);if(!l)return[];if(l.has(o)){let u=this.buildTripleKey(i,s,o),f=this.triples.get(u);return f?[f]:[]}return[]}matchSP(e,t){let n=this.getNodeKey(e),i=this.getNodeKey(t),s=this.spo.get(n);if(!s)return[];let o=s.get(i);return o?this.getTriplesByKeys(Array.from(o).map(c=>this.buildTripleKey(n,i,c))):[]}matchSO(e,t){let n=this.getNodeKey(e),i=this.getNodeKey(t),s=this.sop.get(n);if(!s)return[];let o=s.get(i);return o?this.getTriplesByKeys(Array.from(o).map(c=>this.buildTripleKey(n,c,i))):[]}matchPO(e,t){let n=this.getNodeKey(e),i=this.getNodeKey(t),s=this.pos.get(n);if(!s)return[];let o=s.get(i);return o?this.getTriplesByKeys(Array.from(o).map(c=>this.buildTripleKey(c,n,i))):[]}matchS(e){let t=this.getNodeKey(e),n=this.spo.get(t);if(!n)return[];let i=[];for(let[s,o]of n.entries())for(let c of o)i.push(this.buildTripleKey(t,s,c));return this.getTriplesByKeys(i)}matchP(e){let t=this.getNodeKey(e),n=this.pso.get(t);if(!n)return[];let i=[];for(let[s,o]of n.entries())for(let c of o)i.push(this.buildTripleKey(s,t,c));return this.getTriplesByKeys(i)}matchO(e){let t=this.getNodeKey(e),n=this.osp.get(t);if(!n)return[];let i=[];for(let[s,o]of n.entries())for(let c of o)i.push(this.buildTripleKey(s,c,t));return this.getTriplesByKeys(i)}getTriplesByKeys(e){let t=[];for(let n of e){let i=this.triples.get(n);i&&t.push(i)}return t}addToIndex(e,t,n,i){e.has(t)||e.set(t,new Map);let s=e.get(t);s.has(n)||s.set(n,new Set),s.get(n).add(i)}removeFromIndex(e,t,n,i){let s=e.get(t);if(!s)return;let o=s.get(n);o&&(o.delete(i),o.size===0&&s.delete(n),s.size===0&&e.delete(t))}getTripleKey(e){let t=this.getNodeKey(e.subject),n=this.getNodeKey(e.predicate),i=this.getNodeKey(e.object);return this.buildTripleKey(t,n,i)}buildTripleKey(e,t,n){return`${e}|${t}|${n}`}getNodeKey(e){if(e instanceof l_.IRI)return`i:${e.value}`;if(e instanceof Ere.BlankNode)return`b:${e.id}`;if(e instanceof vre.Literal){let t=`l:${e.value}`;return e.datatype&&e.datatype.value!==Ire?t+=`^^${e.datatype.value}`:e.language&&(t+=`@${e.language}`),t}return""}getMatchCacheKey(e,t,n){let i=e?this.getNodeKey(e):"?",s=t?this.getNodeKey(t):"?",o=n?this.getNodeKey(n):"?";return`${i}|${s}|${o}`}getGraphKey(e){return e?e.value:Zf}getOrCreateGraphStore(e){let t=this.getGraphKey(e);return t===Zf?this:(this.namedGraphs.has(t)||this.namedGraphs.set(t,new r),this.namedGraphs.get(t))}async addToGraph(e,t){await this.getOrCreateGraphStore(t).add(e)}async removeFromGraph(e,t){let n=this.getGraphKey(t);if(n===Zf)return this.remove(e);let i=this.namedGraphs.get(n);return i?i.remove(e):!1}async matchInGraph(e,t,n,i){let s=this.getGraphKey(i);if(s===Zf)return this.match(e,t,n);let o=this.namedGraphs.get(s);return o?o.match(e,t,n):[]}async getNamedGraphs(){return Array.from(this.namedGraphs.keys()).map(e=>new l_.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===Zf){await this.clear();return}let n=this.namedGraphs.get(t);n&&(await n.clear(),this.namedGraphs.delete(t))}async countInGraph(e){let t=this.getGraphKey(e);if(t===Zf)return this.count();let n=this.namedGraphs.get(t);return n?n.count():0}};u_.InMemoryTripleStore=HI;var YI=class{static{a(this,"InMemoryTransaction")}constructor(e){this.store=e,this.operations=[],this.committed=!1,this.rolledBack=!1}async add(e){if(this.committed)throw new xc.TransactionError("Transaction already committed");if(this.rolledBack)throw new xc.TransactionError("Transaction already rolled back");this.operations.push({type:"add",triple:e})}async remove(e){if(this.committed)throw new xc.TransactionError("Transaction already committed");if(this.rolledBack)throw new xc.TransactionError("Transaction already rolled back");return this.operations.push({type:"remove",triple:e}),!0}async commit(){if(this.committed)throw new xc.TransactionError("Transaction already committed");if(this.rolledBack)throw new xc.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 xc.TransactionError("Transaction already committed");if(this.rolledBack)throw new xc.TransactionError("Transaction already rolled back");this.operations=[],this.rolledBack=!0}}});var d_=T(Ia=>{"use strict";var Cre=Ia&&Ia.__decorate||function(r,e,t,n){var i=arguments.length,s=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(r,e,t,n);else for(var c=r.length-1;c>=0;c--)(o=r[c])&&(s=(i<3?o(s):i>3?o(e,t,s):o(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},Ore=Ia&&Ia.__metadata||function(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)};Object.defineProperty(Ia,"__esModule",{value:!0});Ia.EffortStatusWorkflow=void 0;var xre=ft(),f_=ky(),Pre=jh(),Fre=VI(),Dre=XI(),QI=class{static{a(this,"EffortStatusWorkflow")}constructor(){this.resolver=new Fre.WorkflowResolver(new Dre.InMemoryTripleStore)}setResolver(e){this.resolver=e}getPreviousStatus(e,t){let n=this.normalizeStatus(e),i=this.resolveDefinition(t),s=new Pre.WorkflowEngine(i);if(s.isInitialState(n))return null;let o=s.getPreviousStatus(n);if(o!==null)return this.wrapStatus(o)}normalizeStatus(e){return e.replace(/["'[\]]/g,"").trim()}wrapStatus(e){return`"[[${e}]]"`}resolveDefinition(e){return this.hasInstanceClass(e,f_.AssetClass.TASK)||this.hasInstanceClass(e,f_.AssetClass.MEETING)?this.resolver.getHardcodedFallback(f_.AssetClass.TASK):this.resolver.getHardcodedFallback(f_.AssetClass.PROJECT)}hasInstanceClass(e,t){return e?(Array.isArray(e)?e:[e]).some(i=>i.replace(/["'[\]]/g,"").trim()===t):!1}};Ia.EffortStatusWorkflow=QI;Ia.EffortStatusWorkflow=QI=Cre([(0,xre.injectable)(),Ore("design:paramtypes",[])],QI)});var p_=T(Cs=>{"use strict";var Lre=Cs&&Cs.__decorate||function(r,e,t,n){var i=arguments.length,s=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(r,e,t,n);else for(var c=r.length-1;c>=0;c--)(o=r[c])&&(s=(i<3?o(s):i>3?o(e,t,s):o(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},Nre=Cs&&Cs.__metadata||function(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)},kre=Cs&&Cs.__param||function(r,e){return function(t,n){e(t,n,r)}};Object.defineProperty(Cs,"__esModule",{value:!0});Cs.StatusTimestampService=void 0;var s$=ft(),Mre=Ql(),ed=Eo(),$re=xi(),JI=class{static{a(this,"StatusTimestampService")}constructor(e){this.vault=e,this.frontmatterService=new Mre.FrontmatterService}async addStartTimestamp(e){let t=await this.vault.read(e),n=ed.DateFormatter.toLocalTimestamp(new Date),i=this.frontmatterService.updateProperty(t,"ems__Effort_startTimestamp",n);await this.vault.modify(e,i)}async addEndTimestamp(e,t){let n=await this.vault.read(e),i=t||new Date,s=ed.DateFormatter.toLocalTimestamp(i),o=this.frontmatterService.updateProperty(n,"ems__Effort_endTimestamp",s);await this.vault.modify(e,o)}async addResolutionTimestamp(e){let t=await this.vault.read(e),n=ed.DateFormatter.toLocalTimestamp(new Date),i=this.frontmatterService.updateProperty(t,"ems__Effort_resolutionTimestamp",n);await this.vault.modify(e,i)}async addReviewTimestamp(e){let t=await this.vault.read(e),n=ed.DateFormatter.toLocalTimestamp(new Date),i=this.frontmatterService.updateProperty(t,"ems__Effort_lastReviewTimestamp",n);await this.vault.modify(e,i)}async addEndAndResolutionTimestamps(e,t){let n=await this.vault.read(e),i=t||new Date,s=ed.DateFormatter.toLocalTimestamp(i),o=this.frontmatterService.updateProperty(n,"ems__Effort_endTimestamp",s);o=this.frontmatterService.updateProperty(o,"ems__Effort_resolutionTimestamp",s),await this.vault.modify(e,o)}async removeStartTimestamp(e){let t=await this.vault.read(e),n=this.frontmatterService.removeProperty(t,"ems__Effort_startTimestamp");await this.vault.modify(e,n)}async removeEndTimestamp(e){let t=await this.vault.read(e),n=this.frontmatterService.removeProperty(t,"ems__Effort_endTimestamp");await this.vault.modify(e,n)}async removeResolutionTimestamp(e){let t=await this.vault.read(e),n=this.frontmatterService.removeProperty(t,"ems__Effort_resolutionTimestamp");await this.vault.modify(e,n)}async removeEndAndResolutionTimestamps(e){let t=await this.vault.read(e),n=this.frontmatterService.removeProperty(t,"ems__Effort_endTimestamp");n=this.frontmatterService.removeProperty(n,"ems__Effort_resolutionTimestamp"),await this.vault.modify(e,n)}async shiftPlannedEndTimestamp(e,t){let n=await this.vault.read(e),i=this.frontmatterService.parse(n);if(!i.exists)return;let s=this.frontmatterService.getPropertyValue(i.content,"ems__Effort_plannedEndTimestamp");if(!s)return;let o=new Date(s.replace(/["']/g,""));if(isNaN(o.getTime()))return;let c=new Date(o.getTime()+t),l=ed.DateFormatter.toLocalTimestamp(c),u=this.frontmatterService.updateProperty(n,"ems__Effort_plannedEndTimestamp",l);await this.vault.modify(e,u)}};Cs.StatusTimestampService=JI;Cs.StatusTimestampService=JI=Lre([(0,s$.injectable)(),kre(0,(0,s$.inject)($re.DI_TOKENS.IVaultAdapter)),Nre("design:paramtypes",[Object])],JI)});var eR=T(Os=>{"use strict";var jre=Os&&Os.__decorate||function(r,e,t,n){var i=arguments.length,s=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(r,e,t,n);else for(var c=r.length-1;c>=0;c--)(o=r[c])&&(s=(i<3?o(s):i>3?o(e,t,s):o(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},Bre=Os&&Os.__metadata||function(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)},Ure=Os&&Os.__param||function(r,e){return function(t,n){e(t,n,r)}};Object.defineProperty(Os,"__esModule",{value:!0});Os.TaskStatusService=void 0;var o$=ft(),Vre=Ql(),Gre=Eo(),qre=d_(),Wre=p_(),zre=xi(),ZI=class{static{a(this,"TaskStatusService")}constructor(e,t,n){this.vault=e,this.timestampService=n,this.frontmatterService=new Vre.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),n=new Date;n.setHours(19,0,0,0);let i=Gre.DateFormatter.toLocalTimestamp(n),s=this.frontmatterService.updateProperty(t,"ems__Effort_plannedStartTimestamp",i);await this.vault.modify(e,s)}};Os.TaskStatusService=ZI;Os.TaskStatusService=ZI=jre([(0,o$.injectable)(),Ure(0,(0,o$.inject)(zre.DI_TOKENS.IVaultAdapter)),Bre("design:paramtypes",[Object,qre.EffortStatusWorkflow,Wre.StatusTimestampService])],ZI)});var rR=T(xs=>{"use strict";var Kre=xs&&xs.__decorate||function(r,e,t,n){var i=arguments.length,s=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(r,e,t,n);else for(var c=r.length-1;c>=0;c--)(o=r[c])&&(s=(i<3?o(s):i>3?o(e,t,s):o(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},Hre=xs&&xs.__metadata||function(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)},Yre=xs&&xs.__param||function(r,e){return function(t,n){e(t,n,r)}};Object.defineProperty(xs,"__esModule",{value:!0});xs.AreaHierarchyBuilder=void 0;var a$=ft(),c$=ky(),Xre=xi(),h_=mo(),Qre=Rc(),tR=class{static{a(this,"AreaHierarchyBuilder")}constructor(e){this.vault=e}buildHierarchy(e,t){let n=this.vault.getAbstractFileByPath(e);if(!this.isFile(n))return null;let i=this.vault.getFrontmatter(n)||{};if(this.extractInstanceClass(i)!==c$.AssetClass.AREA)return null;let o=this.collectAllAreasFromVault(),c=new Set;return this.buildTree(e,o,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)?h_.WikiLinkHelpers.normalize(String(t[0]||"")):h_.WikiLinkHelpers.normalize(String(t))}collectAllAreasFromVault(){let e=new Map,t=new Map,n=this.vault.getAllFiles();for(let i of n){let s=this.vault.getFrontmatter(i)||{};if(this.extractInstanceClass(s)===c$.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 n=t[0]||"";return h_.WikiLinkHelpers.normalize(String(n))}return h_.WikiLinkHelpers.normalize(String(t))}isArchived(e){return Qre.MetadataHelpers.isAssetArchived(e)}buildTree(e,t,n,i){if(n.has(e))return null;n.add(e);let s=t.get(e);if(!s)return null;let o=[];for(let[c,l]of t.entries())if(l.parentPath===e){let u=this.buildTree(c,t,n,i+1);u&&o.push(u)}return o.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:o}}};xs.AreaHierarchyBuilder=tR;xs.AreaHierarchyBuilder=tR=Kre([(0,a$.injectable)(),Yre(0,(0,a$.inject)(Xre.DI_TOKENS.IVaultAdapter)),Hre("design:paramtypes",[Object])],tR)});var m_=T(Ps=>{"use strict";var Jre=Ps&&Ps.__decorate||function(r,e,t,n){var i=arguments.length,s=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(r,e,t,n);else for(var c=r.length-1;c>=0;c--)(o=r[c])&&(s=(i<3?o(s):i>3?o(e,t,s):o(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},Zre=Ps&&Ps.__metadata||function(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)},ene=Ps&&Ps.__param||function(r,e){return function(t,n){e(t,n,r)}};Object.defineProperty(Ps,"__esModule",{value:!0});Ps.FolderRepairService=void 0;var l$=ft(),tne=xi(),rne=Jl(),nR=class{static{a(this,"FolderRepairService")}constructor(e){this.vault=e}async getExpectedFolder(e,t){return this.getExpectedFolderSync(e,t)}getExpectedFolderSync(e,t){let n=t?.exo__Asset_isDefinedBy;if(!n)return null;let i=(0,rne.extractAssetReference)(n);if(!i)return null;let s=this.vault.getFirstLinkpathDest(i,e.path);return s?this.getFileFolder(s):null}async repairFolder(e,t){let n=t?`${t}/${e.name}`:e.name;if(this.vault.getAbstractFileByPath(n))throw new Error(`Cannot move file: ${n} already exists`);await this.ensureFolderExists(t),await this.vault.rename(e,n)}getFileFolder(e){return e.parent?.path||""}async ensureFolderExists(e){if(!e)return;let t=this.vault.getAbstractFileByPath(e);if(!(t&&"children"in t))try{await this.vault.createFolder(e)}catch(n){if(n instanceof Error&&n.message.includes("Folder already exists"))return;throw n}}};Ps.FolderRepairService=nR;Ps.FolderRepairService=nR=Jre([(0,l$.injectable)(),ene(0,(0,l$.inject)(tne.DI_TOKENS.IVaultAdapter)),Zre("design:paramtypes",[Object])],nR)});var aR=T(Fs=>{"use strict";var nne=Fs&&Fs.__decorate||function(r,e,t,n){var i=arguments.length,s=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(r,e,t,n);else for(var c=r.length-1;c>=0;c--)(o=r[c])&&(s=(i<3?o(s):i>3?o(e,t,s):o(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},ine=Fs&&Fs.__metadata||function(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)},u$=Fs&&Fs.__param||function(r,e){return function(t,n){e(t,n,r)}},sR;Object.defineProperty(Fs,"__esModule",{value:!0});Fs.ClassCreationService=void 0;var iR=ft(),sne=ef(),one=Eo(),ane=Rc(),cne=m_(),f$=xi(),oR=sR=class{static{a(this,"ClassCreationService")}constructor(e,t){this.vault=e,this.folderRepair=t}async createSubclass(e,t,n){let i=(0,sne.v4)(),s=this.generateClassFrontmatter(e.basename,t,i,n),o=ane.MetadataHelpers.buildFileContent(s),c=`${i}.md`,u=this.folderRepair.getExpectedFolderSync(e,s)??sR.parentFolderOf(e.path),f=u?`${u}/${c}`:c;return u&&(this.vault.getAbstractFileByPath(u)||await this.vault.createFolder(u)),await this.vault.create(f,o)}static parentFolderOf(e){if(!e)return"";let t=e.replace(/^\/+/,""),n=t.lastIndexOf("/");return n>=0?t.slice(0,n):""}generateClassFrontmatter(e,t,n,i){let s=new Date,o=one.DateFormatter.toLocalTimestamp(s),c={};c.exo__Asset_uid=n,c.exo__Asset_label=t,c.exo__Asset_createdAt=o,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}};Fs.ClassCreationService=oR;Fs.ClassCreationService=oR=sR=nne([(0,iR.injectable)(),u$(0,(0,iR.inject)(f$.DI_TOKENS.IVaultAdapter)),u$(1,(0,iR.inject)(f$.DI_TOKENS.FolderRepairService)),ine("design:paramtypes",[Object,cne.FolderRepairService])],oR)});var d$=T(Ca=>{"use strict";var lne=Ca&&Ca.__decorate||function(r,e,t,n){var i=arguments.length,s=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(r,e,t,n);else for(var c=r.length-1;c>=0;c--)(o=r[c])&&(s=(i<3?o(s):i>3?o(e,t,s):o(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},une=Ca&&Ca.__metadata||function(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)};Object.defineProperty(Ca,"__esModule",{value:!0});Ca.InstantiationRuleResolver=void 0;var fne=ft(),cR=Le(),td=Ye(),Ra=Rt(),lR=class{static{a(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 n=await this.findRuleForClass(e);return this.cache.set(e,n),n}invalidateCache(){this.cache.clear()}async findRuleForClass(e){let t=await this.tripleStore.match(void 0,Ra.Namespace.RDF.term("type"),Ra.Namespace.EXO.term("InstantiationRule"));for(let n of t){let i=n.subject;if((await this.tripleStore.match(i,Ra.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,Ra.Namespace.EXO.term("rule_prototypeUID"),void 0),n=t.length>0&&t[0].object instanceof td.Literal?t[0].object.value:null,i=await this.tripleStore.match(e,Ra.Namespace.EXO.term("rule_defaultFolder"),void 0),s=i.length>0&&i[0].object instanceof td.Literal?i[0].object.value:null,o=await this.tripleStore.match(e,Ra.Namespace.EXO.term("rule_propertySetRules"),void 0),c=[];for(let l of o){let u=l.object;if(!(u instanceof cR.IRI))continue;let f=await this.loadPropertySetRule(u);f&&c.push(f)}return{prototypeUID:n,defaultFolder:s,propertySetRules:c}}async loadPropertySetRule(e){let t=await this.tripleStore.match(e,Ra.Namespace.EXO.term("rule_property"),void 0);if(t.length===0)return null;let n=t[0].object,i=n instanceof cR.IRI?this.extractLocalName(n):n instanceof td.Literal?this.normalizeWikilink(n.value):null;if(!i)return null;let s=await this.tripleStore.match(e,Ra.Namespace.EXO.term("rule_value"),void 0),o=s.length>0&&s[0].object instanceof td.Literal?s[0].object.value:"",c=await this.tripleStore.match(e,Ra.Namespace.EXO.term("rule_valueType"),void 0),l=c.length>0&&c[0].object instanceof td.Literal?c[0].object.value:"literal";return{property:i,value:o,valueType:l}}matchesTargetClass(e,t){return e instanceof cR.IRI?this.extractLocalName(e)===t:e instanceof td.Literal?this.normalizeWikilink(e.value)===t:!1}extractLocalName(e){let t=e.value,n=t.lastIndexOf("#");if(n>=0){let s=t.substring(n+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()}};Ca.InstantiationRuleResolver=lR;Ca.InstantiationRuleResolver=lR=lne([(0,fne.injectable)(),une("design:paramtypes",[Object])],lR)});var p$=T(Oa=>{"use strict";var dne=Oa&&Oa.__decorate||function(r,e,t,n){var i=arguments.length,s=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(r,e,t,n);else for(var c=r.length-1;c>=0;c--)(o=r[c])&&(s=(i<3?o(s):i>3?o(e,t,s):o(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},pne=Oa&&Oa.__metadata||function(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)};Object.defineProperty(Oa,"__esModule",{value:!0});Oa.VisibilityGenerator=void 0;var hne=ft(),mne=jh(),uR=class{static{a(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(),n=e.to.replace("ems__EffortStatus","").toLowerCase();return{commandId:`workflow-${t}-to-${n}`,label:e.label,icon:e.icon,targetStatus:e.to,isRollback:e.isRollback}}};Oa.VisibilityGenerator=uR;Oa.VisibilityGenerator=uR=dne([(0,hne.injectable)(),pne("design:paramtypes",[mne.WorkflowEngine])],uR)});var h$=T(xa=>{"use strict";var gne=xa&&xa.__decorate||function(r,e,t,n){var i=arguments.length,s=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(r,e,t,n);else for(var c=r.length-1;c>=0;c--)(o=r[c])&&(s=(i<3?o(s):i>3?o(e,t,s):o(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},yne=xa&&xa.__metadata||function(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)};Object.defineProperty(xa,"__esModule",{value:!0});xa.WorkflowCommandAdapter=void 0;var bne=ft(),fR=dc(),_ne=jh(),dR=class{static{a(this,"WorkflowCommandAdapter")}constructor(e){this.workflow=e,this.engine=new _ne.WorkflowEngine(e)}adaptTransitions(e){return this.engine.getAllTransitions(e).map(n=>this.transitionToCommand(n))}adaptForwardTransitions(e){return this.engine.getAvailableTransitions(e).map(n=>this.transitionToCommand(n))}adaptRollbackTransitions(e){return this.engine.getRollbackTransitions(e).map(n=>this.transitionToCommand(n))}getEngine(){return this.engine}getWorkflow(){return this.workflow}transitionToCommand(e){let t=this.generateCommandId(e),n=this.buildPrecondition(e),i=this.buildGrounding(e),s=e.isRollback?"rollback":"workflow";return{id:t,name:e.label,icon:e.icon,precondition:n,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),n=this.shortStatus(e.to);return`workflow-${t}-to-${n}`}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:fR.GroundingType.PROPERTY_SET,targetProperty:"ems__Effort_status",targetValueRef:e.to});let n=this.engine.getTimestampsForStatus(e.to);for(let i of n)t.push({id:`gnd-ts-${i}`,label:`Set ${i}`,type:fR.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:fR.GroundingType.COMPOSITE,steps:t}}shortStatus(e){return e.replace("ems__EffortStatus","").toLowerCase()}};xa.WorkflowCommandAdapter=dR;xa.WorkflowCommandAdapter=dR=gne([(0,bne.injectable)(),yne("design:paramtypes",[Object])],dR)});var mR=T(Ds=>{"use strict";var Sne=Ds&&Ds.__decorate||function(r,e,t,n){var i=arguments.length,s=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(r,e,t,n);else for(var c=r.length-1;c>=0;c--)(o=r[c])&&(s=(i<3?o(s):i>3?o(e,t,s):o(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},wne=Ds&&Ds.__metadata||function(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)},m$=Ds&&Ds.__param||function(r,e){return function(t,n){e(t,n,r)}};Object.defineProperty(Ds,"__esModule",{value:!0});Ds.PropertyCleanupService=void 0;var pR=ft(),g$=xi(),Ene=lh(),hR=class{static{a(this,"PropertyCleanupService")}constructor(e,t=Ene.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),n=this.removeEmptyPropertiesFromContent(t);await this.vault.modify(e,n),this.logger.info("Empty properties cleaned",{path:e.path})}removeEmptyPropertiesFromContent(e){let t=/^---\n([\s\S]*?)\n---/,n=e.match(t);if(!n)return e;let s=n[1].split(`
155
155
  `),o=[],c=0;for(;c<s.length;){let u=s[c],f=u.trim();if(f===""){o.push(u),c++;continue}let d=f.match(/^([^:]+):\s*(.*)$/);if(d){let p=d[2];if(p===""&&c+1<s.length&&s[c+1].match(/^\s+- /)){let g=[],m=c+1;for(;m<s.length&&s[m].match(/^\s+- /);)g.push(s[m]),m++;if(g.every(S=>{let _=S.replace(/^\s+- /,"").trim();return this.isEmptyValue(_)})){c=m;continue}else{o.push(u);for(let S=c+1;S<m;S++)o.push(s[S]);c=m;continue}}if(this.isEmptyValue(p)){c++;continue}o.push(u),c++}else f.match(/^\s*- /)||o.push(u),c++}let l=o.join(`
156
- `);return e.replace(t,`---
156
+ `);return e.replace(t,()=>`---
157
157
  ${l}
158
158
  ---`)}isEmptyValue(e){let t=e.trim();return t===""||t==="null"||t==="undefined"||t==="[]"||t==="{}"||t==='""'||t==="''"}};Ds.PropertyCleanupService=hR;Ds.PropertyCleanupService=hR=Sne([(0,pR.injectable)(),m$(0,(0,pR.inject)(g$.DI_TOKENS.IVaultAdapter)),m$(1,(0,pR.inject)(g$.DI_TOKENS.ILogger)),wne("design:paramtypes",[Object,Object])],hR)});var yR=T(Rn=>{"use strict";var vne=Rn&&Rn.__createBinding||(Object.create?(function(r,e,t,n){n===void 0&&(n=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:a(function(){return e[t]},"get")}),Object.defineProperty(r,n,i)}):(function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]})),Tne=Rn&&Rn.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),Ane=Rn&&Rn.__decorate||function(r,e,t,n){var i=arguments.length,s=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(r,e,t,n);else for(var c=r.length-1;c>=0;c--)(o=r[c])&&(s=(i<3?o(s):i>3?o(e,t,s):o(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},Ine=Rn&&Rn.__importStar||(function(){var r=a(function(e){return r=Object.getOwnPropertyNames||function(t){var n=[];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(n[n.length]=i);return n},r(e)},"ownKeys");return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n=r(e),i=0;i<n.length;i++)n[i]!=="default"&&vne(t,e,n[i]);return Tne(t,e),t}})(),Rne=Rn&&Rn.__metadata||function(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)},Cne=Rn&&Rn.__param||function(r,e){return function(t,n){e(t,n,r)}};Object.defineProperty(Rn,"__esModule",{value:!0});Rn.RenameToUidService=void 0;var y$=ft(),b$=Ine(g0()),One=xi(),xne=Rc(),Uh=gc(),gR=class{static{a(this,"RenameToUidService")}constructor(e){this.vault=e}async renameToUid(e,t){let n=t.exo__Asset_uid;if(!n||typeof n!="string")throw new Error("Asset has no exo__Asset_uid property");let i=e.basename,s=n;if(i===s)throw new Error("File is already named according to UID");let o=t.exo__Asset_label,c=!o||o.trim()==="",l=!this.isAssetArchived(t);(c||l)&&await this.updateFrontmatter(e,i,{setLabel:c,appendAlias:l});let u=e.parent?.path||"",f=u?`${u}/${s}.md`:`${s}.md`;await this.vault.updateLinks(e.path,f,i),await this.vault.rename(e,f)}async updateFrontmatter(e,t,n){await this.vault.process(e,i=>{let s=/^---\n([\s\S]*?)\n---/,o=i.match(s);if(!o)return i;let c=o[1];return n.setLabel&&(c=`${c}
159
159
  exo__Asset_label: ${this.yamlScalar(t)}`),n.appendAlias&&(c=this.updateAliases(c,t)),i.replace(s,()=>`---
@@ -711,7 +711,7 @@ Next steps:
711
711
  `).map(n=>n.trim()).filter(n=>n.length>0),t=e[e.length-1];if(t!==void 0)try{return JSON.parse(t)}catch{return}}a(Mve,"parseLastJsonLine");function hq(r,e){return e.filter(t=>{let n=r[t];return typeof n!="string"||n.trim().length===0})}a(hq,"missingStringFields");var lv=class{constructor(e){this.deps=e}static{a(this,"McpServer")}async handle(e){if(typeof e!="object"||e===null||Array.isArray(e))return{jsonrpc:"2.0",id:null,error:{code:pq,message:"Invalid request: expected a JSON-RPC object"}};let t=e.id,n=t===void 0;if(typeof e.method!="string")return n?null:{jsonrpc:"2.0",id:t??null,error:{code:pq,message:"Invalid request: missing method"}};if(n)return null;let i=t??null;switch(e.method){case"initialize":return{jsonrpc:"2.0",id:i,result:{protocolVersion:Nve,capabilities:{tools:{}},serverInfo:{name:"exocortex",version:this.deps.version}}};case"ping":return{jsonrpc:"2.0",id:i,result:{}};case"tools/list":return{jsonrpc:"2.0",id:i,result:{tools:dq}};case"tools/call":return{jsonrpc:"2.0",id:i,result:await this.callTool(e.params??{})};default:return{jsonrpc:"2.0",id:i,error:{code:kve,message:`Method not found: ${e.method}`}}}}async callTool(e){let t=e.name,n=e.arguments??{},i;if(t==="create_asset"){let c=hq(n,["vault","class","label"]);if(c.length>0)return Cp(`create_asset: missing required argument(s): ${c.join(", ")}`,!0);let l=lq(n);if(l!==null)return Cp(`create_asset: ${l}`,!0);i=uq(n)}else if(t==="create_effort"){let c=hq(n,["vault","command","target"]);if(c.length>0)return Cp(`create_effort: missing required argument(s): ${c.join(", ")}`,!0);i=fq(n)}else return Cp(`Unknown tool: ${String(t)}`,!0);let s=await this.deps.runCli(i);if(s.exitCode!==0){let c=s.stderr.trim()||s.stdout.trim()||"(no diagnostic output)";return Cp(`exocortex-cli exited ${s.exitCode}
712
712
  ${c}`,!0)}let o=Mve(s.stdout);return Cp(o===void 0?s.stdout.trim():JSON.stringify(o))}};var yq=require("child_process");var $ve=32*1024*1024;function bq(r){return e=>new Promise(t=>{(0,yq.execFile)(process.execPath,[r,...e],{maxBuffer:$ve},(n,i,s)=>{let o=0;if(n){let c=n.code;o=typeof c=="number"?c:1}t({stdout:i,stderr:s,exitCode:o})})})}a(bq,"createSelfCliRunner");async function jve(r,e,t){let n=(0,_q.createInterface)({input:e,crlfDelay:1/0});for await(let i of n){let s=i.trim();if(s.length===0)continue;let o;try{o=JSON.parse(s)}catch{t(JSON.stringify({jsonrpc:"2.0",id:null,error:{code:mq,message:"Parse error: invalid JSON"}})+`
713
713
  `);continue}let c;try{c=await r.handle(o)}catch(l){c={jsonrpc:"2.0",id:typeof o?.id=="string"||typeof o?.id=="number"?o.id:null,error:{code:gq,message:`Internal error: ${l instanceof Error?l.message:String(l)}`}}}c!==null&&t(JSON.stringify(c)+`
714
- `)}}a(jve,"runStdioServer");function Sq(r){return new de("mcp").description("Run an MCP (Model Context Protocol) stdio server exposing create_asset / create_effort tools backed by this CLI").option("--entry <path>","Path to the CLI entry script the tools invoke (defaults to this process's script)").action(async e=>{let t=e.entry??process.argv[1],n=new lv({runCli:bq(t),version:r??"unknown"});await jve(n,process.stdin,i=>process.stdout.write(i))})}a(Sq,"mcpCommand");function uv(r){let e=new de;return e.name("exocortex").description("CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more").version(r??"17.8.0"),e.addCommand(VV()),e.addCommand(JV()),e.addCommand(T7()),e.addCommand(C7()),e.addCommand(Y7()),e.addCommand(O7()),e.addCommand(L7()),e.addCommand(N7()),e.addCommand(nV()),e.addCommand(cV()),e.addCommand(IV()),e.addCommand(PV()),e.addCommand(NV()),e.addCommand(kV()),e.addCommand(MV()),e.addCommand($V()),e.addCommand(jV()),e.addCommand(EG()),e.addCommand(AG()),e.addCommand(QG()),e.addCommand(ZG()),e.addCommand(rq()),e.addCommand(nq()),e.addCommand(oq()),e.addCommand(BG()),e.addCommand(HG()),e.addCommand(aq()),e.addCommand(Sq(r??"17.8.0")),e}a(uv,"createProgram");uv().parse();0&&(module.exports={createProgram});
714
+ `)}}a(jve,"runStdioServer");function Sq(r){return new de("mcp").description("Run an MCP (Model Context Protocol) stdio server exposing create_asset / create_effort tools backed by this CLI").option("--entry <path>","Path to the CLI entry script the tools invoke (defaults to this process's script)").action(async e=>{let t=e.entry??process.argv[1],n=new lv({runCli:bq(t),version:r??"unknown"});await jve(n,process.stdin,i=>process.stdout.write(i))})}a(Sq,"mcpCommand");function uv(r){let e=new de;return e.name("exocortex").description("CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more").version(r??"17.8.1"),e.addCommand(VV()),e.addCommand(JV()),e.addCommand(T7()),e.addCommand(C7()),e.addCommand(Y7()),e.addCommand(O7()),e.addCommand(L7()),e.addCommand(N7()),e.addCommand(nV()),e.addCommand(cV()),e.addCommand(IV()),e.addCommand(PV()),e.addCommand(NV()),e.addCommand(kV()),e.addCommand(MV()),e.addCommand($V()),e.addCommand(jV()),e.addCommand(EG()),e.addCommand(AG()),e.addCommand(QG()),e.addCommand(ZG()),e.addCommand(rq()),e.addCommand(nq()),e.addCommand(oq()),e.addCommand(BG()),e.addCommand(HG()),e.addCommand(aq()),e.addCommand(Sq(r??"17.8.1")),e}a(uv,"createProgram");uv().parse();0&&(module.exports={createProgram});
715
715
  /*! Bundled license information:
716
716
 
717
717
  reflect-metadata/Reflect.js:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kitelev/exocortex-cli",
3
- "version": "17.8.0",
3
+ "version": "17.8.1",
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": {