@linhnguyen96114/agentkit-engineer 1.4.3 → 1.6.0

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 (32) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/README.md +2 -2
  3. package/bin/agentkit.js +1 -1
  4. package/package.json +2 -2
  5. package/scripts-dist/cli/agentkit-logout.js +2 -2
  6. package/scripts-dist/cli/agentkit-skills.js +10 -5
  7. package/scripts-dist/gen/check-upstream.js +6 -6
  8. package/scripts-dist/gen/frontend-cli.js +4 -3
  9. package/scripts-dist/gen/generate-catalogs.js +1 -1
  10. package/scripts-dist/gen/sync-gamedev-upstream.js +22 -0
  11. package/scripts-dist/gen/sync-upstream.js +1 -0
  12. package/scripts-dist/gen/upstream-skill-syncers.js +5 -0
  13. package/scripts-dist/gen/upstream-suite-syncers.js +12 -0
  14. package/scripts-dist/lib/agentkit-config-file.js +2 -2
  15. package/scripts-dist/lib/auth/cli.js +1 -1
  16. package/scripts-dist/lib/codegraph-installer/mcp-sync.js +1 -1
  17. package/scripts-dist/lib/doctor/checks-rules.js +1 -1
  18. package/scripts-dist/lib/dropped-mcp-servers.js +1 -1
  19. package/scripts-dist/lib/init/cli.js +1 -1
  20. package/scripts-dist/lib/kit-context.js +1 -1
  21. package/scripts-dist/lib/kit-install-dispatch.js +1 -1
  22. package/scripts-dist/lib/kit-remover.js +1 -1
  23. package/scripts-dist/lib/kits.js +1 -1
  24. package/scripts-dist/lib/payload/retention.js +1 -1
  25. package/scripts-dist/lib/profile-block.js +1 -1
  26. package/scripts-dist/lib/profile-rules.js +1 -1
  27. package/scripts-dist/lib/server/kit-actions.js +1 -1
  28. package/scripts-dist/lib/skill-profiles.js +1 -1
  29. package/scripts-dist/lib/skills/cli.js +1 -1
  30. package/scripts-dist/lib/skills/skill-companion-assets.js +1 -0
  31. package/scripts-dist/lib/skills/skills-context-options.js +1 -0
  32. package/scripts-dist/lib/ui.js +1 -1
