@invariant.guru/cli 0.3.7 → 0.3.9

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 +8 -9
  2. package/package.json +1 -1
package/dist/main.js CHANGED
@@ -812,16 +812,15 @@ ${C}
812
812
  `,L}};return AI.PlanComposeCommandHandler=v,AI.PlanComposeCommandHandler=v=e([(0,a.CommandHandler)(m),i(0,(0,u.Inject)(c.StorageRepository)),i(1,(0,u.Inject)(p.CliTargetAdapterFactory)),r("design:paramtypes",[c.StorageRepository,p.CliTargetAdapterFactory])],v),AI}var afr;function sKr(){return afr||(afr=1,(function(e){var r=Zde&&Zde.__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=Zde&&Zde.__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(aKr(),e)})(Zde)),Zde}var e0e={},kI={},sfr;function oKr(){if(sfr)return kI;sfr=1;var e=kI&&kI.__decorate||function(y,D,C,A){var w=arguments.length,P=w<3?D:A===null?A=Object.getOwnPropertyDescriptor(D,C):A,U;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")P=Reflect.decorate(y,D,C,A);else for(var L=y.length-1;L>=0;L--)(U=y[L])&&(P=(w<3?U(P):w>3?U(D,C,P):U(D,C))||P);return w>3&&P&&Object.defineProperty(D,C,P),P},r=kI&&kI.__metadata||function(y,D){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(y,D)},i=kI&&kI.__param||function(y,D){return function(C,A){D(C,A,y)}};Object.defineProperty(kI,"__esModule",{value:!0}),kI.SyncCommandHandler=kI.SyncCommand=void 0;const a=Lx(),u=xf(),c=CT(),p=KR();class _{constructor(D,C={}){this.directory=D,this.options=C}}kI.SyncCommand=_;const m=["agents","skills","commands","rules"];let v=class{constructor(D,C){this.storageRepository=D,this.adapterFactory=C}async execute(D){const{directory:C,options:A}=D;if(!await this.storageRepository.configExists(C))throw new Error(`Project not initialized in ${C}. Run 'invariant init' first.`);const P=await this.storageRepository.readConfig(C),U=P.targets.length>0?P.targets:["claude"],L=A.target?[A.target]:U,R=this.adapterFactory.getAdapters(L),B=await this.storageRepository.listInstructions(C),$=await this.storageRepository.listContexts(C),q=[],X=[],ee=[],se=[];if(se.push(`# Project Instructions
813
813
  `),se.push(`<!-- Generated by invariant CLI -->
814
814
  `),B.length>0){se.push(`## Instructions
815
- `);for(const we of B){const rt=await this.storageRepository.readInstruction(C,we.package,we.name);q.push(`${we.package}/${we.name}`),se.push(`### ${we.package}/${we.name}
815
+ `);for(const we of B){const rt=await this.storageRepository.readInstruction(C,we.package,we.name);q.push(`${we.package}/${we.name}`),se.push(this.wrapSection("instruction",`${we.package}/${we.name}`,rt))}}if($.length>0){se.push(`## Contexts
816
+ `);for(const we of $){const rt=await this.storageRepository.readContext(C,we.package,we.name);X.push(`${we.package}/${we.name}`),se.push(this.wrapSection("context",`${we.package}/${we.name}`,rt))}}const de=se.join(`
817
+ `),Re=P.active.filter(we=>m.includes(we.type)),Oe=[];for(const we of R){const rt=await this.buildItemSections(C,we,Re,ee),wt=rt?de+`
818
+ `+rt:de,Ve=await we.generateContextFile(C,wt);Oe.push({targetName:we.config.name,displayName:we.config.displayName,outputPath:Ve})}return{targets:Oe,includedInstructions:q,includedContexts:X,includedItems:ee}}wrapSection(D,C,A){return`<${D} source="${C}">
816
819
 
817
- ${rt}
818
- `)}}if($.length>0){se.push(`## Contexts
819
- `);for(const we of $){const rt=await this.storageRepository.readContext(C,we.package,we.name);X.push(`${we.package}/${we.name}`),se.push(`### ${we.package}/${we.name}
820
+ ${A}
820
821
 
