@kitelev/exocortex-cli 15.70.1 → 15.70.2

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 +2 -2
  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 v15.70.1
2
+ // @kitelev/exocortex-cli v15.70.2
3
3
  // CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more
4
4
  // License: MIT
5
5
 
@@ -692,7 +692,7 @@ ${Cr.dump(i,{lineWidth:-1})}---
692
692
  \u{1F50D} Dry-run: command "${l.name}" on "${t.target}"
693
693
  `),console.log(" Precondition: passed \u2705"),console.log(" Grounding (would execute):"),aS(l.grounding," ");return}let h=new kt.ServiceRegistry;RR(h);let p=new Dt(i),b=await new kt.GroundingExecutor(p,p,h).execute(l.grounding,u,t.target);if(r==="json"){let E=Z.success({command:l.name,target:t.target,preconditionPassed:!0,executed:!0,success:b.success,...b.error&&{error:b.error},...l.successMessage&&b.success&&{message:l.successMessage}});console.log(JSON.stringify(E,null,2))}else if(b.success){let E=l.successMessage??`Command "${l.name}" executed successfully.`;console.log(`\u2705 ${E}`)}else console.log(`\u274C Command "${l.name}" failed: ${b.error}`),process.exitCode=5}catch(i){L.handle(i)}}),n.command("validate").description("Validate all dynamic command definitions in vault").option("--vault <path>","Path to Obsidian vault",process.cwd()).option("--output <type>","Response format: text|json","text").action(async e=>{let t=e.output||"text";L.setFormat(t);try{let r=(0,ls.resolve)(e.vault);if(!(0,cs.existsSync)(r))throw new Ie(r);let i=DH(r);if(t==="json"){let s=Z.success({totalCommands:iS(r).length,totalIssues:i.reduce((a,c)=>a+c.issues.length,0),commandsWithIssues:i.length,issues:i});console.log(JSON.stringify(s,null,2))}else{let s=iS(r);if(i.length===0)console.log(`\u2705 All ${s.length} dynamic command(s) are valid.`);else{let a=i.reduce((c,l)=>c+l.issues.length,0);console.log(`\u274C Found ${a} issue(s) in ${i.length} command(s) out of ${s.length} total:
694
694
  `);for(let c of i){console.log(` \u{1F4C4} ${c.label} (${c.uid}):`);for(let l of c.issues)console.log(` \u2022 ${l}`);console.log()}process.exitCode=5}}}catch(r){L.handle(r)}}),n}o(DR,"dynamicCommandCommand");function iS(n){let e=[],t=[];oS(n,t);for(let{filePath:r,fm:i}of t){if(!Cl(i,"exocmd__Command"))continue;let s=i.exo__Asset_uid??"",a=i.exo__Asset_label??FR(r),c=i.exocmd__Command_category,l=i.exocmd__Command_icon,u=!!i.exocmd__Command_precondition,f=i.exocmd__Command_grounding,d;if(f){let h=_g(String(f)),p=t.find(_=>_.fm.exo__Asset_uid===h&&Cl(_.fm,"exocmd__Grounding"));p&&(d=p.fm.exocmd__Grounding_type)}e.push({filePath:r,uid:s,label:a,category:c,icon:l,hasPrecondition:u,groundingType:d})}return e}o(iS,"scanCommands");async function RH(n,e){let{tripleStore:t}=await sS(n),r=new kt.CommandResolver(t),i=await r.findBindings(),s=new Set;for(let c of i)s.add(c.commandRef);let a=[];for(let c of s){let l=await r.loadCommand(c);l&&a.push({filePath:"",uid:l.id,label:l.name,category:l.category,icon:l.icon,hasPrecondition:!!l.precondition,groundingType:l.grounding.type})}return a}o(RH,"listCommandsForTarget");function DH(n){let e=[],t=[];oS(n,t);let r=new Map;for(let i of t){let s=i.fm.exo__Asset_uid;s&&r.set(s,i)}for(let{filePath:i,fm:s}of t){if(!Cl(s,"exocmd__Command"))continue;let a=s.exo__Asset_uid??"",c=s.exo__Asset_label??FR(i),l=[];a||l.push("Missing exo__Asset_uid"),s.exo__Asset_label||l.push("Missing exo__Asset_label");let u=s.exocmd__Command_grounding;if(!u)l.push("Missing exocmd__Command_grounding (required)");else{let h=_g(String(u)),p=r.get(h);if(!p)l.push(`Grounding reference "${h}" not found in vault`);else if(!Cl(p.fm,"exocmd__Grounding"))l.push(`Grounding reference "${h}" is not an exocmd__Grounding asset`);else{let _=p.fm,b=_.exocmd__Grounding_type;if(!b)l.push(`Grounding "${h}" missing exocmd__Grounding_type`);else if(Object.values(kt.GroundingType).includes(b)||l.push(`Grounding "${h}" has invalid type "${b}"`),(b===kt.GroundingType.PROPERTY_SET||b===kt.GroundingType.PROPERTY_DELETE)&&!_.exocmd__Grounding_targetProperty&&l.push(`Grounding "${h}" (${b}) missing targetProperty`),b===kt.GroundingType.PROPERTY_SET&&!_.exocmd__Grounding_targetValue&&l.push(`Grounding "${h}" (property_set) missing targetValue`),b===kt.GroundingType.SERVICE_CALL){let w=_.exocmd__Grounding_targetProperty;if(!w)l.push(`Grounding "${h}" (service_call) missing targetProperty (serviceId)`);else{let A=nS;A.includes(String(w))||l.push(`Grounding "${h}" references unknown service "${w}". Known services: ${A.join(", ")}`)}}}}let f=s.exocmd__Command_precondition;if(f){let h=_g(String(f)),p=r.get(h);p?Cl(p.fm,"exocmd__Precondition")?p.fm.exocmd__Precondition_sparqlAsk||l.push(`Precondition "${h}" missing sparqlAsk`):l.push(`Precondition reference "${h}" is not an exocmd__Precondition asset`):l.push(`Precondition reference "${h}" not found in vault`)}t.some(h=>Cl(h.fm,"exocmd__CommandBinding")?_g(String(h.fm.exocmd__CommandBinding_command??""))===a:!1)||l.push("No CommandBinding references this command (command will be unused)"),l.length>0&&e.push({uid:a,label:c,filePath:i,issues:l})}return e}o(DH,"validateCommands");async function sS(n){let e=new qr(n),r=await new kt.NoteToRDFConverter(e).convertVault(),i=new kt.InMemoryTripleStore;return await i.addAll(r),{tripleStore:i}}o(sS,"buildTripleStore");function aS(n,e){if(console.log(`${e}ID: ${n.id}`),console.log(`${e}Label: ${n.label}`),console.log(`${e}Type: ${n.type}`),n.targetProperty&&console.log(`${e}Target property: ${n.targetProperty}`),n.targetValue!==void 0&&console.log(`${e}Target value: ${n.targetValue}`),n.sparqlUpdate&&console.log(`${e}SPARQL UPDATE: ${n.sparqlUpdate}`),n.steps&&n.steps.length>0){console.log(`${e}Steps (${n.steps.length}):`);for(let t=0;t<n.steps.length;t++)console.log(`${e} Step ${t+1}:`),aS(n.steps[t],e+" ")}}o(aS,"printGrounding");function oS(n,e){let t;try{t=(0,cs.readdirSync)(n,{withFileTypes:!0})}catch{return}for(let r of t){let i=(0,ls.join)(n,r.name);if(r.isDirectory()){if(r.name.startsWith(".")||r.name==="node_modules")continue;oS(i,e)}else if(r.name.endsWith(".md"))try{let s=(0,cs.readFileSync)(i,"utf-8"),a=IH.parse(s);a.exists&&e.push({filePath:i,fm:FH(a.content)})}catch{}}}o(oS,"collectParsedFiles");function FH(n){let e={},t=n.split(`
