@kitelev/exocortex-cli 15.161.0 → 15.161.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 +5 -5
  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.161.0
2
+ // @kitelev/exocortex-cli v15.161.2
3
3
  // CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more
4
4
  // License: MIT
5
5
 
@@ -797,10 +797,10 @@ exo__BacklinksTableBlock_columns:${f==="[]"?" []":f}
797
797
  --- END PREVIEW ---
798
798
  `)}o(CX,"printDryRunReport");function IX(n,e){let r=[`--- MIGRATION ${e.apply?"APPLY":"DRY RUN"} ---`,`Migrated pairs: ${n.pairs.length}`,`Skipped configs: ${n.skipped.length}`];e.apply&&(r.push(`Files written to: ${e.outDir}/ (relative to vault root)`),r.push(`Total files written: ${n.pairs.length*2} (${n.pairs.length} Layout + ${n.pairs.length} Block)`));for(let i of n.skipped)r.push(` SKIPPED: ${i.sourcePath} \u2014 ${i.reason}`);return r.push(`--- END SUMMARY ---
799
799
  `),r.join(`
800
- `)}o(IX,"formatSummary");function RX(n,e){return{mode:e.apply?"apply":"dry-run",outDir:e.outDir,pairsCount:n.pairs.length,skippedCount:n.skipped.length,pairs:n.pairs.map(t=>({sourceUid:t.sourceUid,sourcePath:t.sourcePath,layoutUid:t.layout.uid,blockUid:t.block.uid,warnings:t.warnings})),skipped:n.skipped}}o(RX,"summariseResult");var _u=K(Dt());function PX(){return new ue("start").description("Start the ValidatorDaemon process (long-running, Unix socket)").option("--socket <path>","Unix socket path",_u.DEFAULT_SOCKET_PATH).option("--idle-timeout <seconds>","Exit after N seconds of inactivity",String(Math.floor(_u.IDLE_TIMEOUT_MS/1e3))).action(async n=>{let e=n.socket,t=Number(n.idleTimeout)*1e3;await new _u.ValidatorDaemon(e,t).start()})}o(PX,"daemonStartCommand");function mN(){let n=new ue("daemon").description("Manage the ValidatorDaemon background process");return n.addCommand(PX()),n}o(mN,"daemonCommand");var Ln=require("fs"),gN=require("os"),va=require("path");var OX="dda12c48-6886-4624-8710-ed4ba92ce2b3";function yN(n){let e=n.match(/^---\r?\n([\s\S]*?)\r?\n---/);if(!e)return{};let t={},r=e[1].split(`
801
- `);for(let i of r){let s=i.match(/^([\w]+):\s*"?([^"]*)"?\s*$/);s&&(t[s[1]]=s[2])}return t}o(yN,"parseFrontmatterRaw");function FX(n){return n.replace(/^---[\s\S]*?---\r?\n/,"").replace(/```[\s\S]*?```/g," ").replace(/\[\[([^\]|]+)(?:\|[^\]]+)?\]\]/g,"$1").replace(/#+\s/g," ").replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/[*_`]/g,"").toLowerCase()}o(FX,"extractBodyText");function _N(n,e){return n.exo__Asset_label?n.exo__Asset_label:e.split("/").pop()?.replace(/\.md$/,"")??""}o(_N,"extractLabel");function DX(n){let e=n.match(/^---\r?\n([\s\S]*?)\r?\n---/);if(!e)return[];let t=[],r=e[1].split(`
802
- `),i=!1;for(let s of r){if(s.match(/^aliases:\s*$/)){i=!0;continue}if(i){let c=s.match(/^\s+-\s+"?([^"]*)"?\s*$/);c?t.push(c[1].trim()):!s.startsWith(" ")&&!s.startsWith(" ")&&(i=!1)}let a=s.match(/^aliases:\s+"?([^"\n]+)"?\s*$/);a&&a[1].trim()&&t.push(a[1].trim())}return t.filter(Boolean)}o(DX,"extractAliases");function NX(n){return n.includes(OX)}o(NX,"isConceptFile");function ZE(n){let e=[],t=(0,Ln.readdirSync)(n);for(let r of t){if(r.startsWith(".")||r==="node_modules")continue;let i=(0,va.join)(n,r);(0,Ln.statSync)(i).isDirectory()?e.push(...ZE(i)):r.endsWith(".md")&&e.push(i)}return e}o(ZE,"walkMdFiles");function LX(n){let e=ZE(n),t=[];for(let r of e){let i;try{i=(0,Ln.readFileSync)(r,"utf-8")}catch{continue}if(!NX(i))continue;let s=yN(i),a=s.exo__Asset_uid??"";if(!a)continue;let c=_N(s,r),l=DX(i);t.push({uid:a,label:c,aliases:l,filePath:r})}return t}o(LX,"loadConcepts");function Su(n,e){let t=n.toLowerCase(),r=e.toLowerCase();return!r||r.length<2?0:t===r?1:t.includes(r)?.85:0}o(Su,"scoreMatch");function kX(n,e,t,r){let i=n.toLowerCase(),s=e.toLowerCase(),a=t,c=[];for(let l of r){let u=0,f="body_substring",d=Su(i,l.label);if(d>u&&(u=d,f=d===1?"label_exact":"label_substring"),u<1){let h=Su(s,l.label),p=h===1?.75:h>0?.65:0;p>u&&(u=p,f=h===1?"description_exact":"description_substring");let y=Su(a,l.label),v=y===1?.6:y>0?.5:0;v>u&&(u=v,f=y===1?"body_exact":"body_substring")}for(let h of l.aliases){let p=Su(i,h);if(p>0){let w=p*.9;w>u&&(u=w,f=p===1?"alias_label_exact":"alias_label_substring")}let y=Su(s,h);if(y>0){let w=y===1?.675:y*.65*.9;w>u&&(u=w,f="alias_description_substring")}let v=Su(a,h);if(v>0){let w=v===1?.54:v*.5*.9;w>u&&(u=w,f="alias_body_substring")}}u>0&&c.push({concept_uid:l.uid,concept_label:l.label,concept_file:l.filePath,confidence:Math.round(u*100)/100,match_type:f})}return c.sort((l,u)=>u.confidence-l.confidence),c.slice(0,3)}o(kX,"computeCandidates");function MX(n,e){return n.confidence>=e&&(n.match_type==="label_exact"||n.match_type==="alias_label_exact")}o(MX,"isAutoApproved");async function jX(n){let e=(0,va.resolve)(n.aiKnowDir),t=(0,va.resolve)(n.vault??(0,va.join)(e,"..","..","..")),r=n.autoThreshold??.8,i=LX(t),s=ZE(e),a=[];for(let c of s){let l;try{l=(0,Ln.readFileSync)(c,"utf-8")}catch{continue}let u=yN(l),f=u.exo__Asset_uid??"";if(!f)continue;let d=_N(u,c),h=u.exo__Asset_description??"",p=FX(l),y=kX(d,h,p,i),v=y[0],w=v?MX(v,r):!1;a.push({aiKnow_uid:f,aiKnow_label:d,aiKnow_file:c,candidates:y,auto_approved:w,...w?{auto_approved_candidate:v}:{}})}return a}o(jX,"runBackfillSuggest");function $X(n,e){let t=e.substring(0,e.lastIndexOf("/"));(0,Ln.existsSync)(t)||(0,Ln.mkdirSync)(t,{recursive:!0});let r=n.map(i=>JSON.stringify(i)).join(`
803
- `);(0,Ln.writeFileSync)(e,r,"utf-8")}o($X,"writeJsonl");function SN(){let n=(0,va.join)((0,gN.homedir)(),".cache","exocortex","backfill-candidates.jsonl");return new ue("suggest").description("Suggest concept backfill candidates for aiKnow assets").requiredOption("--aiKnow-dir <path>","Path to aiKnow assets directory").option("--vault <path>","Path to Obsidian vault (for finding concepts)").option("--output <path>","Output JSONL path",n).option("--auto-threshold <number>","Auto-approve confidence threshold","0.8").option("--dry-run","Dry-run mode: output JSONL but do not write to vault (default)",!0).action(async e=>{let t=parseFloat(e.autoThreshold);if(isNaN(t)||t<0||t>1){console.error("\u274C --auto-threshold must be a number between 0 and 1"),process.exitCode=1;return}let r=(0,va.resolve)(e.aiKnowDir);if(!(0,Ln.existsSync)(r)){console.error(`\u274C aiKnow directory not found: ${r}`),process.exitCode=1;return}console.log("\u{1F50D} Loading concepts from vault...");let i=e.vault?(0,va.resolve)(e.vault):void 0,s=Date.now(),a=await jX({aiKnowDir:r,vault:i,output:e.output,autoThreshold:t,dryRun:e.dryRun}),c=((Date.now()-s)/1e3).toFixed(2),l=a.filter(f=>f.auto_approved).length,u=a.filter(f=>f.candidates.length>0).length;$X(a,e.output),console.log(`\u2705 Processed ${a.length} aiKnow assets in ${c}s`),console.log(` ${u} assets have concept candidates`),console.log(` ${l} assets auto-approved (confidence \u2265 ${t})`),console.log(`\u{1F4DD} Output: ${e.output}`),e.dryRun&&console.log("\u2139\uFE0F Dry-run mode: no writes to vault")})}o(SN,"backfillSuggestCommand");function vN(){let n=new ue("backfill").description("Concept backfill tools for aiKnow assets");return n.addCommand(SN()),n}o(vN,"backfillCommand");function bN(n){n.addCommand(WO()),n.addCommand(QO()),n.addCommand(KO())}o(bN,"addQuerySubcommands");function wN(n){let e=new ue;e.name("exocortex").description("CLI tool for Exocortex knowledge management system").version(n??"15.161.0");let t=e.command("exoql").description("ExoQL query execution and cache management");bN(t);let r=e.command("sparql").description("(deprecated) Use 'exoql' instead");return bN(r),r.hook("preAction",()=>{console.error('\u26A0\uFE0F "sparql" is deprecated. Use "exoql" instead.')}),e.addCommand(nD()),e.addCommand(aD()),e.addCommand(oD()),e.addCommand(lD()),e.addCommand(uD()),e.addCommand(mD()),e.addCommand(SD()),e.addCommand(FD()),e.addCommand(LD()),e.addCommand(BD()),e.addCommand(qD()),e.addCommand(WD()),e.addCommand(zD()),e.addCommand(nN()),e.addCommand(oN()),e.addCommand(pN()),e.addCommand(mN()),e.addCommand(vN()),e}o(wN,"createProgram");wN().parse();0&&(module.exports={createProgram});
800
+ `)}o(IX,"formatSummary");function RX(n,e){return{mode:e.apply?"apply":"dry-run",outDir:e.outDir,pairsCount:n.pairs.length,skippedCount:n.skipped.length,pairs:n.pairs.map(t=>({sourceUid:t.sourceUid,sourcePath:t.sourcePath,layoutUid:t.layout.uid,blockUid:t.block.uid,warnings:t.warnings})),skipped:n.skipped}}o(RX,"summariseResult");var _u=K(Dt());function PX(){return new ue("start").description("Start the ValidatorDaemon process (long-running, Unix socket)").option("--socket <path>","Unix socket path",_u.DEFAULT_SOCKET_PATH).option("--idle-timeout <seconds>","Exit after N seconds of inactivity",String(Math.floor(_u.IDLE_TIMEOUT_MS/1e3))).action(async n=>{let e=n.socket,t=Number(n.idleTimeout)*1e3;await new _u.ValidatorDaemon(e,t).start()})}o(PX,"daemonStartCommand");function mN(){let n=new ue("daemon").description("Manage the ValidatorDaemon background process");return n.addCommand(PX()),n}o(mN,"daemonCommand");var Ln=require("fs"),gN=require("os"),va=require("path");function yN(n){let e=n.match(/^---\r?\n([\s\S]*?)\r?\n---/);if(!e)return{};let t={},r=e[1].split(`
801
+ `);for(let i of r){let s=i.match(/^([\w]+):\s*"?([^"]*)"?\s*$/);s&&(t[s[1]]=s[2])}return t}o(yN,"parseFrontmatterRaw");function OX(n){return n.replace(/^---[\s\S]*?---\r?\n/,"").replace(/```[\s\S]*?```/g," ").replace(/\[\[([^\]|]+)(?:\|[^\]]+)?\]\]/g,"$1").replace(/#+\s/g," ").replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/[*_`]/g,"").toLowerCase()}o(OX,"extractBodyText");function _N(n,e){return n.exo__Asset_label?n.exo__Asset_label:e.split("/").pop()?.replace(/\.md$/,"")??""}o(_N,"extractLabel");function FX(n){let e=n.match(/^---\r?\n([\s\S]*?)\r?\n---/);if(!e)return[];let t=[],r=e[1].split(`
802
+ `),i=!1;for(let s of r){if(s.match(/^aliases:\s*$/)){i=!0;continue}if(i){let c=s.match(/^\s+-\s+"?([^"]*)"?\s*$/);c?t.push(c[1].trim()):!s.startsWith(" ")&&!s.startsWith(" ")&&(i=!1)}let a=s.match(/^aliases:\s+"?([^"\n]+)"?\s*$/);a&&a[1].trim()&&t.push(a[1].trim())}return t.filter(Boolean)}o(FX,"extractAliases");function DX(n,e){return n.includes("/concepts/")}o(DX,"isConceptFile");function ZE(n){let e=[],t=(0,Ln.readdirSync)(n);for(let r of t){if(r.startsWith(".")||r==="node_modules")continue;let i=(0,va.join)(n,r);(0,Ln.statSync)(i).isDirectory()?e.push(...ZE(i)):r.endsWith(".md")&&e.push(i)}return e}o(ZE,"walkMdFiles");function NX(n){let e=ZE(n),t=[];for(let r of e){let i;try{i=(0,Ln.readFileSync)(r,"utf-8")}catch{continue}if(!DX(r,i))continue;let s=yN(i),a=s.exo__Asset_uid??"";if(!a)continue;let c=_N(s,r),l=FX(i);t.push({uid:a,label:c,aliases:l,filePath:r})}return t}o(NX,"loadConcepts");var LX=4;function Su(n,e){let t=n.toLowerCase(),r=e.toLowerCase();return r?t===r?1:r.length>=LX&&t.includes(r)?.85:0:0}o(Su,"scoreMatch");function kX(n,e,t,r){let i=n.toLowerCase(),s=e.toLowerCase(),a=t,c=[];for(let l of r){let u=0,f="body_substring",d=Su(i,l.label);if(d>u&&(u=d,f=d===1?"label_exact":"label_substring"),u<1){let h=Su(s,l.label),p=h===1?.75:h>0?.65:0;p>u&&(u=p,f=h===1?"description_exact":"description_substring");let y=Su(a,l.label),v=y===1?.6:y>0?.5:0;v>u&&(u=v,f=y===1?"body_exact":"body_substring")}for(let h of l.aliases){let p=Su(i,h);if(p>0){let w=p*.9;w>u&&(u=w,f=p===1?"alias_label_exact":"alias_label_substring")}let y=Su(s,h);if(y>0){let w=y===1?.675:y*.65*.9;w>u&&(u=w,f="alias_description_substring")}let v=Su(a,h);if(v>0){let w=v===1?.54:v*.5*.9;w>u&&(u=w,f="alias_body_substring")}}u>0&&c.push({concept_uid:l.uid,concept_label:l.label,concept_file:l.filePath,confidence:Math.round(u*100)/100,match_type:f})}return c.sort((l,u)=>u.confidence-l.confidence),c.slice(0,3)}o(kX,"computeCandidates");function MX(n,e){return n.confidence>=e&&(n.match_type==="label_exact"||n.match_type==="alias_label_exact")}o(MX,"isAutoApproved");async function jX(n){let e=(0,va.resolve)(n.aiKnowDir),t=(0,va.resolve)(n.vault??(0,va.join)(e,"..","..","..")),r=n.autoThreshold??.8,i=NX(t),s=ZE(e),a=[];for(let c of s){let l;try{l=(0,Ln.readFileSync)(c,"utf-8")}catch{continue}let u=yN(l),f=u.exo__Asset_uid??"";if(!f)continue;let d=_N(u,c),h=u.exo__Asset_description??"",p=OX(l),y=kX(d,h,p,i),v=y[0],w=v?MX(v,r):!1;a.push({aiKnow_uid:f,aiKnow_label:d,aiKnow_file:c,candidates:y,auto_approved:w,...w?{auto_approved_candidate:v}:{}})}return a}o(jX,"runBackfillSuggest");function $X(n,e){let t=e.substring(0,e.lastIndexOf("/"));(0,Ln.existsSync)(t)||(0,Ln.mkdirSync)(t,{recursive:!0});let r=n.map(i=>JSON.stringify(i)).join(`
803
+ `);(0,Ln.writeFileSync)(e,r,"utf-8")}o($X,"writeJsonl");function SN(){let n=(0,va.join)((0,gN.homedir)(),".cache","exocortex","backfill-candidates.jsonl");return new ue("suggest").description("Suggest concept backfill candidates for aiKnow assets").requiredOption("--aiKnow-dir <path>","Path to aiKnow assets directory").option("--vault <path>","Path to Obsidian vault (for finding concepts)").option("--output <path>","Output JSONL path",n).option("--auto-threshold <number>","Auto-approve confidence threshold","0.8").option("--dry-run","Dry-run mode: output JSONL but do not write to vault (default)",!0).action(async e=>{let t=parseFloat(e.autoThreshold);if(isNaN(t)||t<0||t>1){console.error("\u274C --auto-threshold must be a number between 0 and 1"),process.exitCode=1;return}let r=(0,va.resolve)(e.aiKnowDir);if(!(0,Ln.existsSync)(r)){console.error(`\u274C aiKnow directory not found: ${r}`),process.exitCode=1;return}console.log("\u{1F50D} Loading concepts from vault...");let i=e.vault?(0,va.resolve)(e.vault):void 0,s=Date.now(),a=await jX({aiKnowDir:r,vault:i,output:e.output,autoThreshold:t,dryRun:e.dryRun}),c=((Date.now()-s)/1e3).toFixed(2),l=a.filter(f=>f.auto_approved).length,u=a.filter(f=>f.candidates.length>0).length;$X(a,e.output),console.log(`\u2705 Processed ${a.length} aiKnow assets in ${c}s`),console.log(` ${u} assets have concept candidates`),console.log(` ${l} assets auto-approved (confidence \u2265 ${t})`),console.log(`\u{1F4DD} Output: ${e.output}`),e.dryRun&&console.log("\u2139\uFE0F Dry-run mode: no writes to vault")})}o(SN,"backfillSuggestCommand");function vN(){let n=new ue("backfill").description("Concept backfill tools for aiKnow assets");return n.addCommand(SN()),n}o(vN,"backfillCommand");function bN(n){n.addCommand(WO()),n.addCommand(QO()),n.addCommand(KO())}o(bN,"addQuerySubcommands");function wN(n){let e=new ue;e.name("exocortex").description("CLI tool for Exocortex knowledge management system").version(n??"15.161.2");let t=e.command("exoql").description("ExoQL query execution and cache management");bN(t);let r=e.command("sparql").description("(deprecated) Use 'exoql' instead");return bN(r),r.hook("preAction",()=>{console.error('\u26A0\uFE0F "sparql" is deprecated. Use "exoql" instead.')}),e.addCommand(nD()),e.addCommand(aD()),e.addCommand(oD()),e.addCommand(lD()),e.addCommand(uD()),e.addCommand(mD()),e.addCommand(SD()),e.addCommand(FD()),e.addCommand(LD()),e.addCommand(BD()),e.addCommand(qD()),e.addCommand(WD()),e.addCommand(zD()),e.addCommand(nN()),e.addCommand(oN()),e.addCommand(pN()),e.addCommand(mN()),e.addCommand(vN()),e}o(wN,"createProgram");wN().parse();0&&(module.exports={createProgram});
804
804
  /*! Bundled license information:
805
805
 
806
806
  reflect-metadata/Reflect.js:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kitelev/exocortex-cli",
3
- "version": "15.161.0",
3
+ "version": "15.161.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": {