821
- ${rt}
822
- `)}}const de=se.join(`
823
- `),Re=P.active.filter(we=>m.includes(we.type)),Oe=[];for(const we of R){const rt=await this.buildItemSections(C,we,Re,ee),wt=rt?de+`
824
- `+rt:de,Ve=await we.generateContextFile(C,wt);Oe.push({targetName:we.config.name,displayName:we.config.displayName,outputPath:Ve})}return{targets:Oe,includedInstructions:q,includedContexts:X,includedItems:ee}}async buildItemSections(D,C,A,w){const P=new Map;for(const L of A){const R=await C.resolveItemPath(D,L.type,L.item||""),B=L.type;P.has(B)||P.set(B,[]),P.get(B).push({item:L,path:R}),w.push(`${L.package}/${L.type}/${L.item}`)}if(P.size===0)return null;const U=[];for(const[L,R]of P){const B=L.charAt(0).toUpperCase()+L.slice(1);U.push(`## Available ${B}
822
+ </${D}>
823
+ `}async buildItemSections(D,C,A,w){const P=new Map;for(const L of A){const R=await C.resolveItemPath(D,L.type,L.item||""),B=L.type;P.has(B)||P.set(B,[]),P.get(B).push({item:L,path:R}),w.push(`${L.package}/${L.type}/${L.item}`)}if(P.size===0)return null;const U=[];for(const[L,R]of P){const B=L.charAt(0).toUpperCase()+L.slice(1);U.push(`## Available ${B}
825
824
  `);for(const{item:$,path:q}of R){const X=$.item||L;q?U.push(`- [${X}](${q}) - from ${$.package}`):U.push(`- ${X} - from ${$.package}`)}U.push("")}return U.join(`
826
825
  `)}};return kI.SyncCommandHandler=v,kI.SyncCommandHandler=v=e([(0,a.CommandHandler)(_),i(0,(0,u.Inject)(c.StorageRepository)),i(1,(0,u.Inject)(p.CliTargetAdapterFactory)),r("design:paramtypes",[c.StorageRepository,p.CliTargetAdapterFactory])],v),kI}var ofr;function uKr(){return ofr||(ofr=1,(function(e){var r=e0e&&e0e.__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=e0e&&e0e.__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(oKr(),e)})(e0e)),e0e}var t0e={},wI={},ufr;function cKr(){if(ufr)return wI;ufr=1;var e=wI&&wI.__decorate||function(v,y,D,C){var A=arguments.length,w=A<3?y:C===null?C=Object.getOwnPropertyDescriptor(y,D):C,P;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")w=Reflect.decorate(v,y,D,C);else for(var U=v.length-1;U>=0;U--)(P=v[U])&&(w=(A<3?P(w):A>3?P(y,D,w):P(y,D))||w);return A>3&&w&&Object.defineProperty(y,D,w),w},r=wI&&wI.__metadata||function(v,y){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(v,y)},i=wI&&wI.__param||function(v,y){return function(D,C){y(D,C,v)}};Object.defineProperty(wI,"__esModule",{value:!0}),wI.CreatePackageManifestCommandHandler=wI.CreatePackageManifestCommand=void 0;const a=Lx(),u=xf(),c=CT(),p=NQ();class _{constructor(y,D){this.directory=y,this.options=D}}wI.CreatePackageManifestCommand=_;let m=class{constructor(y){this.storageRepository=y}async execute(y){const{directory:D,options:C}=y,A=await this.storageRepository.scanDirectoryForItems(D),w=this.buildItemEntries(A),P=this.countItems(w),U=p.PackageManifestFile.create({name:C.name||this.extractDirName(D),version:C.version||"1.0.0",description:C.description||"",author:C.author||"",license:C.license||"MIT",repository:C.repository||"",items:w});return await this.storageRepository.writePackageManifestFile(D,U),{manifestPath:`${D}/invariant-package.json`,itemCount:P,manifest:U}}buildItemEntries(y){const D=p.Package.create({manifest:{name:"temp",version:"0.0.0"},items:y,source:{type:"registry"}}),C={},A=["agents","skills","commands","rules","contexts","instructions"];for(const w of A){const P=D.resolveItems(w);P.length!==0&&(C[w]=P.map(U=>({name:U.name,description:this.extractDescription(U.files)})))}return C}extractDescription(y){const D=y[0];if(!D)return"";const C=D.content.split(`
