@kitelev/exocortex-cli 13.207.22 → 13.207.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +3 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @kitelev/exocortex-cli v13.207.
|
|
2
|
+
// @kitelev/exocortex-cli v13.207.24
|
|
3
3
|
// CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more
|
|
4
4
|
// License: MIT
|
|
5
5
|
|
|
@@ -97,7 +97,7 @@ ${s}`}return`${r}: ${i}`}).join(`
|
|
|
97
97
|
---`}};vs.DynamicFrontmatterGenerator=Np;vs.DynamicFrontmatterGenerator=Np=e4([(0,t4.injectable)()],Np)});var jp=v(cn=>{"use strict";var n4=cn&&cn.__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},i4=cn&&cn.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},s4=cn&&cn.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(cn,"__esModule",{value:!0});cn.PlanningService=void 0;var V2=Je(),a4=ea(),o4=cr(),c4=at(),Lp=class{static{o(this,"PlanningService")}constructor(e){this.vault=e,this.frontmatterService=new a4.FrontmatterService}async planOnToday(e){let t=this.vault.getAbstractFileByPath(e);if(!t||!this.isFile(t))throw new Error(`File not found: ${e}`);let r=await this.vault.read(t),i=o4.DateFormatter.getTodayStartTimestamp(),s=this.frontmatterService.updateProperty(r,"ems__Effort_plannedStartTimestamp",i);await this.vault.modify(t,s)}isFile(e){return"basename"in e}};cn.PlanningService=Lp;cn.PlanningService=Lp=n4([(0,V2.injectable)(),s4(0,(0,V2.inject)(c4.DI_TOKENS.IVaultAdapter)),i4("design:paramtypes",[Object])],Lp)});var Vp=v(un=>{"use strict";var u4=un&&un.__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},l4=un&&un.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},f4=un&&un.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(un,"__esModule",{value:!0});un.AssetConversionService=void 0;var $2=Je(),B2=zt(),h4=ea(),Wu=Tp(),d4=at(),Mp=class{static{o(this,"AssetConversionService")}constructor(e){this.vault=e,this.frontmatterService=new h4.FrontmatterService}async convertTaskToProject(e){try{let t=await this.vault.read(e),r=this.removeInstanceClassProperty(t);return r=this.frontmatterService.updateProperty(r,"exo__Instance_class",`["[[${B2.AssetClass.PROJECT}]]"]`),await this.vault.modify(e,r),Wu.LoggingService.info(`Converted Task to Project: ${e.basename} (${e.path})`),e}catch(t){let r=`Failed to convert Task to Project: ${e.path}`;throw Wu.LoggingService.error(r,t instanceof Error?t:void 0),new Error(r)}}async convertProjectToTask(e){try{let t=await this.vault.read(e),r=this.removeInstanceClassProperty(t);return r=this.frontmatterService.updateProperty(r,"exo__Instance_class",`["[[${B2.AssetClass.TASK}]]"]`),await this.vault.modify(e,r),Wu.LoggingService.info(`Converted Project to Task: ${e.basename} (${e.path})`),e}catch(t){let r=`Failed to convert Project to Task: ${e.path}`;throw Wu.LoggingService.error(r,t instanceof Error?t:void 0),new Error(r)}}removeInstanceClassProperty(e){let t=this.frontmatterService.parse(e);if(!t.exists)return e;let r=/^exo__Instance_class:.*$(\n -.*$)*/gm,i=t.content.replace(r,"").replace(/\n\n+/g,`
|
|
98
98
|
`).trim();return e.replace(/^---\n[\s\S]*?\n---/,`---
|
|
99
99
|
${i}
|
|
100
|
-
---`)}};un.AssetConversionService=Mp;un.AssetConversionService=Mp=u4([(0,$2.injectable)(),f4(0,(0,$2.inject)(d4.DI_TOKENS.IVaultAdapter)),l4("design:paramtypes",[Object])],Mp)});var Bp=v(ln=>{"use strict";var p4=ln&&ln.__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},m4=ln&&ln.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},g4=ln&&ln.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(ln,"__esModule",{value:!0});ln.SessionEventService=void 0;var U2=Je(),y4=Or(),q2=zt(),v4=cr(),w4=Mr(),_4=at(),$p=class{static{o(this,"SessionEventService")}constructor(e){this.vault=e,this.folderPathCache=null,this.defaultOntologyAsset=null}setDefaultOntologyAsset(e){this.defaultOntologyAsset=e,this.folderPathCache=null}async createSessionStartEvent(e){return this.createSessionEvent(e,q2.AssetClass.SESSION_START_EVENT)}async createSessionEndEvent(e){return this.createSessionEvent(e,q2.AssetClass.SESSION_END_EVENT)}async getOntologyAssetFolder(){if(this.folderPathCache!==null)return this.folderPathCache;if(!this.defaultOntologyAsset){let r=this.vault.getDefaultNewFileParent();return this.folderPathCache=r?.path||"",this.folderPathCache}let e=this.vault.getAllFiles();for(let r of e)if(r.basename===this.defaultOntologyAsset){let i=r.parent?.path||"";return this.folderPathCache=i,this.folderPathCache}let t=this.vault.getDefaultNewFileParent();return this.folderPathCache=t?.path||"",this.folderPathCache}async createSessionEvent(e,t){let r=(0,y4.v4)(),i=v4.DateFormatter.toLocalTimestamp(new Date),s=this.defaultOntologyAsset?`"[[${this.defaultOntologyAsset}]]"`:'"[[!kitelev]]"',a={exo__Asset_uid:r,exo__Asset_createdAt:i,exo__Asset_isDefinedBy:s,exo__Instance_class:[`"[[${t}]]"`],ems__SessionEvent_timestamp:i,ems__Session_area:`"[[${e}]]"`},c=w4.MetadataHelpers.buildFileContent(a),u=await this.getOntologyAssetFolder();u&&!await this.vault.exists(u)&&await this.vault.createFolder(u);let l=u?`${u}/${r}.md`:`${r}.md`;return await this.vault.create(l,c)}};ln.SessionEventService=$p;ln.SessionEventService=$p=p4([(0,U2.injectable)(),g4(0,(0,U2.inject)(_4.DI_TOKENS.IVaultAdapter)),m4("design:paramtypes",[Object])],$p)});var qp=v(fn=>{"use strict";var b4=fn&&fn.__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},S4=fn&&fn.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},E4=fn&&fn.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(fn,"__esModule",{value:!0});fn.URIConstructionService=void 0;var G2=Je(),T4=at(),Up=class{static{o(this,"URIConstructionService")}constructor(e){this.fileSystem=e,this.defaultOntologyURL="https://exocortex.my/default/",this.strictValidation=!0}configure(e){e?.defaultOntologyURL&&(this.defaultOntologyURL=e.defaultOntologyURL),e?.strictValidation!==void 0&&(this.strictValidation=e.strictValidation)}async constructAssetURI(e){let t=this.extractUID(e);if(!t){if(this.strictValidation)throw new Error(`Asset missing exo__Asset_uid: ${e.path}`);return console.warn(`Asset ${e.path} missing UID, using filename fallback`),this.constructFallbackURI(e)}let r=await this.resolveOntologyURL(e);if(!this.validateOntologyURL(r))throw new Error(`Invalid ontology URL: ${r}`);return`${r.endsWith("/")?r:`${r}/`}${t}`}validateOntologyURL(e){if(!e)return!1;try{let t=new URL(e);return t.protocol==="http:"||t.protocol==="https:"}catch{return!1}}async resolveOntologyURL(e){let t=e.frontmatter?.exo__Asset_isDefinedBy;if(!t)return this.defaultOntologyURL;let r=this.extractWikiLink(t),i=r,s=await this.fileSystem.fileExists(r);return!s&&!r.endsWith(".md")&&(i=`${r}.md`,s=await this.fileSystem.fileExists(i)),s?(await this.fileSystem.getFileMetadata(i))?.exo__Ontology_url||this.defaultOntologyURL:(console.warn(`Ontology file not found: ${r}, using default`),this.defaultOntologyURL)}extractUID(e){return e.frontmatter?.exo__Asset_uid||null}extractWikiLink(e){return e.replace(/^\[\[|\]\]$/g,"")}constructFallbackURI(e){let t=e.path.split("/").pop()?.replace(".md","")||"unknown";return`${this.defaultOntologyURL}${t}`}};fn.URIConstructionService=Up;fn.URIConstructionService=Up=b4([(0,G2.injectable)(),E4(0,(0,G2.inject)(T4.DI_TOKENS.IFileSystemAdapter)),S4("design:paramtypes",[Object])],Up)});var Wp=v(hn=>{"use strict";var A4=hn&&hn.__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},x4=hn&&hn.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},C4=hn&&hn.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(hn,"__esModule",{value:!0});hn.GenericAssetCreationService=void 0;var W2=Je(),O4=Or(),ko=cr(),D4=Mr(),I4=at(),Pn=zh(),Gp=class{static{o(this,"GenericAssetCreationService")}constructor(e){this.vault=e}async createAsset(e,t){let r=(0,O4.v4)(),i=`${r}.md`,s=this.generateFrontmatter(e,t||[],r),a=D4.MetadataHelpers.buildFileContent(s),c=e.folderPath||this.getDefaultFolderPath(e);this.vault.getAbstractFileByPath(c)||await this.vault.createFolder(c);let l=c?`${c}/${i}`:i;return await this.vault.create(l,a)}generateFrontmatter(e,t,r){let i=new Date,s={},a=new Map;for(let c of t)a.set(c.name,c.fieldType);if(s.exo__Asset_uid=r,s.exo__Asset_createdAt=ko.DateFormatter.toLocalTimestamp(i),s.exo__Instance_class=[this.formatWikilink(e.className)],e.label&&e.label.trim()!==""){let c=e.label.trim();s.exo__Asset_label=c,s.aliases=[c]}if(e.parentFile&&e.parentMetadata&&this.inheritParentContext(s,e),e.propertyValues)for(let[c,u]of Object.entries(e.propertyValues)){if(c==="exo__Asset_uid"||c==="exo__Asset_createdAt"||c==="exo__Instance_class"||c==="exo__Asset_label"||c==="aliases"||u==null)continue;let l=a.get(c);s[c]=this.formatValue(u,l)}return s}inheritParentContext(e,t){let r=t.parentMetadata||{},i=t.parentFile?.basename;if((t.className==="ems__Task"||t.className.startsWith("ems__Task"))&&(e.ems__Effort_parent=i?this.formatWikilink(i):null),t.className==="ems__Project"||t.className.startsWith("ems__Project")){let s=r.exo__Instance_class;this.isAreaClass(s)&&(e.ems__Project_area=i?this.formatWikilink(i):null)}r.exo__Asset_isDefinedBy&&(e.exo__Asset_isDefinedBy=r.exo__Asset_isDefinedBy)}isAreaClass(e){return e?(Array.isArray(e)?e:[e]).some(r=>String(r).includes("Area")||String(r).includes("ems__Area")):!1}getDefaultFolderPath(e){if(e.parentFile?.parent?.path)return e.parentFile.parent.path;let t={ems__Task:"tasks",ems__Project:"projects",ems__Area:"areas",ems__Meeting:"meetings",exo__Event:"events",ims__Concept:"concepts"};if(t[e.className])return t[e.className];for(let[r,i]of Object.entries(t))if(e.className.startsWith(r))return i;return"assets"}formatValue(e,t){if(e==null)return null;if(!t)return this.formatInferredValue(e);switch(t){case Pn.PropertyFieldType.Text:return String(e);case Pn.PropertyFieldType.Wikilink:case Pn.PropertyFieldType.Reference:case Pn.PropertyFieldType.StatusSelect:case Pn.PropertyFieldType.SizeSelect:return this.formatWikilink(String(e));case Pn.PropertyFieldType.Number:return typeof e=="number"?e:Number(e)||0;case Pn.PropertyFieldType.Boolean:return this.formatBoolean(e);case Pn.PropertyFieldType.Date:case Pn.PropertyFieldType.DateTime:case Pn.PropertyFieldType.Timestamp:return this.formatTimestamp(e);default:return String(e)}}formatInferredValue(e){return typeof e=="boolean"||typeof e=="number"?e:e instanceof Date?ko.DateFormatter.toLocalTimestamp(e):typeof e=="string"?e.startsWith("[[")||e.startsWith('"[[')?this.formatWikilink(e):e:String(e)}formatWikilink(e){return e.startsWith('"[[')&&e.endsWith(']]"')?e:e.startsWith("[[")&&e.endsWith("]]")?`"${e}"`:`"[[${e}]]"`}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 ko.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:ko.DateFormatter.toLocalTimestamp(t)}if(typeof e=="number"){let t=new Date(e);if(!isNaN(t.getTime()))return ko.DateFormatter.toLocalTimestamp(t)}return String(e)}};hn.GenericAssetCreationService=Gp;hn.GenericAssetCreationService=Gp=A4([(0,W2.injectable)(),C4(0,(0,W2.inject)(I4.DI_TOKENS.IVaultAdapter)),x4("design:paramtypes",[Object])],Gp)});var z2=v(zu=>{"use strict";Object.defineProperty(zu,"__esModule",{value:!0});zu.EffortSortingHelpers=void 0;var zp=class n{static{o(this,"EffortSortingHelpers")}static getTimeFromTimestamp(e){if(!e)return"00:00:00";let t=new Date(e);if(isNaN(t.getTime()))return"00:00:00";let r=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),s=String(t.getSeconds()).padStart(2,"0");return`${r}:${i}:${s}`}static sortByStartTime(e,t){let r=n.getTimeFromTimestamp(e.startTimestamp),i=n.getTimeFromTimestamp(t.startTimestamp),s=r==="00:00:00",a=i==="00:00:00";return s&&!a?1:!s&&a?-1:r.localeCompare(i)}static sortByPriority(e,t){if(e.isTrashed!==t.isTrashed)return e.isTrashed?1:-1;if(e.isDone!==t.isDone)return e.isDone?1:-1;let r=typeof e.metadata.ems__Effort_votes=="number"?e.metadata.ems__Effort_votes:0,i=typeof t.metadata.ems__Effort_votes=="number"?t.metadata.ems__Effort_votes:0;return r!==i?i-r:e.startTime&&t.startTime?e.startTime.localeCompare(t.startTime):e.startTime?-1:t.startTime?1:0}};zu.EffortSortingHelpers=zp});var H2=v(Hu=>{"use strict";Object.defineProperty(Hu,"__esModule",{value:!0});Hu.FilenameValidator=void 0;var ws=class{static{o(this,"FilenameValidator")}static validate(e,t={}){let{maxLength:r=this.DEFAULT_MAX_LENGTH,replacementChar:i=this.DEFAULT_REPLACEMENT,allowEmpty:s=!1}=t,a=[];if(!e||e.trim().length===0)return s||a.push("Filename cannot be empty"),{valid:a.length===0,sanitized:"",errors:a};e.endsWith(" ")&&a.push("Filename should not end with a space");let c=e.trim();this.INVALID_CHARS_PATTERN.test(c)&&a.push('Filename contains invalid characters: / \\ : * ? " < > |');let u=this.getBaseName(c);return this.RESERVED_NAMES.has(u.toUpperCase())&&a.push(`"${u}" is a reserved filename on Windows`),c.length>r&&a.push(`Filename exceeds maximum length of ${r} characters`),c.startsWith(".")&&a.push("Filename should not start with a dot"),c.endsWith(".")&&a.push("Filename should not end with a dot"),c=this.sanitize(e,{maxLength:r,replacementChar:i}),{valid:a.length===0,sanitized:c,errors:a}}static sanitize(e,t={}){let{maxLength:r=this.DEFAULT_MAX_LENGTH,replacementChar:i=this.DEFAULT_REPLACEMENT}=t;if(!e||e.trim().length===0)return"";let s=e.trim();for(s=s.replace(this.INVALID_CHARS_PATTERN,i);s.startsWith(".")&&s.length>1;)s=s.substring(1);for(;s.length>0&&(s.endsWith(".")||s.endsWith(" "));)s=s.slice(0,-1);for(s.includes(i)&&(s=s.split(i).filter(l=>l!=="").join(i));s.startsWith(i);)s=s.slice(i.length);for(;s.endsWith(i);)s=s.slice(0,-i.length);let a=this.getBaseName(s);if(this.RESERVED_NAMES.has(a.toUpperCase())){let c=this.getExtension(s);s=a+i+c}if(s.length>r)for(s=s.slice(0,r);s.endsWith(i);)s=s.slice(0,-i.length);return s}static hasInvalidChars(e){return this.INVALID_CHARS_PATTERN.test(e)}static getInvalidChars(e){let t=e.match(this.INVALID_CHARS_PATTERN);return t?[...new Set(t)]:[]}static getBaseName(e){let t=e.lastIndexOf(".");return t===-1||t===0?e:e.substring(0,t)}static getExtension(e){let t=e.lastIndexOf(".");return t===-1||t===0?"":e.substring(t)}};Hu.FilenameValidator=ws;ws.INVALID_CHARS_PATTERN=/[/\\:*?"<>|\x00-\x1F]/g;ws.RESERVED_NAMES=new Set(["CON","PRN","AUX","NUL","COM1","COM2","COM3","COM4","COM5","COM6","COM7","COM8","COM9","LPT1","LPT2","LPT3","LPT4","LPT5","LPT6","LPT7","LPT8","LPT9"]);ws.DEFAULT_MAX_LENGTH=200;ws.DEFAULT_REPLACEMENT="_"});var Kp=v(Ku=>{"use strict";Object.defineProperty(Ku,"__esModule",{value:!0});Ku.NTriplesSerializer=void 0;var Hp=class{static{o(this,"NTriplesSerializer")}serialize(e,t={}){let r=t.newline??`
|
|
100
|
+
---`)}};un.AssetConversionService=Mp;un.AssetConversionService=Mp=u4([(0,$2.injectable)(),f4(0,(0,$2.inject)(d4.DI_TOKENS.IVaultAdapter)),l4("design:paramtypes",[Object])],Mp)});var Bp=v(ln=>{"use strict";var p4=ln&&ln.__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},m4=ln&&ln.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},g4=ln&&ln.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(ln,"__esModule",{value:!0});ln.SessionEventService=void 0;var U2=Je(),y4=Or(),q2=zt(),v4=cr(),w4=Mr(),_4=at(),$p=class{static{o(this,"SessionEventService")}constructor(e){this.vault=e,this.folderPathCache=null,this.defaultOntologyAsset=null}setDefaultOntologyAsset(e){this.defaultOntologyAsset=e,this.folderPathCache=null}async createSessionStartEvent(e){return this.createSessionEvent(e,q2.AssetClass.SESSION_START_EVENT)}async createSessionEndEvent(e){return this.createSessionEvent(e,q2.AssetClass.SESSION_END_EVENT)}async getOntologyAssetFolder(){if(this.folderPathCache!==null)return this.folderPathCache;if(!this.defaultOntologyAsset){let r=this.vault.getDefaultNewFileParent();return this.folderPathCache=r?.path||"",this.folderPathCache}let e=this.vault.getAllFiles();for(let r of e)if(r.basename===this.defaultOntologyAsset){let i=r.parent?.path||"";return this.folderPathCache=i,this.folderPathCache}let t=this.vault.getDefaultNewFileParent();return this.folderPathCache=t?.path||"",this.folderPathCache}async createSessionEvent(e,t){let r=(0,y4.v4)(),i=v4.DateFormatter.toLocalTimestamp(new Date),s=this.defaultOntologyAsset?`"[[${this.defaultOntologyAsset}]]"`:'"[[!kitelev]]"',a={exo__Asset_uid:r,exo__Asset_createdAt:i,exo__Asset_isDefinedBy:s,exo__Instance_class:[`"[[${t}]]"`],ems__SessionEvent_timestamp:i,ems__Session_area:`"[[${e}]]"`},c=w4.MetadataHelpers.buildFileContent(a),u=await this.getOntologyAssetFolder();u&&!await this.vault.exists(u)&&await this.vault.createFolder(u);let l=u?`${u}/${r}.md`:`${r}.md`;return await this.vault.create(l,c)}};ln.SessionEventService=$p;ln.SessionEventService=$p=p4([(0,U2.injectable)(),g4(0,(0,U2.inject)(_4.DI_TOKENS.IVaultAdapter)),m4("design:paramtypes",[Object])],$p)});var qp=v(fn=>{"use strict";var b4=fn&&fn.__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},S4=fn&&fn.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},E4=fn&&fn.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(fn,"__esModule",{value:!0});fn.URIConstructionService=void 0;var G2=Je(),T4=at(),Up=class{static{o(this,"URIConstructionService")}constructor(e){this.fileSystem=e,this.defaultOntologyURL="https://exocortex.my/default/",this.strictValidation=!0}configure(e){e?.defaultOntologyURL&&(this.defaultOntologyURL=e.defaultOntologyURL),e?.strictValidation!==void 0&&(this.strictValidation=e.strictValidation)}async constructAssetURI(e){let t=this.extractUID(e);if(!t){if(this.strictValidation)throw new Error(`Asset missing exo__Asset_uid: ${e.path}`);return console.warn(`Asset ${e.path} missing UID, using filename fallback`),this.constructFallbackURI(e)}let r=await this.resolveOntologyURL(e);if(!this.validateOntologyURL(r))throw new Error(`Invalid ontology URL: ${r}`);return`${r.endsWith("/")?r:`${r}/`}${t}`}validateOntologyURL(e){if(!e)return!1;try{let t=new URL(e);return t.protocol==="http:"||t.protocol==="https:"}catch{return!1}}async resolveOntologyURL(e){let t=e.frontmatter?.exo__Asset_isDefinedBy;if(!t)return this.defaultOntologyURL;let r=this.extractWikiLink(t),i=r,s=await this.fileSystem.fileExists(r);return!s&&!r.endsWith(".md")&&(i=`${r}.md`,s=await this.fileSystem.fileExists(i)),s?(await this.fileSystem.getFileMetadata(i))?.exo__Ontology_url||this.defaultOntologyURL:(console.warn(`Ontology file not found: ${r}, using default`),this.defaultOntologyURL)}extractUID(e){return e.frontmatter?.exo__Asset_uid||null}extractWikiLink(e){return e.replace(/^\[\[|\]\]$/g,"")}constructFallbackURI(e){let t=e.path.split("/").pop()?.replace(".md","")||"unknown";return`${this.defaultOntologyURL}${t}`}};fn.URIConstructionService=Up;fn.URIConstructionService=Up=b4([(0,G2.injectable)(),E4(0,(0,G2.inject)(T4.DI_TOKENS.IFileSystemAdapter)),S4("design:paramtypes",[Object])],Up)});var Wp=v(hn=>{"use strict";var A4=hn&&hn.__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},x4=hn&&hn.__metadata||function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},C4=hn&&hn.__param||function(n,e){return function(t,r){e(t,r,n)}};Object.defineProperty(hn,"__esModule",{value:!0});hn.GenericAssetCreationService=void 0;var W2=Je(),O4=Or(),ko=cr(),D4=Mr(),I4=at(),Pn=zh(),Gp=class{static{o(this,"GenericAssetCreationService")}constructor(e){this.vault=e}async createAsset(e,t){let r=(0,O4.v4)(),i=`${r}.md`,s=this.generateFrontmatter(e,t||[],r),a=D4.MetadataHelpers.buildFileContent(s),c=e.folderPath||this.getDefaultFolderPath(e);this.vault.getAbstractFileByPath(c)||await this.vault.createFolder(c);let l=c?`${c}/${i}`:i;return await this.vault.create(l,a)}generateFrontmatter(e,t,r){let i=new Date,s={},a=new Map;for(let c of t)a.set(c.name,c.fieldType);if(s.exo__Asset_uid=r,s.exo__Asset_createdAt=ko.DateFormatter.toLocalTimestamp(i),s.exo__Instance_class=[this.formatWikilink(e.className)],e.label&&e.label.trim()!==""){let c=e.label.trim();s.exo__Asset_label=c,s.aliases=[c]}if(e.parentFile&&e.parentMetadata&&this.inheritParentContext(s,e),e.propertyValues)for(let[c,u]of Object.entries(e.propertyValues)){if(c==="exo__Asset_uid"||c==="exo__Asset_createdAt"||c==="exo__Instance_class"||c==="exo__Asset_label"||c==="aliases"||u==null)continue;let l=a.get(c);s[c]=this.formatValue(u,l)}return s}inheritParentContext(e,t){let r=t.parentMetadata||{},i=t.parentFile?.basename;if((t.className==="ems__Task"||t.className.startsWith("ems__Task"))&&(e.ems__Effort_parent=i?this.formatWikilink(i):null),t.className==="ems__Project"||t.className.startsWith("ems__Project")){let s=r.exo__Instance_class;this.isAreaClass(s)&&(e.ems__Project_area=i?this.formatWikilink(i):null)}r.exo__Asset_isDefinedBy&&(e.exo__Asset_isDefinedBy=r.exo__Asset_isDefinedBy)}isAreaClass(e){return e?(Array.isArray(e)?e:[e]).some(r=>String(r).includes("Area")||String(r).includes("ems__Area")):!1}getDefaultFolderPath(e){if(e.parentFile?.parent?.path)return e.parentFile.parent.path;let t={ems__Task:"tasks",ems__Project:"projects",ems__Area:"areas",ems__Meeting:"meetings",exo__Event:"events",ims__Concept:"concepts"};if(t[e.className])return t[e.className];for(let[r,i]of Object.entries(t))if(e.className.startsWith(r))return i;return"assets"}formatValue(e,t){if(e==null)return null;if(!t)return this.formatInferredValue(e);switch(t){case Pn.PropertyFieldType.Text:return String(e);case Pn.PropertyFieldType.Wikilink:case Pn.PropertyFieldType.Reference:case Pn.PropertyFieldType.StatusSelect:case Pn.PropertyFieldType.SizeSelect:return this.formatWikilink(String(e));case Pn.PropertyFieldType.Number:return typeof e=="number"?e:Number(e)||0;case Pn.PropertyFieldType.Boolean:return this.formatBoolean(e);case Pn.PropertyFieldType.Date:case Pn.PropertyFieldType.DateTime:case Pn.PropertyFieldType.Timestamp:return this.formatTimestamp(e);default:return String(e)}}formatInferredValue(e){return typeof e=="boolean"||typeof e=="number"?e:e instanceof Date?ko.DateFormatter.toLocalTimestamp(e):typeof e=="string"?e.startsWith("[[")||e.startsWith('"[[')?this.formatWikilink(e):e:String(e)}formatWikilink(e){return e.startsWith('"[[')&&e.endsWith(']]"')?e:e.startsWith("[[")&&e.endsWith("]]")?`"${e}"`:`"[[${e}]]"`}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 ko.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:ko.DateFormatter.toLocalTimestamp(t)}if(typeof e=="number"){let t=new Date(e);if(!isNaN(t.getTime()))return ko.DateFormatter.toLocalTimestamp(t)}return String(e)}};hn.GenericAssetCreationService=Gp;hn.GenericAssetCreationService=Gp=A4([(0,W2.injectable)(),C4(0,(0,W2.inject)(I4.DI_TOKENS.IVaultAdapter)),x4("design:paramtypes",[Object])],Gp)});var z2=v(zu=>{"use strict";Object.defineProperty(zu,"__esModule",{value:!0});zu.EffortSortingHelpers=void 0;var zp=class n{static{o(this,"EffortSortingHelpers")}static getTimeFromTimestamp(e){if(!e)return"00:00:00";let t=new Date(e);if(isNaN(t.getTime()))return"00:00:00";let r=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),s=String(t.getSeconds()).padStart(2,"0");return`${r}:${i}:${s}`}static sortByStartTime(e,t){let r=n.getTimeFromTimestamp(e.startTimestamp),i=n.getTimeFromTimestamp(t.startTimestamp),s=r==="00:00:00",a=i==="00:00:00";return s&&!a?1:!s&&a?-1:r.localeCompare(i)}static sortByPriority(e,t){if(e.isTrashed!==t.isTrashed)return e.isTrashed?1:-1;if(e.isDone!==t.isDone)return e.isDone?1:-1;let r=typeof e.metadata.ems__Effort_votes=="number"?e.metadata.ems__Effort_votes:0,i=typeof t.metadata.ems__Effort_votes=="number"?t.metadata.ems__Effort_votes:0;return r!==i?i-r:e.startTime&&t.startTime?e.startTime.localeCompare(t.startTime):e.startTime?-1:t.startTime?1:0}};zu.EffortSortingHelpers=zp});var H2=v(Hu=>{"use strict";Object.defineProperty(Hu,"__esModule",{value:!0});Hu.FilenameValidator=void 0;var ws=class{static{o(this,"FilenameValidator")}static validate(e,t={}){let{maxLength:r=this.DEFAULT_MAX_LENGTH,replacementChar:i=this.DEFAULT_REPLACEMENT,allowEmpty:s=!1}=t,a=[];if(!e||e.trim().length===0)return s||a.push("Filename cannot be empty"),{valid:a.length===0,sanitized:"",errors:a};e.endsWith(" ")&&a.push("Filename should not end with a space");let c=e.trim();this.INVALID_CHARS_PATTERN.test(c)&&a.push('Filename contains invalid characters: / \\ : * ? " < > |');let u=this.getBaseName(c);this.RESERVED_NAMES.has(u.toUpperCase())&&a.push(`"${u}" is a reserved filename on Windows`),c.length>r&&a.push(`Filename exceeds maximum length of ${r} characters`),c.startsWith(".")&&a.push("Filename should not start with a dot"),c.endsWith(".")&&a.push("Filename should not end with a dot");let l=this.sanitize(e,{maxLength:r,replacementChar:i});return{valid:a.length===0,sanitized:l,errors:a}}static sanitize(e,t={}){let{maxLength:r=this.DEFAULT_MAX_LENGTH,replacementChar:i=this.DEFAULT_REPLACEMENT}=t;if(!e||e.trim().length===0)return"";let s=e.trim();for(s=s.replace(this.INVALID_CHARS_PATTERN,i);s.startsWith(".")&&s.length>1;)s=s.substring(1);for(;s.length>0&&(s.endsWith(".")||s.endsWith(" "));)s=s.slice(0,-1);for(s.includes(i)&&(s=s.split(i).filter(l=>l!=="").join(i));s.startsWith(i);)s=s.slice(i.length);for(;s.endsWith(i);)s=s.slice(0,-i.length);let a=this.getBaseName(s);if(this.RESERVED_NAMES.has(a.toUpperCase())){let c=this.getExtension(s);s=a+i+c}if(s.length>r)for(s=s.slice(0,r);s.endsWith(i);)s=s.slice(0,-i.length);return s}static hasInvalidChars(e){return this.INVALID_CHARS_PATTERN.test(e)}static getInvalidChars(e){let t=e.match(this.INVALID_CHARS_PATTERN);return t?[...new Set(t)]:[]}static getBaseName(e){let t=e.lastIndexOf(".");return t===-1||t===0?e:e.substring(0,t)}static getExtension(e){let t=e.lastIndexOf(".");return t===-1||t===0?"":e.substring(t)}};Hu.FilenameValidator=ws;ws.INVALID_CHARS_PATTERN=/[/\\:*?"<>|\x00-\x1F]/g;ws.RESERVED_NAMES=new Set(["CON","PRN","AUX","NUL","COM1","COM2","COM3","COM4","COM5","COM6","COM7","COM8","COM9","LPT1","LPT2","LPT3","LPT4","LPT5","LPT6","LPT7","LPT8","LPT9"]);ws.DEFAULT_MAX_LENGTH=200;ws.DEFAULT_REPLACEMENT="_"});var Kp=v(Ku=>{"use strict";Object.defineProperty(Ku,"__esModule",{value:!0});Ku.NTriplesSerializer=void 0;var Hp=class{static{o(this,"NTriplesSerializer")}serialize(e,t={}){let r=t.newline??`
|
|
101
101
|
`;return e.length===0?"":e.map(i=>i.toString()).join(r)+r}serializeChunk(e,t){return e.length===0?"":e.map(r=>r.toString()).join(t)+t}};Ku.NTriplesSerializer=Hp});var K2=v(Qu=>{"use strict";Object.defineProperty(Qu,"__esModule",{value:!0});Qu.TurtleSerializer=void 0;var ta=Dn(),P4=Kp(),F4={rdf:ta.Namespace.RDF.iri.value,rdfs:ta.Namespace.RDFS.iri.value,owl:ta.Namespace.OWL.iri.value,xsd:ta.Namespace.XSD.iri.value,exo:ta.Namespace.EXO.iri.value,ems:ta.Namespace.EMS.iri.value},Qp=class{static{o(this,"TurtleSerializer")}constructor(){this.nTriplesSerializer=new P4.NTriplesSerializer}serialize(e,t={}){let r=t.newline??`
|
|
102
102
|
`,i=this.composePrefixes(t),s=this.serializePrefixes(i,r),a=this.nTriplesSerializer.serialize(e,{newline:r}).trimEnd();return s?a?`${s}${r}${r}${a}${r}`:`${s}${r}`:a?`${a}${r}`:""}serializePrefixes(e,t){let r=Object.entries(e);return r.length===0?"":r.map(([i,s])=>`@prefix ${i}: <${s}> .`).join(t)}composePrefixes(e){return e.includeDefaultPrefixes??!0?{...F4,...e.prefixes??{}}:{...e.prefixes??{}}}serializeTriplesOnly(e,t){return this.nTriplesSerializer.serializeChunk(e,t).trimEnd()}};Qu.TurtleSerializer=Qp});var X2=v(Yu=>{"use strict";Object.defineProperty(Yu,"__esModule",{value:!0});Yu.JSONLDSerializer=void 0;var Q2=Xe(),Y2=Wt(),R4=dt(),ra=Dn(),N4={rdf:ra.Namespace.RDF.iri.value,rdfs:ra.Namespace.RDFS.iri.value,owl:ra.Namespace.OWL.iri.value,xsd:ra.Namespace.XSD.iri.value,exo:ra.Namespace.EXO.iri.value,ems:ra.Namespace.EMS.iri.value},Yp=class{static{o(this,"JSONLDSerializer")}toDocument(e,t={}){let r={...N4,...t.context??{}},i=new Map;for(let s of e){let a=this.subjectToId(s.subject),c=this.compactIri(s.predicate.value,r),u=this.objectToJSONLD(s.object,r),l=i.get(a)??{"@id":a},f=l[c];f===void 0?l[c]=u:Array.isArray(f)?f.push(u):l[c]=[f,u],i.set(a,l)}return{"@context":r,"@graph":Array.from(i.values())}}serialize(e,t={}){let r=this.toDocument(e,t),i=t.pretty?t.indent??2:void 0;return JSON.stringify(r,null,i)}subjectToId(e){return e instanceof Q2.IRI?e.value:e instanceof Y2.BlankNode?`_:${e.id}`:String(e)}compactIri(e,t){for(let[r,i]of Object.entries(t))if(e.startsWith(i)){let s=e.slice(i.length);if(s.length>0)return`${r}:${s}`}return e}objectToJSONLD(e,t){if(e instanceof Q2.IRI)return{"@id":e.value};if(e instanceof Y2.BlankNode)return{"@id":`_:${e.id}`};if(e instanceof R4.Literal){let r={"@value":e.value};return e.datatype?r["@type"]=this.compactIri(e.datatype.value,t):e.language&&(r["@language"]=e.language,e.hasDirection()&&e.direction&&(r["@direction"]=e.direction)),r}return e}};Yu.JSONLDSerializer=Yp});var Zp=v(Xu=>{"use strict";Object.defineProperty(Xu,"__esModule",{value:!0});Xu.NTriplesParser=void 0;var k4=wi(),J2=Xe(),Xp=dt(),L4=Wt(),na=Dn(),j4={rdf:na.Namespace.RDF.iri.value,rdfs:na.Namespace.RDFS.iri.value,owl:na.Namespace.OWL.iri.value,xsd:na.Namespace.XSD.iri.value,exo:na.Namespace.EXO.iri.value,ems:na.Namespace.EMS.iri.value},Jp=class{static{o(this,"NTriplesParser")}parse(e,t={}){let r={prefixes:{...j4,...t.prefixes??{}},strict:t.strict??!1},i=[];return e.split(/\r?\n/).forEach((a,c)=>{let u=a.trim();!u||u.startsWith("#")||i.push(this.parseLine(u,c+1,r))}),i}parseLine(e,t,r){if(!e.endsWith("."))throw new Error(`Invalid RDF statement at line ${t}: missing '.' terminator`);let s=e.slice(0,-1).trim(),a=this.parseSubject(s,t,r);s=a.rest.trim();let c=this.parsePredicate(s,t,r);s=c.rest.trim();let u=this.parseObject(s,t,r);if(s=u.rest.trim(),s.length>0)throw new Error(`Unexpected tokens after object at line ${t}`);return new k4.Triple(a.node,c.node,u.node)}parseSubject(e,t,r){return e.startsWith("<")?this.consumeIRI(e,t,r):e.startsWith("_:")?this.consumeBlankNode(e,t):this.consumePrefixedName(e,t,r)}parsePredicate(e,t,r){return e.startsWith("<")?this.consumeIRI(e,t,r):this.consumePrefixedName(e,t,r)}parseObject(e,t,r){return e.startsWith("<")?this.consumeIRI(e,t,r):e.startsWith("_:")?this.consumeBlankNode(e,t):e.startsWith('"')?this.consumeLiteral(e,t,r):this.consumePrefixedName(e,t,r)}consumePrefixedName(e,t,r){let i=e.match(/^([a-zA-Z_][\w-]*):([^\s]+)(?:\s+(.*))?$/);if(!i)throw new Error(`Invalid token at line ${t}: ${e}`);let[,s,a,c]=i,u=r.prefixes[s];if(!u)throw new Error(`Unknown prefix "${s}" at line ${t}`);return{node:new J2.IRI(`${u}${a}`),rest:(c??"").trimStart()}}consumeIRI(e,t,r){let i=this.findClosingBracket(e,"<",">");if(i===-1)throw new Error(`Invalid IRI at line ${t}`);let s=e.slice(1,i),a=new J2.IRI(s),c=e.slice(i+1).trimStart();return{node:a,rest:c}}consumeBlankNode(e,t){let r=e.match(/^_:(\w+)(?:\s+(.*))?$/);if(!r)throw new Error(`Invalid blank node identifier at line ${t}`);let[,i,s]=r;return{node:new L4.BlankNode(i),rest:(s??"").trimStart()}}consumeLiteral(e,t,r){let{value:i,rest:s}=this.consumeQuotedString(e,t),a=s.trimStart();if(a.startsWith("^^")){a=a.slice(2).trimStart();let c=a.startsWith("<")?this.consumeIRI(a,t,r):this.consumePrefixedName(a,t,r);return{node:new Xp.Literal(i,c.node),rest:c.rest}}if(a.startsWith("@")){let c=a.match(/^@([a-zA-Z-]+)(?:\s+(.*))?$/);if(!c)throw new Error(`Invalid language tag at line ${t}`);let[,u,l]=c;return{node:new Xp.Literal(i,void 0,u),rest:(l??"").trimStart()}}return{node:new Xp.Literal(i),rest:a}}consumeQuotedString(e,t){if(!e.startsWith('"'))throw new Error(`Expected quoted string at line ${t}`);let r="";for(let i=1;i<e.length;i++){let s=e[i];if(s==="\\"){if(i+1>=e.length)throw new Error(`Invalid escape sequence at line ${t}`);let a=e[i+1];switch(a){case"t":r+=" ",i+=1;break;case"b":r+="\b",i+=1;break;case"n":r+=`
|
|
103
103
|
`,i+=1;break;case"r":r+="\r",i+=1;break;case"f":r+="\f",i+=1;break;case'"':r+='"',i+=1;break;case"\\":r+="\\",i+=1;break;case"u":{let c=e.slice(i+2,i+6);if(c.length!==4||!/^[0-9a-fA-F]{4}$/.test(c))throw new Error(`Invalid \\u escape at line ${t}`);r+=String.fromCharCode(parseInt(c,16)),i+=5;break}case"U":{let c=e.slice(i+2,i+10);if(c.length!==8||!/^[0-9a-fA-F]{8}$/.test(c))throw new Error(`Invalid \\U escape at line ${t}`);r+=String.fromCodePoint(parseInt(c,16)),i+=9;break}default:throw new Error(`Unknown escape sequence \\${a} at line ${t}`)}continue}if(s==='"'){let a=e.slice(i+1);return{value:r,rest:a}}r+=s}throw new Error(`Unterminated string literal at line ${t}`)}findClosingBracket(e,t,r){let i=0;for(let s=0;s<e.length;s++){let a=e[s];if(a===t){i++;continue}if(a===r&&(i--,i===0))return s}return-1}};Xu.NTriplesParser=Jp});var Z2=v(Ju=>{"use strict";Object.defineProperty(Ju,"__esModule",{value:!0});Ju.TurtleParser=void 0;var ia=Dn(),M4=Zp(),V4={rdf:ia.Namespace.RDF.iri.value,rdfs:ia.Namespace.RDFS.iri.value,owl:ia.Namespace.OWL.iri.value,xsd:ia.Namespace.XSD.iri.value,exo:ia.Namespace.EXO.iri.value,ems:ia.Namespace.EMS.iri.value},$4=/^@prefix\s+([a-zA-Z_][\w-]*):\s*<([^>]+)>\s*\.$/,em=class{static{o(this,"TurtleParser")}constructor(){this.nTriplesParser=new M4.NTriplesParser}parse(e,t={}){let r={...V4,...t.prefixes??{}},i=this.collectStatements(e),s=[];return i.forEach(({statement:a,lineNumber:c})=>{if(this.isPrefixStatement(a)){let l=a.match($4);if(!l)throw new Error(`Invalid prefix declaration at line ${c}`);let[,f,h]=l;r[f]=h;return}if(a.includes(";")||a.includes(","))throw new Error(`Complex Turtle statements with ';' or ',' are not supported (line ${c})`);let u=this.normalizeShortcuts(a);s.push(this.nTriplesParser.parseLine(u,c,{prefixes:r,strict:!1}))}),s}collectStatements(e){let t=e.split(/\r?\n/),r=[],i="",s=0;if(t.forEach((a,c)=>{let u=a.trim();!u||u.startsWith("#")||(i||(s=c+1),i=i?`${i} ${u}`:u,u.endsWith(".")&&(r.push({statement:i,lineNumber:s}),i=""))}),i)throw new Error(`Unterminated Turtle statement near line ${s}`);return r}isPrefixStatement(e){return e.startsWith("@prefix")}normalizeShortcuts(e){return e.includes(" a ")?e.replace(/\sa\s/g," rdf:type "):e}};Ju.TurtleParser=em});var e3=v(Zu=>{"use strict";Object.defineProperty(Zu,"__esModule",{value:!0});Zu.RDFSerializer=void 0;var sa=wi(),_s=Xe(),bs=dt(),tm=Wt(),Fn=Dn(),B4=K2(),U4=Kp(),q4=X2(),G4=Z2(),W4=Zp(),z4=1024,H4=`
|
|
@@ -297,7 +297,7 @@ globstar while`,e,d,t,m,_),this.matchOne(e.slice(d),t.slice(m),r))return this.de
|
|
|
297
297
|
\u{1F4CB} Failed Files:`);for(let t of e.results.filter(r=>!r.success))console.log(` \u274C ${t.filepath}: ${t.error}`)}if(e.movedCount>0&&n==="text"){console.log(`
|
|
298
298
|
\u{1F4CB} Moved Files:`);for(let t of e.results.filter(r=>r.success&&r.changes?.moved))console.log(` \u{1F4C1} ${t.filepath} \u2192 ${t.changes?.newPath}`)}}}o(X7,"outputResult");function FS(){return new _r("batch-repair").description("Batch repair folder locations for all markdown files in a directory").argument("<directory>","Directory to process (relative to vault root)").option("--vault <path>","Path to Obsidian vault",process.cwd()).option("--dry-run","Preview changes without modifying files").option("--format <type>","Output format: text|json (default: text)","text").option("--progress","Show progress during processing (default: true)",!0).option("--no-progress","Disable progress output").action(async(n,e)=>{let t=e.format||"text";ye.setFormat(t);try{let r=(0,PS.resolve)(e.vault),i=new Wi(r),s=n;if(!await i.directoryExists(s))throw new rt(`Directory not found: ${s}`,"exocortex batch-repair <existing-directory>");let c=await i.getMarkdownFiles(s);if(c.length===0){if(t==="json"){let O=lt.success({success:!0,total:0,movedCount:0,alreadyCorrectCount:0,errorCount:0,results:[],durationMs:0,atomic:!1});console.log(JSON.stringify(O,null,2))}else console.log(`
|
|
299
299
|
\u{1F4C2} No markdown files found in ${s}`);process.exit(0)}let u=c.map(O=>({command:"repair-folder",filepath:O})),l=e.progress!==!1&&t==="text",f=0;l&&console.log(`
|
|
300
|
-
\u{1F50D} Processing ${c.length} files in ${s}...`);let d=await new Vs(r,e.dryRun).executeBatch(u,!1),m=0,_=0,b=0;for(let O of d.results)if(O.success?O.changes?.moved?m++:_++:b++,l&&!e.dryRun){f++;let I=Math.round(f/c.length*100);process.stdout.write(`\r Processing ${f}/${c.length} (${I}%)...`)}l&&process.stdout.write("\r"+" ".repeat(60)+"\r");let C={...d,movedCount:m,alreadyCorrectCount:_,errorCount:b};X7(t,C),process.exit(C.success?0:5)}catch(r){ye.handle(r)}})}o(FS,"batchRepairCommand");var Wf=require("fs"),Sn=require("path");function RS(){return new _r("resolve").description("Resolve UUID to file path").argument("<uuid>","Full or partial UUID to resolve").option("--vault <path>","Path to Obsidian vault",process.cwd()).option("--format <type>","Output format: uri|path|json (default: uri)","uri").option("--output <type>","Response format: text|json (for MCP tools)","text").option("--partial","Match partial UUIDs (returns all matches)").action(async(n,e)=>{let t=e.output||"text";ye.setFormat(t);try{let r=Date.now();if(!J7(n))throw new rt(`Invalid UUID format: ${n}`,"exocortex resolve <uuid> [--format uri|path|json] [--partial]",{uuid:n});let i=(0,Sn.resolve)(e.vault);if(!(0,Wf.existsSync)(i))throw new hi(i);let s=Z7(i,n,e.partial??!1),a=Date.now()-r;if(s.length===0){if(t==="json"){let c=lt.error("VALIDATION_FILE_NOT_FOUND",`UUID not found: ${n}`,3,{context:{uuid:n}});console.log(JSON.stringify(c,null,2))}else console.error(`UUID not found: ${n}`);process.exit(1)}e.partial||s.length>1?tN(s,i,e.format,t,n,a):eN(s[0],i,e.format,t,n,a)}catch(r){ye.handle(r)}})}o(RS,"resolveCommand");function J7(n){if(n.length<4)return!1;let e=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,t=/^[0-9a-f-]+$/i;return e.test(n)||t.test(n)}o(J7,"isValidUuidFormat");function Z7(n,e,t){let r=[],i=e.toLowerCase();function s(a){let c=(0,Wf.readdirSync)(a,{withFileTypes:!0});for(let u of c){let l=(0,Sn.join)(a,u.name);if(u.isDirectory())!u.name.startsWith(".")&&u.name!=="node_modules"&&s(l);else if(u.isFile()&&u.name.endsWith(".md")){let f=u.name.toLowerCase();t?f.includes(i)&&r.push(l):(f.startsWith(i+".md")||f.startsWith(i+" ")||f.startsWith(i+"-"))&&r.push(l)}}}return o(s,"walk"),s(n),r}o(Z7,"findFilesWithUuid");function NS(n){return`obsidian://vault/${encodeURI(n)}`}o(NS,"pathToObsidianUri");function kS(n){let e=n.match(/^([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/i);return e?e[1]:(0,Sn.basename)(n,".md")}o(kS,"extractUuidFromFilename");function eN(n,e,t,r,i,s){let a=(0,Sn.relative)(e,n),c=NS(a),u=kS((0,Sn.basename)(n));if(r==="json"){let l={uuid:u,path:a,absolutePath:n,uri:c},f=lt.success(l,{durationMs:s,searchUuid:i});console.log(JSON.stringify(f,null,2))}else switch(t){case"path":console.log(n);break;case"json":console.log(JSON.stringify({uuid:u,path:a,absolutePath:n,uri:c},null,2));break;case"uri":default:console.log(c);break}}o(eN,"outputSingleResult");function tN(n,e,t,r,i,s){let a=n.map(c=>{let u=(0,Sn.relative)(e,c),l=NS(u);return{uuid:kS((0,Sn.basename)(c)),path:u,absolutePath:c,uri:l}});if(r==="json"){let c=lt.success({matches:a,count:a.length},{durationMs:s,searchUuid:i,itemCount:a.length});console.log(JSON.stringify(c,null,2))}else switch(t){case"path":for(let c of a)console.log(c.absolutePath);break;case"json":console.log(JSON.stringify(a,null,2));break;case"uri":default:for(let c of a)console.log(c.uri);break}}o(tN,"outputMultipleResults");var Hi=new _r;Hi.name("exocortex").description("CLI tool for Exocortex knowledge management system").version("13.207.
|
|
300
|
+
\u{1F50D} Processing ${c.length} files in ${s}...`);let d=await new Vs(r,e.dryRun).executeBatch(u,!1),m=0,_=0,b=0;for(let O of d.results)if(O.success?O.changes?.moved?m++:_++:b++,l&&!e.dryRun){f++;let I=Math.round(f/c.length*100);process.stdout.write(`\r Processing ${f}/${c.length} (${I}%)...`)}l&&process.stdout.write("\r"+" ".repeat(60)+"\r");let C={...d,movedCount:m,alreadyCorrectCount:_,errorCount:b};X7(t,C),process.exit(C.success?0:5)}catch(r){ye.handle(r)}})}o(FS,"batchRepairCommand");var Wf=require("fs"),Sn=require("path");function RS(){return new _r("resolve").description("Resolve UUID to file path").argument("<uuid>","Full or partial UUID to resolve").option("--vault <path>","Path to Obsidian vault",process.cwd()).option("--format <type>","Output format: uri|path|json (default: uri)","uri").option("--output <type>","Response format: text|json (for MCP tools)","text").option("--partial","Match partial UUIDs (returns all matches)").action(async(n,e)=>{let t=e.output||"text";ye.setFormat(t);try{let r=Date.now();if(!J7(n))throw new rt(`Invalid UUID format: ${n}`,"exocortex resolve <uuid> [--format uri|path|json] [--partial]",{uuid:n});let i=(0,Sn.resolve)(e.vault);if(!(0,Wf.existsSync)(i))throw new hi(i);let s=Z7(i,n,e.partial??!1),a=Date.now()-r;if(s.length===0){if(t==="json"){let c=lt.error("VALIDATION_FILE_NOT_FOUND",`UUID not found: ${n}`,3,{context:{uuid:n}});console.log(JSON.stringify(c,null,2))}else console.error(`UUID not found: ${n}`);process.exit(1)}e.partial||s.length>1?tN(s,i,e.format,t,n,a):eN(s[0],i,e.format,t,n,a)}catch(r){ye.handle(r)}})}o(RS,"resolveCommand");function J7(n){if(n.length<4)return!1;let e=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,t=/^[0-9a-f-]+$/i;return e.test(n)||t.test(n)}o(J7,"isValidUuidFormat");function Z7(n,e,t){let r=[],i=e.toLowerCase();function s(a){let c=(0,Wf.readdirSync)(a,{withFileTypes:!0});for(let u of c){let l=(0,Sn.join)(a,u.name);if(u.isDirectory())!u.name.startsWith(".")&&u.name!=="node_modules"&&s(l);else if(u.isFile()&&u.name.endsWith(".md")){let f=u.name.toLowerCase();t?f.includes(i)&&r.push(l):(f.startsWith(i+".md")||f.startsWith(i+" ")||f.startsWith(i+"-"))&&r.push(l)}}}return o(s,"walk"),s(n),r}o(Z7,"findFilesWithUuid");function NS(n){return`obsidian://vault/${encodeURI(n)}`}o(NS,"pathToObsidianUri");function kS(n){let e=n.match(/^([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/i);return e?e[1]:(0,Sn.basename)(n,".md")}o(kS,"extractUuidFromFilename");function eN(n,e,t,r,i,s){let a=(0,Sn.relative)(e,n),c=NS(a),u=kS((0,Sn.basename)(n));if(r==="json"){let l={uuid:u,path:a,absolutePath:n,uri:c},f=lt.success(l,{durationMs:s,searchUuid:i});console.log(JSON.stringify(f,null,2))}else switch(t){case"path":console.log(n);break;case"json":console.log(JSON.stringify({uuid:u,path:a,absolutePath:n,uri:c},null,2));break;case"uri":default:console.log(c);break}}o(eN,"outputSingleResult");function tN(n,e,t,r,i,s){let a=n.map(c=>{let u=(0,Sn.relative)(e,c),l=NS(u);return{uuid:kS((0,Sn.basename)(c)),path:u,absolutePath:c,uri:l}});if(r==="json"){let c=lt.success({matches:a,count:a.length},{durationMs:s,searchUuid:i,itemCount:a.length});console.log(JSON.stringify(c,null,2))}else switch(t){case"path":for(let c of a)console.log(c.absolutePath);break;case"json":console.log(JSON.stringify(a,null,2));break;case"uri":default:for(let c of a)console.log(c.uri);break}}o(tN,"outputMultipleResults");var Hi=new _r;Hi.name("exocortex").description("CLI tool for Exocortex knowledge management system").version("13.207.24");Hi.command("sparql").description("SPARQL query execution").addCommand(wb());Hi.addCommand(xS());Hi.addCommand(DS());Hi.addCommand(IS());Hi.addCommand(FS());Hi.addCommand(RS());Hi.parse();
|
|
301
301
|
/*! Bundled license information:
|
|
302
302
|
|
|
303
303
|
reflect-metadata/Reflect.js:
|
package/package.json
CHANGED