@invariant.guru/cli 0.3.7 → 0.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/main.js +1 -1
  2. package/package.json +1 -1
package/dist/main.js CHANGED
@@ -916,7 +916,7 @@ Follow Clean Architecture principles:
916
916
  `}]}),_}async fetchPackage(_){const m=this.packages.get(_);if(!m)throw new Error(`Package "${_}" not found`);return u.Package.create({manifest:{name:m.name,version:m.version,description:m.description,author:m.author},items:m.items,source:{type:"registry"}})}async fetchFromGitHub(_,m,v){return u.Package.create({manifest:{name:m,version:v||"main",description:`Package from github:${_}/${m}`,author:_,repository:`https://github.com/${_}/${m}`},items:[{type:"instructions",path:"instructions/readme.md",content:`# ${m}
917
917
 
918
918
  This is a stub package from GitHub: ${_}/${m}
919
- `}],source:{type:"github",owner:_,repo:m,ref:v}})}async getVersions(_){const m=this.packages.get(_);return m?[m.version]:[]}async search(_){const m=[],v=_.toLowerCase();for(const y of this.packages.values())(y.name.toLowerCase().includes(v)||y.description.toLowerCase().includes(v))&&m.push({name:y.name,version:y.version,description:y.description,author:y.author,source:"registry"});return m}async getLatestVersion(_){const m=this.packages.get(_);if(!m)throw new Error(`Package "${_}" not found`);return m.version}async exists(_){return this.packages.has(_)}async listAll(){const _=[];for(const m of this.packages.values())_.push({name:m.name,version:m.version,description:m.description,author:m.author,source:"registry"});return _}async publishPackage(_,m,v){return this.packages.set(_.name,{name:_.name,version:_.version,description:_.description,author:_.author,items:[]}),{name:_.name,version:_.version,url:`inmemory://${_.name}`}}};return eH.InMemoryRegistryQueryBuilder=c,eH.InMemoryRegistryQueryBuilder=c=e([(0,i.Injectable)(),r("design:paramtypes",[])],c),eH}var Aie={},xfr;function vKr(){if(xfr)return Aie;xfr=1;var e=Aie&&Aie.__decorate||function(p,_,m,v){var y=arguments.length,D=y<3?_:v===null?v=Object.getOwnPropertyDescriptor(_,m):v,C;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")D=Reflect.decorate(p,_,m,v);else for(var A=p.length-1;A>=0;A--)(C=p[A])&&(D=(y<3?C(D):y>3?C(_,m,D):C(_,m))||D);return y>3&&D&&Object.defineProperty(_,m,D),D};Object.defineProperty(Aie,"__esModule",{value:!0}),Aie.HttpRegistryQueryBuilder=void 0;const r=xf(),i=s$t,a=CT(),u=NQ();let c=class extends a.RegistryQueryBuilder{async fetchFromGitHub(_,m,v){const y=v||"main",D=`https://codeload.github.com/${_}/${m}/tar.gz/${y}`,C=await this.downloadAndExtractTarball(D),A=`${m}-${y}/`;let w;const P=C.find(R=>R.path===`${A}invariant.json`);P?w=JSON.parse(P.content):w={name:m,version:y,description:`Package from github:${_}/${m}`,author:_};const U=["agents","skills","commands","rules","contexts","instructions"],L=[];for(const R of U){const B=`${A}${R}/`,$=C.filter(q=>q.path.startsWith(B)&&q.path.endsWith(".md"));for(const q of $){const X=q.path.slice(A.length);L.push({type:R,path:X,content:q.content})}}return u.Package.create({manifest:{name:w.name,version:w.version,description:w.description,author:w.author,repository:`https://github.com/${_}/${m}`},items:L,source:{type:"github",owner:_,repo:m,ref:y}})}async downloadAndExtractTarball(_){const m=await fetch(_,{headers:{"User-Agent":"invariant-cli"}});if(!m.ok)throw m.status===404?new Error(`Repository or branch not found: ${_}`):new Error(`Failed to download: ${m.status} ${m.statusText}`);const v=Buffer.from(await m.arrayBuffer()),y=i.gunzipSync(v);return this.parseTar(y)}parseTar(_){const m=[];let v=0;for(;v<_.length;){const y=_.slice(v,v+512);if(y.every(U=>U===0))break;const D=y.indexOf(0),C=y.slice(0,Math.min(D,100)).toString("utf-8"),A=y.slice(124,136).toString("utf-8").trim(),w=parseInt(A,8)||0,P=y[156];if(v+=512,(P===48||P===0)&&w>0){const U=_.slice(v,v+w).toString("utf-8");m.push({path:C,content:U})}v+=Math.ceil(w/512)*512}return m}async fetchPackage(_){throw new Error(`Registry API not yet available. Package "${_}" cannot be fetched. Use github:owner/repo format instead.`)}async getVersions(_){return console.warn(`Registry API not yet available. Cannot get versions for "${_}".`),[]}async search(_){return console.warn(`Registry API not yet available. Cannot search for "${_}".`),[]}async getLatestVersion(_){throw new Error(`Registry API not yet available. Cannot get latest version for "${_}".`)}async exists(_){return console.warn(`Registry API not yet available. Cannot check if "${_}" exists.`),!1}async listAll(){return console.warn("Registry API not yet available. Cannot list packages."),[]}async publishPackage(_,m,v){return console.warn("Registry API not yet available. Publish is stubbed."),{name:_.name,version:_.version,url:`https://invariant.dev/packages/${_.name}`}}};return Aie.HttpRegistryQueryBuilder=c,Aie.HttpRegistryQueryBuilder=c=e([(0,r.Injectable)()],c),Aie}var Dfr;function bKr(){return Dfr||(Dfr=1,(function(e){var r=s0e&&s0e.__createBinding||(Object.create?(function(a,u,c,p){p===void 0&&(p=c);var _=Object.getOwnPropertyDescriptor(u,c);(!_||("get"in _?!u.__esModule:_.writable||_.configurable))&&(_={enumerable:!0,get:function(){return u[c]}}),Object.defineProperty(a,p,_)}):(function(a,u,c,p){p===void 0&&(p=c),a[p]=u[c]})),i=s0e&&s0e.__exportStar||function(a,u){for(var c in a)c!=="default"&&!Object.prototype.hasOwnProperty.call(u,c)&&r(u,a,c)};Object.defineProperty(e,"__esModule",{value:!0}),i(gKr(),e),i(yKr(),e),i(vKr(),e)})(s0e)),s0e}var o0e={},kie={},Efr;function Cfr(){if(Efr)return kie;Efr=1;var e=kie&&kie.__decorate||function(m,v,y,D){var C=arguments.length,A=C<3?v:D===null?D=Object.getOwnPropertyDescriptor(v,y):D,w;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")A=Reflect.decorate(m,v,y,D);else for(var P=m.length-1;P>=0;P--)(w=m[P])&&(A=(C<3?w(A):C>3?w(v,y,A):w(v,y))||A);return C>3&&A&&Object.defineProperty(v,y,A),A};Object.defineProperty(kie,"__esModule",{value:!0}),kie.ClaudeCodeAdapter=void 0;const r=xf(),i=AU,a=fm,u=KR(),c=".claude",p="CLAUDE.md";let _=class extends u.CliTargetAdapter{constructor(){super(...arguments),this.config={name:"claude",displayName:"Claude Code",supportsItemTypes:!0}}async copyItem(v,y,D,C){const A=a.join(v,c,y);await i.mkdir(A,{recursive:!0});const w=[];if(C.length===1&&!C[0].relativePath.includes("/")){const P=a.join(A,D+".md");await i.writeFile(P,C[0].content,"utf-8"),w.push(P)}else{const P=a.join(A,D);for(const U of C){const L=a.join(P,U.relativePath);await i.mkdir(a.dirname(L),{recursive:!0}),await i.writeFile(L,U.content,"utf-8"),w.push(L)}}return{files:w,itemNames:[D]}}async removeItem(v,y,D){const C=a.join(v,c,y),A=a.join(C,D);try{if((await i.stat(A)).isDirectory()){await i.rm(A,{recursive:!0});return}}catch{}try{await i.unlink(A+".md")}catch{}}async generateContextFile(v,y){const D=a.join(v,p);return await i.writeFile(D,y,"utf-8"),D}async contextFileExists(v){try{return await i.access(a.join(v,p)),!0}catch{return!1}}async resolveItemPath(v,y,D){const C=a.join(v,c,y),A=a.join(C,D);try{if((await i.stat(A)).isDirectory())return a.join(c,y,D)}catch{}const w=A+".md";try{return await i.access(w),a.join(c,y,D+".md")}catch{}return null}};return kie.ClaudeCodeAdapter=_,kie.ClaudeCodeAdapter=_=e([(0,r.Injectable)()],_),kie}var wie={},Sfr;function Tfr(){if(Sfr)return wie;Sfr=1;var e=wie&&wie.__decorate||function(_,m,v,y){var D=arguments.length,C=D<3?m:y===null?y=Object.getOwnPropertyDescriptor(m,v):y,A;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")C=Reflect.decorate(_,m,v,y);else for(var w=_.length-1;w>=0;w--)(A=_[w])&&(C=(D<3?A(C):D>3?A(m,v,C):A(m,v))||C);return D>3&&C&&Object.defineProperty(m,v,C),C};Object.defineProperty(wie,"__esModule",{value:!0}),wie.CodexAdapter=void 0;const r=xf(),i=AU,a=fm,u=KR(),c="AGENTS.md";let p=class extends u.CliTargetAdapter{constructor(){super(...arguments),this.config={name:"codex",displayName:"OpenAI Codex",supportsItemTypes:!1}}async copyItem(m,v,y,D){return{files:[],itemNames:[]}}async removeItem(m,v,y){}async generateContextFile(m,v){const y=a.join(m,c);return await i.writeFile(y,v,"utf-8"),y}async contextFileExists(m){try{return await i.access(a.join(m,c)),!0}catch{return!1}}async resolveItemPath(m,v,y){return null}};return wie.CodexAdapter=p,wie.CodexAdapter=p=e([(0,r.Injectable)()],p),wie}var Fie={},Afr;function kfr(){if(Afr)return Fie;Afr=1;var e=Fie&&Fie.__decorate||function(_,m,v,y){var D=arguments.length,C=D<3?m:y===null?y=Object.getOwnPropertyDescriptor(m,v):y,A;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")C=Reflect.decorate(_,m,v,y);else for(var w=_.length-1;w>=0;w--)(A=_[w])&&(C=(D<3?A(C):D>3?A(m,v,C):A(m,v))||C);return D>3&&C&&Object.defineProperty(m,v,C),C};Object.defineProperty(Fie,"__esModule",{value:!0}),Fie.CursorAdapter=void 0;const r=xf(),i=AU,a=fm,u=KR(),c=".cursor/rules";let p=class extends u.CliTargetAdapter{constructor(){super(...arguments),this.config={name:"cursor",displayName:"Cursor",supportsItemTypes:!1}}async copyItem(m,v,y,D){const C=a.join(m,c);await i.mkdir(C,{recursive:!0});const A=y+".mdc",w=a.join(C,A),P=this.concatenateFiles(D),U=this.wrapWithFrontmatter(P,v,y);return await i.writeFile(w,U,"utf-8"),{files:[w],itemNames:[y]}}async removeItem(m,v,y){const D=y+".mdc";try{await i.unlink(a.join(m,c,D))}catch{}}async generateContextFile(m,v){const y=a.join(m,c);await i.mkdir(y,{recursive:!0});const D=a.join(y,"invariant-context.mdc"),C=this.wrapWithFrontmatter(v,"context","Invariant project context");return await i.writeFile(D,C,"utf-8"),D}async contextFileExists(m){try{return await i.access(a.join(m,c,"invariant-context.mdc")),!0}catch{return!1}}concatenateFiles(m){return m.length===1?m[0].content:m.map(v=>v.content).join(`
919
+ `}],source:{type:"github",owner:_,repo:m,ref:v}})}async getVersions(_){const m=this.packages.get(_);return m?[m.version]:[]}async search(_){const m=[],v=_.toLowerCase();for(const y of this.packages.values())(y.name.toLowerCase().includes(v)||y.description.toLowerCase().includes(v))&&m.push({name:y.name,version:y.version,description:y.description,author:y.author,source:"registry"});return m}async getLatestVersion(_){const m=this.packages.get(_);if(!m)throw new Error(`Package "${_}" not found`);return m.version}async exists(_){return this.packages.has(_)}async listAll(){const _=[];for(const m of this.packages.values())_.push({name:m.name,version:m.version,description:m.description,author:m.author,source:"registry"});return _}async publishPackage(_,m,v){return this.packages.set(_.name,{name:_.name,version:_.version,description:_.description,author:_.author,items:[]}),{name:_.name,version:_.version,url:`inmemory://${_.name}`}}};return eH.InMemoryRegistryQueryBuilder=c,eH.InMemoryRegistryQueryBuilder=c=e([(0,i.Injectable)(),r("design:paramtypes",[])],c),eH}var Aie={},xfr;function vKr(){if(xfr)return Aie;xfr=1;var e=Aie&&Aie.__decorate||function(p,_,m,v){var y=arguments.length,D=y<3?_:v===null?v=Object.getOwnPropertyDescriptor(_,m):v,C;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")D=Reflect.decorate(p,_,m,v);else for(var A=p.length-1;A>=0;A--)(C=p[A])&&(D=(y<3?C(D):y>3?C(_,m,D):C(_,m))||D);return y>3&&D&&Object.defineProperty(_,m,D),D};Object.defineProperty(Aie,"__esModule",{value:!0}),Aie.HttpRegistryQueryBuilder=void 0;const r=xf(),i=s$t,a=CT(),u=NQ();let c=class extends a.RegistryQueryBuilder{async fetchFromGitHub(_,m,v){const y=v||"main",D=`https://codeload.github.com/${_}/${m}/tar.gz/${y}`,C=await this.downloadAndExtractTarball(D),A=`${m}-${y}/`;let w;const P=C.find(R=>R.path===`${A}invariant-package.json`);P?w=JSON.parse(P.content):w={name:m,version:y,description:`Package from github:${_}/${m}`,author:_};const U=["agents","skills","commands","rules","contexts","instructions"],L=[];for(const R of U){const B=`${A}${R}/`,$=C.filter(q=>q.path.startsWith(B)&&q.path.endsWith(".md"));for(const q of $){const X=q.path.slice(A.length);L.push({type:R,path:X,content:q.content})}}return u.Package.create({manifest:{name:w.name,version:w.version,description:w.description,author:w.author,repository:`https://github.com/${_}/${m}`},items:L,source:{type:"github",owner:_,repo:m,ref:y}})}async downloadAndExtractTarball(_){const m=await fetch(_,{headers:{"User-Agent":"invariant-cli"}});if(!m.ok)throw m.status===404?new Error(`Repository or branch not found: ${_}`):new Error(`Failed to download: ${m.status} ${m.statusText}`);const v=Buffer.from(await m.arrayBuffer()),y=i.gunzipSync(v);return this.parseTar(y)}parseTar(_){const m=[];let v=0;for(;v<_.length;){const y=_.slice(v,v+512);if(y.every(U=>U===0))break;const D=y.indexOf(0),C=y.slice(0,Math.min(D,100)).toString("utf-8"),A=y.slice(124,136).toString("utf-8").trim(),w=parseInt(A,8)||0,P=y[156];if(v+=512,(P===48||P===0)&&w>0){const U=_.slice(v,v+w).toString("utf-8");m.push({path:C,content:U})}v+=Math.ceil(w/512)*512}return m}async fetchPackage(_){throw new Error(`Registry API not yet available. Package "${_}" cannot be fetched. Use github:owner/repo format instead.`)}async getVersions(_){return console.warn(`Registry API not yet available. Cannot get versions for "${_}".`),[]}async search(_){return console.warn(`Registry API not yet available. Cannot search for "${_}".`),[]}async getLatestVersion(_){throw new Error(`Registry API not yet available. Cannot get latest version for "${_}".`)}async exists(_){return console.warn(`Registry API not yet available. Cannot check if "${_}" exists.`),!1}async listAll(){return console.warn("Registry API not yet available. Cannot list packages."),[]}async publishPackage(_,m,v){return console.warn("Registry API not yet available. Publish is stubbed."),{name:_.name,version:_.version,url:`https://invariant.dev/packages/${_.name}`}}};return Aie.HttpRegistryQueryBuilder=c,Aie.HttpRegistryQueryBuilder=c=e([(0,r.Injectable)()],c),Aie}var Dfr;function bKr(){return Dfr||(Dfr=1,(function(e){var r=s0e&&s0e.__createBinding||(Object.create?(function(a,u,c,p){p===void 0&&(p=c);var _=Object.getOwnPropertyDescriptor(u,c);(!_||("get"in _?!u.__esModule:_.writable||_.configurable))&&(_={enumerable:!0,get:function(){return u[c]}}),Object.defineProperty(a,p,_)}):(function(a,u,c,p){p===void 0&&(p=c),a[p]=u[c]})),i=s0e&&s0e.__exportStar||function(a,u){for(var c in a)c!=="default"&&!Object.prototype.hasOwnProperty.call(u,c)&&r(u,a,c)};Object.defineProperty(e,"__esModule",{value:!0}),i(gKr(),e),i(yKr(),e),i(vKr(),e)})(s0e)),s0e}var o0e={},kie={},Efr;function Cfr(){if(Efr)return kie;Efr=1;var e=kie&&kie.__decorate||function(m,v,y,D){var C=arguments.length,A=C<3?v:D===null?D=Object.getOwnPropertyDescriptor(v,y):D,w;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")A=Reflect.decorate(m,v,y,D);else for(var P=m.length-1;P>=0;P--)(w=m[P])&&(A=(C<3?w(A):C>3?w(v,y,A):w(v,y))||A);return C>3&&A&&Object.defineProperty(v,y,A),A};Object.defineProperty(kie,"__esModule",{value:!0}),kie.ClaudeCodeAdapter=void 0;const r=xf(),i=AU,a=fm,u=KR(),c=".claude",p="CLAUDE.md";let _=class extends u.CliTargetAdapter{constructor(){super(...arguments),this.config={name:"claude",displayName:"Claude Code",supportsItemTypes:!0}}async copyItem(v,y,D,C){const A=a.join(v,c,y);await i.mkdir(A,{recursive:!0});const w=[];if(C.length===1&&!C[0].relativePath.includes("/")){const P=a.join(A,D+".md");await i.writeFile(P,C[0].content,"utf-8"),w.push(P)}else{const P=a.join(A,D);for(const U of C){const L=a.join(P,U.relativePath);await i.mkdir(a.dirname(L),{recursive:!0}),await i.writeFile(L,U.content,"utf-8"),w.push(L)}}return{files:w,itemNames:[D]}}async removeItem(v,y,D){const C=a.join(v,c,y),A=a.join(C,D);try{if((await i.stat(A)).isDirectory()){await i.rm(A,{recursive:!0});return}}catch{}try{await i.unlink(A+".md")}catch{}}async generateContextFile(v,y){const D=a.join(v,p);return await i.writeFile(D,y,"utf-8"),D}async contextFileExists(v){try{return await i.access(a.join(v,p)),!0}catch{return!1}}async resolveItemPath(v,y,D){const C=a.join(v,c,y),A=a.join(C,D);try{if((await i.stat(A)).isDirectory())return a.join(c,y,D)}catch{}const w=A+".md";try{return await i.access(w),a.join(c,y,D+".md")}catch{}return null}};return kie.ClaudeCodeAdapter=_,kie.ClaudeCodeAdapter=_=e([(0,r.Injectable)()],_),kie}var wie={},Sfr;function Tfr(){if(Sfr)return wie;Sfr=1;var e=wie&&wie.__decorate||function(_,m,v,y){var D=arguments.length,C=D<3?m:y===null?y=Object.getOwnPropertyDescriptor(m,v):y,A;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")C=Reflect.decorate(_,m,v,y);else for(var w=_.length-1;w>=0;w--)(A=_[w])&&(C=(D<3?A(C):D>3?A(m,v,C):A(m,v))||C);return D>3&&C&&Object.defineProperty(m,v,C),C};Object.defineProperty(wie,"__esModule",{value:!0}),wie.CodexAdapter=void 0;const r=xf(),i=AU,a=fm,u=KR(),c="AGENTS.md";let p=class extends u.CliTargetAdapter{constructor(){super(...arguments),this.config={name:"codex",displayName:"OpenAI Codex",supportsItemTypes:!1}}async copyItem(m,v,y,D){return{files:[],itemNames:[]}}async removeItem(m,v,y){}async generateContextFile(m,v){const y=a.join(m,c);return await i.writeFile(y,v,"utf-8"),y}async contextFileExists(m){try{return await i.access(a.join(m,c)),!0}catch{return!1}}async resolveItemPath(m,v,y){return null}};return wie.CodexAdapter=p,wie.CodexAdapter=p=e([(0,r.Injectable)()],p),wie}var Fie={},Afr;function kfr(){if(Afr)return Fie;Afr=1;var e=Fie&&Fie.__decorate||function(_,m,v,y){var D=arguments.length,C=D<3?m:y===null?y=Object.getOwnPropertyDescriptor(m,v):y,A;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")C=Reflect.decorate(_,m,v,y);else for(var w=_.length-1;w>=0;w--)(A=_[w])&&(C=(D<3?A(C):D>3?A(m,v,C):A(m,v))||C);return D>3&&C&&Object.defineProperty(m,v,C),C};Object.defineProperty(Fie,"__esModule",{value:!0}),Fie.CursorAdapter=void 0;const r=xf(),i=AU,a=fm,u=KR(),c=".cursor/rules";let p=class extends u.CliTargetAdapter{constructor(){super(...arguments),this.config={name:"cursor",displayName:"Cursor",supportsItemTypes:!1}}async copyItem(m,v,y,D){const C=a.join(m,c);await i.mkdir(C,{recursive:!0});const A=y+".mdc",w=a.join(C,A),P=this.concatenateFiles(D),U=this.wrapWithFrontmatter(P,v,y);return await i.writeFile(w,U,"utf-8"),{files:[w],itemNames:[y]}}async removeItem(m,v,y){const D=y+".mdc";try{await i.unlink(a.join(m,c,D))}catch{}}async generateContextFile(m,v){const y=a.join(m,c);await i.mkdir(y,{recursive:!0});const D=a.join(y,"invariant-context.mdc"),C=this.wrapWithFrontmatter(v,"context","Invariant project context");return await i.writeFile(D,C,"utf-8"),D}async contextFileExists(m){try{return await i.access(a.join(m,c,"invariant-context.mdc")),!0}catch{return!1}}concatenateFiles(m){return m.length===1?m[0].content:m.map(v=>v.content).join(`
920
920
 
921
921
  `)}async resolveItemPath(m,v,y){const D=a.join(m,c,y+".mdc");try{return await i.access(D),a.join(c,y+".mdc")}catch{return null}}wrapWithFrontmatter(m,v,y){return`---
922
922
  description: "${v}: ${y}"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@invariant.guru/cli",
3
- "version": "0.3.7",
3
+ "version": "0.3.8",
4
4
  "description": "CLI tool for managing Claude AI specification invariants",
5
5
  "bin": {
6
6
  "invariant": "./dist/main.js"