@kitelev/exocortex-cli 16.201.3 → 16.201.5
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 +4 -4
- 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.201.
|
|
2
|
+
// @kitelev/exocortex-cli v16.201.5
|
|
3
3
|
// CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more
|
|
4
4
|
// License: MIT
|
|
5
5
|
|
|
@@ -340,7 +340,7 @@ GFS4: `),console.error(n)},"debug"));zt[rn]||(qk=global[rn]||[],Wk(zt,qk),zt.clo
|
|
|
340
340
|
|
|
341
341
|
see https://github.com/jprichardson/node-fs-extra/issues/269`,"Warning","fs-extra-WARN0002");let{srcStat:r,destStat:i}=Fp.checkPathsSync(n,e,"copy",t);if(Fp.checkParentPathsSync(n,r,e,"copy"),t.filter&&!t.filter(n,e))return;let s=Pp.dirname(e);return Fn.existsSync(s)||mne(s),hM(i,n,e,t)}a(yne,"copySync");function hM(n,e,t,r){let s=(r.dereference?Fn.statSync:Fn.lstatSync)(e);if(s.isDirectory())return Tne(s,n,e,t,r);if(s.isFile()||s.isCharacterDevice()||s.isBlockDevice())return bne(s,n,e,t,r);if(s.isSymbolicLink())return xne(n,e,t,r);throw s.isSocket()?new Error(`Cannot copy a socket file: ${e}`):s.isFIFO()?new Error(`Cannot copy a FIFO pipe: ${e}`):new Error(`Unknown file: ${e}`)}a(hM,"getStats");function bne(n,e,t,r,i){return e?_ne(n,t,r,i):mM(n,t,r,i)}a(bne,"onFile");function _ne(n,e,t,r){if(r.overwrite)return Fn.unlinkSync(t),mM(n,e,t,r);if(r.errorOnExist)throw new Error(`'${t}' already exists`)}a(_ne,"mayCopyFile");function mM(n,e,t,r){return Fn.copyFileSync(e,t),r.preserveTimestamps&&Sne(n.mode,e,t),KA(t,n.mode)}a(mM,"copyFile");function Sne(n,e,t){return wne(n)&&Ene(t,n),vne(e,t)}a(Sne,"handleTimestamps");function wne(n){return(n&128)===0}a(wne,"fileIsNotWritable");function Ene(n,e){return KA(n,e|128)}a(Ene,"makeFileWritable");function KA(n,e){return Fn.chmodSync(n,e)}a(KA,"setDestMode");function vne(n,e){let t=Fn.statSync(n);return gne(e,t.atime,t.mtime)}a(vne,"setDestTimestamps");function Tne(n,e,t,r,i){return e?gM(t,r,i):Ane(n.mode,t,r,i)}a(Tne,"onDir");function Ane(n,e,t,r){return Fn.mkdirSync(t),gM(e,t,r),KA(t,n)}a(Ane,"mkDirAndCopy");function gM(n,e,t){let r=Fn.opendirSync(n);try{let i;for(;(i=r.readSync())!==null;)Ine(i.name,n,e,t)}finally{r.closeSync()}}a(gM,"copyDir");function Ine(n,e,t,r){let i=Pp.join(e,n),s=Pp.join(t,n);if(r.filter&&!r.filter(i,s))return;let{destStat:o}=Fp.checkPathsSync(i,s,"copy",r);return hM(o,i,s,r)}a(Ine,"copyDirItem");function xne(n,e,t,r){let i=Fn.readlinkSync(e);if(r.dereference&&(i=Pp.resolve(process.cwd(),i)),n){let s;try{s=Fn.readlinkSync(t)}catch(o){if(o.code==="EINVAL"||o.code==="UNKNOWN")return Fn.symlinkSync(i,t);throw o}if(r.dereference&&(s=Pp.resolve(process.cwd(),s)),Fp.isSrcSubdir(i,s))throw new Error(`Cannot copy '${i}' to a subdirectory of itself, '${s}'.`);if(Fp.isSrcSubdir(s,i))throw new Error(`Cannot overwrite '${s}' with '${i}'.`);return Rne(i,t)}else return Fn.symlinkSync(i,t)}a(xne,"onLink");function Rne(n,e){return Fn.unlinkSync(e),Fn.symlinkSync(n,e)}a(Rne,"copyLink");yM.exports=yne});var sb=E((nve,_M)=>{"use strict";var Cne=Nr().fromPromise;_M.exports={copy:Cne(pM()),copySync:bM()}});var Dp=E((ive,wM)=>{"use strict";var SM=zu(),One=Nr().fromCallback;function Pne(n,e){SM.rm(n,{recursive:!0,force:!0},e)}a(Pne,"remove");function Fne(n){SM.rmSync(n,{recursive:!0,force:!0})}a(Fne,"removeSync");wM.exports={remove:One(Pne),removeSync:Fne}});var CM=E((ove,RM)=>{"use strict";var Dne=Nr().fromPromise,TM=Pn(),AM=require("path"),IM=ns(),xM=Dp(),EM=Dne(a(async function(e){let t;try{t=await TM.readdir(e)}catch{return IM.mkdirs(e)}return Promise.all(t.map(r=>xM.remove(AM.join(e,r))))},"emptyDir"));function vM(n){let e;try{e=TM.readdirSync(n)}catch{return IM.mkdirsSync(n)}e.forEach(t=>{t=AM.join(n,t),xM.removeSync(t)})}a(vM,"emptyDirSync");RM.exports={emptyDirSync:vM,emptydirSync:vM,emptyDir:EM,emptydir:EM}});var DM=E((cve,FM)=>{"use strict";var Lne=Nr().fromPromise,OM=require("path"),qo=Pn(),PM=ns();async function Nne(n){let e;try{e=await qo.stat(n)}catch{}if(e&&e.isFile())return;let t=OM.dirname(n),r=null;try{r=await qo.stat(t)}catch(i){if(i.code==="ENOENT"){await PM.mkdirs(t),await qo.writeFile(n,"");return}else throw i}r.isDirectory()?await qo.writeFile(n,""):await qo.readdir(t)}a(Nne,"createFile");function kne(n){let e;try{e=qo.statSync(n)}catch{}if(e&&e.isFile())return;let t=OM.dirname(n);try{qo.statSync(t).isDirectory()||qo.readdirSync(t)}catch(r){if(r&&r.code==="ENOENT")PM.mkdirsSync(t);else throw r}qo.writeFileSync(n,"")}a(kne,"createFileSync");FM.exports={createFile:Lne(Nne),createFileSync:kne}});var jM=E((uve,MM)=>{"use strict";var Mne=Nr().fromPromise,LM=require("path"),Ba=Pn(),NM=ns(),{pathExists:jne}=Ua(),{areIdentical:kM}=Jc();async function $ne(n,e){let t;try{t=await Ba.lstat(e)}catch{}let r;try{r=await Ba.lstat(n)}catch(o){throw o.message=o.message.replace("lstat","ensureLink"),o}if(t&&kM(r,t))return;let i=LM.dirname(e);await jne(i)||await NM.mkdirs(i),await Ba.link(n,e)}a($ne,"createLink");function Une(n,e){let t;try{t=Ba.lstatSync(e)}catch{}try{let s=Ba.lstatSync(n);if(t&&kM(s,t))return}catch(s){throw s.message=s.message.replace("lstat","ensureLink"),s}let r=LM.dirname(e);return Ba.existsSync(r)||NM.mkdirsSync(r),Ba.linkSync(n,e)}a(Une,"createLinkSync");MM.exports={createLink:Mne($ne),createLinkSync:Une}});var UM=E((dve,$M)=>{"use strict";var Va=require("path"),Lp=Pn(),{pathExists:Bne}=Ua(),Vne=Nr().fromPromise;async function qne(n,e){if(Va.isAbsolute(n)){try{await Lp.lstat(n)}catch(s){throw s.message=s.message.replace("lstat","ensureSymlink"),s}return{toCwd:n,toDst:n}}let t=Va.dirname(e),r=Va.join(t,n);if(await Bne(r))return{toCwd:r,toDst:n};try{await Lp.lstat(n)}catch(s){throw s.message=s.message.replace("lstat","ensureSymlink"),s}return{toCwd:n,toDst:Va.relative(t,n)}}a(qne,"symlinkPaths");function Gne(n,e){if(Va.isAbsolute(n)){if(!Lp.existsSync(n))throw new Error("absolute srcpath does not exist");return{toCwd:n,toDst:n}}let t=Va.dirname(e),r=Va.join(t,n);if(Lp.existsSync(r))return{toCwd:r,toDst:n};if(!Lp.existsSync(n))throw new Error("relative srcpath does not exist");return{toCwd:n,toDst:Va.relative(t,n)}}a(Gne,"symlinkPathsSync");$M.exports={symlinkPaths:Vne(qne),symlinkPathsSync:Gne}});var qM=E((hve,VM)=>{"use strict";var BM=Pn(),Wne=Nr().fromPromise;async function Hne(n,e){if(e)return e;let t;try{t=await BM.lstat(n)}catch{return"file"}return t&&t.isDirectory()?"dir":"file"}a(Hne,"symlinkType");function zne(n,e){if(e)return e;let t;try{t=BM.lstatSync(n)}catch{return"file"}return t&&t.isDirectory()?"dir":"file"}a(zne,"symlinkTypeSync");VM.exports={symlinkType:Wne(Hne),symlinkTypeSync:zne}});var zM=E((gve,HM)=>{"use strict";var Yne=Nr().fromPromise,GM=require("path"),Bs=Pn(),{mkdirs:Kne,mkdirsSync:Xne}=ns(),{symlinkPaths:Qne,symlinkPathsSync:Jne}=UM(),{symlinkType:Zne,symlinkTypeSync:eie}=qM(),{pathExists:tie}=Ua(),{areIdentical:WM}=Jc();async function rie(n,e,t){let r;try{r=await Bs.lstat(e)}catch{}if(r&&r.isSymbolicLink()){let[c,l]=await Promise.all([Bs.stat(n),Bs.stat(e)]);if(WM(c,l))return}let i=await Qne(n,e);n=i.toDst;let s=await Zne(i.toCwd,t),o=GM.dirname(e);return await tie(o)||await Kne(o),Bs.symlink(n,e,s)}a(rie,"createSymlink");function nie(n,e,t){let r;try{r=Bs.lstatSync(e)}catch{}if(r&&r.isSymbolicLink()){let c=Bs.statSync(n),l=Bs.statSync(e);if(WM(c,l))return}let i=Jne(n,e);n=i.toDst,t=eie(i.toCwd,t);let s=GM.dirname(e);return Bs.existsSync(s)||Xne(s),Bs.symlinkSync(n,e,t)}a(nie,"createSymlinkSync");HM.exports={createSymlink:Yne(rie),createSymlinkSync:nie}});var t4=E((bve,e4)=>{"use strict";var{createFile:YM,createFileSync:KM}=DM(),{createLink:XM,createLinkSync:QM}=jM(),{createSymlink:JM,createSymlinkSync:ZM}=zM();e4.exports={createFile:YM,createFileSync:KM,ensureFile:YM,ensureFileSync:KM,createLink:XM,createLinkSync:QM,ensureLink:XM,ensureLinkSync:QM,createSymlink:JM,createSymlinkSync:ZM,ensureSymlink:JM,ensureSymlinkSync:ZM}});var ob=E((_ve,r4)=>{function iie(n,{EOL:e=`
|
|
342
342
|
`,finalEOL:t=!0,replacer:r=null,spaces:i}={}){let s=t?e:"";return JSON.stringify(n,r,i).replace(/\n/g,e)+s}a(iie,"stringify");function sie(n){return Buffer.isBuffer(n)&&(n=n.toString("utf8")),n.replace(/^\uFEFF/,"")}a(sie,"stripBom");r4.exports={stringify:iie,stripBom:sie}});var o4=E((wve,s4)=>{var Xu;try{Xu=zu()}catch{Xu=require("fs")}var ab=Nr(),{stringify:n4,stripBom:i4}=ob();async function oie(n,e={}){typeof e=="string"&&(e={encoding:e});let t=e.fs||Xu,r="throws"in e?e.throws:!0,i=await ab.fromCallback(t.readFile)(n,e);i=i4(i);let s;try{s=JSON.parse(i,e?e.reviver:null)}catch(o){if(r)throw o.message=`${n}: ${o.message}`,o;return null}return s}a(oie,"_readFile");var aie=ab.fromPromise(oie);function cie(n,e={}){typeof e=="string"&&(e={encoding:e});let t=e.fs||Xu,r="throws"in e?e.throws:!0;try{let i=t.readFileSync(n,e);return i=i4(i),JSON.parse(i,e.reviver)}catch(i){if(r)throw i.message=`${n}: ${i.message}`,i;return null}}a(cie,"readFileSync");async function lie(n,e,t={}){let r=t.fs||Xu,i=n4(e,t);await ab.fromCallback(r.writeFile)(n,i,t)}a(lie,"_writeFile");var uie=ab.fromPromise(lie);function fie(n,e,t={}){let r=t.fs||Xu,i=n4(e,t);return r.writeFileSync(n,i,t)}a(fie,"writeFileSync");s4.exports={readFile:aie,readFileSync:cie,writeFile:uie,writeFileSync:fie}});var c4=E((vve,a4)=>{"use strict";var cb=o4();a4.exports={readJson:cb.readFile,readJsonSync:cb.readFileSync,writeJson:cb.writeFile,writeJsonSync:cb.writeFileSync}});var lb=E((Tve,f4)=>{"use strict";var die=Nr().fromPromise,XA=Pn(),l4=require("path"),u4=ns(),pie=Ua().pathExists;async function hie(n,e,t="utf-8"){let r=l4.dirname(n);return await pie(r)||await u4.mkdirs(r),XA.writeFile(n,e,t)}a(hie,"outputFile");function mie(n,...e){let t=l4.dirname(n);XA.existsSync(t)||u4.mkdirsSync(t),XA.writeFileSync(n,...e)}a(mie,"outputFileSync");f4.exports={outputFile:die(hie),outputFileSync:mie}});var p4=E((Ive,d4)=>{"use strict";var{stringify:gie}=ob(),{outputFile:yie}=lb();async function bie(n,e,t={}){let r=gie(e,t);await yie(n,r,t)}a(bie,"outputJson");d4.exports=bie});var m4=E((Rve,h4)=>{"use strict";var{stringify:_ie}=ob(),{outputFileSync:Sie}=lb();function wie(n,e,t){let r=_ie(e,t);Sie(n,r,t)}a(wie,"outputJsonSync");h4.exports=wie});var y4=E((Ove,g4)=>{"use strict";var Eie=Nr().fromPromise,Dn=c4();Dn.outputJson=Eie(p4());Dn.outputJsonSync=m4();Dn.outputJSON=Dn.outputJson;Dn.outputJSONSync=Dn.outputJsonSync;Dn.writeJSON=Dn.writeJson;Dn.writeJSONSync=Dn.writeJsonSync;Dn.readJSON=Dn.readJson;Dn.readJSONSync=Dn.readJsonSync;g4.exports=Dn});var E4=E((Pve,w4)=>{"use strict";var vie=Pn(),b4=require("path"),{copy:Tie}=sb(),{remove:S4}=Dp(),{mkdirp:Aie}=ns(),{pathExists:Iie}=Ua(),_4=Jc();async function xie(n,e,t={}){let r=t.overwrite||t.clobber||!1,{srcStat:i,isChangingCase:s=!1}=await _4.checkPaths(n,e,"move",t);await _4.checkParentPaths(n,i,e,"move");let o=b4.dirname(e);return b4.parse(o).root!==o&&await Aie(o),Rie(n,e,r,s)}a(xie,"move");async function Rie(n,e,t,r){if(!r){if(t)await S4(e);else if(await Iie(e))throw new Error("dest already exists.")}try{await vie.rename(n,e)}catch(i){if(i.code!=="EXDEV")throw i;await Cie(n,e,t)}}a(Rie,"doRename");async function Cie(n,e,t){return await Tie(n,e,{overwrite:t,errorOnExist:!0,preserveTimestamps:!0}),S4(n)}a(Cie,"moveAcrossDevice");w4.exports=xie});var x4=E((Dve,I4)=>{"use strict";var T4=zu(),JA=require("path"),Oie=sb().copySync,A4=Dp().removeSync,Pie=ns().mkdirpSync,v4=Jc();function Fie(n,e,t){t=t||{};let r=t.overwrite||t.clobber||!1,{srcStat:i,isChangingCase:s=!1}=v4.checkPathsSync(n,e,"move",t);return v4.checkParentPathsSync(n,i,e,"move"),Die(e)||Pie(JA.dirname(e)),Lie(n,e,r,s)}a(Fie,"moveSync");function Die(n){let e=JA.dirname(n);return JA.parse(e).root===e}a(Die,"isParentRoot");function Lie(n,e,t,r){if(r)return QA(n,e,t);if(t)return A4(e),QA(n,e,t);if(T4.existsSync(e))throw new Error("dest already exists.");return QA(n,e,t)}a(Lie,"doRename");function QA(n,e,t){try{T4.renameSync(n,e)}catch(r){if(r.code!=="EXDEV")throw r;return Nie(n,e,t)}}a(QA,"rename");function Nie(n,e,t){return Oie(n,e,{overwrite:t,errorOnExist:!0,preserveTimestamps:!0}),A4(n)}a(Nie,"moveAcrossDevice");I4.exports=Fie});var C4=E((Nve,R4)=>{"use strict";var kie=Nr().fromPromise;R4.exports={move:kie(E4()),moveSync:x4()}});var Vs=E((kve,O4)=>{"use strict";O4.exports={...Pn(),...sb(),...CM(),...t4(),...y4(),...ns(),...C4(),...lb(),...Ua(),...Dp()}});var X5=E(sn=>{"use strict";Object.defineProperty(sn,"__esModule",{value:!0});sn.createPathBasedTargetResolver=ps;sn.createCreateRelatedTaskService=ele;sn.createCreateRelatedProjectService=tle;sn.createCreateAssetService=rle;sn.createArchiveAssetService=nle;sn.createCleanPropertiesService=ile;sn.createFixMissingLabelService=sle;sn.createRenameToUidService=ole;sn.createRepairFolderService=cle;sn.createPlanForEveningService=lle;sn.createUpdatePropertyService=ule;sn.createRemovePropertyService=fle;sn.createSetStatusService=dle;sn.createDuplicateAssetService=ple;sn.rewriteFrontmatterScalars=K5;var hh=Ze();function ps(n){return{resolveFile(e){let t=(0,hh.iriToVaultPath)(e)??e,r=t.endsWith(".md")?t:`${t}.md`,i=n.getAbstractFileByPath(r);if(!i||!("basename"in i))throw new Error(`Cannot resolve target file for IRI: ${e}`);return i}}}a(ps,"createPathBasedTargetResolver");var kx=a(()=>null,"NULL_CLASS_RESOLVER");function d_(n){return n.startsWith('"[[')&&n.endsWith(']]"')?n:n.startsWith("[[")&&n.endsWith("]]")?`"${n}"`:`"[[${n}]]"`}a(d_,"toQuotedWikilink");function ele(n,e,t=ps(n),r,i=kx){return{async execute(s,o){let c=o?.label;if(!c)throw new Error("createRelatedTask requires userInput.label");let l=t.resolveFile(s),u=n.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});r&&await r(h)}}}a(ele,"createCreateRelatedTaskService");function tle(n,e,t=ps(n),r,i=kx){return{async execute(s,o){let c=o?.label;if(!c)throw new Error("createRelatedProject requires userInput.label");let l=t.resolveFile(s),u=n.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});r&&await r(h)}}}a(tle,"createCreateRelatedProjectService");function rle(n,e,t=kx,r=ps(n)){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 I=r.resolveFile(i);d=I.path,p=n.getFrontmatter(I)??void 0}catch{}if(!l&&d){let I=d.lastIndexOf("/");l=I>=0?d.substring(0,I):""}if(l===void 0)throw new Error("createAsset requires userInput.folder");let h=o.endsWith("Prototype")?o.slice(0,-9):o,g=crypto.randomUUID(),y=hh.DateFormatter.toISOTimestamp(new Date),w=`${g}.md`,S=l?`${l}/${w}`:w,A=["---",`exo__Asset_uid: ${g}`,`exo__Asset_createdAt: ${y}`,`exo__Asset_label: ${c}`,`exo__Asset_prototype: "[[${o}]]"`,"exo__Instance_class:",` - "[[${h}]]"`],O=!1;if(f&&(A.push(`exo__Asset_isDefinedBy: ${d_(f)}`),O=!0),p){let I=p.exo__Instance_class,V=(Array.isArray(I)?I:I!=null?[I]:[]).some($=>hh.WikiLinkHelpers.resolveSymbolic(String($),t).includes("Area")),j=d?d.substring(d.lastIndexOf("/")+1).replace(/\.md$/,""):void 0;if(j){let $=V?"ems__Effort_area":"ems__Effort_parent";A.push(`${$}: "[[${j}]]"`)}!V&&p.ems__Effort_area&&A.push(`ems__Effort_area: ${d_(String(p.ems__Effort_area))}`),A.push('ems__Effort_status: "[[753a44d5-846c-4b82-9196-4fd9a4d48777]]"'),!O&&p.exo__Asset_isDefinedBy&&(A.push(`exo__Asset_isDefinedBy: ${d_(String(p.exo__Asset_isDefinedBy))}`),O=!0)}!O&&u&&A.push(`exo__Asset_isDefinedBy: ${d_(u)}`),A.push("---","");let T=A.join(`
|
|
343
|
-
`);await e.createFile(S,T)}}}a(rle,"createCreateAssetService");function nle(n,e,t=ps(n)){return{async execute(r){let i=t.resolveFile(r);await e.archiveAsset(i)}}}a(nle,"createArchiveAssetService");function ile(n,e,t=ps(n)){return{async execute(r){let i=t.resolveFile(r);await e.cleanEmptyProperties(i)}}}a(ile,"createCleanPropertiesService");function sle(n,e,t=ps(n)){return{async execute(r){let i=t.resolveFile(r);await e.fixMissingLabel(i)}}}a(sle,"createFixMissingLabelService");function ole(n,e,t=ps(n)){return{async execute(r){let i=t.resolveFile(r),s=n.getFrontmatter(i)??{};await e.renameToUid(i,s)}}}a(ole,"createRenameToUidService");async function ale(n,e,t){try{let r=await n.read(t),i=e.parseObject(r);if(i)return i}catch{}return n.getFrontmatter(t)??{}}a(ale,"readFreshFrontmatter");function cle(n,e,t=ps(n)){let r=new hh.FrontmatterService;return{async execute(i){let s=t.resolveFile(i),o=await ale(n,r,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(cle,"createRepairFolderService");function lle(n,e,t=ps(n)){return{async execute(r){let i=t.resolveFile(r);await e.planForEvening(i)}}}a(lle,"createPlanForEveningService");function ule(n,e,t){return{async execute(r,i){let s=i?.property,o=i?.value;if(!s)throw new Error(
|
|
343
|
+
`);await e.createFile(S,T)}}}a(rle,"createCreateAssetService");function nle(n,e,t=ps(n)){return{async execute(r){let i=t.resolveFile(r);await e.archiveAsset(i)}}}a(nle,"createArchiveAssetService");function ile(n,e,t=ps(n)){return{async execute(r){let i=t.resolveFile(r);await e.cleanEmptyProperties(i)}}}a(ile,"createCleanPropertiesService");function sle(n,e,t=ps(n)){return{async execute(r){let i=t.resolveFile(r);await e.fixMissingLabel(i)}}}a(sle,"createFixMissingLabelService");function ole(n,e,t=ps(n)){return{async execute(r){let i=t.resolveFile(r),s=n.getFrontmatter(i)??{};await e.renameToUid(i,s)}}}a(ole,"createRenameToUidService");async function ale(n,e,t){try{let r=await n.read(t),i=e.parseObject(r);if(i)return i}catch{}return n.getFrontmatter(t)??{}}a(ale,"readFreshFrontmatter");function cle(n,e,t=ps(n)){let r=new hh.FrontmatterService;return{async execute(i){let s=t.resolveFile(i),o=await ale(n,r,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(cle,"createRepairFolderService");function lle(n,e,t=ps(n)){return{async execute(r){let i=t.resolveFile(r);await e.planForEvening(i)}}}a(lle,"createPlanForEveningService");function ule(n,e,t){return{async execute(r,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(r),l=await n.readFile(c),u=e.updateProperty(l,s,o);await n.updateFile(c,u)}}}a(ule,"createUpdatePropertyService");function fle(n,e,t){return{async execute(r,i){let s=i?.property;if(!s)throw new Error("removeProperty requires userInput.property");let o=await t.resolveTargetPath(r),c=await n.readFile(o),l=e.removeProperty(c,s);await n.updateFile(o,l)}}}a(fle,"createRemovePropertyService");function dle(n,e,t){return{async execute(r,i){let s=i?.statusUID;if(!s)throw new Error("setStatus requires userInput.statusUID");let o=await t.resolveTargetPath(r),c=await n.readFile(o),l=e.updateProperty(c,"ems__Effort_status",`"[[${s}]]"`);await n.updateFile(o,l)}}}a(dle,"createSetStatusService");function ple(n,e=ps(n),t){return{async execute(r){if(!r)throw new Error("duplicateAsset requires an active target \u2014 open an Exocortex asset before invoking");let i=e.resolveFile(r),s=await n.read(i),o=crypto.randomUUID(),c=hh.DateFormatter.toLocalTimestamp(new Date),l=K5(s,{exo__Asset_uid:o,exo__Asset_createdAt:c}),u=i.parent?.path??"",f=u?`${u}/${o}.md`:`${o}.md`,d=await n.create(f,l);t&&await t(d)}}}a(ple,"createDuplicateAssetService");function K5(n,e){let t=n.match(/^---\r?\n([\s\S]*?)\r?\n---/);if(!t)throw new Error("duplicateAsset: source file has no YAML frontmatter block");let r=t[1],i=new Map(Object.entries(e)),s=r.split(`
|
|
344
344
|
`).map(u=>{let f=u.match(/^([A-Za-z_][A-Za-z0-9_]*):/);if(!f)return u;let d=f[1],p=i.get(d);return p===void 0?u:(i.delete(d),`${d}: ${p}`)});for(let[u,f]of i)s.push(`${u}: ${f}`);let o=s.join(`
|
|
345
345
|
`),c=t[0].includes(`\r
|
|
346
346
|
`)?`\r
|
|
@@ -561,7 +561,7 @@ ${y}
|
|
|
561
561
|
`);return}e.dryRun||(0,Af.writeFileSync)(r,o.content,"utf-8"),process.stdout.write(JSON.stringify({path:i,changed:!0,dryRun:!!e.dryRun,removed:o.removed})+`
|
|
562
562
|
`)}catch(t){_e.handle(t)}})}a(W5,"repairFrontmatterCommand");var H5=require("fs"),z5=require("path"),Ii=be(Ze());var Yce="https://exocortex.my/ontology/find#Alias_sparql",Kce="https://exocortex.my/ontology/exo#Asset_label";function If(n){if(n&&typeof n=="object"&&"value"in n){let e=n.value;return typeof e=="string"?e:String(e)}return String(n)}a(If,"nodeValue");async function Xce(n,e){let t=await n.match(void 0,void 0,void 0),r=[];for(let s of t)If(s.predicate)!==Kce||If(s.object)!==e||r.push(If(s.subject));if(r.length===0)return null;let i=[];for(let s of r)for(let o of t)If(o.predicate)===Yce&&If(o.subject)===s&&i.push(If(o.object));if(i.length===0)return null;if(i.length>1)throw new rt(`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]}a(Xce,"resolveAliasFragment");var Qce=/^([a-z][a-zA-Z0-9]*)__([A-Za-z0-9_]+)$/,Jce="https://exocortex.my/ontology/";function Zce(n,e){let t=Qce.exec(e);if(t){let i=`<${Jce}${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}"`)}a(Zce,"bindValueLiteral");function Y5(){return new Ie("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("--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=>{_e.setFormat("text");try{if(n.sparql&&n.class)throw new rt("--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 rt("one of --sparql <query> or --class <value> is required",'exocortex find --class ems__Task OR exocortex find --sparql "SELECT ?path WHERE { ... }"');let e=(0,z5.resolve)(n.vault);if(!(0,H5.existsSync)(e))throw new Ke(e);let t=new $t(e),i=await new Ii.NoteToRDFConverter(t).convertVault(),s=new Ii.InMemoryTripleStore;await s.addAll(i);let o;if(n.class){let w=await Xce(s,"class");if(w===null)throw new rt('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");o=`SELECT ?path WHERE { ${Zce(w,n.class)} }`}else o=n.sparql;let c=Qb(o);c=hf(c);let l=new Ii.ExoQLParser,u=Jb(Xb(e));u.size>0&&l.setVaultPrefixes(u);let f=l.parse(c),p=new Ii.ExoQLAlgebraTranslator().translate(f);p.type!=="construct"&&(p=new Ii.AlgebraOptimizer().optimize(p));let g=await new Ii.ExoQLQueryExecutor(s).executeAll(p),y="obsidian://vault/";for(let w of g){let A=w.toJSON().path;if(typeof A!="string"||!A.startsWith(y))continue;let O=A.slice(y.length),T;try{T=decodeURIComponent(O)}catch{T=O}process.stdout.write(T+`
|
|
563
563
|
`)}}catch(e){_e.handle(e),process.exit(5)}})}a(Y5,"findCommand");var $x=require("fs"),ea=require("path"),Ve=be(Ze());var t$=be(Ze()),Dt=be(J5());var Z5="obsidian://vault/";function wle(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(Z5))r=decodeURI(r.slice(Z5.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}}}a(wle,"createCliPathResolver");var Ele=["openFile","sparqlSelect","getActiveFileIRI","getActiveFilePath","trashFile","duplicateFile"],jx=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{a(this,"CliServiceNotImplementedError")}};function e$(n){return{async execute(){throw new jx(n)}}}a(e$,"notImplementedService");function vle(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}}a(vle,"createCliClassResolver");function r$(n,e){for(let t of Ele)n.register(t,e$(t));for(let t of["updateProperty","removeProperty","setStatus","createAsset"])n.register(t,e$(t));if(e){if(e.fsAdapter){let t=new t$.FrontmatterService,r=wle(e.fsAdapter);n.register("updateProperty",(0,Dt.createUpdatePropertyService)(e.fsAdapter,t,r)),n.register("removeProperty",(0,Dt.createRemovePropertyService)(e.fsAdapter,t,r)),n.register("setStatus",(0,Dt.createSetStatusService)(e.fsAdapter,t,r)),n.register("createAsset",(0,Dt.createCreateAssetService)(e.vaultAdapter,e.fsAdapter,vle(e.vaultAdapter))),n.register("instantiatePrototypeSubtree",(0,Dt.createInstantiatePrototypeSubtreeService)(e.vaultAdapter,e.fsAdapter))}n.register("createRelatedTask",(0,Dt.createCreateRelatedTaskService)(e.vaultAdapter,e.genericAssetCreationService)),n.register("createRelatedProject",(0,Dt.createCreateRelatedProjectService)(e.vaultAdapter,e.genericAssetCreationService)),n.register("archiveAsset",(0,Dt.createArchiveAssetService)(e.vaultAdapter,e.archiveAssetService)),n.register("planForEvening",(0,Dt.createPlanForEveningService)(e.vaultAdapter,e.taskStatusService)),n.register("cleanProperties",(0,Dt.createCleanPropertiesService)(e.vaultAdapter,e.propertyCleanupService)),n.register("renameToUid",(0,Dt.createRenameToUidService)(e.vaultAdapter,e.renameToUidService)),n.register("repairFolder",(0,Dt.createRepairFolderService)(e.vaultAdapter,e.folderRepairService)),n.register("fixMissingLabel",(0,Dt.createFixMissingLabelService)(e.vaultAdapter,e.fixMissingLabelService))}}a(r$,"populateCliServiceRegistry");function Tle(n,e){let t=n.getAbstractFileByPath(e),r=t!==null&&"basename"in t?t:null,i=r?n.getFrontmatter(r):null,s=i&&typeof i=="object"?i.exo__Asset_label:void 0;return{uuid:r?.basename??e.replace(/^.*\//,"").replace(/\.md$/,""),path:e,label:typeof s=="string"?s:""}}a(Tle,"buildCreatedAsset");var Ale=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function Ile(){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(`
|
|
564
|
-
`).map(t=>t.trim()).filter(t=>t.length>0)}a(Ile,"readStdinLines");function h_(n){if(n&&typeof n=="object"&&"value"in n){let e=n.value;return typeof e=="string"?e:String(e)}return String(n)}a(h_,"nodeValue");async function xle(n,e){let t=new Ve.IRI("https://exocortex.my/ontology/exocmd#Command_cliName"),r=await n.match(void 0,t,void 0),i=[];for(let s of r)if(h_(s.object)===e){let l=h_(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 rt(`Ambiguous cliName "${e}" \u2014 resolves to ${i.length} commands: ${i.join(", ")}`,"Use the UUID directly: exocortex apply <uuid> <path>");return i[0]}a(xle,"resolveSlugToUuid");async function Rle(n,e){let t=new Ve.IRI("https://exocortex.my/ontology/exocmd#Command_destructive"),r=await n.match(void 0,t,void 0);for(let i of r)if(h_(i.subject).includes(e)){let o=h_(i.object);if(o==="true"||o==="True")return!0}return!1}a(Rle,"isDestructive");async function Cle(n,e,t,r,i,s,o,c){let l={ok:!1,created:[]},u=(0,ea.resolve)(n,i);if(!(0,$x.existsSync)(u))return console.error(`\u274C Target file not found: ${i}`),l;let f=(0,ea.relative)(n,u);if(f===".."||f.startsWith(`..${ea.sep}`)||(0,ea.isAbsolute)(f))return console.error(`\u274C Target is outside the vault: ${i} (vault: ${n})`),l;let d=new Ve.CommandResolver(e),p=await d.loadCommand(r);if(!p)return console.error(`\u274C Command with UID "${r}" not found.`),l;if(await Rle(e,r)&&!s.dryRun&&!s.yes)return console.error(`\u274C Command "${p.name}" is marked destructive. Add --dry-run to preview, or --yes to apply.`),l;let g=(0,Ve.vaultPathToIRI)(f),y=new $t(n),w=new Ve.FolderRepairService(y),S=new Ve.PreconditionEvaluator(e,void 0,{clock:o});(0,Ve.registerDefaultHostFunctions)(S),S.registerHostFunction("isInWrongFolder",e_(y,w)),S.registerHostFunction("hasObsoleteProperties",t_(y));let A=y.getAbstractFileByPath(f),O=A!==null&&"basename"in A?A:null,T=O?y.getFrontmatter(O):null,I=T&&typeof T=="object"?T.exo__Asset_uid:void 0,P={targetIRI:g,filePath:f,fileBasename:O?.basename,assetUid:typeof I=="string"?I:void 0};if(!await S.evaluate(p.precondition,g,P))return console.error(`\u274C Precondition not satisfied for "${p.name}" on "${f}".`),l;if(s.dryRun)return s.json||console.log(`\u{1F50D} Dry-run: would apply "${p.name}" to "${f}" (precondition passed).`),{ok:!0,created:[]};let j=new Ve.ServiceRegistry,$=new Ve.GenericAssetCreationService(y).withDeterminism({clock:o,uidGenerator:c}),U=new Ve.ArchiveAssetService(y),L=new Ve.PropertyCleanupService(y),ae=new Ve.FixMissingLabelService(y),he=new Ve.RenameToUidService(y),K=new Ve.TaskStatusService(y,new Ve.EffortStatusWorkflow,new Ve.StatusTimestampService(y)),ce=new Mn(n);r$(j,{vaultAdapter:y,fsAdapter:ce,genericAssetCreationService:$,archiveAssetService:U,taskStatusService:K,propertyCleanupService:L,fixMissingLabelService:ae,renameToUidService:he,folderRepairService:w});let X=new Ve.NamedQueryRunner(new mf(e,ce),e),ve=new Ve.GroundingExecutor(ce,ce,j,(0,Ve.createVaultFrontmatterClassLabelResolver)(ce),{clock:o,uidGenerator:c,workflowResolver:t,groundingLoader:a(pe=>d.loadGroundingByUid(pe),"groundingLoader"),templateLoader:a(async pe=>{let Se=await ce.findFileByUID(pe);return Se?(0,Ve.stripTemplateFrontmatter)(await ce.readFile(Se)):null},"templateLoader"),namedQueryRunner:X,refToFolder:(0,Ve.createVaultFrontmatterRefToFolderResolver)(ce),refToFrontmatter:(0,Ve.createVaultFrontmatterRefToFrontmatterResolver)(ce)}),ie;if(s.input)try{let pe=JSON.parse(s.input);if(typeof pe!="object"||pe===null||Array.isArray(pe))throw new Error("must be a JSON object");ie=pe}catch(pe){let Se=pe instanceof Error?pe.message:String(pe);return console.error(`\u274C --input: invalid JSON object (${Se})`),l}let ne=await ve.execute(p.grounding,g,f,ie);if(ne.success){let pe=[];ne.openPath&&pe.push(ne.openPath),ne.createdPaths&&pe.push(...ne.createdPaths);let Se=[],te=new Set;for(let ge of pe)te.has(ge)||(te.add(ge),Se.push(Tle(y,ge)));if(!s.json){let ge=p.successMessage??`Applied "${p.name}" to "${f}".`,Fe=ne.openPath??ne.createdPaths?.[0],se=Fe?` \u2192 ${Fe}`:"";console.log(`\u2705 ${ge}${se}`)}return{ok:!0,created:Se}}else return console.error(`\u274C "${p.name}" failed on "${f}": ${ne.error}`),l}a(Cle,"executeOnTarget");function n$(){return new Ie("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>"
|
|
564
|
+
`).map(t=>t.trim()).filter(t=>t.length>0)}a(Ile,"readStdinLines");function h_(n){if(n&&typeof n=="object"&&"value"in n){let e=n.value;return typeof e=="string"?e:String(e)}return String(n)}a(h_,"nodeValue");async function xle(n,e){let t=new Ve.IRI("https://exocortex.my/ontology/exocmd#Command_cliName"),r=await n.match(void 0,t,void 0),i=[];for(let s of r)if(h_(s.object)===e){let l=h_(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 rt(`Ambiguous cliName "${e}" \u2014 resolves to ${i.length} commands: ${i.join(", ")}`,"Use the UUID directly: exocortex apply <uuid> <path>");return i[0]}a(xle,"resolveSlugToUuid");async function Rle(n,e){let t=new Ve.IRI("https://exocortex.my/ontology/exocmd#Command_destructive"),r=await n.match(void 0,t,void 0);for(let i of r)if(h_(i.subject).includes(e)){let o=h_(i.object);if(o==="true"||o==="True")return!0}return!1}a(Rle,"isDestructive");async function Cle(n,e,t,r,i,s,o,c){let l={ok:!1,created:[]},u=(0,ea.resolve)(n,i);if(!(0,$x.existsSync)(u))return console.error(`\u274C Target file not found: ${i}`),l;let f=(0,ea.relative)(n,u);if(f===".."||f.startsWith(`..${ea.sep}`)||(0,ea.isAbsolute)(f))return console.error(`\u274C Target is outside the vault: ${i} (vault: ${n})`),l;let d=new Ve.CommandResolver(e),p=await d.loadCommand(r);if(!p)return console.error(`\u274C Command with UID "${r}" not found.`),l;if(await Rle(e,r)&&!s.dryRun&&!s.yes)return console.error(`\u274C Command "${p.name}" is marked destructive. Add --dry-run to preview, or --yes to apply.`),l;let g=(0,Ve.vaultPathToIRI)(f),y=new $t(n),w=new Ve.FolderRepairService(y),S=new Ve.PreconditionEvaluator(e,void 0,{clock:o});(0,Ve.registerDefaultHostFunctions)(S),S.registerHostFunction("isInWrongFolder",e_(y,w)),S.registerHostFunction("hasObsoleteProperties",t_(y));let A=y.getAbstractFileByPath(f),O=A!==null&&"basename"in A?A:null,T=O?y.getFrontmatter(O):null,I=T&&typeof T=="object"?T.exo__Asset_uid:void 0,P={targetIRI:g,filePath:f,fileBasename:O?.basename,assetUid:typeof I=="string"?I:void 0};if(!await S.evaluate(p.precondition,g,P))return console.error(`\u274C Precondition not satisfied for "${p.name}" on "${f}".`),l;if(s.dryRun)return s.json||console.log(`\u{1F50D} Dry-run: would apply "${p.name}" to "${f}" (precondition passed).`),{ok:!0,created:[]};let j=new Ve.ServiceRegistry,$=new Ve.GenericAssetCreationService(y).withDeterminism({clock:o,uidGenerator:c}),U=new Ve.ArchiveAssetService(y),L=new Ve.PropertyCleanupService(y),ae=new Ve.FixMissingLabelService(y),he=new Ve.RenameToUidService(y),K=new Ve.TaskStatusService(y,new Ve.EffortStatusWorkflow,new Ve.StatusTimestampService(y)),ce=new Mn(n);r$(j,{vaultAdapter:y,fsAdapter:ce,genericAssetCreationService:$,archiveAssetService:U,taskStatusService:K,propertyCleanupService:L,fixMissingLabelService:ae,renameToUidService:he,folderRepairService:w});let X=new Ve.NamedQueryRunner(new mf(e,ce),e),ve=new Ve.GroundingExecutor(ce,ce,j,(0,Ve.createVaultFrontmatterClassLabelResolver)(ce),{clock:o,uidGenerator:c,workflowResolver:t,groundingLoader:a(pe=>d.loadGroundingByUid(pe),"groundingLoader"),templateLoader:a(async pe=>{let Se=await ce.findFileByUID(pe);return Se?(0,Ve.stripTemplateFrontmatter)(await ce.readFile(Se)):null},"templateLoader"),namedQueryRunner:X,refToFolder:(0,Ve.createVaultFrontmatterRefToFolderResolver)(ce),refToFrontmatter:(0,Ve.createVaultFrontmatterRefToFrontmatterResolver)(ce)}),ie;if(s.input)try{let pe=JSON.parse(s.input);if(typeof pe!="object"||pe===null||Array.isArray(pe))throw new Error("must be a JSON object");ie=pe}catch(pe){let Se=pe instanceof Error?pe.message:String(pe);return console.error(`\u274C --input: invalid JSON object (${Se})`),l}let ne=await ve.execute(p.grounding,g,f,ie);if(ne.success){let pe=[];ne.openPath&&pe.push(ne.openPath),ne.createdPaths&&pe.push(...ne.createdPaths);let Se=[],te=new Set;for(let ge of pe)te.has(ge)||(te.add(ge),Se.push(Tle(y,ge)));if(!s.json){let ge=p.successMessage??`Applied "${p.name}" to "${f}".`,Fe=ne.openPath??ne.createdPaths?.[0],se=Fe?` \u2192 ${Fe}`:"";console.log(`\u2705 ${ge}${se}`)}return{ok:!0,created:Se}}else return console.error(`\u274C "${p.name}" failed on "${f}": ${ne.error}`),l}a(Cle,"executeOnTarget");function n$(){return new Ie("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 a grounding. Value-setting commands need a value key, e.g. set-planned-start / set-scheduled-date: --input '{"value":"<ISO>"}'; set-label: --input '{"value":"New label"}'. The required key is named in the error if omitted.`).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)").option("--json","Emit a machine-readable JSON result ({command,target,created:[{uuid,path,label}]}) instead of human-readable output").action(async(n,e,t)=>{_e.setFormat("text");try{let r=(0,ea.resolve)(t.vault);if(!(0,$x.existsSync)(r))throw new Ke(r);a_(r);let i=t.frozenClock?(0,Ve.frozenClock)(t.frozenClock):(0,Ve.liveClock)(),s=t.seed?(0,Ve.seededUidGenerator)(t.seed):(0,Ve.liveUidGenerator)(),o=new $t(r),l=await new Ve.NoteToRDFConverter(o).convertVault(),u=new Ve.InMemoryTripleStore;await u.addAll(l);let f=new Ve.WorkflowResolver(u),d;if(Ale.test(n))d=n;else{let w=await xle(u,n);w||(console.error(`\u274C No command found with UUID or cliName "${n}".`),process.exit(3)),d=w}let p;if(e)p=[e];else if(p=await Ile(),p.length===0)throw new rt("No target path provided and stdin is empty.","exocortex apply <uuid> <path> OR exocortex find ... | exocortex apply <uuid>");let h=0,g=0,y=[];for(let w of p){let S=await Cle(r,u,f,d,w,t,i,s);S.ok?h++:g++,y.push(...S.created)}if(p.length>1&&!t.json&&console.log(`
|
|
565
565
|
\u{1F4CA} Applied to ${h}/${p.length} target(s) (${g} failed).`),t.json){let w={command:n,created:y};e?w.target=e:w.targets=p,process.stdout.write(JSON.stringify(w)+`
|
|
566
566
|
`)}g>0&&process.exit(5)}catch(r){_e.handle(r),process.exit(5)}})}a(n$,"applyCommand");var m_=require("fs"),Bx=be(require("path")),i$=require("path"),s$=be(Ze());var Ole=new Set(["templates","09 templates"]);function xi(n){return n.split("/").some(e=>Ole.has(e.toLowerCase()))}a(xi,"isTemplatesPath");function Ks(n){return n.split("/").includes("node_modules")}a(Ks,"isNodeModulesPath");var Ple=5;function Ux(n,e,t){n[e].length<Ple&&n[e].push(t)}a(Ux,"addExample");async function Fle(n){let e=new _n(n),t=await e.indexedAssets(),r=[],i={"empty-isDefinedBy":0,"bang-prefix":0,unresolvable:0},s={"empty-isDefinedBy":[],"bang-prefix":[],unresolvable:[]},o=0;for(let{path:c,metadata:l}of t){if(c.split("/").includes("node_modules")||xi(c))continue;let u=l.exo__Asset_isDefinedBy,f=(0,s$.extractAssetReference)(u);if(!f){i["empty-isDefinedBy"]++,Ux(s,"empty-isDefinedBy",c);continue}if(f.startsWith("!")){i["bang-prefix"]++,Ux(s,"bang-prefix",c);continue}let d=await Ja(e,f,c);if(!d){i.unresolvable++,Ux(s,"unresolvable",c);continue}o++;let p=Dx(Bx.default.dirname(d)),h=Dx(Bx.default.dirname(c));p!==h&&r.push({path:c,isDefinedBy:f,expectedFolder:p,actualFolder:h})}return{vaultPath:n,totalFiles:t.length,checked:o,violations:r,skips:i,skipExamples:s}}a(Fle,"scanVaultForCoLocation");function o$(){return new Ie("co-location").description("Detect asset\u2013ontology co-location violations: any asset not in the folder of its exo__Asset_isDefinedBy ontology file (fail-open, skip-accounted)").requiredOption("--vault <path>","Vault root directory").option("--output <type>","Response format: text|json","text").action(async n=>{let e=n.output??"text";_e.setFormat(e);try{let t=(0,i$.resolve)(n.vault);if(!(0,m_.existsSync)(t)||!(0,m_.statSync)(t).isDirectory())throw new Ke(t);let r=await Fle(t),i=r.skips["empty-isDefinedBy"]+r.skips["bang-prefix"]+r.skips.unresolvable;if(e==="json")console.log(JSON.stringify({vaultPath:r.vaultPath,totalFiles:r.totalFiles,checked:r.checked,violationCount:r.violations.length,violations:r.violations,skips:r.skips,skipTotal:i,skipExamples:r.skipExamples,clean:r.violations.length===0},null,2));else{if(r.violations.length===0)console.log(`OK ${t}: 0 co-location violations (${r.checked}/${r.totalFiles} checked)`);else{console.error(`FAIL ${t}: ${r.violations.length} co-location violation(s) (${r.checked}/${r.totalFiles} checked):`);for(let s of r.violations)console.error(` ${s.path}
|
|
567
567
|
isDefinedBy=${s.isDefinedBy} expected=${s.expectedFolder}/ actual=${s.actualFolder}/`)}console.error(`
|
|
@@ -638,7 +638,7 @@ Duplicate bindings (${n.duplicates.length}) \u2014 uid claimed by >1 test (warni
|
|
|
638
638
|
Skipped floor check for ${n.unknownPriority} requirement(s) with unparseable priority (fail-open).`),n.clean?e==="hard"&&!n.rampReady?console.error(`
|
|
639
639
|
FAIL (hard gate): ramp not ready \u2014 ${n.p0Orphans} P0 requirement(s) unbound`+(n.p0Total===0?" (no P0 requirements found)":"")+"."):console.log(`
|
|
640
640
|
OK: no hard findings (dangling tags + binding-class floor are clean).`):console.error(`
|
|
641
|
-
FAIL: ${n.dangling.length} dangling + ${n.floorViolations.length} floor violation(s) + ${n.activeViolations.length} active-requirement invariant violation(s) + ${n.danglingEvidence.length} dangling evidence link(s).`)}a(afe,"renderText");function cfe(n,e,t){return!n.clean||t&&n.orphans.length>0||e==="hard"&&!n.rampReady}a(cfe,"isHardFail");function t6(){return new Ie("audit").description("Audit requirement\u2194test traceability: orphans, dangling @req tags, duplicate bindings, binding-class floor, coverage, P0 ramp-readiness").requiredOption("--reqs <path>","Directory tree containing req__Requirement assets (a vault or a reqs assetspace clone)").option("--tests <path>","Test-corpus root scanned for @req:<uid> tags",".").option("--output <type>","Response format: text|json","text").option("--strict","Also exit 1 on orphan requirements",!1).option("--gate <mode>","Gate mode: soft (warn only on hard findings) | hard (also block when the P0 checklist is not ramp-ready)","soft").action(async n=>{let e=n.output??"text";_e.setFormat(e);let t=n.gate==="hard"?"hard":"soft";try{let r=(0,tc.resolve)(n.reqs);if(!(0,rc.existsSync)(r)||!(0,rc.statSync)(r).isDirectory())throw new Ke(r);let i=(0,tc.resolve)(n.tests??".");if(!(0,rc.existsSync)(i)||!(0,rc.statSync)(i).isDirectory())throw new Ke(i);let[s,o]=await Promise.all([rfe(r),ife(i)]),c=sfe(s,o);e==="json"?console.log(JSON.stringify({...c,gate:t},null,2)):afe(c,t),cfe(c,t,n.strict===!0)&&(process.exitCode=1)}catch(r){_e.handle(r)}})}a(t6,"requirementsAuditCommand");function r6(){let n=new Ie("requirements").description("Requirements-management tooling (RFC 0003): traceability checker");return n.addCommand(t6()),n}a(r6,"requirementsCommand");function n6(){let n=new Ie("cache").description("SPARQL query-result cache maintenance (clear / stats). For read-after-write, prefer `query --no-cache` or a short `--cache-ttl`.");return n.addCommand(lfe()),n.addCommand(ufe()),n}a(n6,"cacheCommand");function lfe(){return new Ie("clear").description("Remove all cached SPARQL query results from disk").option("--output <format>","Output format: text | json","text").action(async n=>{let e=new Ho,t=await e.getCacheStats();if(await e.clear(),n.output==="json"){console.log(JSON.stringify({success:!0,data:{action:"clear",cacheDir:e.getCacheDir(),clearedEntries:t.entryCount,freedBytes:t.totalSizeBytes}}));return}console.log(`\u{1F5D1}\uFE0F Cleared ${t.entryCount} cached query result(s) (${i6(t.totalSizeBytes)} freed) from ${e.getCacheDir()}`)})}a(lfe,"cacheClearCommand");function ufe(){return new Ie("stats").description("Show query-result cache entry count and total size").option("--output <format>","Output format: text | json","text").action(async n=>{let e=new Ho,t=await e.getCacheStats();if(n.output==="json"){console.log(JSON.stringify({success:!0,data:{cacheDir:e.getCacheDir(),entryCount:t.entryCount,totalSizeBytes:t.totalSizeBytes}}));return}console.log(`\u{1F4CA} SPARQL query-result cache: ${e.getCacheDir()}`),console.log(` Entries: ${t.entryCount.toLocaleString()}`),console.log(` Size: ${i6(t.totalSizeBytes)}`)})}a(ufe,"cacheStatsCommand");function i6(n){return n<1024?`${n} B`:n<1024*1024?`${(n/1024).toFixed(1)} KB`:`${(n/(1024*1024)).toFixed(1)} MB`}a(i6,"formatBytes");function N_(n){let e=new Ie;return e.name("exocortex").description("CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more").version(n??"16.201.
|
|
641
|
+
FAIL: ${n.dangling.length} dangling + ${n.floorViolations.length} floor violation(s) + ${n.activeViolations.length} active-requirement invariant violation(s) + ${n.danglingEvidence.length} dangling evidence link(s).`)}a(afe,"renderText");function cfe(n,e,t){return!n.clean||t&&n.orphans.length>0||e==="hard"&&!n.rampReady}a(cfe,"isHardFail");function t6(){return new Ie("audit").description("Audit requirement\u2194test traceability: orphans, dangling @req tags, duplicate bindings, binding-class floor, coverage, P0 ramp-readiness").requiredOption("--reqs <path>","Directory tree containing req__Requirement assets (a vault or a reqs assetspace clone)").option("--tests <path>","Test-corpus root scanned for @req:<uid> tags",".").option("--output <type>","Response format: text|json","text").option("--strict","Also exit 1 on orphan requirements",!1).option("--gate <mode>","Gate mode: soft (warn only on hard findings) | hard (also block when the P0 checklist is not ramp-ready)","soft").action(async n=>{let e=n.output??"text";_e.setFormat(e);let t=n.gate==="hard"?"hard":"soft";try{let r=(0,tc.resolve)(n.reqs);if(!(0,rc.existsSync)(r)||!(0,rc.statSync)(r).isDirectory())throw new Ke(r);let i=(0,tc.resolve)(n.tests??".");if(!(0,rc.existsSync)(i)||!(0,rc.statSync)(i).isDirectory())throw new Ke(i);let[s,o]=await Promise.all([rfe(r),ife(i)]),c=sfe(s,o);e==="json"?console.log(JSON.stringify({...c,gate:t},null,2)):afe(c,t),cfe(c,t,n.strict===!0)&&(process.exitCode=1)}catch(r){_e.handle(r)}})}a(t6,"requirementsAuditCommand");function r6(){let n=new Ie("requirements").description("Requirements-management tooling (RFC 0003): traceability checker");return n.addCommand(t6()),n}a(r6,"requirementsCommand");function n6(){let n=new Ie("cache").description("SPARQL query-result cache maintenance (clear / stats). For read-after-write, prefer `query --no-cache` or a short `--cache-ttl`.");return n.addCommand(lfe()),n.addCommand(ufe()),n}a(n6,"cacheCommand");function lfe(){return new Ie("clear").description("Remove all cached SPARQL query results from disk").option("--output <format>","Output format: text | json","text").action(async n=>{let e=new Ho,t=await e.getCacheStats();if(await e.clear(),n.output==="json"){console.log(JSON.stringify({success:!0,data:{action:"clear",cacheDir:e.getCacheDir(),clearedEntries:t.entryCount,freedBytes:t.totalSizeBytes}}));return}console.log(`\u{1F5D1}\uFE0F Cleared ${t.entryCount} cached query result(s) (${i6(t.totalSizeBytes)} freed) from ${e.getCacheDir()}`)})}a(lfe,"cacheClearCommand");function ufe(){return new Ie("stats").description("Show query-result cache entry count and total size").option("--output <format>","Output format: text | json","text").action(async n=>{let e=new Ho,t=await e.getCacheStats();if(n.output==="json"){console.log(JSON.stringify({success:!0,data:{cacheDir:e.getCacheDir(),entryCount:t.entryCount,totalSizeBytes:t.totalSizeBytes}}));return}console.log(`\u{1F4CA} SPARQL query-result cache: ${e.getCacheDir()}`),console.log(` Entries: ${t.entryCount.toLocaleString()}`),console.log(` Size: ${i6(t.totalSizeBytes)}`)})}a(ufe,"cacheStatsCommand");function i6(n){return n<1024?`${n} B`:n<1024*1024?`${(n/1024).toFixed(1)} KB`:`${(n/(1024*1024)).toFixed(1)} MB`}a(i6,"formatBytes");function N_(n){let e=new Ie;return e.name("exocortex").description("CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more").version(n??"16.201.5"),e.addCommand(Y5()),e.addCommand(n$()),e.addCommand(Y9()),e.addCommand(J9()),e.addCommand(y5()),e.addCommand(Z9()),e.addCommand(s5()),e.addCommand(T5()),e.addCommand(C5()),e.addCommand($5()),e.addCommand(B5()),e.addCommand(V5()),e.addCommand(G5()),e.addCommand(W5()),e.addCommand(v$()),e.addCommand(I$()),e.addCommand(B$()),e.addCommand(q$()),e.addCommand(H$()),e.addCommand(z$()),e.addCommand(Q$()),e.addCommand(F$()),e.addCommand(j$()),e.addCommand(r6()),e.addCommand(n6()),e}a(N_,"createProgram");N_().parse();0&&(module.exports={createProgram});
|
|
642
642
|
/*! Bundled license information:
|
|
643
643
|
|
|
644
644
|
reflect-metadata/Reflect.js:
|
package/package.json
CHANGED