695
- `),r="",i=null;for(let s of t){if(s.match(/^\s+-\s+/)&&r){let c=s.replace(/^\s+-\s+/,"").trim();i||(i=[]),i.push(c),e[r]=i;continue}let a=s.match(/^([a-zA-Z0-9_]+):\s*(.*)/);if(a){r=a[1],i=null;let c=a[2].trim();if((c.startsWith('"')&&c.endsWith('"')||c.startsWith("'")&&c.endsWith("'"))&&(c=c.slice(1,-1)),c==="true"?c=!0:c==="false"&&(c=!1),c===""){e[r]=[],i=e[r];continue}e[r]=c}}return e}o(FH,"parseYamlFrontmatter");function Cl(n,e){let t=n.exo__Instance_class;if(!t)return!1;let r=Array.isArray(t)?t:[t];for(let i of r){if(typeof i!="string")continue;let s=i.match(/\[\[([^|\]]+)/);if((s?s[1]:i)===e)return!0}return!1}o(Cl,"hasClass");function _g(n){return typeof n!="string"?"":n.replace(/["'[\]]/g,"").trim()}o(_g,"normalizeWikilink");function FR(n){return(0,ls.basename)(n,".md")}o(FR,"extractLabelFromFilename");function NR(n){n.addCommand(NO()),n.addCommand(jO()),n.addCommand($O())}o(NR,"addQuerySubcommands");function LR(n){let e=new We;e.name("exocortex").description("CLI tool for Exocortex knowledge management system").version(n??"15.70.1");let t=e.command("exoql").description("ExoQL query execution and cache management");NR(t);let r=e.command("sparql").description("(deprecated) Use 'exoql' instead");return NR(r),r.hook("preAction",()=>{console.error('\u26A0\uFE0F "sparql" is deprecated. Use "exoql" instead.')}),e.addCommand(zI()),e.addCommand(KI()),e.addCommand(XI()),e.addCommand(ZI()),e.addCommand(eR()),e.addCommand(sR()),e.addCommand(lR()),e.addCommand(dR()),e.addCommand(mR()),e.addCommand(bR()),e.addCommand(ER()),e.addCommand(TR()),e.addCommand(xR()),e.addCommand(DR()),e}o(LR,"createProgram");LR().parse();0&&(module.exports={createProgram});
695
+ `),r="",i=null;for(let s of t){if(s.match(/^\s+-\s+/)&&r){let c=s.replace(/^\s+-\s+/,"").trim();i||(i=[]),i.push(c),e[r]=i;continue}let a=s.match(/^([a-zA-Z0-9_]+):\s*(.*)/);if(a){r=a[1],i=null;let c=a[2].trim();if((c.startsWith('"')&&c.endsWith('"')||c.startsWith("'")&&c.endsWith("'"))&&(c=c.slice(1,-1)),c==="true"?c=!0:c==="false"&&(c=!1),c===""){e[r]=[],i=e[r];continue}e[r]=c}}return e}o(FH,"parseYamlFrontmatter");function Cl(n,e){let t=n.exo__Instance_class;if(!t)return!1;let r=Array.isArray(t)?t:[t];for(let i of r){if(typeof i!="string")continue;let s=i.match(/\[\[([^|\]]+)/);if((s?s[1]:i)===e)return!0}return!1}o(Cl,"hasClass");function _g(n){return typeof n!="string"?"":n.replace(/["'[\]]/g,"").trim()}o(_g,"normalizeWikilink");function FR(n){return(0,ls.basename)(n,".md")}o(FR,"extractLabelFromFilename");function NR(n){n.addCommand(NO()),n.addCommand(jO()),n.addCommand($O())}o(NR,"addQuerySubcommands");function LR(n){let e=new We;e.name("exocortex").description("CLI tool for Exocortex knowledge management system").version(n??"15.70.2");let t=e.command("exoql").description("ExoQL query execution and cache management");NR(t);let r=e.command("sparql").description("(deprecated) Use 'exoql' instead");return NR(r),r.hook("preAction",()=>{console.error('\u26A0\uFE0F "sparql" is deprecated. Use "exoql" instead.')}),e.addCommand(zI()),e.addCommand(KI()),e.addCommand(XI()),e.addCommand(ZI()),e.addCommand(eR()),e.addCommand(sR()),e.addCommand(lR()),e.addCommand(dR()),e.addCommand(mR()),e.addCommand(bR()),e.addCommand(ER()),e.addCommand(TR()),e.addCommand(xR()),e.addCommand(DR()),e}o(LR,"createProgram");LR().parse();0&&(module.exports={createProgram});
696
696
  /*! Bundled license information:
697
697
 
698
698
  reflect-metadata/Reflect.js:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kitelev/exocortex-cli",
3
- "version": "15.70.1",
3
+ "version": "15.70.2",
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": {