827
826
  `);for(const A of C){const w=A.trim();if(w!=="")return w.replace(/^#+\s*/,"")}return""}extractDirName(y){const D=y.split("/");return D[D.length-1]||"unnamed"}countItems(y){return Object.values(y).reduce((D,C)=>D+(C?.length||0),0)}};return wI.CreatePackageManifestCommandHandler=m,wI.CreatePackageManifestCommandHandler=m=e([(0,a.CommandHandler)(_),i(0,(0,u.Inject)(c.StorageRepository)),r("design:paramtypes",[c.StorageRepository])],m),wI}var cfr;function lKr(){return cfr||(cfr=1,(function(e){var r=t0e&&t0e.__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=t0e&&t0e.__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(cKr(),e)})(t0e)),t0e}var r0e={},FI={},lfr;function fKr(){if(lfr)return FI;lfr=1;var e=FI&&FI.__decorate||function(v,y,D,C){var A=arguments.length,w=A<3?y:C===null?C=Object.getOwnPropertyDescriptor(y,D):C,P;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")w=Reflect.decorate(v,y,D,C);else for(var U=v.length-1;U>=0;U--)(P=v[U])&&(w=(A<3?P(w):A>3?P(y,D,w):P(y,D))||w);return A>3&&w&&Object.defineProperty(y,D,w),w},r=FI&&FI.__metadata||function(v,y){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(v,y)},i=FI&&FI.__param||function(v,y){return function(D,C){y(D,C,v)}};Object.defineProperty(FI,"__esModule",{value:!0}),FI.ValidatePackageManifestCommandHandler=FI.ValidatePackageManifestCommand=void 0;const a=Lx(),u=xf(),c=CT(),p=NQ();class _{constructor(y){this.directory=y}}FI.ValidatePackageManifestCommand=_;let m=class{constructor(y){this.storageRepository=y}async execute(y){const{directory:D}=y,C=await this.storageRepository.readPackageManifestFile(D);if(!C)throw new p.PackageManifestNotFoundError(D);const A=await this.storageRepository.scanDirectoryForItems(D),w=this.resolveDiskItems(A),P=this.compareManifestWithDisk(C,w);return{valid:P.length===0,issues:P,manifestName:C.name,manifestVersion:C.version}}resolveDiskItems(y){const D=p.Package.create({manifest:{name:"temp",version:"0.0.0"},items:y,source:{type:"registry"}}),C=new Map,A=["agents","skills","commands","rules","contexts","instructions"];for(const w of A){const P=D.resolveItems(w);P.length>0&&C.set(w,new Set(P.map(U=>U.name)))}return C}compareManifestWithDisk(y,D){const C=[];for(const[A,w]of Object.entries(y.items)){if(!w)continue;const P=D.get(A)||new Set;for(const U of w)P.has(U.name)||C.push({type:"missing_on_disk",itemType:A,itemName:U.name})}for(const[A,w]of D){const P=y.items[A]||[],U=new Set(P.map(L=>L.name));for(const L of w)U.has(L)||C.push({type:"undeclared_on_disk",itemType:A,itemName:L})}return C}};return FI.ValidatePackageManifestCommandHandler=m,FI.ValidatePackageManifestCommandHandler=m=e([(0,a.CommandHandler)(_),i(0,(0,u.Inject)(c.StorageRepository)),r("design:paramtypes",[c.StorageRepository])],m),FI}var ffr;function pKr(){return ffr||(ffr=1,(function(e){var r=r0e&&r0e.__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=r0e&&r0e.__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(fKr(),e)})(r0e)),r0e}var n0e={},PI={},pfr;function dKr(){if(pfr)return PI;pfr=1;var e=PI&&PI.__decorate||function(y,D,C,A){var w=arguments.length,P=w<3?D:A===null?A=Object.getOwnPropertyDescriptor(D,C):A,U;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")P=Reflect.decorate(y,D,C,A);else for(var L=y.length-1;L>=0;L--)(U=y[L])&&(P=(w<3?U(P):w>3?U(D,C,P):U(D,C))||P);return w>3&&P&&Object.defineProperty(D,C,P),P},r=PI&&PI.__metadata||function(y,D){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(y,D)},i=PI&&PI.__param||function(y,D){return function(C,A){D(C,A,y)}};Object.defineProperty(PI,"__esModule",{value:!0}),PI.PublishPackageCommandHandler=PI.PublishPackageCommand=void 0;const a=Lx(),u=xf(),c=CT(),p=CT(),_=NQ();class m{constructor(D){this.directory=D}}PI.PublishPackageCommand=m;let v=class{constructor(D,C){this.storageRepository=D,this.registryQueryBuilder=C}async execute(D){const{directory:C}=D,A=await this.storageRepository.readPackageManifestFile(C);if(!A)throw new _.PackageManifestNotFoundError(C);const w=await this.validatePackage(C);if(w.length>0)throw new _.PackageManifestValidationError(w);const P=this.resolveAuthToken();if(!P)throw new _.PackagePublishAuthError;const U=await this.storageRepository.bundlePackage(C);return this.registryQueryBuilder.publishPackage(A,U,P)}async validatePackage(D){const C=await this.storageRepository.readPackageManifestFile(D);if(!C)return[];const A=await this.storageRepository.scanDirectoryForItems(D),w=_.Package.create({manifest:{name:"temp",version:"0.0.0"},items:A,source:{type:"registry"}}),P=[];for(const[U,L]of Object.entries(C.items)){if(!L)continue;const R=w.resolveItems(U),B=new Set(R.map($=>$.name));for(const $ of L)B.has($.name)||P.push({type:"missing_on_disk",itemType:U,itemName:$.name})}return P}resolveAuthToken(){return process.env.INVARIANT_TOKEN||null}};return PI.PublishPackageCommandHandler=v,PI.PublishPackageCommandHandler=v=e([(0,a.CommandHandler)(m),i(0,(0,u.Inject)(c.StorageRepository)),i(1,(0,u.Inject)(p.RegistryQueryBuilder)),r("design:paramtypes",[c.StorageRepository,p.RegistryQueryBuilder])],v),PI}var dfr;function _Kr(){return dfr||(dfr=1,(function(e){var r=n0e&&n0e.__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=n0e&&n0e.__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(dKr(),e)})(n0e)),n0e}var _fr;function RU(){return _fr||(_fr=1,(function(e){var r=Jde&&Jde.__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=Jde&&Jde.__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(xGr(),e),i(GAt(),e),i(CGr(),e),i(kGr(),e),i(FGr(),e),i(IGr(),e),i(sKr(),e),i(uKr(),e),i(lKr(),e),i(pKr(),e),i(_Kr(),e)})(Jde)),Jde}var i0e={},a0e={},II={},mfr;function mKr(){if(mfr)return II;mfr=1;var e=II&&II.__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},r=II&&II.__metadata||function(m,v){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(m,v)},i=II&&II.__param||function(m,v){return function(y,D){v(y,D,m)}};Object.defineProperty(II,"__esModule",{value:!0}),II.ListPackagesQueryHandler=II.ListPackagesQuery=void 0;const a=Lx(),u=xf(),c=CT();class p{constructor(v,y={cached:!0}){this.directory=v,this.options=y}}II.ListPackagesQuery=p;let _=class{constructor(v){this.storageRepository=v}async execute(v){const{directory:y,options:D}=v;if(!await this.storageRepository.configExists(y))return[];const A=await this.storageRepository.readConfig(y),w=A.packages,P=A.active,U=[];for(const[L,R]of Object.entries(w)){const B=P.some($=>$.package===L);D.active&&!B||U.push({name:L,version:R.version,source:R.source,isActive:B})}return U}};return II.ListPackagesQueryHandler=_,II.ListPackagesQueryHandler=_=e([(0,a.QueryHandler)(p),i(0,(0,u.Inject)(c.StorageRepository)),r("design:paramtypes",[c.StorageRepository])],_),II}var hfr;function hKr(){return hfr||(hfr=1,(function(e){var r=a0e&&a0e.__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=a0e&&a0e.__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(mKr(),e)})(a0e)),a0e}var gfr;function yfr(){return gfr||(gfr=1,(function(e){var r=i0e&&i0e.__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=i0e&&i0e.__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(hKr(),e)})(i0e)),i0e}var s0e={},Tie={},vfr;function gKr(){if(vfr)return Tie;vfr=1;var e=Tie&&Tie.__decorate||function(U,L,R,B){var $=arguments.length,q=$<3?L:B===null?B=Object.getOwnPropertyDescriptor(L,R):B,X;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")q=Reflect.decorate(U,L,R,B);else for(var ee=U.length-1;ee>=0;ee--)(X=U[ee])&&(q=($<3?X(q):$>3?X(L,R,q):X(L,R))||q);return $>3&&q&&Object.defineProperty(L,R,q),q};Object.defineProperty(Tie,"__esModule",{value:!0}),Tie.FileSystemStorageRepository=void 0;const r=xf(),i=AU,a=fm,u=s$t,c=CT(),p=NQ(),_="invariant.json",m="invariant-package.json",v=".invariant",y="cache",D="sessions",C="contexts",A="instructions",w=["agents","skills","commands","rules","contexts","instructions"];let P=class extends c.StorageRepository{async configExists(L){try{return await i.access(a.join(L,_)),!0}catch{return!1}}async readConfig(L){const R=a.join(L,_),B=await i.readFile(R,"utf-8"),$=JSON.parse(B);return p.ProjectConfig.create({name:$.name,version:$.version,description:$.description,targets:$.targets||["claude"],packages:$.packages||{},active:$.active||[]})}async writeConfig(L,R){const B=a.join(L,_),$=JSON.stringify(R.toJSON(),null,2);await i.writeFile(B,$,"utf-8")}async ensureInvariantDir(L){await i.mkdir(a.join(L,v),{recursive:!0})}async ensureCacheDir(L){await i.mkdir(a.join(L,v,y),{recursive:!0})}async ensureSessionsDir(L){await i.mkdir(a.join(L,v,D),{recursive:!0})}async savePackageToCache(L,R){const B=a.join(L,v,y,R.cacheFolder);await i.mkdir(B,{recursive:!0}),await i.writeFile(a.join(B,"invariant.json"),JSON.stringify(R.manifest,null,2),"utf-8");for(const $ of R.items){const q=a.join(B,$.path);await i.mkdir(a.dirname(q),{recursive:!0}),await i.writeFile(q,$.content,"utf-8")}}async readPackageFromCache(L,R){const B=a.join(L,v,y);try{const $=await this.findCachedPackagePath(B,R);if(!$)return null;const q=a.join($,"invariant.json"),X=await i.readFile(q,"utf-8"),ee=JSON.parse(X),se=await this.readPackageItems($);return p.Package.create({manifest:ee,items:se,source:{type:"registry"}})}catch{return null}}async findCachedPackagePath(L,R){try{if(R.startsWith("@")){const q=R.indexOf("/");if(q!==-1){const X=R.substring(0,q),ee=R.substring(q+1),se=a.join(L,X),Re=(await i.readdir(se)).find(Oe=>Oe.startsWith(ee+"@"));return Re?a.join(se,Re):null}}const $=(await i.readdir(L)).find(q=>q.startsWith(R+"@"));return $?a.join(L,$):null}catch{return null}}async readPackageItems(L){const R=[];for(const B of w){const $=a.join(L,B);try{const q=await this.readDirRecursive($);for(const X of q)if(X.endsWith(".md")){const ee=await i.readFile(a.join($,X),"utf-8");R.push({type:B,path:`${B}/${X}`,content:ee})}}catch{}}return await this.detectRootLevelSkills(L,R),R}async detectRootLevelSkills(L,R){try{const B=await i.readdir(L,{withFileTypes:!0});for(const $ of B){if(!$.isDirectory()||w.includes($.name)||$.name==="invariant.json"||$.name===".git")continue;const q=a.join(L,$.name),X=await this.readDirRecursive(q);if(X.some(se=>se==="SKILL.md"))for(const se of X){if(!se.endsWith(".md"))continue;const de=`skills/${$.name}/${se}`;if(R.some(we=>we.path===de))continue;const Oe=await i.readFile(a.join(q,se),"utf-8");R.push({type:"skills",path:de,content:Oe})}}}catch{}}async readDirRecursive(L,R=""){const B=[],$=await i.readdir(L,{withFileTypes:!0});for(const q of $){const X=R?`${R}/${q.name}`:q.name;if(q.isDirectory()){const ee=await this.readDirRecursive(a.join(L,q.name),X);B.push(...ee)}else B.push(X)}return B}async listCachedPackages(L){const R=a.join(L,v,y);try{const B=await i.readdir(R,{withFileTypes:!0}),$=[];for(const q of B)if(q.name.startsWith("@")&&q.isDirectory()){const X=a.join(R,q.name),ee=await i.readdir(X);for(const se of ee)$.push(`${q.name}/${se}`)}else $.push(q.name);return $}catch{return[]}}async packageExistsInCache(L,R){const B=a.join(L,v,y);return await this.findCachedPackagePath(B,R)!==null}async removePackageFromCache(L,R){const B=a.join(L,v,y);try{const $=await this.findCachedPackagePath(B,R);$&&await i.rm($,{recursive:!0})}catch{}}async copyContextsToInvariant(L,R,B){const $=a.join(L,v,C,R.name);await i.mkdir($,{recursive:!0});const q=R.resolveItems("contexts"),X=[],ee=[];for(const se of q)if(!(B&&se.name!==B)){if(se.files.length===1&&!se.files[0].relativePath.includes("/")){const de=a.join($,se.name+".md");await i.writeFile(de,se.files[0].content,"utf-8"),X.push(de)}else{const de=a.join($,se.name);for(const Re of se.files){const Oe=a.join(de,Re.relativePath);await i.mkdir(a.dirname(Oe),{recursive:!0}),await i.writeFile(Oe,Re.content,"utf-8"),X.push(Oe)}}ee.push(se.name)}return{files:X,itemNames:ee}}async copyInstructionsToInvariant(L,R,B){const $=a.join(L,v,A,R.name);await i.mkdir($,{recursive:!0});const q=R.resolveItems("instructions"),X=[],ee=[];for(const se of q)if(!(B&&se.name!==B)){if(se.files.length===1&&!se.files[0].relativePath.includes("/")){const de=a.join($,se.name+".md");await i.writeFile(de,se.files[0].content,"utf-8"),X.push(de)}else{const de=a.join($,se.name);for(const Re of se.files){const Oe=a.join(de,Re.relativePath);await i.mkdir(a.dirname(Oe),{recursive:!0}),await i.writeFile(Oe,Re.content,"utf-8"),X.push(Oe)}}ee.push(se.name)}return{files:X,itemNames:ee}}async removeContextsFromInvariant(L,R,B){const $=a.join(L,v,C,R);try{B?await this.removeItemFileOrDir($,B):await i.rm($,{recursive:!0})}catch{}}async removeInstructionsFromInvariant(L,R,B){const $=a.join(L,v,A,R);try{B?await this.removeItemFileOrDir($,B):await i.rm($,{recursive:!0})}catch{}}async removeItemFileOrDir(L,R){const B=a.join(L,R);try{if((await i.stat(B)).isDirectory()){await i.rm(B,{recursive:!0});return}}catch{}try{await i.unlink(B+".md")}catch{}}async listContexts(L){const R=a.join(L,v,C);return this.listItemsInDir(R)}async listInstructions(L){const R=a.join(L,v,A);return this.listItemsInDir(R)}async listItemsInDir(L){const R=[];try{const B=await i.readdir(L,{withFileTypes:!0});for(const $ of B)if($.name.startsWith("@")&&$.isDirectory()){const q=a.join(L,$.name),X=await i.readdir(q,{withFileTypes:!0});for(const ee of X)if(ee.isDirectory()){const se=`${$.name}/${ee.name}`,de=a.join(q,ee.name);await this.collectMdFiles(R,se,de)}}else if($.isDirectory()){const q=a.join(L,$.name);await this.collectMdFiles(R,$.name,q)}}catch{}return R}async collectMdFiles(L,R,B){const $=await i.readdir(B);for(const q of $)q.endsWith(".md")&&L.push({package:R,name:q.replace(".md",""),path:a.join(B,q)})}async readContext(L,R,B){const $=a.join(L,v,C,R,`${B}.md`);return i.readFile($,"utf-8")}async readInstruction(L,R,B){const $=a.join(L,v,A,R,`${B}.md`);return i.readFile($,"utf-8")}async writeSessionFile(L,R,B){const $=a.join(L,v,D,`${R}.md`);return await i.writeFile($,B,"utf-8"),$}async readSessionFile(L,R){try{const B=a.join(L,v,D,`${R}.md`);return await i.readFile(B,"utf-8")}catch{return null}}async scanDirectoryForItems(L){return this.readPackageItems(L)}async readPackageManifestFile(L){try{const R=a.join(L,m),B=await i.readFile(R,"utf-8"),$=JSON.parse(B);return p.PackageManifestFile.create({name:$.name,version:$.version,description:$.description||"",author:$.author||"",license:$.license||"",repository:$.repository||"",items:$.items||{}})}catch{return null}}async writePackageManifestFile(L,R){const B=a.join(L,m),$=JSON.stringify(R.toJSON(),null,2);await i.writeFile(B,$,"utf-8")}async bundlePackage(L){const R=await this.readPackageItems(L),B=a.join(L,m),$=await i.readFile(B,"utf-8"),q=[];this.appendTarEntry(q,m,$);for(const ee of R)this.appendTarEntry(q,ee.path,ee.content);q.push(Buffer.alloc(1024));const X=Buffer.concat(q);return u.gzipSync(X)}appendTarEntry(L,R,B){const $=Buffer.from(B,"utf-8"),q=Buffer.alloc(512);q.write(R,0,Math.min(R.length,100),"utf-8"),q.write("0000644\0",100,8,"utf-8"),q.write("0000000\0",108,8,"utf-8"),q.write("0000000\0",116,8,"utf-8"),q.write($.length.toString(8).padStart(11,"0")+"\0",124,12,"utf-8");const X=Math.floor(Date.now()/1e3).toString(8).padStart(11,"0");q.write(X+"\0",136,12,"utf-8"),q[156]=48,q.write("ustar\0",257,6,"utf-8"),q.write("00",263,2,"utf-8"),q.fill(32,148,156);let ee=0;for(let de=0;de<512;de++)ee+=q[de];q.write(ee.toString(8).padStart(6,"0")+"\0 ",148,8,"utf-8"),L.push(q),L.push($);const se=512-$.length%512;se<512&&L.push(Buffer.alloc(se))}};return Tie.FileSystemStorageRepository=P,Tie.FileSystemStorageRepository=P=e([(0,r.Injectable)()],P),Tie}var eH={},bfr;function yKr(){if(bfr)return eH;bfr=1;var e=eH&&eH.__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},r=eH&&eH.__metadata||function(p,_){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(p,_)};Object.defineProperty(eH,"__esModule",{value:!0}),eH.InMemoryRegistryQueryBuilder=void 0;const i=xf(),a=CT(),u=NQ();let c=class extends a.RegistryQueryBuilder{constructor(){super(),this.packages=this.initializeFakeData()}initializeFakeData(){const _=new Map;return _.set("everything-claude-code",{name:"everything-claude-code",version:"1.0.0",description:"Complete Claude Code configuration with agents, skills, commands, and rules",author:"invariant-labs",items:[{type:"agents",path:"agents/planner.md",content:`# Planner Agent
@@ -916,7 +915,7 @@ Follow Clean Architecture principles:
916
915
  `}]}),_}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
916
 
918
917
  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(`
918
+ `}],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
919
 
921
920
  `)}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
921
  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.9",
4
4
  "description": "CLI tool for managing Claude AI specification invariants",
5
5
  "bin": {
6
6
  "invariant": "./dist/main.js"