shared-context-ai 0.1.16 → 0.1.17
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 +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -153,7 +153,7 @@ Import failed: ${p.error.message}`),process.exit(1));let f=p.data;if(I()){j("imp
|
|
|
153
153
|
Discovered ${c.resources.length} resources in ${e}:`),w(` ${p}`),c.formatLabel&&c.pluginName?w(` ${c.formatLabel}: ${c.pluginName}`):c.pluginName&&w(` Plugin: ${c.pluginName}`)}let u=t.tags?t.tags.split(",").map(m=>m.trim()).filter(Boolean):void 0,l={dryRun:!!t.dryRun,onConflict:t.onConflict||"auto",visibility:t.visibility||"org",topicTags:u,resources:c.resources,collectionMemberships:c.collectionMemberships.length>0?c.collectionMemberships:void 0};!I()&&!t.dryRun?w(`
|
|
154
154
|
Executing import...`):I()||w(`
|
|
155
155
|
Dry run \u2014 previewing changes...`);let h=await L("/api/cli/import",l,12e4);h.ok||(I()?P("import",h.error.code,h.error.message):T(`
|
|
156
|
-
Import failed: ${h.error.message}`),process.exit(1));let S=h.data;if(I()){j("import",S);return}let _=[...S.created.map(m=>({...m,action:"created"})),...S.updated.map(m=>({...m,action:"updated"})),...S.installed.map(m=>({...m,action:"installed"})),...S.cloned.map(m=>({...m,action:"cloned"})),...S.skipped.map(m=>({...m,action:"skipped"})),...S.errors.map(m=>({...m,action:"error"}))];if(_.length>0){w("");let m=_.length,p=_.map((f,g)=>{let C=`[${String(g+1).padStart(String(m).length)}/${m}]`,i=(f.resourceType||"").padEnd(10),y=(f.importPath.split("/").pop()||"").padEnd(24),E="";switch(f.action){case"created":E=`\u2713 created${f.slug?` (slug: ${f.slug})`:""}`;break;case"updated":E="\u2713 updated";break;case"installed":{let x=f.versionsBehind;E=`\u2713 installed${x?` (${x} versions behind)`:""}`;break}case"cloned":E=`\u2713 cloned${f.slug?` (slug: ${f.slug})`:""}`;break;case"skipped":E=`\u2713 skipped (${f.reason||"up to date"})`;break;case"error":E=`\u2717 error: ${f.error||"unknown"}`;break}return` ${C} ${i} ${y} ${E}`});for(let f of p)w(f)}if(S.collections.length>0)for(let m of S.collections){let p=m.importPath.split("/").pop()||m.importPath;w(` collection ${p.padEnd(20)} \u2713 ${m.membersLinked} members linked${m.membersFailed>0?`, ${m.membersFailed} failed`:""}`)}w("");let d=[S.created.length>0?`${S.created.length} created`:null,S.installed.length>0?`${S.installed.length} installed`:null,S.cloned.length>0?`${S.cloned.length} cloned`:null,S.updated.length>0?`${S.updated.length} updated`:null,S.skipped.length>0?`${S.skipped.length} skipped`:null,S.errors.length>0?`${S.errors.length} errors`:null].filter(Boolean);t.dryRun?w(`Dry run complete: ${d.join(", ")}`):w(`Import complete: ${d.join(", ")}`),S.errors.length>0&&process.exit(1)})}var wo=require("path"),Ao=require("os");se();me();function bo(r){r.command("sync").description("Synchronize resource state \u2014 check for updates and discover untracked resources").option("--quiet","Minimal output (one-line summary)").option("--force","Bypass throttle and sync now").option("--no-import","Skip auto-importing untracked resources").action(async(e,t)=>{let n={...e,...t.optsWithGlobals()};if(!n.force&&!hr()){let b=St();if(b){let O={...b.lastResult,updates:[],untracked:[],summary:So(b.lastResult.updatesAvailable,b.lastResult.untrackedResources),throttled:!0};Co(O,!!n.quiet);return}}M()||(I()?P("sync","AUTH_MISSING","Login required to sync."):T("Login required. Run 'shared-context-ai login'."),process.exit(1));let s=xe(n.agent),o=[],a=await G("/api/cli/updates");a.ok&&(o=a.data.updates);let c=s?[s]:De();c.length===0&&!I()&&!n.quiet&&T("No AI agents detected \u2014 resource discovery skipped. Use --agent to specify one.");let u=[],l=[],h=new Set;for(let b of c){let O=(0,wo.join)((0,Ao.homedir)(),b.dir),R=nt(O,{settingsPath:fe(b,!!n.project),mcpConfigPath:re(b,!!n.project)});for(let k of R.resources)h.has(k.importPath)||(h.add(k.importPath),u.push(k));for(let k of R.collectionMemberships)h.has(`cm:${k.collectionImportPath}`)||(h.add(`cm:${k.collectionImportPath}`),l.push(k))}let S={resources:u,collectionMemberships:l},_=Q(),d=new Set(_.installations.map(b=>b.installPath)),m=new Map;for(let b of _.installations){let O=b.installPath.split("/"),R=O[0],k=O[O.length-1];m.has(R)||m.set(R,new Set),m.get(R).add(k)}let p=new Set(["context-manager",".claude-plugin"]),f=S.resources.filter(b=>{if(d.has(b.importPath))return!1;let O=b.importPath.split("/"),R=O[0],k=O[O.length-1];return!((R==="mcps"||R==="hooks")&&m.get(R)?.has(k)||b.importPath.startsWith(".")||p.has(k))}),g=f.length;if(n.import!==!1&&f.length>0){let b={dryRun:!1,onConflict:"auto",visibility:"org",resources:f,collectionMemberships:S.collectionMemberships},O=await L("/api/cli/import",b,12e4);if(O.ok){let R=[...O.data.created,...O.data.updated,...O.data.installed];if(!I()&&!n.quiet){if(R.length>0){w(`
|
|
156
|
+
Import failed: ${h.error.message}`),process.exit(1));let S=h.data;if(I()){j("import",S);return}let _=[...S.created.map(m=>({...m,action:"created"})),...S.updated.map(m=>({...m,action:"updated"})),...S.installed.map(m=>({...m,action:"installed"})),...S.cloned.map(m=>({...m,action:"cloned"})),...S.skipped.map(m=>({...m,action:"skipped"})),...S.errors.map(m=>({...m,action:"error"}))];if(_.length>0){w("");let m=_.length,p=_.map((f,g)=>{let C=`[${String(g+1).padStart(String(m).length)}/${m}]`,i=(f.resourceType||"").padEnd(10),y=(f.importPath.split("/").pop()||"").padEnd(24),E="";switch(f.action){case"created":E=`\u2713 created${f.slug?` (slug: ${f.slug})`:""}`;break;case"updated":E="\u2713 updated";break;case"installed":{let x=f.versionsBehind;E=`\u2713 installed${x?` (${x} versions behind)`:""}`;break}case"cloned":E=`\u2713 cloned${f.slug?` (slug: ${f.slug})`:""}`;break;case"skipped":E=`\u2713 skipped (${f.reason||"up to date"})`;break;case"error":E=`\u2717 error: ${f.error||"unknown"}`;break}return` ${C} ${i} ${y} ${E}`});for(let f of p)w(f)}if(S.collections.length>0)for(let m of S.collections){let p=m.importPath.split("/").pop()||m.importPath;w(` collection ${p.padEnd(20)} \u2713 ${m.membersLinked} members linked${m.membersFailed>0?`, ${m.membersFailed} failed`:""}`)}w("");let d=[S.created.length>0?`${S.created.length} created`:null,S.installed.length>0?`${S.installed.length} installed`:null,S.cloned.length>0?`${S.cloned.length} cloned`:null,S.updated.length>0?`${S.updated.length} updated`:null,S.skipped.length>0?`${S.skipped.length} skipped`:null,S.errors.length>0?`${S.errors.length} errors`:null].filter(Boolean);t.dryRun?w(`Dry run complete: ${d.join(", ")}`):w(`Import complete: ${d.join(", ")}`),S.errors.length>0&&process.exit(1)})}var wo=require("path"),Ao=require("os");se();me();function bo(r){r.command("sync").description("Synchronize resource state \u2014 check for updates and discover untracked resources").option("--quiet","Minimal output (one-line summary)").option("--force","Bypass throttle and sync now").option("--no-import","Skip auto-importing untracked resources").action(async(e,t)=>{let n={...e,...t.optsWithGlobals()};if(!n.force&&!hr()){let b=St();if(b){let O={...b.lastResult,updates:[],untracked:[],summary:So(b.lastResult.updatesAvailable,b.lastResult.untrackedResources),throttled:!0};Co(O,!!n.quiet);return}}M()||(I()?P("sync","AUTH_MISSING","Login required to sync."):T("Login required. Run 'shared-context-ai login'."),process.exit(1));let s=xe(n.agent),o=[],a=await G("/api/cli/updates");a.ok&&(o=a.data.updates);let c=s?[s]:De();c.length===0&&!I()&&!n.quiet&&T("No AI agents detected \u2014 resource discovery skipped. Use --agent to specify one.");let u=[],l=[],h=new Set;for(let b of c){let O=(0,wo.join)((0,Ao.homedir)(),b.dir),R=nt(O,{settingsPath:fe(b,!!n.project),mcpConfigPath:re(b,!!n.project)});for(let k of R.resources)h.has(k.importPath)||(h.add(k.importPath),u.push(k));for(let k of R.collectionMemberships)h.has(`cm:${k.collectionImportPath}`)||(h.add(`cm:${k.collectionImportPath}`),l.push(k))}let S={resources:u,collectionMemberships:l},_=Q(),d=new Set(_.installations.map(b=>b.installPath)),m=new Map;for(let b of _.installations){let O=b.installPath.split("/"),R=O[0],k=O[O.length-1];m.has(R)||m.set(R,new Set),m.get(R).add(k)}let p=new Set(["context-manager",".claude-plugin"]),f=S.resources.filter(b=>{if(d.has(b.importPath))return!1;let O=b.importPath.split("/"),R=O[0],k=O[O.length-1];return!((R==="mcps"||R==="hooks")&&m.get(R)?.has(k)||b.importPath.startsWith(".")||p.has(k)||b.importPath.startsWith("plugins/"))});for(let b of f)b.description&&b.description.length>1e3&&(b.description=b.description.slice(0,997)+"...");let g=f.length;if(n.import!==!1&&f.length>0){let b={dryRun:!1,onConflict:"auto",visibility:"org",resources:f,collectionMemberships:S.collectionMemberships},O=await L("/api/cli/import",b,12e4);if(O.ok){let R=[...O.data.created,...O.data.updated,...O.data.installed];if(!I()&&!n.quiet){if(R.length>0){w(`
|
|
157
157
|
Imported ${R.length} resource${R.length===1?"":"s"}:`);let k=R.map(N=>[` ${(N.resourceType||"").padEnd(12)}`,(N.slug||N.importPath.split("/").pop()||"").padEnd(24),N.importPath]);w(ge(k))}O.data.errors.length>0&&T(`
|
|
158
158
|
${O.data.errors.length} import error(s)`)}f.length=0}else I()||T(`Import failed: ${O.error.message}`)}let C=Ie(),i=0;if(C){let b=await G(`/api/cli/projects/${C.projectId}/resources`);if(!b.ok)!I()&&!n.quiet&&(T(`Warning: Project "${C.projectName}" not found on server (may have been deleted).`),T(" Remove .shared-context/project.json to unlink this directory."));else{let O=b.data.resources,k=Q().installations.filter(F=>F.projectId===C.projectId),N=new Set(k.map(F=>F.resourceId)),D=O.filter(F=>!N.has(F.id));if(D.length>0)if(!s)!I()&&!n.quiet&&T(`
|
|
159
159
|
Project "${C.projectName}" has ${D.length} new resource${D.length===1?"":"s"} \u2014 use --agent to install them.`);else{let F=Oe(s);for(let B of D){let pe=B.installPath;try{let Ue=await G(`/api/cli/resource/${pe}`);if(!Ue.ok)continue;await F.install(Ue.data,"project",s),ue({resourceId:B.id,slug:B.slug||B.id,installPath:pe,title:B.title,sha:B.latestSha||"",scope:"project",agent:s.id,installedAt:new Date().toISOString(),projectId:C.projectId}),B.latestSha&&await L("/api/cli/install",{resourceId:B.id,agentPlatform:s.platform,installedSha:B.latestSha}).catch(()=>{}),i++}catch{}}!I()&&!n.quiet&&i>0&&w(`
|