@linhnguyen96114/agentkit-engineer 1.4.2 → 1.5.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.
- package/CHANGELOG.md +69 -0
- package/README.md +2 -2
- package/bin/agentkit.js +1 -1
- package/package.json +2 -2
- package/scripts-dist/cli/agentkit-clear.js +18 -0
- package/scripts-dist/{agentkit-config.js → cli/agentkit-config.js} +3 -3
- package/scripts-dist/cli/agentkit-dashboard.js +19 -0
- package/scripts-dist/{agentkit-decide.js → cli/agentkit-decide.js} +1 -1
- package/scripts-dist/cli/agentkit-doctor.js +20 -0
- package/scripts-dist/cli/agentkit-hooks.js +36 -0
- package/scripts-dist/cli/agentkit-init.js +39 -0
- package/scripts-dist/{agentkit-login.js → cli/agentkit-login.js} +2 -2
- package/scripts-dist/cli/agentkit-logout.js +12 -0
- package/scripts-dist/cli/agentkit-profile.js +4 -0
- package/scripts-dist/cli/agentkit-skills.js +30 -0
- package/scripts-dist/cli/agentkit-status.js +22 -0
- package/scripts-dist/cli/agentkit-uninstall.js +18 -0
- package/scripts-dist/cli/agentkit-update.js +17 -0
- package/scripts-dist/{agentkit-whoami.js → cli/agentkit-whoami.js} +2 -2
- package/scripts-dist/gen/check-upstream.js +6 -0
- package/scripts-dist/gen/frontend-cli.js +4 -3
- package/scripts-dist/gen/generate-agentkit-configs.js +2 -0
- package/scripts-dist/gen/generate-catalogs.js +10 -0
- package/scripts-dist/{run-skill-tests.js → gen/run-skill-tests.js} +1 -1
- package/scripts-dist/gen/sync-gamedev-upstream.js +22 -0
- package/scripts-dist/gen/sync-upstream.js +1 -0
- package/scripts-dist/gen/update-check-worker.js +2 -0
- package/scripts-dist/gen/upstream-skill-syncers.js +5 -0
- package/scripts-dist/gen/upstream-suite-syncers.js +12 -0
- package/scripts-dist/{validate-agents-registry.js → gen/validate-agents-registry.js} +1 -1
- package/scripts-dist/lib/agentkit-config-file.js +2 -2
- package/scripts-dist/lib/auth/cli.js +1 -1
- package/scripts-dist/lib/clear/cli.js +4 -0
- package/scripts-dist/lib/cli.js +3 -0
- package/scripts-dist/lib/codegraph-installer/mcp-sync.js +1 -1
- package/scripts-dist/lib/doctor/checks-hooks.js +2 -2
- package/scripts-dist/lib/doctor/checks-rules.js +1 -1
- package/scripts-dist/lib/doctor/checks-skills.js +1 -1
- package/scripts-dist/lib/doctor/checks-soul.js +1 -1
- package/scripts-dist/lib/doctor/profile-resolution.js +1 -1
- package/scripts-dist/lib/dropped-mcp-servers.js +1 -1
- package/scripts-dist/lib/file-operations.js +2 -2
- package/scripts-dist/lib/frontmatter.js +2 -0
- package/scripts-dist/lib/gitignore.js +5 -5
- package/scripts-dist/lib/global-clear-targets.js +1 -1
- package/scripts-dist/lib/hook-toggle-registry.js +1 -1
- package/scripts-dist/lib/hooks/cli.js +1 -0
- package/scripts-dist/lib/init/cli.js +1 -0
- package/scripts-dist/lib/install-profile-config.js +1 -1
- package/scripts-dist/lib/kit-install-dispatch.js +1 -1
- package/scripts-dist/lib/kit-remover.js +1 -1
- package/scripts-dist/lib/kit-scan.js +1 -1
- package/scripts-dist/lib/kits.js +1 -1
- package/scripts-dist/lib/payload/extract.js +1 -1
- package/scripts-dist/lib/payload/retention.js +1 -1
- package/scripts-dist/lib/payload-roots.js +1 -0
- package/scripts-dist/lib/profile-block.js +2 -2
- package/scripts-dist/lib/profile-remove.js +1 -1
- package/scripts-dist/lib/profile-rules.js +1 -1
- package/scripts-dist/lib/profile-switch-confirm.js +1 -1
- package/scripts-dist/lib/publish/payload-manifest.js +1 -1
- package/scripts-dist/lib/publish/public-client-manifest.js +1 -1
- package/scripts-dist/lib/server/kit-actions.js +1 -1
- package/scripts-dist/lib/skill-profiles.js +1 -1
- package/scripts-dist/lib/skill-tests.js +1 -1
- package/scripts-dist/lib/skills/cli.js +1 -0
- package/scripts-dist/lib/skills/skill-companion-assets.js +6 -0
- package/scripts-dist/lib/skills/skills-context-options.js +1 -0
- package/scripts-dist/lib/ui.js +1 -1
- package/scripts-dist/lib/update/cli.js +4 -0
- package/scripts-dist/lib/update-notifier.js +1 -1
- package/scripts-dist/{build-hermes-distribution.js → ops/build-hermes-distribution.js} +1 -1
- package/scripts-dist/agentkit-clear.js +0 -21
- package/scripts-dist/agentkit-dashboard.js +0 -19
- package/scripts-dist/agentkit-doctor.js +0 -20
- package/scripts-dist/agentkit-hooks.js +0 -36
- package/scripts-dist/agentkit-init.js +0 -39
- package/scripts-dist/agentkit-logout.js +0 -12
- package/scripts-dist/agentkit-profile.js +0 -4
- package/scripts-dist/agentkit-skills.js +0 -25
- package/scripts-dist/agentkit-status.js +0 -22
- package/scripts-dist/agentkit-uninstall.js +0 -18
- package/scripts-dist/agentkit-update.js +0 -20
- package/scripts-dist/check-upstream.js +0 -6
- package/scripts-dist/generate-agentkit-configs.js +0 -2
- package/scripts-dist/generate-catalogs.js +0 -10
- package/scripts-dist/update-check-worker.js +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var s=Object.getOwnPropertyDescriptor(t,n);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,s)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=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 r=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(r[r.length]=s);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),s=0;s<r.length;s++)r[s]!=="default"&&__createBinding(n,t,r[s]);return __setModuleDefault(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.CLAUDE_ONLY_SKILL_DIRS=void 0,exports.isJunkEntry=isJunkEntry,exports.containsAnyFile=containsAnyFile,exports.copyDir=copyDir,exports.copyFile=copyFile,exports.removeDir=removeDir,exports.removeFile=removeFile,exports.shippedSkillEntries=shippedSkillEntries,exports.copySkillsToKit=copySkillsToKit,exports.transformCommandToWorkflow=transformCommandToWorkflow,exports.copyCommandsToKit=copyCommandsToKit;const fs=__importStar(require("fs")),path=__importStar(require("path")),logger_1=require("./logger");exports.CLAUDE_ONLY_SKILL_DIRS=[];const JUNK_ENTRIES=new Set([".DS_Store","__pycache__",".pytest_cache","Thumbs.db",".venv","venv","node_modules"]);function isJunkEntry(e){return JUNK_ENTRIES.has(e)||e.endsWith(".pyc")}function containsAnyFile(e){let t;try{t=fs.readdirSync(e,{withFileTypes:!0})}catch{return!1}for(const n of t)if(!isJunkEntry(n.name)&&(n.isFile()||n.isDirectory()&&containsAnyFile(path.join(e,n.name))))return!0;return!1}function copyDir(e,t,n={}){const{suppressSymlinkWarnings:r=!1}=n;let s=[];if(path.resolve(e)===path.resolve(t)||!fs.existsSync(e))return s;if(fs.existsSync(t))try{fs.lstatSync(t).isDirectory()&&fs.rmSync(t,{recursive:!0,force:!0})}catch{}fs.mkdirSync(t,{recursive:!0});const S=fs.readdirSync(e,{withFileTypes:!0});for(const l of S){if(isJunkEntry(l.name))continue;const a=path.join(e,l.name),o=path.join(t,l.name);if(l.isSymbolicLink())try{const c=fs.readlinkSync(a),f=path.isAbsolute(c)?c:path.resolve(path.dirname(a),c);if(fs.existsSync(f)&&f.startsWith(e)){const y=f.replace(e,t),i=path.relative(path.dirname(o),y);fs.symlinkSync(i,o)}else s.push(l.name),r||(0,logger_1.printWarning)(`Skipping symlink ${l.name}: target outside copied directory`)}catch(c){s.push(l.name),r||(0,logger_1.printWarning)(`Skipping symlink ${l.name}: ${c.message}`)}else if(l.isDirectory()){if(fs.existsSync(o))try{fs.lstatSync(o).isDirectory()||fs.unlinkSync(o)}catch{}const c=copyDir(a,o,n);s=s.concat(c)}else{if(fs.existsSync(o))try{fs.lstatSync(o).isDirectory()&&fs.rmSync(o,{recursive:!0,force:!0})}catch{}fs.copyFileSync(a,o)}}return s}function copyFile(e,t){fs.copyFileSync(e,t)}function removeDir(e){if(!fs.existsSync(e))return!1;try{if(fs.rmSync)return fs.rmSync(e,{recursive:!0,force:!0}),!0;const t=fs.readdirSync(e,{withFileTypes:!0});for(const n of t){const r=path.join(e,n.name);n.isDirectory()?removeDir(r):fs.unlinkSync(r)}return fs.rmdirSync(e),!0}catch(t){return(0,logger_1.printError)(`Failed to remove ${e}: ${t.message}`),!1}}function removeFile(e){if(!fs.existsSync(e))return!1;try{return fs.unlinkSync(e),!0}catch(t){return(0,logger_1.printError)(`Failed to remove ${e}: ${t.message}`),!1}}function shippedSkillEntries(e){const t=path.join(e,
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var s=Object.getOwnPropertyDescriptor(t,n);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,s)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=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 r=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(r[r.length]=s);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),s=0;s<r.length;s++)r[s]!=="default"&&__createBinding(n,t,r[s]);return __setModuleDefault(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.CLAUDE_ONLY_SKILL_DIRS=void 0,exports.isJunkEntry=isJunkEntry,exports.containsAnyFile=containsAnyFile,exports.copyDir=copyDir,exports.copyFile=copyFile,exports.removeDir=removeDir,exports.removeFile=removeFile,exports.shippedSkillEntries=shippedSkillEntries,exports.copySkillsToKit=copySkillsToKit,exports.transformCommandToWorkflow=transformCommandToWorkflow,exports.copyCommandsToKit=copyCommandsToKit;const fs=__importStar(require("fs")),path=__importStar(require("path")),logger_1=require("./logger"),payload_roots_1=require("./payload-roots");exports.CLAUDE_ONLY_SKILL_DIRS=[];const JUNK_ENTRIES=new Set([".DS_Store","__pycache__",".pytest_cache","Thumbs.db",".venv","venv","node_modules"]);function isJunkEntry(e){return JUNK_ENTRIES.has(e)||e.endsWith(".pyc")}function containsAnyFile(e){let t;try{t=fs.readdirSync(e,{withFileTypes:!0})}catch{return!1}for(const n of t)if(!isJunkEntry(n.name)&&(n.isFile()||n.isDirectory()&&containsAnyFile(path.join(e,n.name))))return!0;return!1}function copyDir(e,t,n={}){const{suppressSymlinkWarnings:r=!1}=n;let s=[];if(path.resolve(e)===path.resolve(t)||!fs.existsSync(e))return s;if(fs.existsSync(t))try{fs.lstatSync(t).isDirectory()&&fs.rmSync(t,{recursive:!0,force:!0})}catch{}fs.mkdirSync(t,{recursive:!0});const S=fs.readdirSync(e,{withFileTypes:!0});for(const l of S){if(isJunkEntry(l.name))continue;const a=path.join(e,l.name),o=path.join(t,l.name);if(l.isSymbolicLink())try{const c=fs.readlinkSync(a),f=path.isAbsolute(c)?c:path.resolve(path.dirname(a),c);if(fs.existsSync(f)&&f.startsWith(e)){const y=f.replace(e,t),i=path.relative(path.dirname(o),y);fs.symlinkSync(i,o)}else s.push(l.name),r||(0,logger_1.printWarning)(`Skipping symlink ${l.name}: target outside copied directory`)}catch(c){s.push(l.name),r||(0,logger_1.printWarning)(`Skipping symlink ${l.name}: ${c.message}`)}else if(l.isDirectory()){if(fs.existsSync(o))try{fs.lstatSync(o).isDirectory()||fs.unlinkSync(o)}catch{}const c=copyDir(a,o,n);s=s.concat(c)}else{if(fs.existsSync(o))try{fs.lstatSync(o).isDirectory()&&fs.rmSync(o,{recursive:!0,force:!0})}catch{}fs.copyFileSync(a,o)}}return s}function copyFile(e,t){fs.copyFileSync(e,t)}function removeDir(e){if(!fs.existsSync(e))return!1;try{if(fs.rmSync)return fs.rmSync(e,{recursive:!0,force:!0}),!0;const t=fs.readdirSync(e,{withFileTypes:!0});for(const n of t){const r=path.join(e,n.name);n.isDirectory()?removeDir(r):fs.unlinkSync(r)}return fs.rmdirSync(e),!0}catch(t){return(0,logger_1.printError)(`Failed to remove ${e}: ${t.message}`),!1}}function removeFile(e){if(!fs.existsSync(e))return!1;try{return fs.unlinkSync(e),!0}catch(t){return(0,logger_1.printError)(`Failed to remove ${e}: ${t.message}`),!1}}function shippedSkillEntries(e){const t=path.join(e,payload_roots_1.SKILL_SOURCE_DIR);let n;try{n=fs.readdirSync(t,{withFileTypes:!0})}catch{return[]}return n.filter(r=>!r.isSymbolicLink()&&!isJunkEntry(r.name)).filter(r=>!r.isDirectory()||containsAnyFile(path.join(t,r.name))).map(r=>({name:r.name,isDirectory:r.isDirectory(),isFile:r.isFile()}))}function copySkillsToKit(e,t,n,r={}){const{skillDirName:s="skills",skipDirsFilter:S,profileSkipDirs:l}=r,a=path.join(e,payload_roots_1.SKILL_SOURCE_DIR),o=path.join(n,t,s);if(!fs.existsSync(a))return(0,logger_1.printWarning)(`Root skills directory not found at ${a}`),!1;if(fs.existsSync(o))try{fs.lstatSync(o).isDirectory()||fs.unlinkSync(o)}catch{}fs.existsSync(o)||fs.mkdirSync(o,{recursive:!0});try{const c=shippedSkillEntries(e);let f=0;const y=new Set([...S??[],...l??[]]);for(const i of c){const p=path.join(a,i.name),u=path.join(o,i.name);if(i.isDirectory){if(y.has(i.name))continue;if(fs.existsSync(u))try{const m=fs.lstatSync(u);m.isSymbolicLink()?fs.unlinkSync(u):m.isDirectory()?fs.rmSync(u,{recursive:!0}):fs.unlinkSync(u)}catch{continue}copyDir(p,u,{suppressSymlinkWarnings:!0}),f++}else if(i.isFile)try{fs.copyFileSync(p,u),f++}catch{}}if(l&&l.length>0){const i=[];for(const p of l){const u=path.join(o,p);fs.existsSync(u)&&(fs.rmSync(u,{recursive:!0,force:!0}),i.push(p))}i.length>0&&(0,logger_1.printInfo)(`Removed ${i.length} skill(s) no longer in this install: ${i.join(", ")}`)}return f>0}catch(c){return(0,logger_1.printError)(`Failed to copy skills: ${c.message}`),!1}}function transformCommandToWorkflow(e){const t=e.match(/^---\n([\s\S]*?)\n---\n/);if(!t)return e;const n=t[1],r=e.slice(t[0].length),s=n.match(/description:\s*(.+)/),S=s?s[1].replace(/⚡+/g,"").trim():"Workflow description",l=n.match(/argument-hint:\s*(.+)/),a=l?l[1]:null;let o=`---
|
|
2
2
|
description: ${S}
|
|
3
3
|
---`;a&&(o=`---
|
|
4
4
|
description: ${S}
|
|
@@ -11,4 +11,4 @@ argument-hint: ${a}
|
|
|
11
11
|
`;const i=r.match(/##\s+Workflow\s*\n([\s\S]*?)(?=\n##\s+[^W]|$)/);if(i)y+=`## Workflow
|
|
12
12
|
|
|
13
13
|
`+i[1];else{const p=r.replace(/##\s+Role Responsibilities[\s\S]*?---\n/g,"").replace(/##\s+Your Approach[\s\S]*?---\n/g,"");y+=p}return o+`
|
|
14
|
-
`+y}function copyCommandsToKit(e,t,n,r={}){const{commandDirName:s="commands",transformFormat:S=!1,flattenStructure:l=!1}=r;if(!s)return!1;let a=path.join(e,
|
|
14
|
+
`+y}function copyCommandsToKit(e,t,n,r={}){const{commandDirName:s="commands",transformFormat:S=!1,flattenStructure:l=!1}=r;if(!s)return!1;let a=path.join(e,payload_roots_1.COMMAND_SOURCE_DIR);fs.existsSync(a)||(a=path.join(e,"commands"));const o=path.join(n,t,s);if(!fs.existsSync(a))return(0,logger_1.printWarning)(`Root command(s) directory not found at ${e}`),!1;if(fs.existsSync(o))try{fs.rmSync(o,{recursive:!0,force:!0})}catch(c){(0,logger_1.printWarning)(`Could not remove existing ${o}: ${c.message}`)}fs.mkdirSync(o,{recursive:!0});try{if(l){let y=function(i,p){const u=path.join(p,i.name);if(i.isDirectory()){const m=fs.readdirSync(u,{withFileTypes:!0});for(const d of m)y(d,u)}else if(i.isFile()&&i.name.endsWith(".md")){const m=path.join(o,i.name);if(S){const d=fs.readFileSync(u,"utf8"),h=transformCommandToWorkflow(d);fs.writeFileSync(m,h,"utf8")}else fs.copyFileSync(u,m);f++}};const c=fs.readdirSync(a,{withFileTypes:!0});let f=0;for(const i of c)y(i,a);return f>0}else if(S){let y=function(i,p,u){const m=path.join(p,i.name),d=path.join(u,i.name);if(i.isDirectory()){fs.mkdirSync(d,{recursive:!0});const h=fs.readdirSync(m,{withFileTypes:!0});for(const k of h)y(k,m,d)}else if(i.isFile()&&i.name.endsWith(".md")){const h=fs.readFileSync(m,"utf8"),k=transformCommandToWorkflow(h);fs.writeFileSync(d,k,"utf8"),f++}else fs.copyFileSync(m,d)};const c=fs.readdirSync(a,{withFileTypes:!0});let f=0;for(const i of c)y(i,a,o);return f>0}else return copyDir(a,o,{suppressSymlinkWarnings:!0}),!0}catch(c){return(0,logger_1.printError)(`Failed to copy commands: ${c.message}`),!1}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseFrontmatterBlock=parseFrontmatterBlock,exports.flattenFrontmatter=flattenFrontmatter,exports.foldAgentEntries=foldAgentEntries,exports.parseFrontmatter=parseFrontmatter,exports.cleanFrontmatterValue=cleanFrontmatterValue;const BLOCK_SCALARS=[">",">-",">+","|","|-","|+"];function parseFrontmatterBlock(t){const n=t.match(/^---\r?\n([\s\S]*?)\r?\n---/);return n?{entries:n[1].split(/\r?\n/).map(e=>{const o=e.indexOf(":");return o!==-1&&/^[^\s-]/.test(e)?{kind:"key",text:e,name:e.slice(0,o),raw:e.slice(o+1)}:{kind:"line",text:e}}),body:t.slice(n[0].length)}:null}function flattenFrontmatter(t){const n={};let r=null;for(const e of t)e.kind==="key"&&/^[A-Za-z_][\w-]*$/.test(e.name??"")?(r=e.name??"",n[r]=(e.raw??"").trim()):r&&/^\s+\S/.test(e.text)&&(n[r]=`${n[r]} ${e.text.trim()}`.trim());return n}function foldAgentEntries(t){const n={};for(let r=0;r<t.length;r++){const e=t[r];if(e.kind!=="key")continue;const o=(e.name??"").trim();let s=(e.raw??"").trim();if(BLOCK_SCALARS.includes(s)){const a=[];for(;r+1<t.length&&t[r+1].kind==="line"&&(/^[ \t]/.test(t[r+1].text)||!t[r+1].text.trim());)a.push(t[++r].text.trim());const i=s.startsWith("|")?`
|
|
2
|
+
`:" ";s=a.filter(Boolean).join(i).trim()}n[o]=s.replace(/^["']|["']$/g,"")}return n}function parseFrontmatter(t){const n=parseFrontmatterBlock(t);return n?flattenFrontmatter(n.entries):{}}function cleanFrontmatterValue(t){return t?t.replace(/^[>|][-+]?\s*/,"").replace(/^"(.*)"$/s,"$1").replace(/^'(.*)'$/s,"$1").replace(/\s+/g," ").trim():""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,n
|
|
2
|
-
`),s=[];let a=0;const
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,n){n===void 0&&(n=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(r,n,i)}):(function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]})),__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(t){var n=[];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(n[n.length]=i);return n},r(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n=r(e),i=0;i<n.length;i++)n[i]!=="default"&&__createBinding(t,e,n[i]);return __setModuleDefault(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.otherKitGitignoreEntries=otherKitGitignoreEntries,exports.cleanupGitignore=cleanupGitignore,exports.updateGitignore=updateGitignore;const fs=__importStar(require("fs")),path=__importStar(require("path")),kits_1=require("./kits");function otherKitGitignoreEntries(r){const e=kits_1.kitDefinitions[r],t=[];for(const n of kits_1.PROJECT_KITS){const i=kits_1.kitDefinitions[n];i.dir!==e.dir&&t.push(i.dir+"/");for(const s of i.files)e.files.includes(s)||t.push(s)}return t}function cleanupGitignore(r,e){const t=path.join(e,".gitignore");if(!fs.existsSync(t))return!1;const i=fs.readFileSync(t,"utf-8").split(`
|
|
2
|
+
`),s=[];let a=0;const u=new Set;r.forEach(c=>{const o=c.trim();u.add(o),o.endsWith("/")?u.add(o.slice(0,-1)):u.add(o+"/")});for(const c of i){const o=c.trim();if(o===""||o.startsWith("#")){s.push(c);continue}let l=!1;const h=o.endsWith("/")?o.slice(0,-1):o;for(const f of u){const g=f.endsWith("/")?f.slice(0,-1):f;if(h===g){l=!0;break}}if(l){a++;continue}s.push(c)}if(a===0)return!1;for(;s.length>0&&s[s.length-1].trim()==="";)s.pop();const d=[];for(let c=0;c<s.length;c++){const o=s[c];o.trim().startsWith("# Agentkit")&&!s.slice(c+1).some(f=>f.trim()!==""&&!f.trim().startsWith("#"))||d.push(o)}return fs.writeFileSync(t,d.join(`
|
|
3
3
|
`)+`
|
|
4
|
-
`),!0}function updateGitignore(r,e){const
|
|
4
|
+
`),!0}function updateGitignore(r,e){const t=path.join(e,".gitignore");let n="";fs.existsSync(t)&&(n=fs.readFileSync(t,"utf-8"));const i=r.filter(s=>!n.includes(s));return i.length===0?!1:(n.includes("# Agentkit")||(n+=`
|
|
5
5
|
# Agentkit - AI Development Kits
|
|
6
|
-
`),i.forEach(s=>{
|
|
7
|
-
`}),fs.writeFileSync(n
|
|
6
|
+
`),i.forEach(s=>{n+=`${s}
|
|
7
|
+
`}),fs.writeFileSync(t,n),!0)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(s,e,t,o){o===void 0&&(o=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,o,n)}):(function(s,e,t,o){o===void 0&&(o=t),s[o]=e[t]})),__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(t){var o=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(o[o.length]=n);return o},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var o=s(e),n=0;n<o.length;n++)o[n]!=="default"&&__createBinding(t,e,o[n]);return __setModuleDefault(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.unclaimedGlobalLayoutRows=unclaimedGlobalLayoutRows,exports.staleGlobalPolicyRows=staleGlobalPolicyRows,exports.globalClearTarget=globalClearTarget,exports.globalClearTargets=globalClearTargets;const path=__importStar(require("path")),kit_layout_1=require("./doctor/kit-layout"),kit_context_1=require("./kit-context"),home_dir_1=require("./home-dir"),init_install_scope_1=require("./init-install-scope"),install_manifest_1=require("./install-manifest"),package_root_1=require("./package-root"),file_operations_1=require("./file-operations"),retired_skills_1=require("./retired-skills"),ui_1=require("./ui"),cursor_agents_1=require("./kit-installers/cursor-agents"),omp_home_1=require("./omp-home"),omp_managed_1=require("./kit-installers/omp-managed"),pi_home_1=require("./pi-home"),devin_home_1=require("./kit-installers/devin-home"),devin_rules_1=require("./kit-installers/devin-rules"),devin_agents_1=require("./kit-installers/devin-agents"),devin_hooks_1=require("./kit-installers/devin-hooks"),cursor_rules_1=require("./kit-installers/cursor-rules"),antigravity_1=require("./kit-installers/antigravity"),POLICIES={claude:{name:"Claude Code (Global)",whole:["rules","commands","agents","hooks","scripts","settings.json","schemas","session-state"],neverDelete:{},narrow:{},perFile:{},extra:["CLAUDE.md","coding-level.json",".agentkitignore",".env.example",".mcp.json.example","statusline.cjs","statusline.ps1","statusline.sh"]},codex:{name:"OpenAI Codex (Global)",whole:["rules","agents","hooks","scripts","hooks.json","session-state","schemas"],perFile:{},neverDelete:{"config.toml":"the installer preserves and merges into it \u2014 it is Codex\u2019s own config"},narrow:{},extra:["AGENTS.md","README.md","coding-level.json",".agentkitignore",".mcp.json"]},opencode:{name:"OpenCode (Global)",whole:["rules","commands","agents","scripts","plugins","opencode.json","schemas"],neverDelete:{},narrow:{},perFile:{},extra:["AGENTS.md","README.md","MCP.md","agents-contracts-reference.md","agents-registry.json","antigravity.json","bun.lock","coding-level.json"]},cursor:{name:"Cursor AI (Global)",whole:["hooks","scripts","hooks.json","schemas"],neverDelete:{"mcp.json":"the installer merges into it, so it also holds the user\u2019s MCP servers"},narrow:{},perFile:{rules:(s,e)=>[...(0,cursor_rules_1.cursorRuleFiles)(path.join(s,"rules")).map(t=>t.fileName),...(0,cursor_rules_1.kitOwnedRuleFileNames)(e)],agents:s=>(0,cursor_agents_1.cursorAgentFiles)(path.join(s,"agents")).map(e=>e.fileName),commands:s=>(0,cursor_rules_1.cursorCommandFiles)(path.join(s,"command")).map(e=>e.fileName)},extra:["coding-level.json"]},kimi:{name:"Kimi Code (Global)",whole:["rules","agents","hooks","scripts","hooks.json","session-state","schemas"],perFile:{},neverDelete:{"config.toml":"the installer preserves it \u2014 it holds the user\u2019s providers and API keys","mcp.json":"the installer merges into it, so it also holds the user\u2019s MCP servers"},narrow:{},extra:["AGENTS.md","README.md","coding-level.json",".agentkitignore"]},grok:{name:"Grok Build (Global)",whole:["hooks","scripts","schemas"],perFile:{rules:s=>(0,cursor_agents_1.cursorAgentFiles)(path.join(s,"rules")).map(e=>e.fileName),agents:s=>(0,cursor_agents_1.cursorAgentFiles)(path.join(s,"agents")).map(e=>e.fileName),commands:s=>(0,cursor_rules_1.cursorCommandFiles)(path.join(s,"command")).map(e=>e.fileName)},neverDelete:{"auth.json":"it holds the user\u2019s xAI credentials",sessions:"it holds the user\u2019s session history",bundled:"it ships with Grok itself \u2014 skills, agents and personas the CLI needs","marketplace-cache":"it is Grok\u2019s own plugin cache",memory:"it holds the user\u2019s cross-session memory","config.toml":"the installer merges into it \u2014 it holds the user\u2019s own configuration"},narrow:{},extra:["AGENTS.md","coding-level.json"]},hermes:{name:"Hermes Agent",whole:["rules","skills/agentkit","scripts/agentkit","SOUL.md","distribution.yaml","hooks/agentkit","plugins/agentkit-privacy","hooks.json","schemas"],perFile:{},skillsDirIsExclusive:!0,neverDelete:{"config.yaml":"it holds the user\u2019s providers \u2014 only agentkit\u2019s hook block is stripped"},narrow:{},extra:["AGENTS.md","README.md","coding-level.json",".agentkitignore"]},openclaw:{name:"OpenClaw (Global)",whole:["rules","skills","scripts","plugin","schemas"],perFile:{},skillsDirIsExclusive:!0,neverDelete:{},narrow:{},extra:["README.md","coding-level.json",".agentkitignore","hooks"]},omp:{name:"Oh My Pi (Global)",whole:["skills","scripts","guard","schemas"],perFile:{},neverDelete:{"mcp.json":"the installer merges into it, so it also holds the user\u2019s MCP servers"},narrow:{},skillsDirIsExclusive:!0,extra:["README.md","coding-level.json",".agentkitignore"],extraOutsideKitRoot:(s,e)=>[...new Set([omp_home_1.OMP_RULES_DIR,omp_home_1.OMP_AGENTS_DIR,omp_home_1.OMP_COMMANDS_DIR].flatMap(t=>(0,omp_managed_1.ompManagedFileNames)(path.join(e,t)).map(o=>path.join(t,o)))),omp_home_1.OMP_EXTENSION_FILE]},pi:{name:"Pi (Global)",whole:[".agentkit.json"],perFile:{},neverDelete:{},narrow:{},skillsDirIsExclusive:!1,extra:[],extraOutsideKitRoot:(s,e)=>[pi_home_1.PI_EXTENSION_FILE,pi_home_1.PI_SUBAGENT_EXTENSION_FILE,...(0,omp_managed_1.ompManagedFileNames)(path.join(e,pi_home_1.PI_PROMPTS_DIR)).map(t=>path.join(pi_home_1.PI_PROMPTS_DIR,t)),...(0,omp_managed_1.ompManagedFileNames)(path.join(e,pi_home_1.PI_AGENTS_DIR)).map(t=>path.join(pi_home_1.PI_AGENTS_DIR,t))]},antigravity:{name:"Antigravity (Global)",whole:["scripts","schemas"],perFile:{},neverDelete:{"mcp_config.json":"the installer merges into it, so it also holds the user\u2019s MCP servers"},narrow:{plugins:[antigravity_1.ANTIGRAVITY_PLUGIN_REL,...antigravity_1.LEGACY_ANTIGRAVITY_PLUGIN_NAMES.map(s=>path.join("plugins",s))]},extra:[],extraOutsideKitRoot:["GEMINI.md","AGENTS.md"]},devin:{name:"Devin CLI (Global)",whole:["scripts","schemas"],perFile:{agents:(s,e)=>(0,devin_agents_1.devinOwnedAgentNames)(e),hooks:()=>(0,devin_hooks_1.devinHookFileNames)()},neverDelete:{"config.json":"the installer merges into its `hooks` key \u2014 the rest is the user\u2019s config","mcp_config.json":"the installer merges into it, so it also holds the user\u2019s MCP servers"},narrow:{},extra:[".agentkitignore"],extraOutsideKitRoot:()=>(0,devin_rules_1.devinOwnedRuleNames)(path.join((0,devin_home_1.resolveDevinHomeDir)(),"rules")).map(s=>path.join((0,devin_home_1.resolveDevinHomeDir)(),"rules",s))}};function claimedLayoutRows(s,e,t){const o=POLICIES[s],n=new Set(o.whole);return(0,kit_layout_1.layoutFor)(s,"global").flatMap(i=>{const r=i.path;if(r in o.neverDelete)return[];if(o.narrow[r])return o.narrow[r];const a=o.perFile[r];return a?[...new Set(a(e,path.join(t,r)))].map(c=>path.join(r,c)):n.has(r)?[r]:[]})}function unclaimedGlobalLayoutRows(s){const e=POLICIES[s],t=new Set([...e.whole,...Object.keys(e.neverDelete),...Object.keys(e.narrow),...Object.keys(e.perFile)]),o=[...e.whole,...Object.values(e.narrow).flat()],n=i=>o.some(r=>i.startsWith(`${r}/`));return(0,kit_layout_1.layoutFor)(s,"global").map(i=>i.path).filter(i=>!t.has(i)&&!n(i))}function staleGlobalPolicyRows(s){const e=POLICIES[s],t=new Set((0,kit_layout_1.layoutFor)(s,"global").map(o=>o.path));return[...e.whole,...Object.keys(e.neverDelete),...Object.keys(e.narrow),...Object.keys(e.perFile)].filter(o=>!t.has(o)&&o!=="mcp.json")}function ownedSkillsPaths(s,e,t){if(kit_layout_1.KIT_LAYOUTS[s]?.hasAgentkitSkills===!1)return[];const n=path.join(t,kit_context_1.KIT_GLOBAL_SKILLS_DIR[s]);return POLICIES[s].skillsDirIsExclusive?[n]:[...(0,file_operations_1.shippedSkillEntries)(e).map(r=>r.name),...(0,retired_skills_1.retiredSkillNames)()].map(r=>path.join(n,r))}function resolveOutsideKitRoot(s,e,t){const o=s.extraOutsideKitRoot;return o?(typeof o=="function"?o(e,t):o).map(i=>path.isAbsolute(i)?i:path.join(t,i)):[]}function globalClearTarget(s,e={}){const t=POLICIES[s],o=e.rootOverride??(0,init_install_scope_1.resolveGlobalRoot)(s,""),n=e.rootOverride?e.rootOverride:(0,kit_context_1.globalBaseDir)(s),i=path.join(n,".agentkit.json"),r=e.payloadRoot??(0,package_root_1.packageRoot)(),a=[...claimedLayoutRows(s,r,n).map(l=>path.join(n,l)),...ownedSkillsPaths(s,r,n),...t.extra.map(l=>path.join(n,l)),...resolveOutsideKitRoot(t,r,o),i,path.join(n,install_manifest_1.MANIFEST_FILENAME)];return{key:e.key??`${s}-global`,name:e.name??t.name,dirPath:o,requiresMarker:i,ownedPaths:[...new Set(a)],group:(0,ui_1.kitGroup)(s)}}function globalClearTargets(){return[globalClearTarget("claude"),globalClearTarget("codex"),globalClearTarget("opencode"),globalClearTarget("opencode",{key:"opencode-legacy",name:"OpenCode (Legacy Global)",rootOverride:path.join((0,home_dir_1.homeDir)(),".opencode")}),globalClearTarget("cursor"),globalClearTarget("antigravity"),globalClearTarget("kimi"),globalClearTarget("openclaw"),globalClearTarget("omp"),globalClearTarget("grok"),globalClearTarget("pi"),globalClearTarget("devin")]}
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(s,e,t,o){o===void 0&&(o=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,o,n)}):(function(s,e,t,o){o===void 0&&(o=t),s[o]=e[t]})),__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(t){var o=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(o[o.length]=n);return o},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var o=s(e),n=0;n<o.length;n++)o[n]!=="default"&&__createBinding(t,e,o[n]);return __setModuleDefault(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.unclaimedGlobalLayoutRows=unclaimedGlobalLayoutRows,exports.staleGlobalPolicyRows=staleGlobalPolicyRows,exports.globalClearTarget=globalClearTarget,exports.globalClearTargets=globalClearTargets;const path=__importStar(require("path")),kit_layout_1=require("./doctor/kit-layout"),kit_context_1=require("./kit-context"),home_dir_1=require("./home-dir"),init_install_scope_1=require("./init-install-scope"),install_manifest_1=require("./install-manifest"),package_root_1=require("./package-root"),file_operations_1=require("./file-operations"),retired_skills_1=require("./retired-skills"),ui_1=require("./ui"),cursor_agents_1=require("./kit-installers/cursor-agents"),omp_home_1=require("./omp-home"),omp_managed_1=require("./kit-installers/omp-managed"),pi_home_1=require("./pi-home"),devin_home_1=require("./kit-installers/devin-home"),devin_rules_1=require("./kit-installers/devin-rules"),devin_agents_1=require("./kit-installers/devin-agents"),devin_hooks_1=require("./kit-installers/devin-hooks"),payload_roots_1=require("./payload-roots"),cursor_rules_1=require("./kit-installers/cursor-rules"),antigravity_1=require("./kit-installers/antigravity"),POLICIES={claude:{name:"Claude Code (Global)",whole:["rules","commands","agents","hooks","scripts","settings.json","schemas","session-state"],neverDelete:{},narrow:{},perFile:{},extra:["CLAUDE.md","coding-level.json",".agentkitignore",".env.example",".mcp.json.example","statusline.cjs","statusline.ps1","statusline.sh"]},codex:{name:"OpenAI Codex (Global)",whole:["rules","agents","hooks","scripts","hooks.json","session-state","schemas"],perFile:{},neverDelete:{"config.toml":"the installer preserves and merges into it \u2014 it is Codex\u2019s own config"},narrow:{},extra:["AGENTS.md","README.md","coding-level.json",".agentkitignore",".mcp.json"]},opencode:{name:"OpenCode (Global)",whole:["rules","commands","agents","scripts","plugins","opencode.json","schemas"],neverDelete:{},narrow:{},perFile:{},extra:["AGENTS.md","README.md","MCP.md","agents-contracts-reference.md","agents-registry.json","antigravity.json","bun.lock","coding-level.json"]},cursor:{name:"Cursor AI (Global)",whole:["hooks","scripts","hooks.json","schemas"],neverDelete:{"mcp.json":"the installer merges into it, so it also holds the user\u2019s MCP servers"},narrow:{},perFile:{rules:(s,e)=>[...(0,cursor_rules_1.cursorRuleFiles)(path.join(s,payload_roots_1.RULES_SOURCE_DIR)).map(t=>t.fileName),...(0,cursor_rules_1.kitOwnedRuleFileNames)(e)],agents:s=>(0,cursor_agents_1.cursorAgentFiles)(path.join(s,payload_roots_1.AGENTS_SOURCE_DIR)).map(e=>e.fileName),commands:s=>(0,cursor_rules_1.cursorCommandFiles)(path.join(s,payload_roots_1.COMMAND_SOURCE_DIR)).map(e=>e.fileName)},extra:["coding-level.json"]},kimi:{name:"Kimi Code (Global)",whole:["rules","agents","hooks","scripts","hooks.json","session-state","schemas"],perFile:{},neverDelete:{"config.toml":"the installer preserves it \u2014 it holds the user\u2019s providers and API keys","mcp.json":"the installer merges into it, so it also holds the user\u2019s MCP servers"},narrow:{},extra:["AGENTS.md","README.md","coding-level.json",".agentkitignore"]},grok:{name:"Grok Build (Global)",whole:["hooks","scripts","schemas"],perFile:{rules:s=>(0,cursor_agents_1.cursorAgentFiles)(path.join(s,payload_roots_1.RULES_SOURCE_DIR)).map(e=>e.fileName),agents:s=>(0,cursor_agents_1.cursorAgentFiles)(path.join(s,payload_roots_1.AGENTS_SOURCE_DIR)).map(e=>e.fileName),commands:s=>(0,cursor_rules_1.cursorCommandFiles)(path.join(s,payload_roots_1.COMMAND_SOURCE_DIR)).map(e=>e.fileName)},neverDelete:{"auth.json":"it holds the user\u2019s xAI credentials",sessions:"it holds the user\u2019s session history",bundled:"it ships with Grok itself \u2014 skills, agents and personas the CLI needs","marketplace-cache":"it is Grok\u2019s own plugin cache",memory:"it holds the user\u2019s cross-session memory","config.toml":"the installer merges into it \u2014 it holds the user\u2019s own configuration"},narrow:{},extra:["AGENTS.md","coding-level.json"]},hermes:{name:"Hermes Agent",whole:["rules","skills/agentkit","scripts/agentkit","SOUL.md","distribution.yaml","hooks/agentkit","plugins/agentkit-privacy","hooks.json","schemas"],perFile:{},skillsDirIsExclusive:!0,neverDelete:{"config.yaml":"it holds the user\u2019s providers \u2014 only agentkit\u2019s hook block is stripped"},narrow:{},extra:["AGENTS.md","README.md","coding-level.json",".agentkitignore"]},openclaw:{name:"OpenClaw (Global)",whole:["rules","skills","scripts","plugin","schemas"],perFile:{},skillsDirIsExclusive:!0,neverDelete:{},narrow:{},extra:["README.md","coding-level.json",".agentkitignore","hooks"]},omp:{name:"Oh My Pi (Global)",whole:["skills","scripts","guard","schemas"],perFile:{},neverDelete:{"mcp.json":"the installer merges into it, so it also holds the user\u2019s MCP servers"},narrow:{},skillsDirIsExclusive:!0,extra:["README.md","coding-level.json",".agentkitignore"],extraOutsideKitRoot:(s,e)=>[...new Set([omp_home_1.OMP_RULES_DIR,omp_home_1.OMP_AGENTS_DIR,omp_home_1.OMP_COMMANDS_DIR].flatMap(t=>(0,omp_managed_1.ompManagedFileNames)(path.join(e,t)).map(o=>path.join(t,o)))),omp_home_1.OMP_EXTENSION_FILE]},pi:{name:"Pi (Global)",whole:[".agentkit.json"],perFile:{},neverDelete:{},narrow:{},skillsDirIsExclusive:!1,extra:[],extraOutsideKitRoot:(s,e)=>[pi_home_1.PI_EXTENSION_FILE,pi_home_1.PI_SUBAGENT_EXTENSION_FILE,...(0,omp_managed_1.ompManagedFileNames)(path.join(e,pi_home_1.PI_PROMPTS_DIR)).map(t=>path.join(pi_home_1.PI_PROMPTS_DIR,t)),...(0,omp_managed_1.ompManagedFileNames)(path.join(e,pi_home_1.PI_AGENTS_DIR)).map(t=>path.join(pi_home_1.PI_AGENTS_DIR,t))]},antigravity:{name:"Antigravity (Global)",whole:["scripts","schemas"],perFile:{},neverDelete:{"mcp_config.json":"the installer merges into it, so it also holds the user\u2019s MCP servers"},narrow:{plugins:[antigravity_1.ANTIGRAVITY_PLUGIN_REL,...antigravity_1.LEGACY_ANTIGRAVITY_PLUGIN_NAMES.map(s=>path.join("plugins",s))]},extra:[],extraOutsideKitRoot:["GEMINI.md","AGENTS.md"]},devin:{name:"Devin CLI (Global)",whole:["scripts","schemas"],perFile:{agents:(s,e)=>(0,devin_agents_1.devinOwnedAgentNames)(e),hooks:()=>(0,devin_hooks_1.devinHookFileNames)()},neverDelete:{"config.json":"the installer merges into its `hooks` key \u2014 the rest is the user\u2019s config","mcp_config.json":"the installer merges into it, so it also holds the user\u2019s MCP servers"},narrow:{},extra:[".agentkitignore"],extraOutsideKitRoot:()=>(0,devin_rules_1.devinOwnedRuleNames)(path.join((0,devin_home_1.resolveDevinHomeDir)(),"rules")).map(s=>path.join((0,devin_home_1.resolveDevinHomeDir)(),"rules",s))}};function claimedLayoutRows(s,e,t){const o=POLICIES[s],n=new Set(o.whole);return(0,kit_layout_1.layoutFor)(s,"global").flatMap(i=>{const r=i.path;if(r in o.neverDelete)return[];if(o.narrow[r])return o.narrow[r];const a=o.perFile[r];return a?[...new Set(a(e,path.join(t,r)))].map(c=>path.join(r,c)):n.has(r)?[r]:[]})}function unclaimedGlobalLayoutRows(s){const e=POLICIES[s],t=new Set([...e.whole,...Object.keys(e.neverDelete),...Object.keys(e.narrow),...Object.keys(e.perFile)]),o=[...e.whole,...Object.values(e.narrow).flat()],n=i=>o.some(r=>i.startsWith(`${r}/`));return(0,kit_layout_1.layoutFor)(s,"global").map(i=>i.path).filter(i=>!t.has(i)&&!n(i))}function staleGlobalPolicyRows(s){const e=POLICIES[s],t=new Set((0,kit_layout_1.layoutFor)(s,"global").map(o=>o.path));return[...e.whole,...Object.keys(e.neverDelete),...Object.keys(e.narrow),...Object.keys(e.perFile)].filter(o=>!t.has(o)&&o!=="mcp.json")}function ownedSkillsPaths(s,e,t){if(kit_layout_1.KIT_LAYOUTS[s]?.hasAgentkitSkills===!1)return[];const n=path.join(t,kit_context_1.KIT_GLOBAL_SKILLS_DIR[s]);return POLICIES[s].skillsDirIsExclusive?[n]:[...(0,file_operations_1.shippedSkillEntries)(e).map(r=>r.name),...(0,retired_skills_1.retiredSkillNames)()].map(r=>path.join(n,r))}function resolveOutsideKitRoot(s,e,t){const o=s.extraOutsideKitRoot;return o?(typeof o=="function"?o(e,t):o).map(i=>path.isAbsolute(i)?i:path.join(t,i)):[]}function globalClearTarget(s,e={}){const t=POLICIES[s],o=e.rootOverride??(0,init_install_scope_1.resolveGlobalRoot)(s,""),n=e.rootOverride?e.rootOverride:(0,kit_context_1.globalBaseDir)(s),i=path.join(n,".agentkit.json"),r=e.payloadRoot??(0,package_root_1.packageRoot)(),a=[...claimedLayoutRows(s,r,n).map(l=>path.join(n,l)),...ownedSkillsPaths(s,r,n),...t.extra.map(l=>path.join(n,l)),...resolveOutsideKitRoot(t,r,o),i,path.join(n,install_manifest_1.MANIFEST_FILENAME)];return{key:e.key??`${s}-global`,name:e.name??t.name,dirPath:o,requiresMarker:i,ownedPaths:[...new Set(a)],group:(0,ui_1.kitGroup)(s)}}function globalClearTargets(){return[globalClearTarget("claude"),globalClearTarget("codex"),globalClearTarget("opencode"),globalClearTarget("opencode",{key:"opencode-legacy",name:"OpenCode (Legacy Global)",rootOverride:path.join((0,home_dir_1.homeDir)(),".opencode")}),globalClearTarget("cursor"),globalClearTarget("antigravity"),globalClearTarget("kimi"),globalClearTarget("openclaw"),globalClearTarget("omp"),globalClearTarget("grok"),globalClearTarget("pi"),globalClearTarget("devin")]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(i,o,t,e){e===void 0&&(e=t);var n=Object.getOwnPropertyDescriptor(o,t);(!n||("get"in n?!o.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return o[t]}}),Object.defineProperty(i,e,n)}):(function(i,o,t,e){e===void 0&&(e=t),i[e]=o[t]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(i,o){Object.defineProperty(i,"default",{enumerable:!0,value:o})}):function(i,o){i.default=o}),__importStar=this&&this.__importStar||(function(){var i=function(o){return i=Object.getOwnPropertyNames||function(t){var e=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[e.length]=n);return e},i(o)};return function(o){if(o&&o.__esModule)return o;var t={};if(o!=null)for(var e=i(o),n=0;n<e.length;n++)e[n]!=="default"&&__createBinding(t,o,e[n]);return __setModuleDefault(t,o),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.MANUAL_KIT_READERS=exports.SHARED_FILE_KITS=exports.KIT_SOURCE_DIRS=void 0,exports.hooksGatedByCode=hooksGatedByCode,exports.regexTogglePairs=regexTogglePairs,exports.kitsReadingEachHook=kitsReadingEachHook,exports.hookDefaults=hookDefaults,exports.hookRegistry=hookRegistry;const fs=__importStar(require("fs")),path=__importStar(require("path")),TOGGLE_CALL=/(?:is)?[Hh]ookEnabled\(\s*['"]([a-z][a-z0-9-]*)['"]/g,SCANNED_EXTENSIONS=/\.(cjs|js|mjs|ts|py)$/,WALK_ROOTS=["agent-kit","scripts
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(i,o,t,e){e===void 0&&(e=t);var n=Object.getOwnPropertyDescriptor(o,t);(!n||("get"in n?!o.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return o[t]}}),Object.defineProperty(i,e,n)}):(function(i,o,t,e){e===void 0&&(e=t),i[e]=o[t]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(i,o){Object.defineProperty(i,"default",{enumerable:!0,value:o})}):function(i,o){i.default=o}),__importStar=this&&this.__importStar||(function(){var i=function(o){return i=Object.getOwnPropertyNames||function(t){var e=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[e.length]=n);return e},i(o)};return function(o){if(o&&o.__esModule)return o;var t={};if(o!=null)for(var e=i(o),n=0;n<e.length;n++)e[n]!=="default"&&__createBinding(t,o,e[n]);return __setModuleDefault(t,o),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.MANUAL_KIT_READERS=exports.SHARED_FILE_KITS=exports.KIT_SOURCE_DIRS=void 0,exports.hooksGatedByCode=hooksGatedByCode,exports.regexTogglePairs=regexTogglePairs,exports.kitsReadingEachHook=kitsReadingEachHook,exports.hookDefaults=hookDefaults,exports.hookRegistry=hookRegistry;const fs=__importStar(require("fs")),path=__importStar(require("path")),payload_roots_1=require("./payload-roots"),TOGGLE_CALL=/(?:is)?[Hh]ookEnabled\(\s*['"]([a-z][a-z0-9-]*)['"]/g,SCANNED_EXTENSIONS=/\.(cjs|js|mjs|ts|py)$/,WALK_ROOTS=["agent-kit","agent-scripts"];exports.KIT_SOURCE_DIRS={claude:["claude","augment"],shared:["claude","augment"],cursor:["cursor"],codex:["codex"],gemini:["antigravity"],opencode:["opencode"],kimi:["kimi"],hermes:["hermes"],openclaw:["openclaw"],omp:["omp"],grok:["grok"],pi:["pi"],devin:["devin"]},exports.SHARED_FILE_KITS={"hooks/lib/agentkit-context-core.cjs":["codex","kimi"],"hooks/lib/cook-evidence-claude-protocol.cjs":["codex","kimi"],"hooks/team-context-inject.cjs":["claude","augment","codex","kimi"],"hooks/check-secrets.cjs":["claude","augment","codex","kimi","devin","hermes"],"hooks/block-risky-commands.cjs":["claude","augment","codex","kimi","devin","hermes"],"hooks/language-guard.cjs":["claude","augment","codex","kimi","devin","hermes"]},exports.MANUAL_KIT_READERS=[{kit:"codex",hook:"cook-evidence-gate",file:"agent-kit/codex/hooks/cook-evidence-gate.cjs",note:"local isHookEnabled(codexDir) reads config?.hooks?.['cook-evidence-gate']"},{kit:"kimi",hook:"cook-evidence-gate",file:"agent-kit/kimi/hooks/cook-evidence-gate.cjs",note:"local isHookEnabled(kimiDir) reads config?.hooks?.['cook-evidence-gate']"},{kit:"hermes",hook:"cook-evidence-gate",file:"agent-kit/hermes/hooks/cook-evidence-gate.cjs",note:"local isHookEnabled(root/KIT_DIR) reads config?.hooks?.['cook-evidence-gate']"},{kit:"hermes",hook:"privacy-block",file:"agent-kit/hermes/plugins/agentkit-privacy/detect.py",note:"is_disabled() reads .agentkit.json hooks['privacy-block'] and privacyBlock"}];function walk(i,o){if(fs.existsSync(i))for(const t of fs.readdirSync(i,{withFileTypes:!0})){if(t.isSymbolicLink())continue;const e=path.join(i,t.name);if(t.isDirectory()){if(t.name==="__tests__")continue;walk(e,o)}else SCANNED_EXTENSIONS.test(t.name)&&o(e)}}function hooksGatedByCode(i){const o=new Set;for(const t of WALK_ROOTS)walk(path.join(i,t),e=>{for(const n of fs.readFileSync(e,"utf-8").matchAll(TOGGLE_CALL))o.add(n[1])});return o}function regexTogglePairs(i){const o=[],t=path.join(i,payload_roots_1.AGENT_KIT_DIR);return walk(t,e=>{const n=path.relative(t,e),s=n.split(path.sep)[0],d=n.split(path.sep).slice(1).join("/"),r=(s==="shared"?exports.SHARED_FILE_KITS[d]:void 0)??exports.KIT_SOURCE_DIRS[s],c=path.relative(i,e);for(const a of fs.readFileSync(e,"utf-8").matchAll(TOGGLE_CALL)){if(!r)throw new Error(`hook-toggle-registry: no kit mapping for agent-kit/${s} (found '${a[1]}' in ${c})`);for(const u of r)o.push({kit:u,hook:a[1],source:c})}}),o}function kitsReadingEachHook(i){const o=new Map,t=(e,n)=>{const s=o.get(e)??new Set;s.add(n),o.set(e,s)};for(const e of regexTogglePairs(i))t(e.hook,e.kit);for(const e of exports.MANUAL_KIT_READERS)t(e.hook,e.kit);return o}function hookDefaults(i){return require(path.join(i,"agent-kit/shared/hooks/lib/agentkit-config-utils.cjs")).loadConfig().hooks}function hookRegistry(i){const o=hookDefaults(i),t=kitsReadingEachHook(i);return Object.keys(o).sort().map(e=>({name:e,defaultEnabled:o[e]!==!1,readBy:t.get(e)??new Set}))}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(i,t,n,e){e===void 0&&(e=n);var o=Object.getOwnPropertyDescriptor(t,n);(!o||("get"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(i,e,o)}):(function(i,t,n,e){e===void 0&&(e=n),i[e]=t[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(i,t){Object.defineProperty(i,"default",{enumerable:!0,value:t})}):function(i,t){i.default=t}),__importStar=this&&this.__importStar||(function(){var i=function(t){return i=Object.getOwnPropertyNames||function(n){var e=[];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[e.length]=o);return e},i(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var e=i(t),o=0;o<e.length;o++)e[o]!=="default"&&__createBinding(n,t,e[o]);return __setModuleDefault(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.runHooks=runHooks;const path=__importStar(require("path")),p=__importStar(require("@clack/prompts")),agentkit_config_file_1=require("../agentkit-config-file"),hook_toggle_registry_1=require("../hook-toggle-registry"),home_dir_1=require("../home-dir"),hooks_write_policy_1=require("../hooks-write-policy"),kit_context_1=require("../kit-context"),init_install_scope_1=require("../init-install-scope"),kits_1=require("../kits"),logger_1=require("../logger");function effectiveValue(i,t){const n=t[i.name];return n===!1?!1:n===!0?!0:n&&typeof n=="object"&&n.enabled===!1?!1:i.defaultEnabled}function closeMatches(i,t){const n=i.toLowerCase();return t.filter(e=>e.includes(n)||n.includes(e)||e.slice(0,3)===n.slice(0,3)).slice(0,5)}function usage(){(0,logger_1.printInfo)("Usage:"),(0,logger_1.printInfo)(" agentkit hooks pick toggles interactively"),(0,logger_1.printInfo)(" agentkit hooks list one kit \u2014 picks it when it has to"),(0,logger_1.printInfo)(" agentkit hooks list --kit <name> one named kit, no prompt"),(0,logger_1.printInfo)(" agentkit hooks list --global every global install"),(0,logger_1.printInfo)(" agentkit hooks enable <name\u2026> turn one or more hooks on"),(0,logger_1.printInfo)(" agentkit hooks disable <name\u2026> turn one or more hooks off"),(0,logger_1.printInfo)(" agentkit hooks enable --all master switch: every hook on"),(0,logger_1.printInfo)(" agentkit hooks disable --all master switch: every hook off"),(0,logger_1.printInfo)(" agentkit hooks help show full help message"),(0,logger_1.printInfo)(""),(0,logger_1.printInfo)("Options:"),(0,logger_1.printInfo)(" --kit <name> target one kit by name, whatever the cwd"),(0,logger_1.printInfo)(" --global global installs only"),(0,logger_1.printInfo)(" --all the master switch, not named hooks")}function contextLabel(i,t){const n=`${kits_1.kitDefinitions[i.kit].name} (${i.scope})`;return t?`${n} \u2014 ${logger_1.chalk.dim(i.configPath)}`:n}function printToggleTable(i,t){const n=(0,agentkit_config_file_1.readSection)((0,agentkit_config_file_1.readKitConfig)(t.configPath),"hooks");(0,agentkit_config_file_1.readHooksEnabled)(t.configPath)||console.log(` ${logger_1.chalk.red("DISABLED")} ${logger_1.chalk.bold("all hooks")} ${logger_1.chalk.dim("(hooksEnabled: false \u2014 every row below is off)")}`);let o=!1;for(const s of i){const c=effectiveValue(s,n)?logger_1.chalk.green("enabled "):logger_1.chalk.red("disabled"),l=s.name in n?"":logger_1.chalk.dim(" (default)"),h=s.readBy.has(t.kit)?"":logger_1.chalk.yellow(` \u2014 not read by ${t.kit}`);h&&(o=!0),console.log(` ${c} ${s.name}${l}${h}`)}return o}function printLists(i,t,n={}){const{note:e}=n,o=t.length>1;let s=!1;for(const r of t)(0,logger_1.printSection)(`Hook toggles \u2014 ${contextLabel(r,o)}`),console.log(""),printToggleTable(i,r)&&(s=!0),console.log("");s&&((0,logger_1.printInfo)(logger_1.chalk.dim("A toggle this kit does not read is still written. Re-installing the same kit keeps it; switching this project to another kit deletes it with the old kit.")),console.log("")),e&&((0,logger_1.printInfo)(logger_1.chalk.dim(e)),console.log(""))}const SHOW_ALL="__all__";async function pickKitsToList(i,t,n){if(!t||i.length<=1)return null;const e=r=>`${r.kit}:${r.scope}`,o=await n.select({message:"Which kit?",options:[...i.map(r=>({value:e(r),label:contextLabel(r,!0)})),{value:SHOW_ALL,label:`Show every kit (${i.length})`}]});if(n.isCancel(o)||o===SHOW_ALL)return null;const s=i.find(r=>e(r)===o);return s?[s]:null}function listNote(i,t,n,e){const o=[],s=i!==null&&i.length===1?i[0]:null,r=n.length===1?n[0]:null,c=l=>s!==null&&s.kit===l.kit&&s.scope===l.scope;if(i===null&&t.length>1&&o.push(e?`Every installed kit (${t.length}) is shown.`:`Every installed kit (${t.length}) is shown: no terminal here to ask which one.`),r!==null&&!c(r)){const l=`${kits_1.kitDefinitions[r.kit].name} (${r.scope})`;o.push(s!==null?`A bare enable/disable here writes ${l} instead. Use \`--kit ${s.kit}\` to write the kit on screen.`:`A bare enable/disable here writes ${l}.`)}else r===null&&s!==null?o.push(`Use \`--kit ${s.kit}\` to enable or disable what is on screen.`):r===null&&n.length>1&&o.push(e?"A bare enable/disable would ask which kit; --kit <name> answers it instead.":"A bare enable/disable cannot choose between them without a terminal, and refuses; --kit <name> names one instead.");return o.length>0?o.join(" "):void 0}function contextFor(i,t,n=[]){const e=i.trim().toLowerCase(),o=t.filter(s=>s.kit===e);if(o.length===0){const s=[...new Set(t.map(c=>c.kit))].sort();(0,logger_1.printError)(`No install of \`${e}\` found.`),(0,logger_1.printInfo)(`Installed here: ${s.length>0?s.join(", "):"(none)"}`);const r=[...new Set(n.filter(c=>c.kit===e).map(c=>c.scope))].sort();return r.length>0&&(0,logger_1.printInfo)(`\`${e}\` is installed at ${r.join(" and ")} scope \u2014 drop the scope flag to reach it.`),null}if(o.length>1){(0,logger_1.printError)(`\`${e}\` is installed at both scopes \u2014 say which with --global.`);for(const s of o)(0,logger_1.printInfo)(` ${s.scope}: ${s.configPath}`);return null}return o[0]}function allContexts(i){const n=(0,home_dir_1.isHomeDir)(i)?[]:kit_context_1.GLOBAL_KITS.filter(o=>(0,init_install_scope_1.isKitInstalledInProject)(o,i)).map(o=>(0,kit_context_1.projectContext)(o,i)),e=kit_context_1.GLOBAL_KITS.filter(o=>(0,init_install_scope_1.isKitInstalledGlobally)(o)).map(kit_context_1.globalContext);return[...n,...e]}function applyToggle(i,t,n,e){const o=n.map(l=>l.name),s=i.filter(l=>!o.includes(l));if(s.length>0){(0,logger_1.printError)(`Unknown hook(s): ${s.join(", ")}`);for(const l of s){const h=closeMatches(l,o);h.length>0&&(0,logger_1.printInfo)(`Did you mean (for ${l}): ${h.join(", ")}?`)}return(0,logger_1.printInfo)("Run `agentkit hooks list` to see every toggle."),1}const r=kits_1.kitDefinitions[e.kit].name,c=[];for(const l of i){const h=n.find(g=>g.name===l),u=(0,hooks_write_policy_1.decideWrite)(e.kit,e.scope,l,h.readBy,r);if(!u.allowed)return(0,logger_1.printError)(u.reason),(0,logger_1.printInfo)(`Run instead: ${u.hint}`),1;u.warning&&c.push(u.warning)}(0,agentkit_config_file_1.updateSection)(e.configPath,"hooks",l=>{for(const h of i){const u=l[h];u&&typeof u=="object"?u.enabled=t:l[h]=t}});for(const l of c)(0,logger_1.printWarning)(l);for(const l of i)(0,logger_1.printSuccess)(`${t?"Enabled":"Disabled"} ${l} for ${r} (${e.scope}).`);return(0,logger_1.printInfo)(logger_1.chalk.dim(e.configPath)),t&&!(0,agentkit_config_file_1.readHooksEnabled)(e.configPath)&&(0,logger_1.printWarning)(`The master switch is off for ${r}, so ${i.length===1?"this hook stays":"these hooks stay"} off until you run \`agentkit hooks enable --all\`.`),0}function applyMasterSwitch(i,t,n,e){if(i.length>0)return(0,logger_1.printError)("`--all` writes every hook of a kit, so it cannot be combined with a name."),(0,logger_1.printInfo)(`Drop either the flag or \`${i[0]}\`: \`agentkit hooks ${t?"enable":"disable"} --all\``),1;const o=kits_1.kitDefinitions[e.kit].name;return n.some(s=>s.readBy.has(e.kit))||(0,logger_1.printWarning)(`${o} ships no code that reads a hook toggle \u2014 setting the master switch here has no effect on this kit today.`),(0,agentkit_config_file_1.writeHooksEnabled)(e.configPath,t),(0,logger_1.printSuccess)(t?`Every hook enabled for ${o} (${e.scope}).`:`Every hook disabled for ${o} (${e.scope}).`),(0,logger_1.printInfo)(logger_1.chalk.dim(e.configPath)),t||(0,logger_1.printInfo)(logger_1.chalk.dim("Per-hook values are untouched, so `agentkit hooks enable --all` restores them.")),0}async function pickToggles(i,t,n,e){const o=(0,agentkit_config_file_1.readSection)((0,agentkit_config_file_1.readKitConfig)(t.configPath),"hooks"),s="__master__",r=await e.multiselect({message:`Hooks for ${contextLabel(t,!1)}`,options:[{value:s,label:n?"All hooks \u2014 enabled":"All hooks \u2014 DISABLED",hint:"master switch"},...i.map(f=>{const b=effectiveValue(f,o),a=f.readBy.has(t.kit)?"":` (not read by ${t.kit})`;return{value:f.name,label:`${f.name}${a}`,hint:b?"enabled":"disabled"}})],initialValues:[...n?[s]:[],...i.filter(f=>effectiveValue(f,o)).map(f=>f.name)],required:!1});if(e.isCancel(r))return(0,logger_1.printInfo)("Cancelled \u2014 nothing written."),0;const c=r,l=c.includes(s),h=new Set(c.filter(f=>f!==s));let u=0;l!==n&&((0,agentkit_config_file_1.writeHooksEnabled)(t.configPath,l),u+=1);const g=i.filter(f=>effectiveValue(f,o)!==h.has(f.name));g.length>0&&((0,agentkit_config_file_1.updateSection)(t.configPath,"hooks",f=>{for(const b of g){const a=f[b.name];a&&typeof a=="object"?a.enabled=h.has(b.name):f[b.name]=h.has(b.name)}}),u+=g.length);const d=kits_1.kitDefinitions[t.kit].name;return u===0?((0,logger_1.printInfo)(`No change \u2014 ${d} (${t.scope}) is already in that state.`),0):((0,logger_1.printSuccess)(`Updated ${u} setting${u===1?"":"s"} for ${d} (${t.scope}).`),(0,logger_1.printInfo)(logger_1.chalk.dim(t.configPath)),0)}async function runHooks(i,t={}){const n=t.repoRoot??path.resolve(__dirname,"..","..",".."),e=t.targetDir??process.cwd(),o=t.isTTY??process.stdout.isTTY,s=t.prompts??p,[r,...c]=i;if(!r){if(!o)return usage(),0;const a=await(0,kit_context_1.resolveContext)(e,{promptMessage:"Which kit to configure?",nonTtyHint:"Pick one with `agentkit hooks list`, or cd into a project."});if(!a)return 1;const k=(0,hook_toggle_registry_1.hookRegistry)(n);return pickToggles(k,a,(0,agentkit_config_file_1.readHooksEnabled)(a.configPath),s)}if(!["list","enable","disable"].includes(r))return(0,logger_1.printError)(`Unknown subcommand: ${r}`),usage(),1;const l=c.findIndex(a=>a==="--kit"||a.startsWith("--kit=")),h=c.includes("--global"),u=c.includes("--all");let g=null;if(l!==-1){const a=c[l];if(g=a.includes("=")?a.slice(a.indexOf("=")+1):c[l+1]??"",!g)return(0,logger_1.printError)("--kit needs a kit name, e.g. `--kit omp`."),1}const d=c.filter((a,k)=>!a.startsWith("--kit")&&a!=="--global"&&a!=="--all"&&!(l!==-1&&!c[l].includes("=")&&k===l+1));if(g!==null||h){const a=allContexts(e),k=a.filter(w=>h?w.scope==="global":!0);if(k.length===0)return h&&a.length>0?((0,logger_1.printError)("No global AgentKit install detected."),(0,logger_1.printInfo)("This machine has a project install only. Run `agentkit init --global` first.")):(0,logger_1.printError)("No AgentKit install detected. Run `agentkit init` first."),1;const m=g!==null?contextFor(g,k,a):null;if(g!==null&&m===null)return 1;const y=m??(k.length===1?k[0]:null);if(y!==null){const w=(0,hook_toggle_registry_1.hookRegistry)(n);return r==="list"?(printLists(w,[y],{note:m!==null?listNote([m],[m],(0,kit_context_1.candidateContexts)(e),o):void 0}),0):u?applyMasterSwitch(d,r==="enable",w,y):d.length===0?((0,logger_1.printError)(`\`agentkit hooks ${r}\` needs at least one hook name.`),usage(),1):applyToggle(d,r==="enable",w,y)}const $=(0,hook_toggle_registry_1.hookRegistry)(n);return r==="list"?(printLists($,k,{note:`Every global kit (${k.length}); --kit <name> narrows it to one.`}),0):((0,logger_1.printError)(`--global names ${k.length} kits, so it cannot choose which to write.`),(0,logger_1.printInfo)(`Add --kit <name>: ${[...new Set(k.map(w=>w.kit))].sort().join(", ")}`),1)}if(r==="list"){const a=(0,hook_toggle_registry_1.hookRegistry)(n),k=allContexts(e);if(k.length===0)return(0,logger_1.printError)("No AgentKit install detected. Run `agentkit init` first."),1;const m=await pickKitsToList(k,o,s),y=(0,kit_context_1.candidateContexts)(e);return printLists(a,m??k,{note:listNote(m,k,y,o)}),0}const f=await(0,kit_context_1.resolveContext)(e,{promptMessage:"Which kit to configure?",nonTtyHint:"Pick one with `agentkit hooks list`, or cd into a project."});if(!f)return 1;const b=(0,hook_toggle_registry_1.hookRegistry)(n);return u?applyMasterSwitch(d,r==="enable",b,f):d.length===0?((0,logger_1.printError)(`\`agentkit hooks ${r}\` needs at least one hook name.`),usage(),1):applyToggle(d,r==="enable",b,f)}
|
|
@@ -0,0 +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(r,e,t,n){n===void 0&&(n=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(r,n,i)}):(function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]})),__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(t){var n=[];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(n[n.length]=i);return n},r(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n=r(e),i=0;i<n.length;i++)n[i]!=="default"&&__createBinding(t,e,n[i]);return __setModuleDefault(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.readCliVersion=readCliVersion,exports.hasPersistedProfile=hasPersistedProfile,exports.readInstallSettings=readInstallSettings,exports.writeInstallSettings=writeInstallSettings,exports.stampInstallVersion=stampInstallVersion;const fs=__importStar(require("fs")),path=__importStar(require("path")),agentkit_config_file_1=require("./agentkit-config-file"),claude_agents_1=require("./kit-installers/claude-agents"),skill_profiles_1=require("./skill-profiles");function readCliVersion(r){try{const e=JSON.parse(fs.readFileSync(path.join(r,"package.json"),"utf8"));return typeof e.version=="string"?e.version:null}catch{return null}}function hasPersistedProfile(r){return typeof(0,agentkit_config_file_1.readSection)((0,agentkit_config_file_1.readKitConfig)(r),"install").profile=="string"}function readInstallSettings(r){const e=(0,agentkit_config_file_1.readSection)((0,agentkit_config_file_1.readKitConfig)(r),"install"),t=typeof e.profile=="string"&&(0,skill_profiles_1.isValidProfile)(e.profile)?e.profile:
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,n){n===void 0&&(n=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(r,n,i)}):(function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]})),__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(t){var n=[];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(n[n.length]=i);return n},r(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n=r(e),i=0;i<n.length;i++)n[i]!=="default"&&__createBinding(t,e,n[i]);return __setModuleDefault(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.readCliVersion=readCliVersion,exports.hasPersistedProfile=hasPersistedProfile,exports.readInstallSettings=readInstallSettings,exports.writeInstallSettings=writeInstallSettings,exports.stampInstallVersion=stampInstallVersion;const fs=__importStar(require("fs")),path=__importStar(require("path")),agentkit_config_file_1=require("./agentkit-config-file"),claude_agents_1=require("./kit-installers/claude-agents"),skill_profiles_1=require("./skill-profiles");function readCliVersion(r){try{const e=JSON.parse(fs.readFileSync(path.join(r,"package.json"),"utf8"));return typeof e.version=="string"?e.version:null}catch{return null}}function hasPersistedProfile(r){return typeof(0,agentkit_config_file_1.readSection)((0,agentkit_config_file_1.readKitConfig)(r),"install").profile=="string"}function readInstallSettings(r){const e=(0,agentkit_config_file_1.readSection)((0,agentkit_config_file_1.readKitConfig)(r),"install"),t=typeof e.profile=="string"&&(0,skill_profiles_1.isValidProfile)(e.profile)?e.profile:null,n=Array.isArray(e.extraSkills)?e.extraSkills.filter(o=>typeof o=="string"):[],i=typeof e.version=="string"?e.version:void 0,l=typeof e.agentModels=="string"&&(0,claude_agents_1.isValidClaudeAgentModels)(e.agentModels)?e.agentModels:void 0;return{profile:t,extraSkills:n,...i?{version:i}:{},...l?{agentModels:l}:{}}}function writeInstallSettings(r,e){(0,agentkit_config_file_1.updateSection)(r,"install",t=>{e.profile!==void 0&&(t.profile=e.profile),e.extraSkills.length>0?t.extraSkills=[...new Set(e.extraSkills)].sort():delete t.extraSkills,e.version&&(t.version=e.version),e.agentModels&&(t.agentModels=e.agentModels)})}function stampInstallVersion(r,e){(0,agentkit_config_file_1.updateSection)(r,"install",t=>{t.version=e})}
|
|
@@ -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
|
|
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");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 d of(0,omp_managed_1.ompManagedFileNames)(path.join(t,c)))n(path.join(".pi",c,d))}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 d=[{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:f})=>{for(const p of f)(0,file_operations_1.removeFile)(path.join(t,l,p));return f.length>0});for(const{dir:l,names:f}of d)(0,logger_1.printSuccess)(`Removed ${f.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)(),"command")),...(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 f=l?path.join(t,l):t;try{fs.existsSync(f)&&fs.readdirSync(f).length===0&&(fs.rmdirSync(f),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 d=path.join(e,"plugins","local","context-mode");fs.existsSync(d)&&(0,file_operations_1.removeDir)(d)&&((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(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 +1 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=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,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=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 r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&__createBinding(n,t,r[i]);return __setModuleDefault(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.scanForInstalls=scanForInstalls,exports.probeGlobalInstalls=probeGlobalInstalls;const fs=__importStar(require("fs")),path=__importStar(require("path")),kit_context_1=require("./kit-context"),init_install_scope_1=require("./init-install-scope"),install_profile_config_1=require("./install-profile-config"),kits_1=require("./kits"),DEFAULT_MAX_DEPTH=4,SKIP_DIRS=new Set(["node_modules",".git","dist","build","coverage",".next",".turbo","vendor","Library"]);function recordFor(e,t,n,r){const i=new Date().toISOString(),{version:o}=(0,install_profile_config_1.readInstallSettings)(path.join(r,".agentkit.json"));return{path:n,kit:e,scope:t,kitRoot:r,...o?{version:o}:{},installedAt:i,updatedAt:i}}function installsIn(e){const t=[];for(const n of kits_1.PROJECT_KITS)(0,init_install_scope_1.isKitInstalledInProject)(n,e)&&t.push(recordFor(n,"project",e,path.join(e,kits_1.kitDefinitions[n].dir)));return t}function scanForInstalls(e,{maxDepth:t=DEFAULT_MAX_DEPTH}={}){const n=[],r=new Set;let i=e.map(o=>path.resolve(o)).filter(o=>!r.has(o));for(let o=0;o<=t&&i.length>0;o+=1){const a=[];for(const s of i){if(r.has(s)||(r.add(s),n.push(...installsIn(s)),o===t))continue;let c;try{c=fs.readdirSync(s,{withFileTypes:!0})}catch{continue}for(const l of c)!l.isDirectory()||l.isSymbolicLink()||l.name.startsWith(".")||SKIP_DIRS.has(l.name)||a.push(path.join(s,l.name))}i=a}return n}function probeGlobalInstalls(){return kit_context_1.GLOBAL_KITS.filter(init_install_scope_1.isKitInstalledGlobally).map(e=>{const t=(0,kit_context_1.globalBaseDir)(e);return recordFor(e,"global",t,t)})}
|
package/scripts-dist/lib/kits.js
CHANGED
|
@@ -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_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"];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:"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 +1 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,n){n===void 0&&(n=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(r,n,o)}):(function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]})),__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(t){var n=[];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(n[n.length]=o);return n},r(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n=r(e),o=0;o<n.length;o++)n[o]!=="default"&&__createBinding(t,e,n[o]);return __setModuleDefault(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.PAYLOAD_ROOTS=void 0,exports.verifyTree=verifyTree,exports.verifyInstalledTree=verifyInstalledTree,exports.installPayloadTree=installPayloadTree;const crypto=__importStar(require("crypto")),fs=__importStar(require("fs")),path=__importStar(require("path")),zlib=__importStar(require("zlib")),agentkit_home_1=require("../agentkit-home"),repo_identity_1=require("../repo-identity")
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,n){n===void 0&&(n=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(r,n,o)}):(function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]})),__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(t){var n=[];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(n[n.length]=o);return n},r(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n=r(e),o=0;o<n.length;o++)n[o]!=="default"&&__createBinding(t,e,n[o]);return __setModuleDefault(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.PAYLOAD_ROOTS=void 0,exports.verifyTree=verifyTree,exports.verifyInstalledTree=verifyInstalledTree,exports.installPayloadTree=installPayloadTree;const crypto=__importStar(require("crypto")),fs=__importStar(require("fs")),path=__importStar(require("path")),zlib=__importStar(require("zlib")),agentkit_home_1=require("../agentkit-home"),repo_identity_1=require("../repo-identity"),payload_roots_1=require("../payload-roots");Object.defineProperty(exports,"PAYLOAD_ROOTS",{enumerable:!0,get:function(){return payload_roots_1.PAYLOAD_ROOTS}});const ROOT_SHAPE=new RegExp(`^[^/]+-${repo_identity_1.REPO_NAME}-[0-9a-f]+$`),SHA_SHAPE=/^[0-9a-f]{7,40}$/,SKIPPED_TREES={dev:!0,tests:!0,dashboard:!0},BLOCK=512;function readString(r,e,t){const n=r.indexOf(0,e);return r.toString("utf8",e,n===-1||n>e+t?e+t:n)}function readOctal(r,e,t){if(r[e]&128){let o=0;for(let i=e+1;i<e+t;i++)o=o*256+r[i];return o}const n=readString(r,e,t).trim();return n?parseInt(n,8):0}function paxPath(r){let e=0;for(;e<r.length;){const t=r.indexOf(32,e);if(t===-1)break;const n=Number(r.toString("ascii",e,t));if(!n||e+n>r.length)break;const o=r.toString("utf8",t+1,e+n-1);if(o.startsWith("path="))return o.slice(5);e+=n}return null}function assertSafeName(r){if(!r||r.startsWith("/")||/^[a-zA-Z]:[\\/]/.test(r)||r.includes("\\")||r.split("/").includes(".."))throw new Error(`Tarball entry escapes the staging directory: ${r}`)}function extractTar(r,e){let t=0,n=null,o=0,i=null;for(;t+BLOCK<=r.length;){const s=r.subarray(t,t+BLOCK);if(s.every(g=>g===0))break;const l=readOctal(s,124,12);if(!Number.isFinite(l)||l<0)throw new Error("Corrupt tarball header.");const S=readOctal(s,100,8),c=String.fromCharCode(s[156]||48),d=s.toString("ascii",263,265)==="00"?readString(s,345,155):"",u=t+BLOCK,a=u+l;if(a>r.length)throw new Error("Truncated tarball.");const p=r.subarray(u,a),f=i??(d?`${d}/${readString(s,0,100)}`:readString(s,0,100));if(i=null,c==="L"){i=p.toString("utf8").replace(/\0.*$/s,""),t=u+Math.ceil(l/BLOCK)*BLOCK;continue}if(c==="x"||c==="g"){c==="x"&&(i=paxPath(p)),t=u+Math.ceil(l/BLOCK)*BLOCK;continue}assertSafeName(f);const h=f.indexOf("/");if(h===-1)n===null&&(n=f);else{const g=f.slice(0,h);if(n===null)n=g;else if(g!==n)throw new Error(`Tarball holds more than one root directory (${n}, ${g}).`)}if(h!==-1&&SKIPPED_TREES[f.slice(h+1).split("/",1)[0]]){t=u+Math.ceil(l/BLOCK)*BLOCK;continue}const y=path.join(e,f);c==="5"?fs.mkdirSync(y,{recursive:!0,mode:493}):(c==="0"||c==="7")&&(fs.mkdirSync(path.dirname(y),{recursive:!0}),fs.writeFileSync(y,p,{mode:S&73?493:420}),o++),t=u+Math.ceil(l/BLOCK)*BLOCK}if(!n)throw new Error("Tarball contains no root directory.");if(o===0)throw new Error("Tarball contains no files.");return{rootDir:n,files:o}}function verifyTree(r,e){if(!ROOT_SHAPE.test(e))throw new Error(`Unexpected tarball root directory: ${e}`);const t=e.slice(e.lastIndexOf("-")+1);if(!SHA_SHAPE.test(t))throw new Error(`Tarball root names no commit sha: ${e}`);for(const n of payload_roots_1.PAYLOAD_ROOTS){const o=path.join(r,e,n);if(!fs.existsSync(o)||!fs.statSync(o).isDirectory())throw new Error(`Payload is missing ${n}/.`)}return t}function verifyInstalledTree(r){try{const e=fs.statSync(r);if(!e.isDirectory()||typeof process.getuid=="function"&&e.uid!==process.getuid())return null;const t=JSON.parse(fs.readFileSync(path.join(r,".complete"),"utf8"));if(typeof t.ref!="string"||typeof t.commitSha!="string"||typeof t.rootDir!="string"||typeof t.tarDigest!="string"||typeof t.fetchedAt!="number"||t.commitSha!==t.rootDir.slice(t.rootDir.lastIndexOf("-")+1)||verifyTree(r,t.rootDir)!==t.commitSha)return null;const n=path.join(r,".payload.tar.gz");return crypto.createHash("sha256").update(fs.readFileSync(n)).digest("hex")!==t.tarDigest?null:{dir:r,marker:t}}catch{return null}}function installPayloadTree(r,e,t,n=(0,agentkit_home_1.loadAgentkitHomeCore)()){const o=n.getPayloadDir();fs.mkdirSync(o,{recursive:!0,mode:448});try{fs.chmodSync(o,448)}catch{}const i=path.join(o,r),s=`${i}.partial`,l=n.lockPathFor(i),S=n.withFileLock(l,()=>{const c=verifyInstalledTree(i);if(c&&c.marker.ref===e)return{tree:c,fetchedThisRun:!1};if(fs.existsSync(i)){const a=fs.statSync(i);if(typeof process.getuid=="function"&&a.uid!==process.getuid())throw new Error(`Payload tree at ${i} is owned by uid ${a.uid}, not ${process.getuid()} \u2014 refusing to touch it.`);fs.rmSync(i,{recursive:!0,force:!0})}const d=()=>{try{fs.rmSync(s,{recursive:!0,force:!0})}catch{}};d(),fs.mkdirSync(s,{recursive:!0,mode:448});const u=()=>{d(),process.exit(130)};process.once("SIGINT",u);try{const{rootDir:a}=extractTar(zlib.gunzipSync(t),s),p=verifyTree(s,a),f={ref:e,commitSha:p,rootDir:a,tarDigest:crypto.createHash("sha256").update(t).digest("hex"),fetchedAt:Date.now()};fs.writeFileSync(path.join(s,".payload.tar.gz"),t),fs.writeFileSync(path.join(s,".complete"),JSON.stringify(f,null,2));try{fs.renameSync(s,i)}catch(h){const y=verifyInstalledTree(i);if(y)return{tree:y,fetchedThisRun:!1};throw h}return{tree:{dir:i,marker:f},fetchedThisRun:!0}}catch(a){throw d(),a}finally{process.removeListener("SIGINT",u)}},{timeoutMs:6e4,staleMs:12e4});if(S===null)throw new Error("Could not acquire the payload lock within 60s \u2014 another fetch may be wedged.");return S}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(
|
|
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}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TEMPLATES_DIR=exports.GUIDE_DIR=exports.AGENT_SCRIPTS_DIR=exports.AGENT_KIT_DIR=exports.COMMAND_SOURCE_DIR=exports.AGENTS_SOURCE_DIR=exports.RULES_SOURCE_DIR=exports.SKILL_SOURCE_DIR=exports.PAYLOAD_ROOTS=void 0,exports.PAYLOAD_ROOTS=["skills","rules","agents","agent-kit"],exports.SKILL_SOURCE_DIR="skills",exports.RULES_SOURCE_DIR="rules",exports.AGENTS_SOURCE_DIR="agents",exports.COMMAND_SOURCE_DIR="command",exports.AGENT_KIT_DIR="agent-kit",exports.AGENT_SCRIPTS_DIR="agent-scripts",exports.GUIDE_DIR="guide",exports.TEMPLATES_DIR="templates";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(n,e,r,t){t===void 0&&(t=r);var
|
|
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}
|
|
5
|
-
`}function readProfileProse(n,e){const r=path.join(n,
|
|
5
|
+
`}function readProfileProse(n,e){const r=path.join(n,payload_roots_1.AGENT_KIT_DIR,"shared","profiles",`${e}.md`);let t;try{t=fs.readFileSync(r,"utf8").trim()}catch{throw new MissingProfileProseError(e,r)}if(t.length===0)throw new MissingProfileProseError(e,r);return t}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(i,e,r,t){t===void 0&&(t=r);var n=Object.getOwnPropertyDescriptor(e,r);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(i,t,n)}):(function(i,e,r,t){t===void 0&&(t=r),i[t]=e[r]})),__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(r){var t=[];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[t.length]=n);return t},i(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t=i(e),n=0;n<t.length;n++)t[n]!=="default"&&__createBinding(r,e,t[n]);return __setModuleDefault(r,e),r}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveRemovalContexts=resolveRemovalContexts,exports.planProfileRemovals=planProfileRemovals,exports.applyProfileRemoval=applyProfileRemoval;const p=__importStar(require("@clack/prompts")),init_install_scope_1=require("./init-install-scope"),home_dir_1=require("./home-dir"),kit_context_1=require("./kit-context"),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"),kits_1=require("./kits"),logger_1=require("./logger"),skill_profiles_1=require("./skill-profiles");function resolveRemovalContexts(i,e,r){return e?r?(0,init_install_scope_1.isKitInstalledGlobally)(e)?[(0,kit_context_1.globalContext)(e)]:[]:!(0,home_dir_1.isHomeDir)(i)&&(0,init_install_scope_1.isKitInstalledInProject)(e,i)?[(0,kit_context_1.projectContext)(e,i)]:(0,init_install_scope_1.isKitInstalledGlobally)(e)?[(0,kit_context_1.globalContext)(e)]:[]:r?kit_context_1.GLOBAL_KITS.filter(t=>(0,init_install_scope_1.isKitInstalledGlobally)(t)).map(kit_context_1.globalContext):(0,kit_context_1.candidateContexts)(i)}async function planProfileRemovals(i,e=!!(process.stdin.isTTY&&process.stdout.isTTY)){const r=[],t=[];if(!e)return(0,logger_1.printError)("Refusing to remove profiles: this is not an interactive terminal."),{removals:r,noops:t,proceed:!1,refuseReason:"non-tty"};for(const n of i){const o=(0,install_profile_config_1.readInstallSettings)(n.configPath)
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(i,e,r,t){t===void 0&&(t=r);var n=Object.getOwnPropertyDescriptor(e,r);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(i,t,n)}):(function(i,e,r,t){t===void 0&&(t=r),i[t]=e[r]})),__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(r){var t=[];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[t.length]=n);return t},i(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t=i(e),n=0;n<t.length;n++)t[n]!=="default"&&__createBinding(r,e,t[n]);return __setModuleDefault(r,e),r}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveRemovalContexts=resolveRemovalContexts,exports.planProfileRemovals=planProfileRemovals,exports.applyProfileRemoval=applyProfileRemoval;const p=__importStar(require("@clack/prompts")),init_install_scope_1=require("./init-install-scope"),home_dir_1=require("./home-dir"),kit_context_1=require("./kit-context"),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"),kits_1=require("./kits"),logger_1=require("./logger"),skill_profiles_1=require("./skill-profiles");function resolveRemovalContexts(i,e,r){return e?r?(0,init_install_scope_1.isKitInstalledGlobally)(e)?[(0,kit_context_1.globalContext)(e)]:[]:!(0,home_dir_1.isHomeDir)(i)&&(0,init_install_scope_1.isKitInstalledInProject)(e,i)?[(0,kit_context_1.projectContext)(e,i)]:(0,init_install_scope_1.isKitInstalledGlobally)(e)?[(0,kit_context_1.globalContext)(e)]:[]:r?kit_context_1.GLOBAL_KITS.filter(t=>(0,init_install_scope_1.isKitInstalledGlobally)(t)).map(kit_context_1.globalContext):(0,kit_context_1.candidateContexts)(i)}async function planProfileRemovals(i,e=!!(process.stdin.isTTY&&process.stdout.isTTY)){const r=[],t=[];if(!e)return(0,logger_1.printError)("Refusing to remove profiles: this is not an interactive terminal."),{removals:r,noops:t,proceed:!1,refuseReason:"non-tty"};for(const n of i){const o=(0,install_profile_config_1.readInstallSettings)(n.configPath);if(o.profile===null||o.profile==="core"){t.push({context:n,reason:o.profile==="core"?"already-core":"no-persisted-profile"});continue}const s=await p.confirm({message:`Remove profile ${o.profile} from ${kits_1.kitDefinitions[n.kit].name} and reinstall with core?`,initialValue:!1});if(p.isCancel(s)||!s)return(0,logger_1.printInfo)("Profile removal cancelled. Nothing was changed."),{removals:r,noops:t,proceed:!1,refuseReason:"declined"};r.push({context:n,existingProfile:o.profile,agentModels:o.agentModels})}for(const n of t){const o=n.reason==="already-core"?"already uses the core profile":"has no profile to remove";(0,logger_1.printInfo)(`${kits_1.kitDefinitions[n.context.kit].name} ${o}.`)}return{removals:r,noops:t,proceed:!0}}function applyProfileRemoval(i,e,r){const{context:t}=i,n=(0,skill_profiles_1.resolveSkipDirs)(e,"core"),o={profileContext:(0,profile_context_1.buildProfileInstallContext)(e,"core"),agentModels:i.agentModels},s=t.scope==="global"?(0,kit_install_dispatch_1.installGlobalKit)(t.kit,e,(0,init_install_scope_1.resolveGlobalRoot)(t.kit,r),n,o):(0,kit_install_dispatch_1.installProjectKit)(t.kit,e,r,n,o);if(!s.ok)return(0,logger_1.printError)(s.reason),!1;const l=(0,install_profile_config_1.readCliVersion)(e);return l&&(0,install_profile_config_1.stampInstallVersion)(t.configPath,l),(0,install_profile_config_1.writeInstallSettings)(t.configPath,{profile:"core",extraSkills:[]}),(0,install_manifest_1.writeManifest)(t,l),(0,logger_1.printSuccess)(`${kits_1.kitDefinitions[t.kit].name} now uses the core profile.`),!0}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,
|
|
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-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 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(
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(i,e,n,t){t===void 0&&(t=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(i,t,r)}):(function(i,e,n,t){t===void 0&&(t=n),i[t]=e[n]})),__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(n){var t=[];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[t.length]=r);return t},i(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t=i(e),r=0;r<t.length;r++)t[r]!=="default"&&__createBinding(n,e,t[r]);return __setModuleDefault(n,e),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.confirmProfileSwitch=confirmProfileSwitch;const p=__importStar(require("@clack/prompts")),logger_1=require("./logger");async function confirmProfileSwitch({existingProfile:i,newProfile:e,kitConfigPath:n,kitName:t,targetDir:r,isTTY:c=!!(process.stdin.isTTY&&process.stdout.isTTY)}){const o=i??"unrecorded (legacy install)";if(!c)return(0,logger_1.printError)(`Refusing to switch ${t} from profile ${o} to ${e}: this is not an interactive terminal.`),(0,logger_1.printInfo)(`No changes were made to ${n} or ${r}.`),{proceed:!1,reason:"non-tty"};(0,logger_1.printWarning)(`Switching ${t} removes the ${o} profile and replaces it with ${e}.`);const a=await p.confirm({message:`Replace profile ${o} with ${e}?`,initialValue:!1});return p.isCancel(a)||!a?{proceed:!1,reason:"declined"}:{proceed:!0,reason:"confirmed"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PAYLOAD_FILES=exports.PAYLOAD_DIRS=void 0,exports.isPayloadPath=isPayloadPath
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PAYLOAD_FILES=exports.PAYLOAD_DIRS=void 0,exports.isPayloadPath=isPayloadPath;const payload_roots_1=require("../payload-roots");exports.PAYLOAD_DIRS=[`${payload_roots_1.AGENT_KIT_DIR}/`,".agents/",`${payload_roots_1.AGENTS_SOURCE_DIR}/`,"bin/",`${payload_roots_1.COMMAND_SOURCE_DIR}/`,"dashboard-dist/",`${payload_roots_1.GUIDE_DIR}/`,`${payload_roots_1.RULES_SOURCE_DIR}/`,`${payload_roots_1.AGENT_SCRIPTS_DIR}/`,"scripts-dist/",`${payload_roots_1.SKILL_SOURCE_DIR}/`],exports.PAYLOAD_FILES=["package.json","install.sh","install.ps1","tsconfig.json","AGENTS.md","CLAUDE.md","GEMINI.md","README.md","CHANGELOG.md","LICENSE",".mcp.json",".repomixignore"];const DEV_TREES=["scripts-dist/",`${payload_roots_1.AGENT_SCRIPTS_DIR}/`,"src/"],DEV_NOISE_RE=/\/__tests__\/|\.test\.[^/]*$|\.map$|\.d\.ts$/,LITTER_RE=/(^|\/)\.DS_Store$/,norm=e=>e.replace(/\\/g,"/").replace(/^\.\//,"");function isPayloadPath(e){const s=norm(e);return LITTER_RE.test(s)||DEV_TREES.some(t=>s.startsWith(t))&&DEV_NOISE_RE.test(s)?!1:exports.PAYLOAD_FILES.includes(s)?!0:exports.PAYLOAD_DIRS.some(t=>s===t.slice(0,-1)||s.startsWith(t))}
|