@@ -1 +1 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,r,i){i===void 0&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}):(function(e,t,r,i){i===void 0&&(i=r),e[i]=t[r]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var i=[];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(i[i.length]=s);return i},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var i=e(t),s=0;s<i.length;s++)i[s]!=="default"&&__createBinding(r,t,i[s]);return __setModuleDefault(r,t),r}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.rulesDirFor=rulesDirFor,exports.checkRules=checkRules;const fs=__importStar(require("fs")),path=__importStar(require("path")),antigravity_1=require("../kit-installers/antigravity"),hermes_distribution_1=require("../kit-installers/hermes-distribution"),rules_digest_1=require("../kit-installers/rules-digest"),omp_home_1=require("../omp-home"),devin_home_1=require("../kit-installers/devin-home"),profile_resolution_1=require("./profile-resolution"),profile_rules_1=require("../profile-rules"),kit_layout_1=require("./kit-layout"),payload_roots_1=require("../payload-roots"),GROUP="Rules";function rulesDirFor(e){return e.kit==="antigravity"?path.join(e.kitRoot,antigravity_1.ANTIGRAVITY_PLUGIN_REL,"rules"):e.kit==="omp"?path.join(path.dirname(e.kitRoot),omp_home_1.OMP_RULES_DIR):e.kit==="devin"&&e.scope==="global"?path.join((0,devin_home_1.resolveDevinHomeDir)(),"rules"):path.join(e.kitRoot,"rules")}const NON_RULE_FILES=new Set(rules_digest_1.DIGEST_SLOTS.map(e=>e.replace(/\.mdc?$/,"")));function ruleNames(e){return fs.existsSync(e)?fs.readdirSync(e).filter(t=>t.endsWith(".md")||t.endsWith(".mdc")).map(t=>t.replace(/\.mdc?$/,"")).filter(t=>!NON_RULE_FILES.has(t)).sort():[]}function excludedFor(e){const t=e==="hermes"?hermes_distribution_1.EXCLUDED_RULES:[];return new Set(t.map(r=>r.replace(/\.mdc?$/,"")))}function checkGrokRulesReachable(e){if(e.kit!=="grok"||e.scope!=="project")return[];const t=path.join(path.dirname(e.kitRoot),"AGENTS.md");return[fs.existsSync(t)&&fs.readFileSync(t,"utf8").includes(rules_digest_1.DIGEST_HEADING)?{group:GROUP,name:"rules:grok-index",status:"pass",summary:"AGENTS.md carries the rules digest, which is how the rules reach Grok here",detail:t}:{group:GROUP,name:"rules:grok-index",status:"fail",summary:"AGENTS.md carries no rules digest \u2014 the installer keeps .grok/ gitignored, and Grok skips a gitignored project rules directory, so nothing in .grok/rules reaches the model",detail:t,remedy:"agentkit init"}]}function checkRules(e,t){if(kit_layout_1.KIT_LAYOUTS[e.kit].hasAgentkitSkills===!1)return[{group:GROUP,name:"rules:expected-set",status:"skip",summary:"this kit ships no Agentkit rules \u2014 its snapshot replaces that surface"}];const r=path.join(t,payload_roots_1.RULES_SOURCE_DIR),i=excludedFor(e.kit),{profile:s}=(0,profile_resolution_1.resolveCheckProfile)(e,t),p=s?new Set((0,profile_rules_1.ruleSkipFor)(s)):new Set,o=ruleNames(r).filter(n=>!i.has(n)&&!p.has(n));if(o.length===0)return[{group:GROUP,name:"rules:expected-set",status:"skip",summary:"cannot verify \u2014 this CLI ships no rules directory to compare against",detail:r}];const a=rulesDirFor(e),d=new Set(ruleNames(a)),l=o.filter(n=>!d.has(n)),u=[];u.push(l.length===0?{group:GROUP,name:"rules:expected-set",status:"pass",summary:`${o.length} rule(s) installed`,detail:a}:{group:GROUP,name:"rules:expected-set",status:"fail",summary:`${l.length} of ${o.length} rule(s) missing \u2014 the agent never sees them`,detail:`${l.join(", ")} (expected in ${a})`,remedy:"agentkit init"});const h=new Set([...o,...i]),c=[...d].filter(n=>!h.has(n));return c.length>0&&u.push({group:GROUP,name:"rules:orphaned",status:"warn",summary:`${c.length} installed rule(s) are no longer in the kit`,detail:`${c.join(", ")} \u2014 a rule this CLI dropped is still loading`,remedy:"agentkit init"}),u.push(...checkGrokRulesReachable(e)),u}
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,r,i){i===void 0&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}):(function(e,t,r,i){i===void 0&&(i=r),e[i]=t[r]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var i=[];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(i[i.length]=s);return i},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var i=e(t),s=0;s<i.length;s++)i[s]!=="default"&&__createBinding(r,t,i[s]);return __setModuleDefault(r,t),r}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.rulesDirFor=rulesDirFor,exports.checkRules=checkRules;const fs=__importStar(require("fs")),path=__importStar(require("path")),antigravity_1=require("../kit-installers/antigravity"),hermes_distribution_1=require("../kit-installers/hermes-distribution"),rules_digest_1=require("../kit-installers/rules-digest"),omp_home_1=require("../omp-home"),devin_home_1=require("../kit-installers/devin-home"),profile_resolution_1=require("./profile-resolution"),install_profile_config_1=require("../install-profile-config"),profile_rules_1=require("../profile-rules"),skill_profiles_1=require("../skill-profiles"),kit_layout_1=require("./kit-layout"),payload_roots_1=require("../payload-roots"),GROUP="Rules";function rulesDirFor(e){return e.kit==="antigravity"?path.join(e.kitRoot,antigravity_1.ANTIGRAVITY_PLUGIN_REL,"rules"):e.kit==="omp"?path.join(path.dirname(e.kitRoot),omp_home_1.OMP_RULES_DIR):e.kit==="devin"&&e.scope==="global"?path.join((0,devin_home_1.resolveDevinHomeDir)(),"rules"):path.join(e.kitRoot,"rules")}const NON_RULE_FILES=new Set(rules_digest_1.DIGEST_SLOTS.map(e=>e.replace(/\.mdc?$/,"")));function ruleNames(e){return fs.existsSync(e)?fs.readdirSync(e).filter(t=>t.endsWith(".md")||t.endsWith(".mdc")).map(t=>t.replace(/\.mdc?$/,"")).filter(t=>!NON_RULE_FILES.has(t)).sort():[]}function excludedFor(e){const t=e==="hermes"?hermes_distribution_1.EXCLUDED_RULES:[];return new Set(t.map(r=>r.replace(/\.mdc?$/,"")))}function checkGrokRulesReachable(e){if(e.kit!=="grok"||e.scope!=="project")return[];const t=path.join(path.dirname(e.kitRoot),"AGENTS.md");return[fs.existsSync(t)&&fs.readFileSync(t,"utf8").includes(rules_digest_1.DIGEST_HEADING)?{group:GROUP,name:"rules:grok-index",status:"pass",summary:"AGENTS.md carries the rules digest, which is how the rules reach Grok here",detail:t}:{group:GROUP,name:"rules:grok-index",status:"fail",summary:"AGENTS.md carries no rules digest \u2014 the installer keeps .grok/ gitignored, and Grok skips a gitignored project rules directory, so nothing in .grok/rules reaches the model",detail:t,remedy:"agentkit init"}]}function checkRules(e,t){if(kit_layout_1.KIT_LAYOUTS[e.kit].hasAgentkitSkills===!1)return[{group:GROUP,name:"rules:expected-set",status:"skip",summary:"this kit ships no Agentkit rules \u2014 its snapshot replaces that surface"}];const r=path.join(t,payload_roots_1.RULES_SOURCE_DIR),i=excludedFor(e.kit),{profile:s}=(0,profile_resolution_1.resolveCheckProfile)(e,t),p=s?new Set((0,profile_rules_1.ruleSkipFor)(s)):new Set,h=s==="gamedev"||(0,skill_profiles_1.withDependencies)((0,install_profile_config_1.readInstallSettings)(e.configPath).extraSkills).has("gamedev")?profile_rules_1.GAMEDEV_RULES:[],o=[...ruleNames(r),...h].filter(n=>!i.has(n)&&!p.has(n)).sort();if(o.length===0)return[{group:GROUP,name:"rules:expected-set",status:"skip",summary:"cannot verify \u2014 this CLI ships no rules directory to compare against",detail:r}];const l=rulesDirFor(e),d=new Set(ruleNames(l)),u=o.filter(n=>!d.has(n)),a=[];a.push(u.length===0?{group:GROUP,name:"rules:expected-set",status:"pass",summary:`${o.length} rule(s) installed`,detail:l}:{group:GROUP,name:"rules:expected-set",status:"fail",summary:`${u.length} of ${o.length} rule(s) missing \u2014 the agent never sees them`,detail:`${u.join(", ")} (expected in ${l})`,remedy:"agentkit init"});const f=new Set([...o,...i]),c=[...d].filter(n=>!f.has(n));return c.length>0&&a.push({group:GROUP,name:"rules:orphaned",status:"warn",summary:`${c.length} installed rule(s) are no longer in the kit`,detail:`${c.join(", ")} \u2014 a rule this CLI dropped is still loading`,remedy:"agentkit init"}),a.push(...checkGrokRulesReachable(e)),a}
@@ -1,4 +1,4 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var o=Object.getOwnPropertyDescriptor(e,r);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,o)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),__importStar=this&&this.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var n=[];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(n[n.length]=o);return n},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var n=t(e),o=0;o<n.length;o++)n[o]!=="default"&&__createBinding(r,e,n[o]);return __setModuleDefault(r,e),r}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.AGENTKIT_MCP_SERVERS=exports.DROPPED_MCP_SERVERS=void 0,exports.removeAgentkitMcpServers=removeAgentkitMcpServers,exports.stripDroppedMcpServers=stripDroppedMcpServers,exports.stripDroppedMcpServersFromToml=stripDroppedMcpServersFromToml;const fs=__importStar(require("fs"));exports.DROPPED_MCP_SERVERS=[{name:"git",marker:"mcp-server-git"},{name:"sequential-thinking",marker:"@modelcontextprotocol/server-sequential-thinking"}],exports.AGENTKIT_MCP_SERVERS=[{name:"playwright",marker:"@playwright/mcp"},{name:"chrome-devtools",marker:"chrome-devtools-mcp"},{name:"mobile-mcp",marker:"@mobilenext/mobile-mcp"}];function removeAgentkitMcpServers(t){let e;try{e=JSON.parse(fs.readFileSync(t,"utf-8"))}catch{return{removed:[],remaining:null}}const r=e?.mcpServers;if(!r||typeof r!="object"||Array.isArray(r))return{removed:[],remaining:null};const n=[];for(const{name:i,marker:c}of exports.AGENTKIT_MCP_SERVERS)Object.prototype.hasOwnProperty.call(r,i)&&JSON.stringify(r[i]??"").includes(c)&&(delete r[i],n.push(i));const o=Object.keys(r).length;if(n.length===0)return{removed:n,remaining:o};try{if(o===0)return{removed:n,remaining:0};const i=`${t}.${process.pid}.tmp`;try{fs.writeFileSync(i,`${JSON.stringify(e,null,2)}
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var o=Object.getOwnPropertyDescriptor(e,r);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,o)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),__importStar=this&&this.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var n=[];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(n[n.length]=o);return n},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var n=t(e),o=0;o<n.length;o++)n[o]!=="default"&&__createBinding(r,e,n[o]);return __setModuleDefault(r,e),r}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.AGENTKIT_MCP_SERVERS=exports.DROPPED_MCP_SERVERS=void 0,exports.removeAgentkitMcpServers=removeAgentkitMcpServers,exports.stripDroppedMcpServers=stripDroppedMcpServers,exports.stripDroppedMcpServersFromToml=stripDroppedMcpServersFromToml;const fs=__importStar(require("fs"));exports.DROPPED_MCP_SERVERS=[{name:"git",marker:"mcp-server-git"},{name:"sequential-thinking",marker:"@modelcontextprotocol/server-sequential-thinking"}],exports.AGENTKIT_MCP_SERVERS=[{name:"playwright",marker:"@playwright/mcp"},{name:"chrome-devtools",marker:"chrome-devtools-mcp"},{name:"mobile-mcp",marker:"@mobilenext/mobile-mcp"},{name:"unityMCP",marker:"mcpforunityserver"},{name:"godot",marker:"@coding-solo/godot-mcp"}];function removeAgentkitMcpServers(t){let e;try{e=JSON.parse(fs.readFileSync(t,"utf-8"))}catch{return{removed:[],remaining:null}}const r=e?.mcpServers;if(!r||typeof r!="object"||Array.isArray(r))return{removed:[],remaining:null};const n=[];for(const{name:i,marker:c}of exports.AGENTKIT_MCP_SERVERS)Object.prototype.hasOwnProperty.call(r,i)&&JSON.stringify(r[i]??"").includes(c)&&(delete r[i],n.push(i));const o=Object.keys(r).length;if(n.length===0)return{removed:n,remaining:o};try{if(o===0)return{removed:n,remaining:0};const i=`${t}.${process.pid}.tmp`;try{fs.writeFileSync(i,`${JSON.stringify(e,null,2)}
2
2
  `,"utf8"),fs.renameSync(i,t)}catch(c){throw fs.rmSync(i,{force:!0}),c}}catch{}return{removed:n,remaining:o}}function stripDroppedMcpServers(t){if(!t||typeof t!="object")return[];const e=[];for(const{name:r,marker:n}of exports.DROPPED_MCP_SERVERS)Object.prototype.hasOwnProperty.call(t,r)&&JSON.stringify(t[r]??"").includes(n)&&(delete t[r],e.push(r));return e}function stripDroppedMcpServersFromToml(t){let e=t;for(const{name:r,marker:n}of exports.DROPPED_MCP_SERVERS)e=e.replace(new RegExp(`^\\[mcp_servers\\.${escapeRegExp(r)}\\][^\\n]*(?:\\n(?!\\[).*)*\\n?`,"gm"),o=>o.includes(n)?"":o);return e===t?t:e.replace(/\n{3,}/g,`
3
3
 
4
4
  `).trimStart()}function escapeRegExp(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}
@@ -1 +1 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(n,t,o,i){i===void 0&&(i=o);var e=Object.getOwnPropertyDescriptor(t,o);(!e||("get"in e?!t.__esModule:e.writable||e.configurable))&&(e={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(n,i,e)}):(function(n,t,o,i){i===void 0&&(i=o),n[i]=t[o]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(n,t){Object.defineProperty(n,"default",{enumerable:!0,value:t})}):function(n,t){n.default=t}),__importStar=this&&this.__importStar||(function(){var n=function(t){return n=Object.getOwnPropertyNames||function(o){var i=[];for(var e in o)Object.prototype.hasOwnProperty.call(o,e)&&(i[i.length]=e);return i},n(t)};return function(t){if(t&&t.__esModule)return t;var o={};if(t!=null)for(var i=n(t),e=0;e<i.length;e++)i[e]!=="default"&&__createBinding(o,t,i[e]);return __setModuleDefault(o,t),o}})(),__importDefault=this&&this.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.runInit=runInit;const chalk_1=__importDefault(require("chalk")),fs=__importStar(require("fs")),path=__importStar(require("path")),codegraph_installer_1=require("../codegraph-installer"),home_dir_1=require("../home-dir"),gitignore_1=require("../gitignore"),init_install_scope_1=require("../init-install-scope"),kit_install_dispatch_1=require("../kit-install-dispatch"),profile_context_1=require("../kit-installers/profile-context"),install_manifest_1=require("../install-manifest"),install_registry_1=require("../install-registry"),kit_context_1=require("../kit-context"),kits_1=require("../kits"),kit_remover_1=require("../kit-remover"),kit_switch_confirm_1=require("../kit-switch-confirm"),kits_2=require("../kits"),install_profile_config_1=require("../install-profile-config"),skill_profiles_1=require("../skill-profiles"),profile_switch_confirm_1=require("../profile-switch-confirm"),logger_1=require("../logger"),ui_1=require("../ui"),init_global_plan_1=require("../init-global-plan"),claude_agents_1=require("../kit-installers/claude-agents"),init_args_1=require("../init-args");function resolveSourceRoot(){const n=process.env.AGENTKIT_SOURCE_ROOT;return n&&fs.existsSync(path.join(n,"package.json"))?n:path.resolve(__dirname,"..","..","..")}function recordInstall(n,t,o,i,e){try{(0,install_registry_1.upsertInstall)({path:o,kit:n,scope:t,kitRoot:i,...e?{version:e}:{}})}catch{}}const globalConfigDir=init_install_scope_1.kitDirWithinGlobalRoot;function stampKit(n,t){t&&(0,install_profile_config_1.stampInstallVersion)(n,t)}function planInstallProfile(n,t,o,i,e){const f=t||(0,init_install_scope_1.destHasSkillDirs)(o),u=(0,skill_profiles_1.resolveEffectiveProfile)(n,f,i.profile,e),c=f&&i.profile!==u;return{effectiveProfile:u,profileChanged:c,needsConfirm:n===null&&c}}function retainedExtraSkills(n,t,o){return n&&(!t||o.profile===null)?o.extraSkills:[]}async function runGlobalInstall(n,t,o,i,e=!1){const{repoRoot:f,targetDir:u,cliVersion:c}=o;let p;if(i){if(!(0,kits_2.supportsGlobalInstall)(i))return(0,logger_1.printError)(`${kits_2.kitDefinitions[i].name} does not support global install \u2014 it installs into a project checkout.`),1;p=[i]}else{const r=await(0,ui_1.selectKitsGlobal)();if(r===null)return(0,logger_1.printInfo)("Installation cancelled."),0;if(p=r.filter(kits_2.supportsGlobalInstall),p.length===0)return(0,logger_1.printInfo)("No kits selected \u2014 nothing to install."),0}const{plans:h,skipped:I}=await(0,init_global_plan_1.planGlobalInstalls)(p,u,{agentModelsFlag:t,skipRootPrompt:i!==void 0});if(h.length===0)return console.log(""),(0,logger_1.printInfo)("Nothing left to install."),0;const S=[],D=h.map(({kit:r,hermesProfile:a,agentModels:m,globalRoot:b})=>{const w=b??(0,init_install_scope_1.resolveGlobalRoot)(r,u,a),l=path.join(globalConfigDir(r,w),".agentkit.json"),g=fs.existsSync(l),k=(0,install_profile_config_1.readInstallSettings)(l),d=path.join(globalConfigDir(r,w),kit_context_1.KIT_GLOBAL_SKILLS_DIR[r]);return{kit:r,hermesProfile:a,agentModels:m,globalRoot:w,kitConfigPath:l,isUpdate:g,persisted:k,...planInstallProfile(n,g,d,k,r)}});for(const r of D){if(!r.needsConfirm)continue;const a=await(0,profile_switch_confirm_1.confirmProfileSwitch)({existingProfile:r.persisted.profile,newProfile:r.effectiveProfile,kitConfigPath:r.kitConfigPath,kitName:kits_2.kitDefinitions[r.kit].name,targetDir:r.globalRoot});if(!a.proceed)return(0,logger_1.printInfo)("Profile switch cancelled. Nothing was changed."),a.reason==="non-tty"?1:0}for(const{kit:r,agentModels:a,globalRoot:m,kitConfigPath:b,isUpdate:w,persisted:l,effectiveProfile:g,profileChanged:k}of D){const d=retainedExtraSkills(w,k,l),_=(0,kit_install_dispatch_1.installGlobalKit)(r,f,m,(0,skill_profiles_1.resolveSkipDirs)(f,g,d),{...r==="claude"?{agentModels:a}:{},...e?{allowSharedRoot:!0}:{},profileContext:(0,profile_context_1.buildProfileInstallContext)(f,g)});if(!_.ok)return(0,logger_1.printError)(_.reason),1;stampKit(b,c),(0,install_profile_config_1.writeInstallSettings)(b,{profile:g,extraSkills:d,...a?{agentModels:a}:{}}),recordInstall(r,"global",globalConfigDir(r,m),globalConfigDir(r,m),c),(0,logger_1.printInfo)(chalk_1.default.dim(`Install profile: ${g}`)),a&&(0,logger_1.printInfo)(chalk_1.default.dim(`Agent models: ${a}`)),await(0,codegraph_installer_1.maybeInstallCodegraph)(r,"global",u),(0,install_manifest_1.writeManifest)((0,kit_context_1.globalContext)(r),c),S.push(kits_2.kitDefinitions[r].name)}return console.log(""),S.length>0&&((0,logger_1.printSection)("Installation Complete"),(0,logger_1.printSuccess)(chalk_1.default.bold("\u2713")+" Installed globally: "+chalk_1.default.green(S.join(", "))),I.length>0&&(0,logger_1.printWarning)(`Skipped: ${I.join(", ")}`),console.log(""),(0,logger_1.printInfo)(chalk_1.default.dim("\u{1F4A1} Tip:")+" Read "+chalk_1.default.cyan.bold("README.md")+" for more information"),console.log("")),0}async function runInit(n,t={}){const o=t.sourceRoot??resolveSourceRoot(),i={repoRoot:o,targetDir:t.targetDir??process.cwd(),cliVersion:(0,install_profile_config_1.readCliVersion)(o),tty:t.isTTY??process.stdout.isTTY},{targetDir:e,cliVersion:f,tty:u}=i,c=n;(0,logger_1.printBanner)();const p=(0,init_args_1.parseKitFlag)(c);if(p.invalid)return(0,logger_1.printError)(`Unknown kit: "${p.invalid}".`),(0,logger_1.printInfo)(`Supported kits: ${kits_2.ALL_KIT_NAMES.join(", ")}.`),1;const h=p.kit,I=(0,init_args_1.parseProfileFlag)(c);if(I==="invalid")return(0,logger_1.printError)(`Unknown --profile value. Choose one of: ${skill_profiles_1.PROFILES.join(", ")}.`),1;const S=I==="prompt"?u?await(0,ui_1.selectProfile)():null:I,D=(0,init_args_1.parseAgentModelsFlag)(c);if(D==="invalid")return(0,logger_1.printError)(`Unknown --agent-models value. Choose one of: ${claude_agents_1.CLAUDE_AGENT_MODELS.join(", ")}.`),1;const r=D,a=(0,init_args_1.parseGlobalFlag)(c),m=(0,init_args_1.parseForceSharedRootFlag)(c);(0,ui_1.showMenu)(e);const b=(0,home_dir_1.isHomeDir)(e);if(a||b||h!==null&&kits_2.GLOBAL_ONLY_INSTALL_KITS.includes(h))return runGlobalInstall(S,r,i,h??void 0,m);const l=h??await(0,ui_1.selectKit)(e);if(!l||!(0,kits_2.isHostInstalled)(l)&&!await(0,ui_1.confirmUndetectedHost)(kits_2.kitDefinitions[l].name))return(0,logger_1.printInfo)("Installation cancelled."),0;if(!await(0,init_install_scope_1.confirmProjectInstallIfNeeded)(e))return(0,logger_1.printError)("Installation cancelled."),0;const k=kits_1.PROJECT_KITS.filter(s=>(0,init_install_scope_1.isKitInstalledInProject)(s,e)),d=k.includes(l),_=k.filter(s=>s!==l);if(d&&(console.log(""),(0,logger_1.printSection)("Update Mode"),(0,logger_1.printInfo)(chalk_1.default.bold("Updating")+" "+chalk_1.default.yellow.bold(kits_2.kitDefinitions[l].name)+" kit..."),console.log("")),_.length>0){console.log(""),(0,logger_1.printSection)("Switch Mode"),(0,logger_1.printWarning)(chalk_1.default.bold("Switching")+" from "+chalk_1.default.yellow(_.map(O=>kits_2.kitDefinitions[O].name).join(", "))+" to "+chalk_1.default.green.bold(kits_2.kitDefinitions[l].name)+"..."),(0,logger_1.printProgress)("A project holds one kit \u2014 removing the other(s) first..."),console.log("");const s=await(0,kit_switch_confirm_1.confirmKitSwitch)(_,l,e);if(!s.proceed)return s.reason==="declined"?((0,logger_1.printInfo)("Installation cancelled. Nothing was removed."),0):1}const P=path.join(e,kits_2.kitDefinitions[l].dir,".agentkit.json"),j=(0,install_profile_config_1.readInstallSettings)(P),{effectiveProfile:C,profileChanged:x,needsConfirm:M}=planInstallProfile(S,d,(0,kit_context_1.projectContext)(l,e).destSkillsDir,j,l);if(M){const s=await(0,profile_switch_confirm_1.confirmProfileSwitch)({existingProfile:j.profile,newProfile:C,kitConfigPath:P,kitName:kits_2.kitDefinitions[l].name,targetDir:e});if(!s.proceed)return(0,logger_1.printInfo)("Profile switch cancelled. Nothing was changed."),s.reason==="non-tty"?1:0}const y=retainedExtraSkills(d,x,j),E=(0,skill_profiles_1.resolveSkipDirs)(o,C,y),R=(0,gitignore_1.otherKitGitignoreEntries)(l);R.length>0&&((0,logger_1.printProgress)("Cleaning up .gitignore entries from other kits..."),(0,gitignore_1.cleanupGitignore)(R,e));for(const s of _)(0,logger_1.printProgress)(`Removing ${kits_2.kitDefinitions[s].name}...`),(0,kit_remover_1.removeKit)(s,e)?(0,logger_1.printSuccess)(`${kits_2.kitDefinitions[s].name} removed`):(0,logger_1.printWarning)(`Some files from ${kits_2.kitDefinitions[s].name} may not have been removed`);_.length>0&&console.log("");const v=l==="claude"?await(0,claude_agents_1.resolveClaudeAgentModelsForInstall)(r,j.agentModels,ui_1.selectClaudeAgentModels,u):void 0,q=(0,kit_install_dispatch_1.installProjectKit)(l,o,e,E,{...v?{agentModels:v}:{},profileContext:(0,profile_context_1.buildProfileInstallContext)(o,C)});return q.ok?(stampKit(P,f),recordInstall(l,"project",e,path.dirname(P),f),(0,install_profile_config_1.writeInstallSettings)(P,{profile:C,extraSkills:y,...v?{agentModels:v}:{}}),(0,logger_1.printInfo)(chalk_1.default.dim(`Install profile: ${C}`)),v&&(0,logger_1.printInfo)(chalk_1.default.dim(`Agent models: ${v}`)),(0,install_manifest_1.writeManifest)((0,kit_context_1.projectContext)(l,e),f),console.log(""),d?((0,logger_1.printSection)("Update Complete"),(0,logger_1.printSuccess)(chalk_1.default.bold("\u2713")+" "+kits_2.kitDefinitions[l].name+" updated successfully!")):((0,logger_1.printSection)("Installation Complete"),(0,logger_1.printSuccess)(chalk_1.default.bold("\u2713")+" "+kits_2.kitDefinitions[l].name+" installed successfully!")),await(0,codegraph_installer_1.maybeInstallCodegraph)(l,"project",e),console.log(""),(0,logger_1.printInfo)(chalk_1.default.dim("\u{1F4A1} Tip:")+" Read "+chalk_1.default.cyan.bold("README.md")+" for more information"),console.log(""),0):((0,logger_1.printError)(q.reason),1)}
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(n,t,o,i){i===void 0&&(i=o);var e=Object.getOwnPropertyDescriptor(t,o);(!e||("get"in e?!t.__esModule:e.writable||e.configurable))&&(e={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(n,i,e)}):(function(n,t,o,i){i===void 0&&(i=o),n[i]=t[o]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(n,t){Object.defineProperty(n,"default",{enumerable:!0,value:t})}):function(n,t){n.default=t}),__importStar=this&&this.__importStar||(function(){var n=function(t){return n=Object.getOwnPropertyNames||function(o){var i=[];for(var e in o)Object.prototype.hasOwnProperty.call(o,e)&&(i[i.length]=e);return i},n(t)};return function(t){if(t&&t.__esModule)return t;var o={};if(t!=null)for(var i=n(t),e=0;e<i.length;e++)i[e]!=="default"&&__createBinding(o,t,i[e]);return __setModuleDefault(o,t),o}})(),__importDefault=this&&this.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.runInit=runInit;const chalk_1=__importDefault(require("chalk")),fs=__importStar(require("fs")),path=__importStar(require("path")),codegraph_installer_1=require("../codegraph-installer"),home_dir_1=require("../home-dir"),gitignore_1=require("../gitignore"),init_install_scope_1=require("../init-install-scope"),kit_install_dispatch_1=require("../kit-install-dispatch"),profile_context_1=require("../kit-installers/profile-context"),install_manifest_1=require("../install-manifest"),install_registry_1=require("../install-registry"),kit_context_1=require("../kit-context"),kits_1=require("../kits"),kit_remover_1=require("../kit-remover"),kit_switch_confirm_1=require("../kit-switch-confirm"),kits_2=require("../kits"),install_profile_config_1=require("../install-profile-config"),skill_profiles_1=require("../skill-profiles"),profile_switch_confirm_1=require("../profile-switch-confirm"),logger_1=require("../logger"),ui_1=require("../ui"),init_global_plan_1=require("../init-global-plan"),claude_agents_1=require("../kit-installers/claude-agents"),init_args_1=require("../init-args");function resolveSourceRoot(){const n=process.env.AGENTKIT_SOURCE_ROOT;return n&&fs.existsSync(path.join(n,"package.json"))?n:path.resolve(__dirname,"..","..","..")}function recordInstall(n,t,o,i,e){try{(0,install_registry_1.upsertInstall)({path:o,kit:n,scope:t,kitRoot:i,...e?{version:e}:{}})}catch{}}const globalConfigDir=init_install_scope_1.kitDirWithinGlobalRoot;function stampKit(n,t){t&&(0,install_profile_config_1.stampInstallVersion)(n,t)}function planInstallProfile(n,t,o,i,e){const f=t||(0,init_install_scope_1.destHasSkillDirs)(o),d=(0,skill_profiles_1.resolveEffectiveProfile)(n,f,i.profile,e),c=f&&i.profile!==d;return{effectiveProfile:d,profileChanged:c,needsConfirm:n===null&&c}}function retainedExtraSkills(n,t,o){return n&&(!t||o.profile===null)?o.extraSkills:[]}async function runGlobalInstall(n,t,o,i,e=!1){const{repoRoot:f,targetDir:d,cliVersion:c}=o;let p;if(i){if(!(0,kits_2.supportsGlobalInstall)(i))return(0,logger_1.printError)(`${kits_2.kitDefinitions[i].name} does not support global install \u2014 it installs into a project checkout.`),1;p=[i]}else{const r=await(0,ui_1.selectKitsGlobal)();if(r===null)return(0,logger_1.printInfo)("Installation cancelled."),0;if(p=r.filter(kits_2.supportsGlobalInstall),p.length===0)return(0,logger_1.printInfo)("No kits selected \u2014 nothing to install."),0}const{plans:h,skipped:I}=await(0,init_global_plan_1.planGlobalInstalls)(p,d,{agentModelsFlag:t,skipRootPrompt:i!==void 0});if(h.length===0)return console.log(""),(0,logger_1.printInfo)("Nothing left to install."),0;const S=[],D=h.map(({kit:r,hermesProfile:a,agentModels:m,globalRoot:b})=>{const w=b??(0,init_install_scope_1.resolveGlobalRoot)(r,d,a),l=path.join(globalConfigDir(r,w),".agentkit.json"),g=fs.existsSync(l),k=(0,install_profile_config_1.readInstallSettings)(l),u=path.join(globalConfigDir(r,w),kit_context_1.KIT_GLOBAL_SKILLS_DIR[r]);return{kit:r,hermesProfile:a,agentModels:m,globalRoot:w,kitConfigPath:l,isUpdate:g,persisted:k,...planInstallProfile(n,g,u,k,r)}});for(const r of D){if(!r.needsConfirm)continue;const a=await(0,profile_switch_confirm_1.confirmProfileSwitch)({existingProfile:r.persisted.profile,newProfile:r.effectiveProfile,kitConfigPath:r.kitConfigPath,kitName:kits_2.kitDefinitions[r.kit].name,targetDir:r.globalRoot});if(!a.proceed)return(0,logger_1.printInfo)("Profile switch cancelled. Nothing was changed."),a.reason==="non-tty"?1:0}for(const{kit:r,agentModels:a,globalRoot:m,kitConfigPath:b,isUpdate:w,persisted:l,effectiveProfile:g,profileChanged:k}of D){const u=retainedExtraSkills(w,k,l),_=(0,kit_install_dispatch_1.installGlobalKit)(r,f,m,(0,skill_profiles_1.resolveSkipDirs)(f,g,u),{...r==="claude"?{agentModels:a}:{},...e?{allowSharedRoot:!0}:{},profileContext:(0,profile_context_1.buildProfileInstallContext)(f,g,u)});if(!_.ok)return(0,logger_1.printError)(_.reason),1;stampKit(b,c),(0,install_profile_config_1.writeInstallSettings)(b,{profile:g,extraSkills:u,...a?{agentModels:a}:{}}),recordInstall(r,"global",globalConfigDir(r,m),globalConfigDir(r,m),c),(0,logger_1.printInfo)(chalk_1.default.dim(`Install profile: ${g}`)),a&&(0,logger_1.printInfo)(chalk_1.default.dim(`Agent models: ${a}`)),await(0,codegraph_installer_1.maybeInstallCodegraph)(r,"global",d),(0,install_manifest_1.writeManifest)((0,kit_context_1.globalContext)(r),c),S.push(kits_2.kitDefinitions[r].name)}return console.log(""),S.length>0&&((0,logger_1.printSection)("Installation Complete"),(0,logger_1.printSuccess)(chalk_1.default.bold("\u2713")+" Installed globally: "+chalk_1.default.green(S.join(", "))),I.length>0&&(0,logger_1.printWarning)(`Skipped: ${I.join(", ")}`),console.log(""),(0,logger_1.printInfo)(chalk_1.default.dim("\u{1F4A1} Tip:")+" Read "+chalk_1.default.cyan.bold("README.md")+" for more information"),console.log("")),0}async function runInit(n,t={}){const o=t.sourceRoot??resolveSourceRoot(),i={repoRoot:o,targetDir:t.targetDir??process.cwd(),cliVersion:(0,install_profile_config_1.readCliVersion)(o),tty:t.isTTY??process.stdout.isTTY},{targetDir:e,cliVersion:f,tty:d}=i,c=n;(0,logger_1.printBanner)();const p=(0,init_args_1.parseKitFlag)(c);if(p.invalid)return(0,logger_1.printError)(`Unknown kit: "${p.invalid}".`),(0,logger_1.printInfo)(`Supported kits: ${kits_2.ALL_KIT_NAMES.join(", ")}.`),1;const h=p.kit,I=(0,init_args_1.parseProfileFlag)(c);if(I==="invalid")return(0,logger_1.printError)(`Unknown --profile value. Choose one of: ${skill_profiles_1.PROFILES.join(", ")}.`),1;const S=I==="prompt"?d?await(0,ui_1.selectProfile)():null:I,D=(0,init_args_1.parseAgentModelsFlag)(c);if(D==="invalid")return(0,logger_1.printError)(`Unknown --agent-models value. Choose one of: ${claude_agents_1.CLAUDE_AGENT_MODELS.join(", ")}.`),1;const r=D,a=(0,init_args_1.parseGlobalFlag)(c),m=(0,init_args_1.parseForceSharedRootFlag)(c);(0,ui_1.showMenu)(e);const b=(0,home_dir_1.isHomeDir)(e);if(a||b||h!==null&&kits_2.GLOBAL_ONLY_INSTALL_KITS.includes(h))return runGlobalInstall(S,r,i,h??void 0,m);const l=h??await(0,ui_1.selectKit)(e);if(!l||!(0,kits_2.isHostInstalled)(l)&&!await(0,ui_1.confirmUndetectedHost)(kits_2.kitDefinitions[l].name))return(0,logger_1.printInfo)("Installation cancelled."),0;if(!await(0,init_install_scope_1.confirmProjectInstallIfNeeded)(e))return(0,logger_1.printError)("Installation cancelled."),0;const k=kits_1.PROJECT_KITS.filter(s=>(0,init_install_scope_1.isKitInstalledInProject)(s,e)),u=k.includes(l),_=k.filter(s=>s!==l);if(u&&(console.log(""),(0,logger_1.printSection)("Update Mode"),(0,logger_1.printInfo)(chalk_1.default.bold("Updating")+" "+chalk_1.default.yellow.bold(kits_2.kitDefinitions[l].name)+" kit..."),console.log("")),_.length>0){console.log(""),(0,logger_1.printSection)("Switch Mode"),(0,logger_1.printWarning)(chalk_1.default.bold("Switching")+" from "+chalk_1.default.yellow(_.map(O=>kits_2.kitDefinitions[O].name).join(", "))+" to "+chalk_1.default.green.bold(kits_2.kitDefinitions[l].name)+"..."),(0,logger_1.printProgress)("A project holds one kit \u2014 removing the other(s) first..."),console.log("");const s=await(0,kit_switch_confirm_1.confirmKitSwitch)(_,l,e);if(!s.proceed)return s.reason==="declined"?((0,logger_1.printInfo)("Installation cancelled. Nothing was removed."),0):1}const P=path.join(e,kits_2.kitDefinitions[l].dir,".agentkit.json"),j=(0,install_profile_config_1.readInstallSettings)(P),{effectiveProfile:C,profileChanged:x,needsConfirm:M}=planInstallProfile(S,u,(0,kit_context_1.projectContext)(l,e).destSkillsDir,j,l);if(M){const s=await(0,profile_switch_confirm_1.confirmProfileSwitch)({existingProfile:j.profile,newProfile:C,kitConfigPath:P,kitName:kits_2.kitDefinitions[l].name,targetDir:e});if(!s.proceed)return(0,logger_1.printInfo)("Profile switch cancelled. Nothing was changed."),s.reason==="non-tty"?1:0}const y=retainedExtraSkills(u,x,j),E=(0,skill_profiles_1.resolveSkipDirs)(o,C,y),R=(0,gitignore_1.otherKitGitignoreEntries)(l);R.length>0&&((0,logger_1.printProgress)("Cleaning up .gitignore entries from other kits..."),(0,gitignore_1.cleanupGitignore)(R,e));for(const s of _)(0,logger_1.printProgress)(`Removing ${kits_2.kitDefinitions[s].name}...`),(0,kit_remover_1.removeKit)(s,e)?(0,logger_1.printSuccess)(`${kits_2.kitDefinitions[s].name} removed`):(0,logger_1.printWarning)(`Some files from ${kits_2.kitDefinitions[s].name} may not have been removed`);_.length>0&&console.log("");const v=l==="claude"?await(0,claude_agents_1.resolveClaudeAgentModelsForInstall)(r,j.agentModels,ui_1.selectClaudeAgentModels,d):void 0,q=(0,kit_install_dispatch_1.installProjectKit)(l,o,e,E,{...v?{agentModels:v}:{},profileContext:(0,profile_context_1.buildProfileInstallContext)(o,C,y)});return q.ok?(stampKit(P,f),recordInstall(l,"project",e,path.dirname(P),f),(0,install_profile_config_1.writeInstallSettings)(P,{profile:C,extraSkills:y,...v?{agentModels:v}:{}}),(0,logger_1.printInfo)(chalk_1.default.dim(`Install profile: ${C}`)),v&&(0,logger_1.printInfo)(chalk_1.default.dim(`Agent models: ${v}`)),(0,install_manifest_1.writeManifest)((0,kit_context_1.projectContext)(l,e),f),console.log(""),u?((0,logger_1.printSection)("Update Complete"),(0,logger_1.printSuccess)(chalk_1.default.bold("\u2713")+" "+kits_2.kitDefinitions[l].name+" updated successfully!")):((0,logger_1.printSection)("Installation Complete"),(0,logger_1.printSuccess)(chalk_1.default.bold("\u2713")+" "+kits_2.kitDefinitions[l].name+" installed successfully!")),await(0,codegraph_installer_1.maybeInstallCodegraph)(l,"project",e),console.log(""),(0,logger_1.printInfo)(chalk_1.default.dim("\u{1F4A1} Tip:")+" Read "+chalk_1.default.cyan.bold("README.md")+" for more information"),console.log(""),0):((0,logger_1.printError)(q.reason),1)}
@@ -1 +1 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,e,i,n){n===void 0&&(n=i);var o=Object.getOwnPropertyDescriptor(e,i);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[i]}}),Object.defineProperty(t,n,o)}):(function(t,e,i,n){n===void 0&&(n=i),t[n]=e[i]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),__importStar=this&&this.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(i){var n=[];for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[n.length]=o);return n},t(e)};return function(e){if(e&&e.__esModule)return e;var i={};if(e!=null)for(var n=t(e),o=0;o<n.length;o++)n[o]!=="default"&&__createBinding(i,e,n[o]);return __setModuleDefault(i,e),i}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.GLOBAL_KITS=exports.KIT_GLOBAL_SKILLS_DIR=exports.KIT_SKILLS_DIR=void 0,exports.globalBaseDir=globalBaseDir,exports.projectContext=projectContext,exports.globalContext=globalContext,exports.candidateContexts=candidateContexts,exports.soleContext=soleContext,exports.resolveContext=resolveContext;const path=__importStar(require("path")),p=__importStar(require("@clack/prompts")),init_install_scope_1=require("./init-install-scope"),kits_1=require("./kits"),home_dir_1=require("./home-dir"),logger_1=require("./logger");exports.KIT_SKILLS_DIR={claude:path.join(".claude","skills"),augment:path.join(".claude","skills"),cursor:path.join(".cursor","skills"),opencode:path.join(".opencode","skills"),antigravity:path.join(".agents","skills"),codex:path.join(".agents","skills"),kimi:path.join(".kimi-code","skills"),hermes:path.join(".hermes-kit","skills","agentkit"),openclaw:path.join(".openclaw-kit","skills"),omp:path.join(".omp","agentkit","skills"),grok:path.join(".grok","skills"),pi:path.join(".pi","agentkit","skills"),devin:path.join(".devin","skills")},exports.KIT_GLOBAL_SKILLS_DIR={claude:"skills",augment:"skills",cursor:"skills",opencode:"skills",antigravity:"skills",codex:"skills",kimi:"skills",hermes:path.join("skills","agentkit"),openclaw:"skills",omp:"skills",grok:"skills",pi:"skills",devin:"skills"},exports.GLOBAL_KITS=["claude","opencode","cursor","antigravity","codex","kimi","hermes","openclaw","omp","grok","pi","devin"];function globalBaseDir(t){return(0,init_install_scope_1.kitDirWithinGlobalRoot)(t,(0,init_install_scope_1.resolveGlobalRoot)(t,""))}function projectContext(t,e){const i=path.join(e,kits_1.kitDefinitions[t].dir);return{kit:t,scope:"project",kitRoot:i,destSkillsDir:path.join(e,exports.KIT_SKILLS_DIR[t]),configPath:path.join(i,".agentkit.json")}}function globalContext(t){const e=globalBaseDir(t);return{kit:t,scope:"global",kitRoot:e,destSkillsDir:path.join(e,exports.KIT_GLOBAL_SKILLS_DIR[t]),configPath:path.join(e,".agentkit.json")}}function candidateContexts(t){if(!(0,home_dir_1.isHomeDir)(t)){const i=exports.GLOBAL_KITS.filter(n=>(0,init_install_scope_1.isKitInstalledInProject)(n,t));if(i.length>0)return i.map(n=>projectContext(n,t))}return exports.GLOBAL_KITS.filter(i=>(0,init_install_scope_1.isKitInstalledGlobally)(i)).map(globalContext)}function soleContext(t){const e=candidateContexts(t);return e.length===1?e[0]:null}async function resolveContext(t,e={}){const i=candidateContexts(t);if(i.length===0)return(0,logger_1.printError)("No AgentKit install detected. Run `agentkit init` first."),null;if(i.length===1)return i[0];if(!process.stdout.isTTY)return(0,logger_1.printError)(`Multiple kits installed: ${i.map(o=>o.kit).join(", ")}.`),(0,logger_1.printInfo)(e.nonTtyHint??"Pick one with `agentkit skills` in a terminal, or cd into a project."),null;const n=await p.select({message:e.promptMessage??"Which kit to add skills to?",options:i.map(o=>({value:o.kit,label:`${kits_1.kitDefinitions[o.kit].name} (${o.scope})`}))});return p.isCancel(n)?null:i.find(o=>o.kit===n)??null}
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,e,i,n){n===void 0&&(n=i);var o=Object.getOwnPropertyDescriptor(e,i);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[i]}}),Object.defineProperty(t,n,o)}):(function(t,e,i,n){n===void 0&&(n=i),t[n]=e[i]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),__importStar=this&&this.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(i){var n=[];for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[n.length]=o);return n},t(e)};return function(e){if(e&&e.__esModule)return e;var i={};if(e!=null)for(var n=t(e),o=0;o<n.length;o++)n[o]!=="default"&&__createBinding(i,e,n[o]);return __setModuleDefault(i,e),i}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.GLOBAL_KITS=exports.KIT_GLOBAL_SKILLS_DIR=exports.KIT_SKILLS_DIR=void 0,exports.globalBaseDir=globalBaseDir,exports.projectContext=projectContext,exports.globalContext=globalContext,exports.candidateContexts=candidateContexts,exports.soleContext=soleContext,exports.resolveContext=resolveContext;const path=__importStar(require("path")),p=__importStar(require("@clack/prompts")),init_install_scope_1=require("./init-install-scope"),kits_1=require("./kits"),home_dir_1=require("./home-dir"),logger_1=require("./logger");exports.KIT_SKILLS_DIR={claude:path.join(".claude","skills"),augment:path.join(".claude","skills"),cursor:path.join(".agents","skills"),opencode:path.join(".agents","skills"),antigravity:path.join(".agents","skills"),codex:path.join(".agents","skills"),kimi:path.join(".agents","skills"),hermes:path.join(".hermes-kit","skills","agentkit"),openclaw:path.join(".openclaw-kit","skills"),omp:path.join(".omp","agentkit","skills"),grok:path.join(".agents","skills"),pi:path.join(".pi","agentkit","skills"),devin:path.join(".agents","skills")},exports.KIT_GLOBAL_SKILLS_DIR={claude:"skills",augment:"skills",cursor:"skills",opencode:"skills",antigravity:"skills",codex:"skills",kimi:"skills",hermes:path.join("skills","agentkit"),openclaw:"skills",omp:"skills",grok:"skills",pi:"skills",devin:"skills"},exports.GLOBAL_KITS=["claude","opencode","cursor","antigravity","codex","kimi","hermes","openclaw","omp","grok","pi","devin"];function globalBaseDir(t){return(0,init_install_scope_1.kitDirWithinGlobalRoot)(t,(0,init_install_scope_1.resolveGlobalRoot)(t,""))}function projectContext(t,e){const i=path.join(e,kits_1.kitDefinitions[t].dir);return{kit:t,scope:"project",kitRoot:i,destSkillsDir:path.join(e,exports.KIT_SKILLS_DIR[t]),configPath:path.join(i,".agentkit.json")}}function globalContext(t){const e=globalBaseDir(t);return{kit:t,scope:"global",kitRoot:e,destSkillsDir:path.join(e,exports.KIT_GLOBAL_SKILLS_DIR[t]),configPath:path.join(e,".agentkit.json")}}function candidateContexts(t){if(!(0,home_dir_1.isHomeDir)(t)){const i=exports.GLOBAL_KITS.filter(n=>(0,init_install_scope_1.isKitInstalledInProject)(n,t));if(i.length>0)return i.map(n=>projectContext(n,t))}return exports.GLOBAL_KITS.filter(i=>(0,init_install_scope_1.isKitInstalledGlobally)(i)).map(globalContext)}function soleContext(t){const e=candidateContexts(t);return e.length===1?e[0]:null}async function resolveContext(t,e={}){const i=candidateContexts(t);if(i.length===0)return(0,logger_1.printError)("No AgentKit install detected. Run `agentkit init` first."),null;if(i.length===1)return i[0];if(!process.stdout.isTTY)return(0,logger_1.printError)(`Multiple kits installed: ${i.map(o=>o.kit).join(", ")}.`),(0,logger_1.printInfo)(e.nonTtyHint??"Pick one with `agentkit skills` in a terminal, or cd into a project."),null;const n=await p.select({message:e.promptMessage??"Which kit to add skills to?",options:i.map(o=>({value:o.kit,label:`${kits_1.kitDefinitions[o.kit].name} (${o.scope})`}))});return p.isCancel(n)?null:i.find(o=>o.kit===n)??null}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PROJECT_ONLY_INSTALL_KITS=void 0,exports.installProjectKit=installProjectKit,exports.installGlobalKit=installGlobalKit;const kit_installers_1=require("./kit-installers"),claude_agents_1=require("./kit-installers/claude-agents"),init_install_scope_1=require("./init-install-scope"),profile_context_1=require("./kit-installers/profile-context");var kits_1=require("./kits");Object.defineProperty(exports,"PROJECT_ONLY_INSTALL_KITS",{enumerable:!0,get:function(){return kits_1.PROJECT_ONLY_INSTALL_KITS}});const KIT_DESCRIPTORS={claude:{project:o=>(0,kit_installers_1.installClaude)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.agentModels,o.profile),global:o=>(0,kit_installers_1.installClaudeGlobal)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.agentModels,o.profile)},opencode:{project:o=>(0,kit_installers_1.installOpenCode)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile),global:o=>(0,kit_installers_1.installOpenCodeGlobal)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile)},cursor:{project:o=>(0,kit_installers_1.installCursor)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile),global:o=>(0,kit_installers_1.installCursorGlobal)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile)},antigravity:{project:o=>(0,kit_installers_1.installAntigravity)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile),global:o=>(0,kit_installers_1.installAntigravityGlobal)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile)},codex:{project:o=>(0,kit_installers_1.installCodex)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile),global:o=>(0,kit_installers_1.installCodexGlobal)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile)},kimi:{project:o=>(0,kit_installers_1.installKimi)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile),global:o=>(0,kit_installers_1.installKimiGlobal)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile)},grok:{project:o=>(0,kit_installers_1.installGrok)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile),global:o=>(0,kit_installers_1.installGrokGlobal)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile)},hermes:{projectRefusal:"Hermes Agent installs into a profile under ~/.hermes, not into a project. Run `agentkit init` from your home directory.",global:o=>(0,kit_installers_1.installHermesGlobal)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile)},openclaw:{projectRefusal:"OpenClaw installs into its state root at ~/.openclaw, not into a project. Run `agentkit init` from your home directory.",global:o=>(0,kit_installers_1.installOpenClawGlobal)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile)},omp:{projectRefusal:"Oh My Pi installs into its agent directory at ~/.omp/agent, not into a project. Run `agentkit init` from your home directory.",global:o=>(0,kit_installers_1.installOmpGlobal)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile)},augment:{project:o=>(0,kit_installers_1.installAugment)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile)},pi:{project:o=>(0,kit_installers_1.installPi)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile),global:o=>(0,kit_installers_1.installPiGlobal)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile)},devin:{project:o=>(0,kit_installers_1.installDevin)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile),global:o=>(0,kit_installers_1.installDevinGlobal)(o.repoRoot,o.targetDir,o.profileSkipDirs,o.profile)}};function buildContext(o,i,l,e){return{repoRoot:o,targetDir:i,profileSkipDirs:l,profile:e.profileContext??profile_context_1.EMPTY_PROFILE_CONTEXT,agentModels:e.agentModels??claude_agents_1.DEFAULT_CLAUDE_AGENT_MODELS}}function installProjectKit(o,i,l,e,a={}){const r=KIT_DESCRIPTORS[o],t=r.project;return t?(t(buildContext(i,l,e,a)),{ok:!0}):{ok:!1,reason:r.projectRefusal??`No project installer for ${o}.`}}function installGlobalKit(o,i,l,e,a={}){const r=(0,init_install_scope_1.sharedRootConflict)(o);if(r&&!a.allowSharedRoot)return{ok:!1,reason:`${r.dir} already holds an ${r.other} install. Pi and ${r.other} both read ${r.envVar}, so they resolve to this same root and would overwrite each other's payload and marker. Unset ${r.envVar} to install into the default directory, or re-run with --force-shared-root to install here anyway.`};const t=KIT_DESCRIPTORS[o].global;return t?(t(buildContext(i,l,e,a)),{ok:!0}):{ok:!1,reason:"Global install is only supported for Claude, OpenCode, Antigravity, Codex, Cursor, Kimi Code, Hermes, OpenClaw, Oh My Pi, Grok Build, Pi and Devin CLI."}}
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(e,r,t,o){o===void 0&&(o=t);var i=Object.getOwnPropertyDescriptor(r,t);(!i||("get"in i?!r.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,i)}):(function(e,r,t,o){o===void 0&&(o=t),e[o]=r[t]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}):function(e,r){e.default=r}),__importStar=this&&this.__importStar||(function(){var e=function(r){return e=Object.getOwnPropertyNames||function(t){var o=[];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(o[o.length]=i);return o},e(r)};return function(r){if(r&&r.__esModule)return r;var t={};if(r!=null)for(var o=e(r),i=0;i<o.length;i++)o[i]!=="default"&&__createBinding(t,r,o[i]);return __setModuleDefault(t,r),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.PROJECT_ONLY_INSTALL_KITS=void 0,exports.installProjectKit=installProjectKit,exports.installGlobalKit=installGlobalKit;const path=__importStar(require("path")),kit_installers_1=require("./kit-installers"),claude_agents_1=require("./kit-installers/claude-agents"),init_install_scope_1=require("./init-install-scope"),shared_1=require("./kit-installers/shared"),kits_1=require("./kits"),logger_1=require("./logger"),agentkit_config_file_1=require("./agentkit-config-file"),profile_context_1=require("./kit-installers/profile-context");var kits_2=require("./kits");Object.defineProperty(exports,"PROJECT_ONLY_INSTALL_KITS",{enumerable:!0,get:function(){return kits_2.PROJECT_ONLY_INSTALL_KITS}});const KIT_DESCRIPTORS={claude:{project:e=>(0,kit_installers_1.installClaude)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.agentModels,e.profile),global:e=>(0,kit_installers_1.installClaudeGlobal)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.agentModels,e.profile)},opencode:{project:e=>(0,kit_installers_1.installOpenCode)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile),global:e=>(0,kit_installers_1.installOpenCodeGlobal)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile)},cursor:{project:e=>(0,kit_installers_1.installCursor)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile),global:e=>(0,kit_installers_1.installCursorGlobal)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile)},antigravity:{project:e=>(0,kit_installers_1.installAntigravity)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile),global:e=>(0,kit_installers_1.installAntigravityGlobal)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile)},codex:{project:e=>(0,kit_installers_1.installCodex)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile),global:e=>(0,kit_installers_1.installCodexGlobal)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile)},kimi:{project:e=>(0,kit_installers_1.installKimi)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile),global:e=>(0,kit_installers_1.installKimiGlobal)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile)},grok:{project:e=>(0,kit_installers_1.installGrok)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile),global:e=>(0,kit_installers_1.installGrokGlobal)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile)},hermes:{projectRefusal:"Hermes Agent installs into a profile under ~/.hermes, not into a project. Run `agentkit init` from your home directory.",global:e=>(0,kit_installers_1.installHermesGlobal)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile)},openclaw:{projectRefusal:"OpenClaw installs into its state root at ~/.openclaw, not into a project. Run `agentkit init` from your home directory.",global:e=>(0,kit_installers_1.installOpenClawGlobal)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile)},omp:{projectRefusal:"Oh My Pi installs into its agent directory at ~/.omp/agent, not into a project. Run `agentkit init` from your home directory.",global:e=>(0,kit_installers_1.installOmpGlobal)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile)},augment:{project:e=>(0,kit_installers_1.installAugment)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile)},pi:{project:e=>(0,kit_installers_1.installPi)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile),global:e=>(0,kit_installers_1.installPiGlobal)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile)},devin:{project:e=>(0,kit_installers_1.installDevin)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile),global:e=>(0,kit_installers_1.installDevinGlobal)(e.repoRoot,e.targetDir,e.profileSkipDirs,e.profile)}},MARKER_TEMPLATE_KIT={claude:"claude",augment:"claude",cursor:"claude",antigravity:"claude",codex:"claude",grok:"claude",devin:"claude",opencode:"opencode",kimi:"kimi",hermes:"hermes",openclaw:"openclaw",omp:"omp",pi:"pi"};function installPreservingMarker(e,r,t,o){const i=path.join(o,".agentkit.json"),l=(0,agentkit_config_file_1.readKitConfig)(i);try{t(r)}finally{try{(0,agentkit_config_file_1.mergePreservedKitConfig)(i,l)}catch(a){(0,logger_1.printWarning)(`Could not restore ${i}: ${a.message}`)}}let n=[];try{n=(0,shared_1.refreshKitOwnedConfig)(r.repoRoot,MARKER_TEMPLATE_KIT[e],o)}catch(a){(0,logger_1.printWarning)(`Could not refresh kit-owned config in ${i}: ${a.message}`)}n.length>0&&(0,logger_1.printInfo)(`Updated kit-owned config keys: ${n.join(", ")}`)}function buildContext(e,r,t,o){return{repoRoot:e,targetDir:r,profileSkipDirs:t,profile:o.profileContext??profile_context_1.EMPTY_PROFILE_CONTEXT,agentModels:o.agentModels??claude_agents_1.DEFAULT_CLAUDE_AGENT_MODELS}}function installProjectKit(e,r,t,o,i={}){const l=KIT_DESCRIPTORS[e],n=l.project;return n?(installPreservingMarker(e,buildContext(r,t,o,i),n,path.join(t,kits_1.kitDefinitions[e].dir)),{ok:!0}):{ok:!1,reason:l.projectRefusal??`No project installer for ${e}.`}}function installGlobalKit(e,r,t,o,i={}){const l=(0,init_install_scope_1.sharedRootConflict)(e);if(l&&!i.allowSharedRoot)return{ok:!1,reason:`${l.dir} already holds an ${l.other} install. Pi and ${l.other} both read ${l.envVar}, so they resolve to this same root and would overwrite each other's payload and marker. Unset ${l.envVar} to install into the default directory, or re-run with --force-shared-root to install here anyway.`};const n=KIT_DESCRIPTORS[e].global;return n?(installPreservingMarker(e,buildContext(r,t,o,i),n,(0,init_install_scope_1.kitDirWithinGlobalRoot)(e,t)),{ok:!0}):{ok:!1,reason:"Global install is only supported for Claude, OpenCode, Antigravity, Codex, Cursor, Kimi Code, Hermes, OpenClaw, Oh My Pi, Grok Build, Pi and Devin CLI."}}
@@ -1 +1 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(o,e,s,i){i===void 0&&(i=s);var n=Object.getOwnPropertyDescriptor(e,s);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[s]}}),Object.defineProperty(o,i,n)}):(function(o,e,s,i){i===void 0&&(i=s),o[i]=e[s]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(o,e){Object.defineProperty(o,"default",{enumerable:!0,value:e})}):function(o,e){o.default=e}),__importStar=this&&this.__importStar||(function(){var o=function(e){return o=Object.getOwnPropertyNames||function(s){var i=[];for(var n in s)Object.prototype.hasOwnProperty.call(s,n)&&(i[i.length]=n);return i},o(e)};return function(e){if(e&&e.__esModule)return e;var s={};if(e!=null)for(var i=o(e),n=0;n<i.length;n++)i[n]!=="default"&&__createBinding(s,e,i[n]);return __setModuleDefault(s,e),s}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.kitRemovalPaths=kitRemovalPaths,exports.removePiExtras=removePiExtras,exports.removeKit=removeKit;const fs=__importStar(require("fs")),path=__importStar(require("path")),kits_1=require("./kits"),file_operations_1=require("./file-operations"),package_root_1=require("./package-root"),gitignore_1=require("./gitignore"),logger_1=require("./logger"),codex_agents_1=require("./codex-agents"),claude_instructions_1=require("./claude-instructions"),kimi_hooks_toml_1=require("./kit-installers/kimi-hooks-toml"),kimi_1=require("./kit-installers/kimi"),omp_managed_1=require("./kit-installers/omp-managed"),pi_config_json_1=require("./kit-installers/pi-config-json"),pi_packages_1=require("./kit-installers/pi-packages"),devin_hooks_1=require("./kit-installers/devin-hooks"),devin_rules_1=require("./kit-installers/devin-rules"),devin_agents_1=require("./kit-installers/devin-agents"),commands_to_skills_1=require("./kit-installers/commands-to-skills"),retired_skills_1=require("./retired-skills"),dropped_mcp_servers_1=require("./dropped-mcp-servers"),pi_home_1=require("./pi-home"),context_mode_remover_1=require("./context-mode-remover"),install_manifest_1=require("./install-manifest"),payload_roots_1=require("./payload-roots");function isFileClaimedByOtherKit(o,e,s,i=[]){return Object.entries(kits_1.kitDefinitions).some(([n,t])=>n!==e&&(t.files.includes(o)||(t.claims??[]).includes(o))&&!i.includes(t.dir)&&fs.existsSync(path.join(s,t.dir)))}function kitRemovalPaths(o,e){const s=kits_1.kitDefinitions[o];if(!s)return[];const i=[],n=t=>{i.includes(t)||i.push(t)};fs.existsSync(path.join(e,s.dir))&&n(`${s.dir}/`);for(const t of s.files)fs.existsSync(path.join(e,t))&&!isFileClaimedByOtherKit(t,o,e,[s.dir])&&n(t);if(o==="claude"){const t=path.join(e,"AGENTS.md");if(fs.existsSync(t))try{(0,claude_instructions_1.hasAikitClaudeBlock)(fs.readFileSync(t,"utf-8"))&&n("AGENTS.md")}catch{}const r=path.join(e,"CLAUDE.md");if(fs.existsSync(r))try{(0,claude_instructions_1.stripAikitClaudeBlock)(fs.readFileSync(r,"utf-8")).removedWholeFile&&n("CLAUDE.md")}catch{}}if(o==="codex"){fs.existsSync(path.join(e,".agents"))&&n(".agents/");const t=path.join(e,"AGENTS.md");if(fs.existsSync(t))try{(0,codex_agents_1.hasAikitCodexBlock)(fs.readFileSync(t,"utf-8"))&&n("AGENTS.md")}catch{}}if(o==="kimi"){const t=path.join(e,"AGENTS.md");if(fs.existsSync(t))try{(0,codex_agents_1.hasAikitCodexBlock)(fs.readFileSync(t,"utf-8"))&&n("AGENTS.md")}catch{}}if(o==="hermes"){const t=path.join(e,"AGENTS.md");if(fs.existsSync(t))try{(0,codex_agents_1.hasAikitCodexBlock)(fs.readFileSync(t,"utf-8"))&&n("AGENTS.md")}catch{}}if(o==="devin"){const t=path.join(e,"AGENTS.md");if(fs.existsSync(t))try{(0,codex_agents_1.hasAikitCodexBlock)(fs.readFileSync(t,"utf-8"))&&n("AGENTS.md")}catch{}const r=i.indexOf(`${s.dir}/`);r>=0&&i.splice(r,1);for(const c of["hooks","scripts","schemas"])fs.existsSync(path.join(e,s.dir,c))&&n(`${s.dir}/${c}/`);for(const c of(0,devin_rules_1.devinOwnedRuleNames)(path.join(e,s.dir,"rules")))n(`${s.dir}/rules/${c}`);for(const c of(0,devin_agents_1.devinOwnedAgentNames)(path.join(e,s.dir,"agents")))n(`${s.dir}/agents/${c}`);for(const c of(0,file_operations_1.shippedSkillEntries)((0,package_root_1.packageRoot)()))fs.existsSync(path.join(e,s.dir,"skills",c.name))&&n(`${s.dir}/skills/${c.name}`);for(const c of["hooks.v1.json","mcp_config.json",".agentkit.json",".agentkitignore"])fs.existsSync(path.join(e,s.dir,c))&&n(`${s.dir}/${c}`)}if(o==="claude"&&fs.existsSync(path.join(e,".mcp.json"))&&n(".mcp.json"),o==="pi"){const t=path.join(e,pi_home_1.PI_PROJECT_DIR),r=path.join(e,"AGENTS.md");if(fs.existsSync(r))try{(0,codex_agents_1.hasAikitCodexBlock)(fs.readFileSync(r,"utf-8"))&&n("AGENTS.md")}catch{}for(const c of[pi_home_1.PI_EXTENSION_FILE,pi_home_1.PI_SUBAGENT_EXTENSION_FILE])fs.existsSync(path.join(t,c))&&n(path.join(".pi",c));for(const c of[pi_home_1.PI_PROMPTS_DIR,pi_home_1.PI_AGENTS_DIR])for(const f of(0,omp_managed_1.ompManagedFileNames)(path.join(t,c)))n(path.join(".pi",c,f))}return o==="cursor"&&fs.existsSync(path.join(e,"plugins","local","context-mode"))&&n(path.join("plugins","local","context-mode")),i}function stripAgentkitBlockFrom(o,e="codex"){if(!fs.existsSync(o))return!1;const s=fs.readFileSync(o,"utf-8");if(!(e==="claude"?claude_instructions_1.hasAikitClaudeBlock:codex_agents_1.hasAikitCodexBlock)(s))return!1;const n=e==="claude"?(0,claude_instructions_1.stripAikitClaudeBlock)(s):(0,codex_agents_1.stripAikitCodexBlock)(s);return n.removedWholeFile?(0,file_operations_1.removeFile)(o)?((0,logger_1.printSuccess)(`Removed ${path.basename(o)}`),!0):!1:n.removed?(fs.writeFileSync(o,n.content,"utf8"),(0,logger_1.printSuccess)(`Removed Agentkit block from ${path.basename(o)}`),!0):!1}function removePiExtras(o,e){let s=!1;stripAgentkitBlockFrom(e)&&(s=!0);for(const r of[pi_home_1.PI_EXTENSION_FILE,pi_home_1.PI_SUBAGENT_EXTENSION_FILE]){const c=path.join(o,r);fs.existsSync(c)&&(0,file_operations_1.removeFile)(c)&&((0,logger_1.printSuccess)(`Removed ${r}`),s=!0)}for(const r of[pi_home_1.PI_PROMPTS_DIR,pi_home_1.PI_AGENTS_DIR])for(const c of(0,omp_managed_1.ompManagedFileNames)(path.join(o,r)))(0,file_operations_1.removeFile)(path.join(o,r,c))&&((0,logger_1.printSuccess)(`Removed ${path.join(r,c)}`),s=!0);const i=(0,pi_home_1.piConfigPath)(o),n=(0,pi_config_json_1.unregisterPiSkillsDir)(i,path.join(o,pi_home_1.PI_SKILLS_SUBDIR));for(const r of n.warnings)(0,logger_1.printWarning)(r);n.removed.length>0&&n.written?((0,logger_1.printSuccess)(`Unregistered the Agentkit skills directory from ${i}`),s=!0):n.warnings.length>0&&fs.existsSync(i)&&(0,logger_1.printWarning)(`Could not update ${i} \u2014 it may still register the skills directory this removal deleted. Edit it by hand, or pi will scan a path that is no longer there.`);const t=(0,pi_config_json_1.unregisterPiPackages)(i,pi_packages_1.PI_PACKAGE_SPECS);for(const r of t.warnings)(0,logger_1.printWarning)(r);return t.removed.length>0&&t.written?((0,logger_1.printSuccess)(`Unregistered ${t.removed.length} Pi extension packages from ${i}`),(0,logger_1.printWarning)(`Their files stay under ${path.join(o,"npm")} \u2014 \`pi remove <spec>\` is the command that reconciles and can take them off disk.`),s=!0):t.warnings.length>0&&fs.existsSync(i)&&(0,logger_1.printWarning)(`Could not update ${i} \u2014 it may still declare this kit's Pi extension packages. Edit it by hand, or Pi will keep loading them.`),s}function removeKit(o,e){const s=kits_1.kitDefinitions[o];if(!s)return(0,logger_1.printWarning)(`Unknown kit: ${o}`),!1;let i=!1;const n=[];(0,context_mode_remover_1.removeContextMode)({scope:"project",platform:o,rootDir:path.join(e,s.dir)});const t=path.join(e,s.dir);o!=="devin"&&fs.existsSync(t)&&(0,file_operations_1.removeDir)(t)&&((0,logger_1.printSuccess)(`Removed ${s.dir}/`),i=!0,n.push(s.dir+"/"));for(const r of s.files){const c=path.join(e,r);!fs.existsSync(c)||isFileClaimedByOtherKit(r,o,e)||(0,file_operations_1.removeFile)(c)&&((0,logger_1.printSuccess)(`Removed ${r}`),i=!0,n.push(r))}if(o==="claude"){stripAgentkitBlockFrom(path.join(e,"AGENTS.md"),"claude")&&(i=!0);const r=path.join(e,"CLAUDE.md");if(fs.existsSync(r)){const c=(0,claude_instructions_1.stripAikitClaudeBlock)(fs.readFileSync(r,"utf-8"));c.removedWholeFile?(0,file_operations_1.removeFile)(r)&&((0,logger_1.printSuccess)("Removed CLAUDE.md"),i=!0,n.push("CLAUDE.md")):c.removed&&(fs.writeFileSync(r,c.content,"utf8"),(0,logger_1.printSuccess)("Removed Agentkit import from CLAUDE.md"),i=!0)}}if(o==="codex"){const r=path.join(e,".agents");fs.existsSync(r)&&(0,file_operations_1.removeDir)(r)&&((0,logger_1.printSuccess)("Removed .agents/"),i=!0,n.push(".agents/")),stripAgentkitBlockFrom(path.join(e,"AGENTS.md"))&&(i=!0)}if(o==="kimi"&&(stripAgentkitBlockFrom(path.join(e,"AGENTS.md"))&&(i=!0),(0,kimi_hooks_toml_1.removeKimiHooks)((0,kimi_1.resolveKimiHomeConfig)())&&((0,logger_1.printSuccess)("Removed Agentkit hooks from the Kimi user config"),i=!0)),o==="hermes"&&stripAgentkitBlockFrom(path.join(e,"AGENTS.md"))&&(i=!0),o==="pi"&&removePiExtras(path.join(e,pi_home_1.PI_PROJECT_DIR),path.join(e,"AGENTS.md"))&&(i=!0),o==="devin"){stripAgentkitBlockFrom(path.join(e,"AGENTS.md"))&&(i=!0),(0,devin_hooks_1.removeDevinHooks)(path.join(t,"hooks.v1.json"),"whole")&&((0,logger_1.printSuccess)("Removed Agentkit hook handlers from .devin/hooks.v1.json"),i=!0);for(const l of["scripts","schemas"])(0,file_operations_1.removeDir)(path.join(t,l))&&((0,logger_1.printSuccess)(`Removed .devin/${l}/`),i=!0);const r=(0,devin_hooks_1.devinHookFileNames)();let c=0;for(const l of r)(0,file_operations_1.removeFile)(path.join(t,l))&&(c+=1);c>0&&((0,logger_1.printSuccess)(`Removed ${c} hook file(s) from .devin/hooks/`),i=!0);const f=[{dir:"rules",names:(0,devin_rules_1.devinOwnedRuleNames)(path.join(t,"rules"))},{dir:"agents",names:(0,devin_agents_1.devinOwnedAgentNames)(path.join(t,"agents"))}].filter(({dir:l,names:d})=>{for(const p of d)(0,file_operations_1.removeFile)(path.join(t,l,p));return d.length>0});for(const{dir:l,names:d}of f)(0,logger_1.printSuccess)(`Removed ${d.length} Agentkit file(s) from .devin/${l}/`),i=!0;const u=[...(0,file_operations_1.shippedSkillEntries)((0,package_root_1.packageRoot)()).map(l=>l.name),...(0,commands_to_skills_1.commandSkillNames)(path.join((0,package_root_1.packageRoot)(),payload_roots_1.COMMAND_SOURCE_DIR)),...(0,retired_skills_1.retiredSkillNames)()];let a=0;for(const l of u)(0,file_operations_1.removeDir)(path.join(t,"skills",l))&&(a+=1);a>0&&((0,logger_1.printSuccess)(`Removed ${a} skill(s) from .devin/skills/`),i=!0);const m=path.join(t,"mcp_config.json");if(fs.existsSync(m)){const{remaining:l}=(0,dropped_mcp_servers_1.removeAgentkitMcpServers)(m);l===0?((0,file_operations_1.removeFile)(m),(0,logger_1.printSuccess)("Removed .devin/mcp_config.json")):l===null?(0,logger_1.printWarning)("Kept .devin/mcp_config.json \u2014 it could not be read as an mcpServers map"):(0,logger_1.printWarning)(`Kept .devin/mcp_config.json \u2014 it still holds ${l} of your own server(s)`),i=!0}for(const l of[".agentkit.json",".agentkitignore",install_manifest_1.MANIFEST_FILENAME])(0,file_operations_1.removeFile)(path.join(t,l))&&(i=!0);for(const l of["skills","agents","rules","hooks/scout-block/vendor","hooks/scout-block","hooks/lib","hooks",""]){const d=l?path.join(t,l):t;try{fs.existsSync(d)&&fs.readdirSync(d).length===0&&(fs.rmdirSync(d),l||n.push(`${s.dir}/`))}catch{}}}if(o==="claude"){const r=path.join(e,".mcp.json");fs.existsSync(r)&&(0,file_operations_1.removeFile)(r)&&((0,logger_1.printSuccess)("Removed .mcp.json from project root"),i=!0,n.push(".mcp.json"))}if(o==="cursor"){const r=path.join(e,".cursor","mcp.json");fs.existsSync(r)&&(0,file_operations_1.removeFile)(r)&&((0,logger_1.printSuccess)("Removed mcp.json from .cursor/"),i=!0,n.push(".cursor/mcp.json"));const c=path.join(e,".cursor","hooks.json");fs.existsSync(c)&&(0,file_operations_1.removeFile)(c)&&((0,logger_1.printSuccess)("Removed hooks.json from .cursor/"),i=!0,n.push(".cursor/hooks.json"));const f=path.join(e,"plugins","local","context-mode");fs.existsSync(f)&&(0,file_operations_1.removeDir)(f)&&((0,logger_1.printSuccess)("Removed context-mode from Cursor local plugins directory"),i=!0);const u=path.join(e,".cursor");fs.existsSync(u)&&fs.readdirSync(u).length===0&&(0,file_operations_1.removeDir)(u)&&((0,logger_1.printSuccess)("Removed empty .cursor/ directory"),i=!0,n.push(".cursor/"))}return n.length>0&&(0,gitignore_1.cleanupGitignore)(n,e),i}
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(o,e,s,i){i===void 0&&(i=s);var n=Object.getOwnPropertyDescriptor(e,s);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[s]}}),Object.defineProperty(o,i,n)}):(function(o,e,s,i){i===void 0&&(i=s),o[i]=e[s]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(o,e){Object.defineProperty(o,"default",{enumerable:!0,value:e})}):function(o,e){o.default=e}),__importStar=this&&this.__importStar||(function(){var o=function(e){return o=Object.getOwnPropertyNames||function(s){var i=[];for(var n in s)Object.prototype.hasOwnProperty.call(s,n)&&(i[i.length]=n);return i},o(e)};return function(e){if(e&&e.__esModule)return e;var s={};if(e!=null)for(var i=o(e),n=0;n<i.length;n++)i[n]!=="default"&&__createBinding(s,e,i[n]);return __setModuleDefault(s,e),s}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.kitRemovalPaths=kitRemovalPaths,exports.removePiExtras=removePiExtras,exports.removeKit=removeKit;const fs=__importStar(require("fs")),path=__importStar(require("path")),kits_1=require("./kits"),file_operations_1=require("./file-operations"),package_root_1=require("./package-root"),gitignore_1=require("./gitignore"),logger_1=require("./logger"),codex_agents_1=require("./codex-agents"),claude_instructions_1=require("./claude-instructions"),kimi_hooks_toml_1=require("./kit-installers/kimi-hooks-toml"),kimi_1=require("./kit-installers/kimi"),omp_managed_1=require("./kit-installers/omp-managed"),pi_config_json_1=require("./kit-installers/pi-config-json"),pi_packages_1=require("./kit-installers/pi-packages"),devin_hooks_1=require("./kit-installers/devin-hooks"),devin_rules_1=require("./kit-installers/devin-rules"),devin_agents_1=require("./kit-installers/devin-agents"),commands_to_skills_1=require("./kit-installers/commands-to-skills"),retired_skills_1=require("./retired-skills"),dropped_mcp_servers_1=require("./dropped-mcp-servers"),pi_home_1=require("./pi-home"),context_mode_remover_1=require("./context-mode-remover"),install_manifest_1=require("./install-manifest"),payload_roots_1=require("./payload-roots");function isFileClaimedByOtherKit(o,e,s,i=[]){return Object.entries(kits_1.kitDefinitions).some(([n,t])=>n!==e&&(t.files.includes(o)||(t.claims??[]).includes(o))&&!i.includes(t.dir)&&fs.existsSync(path.join(s,t.dir)))}function kitRemovalPaths(o,e){const s=kits_1.kitDefinitions[o];if(!s)return[];const i=[],n=t=>{i.includes(t)||i.push(t)};fs.existsSync(path.join(e,s.dir))&&n(`${s.dir}/`);for(const t of s.files)fs.existsSync(path.join(e,t))&&!isFileClaimedByOtherKit(t,o,e,[s.dir])&&n(t);if(o==="claude"){const t=path.join(e,"AGENTS.md");if(fs.existsSync(t))try{(0,claude_instructions_1.hasAikitClaudeBlock)(fs.readFileSync(t,"utf-8"))&&n("AGENTS.md")}catch{}const r=path.join(e,"CLAUDE.md");if(fs.existsSync(r))try{(0,claude_instructions_1.stripAikitClaudeBlock)(fs.readFileSync(r,"utf-8")).removedWholeFile&&n("CLAUDE.md")}catch{}}if(["codex","cursor","opencode","kimi","grok"].includes(o)&&fs.existsSync(path.join(e,".agents"))&&n(".agents/"),o==="codex"){const t=path.join(e,"AGENTS.md");if(fs.existsSync(t))try{(0,codex_agents_1.hasAikitCodexBlock)(fs.readFileSync(t,"utf-8"))&&n("AGENTS.md")}catch{}}if(o==="kimi"){const t=path.join(e,"AGENTS.md");if(fs.existsSync(t))try{(0,codex_agents_1.hasAikitCodexBlock)(fs.readFileSync(t,"utf-8"))&&n("AGENTS.md")}catch{}}if(o==="hermes"){const t=path.join(e,"AGENTS.md");if(fs.existsSync(t))try{(0,codex_agents_1.hasAikitCodexBlock)(fs.readFileSync(t,"utf-8"))&&n("AGENTS.md")}catch{}}if(o==="devin"){const t=path.join(e,"AGENTS.md");if(fs.existsSync(t))try{(0,codex_agents_1.hasAikitCodexBlock)(fs.readFileSync(t,"utf-8"))&&n("AGENTS.md")}catch{}const r=i.indexOf(`${s.dir}/`);r>=0&&i.splice(r,1);for(const c of["hooks","scripts","schemas"])fs.existsSync(path.join(e,s.dir,c))&&n(`${s.dir}/${c}/`);for(const c of(0,devin_rules_1.devinOwnedRuleNames)(path.join(e,s.dir,"rules")))n(`${s.dir}/rules/${c}`);for(const c of(0,devin_agents_1.devinOwnedAgentNames)(path.join(e,s.dir,"agents")))n(`${s.dir}/agents/${c}`);for(const c of(0,file_operations_1.shippedSkillEntries)((0,package_root_1.packageRoot)()))fs.existsSync(path.join(e,".agents","skills",c.name))&&n(`.agents/skills/${c.name}`),fs.existsSync(path.join(e,s.dir,"skills",c.name))&&n(`${s.dir}/skills/${c.name}`);for(const c of["hooks.v1.json","mcp_config.json",".agentkit.json",".agentkitignore"])fs.existsSync(path.join(e,s.dir,c))&&n(`${s.dir}/${c}`)}if(o==="claude"&&fs.existsSync(path.join(e,".mcp.json"))&&n(".mcp.json"),o==="pi"){const t=path.join(e,pi_home_1.PI_PROJECT_DIR),r=path.join(e,"AGENTS.md");if(fs.existsSync(r))try{(0,codex_agents_1.hasAikitCodexBlock)(fs.readFileSync(r,"utf-8"))&&n("AGENTS.md")}catch{}for(const c of[pi_home_1.PI_EXTENSION_FILE,pi_home_1.PI_SUBAGENT_EXTENSION_FILE])fs.existsSync(path.join(t,c))&&n(path.join(".pi",c));for(const c of[pi_home_1.PI_PROMPTS_DIR,pi_home_1.PI_AGENTS_DIR])for(const f of(0,omp_managed_1.ompManagedFileNames)(path.join(t,c)))n(path.join(".pi",c,f))}return o==="cursor"&&fs.existsSync(path.join(e,"plugins","local","context-mode"))&&n(path.join("plugins","local","context-mode")),i}function stripAgentkitBlockFrom(o,e="codex"){if(!fs.existsSync(o))return!1;const s=fs.readFileSync(o,"utf-8");if(!(e==="claude"?claude_instructions_1.hasAikitClaudeBlock:codex_agents_1.hasAikitCodexBlock)(s))return!1;const n=e==="claude"?(0,claude_instructions_1.stripAikitClaudeBlock)(s):(0,codex_agents_1.stripAikitCodexBlock)(s);return n.removedWholeFile?(0,file_operations_1.removeFile)(o)?((0,logger_1.printSuccess)(`Removed ${path.basename(o)}`),!0):!1:n.removed?(fs.writeFileSync(o,n.content,"utf8"),(0,logger_1.printSuccess)(`Removed Agentkit block from ${path.basename(o)}`),!0):!1}function removePiExtras(o,e){let s=!1;stripAgentkitBlockFrom(e)&&(s=!0);for(const r of[pi_home_1.PI_EXTENSION_FILE,pi_home_1.PI_SUBAGENT_EXTENSION_FILE]){const c=path.join(o,r);fs.existsSync(c)&&(0,file_operations_1.removeFile)(c)&&((0,logger_1.printSuccess)(`Removed ${r}`),s=!0)}for(const r of[pi_home_1.PI_PROMPTS_DIR,pi_home_1.PI_AGENTS_DIR])for(const c of(0,omp_managed_1.ompManagedFileNames)(path.join(o,r)))(0,file_operations_1.removeFile)(path.join(o,r,c))&&((0,logger_1.printSuccess)(`Removed ${path.join(r,c)}`),s=!0);const i=(0,pi_home_1.piConfigPath)(o),n=(0,pi_config_json_1.unregisterPiSkillsDir)(i,path.join(o,pi_home_1.PI_SKILLS_SUBDIR));for(const r of n.warnings)(0,logger_1.printWarning)(r);n.removed.length>0&&n.written?((0,logger_1.printSuccess)(`Unregistered the Agentkit skills directory from ${i}`),s=!0):n.warnings.length>0&&fs.existsSync(i)&&(0,logger_1.printWarning)(`Could not update ${i} \u2014 it may still register the skills directory this removal deleted. Edit it by hand, or pi will scan a path that is no longer there.`);const t=(0,pi_config_json_1.unregisterPiPackages)(i,pi_packages_1.PI_PACKAGE_SPECS);for(const r of t.warnings)(0,logger_1.printWarning)(r);return t.removed.length>0&&t.written?((0,logger_1.printSuccess)(`Unregistered ${t.removed.length} Pi extension packages from ${i}`),(0,logger_1.printWarning)(`Their files stay under ${path.join(o,"npm")} \u2014 \`pi remove <spec>\` is the command that reconciles and can take them off disk.`),s=!0):t.warnings.length>0&&fs.existsSync(i)&&(0,logger_1.printWarning)(`Could not update ${i} \u2014 it may still declare this kit's Pi extension packages. Edit it by hand, or Pi will keep loading them.`),s}function removeKit(o,e){const s=kits_1.kitDefinitions[o];if(!s)return(0,logger_1.printWarning)(`Unknown kit: ${o}`),!1;let i=!1;const n=[];(0,context_mode_remover_1.removeContextMode)({scope:"project",platform:o,rootDir:path.join(e,s.dir)});const t=path.join(e,s.dir);o!=="devin"&&fs.existsSync(t)&&(0,file_operations_1.removeDir)(t)&&((0,logger_1.printSuccess)(`Removed ${s.dir}/`),i=!0,n.push(s.dir+"/"));for(const r of s.files){const c=path.join(e,r);!fs.existsSync(c)||isFileClaimedByOtherKit(r,o,e)||(0,file_operations_1.removeFile)(c)&&((0,logger_1.printSuccess)(`Removed ${r}`),i=!0,n.push(r))}if(o==="claude"){stripAgentkitBlockFrom(path.join(e,"AGENTS.md"),"claude")&&(i=!0);const r=path.join(e,"CLAUDE.md");if(fs.existsSync(r)){const c=(0,claude_instructions_1.stripAikitClaudeBlock)(fs.readFileSync(r,"utf-8"));c.removedWholeFile?(0,file_operations_1.removeFile)(r)&&((0,logger_1.printSuccess)("Removed CLAUDE.md"),i=!0,n.push("CLAUDE.md")):c.removed&&(fs.writeFileSync(r,c.content,"utf8"),(0,logger_1.printSuccess)("Removed Agentkit import from CLAUDE.md"),i=!0)}}if(["codex","cursor","opencode","kimi","grok"].includes(o)){const r=path.join(e,".agents");fs.existsSync(r)&&(0,file_operations_1.removeDir)(r)&&((0,logger_1.printSuccess)("Removed .agents/"),i=!0,n.push(".agents/"))}if(o==="codex"&&stripAgentkitBlockFrom(path.join(e,"AGENTS.md"))&&(i=!0),o==="kimi"&&(stripAgentkitBlockFrom(path.join(e,"AGENTS.md"))&&(i=!0),(0,kimi_hooks_toml_1.removeKimiHooks)((0,kimi_1.resolveKimiHomeConfig)())&&((0,logger_1.printSuccess)("Removed Agentkit hooks from the Kimi user config"),i=!0)),o==="hermes"&&stripAgentkitBlockFrom(path.join(e,"AGENTS.md"))&&(i=!0),o==="pi"&&removePiExtras(path.join(e,pi_home_1.PI_PROJECT_DIR),path.join(e,"AGENTS.md"))&&(i=!0),o==="devin"){stripAgentkitBlockFrom(path.join(e,"AGENTS.md"))&&(i=!0),(0,devin_hooks_1.removeDevinHooks)(path.join(t,"hooks.v1.json"),"whole")&&((0,logger_1.printSuccess)("Removed Agentkit hook handlers from .devin/hooks.v1.json"),i=!0);for(const l of["scripts","schemas"])(0,file_operations_1.removeDir)(path.join(t,l))&&((0,logger_1.printSuccess)(`Removed .devin/${l}/`),i=!0);const r=(0,devin_hooks_1.devinHookFileNames)();let c=0;for(const l of r)(0,file_operations_1.removeFile)(path.join(t,l))&&(c+=1);c>0&&((0,logger_1.printSuccess)(`Removed ${c} hook file(s) from .devin/hooks/`),i=!0);const f=[{dir:"rules",names:(0,devin_rules_1.devinOwnedRuleNames)(path.join(t,"rules"))},{dir:"agents",names:(0,devin_agents_1.devinOwnedAgentNames)(path.join(t,"agents"))}].filter(({dir:l,names:d})=>{for(const h of d)(0,file_operations_1.removeFile)(path.join(t,l,h));return d.length>0});for(const{dir:l,names:d}of f)(0,logger_1.printSuccess)(`Removed ${d.length} Agentkit file(s) from .devin/${l}/`),i=!0;const u=[...(0,file_operations_1.shippedSkillEntries)((0,package_root_1.packageRoot)()).map(l=>l.name),...(0,commands_to_skills_1.commandSkillNames)(path.join((0,package_root_1.packageRoot)(),payload_roots_1.COMMAND_SOURCE_DIR)),...(0,retired_skills_1.retiredSkillNames)()];let a=0;const p=path.join(e,".agents","skills"),S=path.join(t,"skills");for(const l of u)(0,file_operations_1.removeDir)(path.join(p,l))&&(a+=1),(0,file_operations_1.removeDir)(path.join(S,l))&&(a+=1);a>0&&((0,logger_1.printSuccess)(`Removed ${a} skill(s) from .agents/skills/`),i=!0);for(const l of[p,path.join(e,".agents")])try{fs.existsSync(l)&&fs.readdirSync(l).length===0&&(fs.rmdirSync(l),l===path.join(e,".agents")&&n.push(".agents/"))}catch{}const m=path.join(t,"mcp_config.json");if(fs.existsSync(m)){const{remaining:l}=(0,dropped_mcp_servers_1.removeAgentkitMcpServers)(m);l===0?((0,file_operations_1.removeFile)(m),(0,logger_1.printSuccess)("Removed .devin/mcp_config.json")):l===null?(0,logger_1.printWarning)("Kept .devin/mcp_config.json \u2014 it could not be read as an mcpServers map"):(0,logger_1.printWarning)(`Kept .devin/mcp_config.json \u2014 it still holds ${l} of your own server(s)`),i=!0}for(const l of[".agentkit.json",".agentkitignore",install_manifest_1.MANIFEST_FILENAME])(0,file_operations_1.removeFile)(path.join(t,l))&&(i=!0);for(const l of["skills","agents","rules","hooks/scout-block/vendor","hooks/scout-block","hooks/lib","hooks",""]){const d=l?path.join(t,l):t;try{fs.existsSync(d)&&fs.readdirSync(d).length===0&&(fs.rmdirSync(d),l||n.push(`${s.dir}/`))}catch{}}}if(o==="claude"){const r=path.join(e,".mcp.json");fs.existsSync(r)&&(0,file_operations_1.removeFile)(r)&&((0,logger_1.printSuccess)("Removed .mcp.json from project root"),i=!0,n.push(".mcp.json"))}if(o==="cursor"){const r=path.join(e,".cursor","mcp.json");fs.existsSync(r)&&(0,file_operations_1.removeFile)(r)&&((0,logger_1.printSuccess)("Removed mcp.json from .cursor/"),i=!0,n.push(".cursor/mcp.json"));const c=path.join(e,".cursor","hooks.json");fs.existsSync(c)&&(0,file_operations_1.removeFile)(c)&&((0,logger_1.printSuccess)("Removed hooks.json from .cursor/"),i=!0,n.push(".cursor/hooks.json"));const f=path.join(e,"plugins","local","context-mode");fs.existsSync(f)&&(0,file_operations_1.removeDir)(f)&&((0,logger_1.printSuccess)("Removed context-mode from Cursor local plugins directory"),i=!0);const u=path.join(e,".cursor");fs.existsSync(u)&&fs.readdirSync(u).length===0&&(0,file_operations_1.removeDir)(u)&&((0,logger_1.printSuccess)("Removed empty .cursor/ directory"),i=!0,n.push(".cursor/"))}return n.length>0&&(0,gitignore_1.cleanupGitignore)(n,e),i}
@@ -1 +1 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(e,i,n,r){r===void 0&&(r=n);var o=Object.getOwnPropertyDescriptor(i,n);(!o||("get"in o?!i.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return i[n]}}),Object.defineProperty(e,r,o)}):(function(e,i,n,r){r===void 0&&(r=n),e[r]=i[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,i){Object.defineProperty(e,"default",{enumerable:!0,value:i})}):function(e,i){e.default=i}),__importStar=this&&this.__importStar||(function(){var e=function(i){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[r.length]=o);return r},e(i)};return function(i){if(i&&i.__esModule)return i;var n={};if(i!=null)for(var r=e(i),o=0;o<r.length;o++)r[o]!=="default"&&__createBinding(n,i,r[o]);return __setModuleDefault(n,i),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.ALL_KIT_NAMES=exports.PROJECT_KITS=exports.PROJECT_ONLY_INSTALL_KITS=exports.GLOBAL_ONLY_INSTALL_KITS=exports.HOST_DETECTION=exports.kitDefinitions=void 0,exports.supportsProjectInstall=supportsProjectInstall,exports.supportsGlobalInstall=supportsGlobalInstall,exports.isHostInstalled=isHostInstalled,exports.detectAllGlobalCLIs=detectAllGlobalCLIs,exports.detectCurrentKit=detectCurrentKit,exports.choiceToKit=choiceToKit,exports.isKitName=isKitName,exports.normalizeKitName=normalizeKitName;const fs=__importStar(require("fs")),path=__importStar(require("path")),os=__importStar(require("os")),child_process_1=require("child_process");exports.kitDefinitions={claude:{name:"Claude Code",dir:".claude",files:[".mcp.json"],claims:["CLAUDE.md","AGENTS.md"]},cursor:{name:"Cursor AI",dir:".cursor",files:["AGENTS.md"]},augment:{name:"Augment Code",dir:".claude",files:["CLAUDE.md"]},antigravity:{name:"Antigravity",dir:".agents",files:["GEMINI.md"]},opencode:{name:"OpenCode",dir:".opencode",files:[]},codex:{name:"OpenAI Codex",dir:".codex",files:[]},kimi:{name:"Kimi Code",dir:".kimi-code",files:[]},hermes:{name:"Hermes Agent",dir:".hermes-kit",files:[]},openclaw:{name:"OpenClaw",dir:".openclaw-kit",files:[]},omp:{name:"Oh My Pi",dir:".omp",files:[]},grok:{name:"Grok Build",dir:".grok",files:[]},pi:{name:"Pi",dir:path.join(".pi","agentkit"),files:[]},devin:{name:"Devin CLI",dir:".devin",files:[]}};function checkCommandExists(e){try{return(0,child_process_1.execSync)(`command -v ${e}`,{stdio:"ignore"}),!0}catch{return!1}}function checkMacApp(e){return process.platform!=="darwin"?!1:[path.join("/Applications",`${e}.app`),path.join(os.homedir(),"Applications",`${e}.app`)].some(i=>fs.existsSync(i))}exports.HOST_DETECTION={claude:{commands:["claude","augment"]},opencode:{commands:["opencode"]},cursor:{commands:["cursor"],macApps:["Cursor"]},antigravity:{commands:["antigravity","gemini"],macApps:["Antigravity","Antigravity IDE"]},codex:{commands:["codex"]},kimi:{commands:["kimi"]},hermes:{commands:["hermes"]},openclaw:{commands:["openclaw"]},omp:{commands:["omp"]},grok:{commands:["grok"]},pi:{commands:["pi"]},devin:{commands:["devin"]}},exports.GLOBAL_ONLY_INSTALL_KITS=["hermes","openclaw","omp"],exports.PROJECT_ONLY_INSTALL_KITS=["augment"],exports.PROJECT_KITS=["claude","opencode","cursor","antigravity","codex","kimi","hermes","openclaw","grok","pi","devin"];function supportsProjectInstall(e){return!exports.GLOBAL_ONLY_INSTALL_KITS.includes(e)}function supportsGlobalInstall(e){return!exports.PROJECT_ONLY_INSTALL_KITS.includes(e)}function isHostInstalled(e){const i=exports.HOST_DETECTION[e];return i?(i.commands??[]).some(checkCommandExists)||(i.macApps??[]).some(checkMacApp):!1}function detectAllGlobalCLIs(){return Object.keys(exports.HOST_DETECTION).filter(e=>isHostInstalled(e))}function detectGlobalCLI(){const e=detectAllGlobalCLIs();return e.length>1?null:e[0]??null}function detectCurrentKit(e){const i=os.homedir();if(!(path.resolve(e)===path.resolve(i))){const o=[{kit:"cursor",dir:path.join(".cursor","rules"),number:"3"},{kit:"antigravity",dir:".agents",number:"4"},{kit:"opencode",dir:".opencode",number:"2"},{kit:"codex",dir:".codex",number:"5"},{kit:"kimi",dir:".kimi-code",number:"6"},{kit:"hermes",dir:".hermes-kit",number:"7"},{kit:"openclaw",dir:".openclaw-kit",number:"8"},{kit:"grok",dir:path.join(".grok","rules"),number:"10"},{kit:"pi",dir:path.join(".pi","agentkit"),number:"11"},{kit:"devin",dir:path.join(".devin","rules"),number:"12"},{kit:"claude",dir:".claude",number:"1"}],c=path.join(e,".cursorrules"),s=path.join(e,".claude");if(fs.existsSync(c)&&fs.existsSync(s))return{kit:"cursor",number:"3"};for(const{kit:a,dir:u,number:d}of o){const t=path.join(e,u);if(fs.existsSync(t)){const l=fs.statSync(t).isDirectory(),m=fs.statSync(t).isFile();if(l||m)return{kit:a,number:d}}}}const r=detectGlobalCLI();return r?{kit:r,number:{claude:"1",opencode:"2",cursor:"3",antigravity:"4",codex:"5",kimi:"6",augment:"1",hermes:"7",openclaw:"8",omp:"9",grok:"10",pi:"11",devin:"12"}[r]}:null}function choiceToKit(e){return{1:"claude",2:"opencode",3:"cursor",4:"antigravity",5:"codex",6:"kimi"}[e]||null}exports.ALL_KIT_NAMES=["claude","cursor","augment","antigravity","opencode","codex","kimi","hermes","openclaw","omp","grok","pi","devin"];function isKitName(e){return exports.ALL_KIT_NAMES.includes(e)}const KIT_NAME_ALIASES={claude:"claude","claude-code":"claude",claudecode:"claude",claude_code:"claude",cursor:"cursor","cursor-ai":"cursor",cursorai:"cursor",cursor_ai:"cursor",augment:"augment","augment-code":"augment",augmentcode:"augment",antigravity:"antigravity",gemini:"antigravity",google:"antigravity","google-antigravity":"antigravity",opencode:"opencode","open-code":"opencode",codex:"codex",openai:"codex","openai-codex":"codex",openai_codex:"codex",kimi:"kimi","kimi-code":"kimi",kimicode:"kimi",moonshot:"kimi",hermes:"hermes","hermes-agent":"hermes",hermesagent:"hermes",openclaw:"openclaw","open-claw":"openclaw",omp:"omp","oh-my-pi":"omp",ohmypi:"omp",oh_my_pi:"omp",pi:"pi","pi-agent":"pi",piagent:"pi","pi-coding-agent":"pi",picodingagent:"pi",earendil:"pi",grok:"grok","grok-build":"grok",grokbuild:"grok",xai:"grok",devin:"devin","devin-cli":"devin",devincli:"devin",cognition:"devin"};function normalizeKitName(e){if(!e||typeof e!="string")return null;const i=e.trim().toLowerCase();return KIT_NAME_ALIASES[i]??null}
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(e,i,n,r){r===void 0&&(r=n);var o=Object.getOwnPropertyDescriptor(i,n);(!o||("get"in o?!i.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return i[n]}}),Object.defineProperty(e,r,o)}):(function(e,i,n,r){r===void 0&&(r=n),e[r]=i[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,i){Object.defineProperty(e,"default",{enumerable:!0,value:i})}):function(e,i){e.default=i}),__importStar=this&&this.__importStar||(function(){var e=function(i){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[r.length]=o);return r},e(i)};return function(i){if(i&&i.__esModule)return i;var n={};if(i!=null)for(var r=e(i),o=0;o<r.length;o++)r[o]!=="default"&&__createBinding(n,i,r[o]);return __setModuleDefault(n,i),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.ALL_KIT_NAMES=exports.PROJECT_KITS=exports.PROJECT_ONLY_INSTALL_KITS=exports.GLOBAL_ONLY_INSTALL_KITS=exports.HOST_DETECTION=exports.kitDefinitions=void 0,exports.supportsProjectInstall=supportsProjectInstall,exports.supportsGlobalInstall=supportsGlobalInstall,exports.isHostInstalled=isHostInstalled,exports.detectAllGlobalCLIs=detectAllGlobalCLIs,exports.detectCurrentKit=detectCurrentKit,exports.choiceToKit=choiceToKit,exports.isKitName=isKitName,exports.normalizeKitName=normalizeKitName;const fs=__importStar(require("fs")),path=__importStar(require("path")),os=__importStar(require("os")),child_process_1=require("child_process");exports.kitDefinitions={claude:{name:"Claude Code",dir:".claude",files:[".mcp.json"],claims:["CLAUDE.md","AGENTS.md"]},cursor:{name:"Cursor AI",dir:".cursor",files:["AGENTS.md"]},augment:{name:"Augment Code",dir:".claude",files:["CLAUDE.md"]},antigravity:{name:"Antigravity",dir:".agents",files:["GEMINI.md"]},opencode:{name:"OpenCode",dir:".opencode",files:[]},codex:{name:"OpenAI Codex",dir:".codex",files:[]},kimi:{name:"Kimi Code",dir:".kimi-code",files:[]},hermes:{name:"Hermes Agent",dir:".hermes-kit",files:[]},openclaw:{name:"OpenClaw",dir:".openclaw-kit",files:[]},omp:{name:"Oh My Pi",dir:".omp",files:[]},grok:{name:"Grok Build",dir:".grok",files:[]},pi:{name:"Pi",dir:path.join(".pi","agentkit"),files:[]},devin:{name:"Devin CLI",dir:".devin",files:[]}};function checkCommandExists(e){try{return(0,child_process_1.execSync)(`command -v ${e}`,{stdio:"ignore"}),!0}catch{return!1}}function checkMacApp(e){return process.platform!=="darwin"?!1:[path.join("/Applications",`${e}.app`),path.join(os.homedir(),"Applications",`${e}.app`)].some(i=>fs.existsSync(i))}exports.HOST_DETECTION={claude:{commands:["claude","augment"]},opencode:{commands:["opencode"]},cursor:{commands:["cursor"],macApps:["Cursor"]},antigravity:{commands:["antigravity","gemini"],macApps:["Antigravity","Antigravity IDE"]},codex:{commands:["codex"]},kimi:{commands:["kimi"]},hermes:{commands:["hermes"]},openclaw:{commands:["openclaw"]},omp:{commands:["omp"]},grok:{commands:["grok"]},pi:{commands:["pi"]},devin:{commands:["devin"]}},exports.GLOBAL_ONLY_INSTALL_KITS=["hermes","openclaw","omp"],exports.PROJECT_ONLY_INSTALL_KITS=["augment"],exports.PROJECT_KITS=["claude","opencode","cursor","antigravity","codex","kimi","hermes","openclaw","grok","pi","devin"];function supportsProjectInstall(e){return!exports.GLOBAL_ONLY_INSTALL_KITS.includes(e)}function supportsGlobalInstall(e){return!exports.PROJECT_ONLY_INSTALL_KITS.includes(e)}function isHostInstalled(e){const i=exports.HOST_DETECTION[e];return i?(i.commands??[]).some(checkCommandExists)||(i.macApps??[]).some(checkMacApp):!1}function detectAllGlobalCLIs(){return Object.keys(exports.HOST_DETECTION).filter(e=>isHostInstalled(e))}function detectGlobalCLI(){const e=detectAllGlobalCLIs();return e.length>1?null:e[0]??null}function detectCurrentKit(e){const i=os.homedir();if(!(path.resolve(e)===path.resolve(i))){const o=[{kit:"cursor",dir:path.join(".cursor","rules"),number:"3"},{kit:"opencode",dir:".opencode",number:"2"},{kit:"codex",dir:".codex",number:"5"},{kit:"kimi",dir:".kimi-code",number:"6"},{kit:"hermes",dir:".hermes-kit",number:"7"},{kit:"openclaw",dir:".openclaw-kit",number:"8"},{kit:"grok",dir:path.join(".grok","rules"),number:"10"},{kit:"pi",dir:path.join(".pi","agentkit"),number:"11"},{kit:"devin",dir:path.join(".devin","rules"),number:"12"},{kit:"antigravity",dir:".agents",number:"4"},{kit:"claude",dir:".claude",number:"1"}],c=path.join(e,".cursorrules"),s=path.join(e,".claude");if(fs.existsSync(c)&&fs.existsSync(s))return{kit:"cursor",number:"3"};for(const{kit:a,dir:u,number:d}of o){const t=path.join(e,u);if(fs.existsSync(t)){const l=fs.statSync(t).isDirectory(),m=fs.statSync(t).isFile();if(l||m)return{kit:a,number:d}}}}const r=detectGlobalCLI();return r?{kit:r,number:{claude:"1",opencode:"2",cursor:"3",antigravity:"4",codex:"5",kimi:"6",augment:"1",hermes:"7",openclaw:"8",omp:"9",grok:"10",pi:"11",devin:"12"}[r]}:null}function choiceToKit(e){return{1:"claude",2:"opencode",3:"cursor",4:"antigravity",5:"codex",6:"kimi"}[e]||null}exports.ALL_KIT_NAMES=["claude","cursor","augment","antigravity","opencode","codex","kimi","hermes","openclaw","omp","grok","pi","devin"];function isKitName(e){return exports.ALL_KIT_NAMES.includes(e)}const KIT_NAME_ALIASES={claude:"claude","claude-code":"claude",claudecode:"claude",claude_code:"claude",cursor:"cursor","cursor-ai":"cursor",cursorai:"cursor",cursor_ai:"cursor",augment:"augment","augment-code":"augment",augmentcode:"augment",antigravity:"antigravity",gemini:"antigravity",google:"antigravity","google-antigravity":"antigravity",opencode:"opencode","open-code":"opencode",codex:"codex",openai:"codex","openai-codex":"codex",openai_codex:"codex",kimi:"kimi","kimi-code":"kimi",kimicode:"kimi",moonshot:"kimi",hermes:"hermes","hermes-agent":"hermes",hermesagent:"hermes",openclaw:"openclaw","open-claw":"openclaw",omp:"omp","oh-my-pi":"omp",ohmypi:"omp",oh_my_pi:"omp",pi:"pi","pi-agent":"pi",piagent:"pi","pi-coding-agent":"pi",picodingagent:"pi",earendil:"pi",grok:"grok","grok-build":"grok",grokbuild:"grok",xai:"grok",devin:"devin","devin-cli":"devin",devincli:"devin",cognition:"devin"};function normalizeKitName(e){if(!e||typeof e!="string")return null;const i=e.trim().toLowerCase();return KIT_NAME_ALIASES[i]??null}
@@ -1 +1 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),__importStar=this&&this.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=t(e),i=0;i<r.length;i++)r[i]!=="default"&&__createBinding(n,e,r[i]);return __setModuleDefault(n,e),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.VERSION_DIR_SHAPE=void 0,exports.pruneOtherVersions=pruneOtherVersions,exports.removeAllVersions=removeAllVersions,exports.describePayloadPath=describePayloadPath;const fs=__importStar(require("fs")),path=__importStar(require("path")),agentkit_home_1=require("../agentkit-home");exports.VERSION_DIR_SHAPE=/^[\w.+-]+$/;function pruneOtherVersions(t,e=(0,agentkit_home_1.loadAgentkitHomeCore)()){return sweepPayloadVersions(e,n=>n===t)}function removeAllVersions(t=(0,agentkit_home_1.loadAgentkitHomeCore)()){return sweepPayloadVersions(t,()=>!1)}function sweepPayloadVersions(t,e){const n=t.getPayloadDir(),r=[];let i;try{i=fs.readdirSync(n,{withFileTypes:!0})}catch{return r}for(const o of i)if(!(!o.isDirectory()||e(o.name))&&!(!exports.VERSION_DIR_SHAPE.test(o.name)||o.name.endsWith(".partial")))try{fs.rmSync(path.join(n,o.name),{recursive:!0,force:!0}),r.push(o.name)}catch{}return r}function describePayloadPath(t=(0,agentkit_home_1.loadAgentkitHomeCore)()){return t.toDisplayPath(t.getPayloadDir())}
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(n,e,r,t){t===void 0&&(t=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(n,t,i)}):(function(n,e,r,t){t===void 0&&(t=r),n[t]=e[r]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(n,e){Object.defineProperty(n,"default",{enumerable:!0,value:e})}):function(n,e){n.default=e}),__importStar=this&&this.__importStar||(function(){var n=function(e){return n=Object.getOwnPropertyNames||function(r){var t=[];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(t[t.length]=i);return t},n(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t=n(e),i=0;i<t.length;i++)t[i]!=="default"&&__createBinding(r,e,t[i]);return __setModuleDefault(r,e),r}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.VERSION_DIR_SHAPE=void 0,exports.pruneOtherVersions=pruneOtherVersions,exports.removeAllVersions=removeAllVersions;const fs=__importStar(require("fs")),path=__importStar(require("path")),agentkit_home_1=require("../agentkit-home");exports.VERSION_DIR_SHAPE=/^[\w.+-]+$/;function pruneOtherVersions(n,e=(0,agentkit_home_1.loadAgentkitHomeCore)()){return sweepPayloadVersions(e,r=>r===n)}function removeAllVersions(n=(0,agentkit_home_1.loadAgentkitHomeCore)()){return sweepPayloadVersions(n,()=>!1)}function sweepPayloadVersions(n,e){const r=n.getPayloadDir(),t=[];let i;try{i=fs.readdirSync(r,{withFileTypes:!0})}catch{return t}for(const o of i)if(!(!o.isDirectory()||e(o.name))&&!(!exports.VERSION_DIR_SHAPE.test(o.name)||o.name.endsWith(".partial")))try{fs.rmSync(path.join(r,o.name),{recursive:!0,force:!0}),t.push(o.name)}catch{}return t}
@@ -1,4 +1,4 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(n,e,r,t){t===void 0&&(t=r);var l=Object.getOwnPropertyDescriptor(e,r);(!l||("get"in l?!e.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(n,t,l)}):(function(n,e,r,t){t===void 0&&(t=r),n[t]=e[r]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(n,e){Object.defineProperty(n,"default",{enumerable:!0,value:e})}):function(n,e){n.default=e}),__importStar=this&&this.__importStar||(function(){var n=function(e){return n=Object.getOwnPropertyNames||function(r){var t=[];for(var l in r)Object.prototype.hasOwnProperty.call(r,l)&&(t[t.length]=l);return t},n(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t=n(e),l=0;l<t.length;l++)t[l]!=="default"&&__createBinding(r,e,t[l]);return __setModuleDefault(r,e),r}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.MissingProfileProseError=exports.PROFILE_BLOCK_MAX_BYTES=void 0,exports.installedSkillsForProfile=installedSkillsForProfile,exports.renderProfileBlock=renderProfileBlock;const fs=__importStar(require("fs")),path=__importStar(require("path")),generate_catalogs_1=require("../gen/generate-catalogs"),skill_profiles_1=require("./skill-profiles"),payload_roots_1=require("./payload-roots");exports.PROFILE_BLOCK_MAX_BYTES=1800;class MissingProfileProseError extends Error{constructor(e,r){super(`profile block: no prose for the "${e}" profile \u2014 expected ${r}`),this.profile=e,this.file=r,this.name="MissingProfileProseError"}}exports.MissingProfileProseError=MissingProfileProseError;function installedSkillsForProfile(n,e){const r=new Set((0,skill_profiles_1.profileToSkipDirs)(n,e));return(0,generate_catalogs_1.collectSkills)(n).map(t=>t.name).filter(t=>!r.has(t))}function renderProfileBlock(n){const{repoRoot:e,profile:r,activeRules:t}=n,l=n.droppedRules??[];if(r==="core"||r==="full")return null;const u=readProfileProse(e,r),i=installedSkillsForProfile(e,r),o=(0,skill_profiles_1.isNameOnlyProfile)(r),a=o?i:i.filter(p=>!skill_profiles_1.CORE_SKILLS.has(p)),f=i.length-a.length,c=o?`${i.length} named skills \u2014 this profile installs by name rather than by category \u2014 and ${t.length} rules.`:`${i.length} skills (${a.length} from ${(0,skill_profiles_1.profileIncludeCategories)(r).join(", ")}, ${f} shared core) and ${t.length} rules.`,s=[`### Installed: \`${r}\` profile`,"",c,`${o?"Skills":"Profile skills"}: ${a.join(", ")}.`];return s.push(t.length>0?`Rules: ${t.join(", ")}.`:"No rules ship with this profile."),l.length>0&&s.push(`Rules left out: ${l.join(", ")}.`),s.push("`agentkit skills add <name>` restores a skill; `agentkit init --profile full` installs everything, rules included."),`${s.join(`
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(n,e,r,t){t===void 0&&(t=r);var l=Object.getOwnPropertyDescriptor(e,r);(!l||("get"in l?!e.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(n,t,l)}):(function(n,e,r,t){t===void 0&&(t=r),n[t]=e[r]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(n,e){Object.defineProperty(n,"default",{enumerable:!0,value:e})}):function(n,e){n.default=e}),__importStar=this&&this.__importStar||(function(){var n=function(e){return n=Object.getOwnPropertyNames||function(r){var t=[];for(var l in r)Object.prototype.hasOwnProperty.call(r,l)&&(t[t.length]=l);return t},n(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t=n(e),l=0;l<t.length;l++)t[l]!=="default"&&__createBinding(r,e,t[l]);return __setModuleDefault(r,e),r}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.MissingProfileProseError=exports.PROFILE_BLOCK_MAX_BYTES=void 0,exports.installedSkillsForProfile=installedSkillsForProfile,exports.renderProfileBlock=renderProfileBlock;const fs=__importStar(require("fs")),path=__importStar(require("path")),generate_catalogs_1=require("../gen/generate-catalogs"),skill_profiles_1=require("./skill-profiles"),payload_roots_1=require("./payload-roots");exports.PROFILE_BLOCK_MAX_BYTES=2400;class MissingProfileProseError extends Error{constructor(e,r){super(`profile block: no prose for the "${e}" profile \u2014 expected ${r}`),this.profile=e,this.file=r,this.name="MissingProfileProseError"}}exports.MissingProfileProseError=MissingProfileProseError;function installedSkillsForProfile(n,e){const r=new Set((0,skill_profiles_1.profileToSkipDirs)(n,e));return(0,generate_catalogs_1.collectSkills)(n).map(t=>t.name).filter(t=>!r.has(t))}function renderProfileBlock(n){const{repoRoot:e,profile:r,activeRules:t}=n,l=n.droppedRules??[];if(r==="core"||r==="full")return null;const u=readProfileProse(e,r),i=installedSkillsForProfile(e,r),o=(0,skill_profiles_1.isNameOnlyProfile)(r),a=o?i:i.filter(p=>!skill_profiles_1.CORE_SKILLS.has(p)),f=i.length-a.length,c=o?`${i.length} named skills \u2014 this profile installs by name rather than by category \u2014 and ${t.length} rules.`:`${i.length} skills (${a.length} from ${(0,skill_profiles_1.profileIncludeCategories)(r).join(", ")}, ${f} shared core) and ${t.length} rules.`,s=[`### Installed: \`${r}\` profile`,"",c,`${o?"Skills":"Profile skills"}: ${a.join(", ")}.`];return s.push(t.length>0?`Rules: ${t.join(", ")}.`:"No rules ship with this profile."),l.length>0&&s.push(`Rules left out: ${l.join(", ")}.`),s.push("`agentkit skills add <name>` restores a skill; `agentkit init --profile full` installs everything, rules included."),`${s.join(`
2
2
  `)}
3
3
 
4
4
  ${u}
@@ -1 +1 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,n,t){t===void 0&&(t=n);var a=Object.getOwnPropertyDescriptor(e,n);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(r,t,a)}):(function(r,e,n,t){t===void 0&&(t=n),r[t]=e[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),__importStar=this&&this.__importStar||(function(){var r=function(e){return r=Object.getOwnPropertyNames||function(n){var t=[];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(t[t.length]=a);return t},r(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t=r(e),a=0;a<t.length;a++)t[a]!=="default"&&__createBinding(n,e,t[a]);return __setModuleDefault(n,e),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.PROFILE_RULE_SKIP=void 0,exports.ruleSkipFor=ruleSkipFor,exports.rulesForProfile=rulesForProfile;const path=__importStar(require("path")),rule_metadata_1=require("./kit-installers/rule-metadata"),payload_roots_1=require("./payload-roots");exports.PROFILE_RULE_SKIP={frontend:["database-security","team-coordination-rules"],backend:["dart","kotlin","swift","team-coordination-rules"],mobile:["database-security","team-coordination-rules"],fullstack:["team-coordination-rules"],marketing:["dart","kotlin","swift","database-security","team-coordination-rules"],assistant:["dart","kotlin","swift","database-security","team-coordination-rules"]};function ruleSkipFor(r){return r==="core"||r==="full"?[]:exports.PROFILE_RULE_SKIP[r]}function rulesForProfile(r,e){const n=new Set(ruleSkipFor(e));return(0,rule_metadata_1.readRulesDir)(path.join(r,payload_roots_1.RULES_SOURCE_DIR)).rules.map(t=>t.name).filter(t=>!n.has(t))}
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,a,t){t===void 0&&(t=a);var n=Object.getOwnPropertyDescriptor(e,a);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[a]}}),Object.defineProperty(r,t,n)}):(function(r,e,a,t){t===void 0&&(t=a),r[t]=e[a]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),__importStar=this&&this.__importStar||(function(){var r=function(e){return r=Object.getOwnPropertyNames||function(a){var t=[];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(t[t.length]=n);return t},r(e)};return function(e){if(e&&e.__esModule)return e;var a={};if(e!=null)for(var t=r(e),n=0;n<t.length;n++)t[n]!=="default"&&__createBinding(a,e,t[n]);return __setModuleDefault(a,e),a}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.PROFILE_RULE_SKIP=exports.GAMEDEV_RULES=void 0,exports.ruleSkipFor=ruleSkipFor,exports.rulesForProfile=rulesForProfile;const path=__importStar(require("path")),rule_metadata_1=require("./kit-installers/rule-metadata"),payload_roots_1=require("./payload-roots");exports.GAMEDEV_RULES=["ai-code","data-files","design-docs","engine-code","game-narrative","game-test-standards","gameplay-code","network-code","prototype-code","scene-files","shader-code","ui-code"],exports.PROFILE_RULE_SKIP={frontend:["database-security","team-coordination-rules"],backend:["dart","kotlin","swift","team-coordination-rules"],mobile:["database-security","team-coordination-rules"],fullstack:["team-coordination-rules"],gamedev:["dart","kotlin","swift","database-security","team-coordination-rules"],marketing:["dart","kotlin","swift","database-design","database-security","framework-patterns","review-audit-self-decision","team-coordination-rules","typescript"],assistant:["dart","kotlin","swift","database-security","team-coordination-rules"]};function ruleSkipFor(r){return r==="core"||r==="full"?[]:exports.PROFILE_RULE_SKIP[r]}function rulesForProfile(r,e){const a=new Set(ruleSkipFor(e));return(0,rule_metadata_1.readRulesDir)(path.join(r,payload_roots_1.RULES_SOURCE_DIR)).rules.map(t=>t.name).filter(t=>!a.has(t))}
@@ -1 +1 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(i,e,t,r){r===void 0&&(r=t);var o=Object.getOwnPropertyDescriptor(e,t);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(i,r,o)}):(function(i,e,t,r){r===void 0&&(r=t),i[r]=e[t]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(i,e){Object.defineProperty(i,"default",{enumerable:!0,value:e})}):function(i,e){i.default=e}),__importStar=this&&this.__importStar||(function(){var i=function(e){return i=Object.getOwnPropertyNames||function(t){var r=[];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(r[r.length]=o);return r},i(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=i(e),o=0;o<r.length;o++)r[o]!=="default"&&__createBinding(t,e,r[o]);return __setModuleDefault(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.MASTER_HOOK=void 0,exports.setHook=setHook,exports.refreshKit=refreshKit,exports.previewKitRemoval=previewKitRemoval,exports.removeKitInstall=removeKitInstall;const path=__importStar(require("path")),agentkit_config_file_1=require("../agentkit-config-file"),hook_toggle_registry_1=require("../hook-toggle-registry"),agentkit_home_1=require("../agentkit-home"),init_install_scope_1=require("../init-install-scope"),install_registry_1=require("../install-registry"),kit_remover_1=require("../kit-remover"),kit_install_dispatch_1=require("../kit-install-dispatch"),profile_context_1=require("../kit-installers/profile-context"),install_manifest_1=require("../install-manifest"),install_profile_config_1=require("../install-profile-config"),profile_resolution_1=require("../doctor/profile-resolution"),skill_profiles_1=require("../skill-profiles"),hooks_write_policy_1=require("../hooks-write-policy"),kits_1=require("../kits"),kits_endpoint_1=require("./kits-endpoint"),kit_target_1=require("./kit-target");exports.MASTER_HOOK="*";function refused(i,e,t){return{status:i,body:{ok:!1,error:e,...t?{hint:t}:{}}}}function setHook(i,e){const t=(0,kit_target_1.targetFrom)(e);if(!t.ok)return refused(t.status,t.error);const r=e,o=r.hook,n=r.enabled;if(typeof o!="string"||!o)return refused(400,"hook is required");if(typeof n!="boolean")return refused(400,"enabled must be true or false");const{record:l,context:c}=t.target;if(o===exports.MASTER_HOOK){try{(0,agentkit_config_file_1.writeHooksEnabled)(c.configPath,n)}catch(a){return refused(500,`could not write the kit config: ${a.message}`)}return(0,kits_endpoint_1.clearKitsCache)(),{status:200,body:{ok:!0,hook:o,enabled:n}}}const u=(0,hook_toggle_registry_1.hookRegistry)(i).find(a=>a.name===o);if(!u)return refused(404,"no such hook");const s=(0,hooks_write_policy_1.decideWrite)(l.kit,l.scope,o,u.readBy,kits_1.kitDefinitions[l.kit].name);if(!s.allowed)return refused(409,s.reason,s.hint);try{(0,agentkit_config_file_1.updateSection)(c.configPath,"hooks",a=>{a[o]=n})}catch(a){return refused(500,`could not write the kit config: ${a.message}`)}return(0,kits_endpoint_1.clearKitsCache)(),{status:200,body:{ok:!0,hook:o,enabled:n,...s.warning?{warning:s.warning}:{}}}}function refreshKit(i,e){const t=(0,kit_target_1.targetFrom)(e);if(!t.ok)return refused(t.status,t.error);const{record:r,context:o}=t.target,n=(0,install_profile_config_1.readInstallSettings)(o.configPath),l=n.profile??(0,profile_resolution_1.resolveCheckProfile)(o,i).profile;if(!l)return refused(409,`${kits_1.kitDefinitions[r.kit].name} never recorded a profile and its installed skill set is ambiguous \u2014 run \`agentkit init\` to choose one before refreshing.`);const c=(0,skill_profiles_1.resolveSkipDirs)(i,l,n.extraSkills),f={...n.agentModels?{agentModels:n.agentModels}:{},profileContext:(0,profile_context_1.buildProfileInstallContext)(i,l)},u=r.scope==="global"?(0,kit_install_dispatch_1.installGlobalKit)(r.kit,i,(0,init_install_scope_1.resolveGlobalRoot)(r.kit,""),c,f):(0,kit_install_dispatch_1.installProjectKit)(r.kit,i,r.path,c,f);if(!u.ok)return refused(409,u.reason);const s=(0,install_profile_config_1.readCliVersion)(i);try{s&&(0,install_profile_config_1.stampInstallVersion)(o.configPath,s),(0,install_profile_config_1.writeInstallSettings)(o.configPath,{profile:n.profile??void 0,extraSkills:n.extraSkills,...n.agentModels?{agentModels:n.agentModels}:{}}),(0,install_manifest_1.writeManifest)(o,s)}catch(a){return refused(500,`the kit was refreshed but not stamped: ${a.message}`)}return(0,kits_endpoint_1.clearKitsCache)(),{status:200,body:{ok:!0,kit:r.kit,version:s}}}function previewKitRemoval(i){const e=(0,kit_target_1.targetFrom)(i);if(!e.ok)return refused(e.status,e.error);const{record:t}=e.target,r=removalRefusal(t.scope);if(r)return r;const o=(0,agentkit_home_1.loadAgentkitHome)();return{status:200,body:{ok:!0,paths:(0,kit_remover_1.kitRemovalPaths)(t.kit,t.path).map(n=>o.toDisplayPath(path.join(t.path,n)))}}}function removalRefusal(i){return i!=="global"?null:refused(409,"Global installs cannot be removed from the dashboard.","Delete the kit directory yourself if you mean to; nothing here will do it for you.")}function removeKitInstall(i){const e=(0,kit_target_1.targetFrom)(i);if(!e.ok)return refused(e.status,e.error);const{record:t}=e.target,r=removalRefusal(t.scope);if(r)return r;if(i.confirmKitRoot!==(0,kit_target_1.wireRoot)(t.kitRoot))return refused(400,"confirmKitRoot must repeat the install root exactly");if(!(0,kit_remover_1.removeKit)(t.kit,t.path))return refused(500,"nothing was removed \u2014 the install may already be gone");try{(0,install_registry_1.removeInstall)(t.kitRoot,t.kit)}catch{}return(0,kits_endpoint_1.clearKitsCache)(),{status:200,body:{ok:!0,kit:t.kit}}}
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(i,e,t,r){r===void 0&&(r=t);var o=Object.getOwnPropertyDescriptor(e,t);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(i,r,o)}):(function(i,e,t,r){r===void 0&&(r=t),i[r]=e[t]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(i,e){Object.defineProperty(i,"default",{enumerable:!0,value:e})}):function(i,e){i.default=e}),__importStar=this&&this.__importStar||(function(){var i=function(e){return i=Object.getOwnPropertyNames||function(t){var r=[];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(r[r.length]=o);return r},i(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=i(e),o=0;o<r.length;o++)r[o]!=="default"&&__createBinding(t,e,r[o]);return __setModuleDefault(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.MASTER_HOOK=void 0,exports.setHook=setHook,exports.refreshKit=refreshKit,exports.previewKitRemoval=previewKitRemoval,exports.removeKitInstall=removeKitInstall;const path=__importStar(require("path")),agentkit_config_file_1=require("../agentkit-config-file"),hook_toggle_registry_1=require("../hook-toggle-registry"),agentkit_home_1=require("../agentkit-home"),init_install_scope_1=require("../init-install-scope"),install_registry_1=require("../install-registry"),kit_remover_1=require("../kit-remover"),kit_install_dispatch_1=require("../kit-install-dispatch"),profile_context_1=require("../kit-installers/profile-context"),install_manifest_1=require("../install-manifest"),install_profile_config_1=require("../install-profile-config"),profile_resolution_1=require("../doctor/profile-resolution"),skill_profiles_1=require("../skill-profiles"),hooks_write_policy_1=require("../hooks-write-policy"),kits_1=require("../kits"),kits_endpoint_1=require("./kits-endpoint"),kit_target_1=require("./kit-target");exports.MASTER_HOOK="*";function refused(i,e,t){return{status:i,body:{ok:!1,error:e,...t?{hint:t}:{}}}}function setHook(i,e){const t=(0,kit_target_1.targetFrom)(e);if(!t.ok)return refused(t.status,t.error);const r=e,o=r.hook,n=r.enabled;if(typeof o!="string"||!o)return refused(400,"hook is required");if(typeof n!="boolean")return refused(400,"enabled must be true or false");const{record:l,context:c}=t.target;if(o===exports.MASTER_HOOK){try{(0,agentkit_config_file_1.writeHooksEnabled)(c.configPath,n)}catch(a){return refused(500,`could not write the kit config: ${a.message}`)}return(0,kits_endpoint_1.clearKitsCache)(),{status:200,body:{ok:!0,hook:o,enabled:n}}}const u=(0,hook_toggle_registry_1.hookRegistry)(i).find(a=>a.name===o);if(!u)return refused(404,"no such hook");const s=(0,hooks_write_policy_1.decideWrite)(l.kit,l.scope,o,u.readBy,kits_1.kitDefinitions[l.kit].name);if(!s.allowed)return refused(409,s.reason,s.hint);try{(0,agentkit_config_file_1.updateSection)(c.configPath,"hooks",a=>{a[o]=n})}catch(a){return refused(500,`could not write the kit config: ${a.message}`)}return(0,kits_endpoint_1.clearKitsCache)(),{status:200,body:{ok:!0,hook:o,enabled:n,...s.warning?{warning:s.warning}:{}}}}function refreshKit(i,e){const t=(0,kit_target_1.targetFrom)(e);if(!t.ok)return refused(t.status,t.error);const{record:r,context:o}=t.target,n=(0,install_profile_config_1.readInstallSettings)(o.configPath),l=n.profile??(0,profile_resolution_1.resolveCheckProfile)(o,i).profile;if(!l)return refused(409,`${kits_1.kitDefinitions[r.kit].name} never recorded a profile and its installed skill set is ambiguous \u2014 run \`agentkit init\` to choose one before refreshing.`);const c=(0,skill_profiles_1.resolveSkipDirs)(i,l,n.extraSkills),f={...n.agentModels?{agentModels:n.agentModels}:{},profileContext:(0,profile_context_1.buildProfileInstallContext)(i,l,n.extraSkills)},u=r.scope==="global"?(0,kit_install_dispatch_1.installGlobalKit)(r.kit,i,(0,init_install_scope_1.resolveGlobalRoot)(r.kit,""),c,f):(0,kit_install_dispatch_1.installProjectKit)(r.kit,i,r.path,c,f);if(!u.ok)return refused(409,u.reason);const s=(0,install_profile_config_1.readCliVersion)(i);try{s&&(0,install_profile_config_1.stampInstallVersion)(o.configPath,s),(0,install_profile_config_1.writeInstallSettings)(o.configPath,{profile:n.profile??void 0,extraSkills:n.extraSkills,...n.agentModels?{agentModels:n.agentModels}:{}}),(0,install_manifest_1.writeManifest)(o,s)}catch(a){return refused(500,`the kit was refreshed but not stamped: ${a.message}`)}return(0,kits_endpoint_1.clearKitsCache)(),{status:200,body:{ok:!0,kit:r.kit,version:s}}}function previewKitRemoval(i){const e=(0,kit_target_1.targetFrom)(i);if(!e.ok)return refused(e.status,e.error);const{record:t}=e.target,r=removalRefusal(t.scope);if(r)return r;const o=(0,agentkit_home_1.loadAgentkitHome)();return{status:200,body:{ok:!0,paths:(0,kit_remover_1.kitRemovalPaths)(t.kit,t.path).map(n=>o.toDisplayPath(path.join(t.path,n)))}}}function removalRefusal(i){return i!=="global"?null:refused(409,"Global installs cannot be removed from the dashboard.","Delete the kit directory yourself if you mean to; nothing here will do it for you.")}function removeKitInstall(i){const e=(0,kit_target_1.targetFrom)(i);if(!e.ok)return refused(e.status,e.error);const{record:t}=e.target,r=removalRefusal(t.scope);if(r)return r;if(i.confirmKitRoot!==(0,kit_target_1.wireRoot)(t.kitRoot))return refused(400,"confirmKitRoot must repeat the install root exactly");if(!(0,kit_remover_1.removeKit)(t.kit,t.path))return refused(500,"nothing was removed \u2014 the install may already be gone");try{(0,install_registry_1.removeInstall)(t.kitRoot,t.kit)}catch{}return(0,kits_endpoint_1.clearKitsCache)(),{status:200,body:{ok:!0,kit:t.kit}}}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SKILL_DEPENDENCIES=exports.DEFAULT_EXCLUDED_SKILLS=exports.CORE_SKILLS=exports.DEFAULT_PROFILE=exports.PROFILES=void 0,exports.defaultProfileForKit=defaultProfileForKit,exports.resolveEffectiveProfile=resolveEffectiveProfile,exports.withDependencies=withDependencies,exports.isNameOnlyProfile=isNameOnlyProfile,exports.profileSkillNames=profileSkillNames,exports.profileIncludeCategories=profileIncludeCategories,exports.profileExtraSkills=profileExtraSkills,exports.isValidProfile=isValidProfile,exports.profileToSkipDirs=profileToSkipDirs,exports.resolveSkipDirs=resolveSkipDirs;const generate_catalogs_1=require("../gen/generate-catalogs"),retired_skills_1=require("./retired-skills");exports.PROFILES=["core","full","frontend","backend","mobile","fullstack","marketing","assistant"],exports.DEFAULT_PROFILE="core";function defaultProfileForKit(e){return ASSISTANT_PROFILE_KITS.has(e)?"assistant":exports.DEFAULT_PROFILE}function resolveEffectiveProfile(e,t,s,n){return e??(t?s:null)??defaultProfileForKit(n)}const ASSISTANT_PROFILE_KITS=new Set(["hermes","openclaw"]);exports.CORE_SKILLS=new Set(["ak-plan","cook","ak-fix","test","ak-code-review","ak-debug","scout","brainstorm","ship","journal","git","worktree","docs","docs-seeker","find-skills","problem-solving","refactor","context-engineering","research","preview","mermaidjs-v11"]),exports.DEFAULT_EXCLUDED_SKILLS=new Set(["twilio","typesafe-ai","expo","flutter","gsap","shopify","zalo-mini-app","stitch","remotion","shader","threejs","clone-website","pentester","cti-expert","ai-artist","chrome-devtools","chrome-profile","xia","agentize","show-off","mintlify","seo","social-calendar","email-marketing","paid-ads","marketing-analytics","product-marketing","campaign-plan","crm-automation","pr-outreach","growth-referral","aso-app-marketing","video-content-repurposing","fomo-cc","enhance-ux-ax"]);const PROFILE_INCLUDES={frontend:["frontend","design","frameworks"],backend:["backend","database","infrastructure","security"],mobile:["frontend","frameworks","design"],fullstack:["frontend","backend","database","infrastructure","frameworks","design"],marketing:["marketing","design","seo","documents","multimedia","ai-ml"],assistant:[]},PROFILE_EXTRA_SKILLS={marketing:["copywriting","show-off","project-management","frontend-design","agent-browser","project-organization","ak-sowat","enhance-ux-ax"]};exports.SKILL_DEPENDENCIES={"enhance-ux-ax":["seo"]};function withDependencies(e){const t=new Set(e);let s=!0;for(;s;){s=!1;for(const n of[...t])for(const i of exports.SKILL_DEPENDENCIES[n]??[])t.has(i)||(t.add(i),s=!0)}return t}const NAME_ONLY_PROFILES=new Set(["assistant"]),PROFILE_SKILL_NAMES={assistant:["research","problem-solving","brainstorm","context-engineering","ak-advise","ak-plan","project-organization","retro","git","test","document-skills","docs-seeker","media-processing","copywriting","mermaidjs-v11"]};function isNameOnlyProfile(e){return NAME_ONLY_PROFILES.has(e)}function profileSkillNames(e){return e==="full"||e==="core"?[]:PROFILE_SKILL_NAMES[e]??[]}function profileIncludeCategories(e){return e==="full"||e==="core"?[]:PROFILE_INCLUDES[e]}function profileExtraSkills(e){return e==="full"||e==="core"?[]:PROFILE_EXTRA_SKILLS[e]??[]}function isValidProfile(e){return exports.PROFILES.includes(e)}function profileToSkipDirs(e,t){if(t==="full")return[];if(t==="core"){const r=(0,generate_catalogs_1.collectSkills)(e),a=withDependencies(r.filter(o=>!exports.DEFAULT_EXCLUDED_SKILLS.has(o.name)).map(o=>o.name));return r.filter(o=>!a.has(o.name)).map(o=>o.name).sort()}if(NAME_ONLY_PROFILES.has(t)){const r=withDependencies(PROFILE_SKILL_NAMES[t]??[]);return(0,generate_catalogs_1.collectSkills)(e).filter(a=>!r.has(a.name)).map(a=>a.name).sort()}const s=new Set(PROFILE_INCLUDES[t]),n=new Set(PROFILE_EXTRA_SKILLS[t]??[]),i=(0,generate_catalogs_1.collectSkills)(e),l=withDependencies(i.filter(r=>s.has(r.category)||exports.CORE_SKILLS.has(r.name)||n.has(r.name)).map(r=>r.name));return i.filter(r=>!l.has(r.name)).map(r=>r.name).sort()}function resolveSkipDirs(e,t,s=[]){const n=withDependencies(s);return[...new Set([...profileToSkipDirs(e,t),...retired_skills_1.RETIRED_SKILLS])].filter(l=>!n.has(l)).sort()}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SKILL_DEPENDENCIES=exports.DEFAULT_EXCLUDED_SKILLS=exports.CORE_SKILLS=exports.DEFAULT_PROFILE=exports.PROFILES=void 0,exports.defaultProfileForKit=defaultProfileForKit,exports.resolveEffectiveProfile=resolveEffectiveProfile,exports.withDependencies=withDependencies,exports.isNameOnlyProfile=isNameOnlyProfile,exports.profileSkillNames=profileSkillNames,exports.profileIncludeCategories=profileIncludeCategories,exports.profileExtraSkills=profileExtraSkills,exports.profileExcludedCoreSkills=profileExcludedCoreSkills,exports.isValidProfile=isValidProfile,exports.profileToSkipDirs=profileToSkipDirs,exports.resolveSkipDirs=resolveSkipDirs;const generate_catalogs_1=require("../gen/generate-catalogs"),retired_skills_1=require("./retired-skills");exports.PROFILES=["core","full","frontend","backend","mobile","fullstack","gamedev","marketing","assistant"],exports.DEFAULT_PROFILE="core";function defaultProfileForKit(e){return ASSISTANT_PROFILE_KITS.has(e)?"assistant":exports.DEFAULT_PROFILE}function resolveEffectiveProfile(e,t,s,n){return e??(t?s:null)??defaultProfileForKit(n)}const ASSISTANT_PROFILE_KITS=new Set(["hermes","openclaw"]);exports.CORE_SKILLS=new Set(["ak-plan","cook","ak-fix","test","ak-code-review","ak-debug","scout","brainstorm","ship","journal","git","worktree","docs","docs-seeker","find-skills","problem-solving","refactor","context-engineering","research","preview","mermaidjs-v11"]),exports.DEFAULT_EXCLUDED_SKILLS=new Set(["twilio","expo","flutter","gsap","shopify","zalo-mini-app","stitch","remotion","shader","threejs","clone-website","pentester","cti-expert","ai-artist","chrome-devtools","chrome-profile","xia","agentize","show-off","mintlify","seo","social-calendar","email-marketing","paid-ads","marketing-analytics","product-marketing","campaign-plan","crm-automation","pr-outreach","growth-referral","aso-app-marketing","video-content-repurposing","fomo-cc","enhance-ux-ax","gamedev"]);const PROFILE_INCLUDES={frontend:["frontend","design","frameworks"],backend:["backend","database","infrastructure","security"],mobile:["frontend","frameworks","design"],fullstack:["frontend","backend","database","infrastructure","frameworks","design"],gamedev:["gamedev","multimedia"],marketing:["marketing","design","seo","documents","multimedia"],assistant:[]},PROFILE_EXTRA_SKILLS={gamedev:["threejs","shader","ai-artist","ai-multimodal","ui-ux-pro-max","ak-scenario","ak-optimize"],marketing:["ai-artist","ai-multimodal","copywriting","show-off","project-management","frontend-design","agent-browser","project-organization","ak-sowat","enhance-ux-ax"]},PROFILE_EXCLUDED_CORE_SKILLS={marketing:new Set(["ak-code-review","ak-debug","ak-fix","cook","git","refactor","scout","ship","test","worktree"])};exports.SKILL_DEPENDENCIES={"enhance-ux-ax":["seo"]};function withDependencies(e){const t=new Set(e);let s=!0;for(;s;){s=!1;for(const n of[...t])for(const a of exports.SKILL_DEPENDENCIES[n]??[])t.has(a)||(t.add(a),s=!0)}return t}const NAME_ONLY_PROFILES=new Set(["assistant"]),PROFILE_SKILL_NAMES={assistant:["research","problem-solving","brainstorm","context-engineering","ak-advise","ak-plan","project-organization","retro","git","test","document-skills","docs-seeker","media-processing","copywriting","mermaidjs-v11"]};function isNameOnlyProfile(e){return NAME_ONLY_PROFILES.has(e)}function profileSkillNames(e){return e==="full"||e==="core"?[]:PROFILE_SKILL_NAMES[e]??[]}function profileIncludeCategories(e){return e==="full"||e==="core"?[]:PROFILE_INCLUDES[e]}function profileExtraSkills(e){return e==="full"||e==="core"?[]:PROFILE_EXTRA_SKILLS[e]??[]}function profileExcludedCoreSkills(e){return e==="full"||e==="core"?new Set:PROFILE_EXCLUDED_CORE_SKILLS[e]??new Set}function isValidProfile(e){return exports.PROFILES.includes(e)}function profileToSkipDirs(e,t){if(t==="full")return[];if(t==="core"){const r=(0,generate_catalogs_1.collectSkills)(e),i=withDependencies(r.filter(o=>!exports.DEFAULT_EXCLUDED_SKILLS.has(o.name)).map(o=>o.name));return r.filter(o=>!i.has(o.name)).map(o=>o.name).sort()}if(NAME_ONLY_PROFILES.has(t)){const r=withDependencies(PROFILE_SKILL_NAMES[t]??[]);return(0,generate_catalogs_1.collectSkills)(e).filter(i=>!r.has(i.name)).map(i=>i.name).sort()}const s=new Set(PROFILE_INCLUDES[t]),n=new Set(PROFILE_EXTRA_SKILLS[t]??[]),a=profileExcludedCoreSkills(t),l=(0,generate_catalogs_1.collectSkills)(e),c=withDependencies(l.filter(r=>s.has(r.category)||exports.CORE_SKILLS.has(r.name)&&!a.has(r.name)||n.has(r.name)).map(r=>r.name));return l.filter(r=>!c.has(r.name)).map(r=>r.name).sort()}function resolveSkipDirs(e,t,s=[]){const n=withDependencies(s);return[...new Set([...profileToSkipDirs(e,t),...retired_skills_1.RETIRED_SKILLS])].filter(l=>!n.has(l)).sort()}
@@ -1 +1 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,i,t){t===void 0&&(t=i);var n=Object.getOwnPropertyDescriptor(e,i);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[i]}}),Object.defineProperty(r,t,n)}):(function(r,e,i,t){t===void 0&&(t=i),r[t]=e[i]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),__importStar=this&&this.__importStar||(function(){var r=function(e){return r=Object.getOwnPropertyNames||function(i){var t=[];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[t.length]=n);return t},r(e)};return function(e){if(e&&e.__esModule)return e;var i={};if(e!=null)for(var t=r(e),n=0;n<t.length;n++)t[n]!=="default"&&__createBinding(i,e,t[n]);return __setModuleDefault(i,e),i}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.runSkills=runSkills;const fs=__importStar(require("fs")),path=__importStar(require("path")),p=__importStar(require("@clack/prompts")),file_operations_1=require("../file-operations"),install_profile_config_1=require("../install-profile-config"),kit_context_1=require("../kit-context"),kits_1=require("../kits"),logger_1=require("../logger"),install_manifest_1=require("../install-manifest"),skills_remove_1=require("../skills-remove"),skill_profiles_1=require("../skill-profiles"),generate_catalogs_1=require("../../gen/generate-catalogs"),payload_roots_1=require("../payload-roots");function installedSkillNames(r){return fs.existsSync(r)?new Set(fs.readdirSync(r,{withFileTypes:!0}).filter(e=>e.isDirectory()).map(e=>e.name)):new Set}function closeMatches(r,e){const i=r.toLowerCase();return e.filter(t=>t.includes(i)||i.includes(t)||t.slice(0,3)===i.slice(0,3)).slice(0,5)}function usage(){(0,logger_1.printInfo)("Usage:"),(0,logger_1.printInfo)(" agentkit skills pick skills to install (interactive)"),(0,logger_1.printInfo)(" agentkit skills list show the full skill catalog"),(0,logger_1.printInfo)(" agentkit skills add <name\u2026> install one or more named skills"),(0,logger_1.printInfo)(" agentkit skills remove <name\u2026> remove skills added with `add`"),(0,logger_1.printInfo)(" agentkit skills help show full help message")}function printList(r,e){(0,logger_1.printSection)(`Skill catalog (${r.length})`);const i=new Map;for(const t of r)(i.get(t.category)??i.set(t.category,[]).get(t.category)).push(t);for(const t of Object.keys(generate_catalogs_1.CATEGORY_TITLES)){const n=i.get(t);if(!(!n||n.length===0)){console.log(""),console.log(` ${generate_catalogs_1.CATEGORY_TITLES[t]} (${n.length})`);for(const s of n){const c=e.has(s.name)?" \u2713":" ",u=s.description?` \u2014 ${s.description}`:"";console.log(` ${c} ${s.name}${u}`)}}}console.log("")}function installSkills(r,e,i){const t=new Set(r),n=[...(0,skill_profiles_1.withDependencies)(r)].sort(),s=n.filter(l=>!fs.existsSync(path.join(i,payload_roots_1.SKILL_SOURCE_DIR,l)));if(s.length>0)return(0,logger_1.printError)(`Cannot install: ${s.join(", ")} missing from the shipped skills/.`),1;fs.mkdirSync(e.destSkillsDir,{recursive:!0});for(const l of n){const f=path.join(i,payload_roots_1.SKILL_SOURCE_DIR,l);(0,file_operations_1.copyDir)(f,path.join(e.destSkillsDir,l),{suppressSymlinkWarnings:!0})}const c=(0,install_profile_config_1.readInstallSettings)(e.configPath),u=c.profile??(0,skill_profiles_1.defaultProfileForKit)(e.kit),d=[...new Set([...c.extraSkills,...n])].sort();(0,install_profile_config_1.writeInstallSettings)(e.configPath,{profile:c.profile??void 0,extraSkills:d});const o=(0,install_profile_config_1.readCliVersion)(i);o&&(0,install_profile_config_1.stampInstallVersion)(e.configPath,o),(0,install_manifest_1.writeManifest)(e,o);for(const l of r)(0,logger_1.printSuccess)(`Installed ${l} into ${kits_1.kitDefinitions[e.kit].name} (${e.scope}).`);for(const l of n.filter(f=>!t.has(f))){const f=r.filter(g=>(0,skill_profiles_1.withDependencies)([g]).has(l));(0,logger_1.printInfo)(`Also installed ${l} \u2014 required by ${f.join(", ")}.`)}return(0,logger_1.printInfo)(`Recorded in install.extraSkills so re-install keeps them on the ${u} profile.`),0}async function removeSkills(r,e,i,t){const n=(0,install_profile_config_1.readInstallSettings)(e.configPath),s=n.profile??(0,skill_profiles_1.defaultProfileForKit)(e.kit),{extras:c,profileOwned:u}=(0,skills_remove_1.planRemoval)(r,n.extraSkills);for(const a of u)(0,logger_1.printError)(`${a} comes from the ${s} profile, not \`agentkit skills add\`.`),(0,logger_1.printInfo)("Removing it would not stick \u2014 the next `agentkit init` copies it back."),(0,logger_1.printInfo)("Install a narrower profile instead: agentkit init --profile <name>");if(c.length===0)return u.length>0?1:0;if(t.isTTY){const a=await t.confirm({message:`Delete ${c.map(m=>path.join(e.destSkillsDir,m)).join(", ")}?`,initialValue:!1});if(p.isCancel(a)||!a)return(0,logger_1.printInfo)("Nothing removed."),0}const d=(0,skills_remove_1.removeSkillDirs)(c,e.destSkillsDir);for(const a of d.rejected)(0,logger_1.printError)(`Refused to delete ${a}: it does not resolve inside ${e.destSkillsDir}.`);const o=[...d.removed,...d.missing],l=n.extraSkills.filter(a=>!o.includes(a));(0,install_profile_config_1.writeInstallSettings)(e.configPath,{profile:n.profile??void 0,extraSkills:l});const f=(0,install_profile_config_1.readCliVersion)(i);f&&(0,install_profile_config_1.stampInstallVersion)(e.configPath,f),(0,install_manifest_1.writeManifest)(e,f);for(const a of d.removed)(0,logger_1.printSuccess)(`Removed ${a} from ${kits_1.kitDefinitions[e.kit].name} (${e.scope}).`);for(const a of d.missing)(0,logger_1.printInfo)(`${a} was already gone from disk; cleared its install.extraSkills entry.`);const g=installedSkillNames(e.destSkillsDir);for(const[a,m]of(0,skills_remove_1.danglingDependencies)(o,g,skill_profiles_1.SKILL_DEPENDENCIES)){const k=n.extraSkills.includes(a)?`remove ${a} too`:`narrow the ${s} profile that carries it`;(0,logger_1.printWarning)(`${a} is still installed and requires ${m} \u2014 re-add it (\`agentkit skills add ${m}\`), or ${k}. The next \`agentkit init\` re-adds ${m} while ${a} stays installed.`)}return d.rejected.length>0||u.length>0?1:0}async function interactivePick(r,e,i){const t=installedSkillNames(e.destSkillsDir),n=await p.autocompleteMultiselect({message:"Select skills to install",placeholder:"Type to search by name, category, or description",required:!1,options:r.map(s=>({value:s.name,label:`${s.name}${t.has(s.name)?" \u2713":""}`,hint:`[${s.category}] ${s.description}`.slice(0,80)}))});return p.isCancel(n)||n.length===0?((0,logger_1.printInfo)("Nothing selected."),0):installSkills(n,e,i)}async function runSkills(r,e={}){const i=e.cwd??process.cwd(),t=e.repoRoot??path.resolve(__dirname,"..","..",".."),n={confirm:e.confirm??p.confirm,isTTY:e.isTTY??process.stdout.isTTY},[s,...c]=r,u=(0,generate_catalogs_1.collectSkills)(t),d=u.map(o=>o.name);if(s==="list"){const o=(0,kit_context_1.soleContext)(i);return printList(u,o?installedSkillNames(o.destSkillsDir):new Set),0}if(s==="add"||s==="remove"){if(c.length===0)return usage(),1;const o=c.filter(f=>!d.includes(f));if(o.length>0){(0,logger_1.printError)(`Unknown skill(s): ${o.join(", ")}`);for(const f of o){const g=closeMatches(f,d);g.length>0&&(0,logger_1.printInfo)(`Did you mean (for ${f}): ${g.join(", ")}?`)}return(0,logger_1.printInfo)("Run `agentkit skills list` to see the catalog."),1}const l=await(0,kit_context_1.resolveContext)(i);return l?s==="remove"?removeSkills(c,l,t,n):installSkills(c,l,t):1}if(!s){if(!n.isTTY){const l=(0,kit_context_1.soleContext)(i);return printList(u,l?installedSkillNames(l.destSkillsDir):new Set),usage(),0}const o=await(0,kit_context_1.resolveContext)(i);return o?interactivePick(u,o,t):1}return(0,logger_1.printError)(`Unknown subcommand: ${s}`),usage(),1}
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(s,e,i,n){n===void 0&&(n=i);var t=Object.getOwnPropertyDescriptor(e,i);(!t||("get"in t?!e.__esModule:t.writable||t.configurable))&&(t={enumerable:!0,get:function(){return e[i]}}),Object.defineProperty(s,n,t)}):(function(s,e,i,n){n===void 0&&(n=i),s[n]=e[i]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),__importStar=this&&this.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(i){var n=[];for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&(n[n.length]=t);return n},s(e)};return function(e){if(e&&e.__esModule)return e;var i={};if(e!=null)for(var n=s(e),t=0;t<n.length;t++)n[t]!=="default"&&__createBinding(i,e,n[t]);return __setModuleDefault(i,e),i}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.runSkills=runSkills;const fs=__importStar(require("fs")),path=__importStar(require("path")),p=__importStar(require("@clack/prompts")),file_operations_1=require("../file-operations"),install_profile_config_1=require("../install-profile-config"),kits_1=require("../kits"),logger_1=require("../logger"),install_manifest_1=require("../install-manifest"),skills_remove_1=require("../skills-remove"),skill_profiles_1=require("../skill-profiles"),generate_catalogs_1=require("../../gen/generate-catalogs"),payload_roots_1=require("../payload-roots"),skill_companion_assets_1=require("./skill-companion-assets"),skills_context_options_1=require("./skills-context-options");function installedSkillNames(s){return fs.existsSync(s)?new Set(fs.readdirSync(s,{withFileTypes:!0}).filter(e=>e.isDirectory()).map(e=>e.name)):new Set}function closeMatches(s,e){const i=s.toLowerCase();return e.filter(n=>n.includes(i)||i.includes(n)||n.slice(0,3)===i.slice(0,3)).slice(0,5)}function usage(){(0,logger_1.printInfo)("Usage:"),(0,logger_1.printInfo)(" agentkit skills [options] pick skills to install (interactive)"),(0,logger_1.printInfo)(" agentkit skills list [options] show the full skill catalog"),(0,logger_1.printInfo)(" agentkit skills add <name\u2026> [options] install one or more named skills"),(0,logger_1.printInfo)(" agentkit skills remove <name\u2026> [options] remove skills added with `add`"),(0,logger_1.printInfo)(" agentkit skills help show full help message"),(0,logger_1.printInfo)(""),(0,logger_1.printInfo)("Options:"),(0,logger_1.printInfo)(" --project, -p target the current project directory"),(0,logger_1.printInfo)(" --global, -g target a global kit install"),(0,logger_1.printInfo)(" --kit, -k <name> target a specific kit by name")}function printList(s,e){(0,logger_1.printSection)(`Skill catalog (${s.length})`);const i=new Map;for(const n of s)(i.get(n.category)??i.set(n.category,[]).get(n.category)).push(n);for(const n of Object.keys(generate_catalogs_1.CATEGORY_TITLES)){const t=i.get(n);if(!(!t||t.length===0)){console.log(""),console.log(` ${generate_catalogs_1.CATEGORY_TITLES[n]} (${t.length})`);for(const r of t){const c=e.has(r.name)?" \u2713":" ",d=r.description?` \u2014 ${r.description}`:"";console.log(` ${c} ${r.name}${d}`)}}}console.log("")}function installSkills(s,e,i){const n=new Set(s),t=[...(0,skill_profiles_1.withDependencies)(s)].sort(),r=t.filter(o=>!fs.existsSync(path.join(i,payload_roots_1.SKILL_SOURCE_DIR,o)));if(r.length>0)return(0,logger_1.printError)(`Cannot install: ${r.join(", ")} missing from the shipped skills/.`),1;fs.mkdirSync(e.destSkillsDir,{recursive:!0});for(const o of t){const f=path.join(i,payload_roots_1.SKILL_SOURCE_DIR,o);(0,file_operations_1.copyDir)(f,path.join(e.destSkillsDir,o),{suppressSymlinkWarnings:!0})}const c=fs.existsSync(e.configPath);let d=(0,skill_profiles_1.defaultProfileForKit)(e.kit),u={gamedevInstalled:!1,gamedevRemoved:!1,seoInstalled:!1,seoRemoved:!1};if(c){const o=(0,install_profile_config_1.readInstallSettings)(e.configPath);d=o.profile??(0,skill_profiles_1.defaultProfileForKit)(e.kit);const f=[...new Set([...o.extraSkills,...t])].sort();(0,install_profile_config_1.writeInstallSettings)(e.configPath,{profile:o.profile??void 0,extraSkills:f}),u=(0,skill_companion_assets_1.syncSkillCompanionAssets)(e,i,d,f,{addedSkills:t});const a=(0,install_profile_config_1.readCliVersion)(i);a&&(0,install_profile_config_1.stampInstallVersion)(e.configPath,a),(0,install_manifest_1.writeManifest)(e,a)}for(const o of s)(0,logger_1.printSuccess)(`Installed ${o} into ${kits_1.kitDefinitions[e.kit].name} (${e.scope}).`);for(const o of t.filter(f=>!n.has(f))){const f=s.filter(a=>(0,skill_profiles_1.withDependencies)([a]).has(o));(0,logger_1.printInfo)(`Also installed ${o} \u2014 required by ${f.join(", ")}.`)}return u.gamedevInstalled&&(0,logger_1.printInfo)("Also installed 38 gamedev specialist agents and 12 game-studio rules."),u.seoInstalled&&(0,logger_1.printInfo)("Also installed 18 seo specialist agents and updated routing rules."),c?(0,logger_1.printInfo)(`Recorded in install.extraSkills so re-install keeps them on the ${d} profile.`):(0,logger_1.printInfo)(`Installed standalone into ${e.destSkillsDir}.`),0}async function removeSkills(s,e,i,n){const t=fs.existsSync(e.configPath),r=t?(0,install_profile_config_1.readInstallSettings)(e.configPath):{profile:null,extraSkills:[]},c=r.profile??(0,skill_profiles_1.defaultProfileForKit)(e.kit),{extras:d,profileOwned:u}=t?(0,skills_remove_1.planRemoval)(s,r.extraSkills):{extras:s,profileOwned:[]};for(const l of u)(0,logger_1.printError)(`${l} comes from the ${c} profile, not \`agentkit skills add\`.`),(0,logger_1.printInfo)("Removing it would not stick \u2014 the next `agentkit init` copies it back."),(0,logger_1.printInfo)("Install a narrower profile instead: agentkit init --profile <name>");if(d.length===0)return u.length>0?1:0;if(n.isTTY){const l=await n.confirm({message:`Delete ${d.map(g=>path.join(e.destSkillsDir,g)).join(", ")}?`,initialValue:!1});if(p.isCancel(l)||!l)return(0,logger_1.printInfo)("Nothing removed."),0}const o=(0,skills_remove_1.removeSkillDirs)(d,e.destSkillsDir);for(const l of o.rejected)(0,logger_1.printError)(`Refused to delete ${l}: it does not resolve inside ${e.destSkillsDir}.`);const f=[...o.removed,...o.missing];let a={gamedevInstalled:!1,gamedevRemoved:!1,seoInstalled:!1,seoRemoved:!1};if(t){const l=r.extraSkills.filter(k=>!f.includes(k));(0,install_profile_config_1.writeInstallSettings)(e.configPath,{profile:r.profile??void 0,extraSkills:l}),a=(0,skill_companion_assets_1.syncSkillCompanionAssets)(e,i,c,l,{removedSkills:f});const g=(0,install_profile_config_1.readCliVersion)(i);g&&(0,install_profile_config_1.stampInstallVersion)(e.configPath,g),(0,install_manifest_1.writeManifest)(e,g)}for(const l of o.removed)(0,logger_1.printSuccess)(`Removed ${l} from ${kits_1.kitDefinitions[e.kit].name} (${e.scope}).`);for(const l of o.missing)(0,logger_1.printInfo)(t?`${l} was already gone from disk; cleared its install.extraSkills entry.`:`${l} was not installed in ${e.destSkillsDir}.`);a.gamedevRemoved&&(0,logger_1.printInfo)("Also removed 38 gamedev specialist agents and 12 game-studio rules."),a.seoRemoved&&(0,logger_1.printInfo)("Also removed 18 seo specialist agents.");const m=installedSkillNames(e.destSkillsDir);for(const[l,g]of(0,skills_remove_1.danglingDependencies)(f,m,skill_profiles_1.SKILL_DEPENDENCIES)){const k=!t||r.extraSkills.includes(l)?`remove ${l} too`:`narrow the ${c} profile that carries it`;(0,logger_1.printWarning)(`${l} is still installed and requires ${g} \u2014 re-add it (\`agentkit skills add ${g}\`), or ${k}. The next \`agentkit init\` re-adds ${g} while ${l} stays installed.`)}return o.rejected.length>0||u.length>0?1:0}async function interactivePick(s,e,i){const n=installedSkillNames(e.destSkillsDir),t=await p.autocompleteMultiselect({message:"Select skills to install",placeholder:"Type to search by name, category, or description",required:!1,options:s.map(r=>({value:r.name,label:`${r.name}${n.has(r.name)?" \u2713":""}`,hint:`[${r.category}] ${r.description}`.slice(0,80)}))});return p.isCancel(t)||t.length===0?((0,logger_1.printInfo)("Nothing selected."),0):installSkills(t,e,i)}async function runSkills(s,e={}){const i=e.cwd??process.cwd(),n=e.repoRoot??path.resolve(__dirname,"..","..",".."),t={confirm:e.confirm??p.confirm,isTTY:e.isTTY??process.stdout.isTTY},r=(0,skills_context_options_1.parseSkillsArgs)(s);if(!r.ok)return usage(),1;const[c,...d]=r.positionals,{flags:u}=r,o=(0,generate_catalogs_1.collectSkills)(n),f=o.map(a=>a.name);if(c==="list"){const a=(0,skills_context_options_1.soleSkillsContext)(i,u);return printList(o,a?installedSkillNames(a.destSkillsDir):new Set),0}if(c==="add"||c==="remove"){if(d.length===0)return usage(),1;const a=d.filter(l=>!f.includes(l));if(a.length>0){(0,logger_1.printError)(`Unknown skill(s): ${a.join(", ")}`);for(const l of a){const g=closeMatches(l,f);g.length>0&&(0,logger_1.printInfo)(`Did you mean (for ${l}): ${g.join(", ")}?`)}return(0,logger_1.printInfo)("Run `agentkit skills list` to see the catalog."),1}const m=await(0,skills_context_options_1.resolveSkillsContext)(i,u,!!t.isTTY);return m?c==="remove"?removeSkills(d,m,n,t):installSkills(d,m,n):1}if(!c){if(!t.isTTY){const m=(0,skills_context_options_1.soleSkillsContext)(i,u);return printList(o,m?installedSkillNames(m.destSkillsDir):new Set),usage(),0}const a=await(0,skills_context_options_1.resolveSkillsContext)(i,u,!!t.isTTY);return a?interactivePick(o,a,n):1}return(0,logger_1.printError)(`Unknown subcommand: ${c}`),usage(),1}
@@ -0,0 +1 @@
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,e,n,s){s===void 0&&(s=n);var r=Object.getOwnPropertyDescriptor(e,n);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,s,r)}):(function(t,e,n,s){s===void 0&&(s=n),t[s]=e[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),__importStar=this&&this.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var s=[];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(s[s.length]=r);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var s=t(e),r=0;r<s.length;r++)s[r]!=="default"&&__createBinding(n,e,s[r]);return __setModuleDefault(n,e),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.agentsDirFor=agentsDirFor,exports.installAgentsForKit=installAgentsForKit,exports.syncSkillCompanionAssets=syncSkillCompanionAssets;const fs=__importStar(require("fs")),os=__importStar(require("os")),path=__importStar(require("path")),checks_rules_1=require("../doctor/checks-rules"),kit_layout_1=require("../doctor/kit-layout"),install_profile_config_1=require("../install-profile-config"),antigravity_1=require("../kit-installers/antigravity"),claude_agents_1=require("../kit-installers/claude-agents"),codex_subagents_1=require("../kit-installers/codex-subagents"),cursor_agents_1=require("../kit-installers/cursor-agents"),gamedev_profile_assets_1=require("../kit-installers/gamedev-profile-assets"),gamedev_mcp_1=require("../kit-installers/gamedev-mcp"),grok_agents_1=require("../kit-installers/grok-agents"),kimi_agents_1=require("../kit-installers/kimi-agents"),opencode_agents_1=require("../kit-installers/opencode-agents"),profile_context_1=require("../kit-installers/profile-context"),routing_rule_prune_1=require("../kit-installers/routing-rule-prune"),omp_home_1=require("../omp-home"),payload_roots_1=require("../payload-roots"),skill_profiles_1=require("../skill-profiles");function agentsDirFor(t){return t.kit==="hermes"||t.kit==="openclaw"||t.kit==="pi"?null:t.kit==="antigravity"?path.join(t.kitRoot,antigravity_1.ANTIGRAVITY_PLUGIN_REL,"agents"):t.kit==="omp"?path.join(path.dirname(t.kitRoot),omp_home_1.OMP_AGENTS_DIR):path.join(t.kitRoot,"agents")}function installAgentsForKit(t,e,n){if(fs.existsSync(e))switch(fs.mkdirSync(n,{recursive:!0}),t.kit){case"claude":{(0,gamedev_profile_assets_1.copyMarkdownAgents)(e,n);const s=(0,install_profile_config_1.readInstallSettings)(t.configPath).agentModels??claude_agents_1.DEFAULT_CLAUDE_AGENT_MODELS;(0,claude_agents_1.applyClaudeAgentModels)(n,s);break}case"augment":case"antigravity":(0,gamedev_profile_assets_1.copyMarkdownAgents)(e,n);break;case"cursor":(0,cursor_agents_1.convertAgentsToCursor)(e,n);break;case"opencode":(0,opencode_agents_1.convertAgentsToOpenCode)(e,n);break;case"codex":(0,codex_subagents_1.convertAgentsToCodexToml)(e,n);break;case"kimi":(0,kimi_agents_1.convertAgentsToKimi)(e,n);break;case"grok":(0,grok_agents_1.convertAgentsToGrok)(e,n);break;case"devin":(0,gamedev_profile_assets_1.writeDevinGamedevAgents)(e,n);break;case"omp":(0,gamedev_profile_assets_1.writeOmpGamedevAgents)(e,n);break}}function installSeoAgentsForKit(t,e,n){const s=path.join(e,payload_roots_1.AGENTS_SOURCE_DIR);if(!fs.existsSync(s))return!1;const r=fs.readdirSync(s).filter(o=>/^seo-[a-z0-9-]+\.md$/.test(o)).sort();if(r.length===0)return!1;const i=fs.mkdtempSync(path.join(os.tmpdir(),"agentkit-seo-agents-"));try{for(const o of r)fs.copyFileSync(path.join(s,o),path.join(i,o));return installAgentsForKit(t,i,n),!0}finally{fs.rmSync(i,{recursive:!0,force:!0})}}function syncRoutingRules(t,e,n,s){if(kit_layout_1.KIT_LAYOUTS[t.kit].hasAgentkitSkills===!1)return;const r=(0,checks_rules_1.rulesDirFor)(t);if(!fs.existsSync(r))return;const i=path.join(e,payload_roots_1.RULES_SOURCE_DIR);for(const o of routing_rule_prune_1.PRUNED_RULES){const l=o.replace(/\.md$/,""),d=fs.existsSync(path.join(r,`${l}.md`))||fs.existsSync(path.join(r,`${l}.mdc`)),c=path.join(i,o);d&&fs.existsSync(c)&&(0,gamedev_profile_assets_1.writeRuleInHostFormat)(r,l,fs.readFileSync(c,"utf8"),t.kit==="omp"?"omp":void 0)}(0,routing_rule_prune_1.pruneRoutingRulesForInstall)(e,r,(0,skill_profiles_1.resolveSkipDirs)(e,n,[...s]))}function syncSkillCompanionAssets(t,e,n,s,r={}){const i=new Set(r.addedSkills??[]),o=new Set(r.removedSkills??[]),l=(0,profile_context_1.buildProfileInstallContext)(e,n,s),d=(0,gamedev_profile_assets_1.carriesGamedevCompanion)(l),c=(0,gamedev_profile_assets_1.carriesSeoCompanion)(l),u=(0,checks_rules_1.rulesDirFor)(t),a=agentsDirFor(t);let m=!1,g=!1,_=!1,p=!1;if(i.has("gamedev")||d)fs.existsSync(u)&&(0,gamedev_profile_assets_1.syncGamedevRules)(u,l,e,t.kit==="omp"?"omp":void 0),a&&installAgentsForKit(t,path.join(e,gamedev_profile_assets_1.GAMEDEV_AGENTS_SUBDIR),a),(0,gamedev_mcp_1.syncGamedevMcpForKit)(t,!0),m=i.has("gamedev");else if(o.has("gamedev")){const f=t.kit==="omp",v=fs.existsSync(u)?f?(0,gamedev_profile_assets_1.removeOmpManagedGamedevRules)(u):(0,gamedev_profile_assets_1.removeGamedevRulesFromDir)(u):0,k=a?f?(0,gamedev_profile_assets_1.removeOmpManagedGamedevAgents)(e,a):(0,gamedev_profile_assets_1.removeGamedevAgentsFromDir)(e,a):0,y=(0,gamedev_mcp_1.syncGamedevMcpForKit)(t,!1);g=v>0||k>0||y}if(i.has("seo")||c){const f=a?installSeoAgentsForKit(t,e,a):!1;_=i.has("seo")&&f}else o.has("seo")&&!c&&(p=(a?t.kit==="omp"?(0,gamedev_profile_assets_1.removeOmpManagedSeoAgents)(a):(0,gamedev_profile_assets_1.removeSeoAgentsFromDir)(a):0)>0);return syncRoutingRules(t,e,n,s),{gamedevInstalled:m,gamedevRemoved:g,seoInstalled:_,seoRemoved:p}}
@@ -0,0 +1 @@
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,o){o===void 0&&(o=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,o,i)}):(function(e,t,n,o){o===void 0&&(o=n),e[o]=t[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var o=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(o[o.length]=i);return o},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var o=e(t),i=0;i<o.length;i++)o[i]!=="default"&&__createBinding(n,t,o[i]);return __setModuleDefault(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseSkillsArgs=parseSkillsArgs,exports.soleSkillsContext=soleSkillsContext,exports.resolveSkillsContext=resolveSkillsContext;const fs=__importStar(require("fs")),path=__importStar(require("path")),p=__importStar(require("@clack/prompts")),home_dir_1=require("../home-dir"),init_install_scope_1=require("../init-install-scope"),kit_context_1=require("../kit-context"),kits_1=require("../kits"),logger_1=require("../logger"),PROJECT_CAPABLE_KITS=kit_context_1.GLOBAL_KITS.filter(e=>(0,kits_1.supportsProjectInstall)(e));function hasProjectKitDir(e,t){const n=e==="pi"?".pi":kits_1.kitDefinitions[e].dir;return fs.existsSync(path.join(t,n))}function parseSkillsArgs(e){const t=[];let n=!1,o=!1,i;for(let s=0;s<e.length;s++){const r=e[s];if(r==="--project"||r==="-p"){n=!0;continue}if(r==="--global"||r==="-g"){o=!0;continue}if(r==="--kit"||r==="-k"||r.startsWith("--kit=")||r.startsWith("-k=")){const u=r.includes("="),a=u?r.slice(r.indexOf("=")+1):e[s+1];if(u||(s+=1),!a||!u&&a.startsWith("-"))return(0,logger_1.printError)("--kit needs a kit name, e.g. `--kit claude`."),{ok:!1};const c=(0,kits_1.normalizeKitName)(a);if(!c)return(0,logger_1.printError)(`Unknown kit: "${a}". Supported kits: ${kits_1.ALL_KIT_NAMES.join(", ")}.`),{ok:!1};i=c;continue}if(r.startsWith("-"))return(0,logger_1.printError)(`Unknown option: ${r}`),{ok:!1};t.push(r)}if(n&&o)return(0,logger_1.printError)("Cannot combine --project and --global."),{ok:!1};const l=n?"project":o?"global":void 0;return l==="project"&&i&&!(0,kits_1.supportsProjectInstall)(i)?((0,logger_1.printError)(`${kits_1.kitDefinitions[i].name} is a global-only kit and does not support --project.`),{ok:!1}):l==="global"&&i&&!(0,kits_1.supportsGlobalInstall)(i)?((0,logger_1.printError)(`${kits_1.kitDefinitions[i].name} does not support --global.`),{ok:!1}):{ok:!0,positionals:t,flags:{scope:l,kit:i}}}function projectCandidatesForCwd(e){const t=PROJECT_CAPABLE_KITS.filter(i=>(0,init_install_scope_1.isKitInstalledInProject)(i,e));if(t.length>0)return t.map(i=>(0,kit_context_1.projectContext)(i,e));const n=PROJECT_CAPABLE_KITS.filter(i=>hasProjectKitDir(i,e));return n.length>0?n.map(i=>(0,kit_context_1.projectContext)(i,e)):PROJECT_CAPABLE_KITS.filter(i=>(0,init_install_scope_1.isKitInstalledGlobally)(i)).map(i=>(0,kit_context_1.projectContext)(i,e))}function soleSkillsContext(e,t){if(!t.scope&&!t.kit)return(0,kit_context_1.soleContext)(e);if(t.scope==="project"){if((0,home_dir_1.isHomeDir)(e))return null;if(t.kit)return(0,kit_context_1.projectContext)(t.kit,e);const o=projectCandidatesForCwd(e);return o.length===1?o[0]:null}if(t.scope==="global"){if(t.kit)return(0,init_install_scope_1.isKitInstalledGlobally)(t.kit)?(0,kit_context_1.globalContext)(t.kit):null;const o=kit_context_1.GLOBAL_KITS.filter(i=>(0,init_install_scope_1.isKitInstalledGlobally)(i)).map(kit_context_1.globalContext);return o.length===1?o[0]:null}const n=t.kit;return!(0,home_dir_1.isHomeDir)(e)&&(0,kits_1.supportsProjectInstall)(n)&&(0,init_install_scope_1.isKitInstalledInProject)(n,e)?(0,kit_context_1.projectContext)(n,e):(0,kits_1.supportsGlobalInstall)(n)&&(0,init_install_scope_1.isKitInstalledGlobally)(n)?(0,kit_context_1.globalContext)(n):!(0,home_dir_1.isHomeDir)(e)&&(0,kits_1.supportsProjectInstall)(n)&&hasProjectKitDir(n,e)?(0,kit_context_1.projectContext)(n,e):null}async function resolveSkillsContext(e,t,n){if(!t.scope&&!t.kit)return(0,kit_context_1.resolveContext)(e);if(t.scope==="project"){if((0,home_dir_1.isHomeDir)(e))return(0,logger_1.printError)("Cannot use --project in the home directory. Run inside a project or use --global."),null;if(t.kit)return(0,kit_context_1.projectContext)(t.kit,e);const l=projectCandidatesForCwd(e);if(l.length===1)return l[0];if(l.length===0)return(0,logger_1.printError)("Could not determine which kit to target in this project."),(0,logger_1.printInfo)("Pass --kit <name>, e.g. `agentkit skills add <skill> --project --kit claude`."),null;if(!n)return(0,logger_1.printError)(`Multiple kits available for --project: ${l.map(r=>r.kit).join(", ")}.`),(0,logger_1.printInfo)("Pass --kit <name>, e.g. `agentkit skills add <skill> --project --kit claude`."),null;const s=await p.select({message:"Which kit to target in this project?",options:l.map(r=>({value:r.kit,label:`${kits_1.kitDefinitions[r.kit].name} (project)`}))});return p.isCancel(s)?null:l.find(r=>r.kit===s)??null}if(t.scope==="global"){if(t.kit)return(0,init_install_scope_1.isKitInstalledGlobally)(t.kit)?(0,kit_context_1.globalContext)(t.kit):((0,logger_1.printError)(`No global install of ${kits_1.kitDefinitions[t.kit].name} found. Run \`agentkit init ${t.kit} --global\` first.`),null);const l=kit_context_1.GLOBAL_KITS.filter(r=>(0,init_install_scope_1.isKitInstalledGlobally)(r)).map(kit_context_1.globalContext);if(l.length===0)return(0,logger_1.printError)("No global AgentKit install detected. Run `agentkit init --global` first."),null;if(l.length===1)return l[0];if(!n)return(0,logger_1.printError)(`Multiple global kits installed: ${l.map(r=>r.kit).join(", ")}.`),(0,logger_1.printInfo)("Pass --kit <name>, e.g. `agentkit skills add <skill> --global --kit claude`."),null;const s=await p.select({message:"Which global kit to target?",options:l.map(r=>({value:r.kit,label:`${kits_1.kitDefinitions[r.kit].name} (global)`}))});return p.isCancel(s)?null:l.find(r=>r.kit===s)??null}const o=t.kit,i=soleSkillsContext(e,t);return i||((0,logger_1.printError)(`No install of ${kits_1.kitDefinitions[o].name} found. Run \`agentkit init ${o}\` or add --project to install skills into this repository.`),null)}
@@ -1 +1 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,e,o,n){n===void 0&&(n=o);var i=Object.getOwnPropertyDescriptor(e,o);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[o]}}),Object.defineProperty(t,n,i)}):(function(t,e,o,n){n===void 0&&(n=o),t[n]=e[o]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),__importStar=this&&this.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(o){var n=[];for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(n[n.length]=i);return n},t(e)};return function(e){if(e&&e.__esModule)return e;var o={};if(e!=null)for(var n=t(e),i=0;i<n.length;i++)n[i]!=="default"&&__createBinding(o,e,n[i]);return __setModuleDefault(o,e),o}})(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.supportsGlobalInstall=void 0,exports.selectProfile=selectProfile,exports.isProjectBasedDetection=isProjectBasedDetection,exports.showMenu=showMenu,exports.kitGroup=kitGroup,exports.selectKit=selectKit,exports.selectKitsGlobal=selectKitsGlobal,exports.selectHermesProfile=selectHermesProfile,exports.selectTargetsToRemove=selectTargetsToRemove,exports.confirmUndetectedHost=confirmUndetectedHost,exports.selectClaudeAgentModels=selectClaudeAgentModels,exports.askPathWithDefault=askPathWithDefault;const p=__importStar(require("@clack/prompts")),fs=__importStar(require("fs")),path=__importStar(require("path")),chalk_1=__importDefault(require("chalk")),home_dir_1=require("./home-dir"),logger_1=require("./logger"),kits_1=require("./kits"),init_install_scope_1=require("./init-install-scope"),hermes_home_1=require("./hermes-home"),skill_profiles_1=require("./skill-profiles"),claude_agents_1=require("./kit-installers/claude-agents"),PROFILE_HINTS={core:"engineering default \u2014 skips vendor suites (twilio, expo, gsap, \u2026)",full:"all skills",frontend:"core + frontend, design, frameworks",backend:"core + backend, database, infra, security",mobile:"core + frontend, frameworks, design",fullstack:"core + frontend, backend, data, infra",marketing:"core + marketing, design, seo, docs, media, AI + 7 named extras",assistant:"15 host-portable skills (no subagents, no CLI)"};async function selectProfile(t=skill_profiles_1.DEFAULT_PROFILE){const e=await p.select({message:"Select install profile",initialValue:t,options:Object.keys(PROFILE_HINTS).map(o=>({value:o,label:o,hint:PROFILE_HINTS[o]}))});return p.isCancel(e)?null:e}function isProjectBasedDetection(t,e){if((0,home_dir_1.isHomeDir)(t))return!1;const o=path.join(t,kits_1.kitDefinitions[e].dir);return fs.existsSync(o)&&(fs.statSync(o).isDirectory()||fs.statSync(o).isFile())}function showMenu(t){const e=(0,kits_1.detectCurrentKit)(t),o=e?e.kit:null;if((0,logger_1.printSection)("Select AI Development Kit"),o){console.log("");const i=e&&isProjectBasedDetection(t,o)?"project":"global CLI";(0,logger_1.printInfo)(chalk_1.default.bold("Detected:")+" "+chalk_1.default.yellow.bold(kits_1.kitDefinitions[o].name)+" "+chalk_1.default.dim(`(${i})`)),(0,logger_1.printInfo)(chalk_1.default.dim("Select the same kit to update, or choose a different one to switch.")),console.log("")}else{const n=(0,kits_1.detectAllGlobalCLIs)();if(n.length>1){console.log("");const i=n.map(l=>kits_1.kitDefinitions[l].name).join(", ");(0,logger_1.printInfo)(chalk_1.default.bold("Multiple hosts detected:")+" "+chalk_1.default.cyan(i)),(0,logger_1.printInfo)(chalk_1.default.dim("No primary host selected. Choose which one to configure.")),console.log("")}else n.length===1?(console.log(""),(0,logger_1.printInfo)(chalk_1.default.bold("Detected:")+" "+chalk_1.default.yellow.bold(kits_1.kitDefinitions[n[0]].name)+" "+chalk_1.default.dim("(installed on this machine)")),(0,logger_1.printInfo)(chalk_1.default.dim("Select the same kit to update, or choose a different one to switch.")),console.log("")):(console.log(""),(0,logger_1.printWarning)(chalk_1.default.bold("Note:")+" Each kit is designed for its specific platform. Choose carefully!"),console.log(""))}}const GROUP_LABELS={coding:"Coding agents",personal:"Personal agents"},GROUP_ORDER=["coding","personal"],MENU_KITS=[{kit:"claude",label:"\u{1F535} Claude Code",hint:"Shared for Augment + Anthropic CLI + IDE",group:"coding"},{kit:"opencode",label:"\u26AB OpenCode",hint:"Open-source AI coding assistant",group:"coding"},{kit:"cursor",label:"\u{1F7E3} Cursor AI",hint:"AI-first code editor (Desktop + CLI)",group:"coding"},{kit:"antigravity",label:"\u{1F7E2} Antigravity",hint:"Google's agentic AI IDE (Gemini)",group:"coding"},{kit:"codex",label:"\u26AA OpenAI Codex",hint:"OpenAI coding agent for CLI and IDE",group:"coding"},{kit:"kimi",label:"\u{1F319} Kimi Code",hint:"Moonshot's CLI coding agent (kimi)",group:"coding"},{kit:"grok",label:"\u{1F6F0}\uFE0F Grok Build",hint:"xAI's CLI coding agent (grok)",group:"coding"},{kit:"omp",label:"\u{1F967} Oh My Pi",hint:"Terminal coding agent with LSP + DAP (omp)",group:"coding"},{kit:"pi",label:"\u03C0 Pi",hint:"Minimal terminal coding harness; omp forks this (pi)",group:"coding"},{kit:"devin",label:"\u{1F9E0} Devin CLI",hint:"Cognition's local coding agent (devin)",group:"coding"},{kit:"hermes",label:"\u{1F54A}\uFE0F Hermes Agent",hint:"Nous Research's personal agent (hermes)",group:"personal"},{kit:"openclaw",label:"\u{1F99E} OpenClaw",hint:"Personal agent across your chat channels (openclaw)",group:"personal"}];function kitsInGroup(t){return MENU_KITS.filter(e=>e.group===t)}function kitGroup(t){return MENU_KITS.find(e=>e.kit===t)?.group??"coding"}function projectKitsInGroup(t){return kitsInGroup(t).filter(({kit:e})=>(0,kits_1.supportsProjectInstall)(e))}async function selectKit(t){const e=(0,home_dir_1.isHomeDir)(t),o=s=>e?(0,init_install_scope_1.isKitInstalledGlobally)(s):(0,init_install_scope_1.isKitInstalledInProject)(s,t),n=e?kitsInGroup:projectKitsInGroup,i=GROUP_ORDER.flatMap(n),l=GROUP_ORDER.filter(s=>n(s).length>0),a=i.find(({kit:s})=>o(s))?.kit??i.find(({kit:s})=>(0,kits_1.isHostInstalled)(s))?.kit??i[0].kit,r=await p.select({message:"Select a kit to install",initialValue:a,options:l.flatMap(s=>n(s).map(({kit:c,label:u,hint:d})=>{const f=o(c)?chalk_1.default.green.bold(" [UPDATE]"):"",g=(0,kits_1.isHostInstalled)(c)?chalk_1.default.green(" \u2713"):chalk_1.default.dim(" (not detected)"),h=l.length>1?`${GROUP_LABELS[s]} \u2014 `:"";return{value:c,label:u+g+f,hint:h+d}}))});return p.isCancel(r)?null:r}async function selectKitsGlobal(){const t=MENU_KITS.filter(({kit:n})=>(0,init_install_scope_1.isKitInstalledGlobally)(n)).map(({kit:n})=>n),e=({kit:n,label:i,hint:l})=>{const a=(0,init_install_scope_1.isKitInstalledGlobally)(n)?chalk_1.default.green.bold(" [UPDATE]"):"",r=(0,kits_1.isHostInstalled)(n)?chalk_1.default.green(" \u2713"):chalk_1.default.dim(" (not detected)");return{value:n,label:i+r+a,hint:l}},o=await p.groupMultiselect({message:"Select kits to install (space to toggle, enter to confirm)",initialValues:t,required:!1,selectableGroups:!1,options:Object.fromEntries(GROUP_ORDER.map(n=>[GROUP_LABELS[n],kitsInGroup(n).map(e)]))});return p.isCancel(o)?null:o}async function selectHermesProfile(){const t=(0,hermes_home_1.listHermesProfiles)(),e=new Set((0,hermes_home_1.listAgentkitHermesProfiles)()),o=t.find(i=>e.has(i))??hermes_home_1.HERMES_DEFAULT_PROFILE,n=await p.select({message:"Which Hermes profile should the kit install into?",initialValue:o,options:t.map(i=>({value:i,label:i+(e.has(i)?chalk_1.default.green.bold(" [UPDATE]"):""),hint:i===hermes_home_1.HERMES_DEFAULT_PROFILE?"Hermes\u2019s own profile \u2014 what `hermes` loads with no -p":`loaded by \`hermes -p ${i}\``}))});return p.isCancel(n)?null:n}async function selectTargetsToRemove(t){const e=GROUP_ORDER.map(n=>[GROUP_LABELS[n],t.filter(i=>i.group===n).map(({value:i,label:l})=>({value:i,label:`${l}${chalk_1.default.green.bold(" [INSTALLED]")}`}))]).filter(([,n])=>n.length>0),o=await p.groupMultiselect({message:"Select what to remove (space to toggle, enter to confirm)",initialValues:[],required:!1,selectableGroups:!1,options:Object.fromEntries(e)});return p.isCancel(o)?null:o}async function confirmUndetectedHost(t){const e=await p.confirm({message:`${t} was not detected on this machine. Install its kit anyway?`,initialValue:!1});return p.isCancel(e)?!1:e}async function selectClaudeAgentModels(){const t=await p.select({message:"Claude Code agent models",initialValue:claude_agents_1.DEFAULT_CLAUDE_AGENT_MODELS,options:[{value:"pinned",label:"Keep kit defaults",hint:"opus for planner/reviewer/simplifier, sonnet for most, haiku for journal"},{value:"inherit",label:"Inherit session model",hint:"no opus/sonnet/haiku pin \u2014 subagents follow whatever this session uses"}]});return p.isCancel(t)?null:t}var kits_2=require("./kits");Object.defineProperty(exports,"supportsGlobalInstall",{enumerable:!0,get:function(){return kits_2.supportsGlobalInstall}});async function askPathWithDefault(t,e){const o=await p.text({message:t,placeholder:e,defaultValue:e});return p.isCancel(o)||!o?e:o}
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,e,o,n){n===void 0&&(n=o);var s=Object.getOwnPropertyDescriptor(e,o);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return e[o]}}),Object.defineProperty(t,n,s)}):(function(t,e,o,n){n===void 0&&(n=o),t[n]=e[o]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),__importStar=this&&this.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(o){var n=[];for(var s in o)Object.prototype.hasOwnProperty.call(o,s)&&(n[n.length]=s);return n},t(e)};return function(e){if(e&&e.__esModule)return e;var o={};if(e!=null)for(var n=t(e),s=0;s<n.length;s++)n[s]!=="default"&&__createBinding(o,e,n[s]);return __setModuleDefault(o,e),o}})(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.supportsGlobalInstall=void 0,exports.selectProfile=selectProfile,exports.isProjectBasedDetection=isProjectBasedDetection,exports.showMenu=showMenu,exports.kitGroup=kitGroup,exports.selectKit=selectKit,exports.selectKitsGlobal=selectKitsGlobal,exports.selectHermesProfile=selectHermesProfile,exports.selectTargetsToRemove=selectTargetsToRemove,exports.confirmUndetectedHost=confirmUndetectedHost,exports.selectClaudeAgentModels=selectClaudeAgentModels,exports.askPathWithDefault=askPathWithDefault;const p=__importStar(require("@clack/prompts")),fs=__importStar(require("fs")),path=__importStar(require("path")),chalk_1=__importDefault(require("chalk")),home_dir_1=require("./home-dir"),logger_1=require("./logger"),kits_1=require("./kits"),init_install_scope_1=require("./init-install-scope"),hermes_home_1=require("./hermes-home"),skill_profiles_1=require("./skill-profiles"),claude_agents_1=require("./kit-installers/claude-agents"),PROFILE_HINTS={core:"engineering default \u2014 skips vendor suites (twilio, expo, gsap, \u2026)",full:"all skills",frontend:"core + frontend, design, frameworks",backend:"core + backend, database, infra, security",mobile:"core + frontend, frameworks, design",fullstack:"core + frontend, backend, data, infra",gamedev:"core + gamedev, multimedia + 7 named extras",marketing:"marketing, design, seo, docs, media + 10 extras (no dev skills/agents)",assistant:"15 host-portable skills (no subagents, no CLI)"};async function selectProfile(t=skill_profiles_1.DEFAULT_PROFILE){const e=await p.select({message:"Select install profile",initialValue:t,options:Object.keys(PROFILE_HINTS).map(o=>({value:o,label:o,hint:PROFILE_HINTS[o]}))});return p.isCancel(e)?null:e}function isProjectBasedDetection(t,e){if((0,home_dir_1.isHomeDir)(t))return!1;const o=path.join(t,kits_1.kitDefinitions[e].dir);return fs.existsSync(o)&&(fs.statSync(o).isDirectory()||fs.statSync(o).isFile())}function showMenu(t){const e=(0,kits_1.detectCurrentKit)(t),o=e?e.kit:null;if((0,logger_1.printSection)("Select AI Development Kit"),o){console.log("");const s=e&&isProjectBasedDetection(t,o)?"project":"global CLI";(0,logger_1.printInfo)(chalk_1.default.bold("Detected:")+" "+chalk_1.default.yellow.bold(kits_1.kitDefinitions[o].name)+" "+chalk_1.default.dim(`(${s})`)),(0,logger_1.printInfo)(chalk_1.default.dim("Select the same kit to update, or choose a different one to switch.")),console.log("")}else{const n=(0,kits_1.detectAllGlobalCLIs)();if(n.length>1){console.log("");const s=n.map(l=>kits_1.kitDefinitions[l].name).join(", ");(0,logger_1.printInfo)(chalk_1.default.bold("Multiple hosts detected:")+" "+chalk_1.default.cyan(s)),(0,logger_1.printInfo)(chalk_1.default.dim("No primary host selected. Choose which one to configure.")),console.log("")}else n.length===1?(console.log(""),(0,logger_1.printInfo)(chalk_1.default.bold("Detected:")+" "+chalk_1.default.yellow.bold(kits_1.kitDefinitions[n[0]].name)+" "+chalk_1.default.dim("(installed on this machine)")),(0,logger_1.printInfo)(chalk_1.default.dim("Select the same kit to update, or choose a different one to switch.")),console.log("")):(console.log(""),(0,logger_1.printWarning)(chalk_1.default.bold("Note:")+" Each kit is designed for its specific platform. Choose carefully!"),console.log(""))}}const GROUP_LABELS={coding:"Coding agents",personal:"Personal agents"},GROUP_ORDER=["coding","personal"],MENU_KITS=[{kit:"claude",label:"\u{1F535} Claude Code",hint:"Shared for Augment + Anthropic CLI + IDE",group:"coding"},{kit:"opencode",label:"\u26AB OpenCode",hint:"Open-source AI coding assistant",group:"coding"},{kit:"cursor",label:"\u{1F7E3} Cursor AI",hint:"AI-first code editor (Desktop + CLI)",group:"coding"},{kit:"antigravity",label:"\u{1F7E2} Antigravity",hint:"Google's agentic AI IDE (Gemini)",group:"coding"},{kit:"codex",label:"\u26AA OpenAI Codex",hint:"OpenAI coding agent for CLI and IDE",group:"coding"},{kit:"kimi",label:"\u{1F319} Kimi Code",hint:"Moonshot's CLI coding agent (kimi)",group:"coding"},{kit:"grok",label:"\u{1F6F0}\uFE0F Grok Build",hint:"xAI's CLI coding agent (grok)",group:"coding"},{kit:"omp",label:"\u{1F967} Oh My Pi",hint:"Terminal coding agent with LSP + DAP (omp)",group:"coding"},{kit:"pi",label:"\u03C0 Pi",hint:"Minimal terminal coding harness; omp forks this (pi)",group:"coding"},{kit:"devin",label:"\u{1F9E0} Devin CLI",hint:"Cognition's local coding agent (devin)",group:"coding"},{kit:"hermes",label:"\u{1F54A}\uFE0F Hermes Agent",hint:"Nous Research's personal agent (hermes)",group:"personal"},{kit:"openclaw",label:"\u{1F99E} OpenClaw",hint:"Personal agent across your chat channels (openclaw)",group:"personal"}];function kitsInGroup(t){return MENU_KITS.filter(e=>e.group===t)}function kitGroup(t){return MENU_KITS.find(e=>e.kit===t)?.group??"coding"}function projectKitsInGroup(t){return kitsInGroup(t).filter(({kit:e})=>(0,kits_1.supportsProjectInstall)(e))}async function selectKit(t){const e=(0,home_dir_1.isHomeDir)(t),o=i=>e?(0,init_install_scope_1.isKitInstalledGlobally)(i):(0,init_install_scope_1.isKitInstalledInProject)(i,t),n=e?kitsInGroup:projectKitsInGroup,s=GROUP_ORDER.flatMap(n),l=GROUP_ORDER.filter(i=>n(i).length>0),a=s.find(({kit:i})=>o(i))?.kit??s.find(({kit:i})=>(0,kits_1.isHostInstalled)(i))?.kit??s[0].kit,r=await p.select({message:"Select a kit to install",initialValue:a,options:l.flatMap(i=>n(i).map(({kit:c,label:u,hint:d})=>{const f=o(c)?chalk_1.default.green.bold(" [UPDATE]"):"",g=(0,kits_1.isHostInstalled)(c)?chalk_1.default.green(" \u2713"):chalk_1.default.dim(" (not detected)"),h=l.length>1?`${GROUP_LABELS[i]} \u2014 `:"";return{value:c,label:u+g+f,hint:h+d}}))});return p.isCancel(r)?null:r}async function selectKitsGlobal(){const t=MENU_KITS.filter(({kit:n})=>(0,init_install_scope_1.isKitInstalledGlobally)(n)).map(({kit:n})=>n),e=({kit:n,label:s,hint:l})=>{const a=(0,init_install_scope_1.isKitInstalledGlobally)(n)?chalk_1.default.green.bold(" [UPDATE]"):"",r=(0,kits_1.isHostInstalled)(n)?chalk_1.default.green(" \u2713"):chalk_1.default.dim(" (not detected)");return{value:n,label:s+r+a,hint:l}},o=await p.groupMultiselect({message:"Select kits to install (space to toggle, enter to confirm)",initialValues:t,required:!1,selectableGroups:!1,options:Object.fromEntries(GROUP_ORDER.map(n=>[GROUP_LABELS[n],kitsInGroup(n).map(e)]))});return p.isCancel(o)?null:o}async function selectHermesProfile(){const t=(0,hermes_home_1.listHermesProfiles)(),e=new Set((0,hermes_home_1.listAgentkitHermesProfiles)()),o=t.find(s=>e.has(s))??hermes_home_1.HERMES_DEFAULT_PROFILE,n=await p.select({message:"Which Hermes profile should the kit install into?",initialValue:o,options:t.map(s=>({value:s,label:s+(e.has(s)?chalk_1.default.green.bold(" [UPDATE]"):""),hint:s===hermes_home_1.HERMES_DEFAULT_PROFILE?"Hermes\u2019s own profile \u2014 what `hermes` loads with no -p":`loaded by \`hermes -p ${s}\``}))});return p.isCancel(n)?null:n}async function selectTargetsToRemove(t){const e=GROUP_ORDER.map(n=>[GROUP_LABELS[n],t.filter(s=>s.group===n).map(({value:s,label:l})=>({value:s,label:`${l}${chalk_1.default.green.bold(" [INSTALLED]")}`}))]).filter(([,n])=>n.length>0),o=await p.groupMultiselect({message:"Select what to remove (space to toggle, enter to confirm)",initialValues:[],required:!1,selectableGroups:!1,options:Object.fromEntries(e)});return p.isCancel(o)?null:o}async function confirmUndetectedHost(t){const e=await p.confirm({message:`${t} was not detected on this machine. Install its kit anyway?`,initialValue:!1});return p.isCancel(e)?!1:e}async function selectClaudeAgentModels(){const t=await p.select({message:"Claude Code agent models",initialValue:claude_agents_1.DEFAULT_CLAUDE_AGENT_MODELS,options:[{value:"pinned",label:"Keep kit defaults",hint:"opus for planner/reviewer/simplifier, sonnet for most, haiku for journal"},{value:"inherit",label:"Inherit session model",hint:"no opus/sonnet/haiku pin \u2014 subagents follow whatever this session uses"}]});return p.isCancel(t)?null:t}var kits_2=require("./kits");Object.defineProperty(exports,"supportsGlobalInstall",{enumerable:!0,get:function(){return kits_2.supportsGlobalInstall}});async function askPathWithDefault(t,e){const o=await p.text({message:t,placeholder:e,defaultValue:e});return p.isCancel(o)||!o?e:o}