@kitelev/exocortex-cli 17.7.29 → 17.7.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +3 -3
- 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.7.
|
|
2
|
+
// @kitelev/exocortex-cli v17.7.30
|
|
3
3
|
// CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more
|
|
4
4
|
// License: MIT
|
|
5
5
|
|
|
@@ -467,7 +467,7 @@ ${qd(t,{lineWidth:-1,noRefs:!0,quoteStyle:"double"}).trim()}
|
|
|
467
467
|
`));let l=[];for(let f of n){let d=(0,Xa.resolve)(t,f),p=k_e(d,f,c);l.push(...p)}let u={vaultPath:t,filesChecked:n.length,violations:l,healthy:l.length===0};if(e==="json"){let f=mt.success(u);console.log(JSON.stringify(f,null,2))}else if(l.length===0)console.log(`\u2705 All ${n.length} file(s) pass schema validation.`);else{let f=new Map;for(let d of l){let p=f.get(d.file)||[];p.push(d),f.set(d.file,p)}console.log(`\u26A0\uFE0F Found ${l.length} schema violation(s) in ${f.size} file(s):
|
|
468
468
|
`);for(let[d,p]of f){console.log(` \u274C ${d}`);for(let h of p)console.log(` \u2022 ${h.reason}`)}console.log(`
|
|
469
469
|
\u{1F4DD} To fix these issues:`),console.log(" - Remove undeclared properties from frontmatter"),console.log(" - Or declare them in the ontology as Property instances")}l.length>0&&(process.exitCode=1)}catch(t){le.handle(t)}})}var qo,Xa,D7,lt,C_e,jP,x_e,M_e,$_e,j_e,$P,V_e,q_e,z_e,K_e,H_e,Y_e,X_e,Q_e,GP=$e(()=>{"use strict";ut();qo=require("fs"),Xa=require("path"),D7=require("child_process");Gm();lt=Q(Pe());_t();F7();Nt();Ir();Ha();lE();vu();C_e=new Set(["aliases","archived","tags","cssclasses","publish","permalink","description","image","cover","banner","title","share","share_link","share_updated","metadata","uri"]),jP=new Map([["exo__","https://exocortex.my/ontology/exo#"],["ems__","https://exocortex.my/ontology/ems#"],["exocmd__","https://exocortex.my/ontology/exocmd#"],["ims__","https://exocortex.my/ontology/ims#"],["exoql__","https://exocortex.my/ontology/exoql#"],["query__","https://exocortex.my/ontology/query#"],["ztlk__","https://exocortex.my/ontology/ztlk#"],["ptms__","https://exocortex.my/ontology/ptms#"],["lit__","https://exocortex.my/ontology/lit#"],["inbox__","https://exocortex.my/ontology/inbox#"],["place__","https://exocortex.my/ontology/place#"],["pn__","https://exocortex.my/ontology/pn#"],["period__","https://exocortex.my/ontology/period#"],["rdf__","http://www.w3.org/1999/02/22-rdf-syntax-ns#"],["rdfs__","http://www.w3.org/2000/01/rdf-schema#"],["owl__","http://www.w3.org/2002/07/owl#"],["xsd__","http://www.w3.org/2001/XMLSchema#"],["sh__","http://www.w3.org/ns/shacl#"]]);a(O_e,"frontmatterMatchesClass");a(L7,"loadTriplesFromAllVaults");x_e="http://www.w3.org/1999/02/22-rdf-syntax-ns#type";a(N7,"extractFrontmatter");a(k7,"hasKnownPrefix");a(M7,"keyToURI");a(P_e,"classifyKeys");a($7,"getStagedMdFiles");a(F_e,"collectMdFiles");a(D_e,"extractPropertyNameFromURI");a(L_e,"loadDeclaredProperties");a(N_e,"detectUnparseableFrontmatter");a(k_e,"validateFile");M_e="http://www.w3.org/2000/01/rdf-schema#subClassOf",$_e="https://exocortex.my/ontology/exo#Class_superClass",j_e="http://www.w3.org/2000/01/rdf-schema#label";a(j7,"labelToOntologyIRI");a(B_e,"fileIriToOntologyURIFromFilename");a(U_e,"domainToAlgebraTriples");$P=class{constructor(e){this.subClassMap=new Map;this.subClassMemo=new Map;let t=new Map,n=new Set,i=a(o=>o===M_e||o===$_e,"isSubClassPredicate");for(let o of e)o.predicate instanceof lt.DomainIRI&&i(o.predicate.value)&&o.subject instanceof lt.DomainIRI&&o.object instanceof lt.DomainIRI&&(n.add(o.subject.value),n.add(o.object.value));for(let o of e)if(o.predicate instanceof lt.DomainIRI&&o.predicate.value===j_e&&o.subject instanceof lt.DomainIRI&&o.object instanceof lt.DomainLiteral){let c=j7(o.object.value);c&&t.set(o.subject.value,c)}for(let o of n)if(!t.has(o)){let c=B_e(o);c&&t.set(o,c)}for(let[o,c]of t){let l=this.subClassMap.get(o)??new Set;l.add(c),this.subClassMap.set(o,l)}for(let o of e)if(o.predicate instanceof lt.DomainIRI&&i(o.predicate.value)&&o.subject instanceof lt.DomainIRI&&o.object instanceof lt.DomainIRI){let c=o.subject.value,l=o.object.value,u=this.subClassMap.get(c)??new Set;u.add(l),this.subClassMap.set(c,u);let f=t.get(c),d=l.startsWith("obsidian://")?t.get(l):l;if(f&&d){let p=this.subClassMap.get(f)??new Set;p.add(d),this.subClassMap.set(f,p)}}let s=e.filter(o=>o.predicate instanceof lt.DomainIRI&&o.predicate.value===x_e&&o.subject instanceof lt.DomainIRI&&o.object instanceof lt.DomainIRI);for(let o of s){let c=o.subject.value,l=o.object.value,u=this.collectAncestors(l);for(let d of u){if(c===d)continue;let p=this.subClassMap.get(c)??new Set;p.add(d),this.subClassMap.set(c,p)}let f=t.get(c);if(f)for(let d of u){let p=d.startsWith("obsidian://")?t.get(d):d;if(!p||f===p)continue;let h=this.subClassMap.get(f)??new Set;h.add(p),this.subClassMap.set(f,h)}}}static{a(this,"TripleClassHierarchy")}collectAncestors(e){let t=new Set,n=new Set,i=[e];for(;i.length>0;){let s=i.shift();if(n.has(s))continue;n.add(s);let o=this.subClassMap.get(s);if(o)for(let c of o)c!==e&&(t.add(c),n.has(c)||i.push(c))}return t}isSubClassOf(e,t){let n=this.subClassMemo.get(e);if(n){let s=n.get(t);if(s!==void 0)return s}else n=new Map,this.subClassMemo.set(e,n);let i=this.walkIsSubClassOf(e,t);return n.set(t,i),i}walkIsSubClassOf(e,t){let n=new Set,i=[e];for(;i.length>0;){let s=i.shift();if(s===t)return!0;if(n.has(s))continue;n.add(s);let o=this.subClassMap.get(s);if(o)for(let c of o)i.push(c)}return!1}},V_e=new Set(["sh:Warning","sh:Info"]);a(G_e,"earlOutcomeFor");a(B7,"buildEARLReport");q_e="https://exocortex.my/ontology/exo#Asset_legacyValidationException";a(BP,"applyLegacyExceptionFilter");a(UP,"runShapesValidation");a(VP,"filterReportToStagedFocusNodes");a(W_e,"emitEmptyStagedShapesResult");z_e="class target IRI has no path segment under obsidian://vault/",K_e="class target IRI has a path segment under obsidian://vault/",H_e="class target IRI is not under obsidian://vault/ (symbolic term IRI)",Y_e="term-IRI collision (one IRI emitted by several assets)",X_e="unknown property (no registered shape)",Q_e="class constraint with no target recorded (nothing to classify by)";a(J_e,"targetHasPathSegment");a(Z_e,"classifyWarningReason");a(eSe,"summarizeWarningReasons");a(tSe,"runShapesModeAction");a(rSe,"assembleShapesReport");a(U7,"validateSchemaCommand")});var yV={};Hu(yV,{CandidateShaclValidator:()=>rF});function OSe(r){let e=r.match(/^https:\/\/exocortex\.my\/ontology\/([A-Za-z][A-Za-z0-9_]*(?:-[A-Za-z0-9_]+)*)#(.+)$/);return e?`${e[1]}__${e[2]}`:r}function xSe(r){let e=(0,wg.basename)(r);return{path:r,basename:(0,wg.basename)(r,(0,wg.extname)(r)),name:e,parent:null}}function PSe(r){let e=(0,fp.frontmatterBlockBody)(r);return e===null?null:(0,fp.parseYamlFrontmatterTolerant)(e)}var wg,fp,rF,bV=$e(()=>{"use strict";wg=require("path"),fp=Q(Pe());Xs();GP();Ha();rF=class{constructor(e,t={}){this.vaultPath=e;this.options=t}static{a(this,"CandidateShaclValidator")}async validateCandidate(e,t){let n=new Yt(this.vaultPath),i=new fp.NoteToRDFConverter(n),s=xSe(e),o=PSe(t),c=o?i.validateExocortexAsset(o,s.basename):null;if(c)return{violations:[{propertyPath:c.property,propertyIri:c.property,constraint:c.code,message:`${c.message} \u2014 the asset would be SKIPPED by the indexer (no triples emitted), making it invisible to every query, layout and graph relation.`}],warnings:[]};let l=this.options.useCache??!1,u=await mi(this.vaultPath,{useCache:l,cacheManager:this.options.cacheManager,vaultAdapter:n});l&&this.options.log?.(Au(u));let f=u.triples,d;try{d=await i.convertNoteFromFrontmatter(s,o)}catch(_){return{violations:[{propertyPath:e,propertyIri:e,constraint:"indexability",message:`The asset could not be converted to RDF (${_ instanceof Error?_.message:String(_)}) \u2014 the indexer would SKIP it, making it invisible to every query, layout and graph relation.`}],warnings:[]}}let p=[...f,...d],h=await UP(this.vaultPath,p),g=BP(p,h),m=VP(g,new Set([e])),b=[],S=[];for(let _ of m.violations){let A={propertyPath:OSe(_.propertyPath),propertyIri:_.propertyPath,constraint:String(_.constraint),message:_.message,..._.actualValue!==void 0?{actualValue:_.actualValue}:{},..._.expectedRange!==void 0?{expectedRange:_.expectedRange}:{}};_.severity==="sh:Violation"?b.push(A):S.push(A)}return{violations:b,warnings:S}}};a(OSe,"iriToFrontmatterKey");a(xSe,"syntheticFile");a(PSe,"extractFrontmatter")});var jV=T(Dn=>{"use strict";Object.defineProperty(Dn,"__esModule",{value:!0});Dn.createPathBasedTargetResolver=io;Dn.createCreateRelatedTaskService=mwe;Dn.createCreateRelatedProjectService=gwe;Dn.createCreateAssetService=ywe;Dn.createArchiveAssetService=bwe;Dn.createCleanPropertiesService=_we;Dn.createFixMissingLabelService=Swe;Dn.createRenameToUidService=wwe;Dn.createRepairFolderService=vwe;Dn.createPlanForEveningService=Twe;Dn.createUpdatePropertyService=Awe;Dn.createRemovePropertyService=Iwe;Dn.createSetStatusService=Rwe;Dn.createDuplicateAssetService=Cwe;Dn.rewriteFrontmatterScalars=$V;var Pu=Pe();function io(r){return{resolveFile(e){let t=(0,Pu.iriToVaultPath)(e)??e,n=t.endsWith(".md")?t:`${t}.md`,i=r.getAbstractFileByPath(n);if(!i||!("basename"in i))throw new Error(`Cannot resolve target file for IRI: ${e}`);return i}}}a(io,"createPathBasedTargetResolver");var dF=a(()=>null,"NULL_CLASS_RESOLVER");function $E(r){return r.startsWith('"[[')&&r.endsWith(']]"')?r:r.startsWith("[[")&&r.endsWith("]]")?`"${r}"`:`"[[${r}]]"`}a($E,"toQuotedWikilink");function mwe(r,e,t=io(r),n,i=dF){return{async execute(s,o){let c=o?.label;if(!c)throw new Error("createRelatedTask requires userInput.label");let l=t.resolveFile(s),u=r.getFrontmatter(l)??{},f=l.parent?.path||"",d={ems__Effort_status:'"[[c42245d0-01de-4c35-bfcf-d910445ea28e]]"'},p=o?.parentProperty;p&&l.basename&&(d[p]=`"[[${l.basename}]]"`);let h=await e.createAsset({className:"ems__Task",label:c,folderPath:f,propertyValues:d,parentFile:l,parentMetadata:u,classResolver:i});n&&await n(h)}}}a(mwe,"createCreateRelatedTaskService");function gwe(r,e,t=io(r),n,i=dF){return{async execute(s,o){let c=o?.label;if(!c)throw new Error("createRelatedProject requires userInput.label");let l=t.resolveFile(s),u=r.getFrontmatter(l)??{},f=l.parent?.path||"",d={ems__Effort_status:'"[[c42245d0-01de-4c35-bfcf-d910445ea28e]]"'},p=o?.parentProperty;p&&l.basename&&(d[p]=`"[[${l.basename}]]"`);let h=await e.createAsset({className:"ems__Project",label:c,folderPath:f,propertyValues:d,parentFile:l,parentMetadata:u,classResolver:i});n&&await n(h)}}}a(gwe,"createCreateRelatedProjectService");function ywe(r,e,t=dF,n=io(r)){return{async execute(i,s){let o=s?.prototypeUID??s?.prototype,c=s?.label,l=s?.folder,u=s?.ownerIdentity,f=s?.isDefinedBy;if(!o)throw new Error("createAsset requires userInput.prototypeUID");if(!c)throw new Error("createAsset requires userInput.label");let d,p;if(i)try{let w=n.resolveFile(i);d=w.path,p=r.getFrontmatter(w)??void 0}catch{}if(!l&&d){let w=d.lastIndexOf("/");l=w>=0?d.substring(0,w):""}if(l===void 0)throw new Error("createAsset requires userInput.folder");let h=o.endsWith("Prototype")?o.slice(0,-9):o,g=crypto.randomUUID(),m=Pu.DateFormatter.toISOTimestamp(new Date),b=`${g}.md`,S=l?`${l}/${b}`:b,_=["---",`exo__Asset_uid: ${g}`,`exo__Asset_createdAt: ${m}`,`exo__Asset_label: ${c}`,`exo__Asset_prototype: "[[${o}]]"`,"exo__Instance_class:",` - "[[${h}]]"`],A=!1;if(f&&(_.push(`exo__Asset_isDefinedBy: ${$E(f)}`),A=!0),p){let w=p.exo__Instance_class,O=(Array.isArray(w)?w:w!=null?[w]:[]).some(N=>Pu.WikiLinkHelpers.resolveSymbolic(String(N),t).includes("Area")),P=d?d.substring(d.lastIndexOf("/")+1).replace(/\.md$/,""):void 0;if(P){let N=O?"ems__Effort_area":"ems__Effort_parent";_.push(`${N}: "[[${P}]]"`)}!O&&p.ems__Effort_area&&_.push(`ems__Effort_area: ${$E(String(p.ems__Effort_area))}`),_.push('ems__Effort_status: "[[753a44d5-846c-4b82-9196-4fd9a4d48777]]"'),!A&&p.exo__Asset_isDefinedBy&&(_.push(`exo__Asset_isDefinedBy: ${$E(String(p.exo__Asset_isDefinedBy))}`),A=!0)}!A&&u&&_.push(`exo__Asset_isDefinedBy: ${$E(u)}`),_.push("---","");let E=_.join(`
|
|
470
|
-
`);await e.createFile(S,E)}}}a(ywe,"createCreateAssetService");function bwe(r,e,t=io(r)){return{async execute(n){let i=t.resolveFile(n);await e.archiveAsset(i)}}}a(bwe,"createArchiveAssetService");function _we(r,e,t=io(r)){return{async execute(n){let i=t.resolveFile(n);await e.cleanEmptyProperties(i)}}}a(_we,"createCleanPropertiesService");function Swe(r,e,t=io(r)){return{async execute(n){let i=t.resolveFile(n);await e.fixMissingLabel(i)}}}a(Swe,"createFixMissingLabelService");function wwe(r,e,t=io(r)){return{async execute(n){let i=t.resolveFile(n),s=r.getFrontmatter(i)??{};await e.renameToUid(i,s)}}}a(wwe,"createRenameToUidService");async function Ewe(r,e,t){try{let n=await r.read(t),i=e.parseObject(n);if(i)return i}catch{}return r.getFrontmatter(t)??{}}a(Ewe,"readFreshFrontmatter");function vwe(r,e,t=io(r)){let n=new Pu.FrontmatterService;return{async execute(i){let s=t.resolveFile(i),o=await Ewe(r,n,s),c=await e.getExpectedFolder(s,o);if(c===null)throw new Error("repairFolder: cannot determine expected folder (missing exo__Asset_isDefinedBy or referenced asset not found)");(s.parent?.path??"")!==c&&await e.repairFolder(s,c)}}}a(vwe,"createRepairFolderService");function Twe(r,e,t=io(r)){return{async execute(n){let i=t.resolveFile(n);await e.planForEvening(i)}}}a(Twe,"createPlanForEveningService");function Awe(r,e,t){return{async execute(n,i){let s=i?.property,o=i?.value;if(!s)throw new Error(`updateProperty requires userInput.property \u2014 pass it via --input '{"property":"<name>","value":"<value>"}'`);if(o===void 0)throw new Error(`updateProperty requires userInput.value \u2014 pass it via --input '{"value":"<value>"}' (e.g. set-planned-start: --input '{"value":"2026-07-25T09:00:00"}')`);let c=await t.resolveTargetPath(n),l=await r.readFile(c),u=e.updateProperty(l,s,o);await r.updateFile(c,u)}}}a(Awe,"createUpdatePropertyService");function Iwe(r,e,t){return{async execute(n,i){let s=i?.property;if(!s)throw new Error("removeProperty requires userInput.property");let o=await t.resolveTargetPath(n),c=await r.readFile(o),l=e.removeProperty(c,s);await r.updateFile(o,l)}}}a(Iwe,"createRemovePropertyService");function Rwe(r,e,t){return{async execute(n,i){let s=i?.statusUID;if(!s)throw new Error("setStatus requires userInput.statusUID");let o=await t.resolveTargetPath(n),c=await r.readFile(o),l=e.updateProperty(c,"ems__Effort_status",`"[[${s}]]"`);await r.updateFile(o,l)}}}a(Rwe,"createSetStatusService");function Cwe(r,e=io(r),t){return{async execute(n){if(!n)throw new Error("duplicateAsset requires an active target \u2014 open an Exocortex asset before invoking");let i=e.resolveFile(n),s=await r.read(i),o=crypto.randomUUID(),c=Pu.DateFormatter.toLocalTimestamp(new Date),l=$V(s,{exo__Asset_uid:o,exo__Asset_createdAt:c}),u=i.parent?.path??"",f=u?`${u}/${o}.md`:`${o}.md`,d=await r.create(f,l);t&&await t(d)}}}a(Cwe,"createDuplicateAssetService");var Owe=/\r\n|\r|\n/;function $V(r,e){let t=(0,Pu.matchFrontmatterBlock)(r),n=Pu.FrontmatterService.leadingBlock(r);if(!t
|
|
470
|
+
`);await e.createFile(S,E)}}}a(ywe,"createCreateAssetService");function bwe(r,e,t=io(r)){return{async execute(n){let i=t.resolveFile(n);await e.archiveAsset(i)}}}a(bwe,"createArchiveAssetService");function _we(r,e,t=io(r)){return{async execute(n){let i=t.resolveFile(n);await e.cleanEmptyProperties(i)}}}a(_we,"createCleanPropertiesService");function Swe(r,e,t=io(r)){return{async execute(n){let i=t.resolveFile(n);await e.fixMissingLabel(i)}}}a(Swe,"createFixMissingLabelService");function wwe(r,e,t=io(r)){return{async execute(n){let i=t.resolveFile(n),s=r.getFrontmatter(i)??{};await e.renameToUid(i,s)}}}a(wwe,"createRenameToUidService");async function Ewe(r,e,t){try{let n=await r.read(t),i=e.parseObject(n);if(i)return i}catch{}return r.getFrontmatter(t)??{}}a(Ewe,"readFreshFrontmatter");function vwe(r,e,t=io(r)){let n=new Pu.FrontmatterService;return{async execute(i){let s=t.resolveFile(i),o=await Ewe(r,n,s),c=await e.getExpectedFolder(s,o);if(c===null)throw new Error("repairFolder: cannot determine expected folder (missing exo__Asset_isDefinedBy or referenced asset not found)");(s.parent?.path??"")!==c&&await e.repairFolder(s,c)}}}a(vwe,"createRepairFolderService");function Twe(r,e,t=io(r)){return{async execute(n){let i=t.resolveFile(n);await e.planForEvening(i)}}}a(Twe,"createPlanForEveningService");function Awe(r,e,t){return{async execute(n,i){let s=i?.property,o=i?.value;if(!s)throw new Error(`updateProperty requires userInput.property \u2014 pass it via --input '{"property":"<name>","value":"<value>"}'`);if(o===void 0)throw new Error(`updateProperty requires userInput.value \u2014 pass it via --input '{"value":"<value>"}' (e.g. set-planned-start: --input '{"value":"2026-07-25T09:00:00"}')`);let c=await t.resolveTargetPath(n),l=await r.readFile(c),u=e.updateProperty(l,s,o);await r.updateFile(c,u)}}}a(Awe,"createUpdatePropertyService");function Iwe(r,e,t){return{async execute(n,i){let s=i?.property;if(!s)throw new Error("removeProperty requires userInput.property");let o=await t.resolveTargetPath(n),c=await r.readFile(o),l=e.removeProperty(c,s);await r.updateFile(o,l)}}}a(Iwe,"createRemovePropertyService");function Rwe(r,e,t){return{async execute(n,i){let s=i?.statusUID;if(!s)throw new Error("setStatus requires userInput.statusUID");let o=await t.resolveTargetPath(n),c=await r.readFile(o),l=e.updateProperty(c,"ems__Effort_status",`"[[${s}]]"`);await r.updateFile(o,l)}}}a(Rwe,"createSetStatusService");function Cwe(r,e=io(r),t){return{async execute(n){if(!n)throw new Error("duplicateAsset requires an active target \u2014 open an Exocortex asset before invoking");let i=e.resolveFile(n),s=await r.read(i),o=crypto.randomUUID(),c=Pu.DateFormatter.toLocalTimestamp(new Date),l=$V(s,{exo__Asset_uid:o,exo__Asset_createdAt:c}),u=i.parent?.path??"",f=u?`${u}/${o}.md`:`${o}.md`,d=await r.create(f,l);t&&await t(d)}}}a(Cwe,"createDuplicateAssetService");var Owe=/\r\n|\r|\n/;function $V(r,e){let t=(0,Pu.matchFrontmatterBlock)(r),n=Pu.FrontmatterService.leadingBlock(r);if(!t)throw new Error("duplicateAsset: source file has no YAML frontmatter block");let i=n.eol,s=new Map(Object.entries(e)),o=t.body.split(Owe).map(u=>{let f=u.match(/^([A-Za-z_][A-Za-z0-9_]*):/);if(!f)return u;let d=f[1],p=s.get(d);return p===void 0?u:(s.delete(d),`${d}: ${p}`)});for(let[u,f]of s)o.push(`${u}: ${f}`);let c=t.blockStart+3+i.length,l=c+t.body.length;return r.slice(0,c)+o.join(i)+r.slice(l)}a($V,"rewriteFrontmatterScalars")});var BV=T(pF=>{"use strict";Object.defineProperty(pF,"__esModule",{value:!0});pF.createInstantiatePrototypeSubtreeService=Nwe;var rc=Pe(),xwe="753a44d5-846c-4b82-9196-4fd9a4d48777",Pwe="ems__EffortPrototype_parentEffortPrototype",Fwe="8619c4fc-64f1-4869-b17e-e34186cacca9";function Dwe(r){if(typeof r!="string")return;let e=r.match(/\[\[[^\]|]+\|([^\]]+)\]\]/);return e?e[1].trim():void 0}a(Dwe,"extractAlias");function jE(r){let e=String(nc(r)??""),t=e.match(/^"(.*)"$|^'(.*)'$/);return t?t[1]??t[2]??"":e}a(jE,"plainScalar");function nc(r){return Array.isArray(r)?r[0]:r}a(nc,"firstValue");function Lwe(r){let e=r.replace(/\.md$/,""),t=e.substring(e.lastIndexOf("/")+1);return decodeURIComponent(t)}a(Lwe,"uidFromIRI");function Nwe(r,e){return{async execute(t,n){let i=new Map;for(let E of r.getAllFiles()){let w=r.getFrontmatter(E);if(!w)continue;let R=w.exo__Asset_uid??E.basename;i.set(R,{file:E,fm:w,uid:R})}let s=a(E=>{let w=Dwe(nc(E));if(w)return w;let R=(0,rc.extractAssetReference)(nc(E));if(!R)return;let O=i.get(R);return O?jE(O.fm.exo__Asset_label):R},"classLabel"),o=a(E=>{for(let[w,R]of i){if(jE(R.fm.exo__Asset_label)!==E)continue;if((0,rc.extractAssetReference)(nc(R.fm.exo__Instance_class))===Fwe)return w}},"classUidByLabel"),c=Lwe(t);if(!i.get(c))throw new Error(`instantiatePrototypeSubtree: root prototype not found for target "${t}" (uid ${c})`);let u=new Set([c]),f=!0;for(;f;){f=!1;for(let[E,w]of i){if(u.has(E))continue;let R=(0,rc.extractAssetReference)(nc(w.fm[Pwe]));R&&u.has(R)&&(u.add(E),f=!0)}}let d=new Map;for(let E of u)d.set(E,crypto.randomUUID());let p={},h=[],g;for(let[E,w]of Object.entries(n??{})){if(w==null||E==="label"||E==="body")continue;let R=(0,rc.extractAssetReference)(nc(w)),O=R?i.get(R):void 0;if(O){let P=O.fm.exo__Asset_label?jE(O.fm.exo__Asset_label):void 0;p[E]=P??String(w),(s(O.fm.exo__Instance_class)??"").includes("Project")?g||(g=R??void 0):h.push(R)}else p[E]=String(w)}let m=a(E=>{let w=String(E??"");for(let[R,O]of Object.entries(p))w=w.split(`{{${R}}}`).join(O);return w},"substitute"),b=new Set(h);for(let E of i.values()){if((0,rc.extractAssetReference)(nc(E.fm.exo__Asset_prototype))!==c)continue;let R=E.fm.exo__Asset_relates,O=new Set((Array.isArray(R)?R:R!=null?[R]:[]).map(P=>(0,rc.extractAssetReference)(P)).filter(P=>P!=null));if(O.size===b.size&&[...b].every(P=>O.has(P)))throw new Error(`instantiatePrototypeSubtree: already deployed \u2014 an instance of prototype ${c} with the same ref-params [${[...b].join(", ")}] already exists (${E.file.path}). Refusing to duplicate the subgraph.`)}let S=new Map;for(let E of u){let w=i.get(E);if(!w)continue;let R=s(w.fm.exo__Instance_class),O=R&&R.endsWith("Prototype")?R.slice(0,-9):R;if(!O)throw new Error(`instantiatePrototypeSubtree: cannot resolve instance class for subtree node ${E} (${w.file.path}) \u2014 its exo__Instance_class is missing or unresolvable. Aborting so no asset is written with a dangling [[undefined]] class.`);let P=o(O);if(!P)throw new Error(`instantiatePrototypeSubtree: cannot resolve class UID for instance class \xAB${O}\xBB (subtree node ${E}, ${w.file.path}) \u2014 no class-definition asset with that label is loaded. Aborting so no asset is written with a dangling [[${O}]] class wikilink.`);S.set(E,`[[${P}|${O}]]`)}let _=rc.DateFormatter.toISOTimestamp(new Date),A=[c,...[...u].filter(E=>E!==c)];for(let E of A){let w=i.get(E);if(!w)continue;let{file:R,fm:O}=w,P=d.get(E),N=S.get(E),j=m(jE(O.exo__Asset_label)),U=["---",`exo__Asset_uid: ${P}`];O.exo__Asset_isDefinedBy&&U.push(`exo__Asset_isDefinedBy: "[[${(0,rc.extractAssetReference)(nc(O.exo__Asset_isDefinedBy))}]]"`),U.push(`exo__Asset_createdAt: ${_}`,`exo__Asset_updatedAt: ${_}`,"exo__Instance_class:",` - "${N}"`,`exo__Asset_label: ${JSON.stringify(j)}`,"aliases:",` - ${JSON.stringify(j)}`,`exo__Asset_prototype: "[[${E}]]"`,`ems__Effort_status: "[[${xwe}]]"`);let G=(0,rc.extractAssetReference)(nc(O.ems__Effort_blocker));if(G){let re=d.get(G)??G;U.push(`ems__Effort_blocker: "[[${re}]]"`)}if(E===c){if(h.length>0){U.push("exo__Asset_relates:");for(let re of h)U.push(` - "[[${re}]]"`)}g&&U.push(`ems__Effort_parent: "[[${g}]]"`)}else U.push(`ems__Effort_parent: "[[${d.get(c)}]]"`);U.push("---","");let $=U.join(`
|
|
471
471
|
`),k=R.path.lastIndexOf("/"),te=k>=0?R.path.substring(0,k):"",Z=te?`${te}/${P}.md`:`${P}.md`;await e.createFile(Z,$)}}}}a(Nwe,"createInstantiatePrototypeSubtreeService")});var UV=T(gt=>{"use strict";Object.defineProperty(gt,"__esModule",{value:!0});gt.createInstantiatePrototypeSubtreeService=gt.createPathBasedTargetResolver=gt.rewriteFrontmatterScalars=gt.createDuplicateAssetService=gt.createSetStatusService=gt.createRemovePropertyService=gt.createUpdatePropertyService=gt.createPlanForEveningService=gt.createRepairFolderService=gt.createRenameToUidService=gt.createFixMissingLabelService=gt.createCleanPropertiesService=gt.createArchiveAssetService=gt.createCreateRelatedProjectService=gt.createCreateRelatedTaskService=gt.createCreateAssetService=void 0;var yi=jV();Object.defineProperty(gt,"createCreateAssetService",{enumerable:!0,get:a(function(){return yi.createCreateAssetService},"get")});Object.defineProperty(gt,"createCreateRelatedTaskService",{enumerable:!0,get:a(function(){return yi.createCreateRelatedTaskService},"get")});Object.defineProperty(gt,"createCreateRelatedProjectService",{enumerable:!0,get:a(function(){return yi.createCreateRelatedProjectService},"get")});Object.defineProperty(gt,"createArchiveAssetService",{enumerable:!0,get:a(function(){return yi.createArchiveAssetService},"get")});Object.defineProperty(gt,"createCleanPropertiesService",{enumerable:!0,get:a(function(){return yi.createCleanPropertiesService},"get")});Object.defineProperty(gt,"createFixMissingLabelService",{enumerable:!0,get:a(function(){return yi.createFixMissingLabelService},"get")});Object.defineProperty(gt,"createRenameToUidService",{enumerable:!0,get:a(function(){return yi.createRenameToUidService},"get")});Object.defineProperty(gt,"createRepairFolderService",{enumerable:!0,get:a(function(){return yi.createRepairFolderService},"get")});Object.defineProperty(gt,"createPlanForEveningService",{enumerable:!0,get:a(function(){return yi.createPlanForEveningService},"get")});Object.defineProperty(gt,"createUpdatePropertyService",{enumerable:!0,get:a(function(){return yi.createUpdatePropertyService},"get")});Object.defineProperty(gt,"createRemovePropertyService",{enumerable:!0,get:a(function(){return yi.createRemovePropertyService},"get")});Object.defineProperty(gt,"createSetStatusService",{enumerable:!0,get:a(function(){return yi.createSetStatusService},"get")});Object.defineProperty(gt,"createDuplicateAssetService",{enumerable:!0,get:a(function(){return yi.createDuplicateAssetService},"get")});Object.defineProperty(gt,"rewriteFrontmatterScalars",{enumerable:!0,get:a(function(){return yi.rewriteFrontmatterScalars},"get")});Object.defineProperty(gt,"createPathBasedTargetResolver",{enumerable:!0,get:a(function(){return yi.createPathBasedTargetResolver},"get")});var kwe=BV();Object.defineProperty(gt,"createInstantiatePrototypeSubtreeService",{enumerable:!0,get:a(function(){return kwe.createInstantiatePrototypeSubtreeService},"get")})});var xve={};Hu(xve,{createProgram:()=>uv});module.exports=sy(xve);var OGe=Q(Fv());ut();ut();var yg=require("fs"),DP=require("path"),Yr=Q(Pe());var Pd=class{static{a(this,"TableFormatter")}format(e){if(e.length===0)return"No results";let t=this.getAllVariables(e),n=e.map(i=>this.solutionToRow(i,t));return this.renderTable(t,n)}getAllVariables(e){let t=new Set;for(let n of e)for(let i of n.variables())t.add(i);return Array.from(t).sort()}solutionToRow(e,t){return t.map(n=>{let i=e.get(n);return i?this.formatValue(i.toString()):""})}formatValue(e){return e.length>50?e.substring(0,47)+"...":e}renderTable(e,t){let n=e.map((s,o)=>{let c=s.length+1,l=Math.max(...t.map(u=>u[o]?.length||0));return Math.max(c,l,10)}),i=[];i.push(this.renderSeparator(n,"top")),i.push(this.renderRow(e.map(s=>`?${s}`),n)),i.push(this.renderSeparator(n,"mid"));for(let s of t)i.push(this.renderRow(s,n));return i.push(this.renderSeparator(n,"bottom")),i.join(`
|
|
472
472
|
`)}renderRow(e,t){return`\u2502 ${e.map((i,s)=>i.padEnd(t[s])).join(" \u2502 ")} \u2502`}renderSeparator(e,t){let n=t==="top"?"\u250C":t==="mid"?"\u251C":"\u2514",i=t==="top"?"\u2510":t==="mid"?"\u2524":"\u2518",o=t==="mid"?"\u2500\u253C\u2500":"\u2500"+(t==="mid"?"\u253C":"\u2500")+"\u2500",c=e.map(l=>"\u2500".repeat(l+2));return`${n}${c.join(o)}${i}`}};var YS=class{static{a(this,"JsonFormatter")}format(e){let t=e.map(n=>n.toJSON());return JSON.stringify(t,null,2)}};var XS=class{static{a(this,"CsvFormatter")}format(e){if(e.length===0)return"";let t=this.getAllVariables(e),n=[];n.push(t.join(","));for(let i of e){let s=t.map(o=>{let c=i.get(o);return c?this.escapeValue(c.toString()):""});n.push(s.join(","))}return n.join(`
|
|
473
473
|
`)}getAllVariables(e){let t=new Set;for(let n of e)for(let i of n.variables())t.add(i);return Array.from(t).sort()}escapeValue(e){return e.includes(",")||e.includes('"')||e.includes(`
|
|
@@ -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(Rve,"parseLastJsonLine");function lq(r,e){return e.filter(t=>{let n=r[t];return typeof n!="string"||n.trim().length===0})}a(lq,"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:cq,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:cq,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:Ave,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:aq}};case"tools/call":return{jsonrpc:"2.0",id:i,result:await this.callTool(e.params??{})};default:return{jsonrpc:"2.0",id:i,error:{code:Ive,message:`Method not found: ${e.method}`}}}}async callTool(e){let t=e.name,n=e.arguments??{},i;if(t==="create_asset"){let c=lq(n,["vault","class","label"]);if(c.length>0)return Rp(`create_asset: missing required argument(s): ${c.join(", ")}`,!0);let l=iq(n);if(l!==null)return Rp(`create_asset: ${l}`,!0);i=sq(n)}else if(t==="create_effort"){let c=lq(n,["vault","command","target"]);if(c.length>0)return Rp(`create_effort: missing required argument(s): ${c.join(", ")}`,!0);i=oq(n)}else return Rp(`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 Rp(`exocortex-cli exited ${s.exitCode}
|
|
712
712
|
${c}`,!0)}let o=Rve(s.stdout);return Rp(o===void 0?s.stdout.trim():JSON.stringify(o))}};var dq=require("child_process");var Cve=32*1024*1024;function pq(r){return e=>new Promise(t=>{(0,dq.execFile)(process.execPath,[r,...e],{maxBuffer:Cve},(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(pq,"createSelfCliRunner");async function Ove(r,e,t){let n=(0,hq.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:uq,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:fq,message:`Internal error: ${l instanceof Error?l.message:String(l)}`}}}c!==null&&t(JSON.stringify(c)+`
|
|
714
|
-
`)}}a(Ove,"runStdioServer");function mq(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:pq(t),version:r??"unknown"});await Ove(n,process.stdin,i=>process.stdout.write(i))})}a(mq,"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.7.
|
|
714
|
+
`)}}a(Ove,"runStdioServer");function mq(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:pq(t),version:r??"unknown"});await Ove(n,process.stdin,i=>process.stdout.write(i))})}a(mq,"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.7.30"),e.addCommand(MV()),e.addCommand(KV()),e.addCommand(_7()),e.addCommand(v7()),e.addCommand(q7()),e.addCommand(T7()),e.addCommand(O7()),e.addCommand(x7()),e.addCommand(J7()),e.addCommand(nV()),e.addCommand(wV()),e.addCommand(IV()),e.addCommand(xV()),e.addCommand(PV()),e.addCommand(FV()),e.addCommand(DV()),e.addCommand(LV()),e.addCommand(yG()),e.addCommand(SG()),e.addCommand(zG()),e.addCommand(HG()),e.addCommand(QG()),e.addCommand(JG()),e.addCommand(tq()),e.addCommand(NG()),e.addCommand(GG()),e.addCommand(rq()),e.addCommand(mq(r??"17.7.30")),e}a(uv,"createProgram");uv().parse();0&&(module.exports={createProgram});
|
|
715
715
|
/*! Bundled license information:
|
|
716
716
|
|
|
717
717
|
reflect-metadata/Reflect.js:
|