@kitelev/exocortex-cli 16.242.1 → 16.242.3
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 v16.242.
|
|
2
|
+
// @kitelev/exocortex-cli v16.242.3
|
|
3
3
|
// CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more
|
|
4
4
|
// License: MIT
|
|
5
5
|
|
|
@@ -325,7 +325,7 @@ To resolve:
|
|
|
325
325
|
\u2022 Check service initialization parameters
|
|
326
326
|
\u2022 Verify all required dependencies are available
|
|
327
327
|
\u2022 Review service logs for detailed error information
|
|
328
|
-
\u2022 Contact support if the issue persists`}};C_.ServiceError=JI});var Aj=T(Fr=>{"use strict";Object.defineProperty(Fr,"__esModule",{value:!0});Fr.ServiceError=Fr.ResourceExhaustedError=Fr.NotFoundError=Fr.PermissionError=Fr.StateTransitionError=Fr.NetworkError=Fr.ValidationError=Fr.ApplicationError=Fr.ErrorCode=void 0;var yie=wo();Object.defineProperty(Fr,"ErrorCode",{enumerable:!0,get:a(function(){return yie.ErrorCode},"get")});var bie=Eo();Object.defineProperty(Fr,"ApplicationError",{enumerable:!0,get:a(function(){return bie.ApplicationError},"get")});var _ie=bj();Object.defineProperty(Fr,"ValidationError",{enumerable:!0,get:a(function(){return _ie.ValidationError},"get")});var Sie=_j();Object.defineProperty(Fr,"NetworkError",{enumerable:!0,get:a(function(){return Sie.NetworkError},"get")});var wie=Sj();Object.defineProperty(Fr,"StateTransitionError",{enumerable:!0,get:a(function(){return wie.StateTransitionError},"get")});var Eie=wj();Object.defineProperty(Fr,"PermissionError",{enumerable:!0,get:a(function(){return Eie.PermissionError},"get")});var vie=Ej();Object.defineProperty(Fr,"NotFoundError",{enumerable:!0,get:a(function(){return vie.NotFoundError},"get")});var Tie=vj();Object.defineProperty(Fr,"ResourceExhaustedError",{enumerable:!0,get:a(function(){return Tie.ResourceExhaustedError},"get")});var Aie=Tj();Object.defineProperty(Fr,"ServiceError",{enumerable:!0,get:a(function(){return Aie.ServiceError},"get")})});var eR=T(x_=>{"use strict";Object.defineProperty(x_,"__esModule",{value:!0});x_.ShapeRegistry=void 0;var ZI=class{static{a(this,"ShapeRegistry")}constructor(){this.shapes=new Map}get(e){return this.shapes.get(e)}register(e){this.shapes.set(e.propertyIRI,e)}getAll(){return Array.from(this.shapes.values())}get size(){return this.shapes.size}};x_.ShapeRegistry=ZI});var Ij=T(vo=>{"use strict";var Iie=vo&&vo.__createBinding||(Object.create?(function(r,e,t,n){n===void 0&&(n=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:a(function(){return e[t]},"get")}),Object.defineProperty(r,n,i)}):(function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]})),Rie=vo&&vo.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),tR=vo&&vo.__importStar||(function(){var r=a(function(e){return r=Object.getOwnPropertyNames||function(t){var n=[];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(n[n.length]=i);return n},r(e)},"ownKeys");return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n=r(e),i=0;i<n.length;i++)n[i]!=="default"&&Iie(t,e,n[i]);return Rie(t,e),t}})();Object.defineProperty(vo,"__esModule",{value:!0});vo.ShapeLoader=void 0;var rR=eR(),js=Le(),id=Ye(),_r=Wt(),Cie=Ky(),O_="http://www.w3.org/ns/shacl#",GCe=[["exo__",_r.Namespace.EXO],["ems__",_r.Namespace.EMS],["exocmd__",_r.Namespace.EXOCMD],["ims__",_r.Namespace.IMS],["ztlk__",_r.Namespace.ZTLK],["ptms__",_r.Namespace.PTMS],["lit__",_r.Namespace.LIT],["inbox__",_r.Namespace.INBOX],["pmbok__",_r.Namespace.PMBOK]],Oa=class r{static{a(this,"ShapeLoader")}static async loadFromVaultFS(e){let{readdir:t,readFile:n}=await Promise.resolve().then(()=>tR(require("fs/promises"))),i=await Promise.resolve().then(()=>tR(require("path"))),s=new rR.ShapeRegistry,o={classEdges:[],candidates:[],uidToLabel:new Map};await r.scanDir(e,o,{readdir:t,readFile:n,path:i});let c=r.propertyClassKeysFromEdges(o.classEdges);for(let l of o.candidates)try{r.registerCandidate(l,s,c,i,o.uidToLabel)}catch{}return s}static async loadFromRDFGraph(e){let t=new rR.ShapeRegistry,n=_r.Namespace.EXO,i=_r.Namespace.RDFS,s=_r.Namespace.RDF,o=await r.buildUidClassIndex(e),c=await r.collectPropertyClassIRIs(e,o),l=await Promise.all([...c].map(async f=>{try{return await e.match(void 0,s.term("type"),new js.IRI(f))}catch{return[]}})),u=new Set;for(let f of l.flat())f.subject instanceof js.IRI&&u.add(f.subject.value);for(let f of u){let d;try{d=new js.IRI(f)}catch{continue}let[p,h,g,m,b,_,w,I,E]=await Promise.all([e.match(d,i.term("domain"),void 0),e.match(d,n.term("Property_domain"),void 0),e.match(d,i.term("range"),void 0),e.match(d,n.term("Property_range"),void 0),e.match(d,n.term("Property_cardinality"),void 0),e.match(d,n.term("Property_severity"),void 0),e.match(d,n.term("Asset_label"),void 0),e.match(d,i.term("label"),void 0),e.match(d,n.term("Property_minCount"),void 0)]),S=[...w,...I],R=[...p,...h],P=[...g,...m];if(R.length===0)continue;let x=null;for(let G of S)if(G.object instanceof id.Literal&&(x=r.labelToIRI(G.object.value),x))break;if(!x)continue;let M=await Promise.all(R.map(async G=>G.object instanceof js.IRI?await r.resolveClassIRI(G.object.value,e,o):null)),U=Array.from(new Set(M.filter(G=>G!==null))),D=await Promise.all(P.map(async G=>G.object instanceof js.IRI?await r.resolveClassIRI(G.object.value,e,o):G.object instanceof id.Literal?r.datatypeRangeToIRI(G.object.value):null)),Q=Array.from(new Set(D.filter(G=>G!==null))),ue=r.cardinalityFromIRI(b[0]?.object instanceof js.IRI?b[0].object.value:void 0),$=r.severityFromValue(_[0]?.object instanceof id.Literal||_[0]?.object instanceof js.IRI?_[0].object.value:void 0),le=E[0]?.object,H=le instanceof id.Literal?parseInt(le.value,10):NaN,ie=isNaN(H)?void 0:H;t.register({propertyIRI:x,domain:U,range:Q.length>0?Q:void 0,cardinality:ue,severity:$,minCount:ie})}return t}static async loadFromShapeJSON(e){let{readFile:t}=await Promise.resolve().then(()=>tR(require("fs/promises"))),n=await t(e,"utf-8"),i=JSON.parse(n),s=new rR.ShapeRegistry;for(let o of Object.values(i.shapes))s.register(o);return s}static extractUidFromFileIRI(e){let t=r.FILE_IRI_UID_RE.exec(e);return t?t[1].toLowerCase():null}static async buildUidClassIndex(e){let t=_r.Namespace.RDFS,n=_r.Namespace.EXO,[i,s]=await Promise.all([e.match(void 0,t.term("label"),void 0),e.match(void 0,n.term("Asset_label"),void 0)]),o=new Map;for(let c of[...i,...s]){if(!(c.subject instanceof js.IRI)||!(c.object instanceof id.Literal))continue;let l=r.extractUidFromFileIRI(c.subject.value);if(!l||o.has(l))continue;let u=c.object.value.trim();if(/\s/.test(u))continue;let f=r.labelToIRI(u);f&&o.set(l,f)}return o}static async collectPropertyClassIRIs(e,t){let n=_r.Namespace.EXO,i=_r.Namespace.RDFS,[s,o]=await Promise.all([e.match(void 0,n.term("Class_superClass"),void 0),e.match(void 0,i.term("subClassOf"),void 0)]),c=new Map,l=a(async p=>{let h=c.get(p);return h===void 0&&(h=await r.resolveClassIRI(p,e,t),c.set(p,h)),h},"canon"),u=new Map;for(let p of[...s,...o]){if(!(p.subject instanceof js.IRI)||!(p.object instanceof js.IRI))continue;let[h,g]=await Promise.all([l(p.subject.value),l(p.object.value)]);if(!h||!g||h===g)continue;let m=u.get(g)??new Set;m.add(h),u.set(g,m)}let f=new Set([n.term("Property").value,n.term("ObjectProperty").value]),d=[...f];for(;d.length>0;){let p=d.shift();for(let h of u.get(p)??[])f.has(h)||(f.add(h),d.push(h))}return f}static async resolveClassIRI(e,t,n){if(e.startsWith("https://exocortex.my/ontology/")||e.startsWith("http://www.w3.org/"))return e;let i;try{i=new js.IRI(e)}catch{return null}let s=_r.Namespace.RDFS,o=_r.Namespace.EXO,[c,l]=await Promise.all([t.match(i,s.term("label"),void 0),t.match(i,o.term("Asset_label"),void 0)]);for(let u of[...c,...l])if(u.object instanceof id.Literal){let f=r.labelToIRI(u.object.value);if(f)return f}if(n){let u=r.extractUidFromFileIRI(e);if(u){let f=n.get(u);if(f)return f}}return e}static propertyClassKeysFromEdges(e){let t=["exo__Property",r.EXO_PROPERTY_UID,"exo__ObjectProperty",r.EXO_OBJECT_PROPERTY_UID],n=new Set(t),i=[...t];for(;i.length>0;){let s=i.shift();for(let o of e)if(o.parentKeys.includes(s)&&!o.childKeys.some(c=>n.has(c)))for(let c of o.childKeys)n.add(c),i.push(c)}return n}static wikilinkClassKeys(e){let t=r.extractWikilinkRef(e);if(!t)return[];let n=[t.trim()];for(let i of t.split("|")){let s=i.trim();s.length>0&&n.push(s)}return n}static async scanDir(e,t,n){let i;try{i=await n.readdir(e,{withFileTypes:!0})}catch{return}i.sort((s,o)=>s.name<o.name?-1:s.name>o.name?1:0);for(let s of i){let o=n.path.join(e,s.name);if(s.isDirectory())await r.scanDir(o,t,n);else if(s.isFile()&&s.name.endsWith(".md"))try{await r.collectFile(o,t,n.readFile,n.path)}catch{}}}static async collectFile(e,t,n,i){let s;try{s=await n(e,"utf-8")}catch{return}let o=r.parseFrontmatter(s);if(!o)return;r.indexUidLabel(e,o,t.uidToLabel,i);let c=r.asArray(o.exo__Class_superClass);if(c.length>0){let l=[i.basename(e,".md")],u=o.exo__Asset_uid;typeof u=="string"&&u.trim().length>0&&l.push(u.trim().replace(/^["']|["']$/g,""));let f=o.exo__Asset_label;typeof f=="string"&&f.trim().length>0&&l.push(f.trim().replace(/^["']|["']$/g,"")),t.classEdges.push({childKeys:l,parentKeys:c.flatMap(d=>r.wikilinkClassKeys(d))})}r.asArray(o.exo__Property_domain).length>0&&t.candidates.push({filePath:e,fm:o})}static indexUidLabel(e,t,n,i){let s=t.exo__Asset_label;if(typeof s!="string")return;let o=s.trim().replace(/^["']|["']$/g,"");if(o.length===0||/\s/.test(o)||!_r.Namespace.fromPropertyKey(o))return;let c=t.exo__Asset_uid,l=[typeof c=="string"?c.trim().replace(/^["']|["']$/g,""):"",i.basename(e,".md")];for(let u of l){if(!r.BARE_UID_RE.test(u))continue;let f=u.toLowerCase();n.has(f)||n.set(f,o)}}static registerCandidate(e,t,n,i,s){let{filePath:o,fm:c}=e;if(!r.asArray(c.exo__Instance_class).some(x=>r.wikilinkClassKeys(x).some(M=>n.has(M))))return;let f=null,d=c.exo__Asset_label;if(typeof d=="string"&&d.trim().length>0)f=d.trim().replace(/^["']|["']$/g,"");else{let x=i.basename(o,".md");_r.Namespace.fromPropertyKey(x)&&(f=x)}if(!f)return;let p=r.labelToIRI(f);if(!p)return;let h=c.exo__Property_domain,g=c.exo__Property_range,m=c.exo__Property_cardinality,b=c.exo__Property_severity,_=c.exo__Property_minCount,w=r.asArray(h).map(x=>r.wikilinkToIRI(x,s)).filter(x=>x!==null);if(w.length===0)return;let I=r.asArray(g).map(x=>r.wikilinkToIRI(x,s)).filter(x=>x!==null),E=r.cardinalityFromLabel(typeof m=="string"?m:void 0),S=r.severityFromValue(typeof b=="string"?b:void 0),R=typeof _=="string"?parseInt(_,10):void 0,P=R!==void 0&&!isNaN(R)?R:void 0;t.register({propertyIRI:p,domain:w,range:I.length>0?I:void 0,cardinality:E,severity:S,minCount:P})}static parseFrontmatter(e){let t=/^---\r?\n([\s\S]*?)\r?\n---/.exec(e);if(!t)return null;let n=t[1],i={},s=n.split(/\r?\n/),o=null,c=null;for(let l of s){let u=/^ {2}- (.*)$/.exec(l);if(u){o&&c&&c.push(u[1].trim());continue}o&&c&&(i[o]=c,o=null,c=null);let f=/^([^:]+):\s*(.*)$/.exec(l);if(!f)continue;let d=f[1].trim(),p=f[2].trim();p===""?(o=d,c=[]):i[d]=p}return o&&c&&(i[o]=c),i}static labelToIRI(e){let t=_r.Namespace.fromPropertyKey(e);if(!t)return null;try{return t.namespace.term(t.localName).value}catch{return null}}static extractWikilinkRef(e){let t=e.replace(/^["']|["']$/g,""),n=/\[\[([^\]]+)\]\]/.exec(t);return n?n[1]:t}static wikilinkToIRI(e,t){let n=r.extractWikilinkRef(e);if(!n)return null;let i=n.split("|"),s=i.length>1?[i[1],i[0]]:[i[0]];for(let c of s){let l=r.labelToIRI(c.trim());if(l)return l}let o=r.datatypeRangeToIRI(n);if(o)return o;if(n.startsWith("sh:"))return O_+n.substring(3);if(t)for(let c of s){let l=t.get(c.trim().toLowerCase());if(l===void 0)continue;let u=r.labelToIRI(l);if(u)return u}return null}static datatypeRangeToIRI(e){return e.startsWith("http://")||e.startsWith("https://")?e:(0,Cie.xsdDatatypeIRI)(e)}static asArray(e){return Array.isArray(e)?e.map(String):typeof e=="string"?[e]:[]}static cardinalityFromIRI(e){if(e){if(e.endsWith("PropertyCardinalitySingle"))return"Single";if(e.endsWith("PropertyCardinalityMultiple"))return"Multiple";if(e.includes(r.CARDINALITY_SINGLE_UID))return"Single";if(e.includes(r.CARDINALITY_MULTIPLE_UID))return"Multiple"}}static cardinalityFromLabel(e){if(!e)return;let t=r.extractWikilinkRef(e)??e,n=t.split("|").pop()??t;if(n.includes("Single"))return"Single";if(n.includes("Multiple"))return"Multiple";if(t.includes(r.CARDINALITY_SINGLE_UID))return"Single";if(t.includes(r.CARDINALITY_MULTIPLE_UID))return"Multiple"}static severityFromValue(e){return!e||e.includes("Violation")||e===O_+"Violation"?"sh:Violation":e.includes("Warning")||e===O_+"Warning"?"sh:Warning":e.includes("Info")||e===O_+"Info"?"sh:Info":"sh:Violation"}};vo.ShapeLoader=Oa;Oa.FILE_IRI_UID_RE=/\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.md$/i;Oa.BARE_UID_RE=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;Oa.EXO_PROPERTY_UID="38277bfa-d7f9-4a75-b856-b23276ab0db3";Oa.EXO_OBJECT_PROPERTY_UID="9a1cf31c-9d41-4ef3-9023-584a8d087d16";Oa.CARDINALITY_SINGLE_UID="c93c4b2f-b43d-4cc9-8dd0-31514d608da2";Oa.CARDINALITY_MULTIPLE_UID="59a37aa7-ffbe-4e0d-ba60-06ae370d880f"});var sR=T(sd=>{"use strict";Object.defineProperty(sd,"__esModule",{value:!0});sd.ShapeRegistry=void 0;sd.extractUidFromIRI=iR;sd.validate=Bie;var xie=Le(),nR=class{static{a(this,"ShapeRegistry")}constructor(e=[],t="https://exocortex.my/ontology/exo#Instance_class"){this.shapeMap=new Map(e.map(n=>[n.propertyIRI,n])),this.typePredicateIRI=t}getShape(e){return this.shapeMap.get(e)}getAllShapes(){return Array.from(this.shapeMap.values())}hasShape(e){return this.shapeMap.has(e)}};sd.ShapeRegistry=nR;var Oie="http://www.w3.org/1999/02/22-rdf-syntax-ns#type",Pie=["http://www.w3.org/2001/XMLSchema#","http://www.w3.org/1999/02/22-rdf-syntax-ns#","http://www.w3.org/2000/01/rdf-schema#","http://www.w3.org/2002/07/owl#","http://www.w3.org/ns/shacl#","http://www.w3.org/2004/02/skos/core#","http://purl.org/dc/elements/1.1/","http://purl.org/dc/terms/","http://xmlns.com/foaf/0.1/","https://schema.org/","https://exocortex.my/ontology/xsd#","https://exocortex.my/ontology/rdf#","https://exocortex.my/ontology/rdfs#","https://exocortex.my/ontology/owl#","https://exocortex.my/ontology/skos#"];function Fie(r){return Pie.some(e=>r.startsWith(e))}a(Fie,"isExternalOntologyIRI");var Oj=["http://www.w3.org/2001/XMLSchema#","https://exocortex.my/ontology/xsd#"];function Rj(r){return Oj.some(e=>r.startsWith(e))}a(Rj,"isXSDDatatypeIRI");function Die(r){for(let e of Oj)if(r.startsWith(e))return r.substring(e.length);return null}a(Die,"xsdLocalName");var Lie="http://www.w3.org/2001/XMLSchema#decimal",Nie="http://www.w3.org/2001/XMLSchema#integer",Cj="http://www.w3.org/2001/XMLSchema#string",Vh=/^[+-]?\d+$/,Gh=/^\+?\d+$/,kie=/^[+-]?(\d+(\.\d*)?|\.\d+)$/,xj=/^([+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?|[+-]?INF|NaN)$/,Mie={integer:Vh,long:Vh,int:Vh,short:Vh,byte:Vh,nonNegativeInteger:Gh,unsignedLong:Gh,unsignedInt:Gh,unsignedShort:Gh,unsignedByte:Gh,positiveInteger:/^\+?0*[1-9]\d*$/,nonPositiveInteger:/^(-\d+|\+?0+)$/,negativeInteger:/^-0*[1-9]\d*$/,decimal:kie,float:xj,double:xj,gYear:/^-?\d{4,}(Z|[+-]\d{2}:\d{2})?$/},jie=/^(true|false)$/;function $ie(r,e,t){if(e===t)return!0;let n=Die(t);if(n===null)return!1;if(e===Lie||e===Nie){let i=Mie[n];return i!==void 0&&i.test(r)}return e===Cj&&n==="boolean"?jie.test(r):e===Cj&&n==="anyURI"?xie.IRI.isValidIRI(r):!1}a($ie,"literalConformsToDatatype");var Uie=/\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.md$/i;function iR(r){let e=Uie.exec(r);return e?e[1].toLowerCase():null}a(iR,"extractUidFromIRI");function Bie(r,e,t,n){let i=new Map,s=new Map;for(let l of r){let{subject:u,predicate:f,object:d}=l;if(u.type!=="iri"||f.type!=="iri"||d.type!=="iri"&&d.type!=="literal")continue;let p=u.value,h=f.value,g=d;if(h===e.typePredicateIRI||h===Oie){if(g.type==="iri"){let b=i.get(p)??[];b.push(g.value),i.set(p,b);let _=iR(p);if(_){let w=`uid:${_}`,I=i.get(w)??[];I.push(g.value),i.set(w,I)}}}else{let b=s.get(p);b||(b=new Map,s.set(p,b));let _=b.get(h)??[];_.push(g),b.set(h,_)}}let o=[],c=new Set([...i.keys(),...s.keys()]);for(let l of c){if(l.startsWith("uid:"))continue;let u=i.get(l)??[],f=s.get(l)??new Map;for(let d of e.getAllShapes()){if(!(d.domain.length===0||d.domain.some(g=>u.some(m=>m===g||t.isSubClassOf(m,g)))))continue;let h=f.get(d.propertyIRI)??[];if(d.minCount!==void 0&&d.minCount>0&&h.length<d.minCount){o.push({focusNode:l,propertyPath:d.propertyIRI,severity:d.severity,constraint:"minCount",message:d.message??`sh:minCount violation: expected at least ${d.minCount} value(s) for <${d.propertyIRI}>`});continue}if(h.length!==0){if(d.cardinality==="Single"&&h.length>1){o.push({focusNode:l,propertyPath:d.propertyIRI,severity:d.severity,constraint:"maxCount",message:d.message??`sh:maxCount violation: expected at most 1 value for <${d.propertyIRI}>, got ${h.length}`});continue}if(d.range&&d.range.length>0){for(let g of h)if(g.type==="iri"){if(Fie(g.value))continue;let m=d.range.filter(w=>!Rj(w));if(m.length===0)continue;let b=i.get(g.value)??[];if(b.length===0){let w=iR(g.value);w&&(b=i.get(`uid:${w}`)??[])}if(!m.some(w=>b.some(I=>I===w||t.isSubClassOf(I,w)))){let w=b.length===0;o.push({focusNode:l,propertyPath:d.propertyIRI,severity:w?"sh:Warning":d.severity,constraint:"class",message:w?`sh:class unresolvable-ref: <${g.value}> has no resolvable type in this vault (cross-vault, symbolic, or external reference); not validated against ${m.join(" | ")}`:d.message??`sh:class violation: <${g.value}> does not conform to expected class ${m.join(" | ")}`,actualValue:g.value,expectedRange:m.join(" | ")})}}else if(g.type==="literal"){let m=d.range.filter(w=>Rj(w));if(m.length===0)continue;let b=g.datatype??"http://www.w3.org/2001/XMLSchema#string";m.some(w=>$ie(g.value,b,w))||o.push({focusNode:l,propertyPath:d.propertyIRI,severity:d.severity,constraint:"datatype",message:d.message??`sh:datatype violation: literal "${g.value}" has datatype <${b}>, expected ${m.join(" | ")}`,actualValue:g.value,expectedRange:m.join(" | ")})}}}}}if(n?.closedWorldMode)for(let l of c){let u=s.get(l)??new Map;for(let f of u.keys())e.hasShape(f)||o.push({focusNode:l,propertyPath:f,severity:"sh:Warning",constraint:"unknown-property",message:`Unknown property: <${f}> has no registered shape`})}return o.sort((l,u)=>{let f=l.focusNode.localeCompare(u.focusNode);return f!==0?f:l.propertyPath.localeCompare(u.propertyPath)}),{conforms:!o.some(l=>l.severity==="sh:Violation"),violations:o}}a(Bie,"validate")});var Pj=T(P_=>{"use strict";Object.defineProperty(P_,"__esModule",{value:!0});P_.ApplicationErrorHandler=void 0;var oR=Eo(),Vie=wo(),Gie=zl(),aR=class{static{a(this,"ApplicationErrorHandler")}constructor(e={},t,n){this.logger=t,this.notifier=n,this.telemetryHooks=new Set,this.retryConfig={maxRetries:e.maxRetries??3,initialDelayMs:e.initialDelayMs??1e3,backoffMultiplier:e.backoffMultiplier??2,maxDelayMs:e.maxDelayMs??1e4}}handle(e,t){let n=this.ensureApplicationError(e,t);return this.notifier&&this.notifier.error(n.message),this.callTelemetryHooks("onError",n,t),this.formatError(n)}async executeWithRetry(e,t){let n,i=0;for(;i<=this.retryConfig.maxRetries;)try{return await e()}catch(s){if(n=this.ensureApplicationError(s,t),!n.retriable||i>=this.retryConfig.maxRetries)throw this.callTelemetryHooks("onError",n,t),i>=this.retryConfig.maxRetries&&n.retriable&&this.callTelemetryHooks("onRetryExhausted",n,i+1),n;let o=this.calculateDelay(i);this.callTelemetryHooks("onRetry",n,i+1,o),this.logger?.debug(`Retrying after ${o}ms (attempt ${i+1}/${this.retryConfig.maxRetries})`),await this.sleep(o),i++}throw n}registerTelemetryHook(e){this.telemetryHooks.add(e)}unregisterTelemetryHook(e){this.telemetryHooks.delete(e)}ensureApplicationError(e,t){if(e instanceof oR.ApplicationError){if(t){let i=e,s={...e.context,...t};return new class extends oR.ApplicationError{constructor(){super(...arguments),this.code=i.code,this.retriable=i.retriable,this.guidance=i.guidance}}(e.message,s)}return e}return new class extends oR.ApplicationError{static{a(this,"UnknownError")}constructor(s,o){super(s,{originalError:o.name,...t}),this.code=Vie.ErrorCode.UNKNOWN_ERROR,this.retriable=!1,this.guidance="An unexpected error occurred"}}(e.message,e)}formatError(e){let t=[];return t.push(`\u274C ${e.name}: ${e.message}`),e.guidance&&t.push(`\u{1F4A1} ${e.guidance}`),e.context&&Object.keys(e.context).length>0&&t.push(`Context: ${JSON.stringify(e.context,null,2)}`),t.join(`
|
|
328
|
+
\u2022 Contact support if the issue persists`}};C_.ServiceError=JI});var Aj=T(Fr=>{"use strict";Object.defineProperty(Fr,"__esModule",{value:!0});Fr.ServiceError=Fr.ResourceExhaustedError=Fr.NotFoundError=Fr.PermissionError=Fr.StateTransitionError=Fr.NetworkError=Fr.ValidationError=Fr.ApplicationError=Fr.ErrorCode=void 0;var yie=wo();Object.defineProperty(Fr,"ErrorCode",{enumerable:!0,get:a(function(){return yie.ErrorCode},"get")});var bie=Eo();Object.defineProperty(Fr,"ApplicationError",{enumerable:!0,get:a(function(){return bie.ApplicationError},"get")});var _ie=bj();Object.defineProperty(Fr,"ValidationError",{enumerable:!0,get:a(function(){return _ie.ValidationError},"get")});var Sie=_j();Object.defineProperty(Fr,"NetworkError",{enumerable:!0,get:a(function(){return Sie.NetworkError},"get")});var wie=Sj();Object.defineProperty(Fr,"StateTransitionError",{enumerable:!0,get:a(function(){return wie.StateTransitionError},"get")});var Eie=wj();Object.defineProperty(Fr,"PermissionError",{enumerable:!0,get:a(function(){return Eie.PermissionError},"get")});var vie=Ej();Object.defineProperty(Fr,"NotFoundError",{enumerable:!0,get:a(function(){return vie.NotFoundError},"get")});var Tie=vj();Object.defineProperty(Fr,"ResourceExhaustedError",{enumerable:!0,get:a(function(){return Tie.ResourceExhaustedError},"get")});var Aie=Tj();Object.defineProperty(Fr,"ServiceError",{enumerable:!0,get:a(function(){return Aie.ServiceError},"get")})});var eR=T(x_=>{"use strict";Object.defineProperty(x_,"__esModule",{value:!0});x_.ShapeRegistry=void 0;var ZI=class{static{a(this,"ShapeRegistry")}constructor(){this.shapes=new Map}get(e){return this.shapes.get(e)}register(e){this.shapes.set(e.propertyIRI,e)}getAll(){return Array.from(this.shapes.values())}get size(){return this.shapes.size}};x_.ShapeRegistry=ZI});var Ij=T(vo=>{"use strict";var Iie=vo&&vo.__createBinding||(Object.create?(function(r,e,t,n){n===void 0&&(n=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:a(function(){return e[t]},"get")}),Object.defineProperty(r,n,i)}):(function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]})),Rie=vo&&vo.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),tR=vo&&vo.__importStar||(function(){var r=a(function(e){return r=Object.getOwnPropertyNames||function(t){var n=[];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(n[n.length]=i);return n},r(e)},"ownKeys");return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n=r(e),i=0;i<n.length;i++)n[i]!=="default"&&Iie(t,e,n[i]);return Rie(t,e),t}})();Object.defineProperty(vo,"__esModule",{value:!0});vo.ShapeLoader=void 0;var rR=eR(),js=Le(),id=Ye(),_r=Wt(),Cie=Ky(),O_="http://www.w3.org/ns/shacl#",GCe=[["exo__",_r.Namespace.EXO],["ems__",_r.Namespace.EMS],["exocmd__",_r.Namespace.EXOCMD],["ims__",_r.Namespace.IMS],["ztlk__",_r.Namespace.ZTLK],["ptms__",_r.Namespace.PTMS],["lit__",_r.Namespace.LIT],["inbox__",_r.Namespace.INBOX],["pmbok__",_r.Namespace.PMBOK]],Oa=class r{static{a(this,"ShapeLoader")}static async loadFromVaultFS(e){let{readdir:t,readFile:n}=await Promise.resolve().then(()=>tR(require("fs/promises"))),i=await Promise.resolve().then(()=>tR(require("path"))),s=new rR.ShapeRegistry,o={classEdges:[],candidates:[],uidToLabel:new Map};await r.scanDir(e,o,{readdir:t,readFile:n,path:i});let c=r.propertyClassKeysFromEdges(o.classEdges);for(let l of o.candidates)try{r.registerCandidate(l,s,c,i,o.uidToLabel)}catch{}return s}static async loadFromRDFGraph(e){let t=new rR.ShapeRegistry,n=_r.Namespace.EXO,i=_r.Namespace.RDFS,s=_r.Namespace.RDF,o=await r.buildUidClassIndex(e),c=await r.collectPropertyClassIRIs(e,o),l=await Promise.all([...c].map(async f=>{try{return await e.match(void 0,s.term("type"),new js.IRI(f))}catch{return[]}})),u=new Set;for(let f of l.flat())f.subject instanceof js.IRI&&u.add(f.subject.value);for(let f of u){let d;try{d=new js.IRI(f)}catch{continue}let[p,h,g,m,b,_,w,I,E]=await Promise.all([e.match(d,i.term("domain"),void 0),e.match(d,n.term("Property_domain"),void 0),e.match(d,i.term("range"),void 0),e.match(d,n.term("Property_range"),void 0),e.match(d,n.term("Property_cardinality"),void 0),e.match(d,n.term("Property_severity"),void 0),e.match(d,n.term("Asset_label"),void 0),e.match(d,i.term("label"),void 0),e.match(d,n.term("Property_minCount"),void 0)]),S=[...w,...I],R=[...p,...h],P=[...g,...m];if(R.length===0)continue;let x=null;for(let G of S)if(G.object instanceof id.Literal&&(x=r.labelToIRI(G.object.value),x))break;if(!x)continue;let M=await Promise.all(R.map(async G=>G.object instanceof js.IRI?await r.resolveClassIRI(G.object.value,e,o):null)),U=Array.from(new Set(M.filter(G=>G!==null))),D=await Promise.all(P.map(async G=>G.object instanceof js.IRI?await r.resolveClassIRI(G.object.value,e,o):G.object instanceof id.Literal?r.datatypeRangeToIRI(G.object.value):null)),Q=Array.from(new Set(D.filter(G=>G!==null))),ue=r.cardinalityFromIRI(b[0]?.object instanceof js.IRI?b[0].object.value:void 0),$=r.severityFromValue(_[0]?.object instanceof id.Literal||_[0]?.object instanceof js.IRI?_[0].object.value:void 0),le=E[0]?.object,H=le instanceof id.Literal?parseInt(le.value,10):NaN,ie=isNaN(H)?void 0:H;t.register({propertyIRI:x,domain:U,range:Q.length>0?Q:void 0,cardinality:ue,severity:$,minCount:ie})}return t}static async loadFromShapeJSON(e){let{readFile:t}=await Promise.resolve().then(()=>tR(require("fs/promises"))),n=await t(e,"utf-8"),i=JSON.parse(n),s=new rR.ShapeRegistry;for(let o of Object.values(i.shapes))s.register(o);return s}static extractUidFromFileIRI(e){let t=r.FILE_IRI_UID_RE.exec(e);return t?t[1].toLowerCase():null}static async buildUidClassIndex(e){let t=_r.Namespace.RDFS,n=_r.Namespace.EXO,[i,s]=await Promise.all([e.match(void 0,t.term("label"),void 0),e.match(void 0,n.term("Asset_label"),void 0)]),o=new Map;for(let c of[...i,...s]){if(!(c.subject instanceof js.IRI)||!(c.object instanceof id.Literal))continue;let l=r.extractUidFromFileIRI(c.subject.value);if(!l||o.has(l))continue;let u=c.object.value.trim();if(/\s/.test(u))continue;let f=r.labelToIRI(u);f&&o.set(l,f)}return o}static async collectPropertyClassIRIs(e,t){let n=_r.Namespace.EXO,i=_r.Namespace.RDFS,[s,o]=await Promise.all([e.match(void 0,n.term("Class_superClass"),void 0),e.match(void 0,i.term("subClassOf"),void 0)]),c=new Map,l=a(async p=>{let h=c.get(p);return h===void 0&&(h=await r.resolveClassIRI(p,e,t),c.set(p,h)),h},"canon"),u=new Map;for(let p of[...s,...o]){if(!(p.subject instanceof js.IRI)||!(p.object instanceof js.IRI))continue;let[h,g]=await Promise.all([l(p.subject.value),l(p.object.value)]);if(!h||!g||h===g)continue;let m=u.get(g)??new Set;m.add(h),u.set(g,m)}let f=new Set([n.term("Property").value,n.term("ObjectProperty").value]),d=[...f];for(;d.length>0;){let p=d.shift();for(let h of u.get(p)??[])f.has(h)||(f.add(h),d.push(h))}return f}static async resolveClassIRI(e,t,n){if(e.startsWith("https://exocortex.my/ontology/")||e.startsWith("http://www.w3.org/"))return e;let i;try{i=new js.IRI(e)}catch{return null}let s=_r.Namespace.RDFS,o=_r.Namespace.EXO,[c,l]=await Promise.all([t.match(i,s.term("label"),void 0),t.match(i,o.term("Asset_label"),void 0)]);for(let u of[...c,...l])if(u.object instanceof id.Literal){let f=r.labelToIRI(u.object.value);if(f)return f}if(n){let u=r.extractUidFromFileIRI(e);if(u){let f=n.get(u);if(f)return f}}return e}static propertyClassKeysFromEdges(e){let t=["exo__Property",r.EXO_PROPERTY_UID,"exo__ObjectProperty",r.EXO_OBJECT_PROPERTY_UID],n=new Set(t),i=[...t];for(;i.length>0;){let s=i.shift();for(let o of e)if(o.parentKeys.includes(s)&&!o.childKeys.some(c=>n.has(c)))for(let c of o.childKeys)n.add(c),i.push(c)}return n}static wikilinkClassKeys(e){let t=r.extractWikilinkRef(e);if(!t)return[];let n=[t.trim()];for(let i of t.split("|")){let s=i.trim();s.length>0&&n.push(s)}return n}static async scanDir(e,t,n){let i;try{i=await n.readdir(e,{withFileTypes:!0})}catch{return}i.sort((s,o)=>s.name<o.name?-1:s.name>o.name?1:0);for(let s of i){let o=n.path.join(e,s.name);if(s.isDirectory())await r.scanDir(o,t,n);else if(s.isFile()&&s.name.endsWith(".md"))try{await r.collectFile(o,t,n.readFile,n.path)}catch{}}}static async collectFile(e,t,n,i){let s;try{s=await n(e,"utf-8")}catch{return}let o=r.parseFrontmatter(s);if(!o)return;r.indexUidLabel(e,o,t.uidToLabel,i);let c=r.asArray(o.exo__Class_superClass);if(c.length>0){let l=[i.basename(e,".md")],u=o.exo__Asset_uid;typeof u=="string"&&u.trim().length>0&&l.push(u.trim().replace(/^["']|["']$/g,""));let f=o.exo__Asset_label;typeof f=="string"&&f.trim().length>0&&l.push(f.trim().replace(/^["']|["']$/g,"")),t.classEdges.push({childKeys:l,parentKeys:c.flatMap(d=>r.wikilinkClassKeys(d))})}r.asArray(o.exo__Property_domain).length>0&&t.candidates.push({filePath:e,fm:o})}static indexUidLabel(e,t,n,i){let s=t.exo__Asset_label;if(typeof s!="string")return;let o=s.trim().replace(/^["']|["']$/g,"");if(o.length===0||/\s/.test(o)||!_r.Namespace.fromPropertyKey(o))return;let c=t.exo__Asset_uid,l=[typeof c=="string"?c.trim().replace(/^["']|["']$/g,""):"",i.basename(e,".md")];for(let u of l){if(!r.BARE_UID_RE.test(u))continue;let f=u.toLowerCase();n.has(f)||n.set(f,o)}}static registerCandidate(e,t,n,i,s){let{filePath:o,fm:c}=e;if(!r.asArray(c.exo__Instance_class).some(x=>r.wikilinkClassKeys(x).some(M=>n.has(M))))return;let f=null,d=c.exo__Asset_label;if(typeof d=="string"&&d.trim().length>0)f=d.trim().replace(/^["']|["']$/g,"");else{let x=i.basename(o,".md");_r.Namespace.fromPropertyKey(x)&&(f=x)}if(!f)return;let p=r.labelToIRI(f);if(!p)return;let h=c.exo__Property_domain,g=c.exo__Property_range,m=c.exo__Property_cardinality,b=c.exo__Property_severity,_=c.exo__Property_minCount,w=r.asArray(h).map(x=>r.wikilinkToIRI(x,s)).filter(x=>x!==null);if(w.length===0)return;let I=r.asArray(g).map(x=>r.wikilinkToIRI(x,s)).filter(x=>x!==null),E=r.cardinalityFromLabel(typeof m=="string"?m:void 0),S=r.severityFromValue(typeof b=="string"?b:void 0),R=typeof _=="string"?parseInt(_.trim().replace(/^["']|["']$/g,""),10):void 0,P=R!==void 0&&!isNaN(R)?R:void 0;t.register({propertyIRI:p,domain:w,range:I.length>0?I:void 0,cardinality:E,severity:S,minCount:P})}static parseFrontmatter(e){let t=/^---\r?\n([\s\S]*?)\r?\n---/.exec(e);if(!t)return null;let n=t[1],i={},s=n.split(/\r?\n/),o=null,c=null;for(let l of s){let u=/^ {2}- (.*)$/.exec(l);if(u){o&&c&&c.push(u[1].trim());continue}o&&c&&(i[o]=c,o=null,c=null);let f=/^([^:]+):\s*(.*)$/.exec(l);if(!f)continue;let d=f[1].trim(),p=f[2].trim();p===""?(o=d,c=[]):i[d]=p}return o&&c&&(i[o]=c),i}static labelToIRI(e){let t=_r.Namespace.fromPropertyKey(e);if(!t)return null;try{return t.namespace.term(t.localName).value}catch{return null}}static extractWikilinkRef(e){let t=e.replace(/^["']|["']$/g,""),n=/\[\[([^\]]+)\]\]/.exec(t);return n?n[1]:t}static wikilinkToIRI(e,t){let n=r.extractWikilinkRef(e);if(!n)return null;let i=n.split("|"),s=i.length>1?[i[1],i[0]]:[i[0]];for(let c of s){let l=r.labelToIRI(c.trim());if(l)return l}let o=r.datatypeRangeToIRI(n);if(o)return o;if(n.startsWith("sh:"))return O_+n.substring(3);if(t)for(let c of s){let l=t.get(c.trim().toLowerCase());if(l===void 0)continue;let u=r.labelToIRI(l);if(u)return u}return null}static datatypeRangeToIRI(e){return e.startsWith("http://")||e.startsWith("https://")?e:(0,Cie.xsdDatatypeIRI)(e)}static asArray(e){return Array.isArray(e)?e.map(String):typeof e=="string"?[e]:[]}static cardinalityFromIRI(e){if(e){if(e.endsWith("PropertyCardinalitySingle"))return"Single";if(e.endsWith("PropertyCardinalityMultiple"))return"Multiple";if(e.includes(r.CARDINALITY_SINGLE_UID))return"Single";if(e.includes(r.CARDINALITY_MULTIPLE_UID))return"Multiple"}}static cardinalityFromLabel(e){if(!e)return;let t=r.extractWikilinkRef(e)??e,n=t.split("|").pop()??t;if(n.includes("Single"))return"Single";if(n.includes("Multiple"))return"Multiple";if(t.includes(r.CARDINALITY_SINGLE_UID))return"Single";if(t.includes(r.CARDINALITY_MULTIPLE_UID))return"Multiple"}static severityFromValue(e){return!e||e.includes("Violation")||e===O_+"Violation"?"sh:Violation":e.includes("Warning")||e===O_+"Warning"?"sh:Warning":e.includes("Info")||e===O_+"Info"?"sh:Info":"sh:Violation"}};vo.ShapeLoader=Oa;Oa.FILE_IRI_UID_RE=/\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.md$/i;Oa.BARE_UID_RE=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;Oa.EXO_PROPERTY_UID="38277bfa-d7f9-4a75-b856-b23276ab0db3";Oa.EXO_OBJECT_PROPERTY_UID="9a1cf31c-9d41-4ef3-9023-584a8d087d16";Oa.CARDINALITY_SINGLE_UID="c93c4b2f-b43d-4cc9-8dd0-31514d608da2";Oa.CARDINALITY_MULTIPLE_UID="59a37aa7-ffbe-4e0d-ba60-06ae370d880f"});var sR=T(sd=>{"use strict";Object.defineProperty(sd,"__esModule",{value:!0});sd.ShapeRegistry=void 0;sd.extractUidFromIRI=iR;sd.validate=Bie;var xie=Le(),nR=class{static{a(this,"ShapeRegistry")}constructor(e=[],t="https://exocortex.my/ontology/exo#Instance_class"){this.shapeMap=new Map(e.map(n=>[n.propertyIRI,n])),this.typePredicateIRI=t}getShape(e){return this.shapeMap.get(e)}getAllShapes(){return Array.from(this.shapeMap.values())}hasShape(e){return this.shapeMap.has(e)}};sd.ShapeRegistry=nR;var Oie="http://www.w3.org/1999/02/22-rdf-syntax-ns#type",Pie=["http://www.w3.org/2001/XMLSchema#","http://www.w3.org/1999/02/22-rdf-syntax-ns#","http://www.w3.org/2000/01/rdf-schema#","http://www.w3.org/2002/07/owl#","http://www.w3.org/ns/shacl#","http://www.w3.org/2004/02/skos/core#","http://purl.org/dc/elements/1.1/","http://purl.org/dc/terms/","http://xmlns.com/foaf/0.1/","https://schema.org/","https://exocortex.my/ontology/xsd#","https://exocortex.my/ontology/rdf#","https://exocortex.my/ontology/rdfs#","https://exocortex.my/ontology/owl#","https://exocortex.my/ontology/skos#"];function Fie(r){return Pie.some(e=>r.startsWith(e))}a(Fie,"isExternalOntologyIRI");var Oj=["http://www.w3.org/2001/XMLSchema#","https://exocortex.my/ontology/xsd#"];function Rj(r){return Oj.some(e=>r.startsWith(e))}a(Rj,"isXSDDatatypeIRI");function Die(r){for(let e of Oj)if(r.startsWith(e))return r.substring(e.length);return null}a(Die,"xsdLocalName");var Lie="http://www.w3.org/2001/XMLSchema#decimal",Nie="http://www.w3.org/2001/XMLSchema#integer",Cj="http://www.w3.org/2001/XMLSchema#string",Vh=/^[+-]?\d+$/,Gh=/^\+?\d+$/,kie=/^[+-]?(\d+(\.\d*)?|\.\d+)$/,xj=/^([+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?|[+-]?INF|NaN)$/,Mie={integer:Vh,long:Vh,int:Vh,short:Vh,byte:Vh,nonNegativeInteger:Gh,unsignedLong:Gh,unsignedInt:Gh,unsignedShort:Gh,unsignedByte:Gh,positiveInteger:/^\+?0*[1-9]\d*$/,nonPositiveInteger:/^(-\d+|\+?0+)$/,negativeInteger:/^-0*[1-9]\d*$/,decimal:kie,float:xj,double:xj,gYear:/^-?\d{4,}(Z|[+-]\d{2}:\d{2})?$/},jie=/^(true|false)$/;function $ie(r,e,t){if(e===t)return!0;let n=Die(t);if(n===null)return!1;if(e===Lie||e===Nie){let i=Mie[n];return i!==void 0&&i.test(r)}return e===Cj&&n==="boolean"?jie.test(r):e===Cj&&n==="anyURI"?xie.IRI.isValidIRI(r):!1}a($ie,"literalConformsToDatatype");var Uie=/\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.md$/i;function iR(r){let e=Uie.exec(r);return e?e[1].toLowerCase():null}a(iR,"extractUidFromIRI");function Bie(r,e,t,n){let i=new Map,s=new Map;for(let l of r){let{subject:u,predicate:f,object:d}=l;if(u.type!=="iri"||f.type!=="iri"||d.type!=="iri"&&d.type!=="literal")continue;let p=u.value,h=f.value,g=d;if(h===e.typePredicateIRI||h===Oie){if(g.type==="iri"){let b=i.get(p)??[];b.push(g.value),i.set(p,b);let _=iR(p);if(_){let w=`uid:${_}`,I=i.get(w)??[];I.push(g.value),i.set(w,I)}}}else{let b=s.get(p);b||(b=new Map,s.set(p,b));let _=b.get(h)??[];_.push(g),b.set(h,_)}}let o=[],c=new Set([...i.keys(),...s.keys()]);for(let l of c){if(l.startsWith("uid:"))continue;let u=i.get(l)??[],f=s.get(l)??new Map;for(let d of e.getAllShapes()){if(!(d.domain.length===0||d.domain.some(g=>u.some(m=>m===g||t.isSubClassOf(m,g)))))continue;let h=f.get(d.propertyIRI)??[];if(d.minCount!==void 0&&d.minCount>0&&h.length<d.minCount){o.push({focusNode:l,propertyPath:d.propertyIRI,severity:d.severity,constraint:"minCount",message:d.message??`sh:minCount violation: expected at least ${d.minCount} value(s) for <${d.propertyIRI}>`});continue}if(h.length!==0){if(d.cardinality==="Single"&&h.length>1){o.push({focusNode:l,propertyPath:d.propertyIRI,severity:d.severity,constraint:"maxCount",message:d.message??`sh:maxCount violation: expected at most 1 value for <${d.propertyIRI}>, got ${h.length}`});continue}if(d.range&&d.range.length>0){for(let g of h)if(g.type==="iri"){if(Fie(g.value))continue;let m=d.range.filter(w=>!Rj(w));if(m.length===0)continue;let b=i.get(g.value)??[];if(b.length===0){let w=iR(g.value);w&&(b=i.get(`uid:${w}`)??[])}if(!m.some(w=>b.some(I=>I===w||t.isSubClassOf(I,w)))){let w=b.length===0;o.push({focusNode:l,propertyPath:d.propertyIRI,severity:w?"sh:Warning":d.severity,constraint:"class",message:w?`sh:class unresolvable-ref: <${g.value}> has no resolvable type in this vault (cross-vault, symbolic, or external reference); not validated against ${m.join(" | ")}`:d.message??`sh:class violation: <${g.value}> does not conform to expected class ${m.join(" | ")}`,actualValue:g.value,expectedRange:m.join(" | ")})}}else if(g.type==="literal"){let m=d.range.filter(w=>Rj(w));if(m.length===0)continue;let b=g.datatype??"http://www.w3.org/2001/XMLSchema#string";m.some(w=>$ie(g.value,b,w))||o.push({focusNode:l,propertyPath:d.propertyIRI,severity:d.severity,constraint:"datatype",message:d.message??`sh:datatype violation: literal "${g.value}" has datatype <${b}>, expected ${m.join(" | ")}`,actualValue:g.value,expectedRange:m.join(" | ")})}}}}}if(n?.closedWorldMode)for(let l of c){let u=s.get(l)??new Map;for(let f of u.keys())e.hasShape(f)||o.push({focusNode:l,propertyPath:f,severity:"sh:Warning",constraint:"unknown-property",message:`Unknown property: <${f}> has no registered shape`})}return o.sort((l,u)=>{let f=l.focusNode.localeCompare(u.focusNode);return f!==0?f:l.propertyPath.localeCompare(u.propertyPath)}),{conforms:!o.some(l=>l.severity==="sh:Violation"),violations:o}}a(Bie,"validate")});var Pj=T(P_=>{"use strict";Object.defineProperty(P_,"__esModule",{value:!0});P_.ApplicationErrorHandler=void 0;var oR=Eo(),Vie=wo(),Gie=zl(),aR=class{static{a(this,"ApplicationErrorHandler")}constructor(e={},t,n){this.logger=t,this.notifier=n,this.telemetryHooks=new Set,this.retryConfig={maxRetries:e.maxRetries??3,initialDelayMs:e.initialDelayMs??1e3,backoffMultiplier:e.backoffMultiplier??2,maxDelayMs:e.maxDelayMs??1e4}}handle(e,t){let n=this.ensureApplicationError(e,t);return this.notifier&&this.notifier.error(n.message),this.callTelemetryHooks("onError",n,t),this.formatError(n)}async executeWithRetry(e,t){let n,i=0;for(;i<=this.retryConfig.maxRetries;)try{return await e()}catch(s){if(n=this.ensureApplicationError(s,t),!n.retriable||i>=this.retryConfig.maxRetries)throw this.callTelemetryHooks("onError",n,t),i>=this.retryConfig.maxRetries&&n.retriable&&this.callTelemetryHooks("onRetryExhausted",n,i+1),n;let o=this.calculateDelay(i);this.callTelemetryHooks("onRetry",n,i+1,o),this.logger?.debug(`Retrying after ${o}ms (attempt ${i+1}/${this.retryConfig.maxRetries})`),await this.sleep(o),i++}throw n}registerTelemetryHook(e){this.telemetryHooks.add(e)}unregisterTelemetryHook(e){this.telemetryHooks.delete(e)}ensureApplicationError(e,t){if(e instanceof oR.ApplicationError){if(t){let i=e,s={...e.context,...t};return new class extends oR.ApplicationError{constructor(){super(...arguments),this.code=i.code,this.retriable=i.retriable,this.guidance=i.guidance}}(e.message,s)}return e}return new class extends oR.ApplicationError{static{a(this,"UnknownError")}constructor(s,o){super(s,{originalError:o.name,...t}),this.code=Vie.ErrorCode.UNKNOWN_ERROR,this.retriable=!1,this.guidance="An unexpected error occurred"}}(e.message,e)}formatError(e){let t=[];return t.push(`\u274C ${e.name}: ${e.message}`),e.guidance&&t.push(`\u{1F4A1} ${e.guidance}`),e.context&&Object.keys(e.context).length>0&&t.push(`Context: ${JSON.stringify(e.context,null,2)}`),t.join(`
|
|
329
329
|
`)}calculateDelay(e){let t=this.retryConfig.initialDelayMs*Math.pow(this.retryConfig.backoffMultiplier,e);return Math.min(t,this.retryConfig.maxDelayMs)}sleep(e){return new Promise(t=>setTimeout(t,e))}callTelemetryHooks(e,...t){for(let n of this.telemetryHooks)try{let i=n[e];i&&i.apply(n,t)}catch(i){Gie.LoggingService.error("Error in telemetry hook",i instanceof Error?i:new Error(String(i)))}}};P_.ApplicationErrorHandler=aR});var Fj=T(F_=>{"use strict";Object.defineProperty(F_,"__esModule",{value:!0});F_.ApplicationErrorHandler=void 0;var qie=Pj();Object.defineProperty(F_,"ApplicationErrorHandler",{enumerable:!0,get:a(function(){return qie.ApplicationErrorHandler},"get")})});var Dj=T(D_=>{"use strict";Object.defineProperty(D_,"__esModule",{value:!0});D_.ClassHierarchy=void 0;var Wie="http://www.w3.org/2000/01/rdf-schema#subClassOf",cR=class{static{a(this,"ClassHierarchy")}constructor(e){this.adjacency=new Map;for(let t of e){if(t.predicate.type!=="iri"||t.predicate.value!==Wie||t.subject.type!=="iri"||t.object.type!=="iri")continue;let n=t.subject.value,i=t.object.value,s=this.adjacency.get(n);s||(s=new Set,this.adjacency.set(n,s)),s.add(i)}}isSubClassOf(e,t){if(e===t)return!0;let n=new Set,i=[e];for(;i.length>0;){let s=i.shift();if(s===void 0)break;if(n.has(s))continue;n.add(s);let o=this.adjacency.get(s);if(o)for(let c of o){if(c===t)return!0;n.has(c)||i.push(c)}}return!1}getAncestors(e){let t=new Set,n=new Set,i=[e];for(;i.length>0;){let s=i.shift();if(s===void 0)break;if(n.has(s))continue;n.add(s);let o=this.adjacency.get(s);if(o)for(let c of o)t.add(c),n.has(c)||i.push(c)}return t}};D_.ClassHierarchy=cR});var lR=T(L_=>{"use strict";Object.defineProperty(L_,"__esModule",{value:!0});L_.parseTarball=kj;L_.parseTarballGzip=Qie;var zie={0:"file",1:"hardLink",2:"symbolicLink",3:"characterDevice",4:"blockDevice",5:"directory",6:"fifo",7:"contiguousFile",g:"globalExtendedHeader",x:"extendedHeader",D:"gnuDirectory",I:"gnuInodeMetadata",K:"gnuLongLinkName",L:"gnuLongFileName",N:"gnuOldLongFileName",M:"gnuMultiVolume",S:"gnuSparseFile",E:"gnuExtendedSparse"},Hie=new Set(["extendedHeader","globalExtendedHeader","gnuLongFileName","gnuOldLongFileName","gnuLongLinkName"]),Lj;function Nj(){return Lj??(Lj=new TextDecoder)}a(Nj,"getDecoder");function qh(r,e,t){let n=r.subarray(e,e+t),i=n.indexOf(0);return Nj().decode(i===-1?n:n.subarray(0,i))}a(qh,"readString");function Kie(r,e,t){let n="";for(let s=0;s<t;s++)n+=String.fromCodePoint(r[e+s]);let i=Number.parseInt(n,8);return Number.isNaN(i)?0:i}a(Kie,"readNumber");function Yie(r){let e=Nj().decode(r),t={};for(let n of e.split(`
|
|
330
330
|
`)){let i=n.indexOf("=");if(i===-1)continue;let s=n.slice(n.indexOf(" ")+1,i),o=n.slice(i+1);s&&(t[s]=o)}return t}a(Yie,"parseExtendedHeaders");function Xie(r){let e=r.replace(/\\/g,"/");e=e.replace(/^[a-zA-Z]:\//,""),e=e.replace(/^\/+/,"");let t=e.startsWith("./"),n=e.split("/"),i=[];for(let o of n)o===".."?i.pop():o!=="."&&o!==""&&i.push(o);let s=i.join("/");return t&&!s.startsWith("./")&&(s="./"+s),r.endsWith("/")&&!s.endsWith("/")&&(s+="/"),s}a(Xie,"sanitizePath");function kj(r){let e=r.byteOffset===0&&r.byteLength===r.buffer.byteLength?r:r.slice(),t=[],n=0,i,s;for(;n+512<=e.byteLength;){let o=qh(e,n,100);if(o.length===0)break;let c=!1;if(i){let h=i.path??i.linkpath;h&&(o=h,c=!0)}let l=Kie(e,n+124,12),u=512+512*Math.trunc(l/512)+(l%512?512:0),f=qh(e,n+156,1)||"0",d=zie[f]??f;if(d==="extendedHeader"||d==="globalExtendedHeader"){let h=Yie(e.subarray(n+512,n+512+l));d==="extendedHeader"?i=h:(i=void 0,s={...s,...h}),n+=u;continue}if(Hie.has(d)){i={path:qh(e,n+512,l)},n+=u;continue}if(!c&&qh(e,n+257,6).startsWith("ustar")){let g=qh(e,n+345,155);g.length>0&&(o=`${g}/${o}`)}o=Xie(o);let p=l===0?void 0:e.subarray(n+512,n+512+l);t.push({name:o,type:d,size:l,data:p}),i=void 0,n+=u}return t}a(kj,"parseTarball");async function Qie(r){let e=new Uint8Array(r instanceof Uint8Array?r:new Uint8Array(r)),t=new DecompressionStream("gzip"),n=t.writable.getWriter(),[,i]=await Promise.all([n.write(e).then(()=>n.close()),new Response(t.readable).arrayBuffer()]);return kj(new Uint8Array(i))}a(Qie,"parseTarballGzip")});var k_=T(N_=>{"use strict";Object.defineProperty(N_,"__esModule",{value:!0});N_.isBinaryPayload=fR;N_.restCreateCommit=Zie;function fR(r){return typeof r!="string"}a(fR,"isBinaryPayload");var Jie="https://api.github.com";function Mj(r){if(r!==null&&typeof r=="object"&&"object"in r){let e=r.object;if(e!==null&&typeof e=="object"&&"sha"in e){let t=e.sha;return typeof t=="string"?t:void 0}}}a(Mj,"readObjectSha");function uR(r){if(r!==null&&typeof r=="object"&&"sha"in r){let e=r.sha;return typeof e=="string"?e:void 0}}a(uR,"readSha");async function Zie(r,e){let{owner:t,repo:n,branch:i,files:s,message:o}=e,c=e.deletions??[],l=(e.baseURL??Jie).replace(/\/$/,""),u=e.redact??(x=>x);if(typeof t!="string"||t.length===0)throw new Error("restCreateCommit: owner is required");if(typeof n!="string"||n.length===0)throw new Error("restCreateCommit: repo is required");if(typeof i!="string"||i.length===0)throw new Error("GitHub createCommit: branch is required");if(!(s instanceof Map)||s.size===0&&c.length===0)throw new Error("GitHub createCommit: files map must be non-empty (unless deletions are provided)");let f=new Set;for(let x of c){if(typeof x!="string"||x.length===0)throw new Error("GitHub createCommit: deletion path must be a non-empty string");if(s.has(x))throw new Error(u(`GitHub createCommit: path ${x} is both written and deleted \u2014 ambiguous`));f.add(x)}if(typeof o!="string"||o.length===0)throw new Error("GitHub createCommit: message is required");let d=encodeURIComponent(t),p=encodeURIComponent(n),h=encodeURIComponent(i),g=await r({method:"GET",url:`${l}/repos/${d}/${p}/git/refs/heads/${h}`}),m=Mj(g?.json);if(typeof m!="string"||m.length===0)throw new Error(u(`GitHub createCommit: missing object.sha for ref heads/${i}`));if(e.expectedHeadSha!==void 0&&m!==e.expectedHeadSha)throw new Error(u(`GitHub createCommit: head heads/${i} moved since the caller's check (expected ${e.expectedHeadSha}, found ${m}) \u2014 refusing to avoid overwriting a concurrent change`));let b=new Map;for(let[x,M]of s){if(!fR(M))continue;let U=await r({method:"POST",url:`${l}/repos/${d}/${p}/git/blobs`,contentType:"application/json",body:JSON.stringify({content:M.base64,encoding:"base64"})}),D=uR(U?.json);if(typeof D!="string"||D.length===0)throw new Error(u(`GitHub createCommit: blob create returned no sha for ${x}`));b.set(x,D)}let _=Array.from(s.entries()).map(([x,M])=>fR(M)?{path:x,mode:"100644",type:"blob",sha:b.get(x)}:{path:x,mode:"100644",type:"blob",content:M});for(let x of f)_.push({path:x,mode:"100644",type:"blob",sha:null});let w=await r({method:"POST",url:`${l}/repos/${d}/${p}/git/trees`,contentType:"application/json",body:JSON.stringify({base_tree:m,tree:_})}),I=uR(w?.json);if(typeof I!="string"||I.length===0)throw new Error(u("GitHub createCommit: tree create returned no sha"));let E=await r({method:"POST",url:`${l}/repos/${d}/${p}/git/commits`,contentType:"application/json",body:JSON.stringify({message:o,tree:I,parents:[m]})}),S=uR(E?.json);if(typeof S!="string"||S.length===0)throw new Error(u("GitHub createCommit: commit create returned no sha"));let R=await r({method:"PATCH",url:`${l}/repos/${d}/${p}/git/refs/heads/${h}`,contentType:"application/json",body:JSON.stringify({sha:S,force:!1})}),P=Mj(R?.json);if(P!==S)throw new Error(u(`GitHub createCommit: ref update mismatch (expected ${S}, got ${P})`));return S}a(Zie,"restCreateCommit")});var Uj=T(Fi=>{"use strict";Object.defineProperty(Fi,"__esModule",{value:!0});Fi.MATERIALIZE_PROGRESS_MIN_FILES=Fi.MATERIALIZE_PROGRESS_INTERVAL=void 0;Fi.discoverWrapperDir=jj;Fi.extractShaFromWrapper=$j;Fi.mountAssetSpaceFiles=rse;Fi.escapeGitmodulesRegex=pR;Fi.appendGitmodulesEntry=nse;Fi.stripGitmodulesEntry=ise;var ese=lR(),dR=new Set(["globalExtendedHeader","extendedHeader"]);function M_(r){let e=r.replace(/\\/g,"/").replace(/\/+/g,"/");for(;e.startsWith("./");)e=e.slice(2);return e}a(M_,"normalizeEntryPath");function jj(r){let e=r.find(s=>!dR.has(s.type)&&M_(s.name).includes("/"));if(e===void 0)throw new Error("discoverWrapperDir: no wrapper-bearing entry in tarball");let t=M_(e.name),n=t.slice(0,t.indexOf("/"));if(n.length===0)throw new Error(`discoverWrapperDir: empty wrapper segment in entry "${e.name}"`);let i=n+"/";for(let s of r){if(dR.has(s.type))continue;let o=M_(s.name);if(!(o===n||o===i)&&!o.startsWith(i))throw new Error(`discoverWrapperDir: entry "${s.name}" not under wrapper "${n}"`)}return n}a(jj,"discoverWrapperDir");function $j(r){let e=r.match(/-([0-9a-fA-F]{7,40})$/);if(e===null)throw new Error(`extractShaFromWrapper: wrapper "${r}" does not match expected GitHub pattern <owner>-<repo>-<sha>`);return e[1].toLowerCase()}a($j,"extractShaFromWrapper");function tse(r,e){let t=e+"/",n=[];for(let i of r){if(i.type==="symbolicLink"||i.type==="hardLink")throw new Error(`${i.type} entry "${i.name}" rejected for security`);if(dR.has(i.type)||i.type==="directory")continue;let s=M_(i.name);if(s===e||s===t)continue;if(!s.startsWith(t))throw new Error(`entry "${i.name}" not under wrapper "${e}"`);let o=s.slice(t.length);if(o.length!==0){if(o.split("/").some(c=>c===".."))throw new Error(`path traversal detected for entry "${i.name}"`);i.data!==void 0&&n.push({relPath:o,content:i.data})}}return n}a(tse,"buildMountFiles");Fi.MATERIALIZE_PROGRESS_INTERVAL=200;Fi.MATERIALIZE_PROGRESS_MIN_FILES=500;async function rse(r){let{http:e,fs:t,owner:n,repo:i,ref:s,targetPath:o}=r,c=a((b,_)=>{if(r.onProgress!==void 0)try{r.onProgress(b,_)}catch{}},"emit");c("fetch");let l=await e.fetchTarball(n,i,s);c("extract");let u=await(0,ese.parseTarballGzip)(l);if(u.length===0)throw new Error(`tarball empty for ${n}/${i}@${s}`);let f=jj(u),d=$j(f),p=tse(u,f);c("materialize");let h=p.length,g=r.onProgress!==void 0&&h>Fi.MATERIALIZE_PROGRESS_MIN_FILES,m=await t.materialize(o,p,g?b=>{b%Fi.MATERIALIZE_PROGRESS_INTERVAL===0&&b<h&&c("materialize",{processed:b,total:h})}:void 0);return{sha:d,fileCount:m}}a(rse,"mountAssetSpaceFiles");function pR(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}a(pR,"escapeGitmodulesRegex");function nse(r,e,t){let n=new RegExp(`^\\s*\\[submodule\\s+"${pR(e)}"\\]`,"m");if(r.length>0&&n.test(r))return{content:r,added:!1};let i=r.length===0||r.endsWith(`
|
|
331
331
|
`)?"":`
|
|
@@ -685,7 +685,7 @@ Next steps:
|
|
|
685
685
|
`).map(n=>n.trim()).filter(n=>n.length>0),t=e[e.length-1];if(t!==void 0)try{return JSON.parse(t)}catch{return}}a(U_e,"parseLastJsonLine");function lV(r,e){return e.filter(t=>{let n=r[t];return typeof n!="string"||n.trim().length===0})}a(lV,"missingStringFields");var _E=class{constructor(e){this.deps=e}static{a(this,"McpServer")}async handle(e){if(typeof e!="object"||e===null||Array.isArray(e))return{jsonrpc:"2.0",id:null,error:{code:cV,message:"Invalid request: expected a JSON-RPC object"}};let t=e.id,n=t===void 0;if(typeof e.method!="string")return n?null:{jsonrpc:"2.0",id:t??null,error:{code:cV,message:"Invalid request: missing method"}};if(n)return null;let i=t??null;switch(e.method){case"initialize":return{jsonrpc:"2.0",id:i,result:{protocolVersion:j_e,capabilities:{tools:{}},serverInfo:{name:"exocortex",version:this.deps.version}}};case"ping":return{jsonrpc:"2.0",id:i,result:{}};case"tools/list":return{jsonrpc:"2.0",id:i,result:{tools:aV}};case"tools/call":return{jsonrpc:"2.0",id:i,result:await this.callTool(e.params??{})};default:return{jsonrpc:"2.0",id:i,error:{code:$_e,message:`Method not found: ${e.method}`}}}}async callTool(e){let t=e.name,n=e.arguments??{},i;if(t==="create_asset"){let c=lV(n,["vault","class","label"]);if(c.length>0)return pp(`create_asset: missing required argument(s): ${c.join(", ")}`,!0);let l=iV(n);if(l!==null)return pp(`create_asset: ${l}`,!0);i=sV(n)}else if(t==="create_effort"){let c=lV(n,["vault","command","target"]);if(c.length>0)return pp(`create_effort: missing required argument(s): ${c.join(", ")}`,!0);i=oV(n)}else return pp(`Unknown tool: ${String(t)}`,!0);let s=await this.deps.runCli(i);if(s.exitCode!==0){let c=s.stderr.trim()||s.stdout.trim()||"(no diagnostic output)";return pp(`exocortex-cli exited ${s.exitCode}
|
|
686
686
|
${c}`,!0)}let o=U_e(s.stdout);return pp(o===void 0?s.stdout.trim():JSON.stringify(o))}};var dV=require("child_process");var B_e=32*1024*1024;function pV(r){return e=>new Promise(t=>{(0,dV.execFile)(process.execPath,[r,...e],{maxBuffer:B_e},(n,i,s)=>{let o=0;if(n){let c=n.code;o=typeof c=="number"?c:1}t({stdout:i,stderr:s,exitCode:o})})})}a(pV,"createSelfCliRunner");async function V_e(r,e,t){let n=(0,hV.createInterface)({input:e,crlfDelay:1/0});for await(let i of n){let s=i.trim();if(s.length===0)continue;let o;try{o=JSON.parse(s)}catch{t(JSON.stringify({jsonrpc:"2.0",id:null,error:{code:uV,message:"Parse error: invalid JSON"}})+`
|
|
687
687
|
`);continue}let c;try{c=await r.handle(o)}catch(l){c={jsonrpc:"2.0",id:typeof o?.id=="string"||typeof o?.id=="number"?o.id:null,error:{code:fV,message:`Internal error: ${l instanceof Error?l.message:String(l)}`}}}c!==null&&t(JSON.stringify(c)+`
|
|
688
|
-
`)}}a(V_e,"runStdioServer");function mV(r){return new pe("mcp").description("Run an MCP (Model Context Protocol) stdio server exposing create_asset / create_effort tools backed by this CLI").option("--entry <path>","Path to the CLI entry script the tools invoke (defaults to this process's script)").action(async e=>{let t=e.entry??process.argv[1],n=new _E({runCli:pV(t),version:r??"unknown"});await V_e(n,process.stdin,i=>process.stdout.write(i))})}a(mV,"mcpCommand");function SE(r){let e=new pe;return e.name("exocortex").description("CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more").version(r??"16.242.
|
|
688
|
+
`)}}a(V_e,"runStdioServer");function mV(r){return new pe("mcp").description("Run an MCP (Model Context Protocol) stdio server exposing create_asset / create_effort tools backed by this CLI").option("--entry <path>","Path to the CLI entry script the tools invoke (defaults to this process's script)").action(async e=>{let t=e.entry??process.argv[1],n=new _E({runCli:pV(t),version:r??"unknown"});await V_e(n,process.stdin,i=>process.stdout.write(i))})}a(mV,"mcpCommand");function SE(r){let e=new pe;return e.name("exocortex").description("CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more").version(r??"16.242.3"),e.addCommand(K7()),e.addCommand(n8()),e.addCommand(U6()),e.addCommand(q6()),e.addCommand(d7()),e.addCommand(W6()),e.addCommand(Q6()),e.addCommand(J6()),e.addCommand(S7()),e.addCommand(A7()),e.addCommand(j7()),e.addCommand(B7()),e.addCommand(V7()),e.addCommand(q7()),e.addCommand(W7()),e.addCommand(C8()),e.addCommand(P8()),e.addCommand(z8()),e.addCommand(K8()),e.addCommand(Q8()),e.addCommand(J8()),e.addCommand(tV()),e.addCommand(M8()),e.addCommand(G8()),e.addCommand(rV()),e.addCommand(mV(r??"16.242.3")),e}a(SE,"createProgram");SE().parse();0&&(module.exports={createProgram});
|
|
689
689
|
/*! Bundled license information:
|
|
690
690
|
|
|
691
691
|
reflect-metadata/Reflect.js:
|
package/package.json
CHANGED