@kitelev/exocortex-cli 15.94.0 → 15.95.0

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 +4 -4
  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.94.0
2
+ // @kitelev/exocortex-cli v15.95.0
3
3
  // CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more
4
4
  // License: MIT
5
5
 
@@ -120,7 +120,7 @@ aliases:
120
120
  - ${t}
121
121
  `;return e.replace(s[1],d)}let a=/^aliases\s*:\s*\[([^\]]*)\]/m,c=e.match(a);if(c){let u=c[1].trim();return u===""?e.replace(a,`aliases:
122
122
  - ${t}`):u.split(",").map(d=>d.trim().replace(/^["']|["']$/g,"")).includes(t)?e:e.replace(a,`aliases: [${u}, ${t}]`)}let l=/^aliases\s*:\s*(?:null|~)?\s*$/m;return e.replace(l,`aliases:
123
- - ${t}`)}isAssetArchived(e){if(e?.exo__Asset_isArchived===!0)return!0;let t=e?.archived;if(t==null)return!1;if(typeof t=="boolean")return t;if(typeof t=="number")return t!==0;if(typeof t=="string"){let r=t.toLowerCase().trim();return r==="true"||r==="yes"||r==="1"}return!1}};di.RenameToUidService=M_;di.RenameToUidService=M_=f9([(0,x3.injectable)(),h9(0,(0,x3.inject)(p9.DI_TOKENS.IVaultAdapter)),d9("design:paramtypes",[Object])],M_)});var U_=v(hi=>{"use strict";var m9=hi&&hi.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},g9=hi&&hi.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},A3=hi&&hi.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(hi,"__esModule",{value:!0});hi.SupervisionCreationService=void 0;var $_=ve(),y9=hn(),_9=$r(),C3=Tt(),V_=class{static{o(this,"SupervisionCreationService")}constructor(e,t){this.vault=e,this.vaultSettings=t}async createSupervision(e){let t=(0,y9.v4)(),r=`${t}.md`,i=this.generateFrontmatter(t),s=this.generateBody(e),a=this.buildFileContent(i,s),l=`${this.vaultSettings.getDefaultInboxFolder()}/${r}`;return await this.vault.create(l,a)}generateFrontmatter(e){let t=new Date,r=_9.DateFormatter.toLocalTimestamp(t);return{exo__Asset_isDefinedBy:this.vaultSettings.getOwnerIdentity(),exo__Asset_uid:e,exo__Asset_createdAt:r,exo__Instance_class:[`"[[${this.vaultSettings.getFleetingNoteClassUID()}]]"`],ztlk__FleetingNote_type:'"[[CBT-Diary Record]]"'}}generateBody(e){return[{label:"\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044F/\u0442\u0440\u0438\u0433\u0433\u0435\u0440",value:e.situation},{label:"\u042D\u043C\u043E\u0446\u0438\u0438",value:e.emotions},{label:"\u041C\u044B\u0441\u043B\u0438",value:e.thoughts},{label:"\u041F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435",value:e.behavior},{label:"\u041A\u0440\u0430\u0442\u043A\u043E\u0441\u0440\u043E\u0447\u043D\u044B\u0435 \u043F\u043E\u0441\u043B\u0435\u0434\u0441\u0442\u0432\u0438\u044F \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u044F",value:e.shortTermConsequences},{label:"\u0414\u043E\u043B\u0433\u043E\u0441\u0440\u043E\u0447\u043D\u044B\u0435 \u043F\u043E\u0441\u043B\u0435\u0434\u0441\u0442\u0432\u0438\u044F \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u044F",value:e.longTermConsequences}].map(r=>`- ${r.label}: ${r.value}`).join(`
123
+ - ${t}`)}isAssetArchived(e){if(e?.exo__Asset_isArchived===!0)return!0;let t=e?.archived;if(t==null)return!1;if(typeof t=="boolean")return t;if(typeof t=="number")return t!==0;if(typeof t=="string"){let r=t.toLowerCase().trim();return r==="true"||r==="yes"||r==="1"}return!1}};di.RenameToUidService=M_;di.RenameToUidService=M_=f9([(0,x3.injectable)(),h9(0,(0,x3.inject)(p9.DI_TOKENS.IVaultAdapter)),d9("design:paramtypes",[Object])],M_)});var U_=v(hi=>{"use strict";var m9=hi&&hi.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},g9=hi&&hi.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},A3=hi&&hi.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(hi,"__esModule",{value:!0});hi.SupervisionCreationService=void 0;var $_=ve(),y9=hn(),_9=$r(),C3=Tt(),V_=class{static{o(this,"SupervisionCreationService")}constructor(e,t){this.vault=e,this.vaultSettings=t}async createSupervision(e){let t=(0,y9.v4)(),r=`${t}.md`,i=this.generateFrontmatter(t),s=this.generateBody(e),a=this.buildFileContent(i,s),c=this.vaultSettings.getDefaultInboxFolder(),l=`${c}/${r}`;return await this.ensureFolderExists(c),await this.vault.create(l,a)}async ensureFolderExists(e){await this.vault.exists(e)||await this.vault.createFolder(e)}generateFrontmatter(e){let t=new Date,r=_9.DateFormatter.toLocalTimestamp(t);return{exo__Asset_isDefinedBy:this.vaultSettings.getOwnerIdentity(),exo__Asset_uid:e,exo__Asset_createdAt:r,exo__Instance_class:[`"[[${this.vaultSettings.getFleetingNoteClassUID()}]]"`],ztlk__FleetingNote_type:'"[[CBT-Diary Record]]"'}}generateBody(e){return[{label:"\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044F/\u0442\u0440\u0438\u0433\u0433\u0435\u0440",value:e.situation},{label:"\u042D\u043C\u043E\u0446\u0438\u0438",value:e.emotions},{label:"\u041C\u044B\u0441\u043B\u0438",value:e.thoughts},{label:"\u041F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435",value:e.behavior},{label:"\u041A\u0440\u0430\u0442\u043A\u043E\u0441\u0440\u043E\u0447\u043D\u044B\u0435 \u043F\u043E\u0441\u043B\u0435\u0434\u0441\u0442\u0432\u0438\u044F \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u044F",value:e.shortTermConsequences},{label:"\u0414\u043E\u043B\u0433\u043E\u0441\u0440\u043E\u0447\u043D\u044B\u0435 \u043F\u043E\u0441\u043B\u0435\u0434\u0441\u0442\u0432\u0438\u044F \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u044F",value:e.longTermConsequences}].map(r=>`- ${r.label}: ${r.value}`).join(`
124
124
  `)}buildFileContent(e,t){return`---
125
125
  ${Object.entries(e).map(([i,s])=>{if(Array.isArray(s)){let a=s.map(c=>` - ${c}`).join(`
126
126
  `);return`${i}:
@@ -129,7 +129,7 @@ ${a}`}return`${i}: ${String(s)}`}).join(`
129
129
  ---
130
130
 
131
131
  ${t}
132
- `}};hi.SupervisionCreationService=V_;hi.SupervisionCreationService=V_=m9([(0,$_.injectable)(),A3(0,(0,$_.inject)(C3.DI_TOKENS.IVaultAdapter)),A3(1,(0,$_.inject)(C3.DI_TOKENS.IVaultSettings)),g9("design:paramtypes",[Object,Object])],V_)});var W_=v(pi=>{"use strict";var v9=pi&&pi.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},b9=pi&&pi.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},I3=pi&&pi.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(pi,"__esModule",{value:!0});pi.FleetingNoteCreationService=void 0;var B_=ve(),S9=hn(),w9=$r(),E9=Yi(),R3=Tt(),q_=class{static{o(this,"FleetingNoteCreationService")}constructor(e,t){this.vault=e,this.vaultSettings=t}async createFleetingNote(e){let t=(0,S9.v4)(),r=`${t}.md`,i=this.generateFrontmatter(t,e),s=E9.MetadataHelpers.buildFileContent(i),a=`${this.vaultSettings.getDefaultInboxFolder()}/${r}`;return await this.vault.create(a,s)}generateFrontmatter(e,t){let r=new Date,i=w9.DateFormatter.toLocalTimestamp(r),s=t.trim();return{exo__Asset_isDefinedBy:this.vaultSettings.getOwnerIdentity(),exo__Asset_uid:e,exo__Asset_createdAt:i,exo__Instance_class:[`"[[${this.vaultSettings.getFleetingNoteClassUID()}]]"`],exo__Asset_label:s,aliases:[s]}}};pi.FleetingNoteCreationService=q_;pi.FleetingNoteCreationService=q_=v9([(0,B_.injectable)(),I3(0,(0,B_.inject)(R3.DI_TOKENS.IVaultAdapter)),I3(1,(0,B_.inject)(R3.DI_TOKENS.IVaultSettings)),b9("design:paramtypes",[Object,Object])],q_)});var z_=v(go=>{"use strict";var T9=go&&go.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s};Object.defineProperty(go,"__esModule",{value:!0});go.DynamicFrontmatterGenerator=void 0;var x9=ve(),A9=hn(),Fu=$r(),G_=class{static{o(this,"DynamicFrontmatterGenerator")}generate(e,t,r,i){let s={},a=new Date;i?.isDefinedBy&&(s.exo__Asset_isDefinedBy=this.ensureQuoted(i.isDefinedBy)),s.exo__Asset_uid=i?.uid||(0,A9.v4)(),s.exo__Asset_createdAt=i?.createdAt||Fu.DateFormatter.toLocalTimestamp(a),s.exo__Instance_class=[this.formatWikilink(e)];let c=new Map;for(let u of r)c.set(u.name,u.type);for(let[u,f]of Object.entries(t)){if(f==null||u==="exo__Asset_uid"||u==="exo__Asset_createdAt"||u==="exo__Instance_class"||u==="exo__Asset_isDefinedBy")continue;let d=c.get(u);s[u]=this.formatValue(f,d)}let l=t.exo__Asset_label;if(l&&typeof l=="string"&&l.trim()!==""){let u=l.trim();s.exo__Asset_label=u,s.aliases=[u]}return s}formatValue(e,t){if(e==null)return null;if(!t)return this.formatInferredValue(e);switch(t){case"text":return this.formatText(e);case"wikilink":return this.formatWikilink(e);case"status-select":case"size-select":return this.formatWikilink(e);case"number":return this.formatNumber(e);case"boolean":return this.formatBoolean(e);case"timestamp":return this.formatTimestamp(e);default:return this.formatText(e)}}formatText(e){return typeof e=="string"?e:String(e)}formatWikilink(e){let t=String(e);return t.startsWith('"[[')&&t.endsWith(']]"')?t:t.startsWith("[[")&&t.endsWith("]]")?`"${t}"`:`"[[${t}]]"`}formatNumber(e){if(typeof e=="number")return e;let t=Number(e);return isNaN(t)?0:t}formatBoolean(e){if(typeof e=="boolean")return e;if(typeof e=="string"){let t=e.toLowerCase().trim();return t==="true"||t==="yes"||t==="1"}return typeof e=="number"?e!==0:!!e}formatTimestamp(e){if(e instanceof Date)return Fu.DateFormatter.toLocalTimestamp(e);if(typeof e=="string"){if(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/.test(e))return e;if(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/.test(e))return e.replace("Z","");let t=new Date(e);return isNaN(t.getTime())?e:Fu.DateFormatter.toLocalTimestamp(t)}if(typeof e=="number"){let t=new Date(e);if(!isNaN(t.getTime()))return Fu.DateFormatter.toLocalTimestamp(t)}return String(e)}formatInferredValue(e){return typeof e=="boolean"||typeof e=="number"?e:e instanceof Date?Fu.DateFormatter.toLocalTimestamp(e):typeof e=="string"?e.startsWith("[[")||e.startsWith('"[[')?this.formatWikilink(e):e:String(e)}ensureQuoted(e){return!e||e==='""'?'""':e.startsWith('"')&&e.endsWith('"')?e:`"${e}"`}generateYAML(e,t,r,i){let s=this.generate(e,t,r,i);return this.toYAML(s)}toYAML(e){return`---
132
+ `}};hi.SupervisionCreationService=V_;hi.SupervisionCreationService=V_=m9([(0,$_.injectable)(),A3(0,(0,$_.inject)(C3.DI_TOKENS.IVaultAdapter)),A3(1,(0,$_.inject)(C3.DI_TOKENS.IVaultSettings)),g9("design:paramtypes",[Object,Object])],V_)});var W_=v(pi=>{"use strict";var v9=pi&&pi.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s},b9=pi&&pi.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},I3=pi&&pi.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(pi,"__esModule",{value:!0});pi.FleetingNoteCreationService=void 0;var B_=ve(),S9=hn(),w9=$r(),E9=Yi(),R3=Tt(),q_=class{static{o(this,"FleetingNoteCreationService")}constructor(e,t){this.vault=e,this.vaultSettings=t}async createFleetingNote(e){let t=(0,S9.v4)(),r=`${t}.md`,i=this.generateFrontmatter(t,e),s=E9.MetadataHelpers.buildFileContent(i),a=this.vaultSettings.getDefaultInboxFolder(),c=`${a}/${r}`;return await this.ensureFolderExists(a),await this.vault.create(c,s)}async ensureFolderExists(e){await this.vault.exists(e)||await this.vault.createFolder(e)}generateFrontmatter(e,t){let r=new Date,i=w9.DateFormatter.toLocalTimestamp(r),s=t.trim();return{exo__Asset_isDefinedBy:this.vaultSettings.getOwnerIdentity(),exo__Asset_uid:e,exo__Asset_createdAt:i,exo__Instance_class:[`"[[${this.vaultSettings.getFleetingNoteClassUID()}]]"`],exo__Asset_label:s,aliases:[s]}}};pi.FleetingNoteCreationService=q_;pi.FleetingNoteCreationService=q_=v9([(0,B_.injectable)(),I3(0,(0,B_.inject)(R3.DI_TOKENS.IVaultAdapter)),I3(1,(0,B_.inject)(R3.DI_TOKENS.IVaultSettings)),b9("design:paramtypes",[Object,Object])],q_)});var z_=v(go=>{"use strict";var T9=go&&go.__decorate||function(n,e,t,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,r);else for(var c=n.length-1;c>=0;c--)(a=n[c])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s};Object.defineProperty(go,"__esModule",{value:!0});go.DynamicFrontmatterGenerator=void 0;var x9=ve(),A9=hn(),Fu=$r(),G_=class{static{o(this,"DynamicFrontmatterGenerator")}generate(e,t,r,i){let s={},a=new Date;i?.isDefinedBy&&(s.exo__Asset_isDefinedBy=this.ensureQuoted(i.isDefinedBy)),s.exo__Asset_uid=i?.uid||(0,A9.v4)(),s.exo__Asset_createdAt=i?.createdAt||Fu.DateFormatter.toLocalTimestamp(a),s.exo__Instance_class=[this.formatWikilink(e)];let c=new Map;for(let u of r)c.set(u.name,u.type);for(let[u,f]of Object.entries(t)){if(f==null||u==="exo__Asset_uid"||u==="exo__Asset_createdAt"||u==="exo__Instance_class"||u==="exo__Asset_isDefinedBy")continue;let d=c.get(u);s[u]=this.formatValue(f,d)}let l=t.exo__Asset_label;if(l&&typeof l=="string"&&l.trim()!==""){let u=l.trim();s.exo__Asset_label=u,s.aliases=[u]}return s}formatValue(e,t){if(e==null)return null;if(!t)return this.formatInferredValue(e);switch(t){case"text":return this.formatText(e);case"wikilink":return this.formatWikilink(e);case"status-select":case"size-select":return this.formatWikilink(e);case"number":return this.formatNumber(e);case"boolean":return this.formatBoolean(e);case"timestamp":return this.formatTimestamp(e);default:return this.formatText(e)}}formatText(e){return typeof e=="string"?e:String(e)}formatWikilink(e){let t=String(e);return t.startsWith('"[[')&&t.endsWith(']]"')?t:t.startsWith("[[")&&t.endsWith("]]")?`"${t}"`:`"[[${t}]]"`}formatNumber(e){if(typeof e=="number")return e;let t=Number(e);return isNaN(t)?0:t}formatBoolean(e){if(typeof e=="boolean")return e;if(typeof e=="string"){let t=e.toLowerCase().trim();return t==="true"||t==="yes"||t==="1"}return typeof e=="number"?e!==0:!!e}formatTimestamp(e){if(e instanceof Date)return Fu.DateFormatter.toLocalTimestamp(e);if(typeof e=="string"){if(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/.test(e))return e;if(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/.test(e))return e.replace("Z","");let t=new Date(e);return isNaN(t.getTime())?e:Fu.DateFormatter.toLocalTimestamp(t)}if(typeof e=="number"){let t=new Date(e);if(!isNaN(t.getTime()))return Fu.DateFormatter.toLocalTimestamp(t)}return String(e)}formatInferredValue(e){return typeof e=="boolean"||typeof e=="number"?e:e instanceof Date?Fu.DateFormatter.toLocalTimestamp(e):typeof e=="string"?e.startsWith("[[")||e.startsWith('"[[')?this.formatWikilink(e):e:String(e)}ensureQuoted(e){return!e||e==='""'?'""':e.startsWith('"')&&e.endsWith('"')?e:`"${e}"`}generateYAML(e,t,r,i){let s=this.generate(e,t,r,i);return this.toYAML(s)}toYAML(e){return`---
133
133
  ${Object.entries(e).map(([r,i])=>{if(Array.isArray(i)){let s=i.map(a=>` - ${a}`).join(`
134
134
  `);return`${r}:
135
135
  ${s}`}return`${r}: ${i}`}).join(`
@@ -744,7 +744,7 @@ ${Pr.dump(i,{lineWidth:-1})}---
744
744
  \u{1F50D} Dry-run: command "${l.name}" on "${t.target}"
745
745
  `),console.log(" Precondition: passed \u2705"),console.log(" Grounding (would execute):"),SS(l.grounding," ");return}let h=new Mt.ServiceRegistry;HO(h);let p=new Ft(i),b=await new Mt.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){k.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";k.setFormat(t);try{let r=(0,fs.resolve)(e.vault);if(!(0,us.existsSync)(r))throw new Ce(r);let i=rH(r);if(t==="json"){let s=Z.success({totalCommands:vS(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=vS(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:
746
746
  `);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){k.handle(r)}}),n}o(QO,"dynamicCommandCommand");function vS(n){let e=[],t=[];wS(n,t);for(let{filePath:r,fm:i}of t){if(!Ml(i,"exocmd__Command"))continue;let s=i.exo__Asset_uid??"",a=i.exo__Asset_label??YO(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=Tg(String(f)),p=t.find(_=>_.fm.exo__Asset_uid===h&&Ml(_.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(vS,"scanCommands");async function tH(n,e){let{tripleStore:t}=await bS(n),r=new Mt.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(tH,"listCommandsForTarget");function rH(n){let e=[],t=[];wS(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(!Ml(s,"exocmd__Command"))continue;let a=s.exo__Asset_uid??"",c=s.exo__Asset_label??YO(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=Tg(String(u)),p=r.get(h);if(!p)l.push(`Grounding reference "${h}" not found in vault`);else if(!Ml(p.fm,"exocmd__Grounding"))l.push(`Grounding reference "${h}" is not an exocmd__Grounding asset`);else{let _=p.fm,b=_.exocmd__Grounding_type;b?(Object.values(Mt.GroundingType).includes(b)||l.push(`Grounding "${h}" has invalid type "${b}"`),(b===Mt.GroundingType.PROPERTY_SET||b===Mt.GroundingType.PROPERTY_DELETE)&&!_.exocmd__Grounding_targetProperty&&l.push(`Grounding "${h}" (${b}) missing targetProperty`),b===Mt.GroundingType.PROPERTY_SET&&!_.exocmd__Grounding_targetValue&&l.push(`Grounding "${h}" (property_set) missing targetValue`),b===Mt.GroundingType.SERVICE_CALL&&((_.exocmd__Grounding_serviceId??_.exocmd__Grounding_targetProperty)||l.push(`Grounding "${h}" (service_call) missing serviceId and targetProperty`))):l.push(`Grounding "${h}" missing exocmd__Grounding_type`)}}let f=s.exocmd__Command_precondition;if(f){let h=Tg(String(f)),p=r.get(h);if(!p)l.push(`Precondition reference "${h}" not found in vault`);else if(!Ml(p.fm,"exocmd__Precondition"))l.push(`Precondition reference "${h}" is not an exocmd__Precondition asset`);else{let _=p.fm.exocmd__Precondition_sparqlAsk,b=p.fm.exocmd__Precondition_hostFunction;!_&&!b&&l.push(`Precondition "${h}" missing both sparqlAsk and hostFunction`)}}t.some(h=>Ml(h.fm,"exocmd__CommandBinding")?Tg(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(rH,"validateCommands");async function bS(n){let e=new hr(n),r=await new Mt.NoteToRDFConverter(e).convertVault(),i=new Mt.InMemoryTripleStore;return await i.addAll(r),{tripleStore:i}}o(bS,"buildTripleStore");function SS(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}:`),SS(n.steps[t],e+" ")}}o(SS,"printGrounding");function wS(n,e){let t;try{t=(0,us.readdirSync)(n,{withFileTypes:!0})}catch{return}for(let r of t){let i=(0,fs.join)(n,r.name);if(r.isDirectory()){if(r.name.startsWith(".")||r.name==="node_modules")continue;wS(i,e)}else if(r.name.endsWith(".md"))try{let s=(0,us.readFileSync)(i,"utf-8"),a=eH.parse(s);a.exists&&e.push({filePath:i,fm:nH(a.content)})}catch{}}}o(wS,"collectParsedFiles");function nH(n){let e={},t=n.split(`
747
- `),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(nH,"parseYamlFrontmatter");function Ml(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(Ml,"hasClass");function Tg(n){if(typeof n!="string")return"";let e=n.replace(/["'[\]]/g,"").trim(),t=e.indexOf("|");return t>=0?e.substring(0,t).trim():e}o(Tg,"normalizeWikilink");function YO(n){return(0,fs.basename)(n,".md")}o(YO,"extractLabelFromFilename");function XO(n){n.addCommand(GR()),n.addCommand(YR()),n.addCommand(XR())}o(XO,"addQuerySubcommands");function KO(n){let e=new Le;e.name("exocortex").description("CLI tool for Exocortex knowledge management system").version(n??"15.94.0");let t=e.command("exoql").description("ExoQL query execution and cache management");XO(t);let r=e.command("sparql").description("(deprecated) Use 'exoql' instead");return XO(r),r.hook("preAction",()=>{console.error('\u26A0\uFE0F "sparql" is deprecated. Use "exoql" instead.')}),e.addCommand(iO()),e.addCommand(oO()),e.addCommand(cO()),e.addCommand(uO()),e.addCommand(fO()),e.addCommand(gO()),e.addCommand(bO()),e.addCommand(IO()),e.addCommand(OO()),e.addCommand(kO()),e.addCommand($O()),e.addCommand(VO()),e.addCommand(BO()),e.addCommand(QO()),e}o(KO,"createProgram");KO().parse();0&&(module.exports={createProgram});
747
+ `),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(nH,"parseYamlFrontmatter");function Ml(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(Ml,"hasClass");function Tg(n){if(typeof n!="string")return"";let e=n.replace(/["'[\]]/g,"").trim(),t=e.indexOf("|");return t>=0?e.substring(0,t).trim():e}o(Tg,"normalizeWikilink");function YO(n){return(0,fs.basename)(n,".md")}o(YO,"extractLabelFromFilename");function XO(n){n.addCommand(GR()),n.addCommand(YR()),n.addCommand(XR())}o(XO,"addQuerySubcommands");function KO(n){let e=new Le;e.name("exocortex").description("CLI tool for Exocortex knowledge management system").version(n??"15.95.0");let t=e.command("exoql").description("ExoQL query execution and cache management");XO(t);let r=e.command("sparql").description("(deprecated) Use 'exoql' instead");return XO(r),r.hook("preAction",()=>{console.error('\u26A0\uFE0F "sparql" is deprecated. Use "exoql" instead.')}),e.addCommand(iO()),e.addCommand(oO()),e.addCommand(cO()),e.addCommand(uO()),e.addCommand(fO()),e.addCommand(gO()),e.addCommand(bO()),e.addCommand(IO()),e.addCommand(OO()),e.addCommand(kO()),e.addCommand($O()),e.addCommand(VO()),e.addCommand(BO()),e.addCommand(QO()),e}o(KO,"createProgram");KO().parse();0&&(module.exports={createProgram});
748
748
  /*! Bundled license information:
749
749
 
750
750
  reflect-metadata/Reflect.js:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kitelev/exocortex-cli",
3
- "version": "15.94.0",
3
+ "version": "15.95.0",
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": {