pybao-cli 1.3.84 → 1.3.87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/REPL-J7EKVUMW.js +47 -0
- package/dist/{acp-2L5UIDYK.js → acp-NMISJFTQ.js} +31 -31
- package/dist/acp-NMISJFTQ.js.map +7 -0
- package/dist/{agentsValidate-G5UPCE23.js → agentsValidate-G7H7CUZU.js} +10 -8
- package/dist/agentsValidate-G7H7CUZU.js.map +7 -0
- package/dist/{ask-NC5FHXVG.js → ask-E7XSHQAN.js} +28 -28
- package/dist/{autoUpdater-4RF2CRK5.js → autoUpdater-EAH2H7AP.js} +3 -3
- package/dist/{chunk-MN5A3I5G.js → chunk-3RXA6IWG.js} +5 -6
- package/dist/chunk-3RXA6IWG.js.map +7 -0
- package/dist/{chunk-7YPF7IZE.js → chunk-4GB3OWJY.js} +37 -11
- package/dist/chunk-4GB3OWJY.js.map +7 -0
- package/dist/{chunk-SB5WQNSQ.js → chunk-6XDESUHK.js} +1 -1
- package/dist/{chunk-PPIHT4XC.js → chunk-7IKX4543.js} +5 -3
- package/dist/chunk-7IKX4543.js.map +7 -0
- package/dist/{chunk-LZHKCLLB.js → chunk-BBZ2VZ5J.js} +3 -3
- package/dist/{chunk-UQHYTY5X.js → chunk-BHBHS3MY.js} +3 -3
- package/dist/{chunk-W2SGOL2K.js → chunk-BPN5QY2K.js} +2 -2
- package/dist/{chunk-7WMAUFRG.js → chunk-EQMKAITH.js} +1 -1
- package/dist/{chunk-6WOCAHEK.js → chunk-F47KO7J2.js} +1 -1
- package/dist/{chunk-SOGXQEV2.js → chunk-GEHCREEY.js} +3 -3
- package/dist/{chunk-PC33U2HP.js → chunk-H6NBGOQG.js} +1 -1
- package/dist/{chunk-PC33U2HP.js.map → chunk-H6NBGOQG.js.map} +1 -1
- package/dist/{chunk-MUQI2KCA.js → chunk-HHTFRFKN.js} +2 -2
- package/dist/{chunk-46KUA6OA.js → chunk-HVMJPWC6.js} +3 -3
- package/dist/{chunk-NEG6NKKM.js → chunk-HWIU6J2T.js} +3 -3
- package/dist/{chunk-42L6OJOC.js → chunk-KEALJIDY.js} +5 -5
- package/dist/{chunk-42L6OJOC.js.map → chunk-KEALJIDY.js.map} +2 -2
- package/dist/{chunk-7HP3UEMN.js → chunk-KTLUYKAC.js} +1 -1
- package/dist/{chunk-WPA4GCGG.js → chunk-KUIDN7FP.js} +181 -74
- package/dist/chunk-KUIDN7FP.js.map +7 -0
- package/dist/{chunk-TACMGUAN.js → chunk-L62OCVZH.js} +20 -20
- package/dist/chunk-L62OCVZH.js.map +7 -0
- package/dist/{chunk-FKAYIROZ.js → chunk-LSJILN2S.js} +19 -15
- package/dist/chunk-LSJILN2S.js.map +7 -0
- package/dist/{chunk-OVROGAUW.js → chunk-MRU4VN5R.js} +7 -5
- package/dist/chunk-MRU4VN5R.js.map +7 -0
- package/dist/{chunk-FJRJWV7O.js → chunk-N6ETO4PE.js} +4 -4
- package/dist/{chunk-YCIGVKJU.js → chunk-Q32HEIH2.js} +4 -4
- package/dist/{chunk-KHMW5FJP.js → chunk-Q7W7PGSO.js} +1 -1
- package/dist/{chunk-C3HV2RX2.js → chunk-SBF7BOS4.js} +3 -3
- package/dist/{chunk-7TIDBKNN.js → chunk-T2HQBH46.js} +3 -3
- package/dist/{chunk-KDKEJCIA.js → chunk-UF2ARFEB.js} +8 -3
- package/dist/chunk-UF2ARFEB.js.map +7 -0
- package/dist/{chunk-GFKRGL22.js → chunk-VAR6IG72.js} +5 -4
- package/dist/chunk-VAR6IG72.js.map +7 -0
- package/dist/{chunk-ZIEALAFY.js → chunk-VBJP55XA.js} +1 -1
- package/dist/{chunk-JJEJMLIT.js → chunk-WCX3ELKY.js} +39 -38
- package/dist/chunk-WCX3ELKY.js.map +7 -0
- package/dist/{chunk-CSRNWBXQ.js → chunk-XD5KXOSG.js} +4 -4
- package/dist/chunk-XD5KXOSG.js.map +7 -0
- package/dist/{cli-MWA546KO.js → cli-VTNXK3N3.js} +87 -87
- package/dist/commands-SNKMFZOR.js +51 -0
- package/dist/{config-JOHT6J75.js → config-FBT5ABGI.js} +4 -4
- package/dist/{context-CPFQPWH5.js → context-WBZK3AZX.js} +5 -5
- package/dist/{customCommands-K5AGAFXB.js → customCommands-IFWVN654.js} +4 -4
- package/dist/{env-CEU3W5ME.js → env-5O5DDVID.js} +14 -4
- package/dist/{file-QZ3DYDGR.js → file-K3P2ZXOY.js} +4 -4
- package/dist/index.js +3 -3
- package/dist/{llm-RBX2F2S4.js → llm-XZHOT5QG.js} +29 -29
- package/dist/{llmLazy-BIN2DEC2.js → llmLazy-VVQLL2O4.js} +1 -1
- package/dist/{loader-CV7OJ4NZ.js → loader-JC5XSGNC.js} +4 -4
- package/dist/{lsp-QFZEUOOA.js → lsp-NJNGVY3E.js} +6 -6
- package/dist/{lspAnchor-Q2QPAITR.js → lspAnchor-3AQPL2ZZ.js} +6 -6
- package/dist/{mcp-JM5OIHPD.js → mcp-DTKD53FS.js} +7 -7
- package/dist/{mentionProcessor-4LMVOVGA.js → mentionProcessor-JS7EY2LD.js} +5 -5
- package/dist/{messages-XW74FZX6.js → messages-GQMW2ANU.js} +1 -1
- package/dist/{model-RJINKACR.js → model-VGKT6DJE.js} +5 -5
- package/dist/{openai-66PYA2FX.js → openai-TSJZC7MB.js} +5 -5
- package/dist/{outputStyles-MV6ZVKVT.js → outputStyles-5VLEN2UN.js} +4 -4
- package/dist/{pluginRuntime-BCOVUPBE.js → pluginRuntime-XKPZ3BX4.js} +6 -6
- package/dist/{pluginValidation-3E6ZTNSH.js → pluginValidation-ZHCDH3MZ.js} +6 -6
- package/dist/prompts-MQWEK5T7.js +53 -0
- package/dist/{pybAgentSessionLoad-CKCBOT52.js → pybAgentSessionLoad-5CPNQIXV.js} +4 -4
- package/dist/{pybAgentSessionResume-LDUO3VEW.js → pybAgentSessionResume-VCYFMJCA.js} +4 -4
- package/dist/{pybAgentStreamJsonSession-5XVEA5BE.js → pybAgentStreamJsonSession-DOTUU74W.js} +1 -1
- package/dist/{pybHooks-JTBESPF6.js → pybHooks-W2EX2SUW.js} +4 -4
- package/dist/query-OH75KHOB.js +55 -0
- package/dist/{registry-2K7ZNIJX.js → registry-OUOC3F5A.js} +5 -5
- package/dist/{ripgrep-RJWD3Z7N.js → ripgrep-MEONNP4W.js} +3 -3
- package/dist/{skillMarketplace-ZDWIN663.js → skillMarketplace-34N7IKSR.js} +3 -3
- package/dist/{state-XOHPGE2O.js → state-6NDQ3LIC.js} +2 -2
- package/dist/{theme-B672GYQW.js → theme-7K5257BK.js} +5 -5
- package/dist/{toolPermissionSettings-IGFHXHH7.js → toolPermissionSettings-2QVLET4R.js} +6 -6
- package/dist/tools-6MGNB35T.js +52 -0
- package/dist/{userInput-6CV2RY5H.js → userInput-MF4TLCQC.js} +30 -30
- package/package.json +1 -1
- package/dist/REPL-FGFUX54P.js +0 -47
- package/dist/acp-2L5UIDYK.js.map +0 -7
- package/dist/agentsValidate-G5UPCE23.js.map +0 -7
- package/dist/chunk-7YPF7IZE.js.map +0 -7
- package/dist/chunk-CSRNWBXQ.js.map +0 -7
- package/dist/chunk-FKAYIROZ.js.map +0 -7
- package/dist/chunk-GFKRGL22.js.map +0 -7
- package/dist/chunk-JJEJMLIT.js.map +0 -7
- package/dist/chunk-KDKEJCIA.js.map +0 -7
- package/dist/chunk-MN5A3I5G.js.map +0 -7
- package/dist/chunk-OVROGAUW.js.map +0 -7
- package/dist/chunk-PPIHT4XC.js.map +0 -7
- package/dist/chunk-TACMGUAN.js.map +0 -7
- package/dist/chunk-WPA4GCGG.js.map +0 -7
- package/dist/commands-JMPWEXWX.js +0 -51
- package/dist/prompts-CQXW5O3Z.js +0 -53
- package/dist/query-Z3URPE24.js +0 -55
- package/dist/tools-4SXRMJGJ.js +0 -52
- /package/dist/{REPL-FGFUX54P.js.map → REPL-J7EKVUMW.js.map} +0 -0
- /package/dist/{ask-NC5FHXVG.js.map → ask-E7XSHQAN.js.map} +0 -0
- /package/dist/{autoUpdater-4RF2CRK5.js.map → autoUpdater-EAH2H7AP.js.map} +0 -0
- /package/dist/{chunk-SB5WQNSQ.js.map → chunk-6XDESUHK.js.map} +0 -0
- /package/dist/{chunk-LZHKCLLB.js.map → chunk-BBZ2VZ5J.js.map} +0 -0
- /package/dist/{chunk-UQHYTY5X.js.map → chunk-BHBHS3MY.js.map} +0 -0
- /package/dist/{chunk-W2SGOL2K.js.map → chunk-BPN5QY2K.js.map} +0 -0
- /package/dist/{chunk-7WMAUFRG.js.map → chunk-EQMKAITH.js.map} +0 -0
- /package/dist/{chunk-6WOCAHEK.js.map → chunk-F47KO7J2.js.map} +0 -0
- /package/dist/{chunk-SOGXQEV2.js.map → chunk-GEHCREEY.js.map} +0 -0
- /package/dist/{chunk-MUQI2KCA.js.map → chunk-HHTFRFKN.js.map} +0 -0
- /package/dist/{chunk-46KUA6OA.js.map → chunk-HVMJPWC6.js.map} +0 -0
- /package/dist/{chunk-NEG6NKKM.js.map → chunk-HWIU6J2T.js.map} +0 -0
- /package/dist/{chunk-7HP3UEMN.js.map → chunk-KTLUYKAC.js.map} +0 -0
- /package/dist/{chunk-FJRJWV7O.js.map → chunk-N6ETO4PE.js.map} +0 -0
- /package/dist/{chunk-YCIGVKJU.js.map → chunk-Q32HEIH2.js.map} +0 -0
- /package/dist/{chunk-KHMW5FJP.js.map → chunk-Q7W7PGSO.js.map} +0 -0
- /package/dist/{chunk-C3HV2RX2.js.map → chunk-SBF7BOS4.js.map} +0 -0
- /package/dist/{chunk-7TIDBKNN.js.map → chunk-T2HQBH46.js.map} +0 -0
- /package/dist/{chunk-ZIEALAFY.js.map → chunk-VBJP55XA.js.map} +0 -0
- /package/dist/{cli-MWA546KO.js.map → cli-VTNXK3N3.js.map} +0 -0
- /package/dist/{commands-JMPWEXWX.js.map → commands-SNKMFZOR.js.map} +0 -0
- /package/dist/{config-JOHT6J75.js.map → config-FBT5ABGI.js.map} +0 -0
- /package/dist/{context-CPFQPWH5.js.map → context-WBZK3AZX.js.map} +0 -0
- /package/dist/{customCommands-K5AGAFXB.js.map → customCommands-IFWVN654.js.map} +0 -0
- /package/dist/{env-CEU3W5ME.js.map → env-5O5DDVID.js.map} +0 -0
- /package/dist/{file-QZ3DYDGR.js.map → file-K3P2ZXOY.js.map} +0 -0
- /package/dist/{llm-RBX2F2S4.js.map → llm-XZHOT5QG.js.map} +0 -0
- /package/dist/{llmLazy-BIN2DEC2.js.map → llmLazy-VVQLL2O4.js.map} +0 -0
- /package/dist/{loader-CV7OJ4NZ.js.map → loader-JC5XSGNC.js.map} +0 -0
- /package/dist/{lsp-QFZEUOOA.js.map → lsp-NJNGVY3E.js.map} +0 -0
- /package/dist/{lspAnchor-Q2QPAITR.js.map → lspAnchor-3AQPL2ZZ.js.map} +0 -0
- /package/dist/{mcp-JM5OIHPD.js.map → mcp-DTKD53FS.js.map} +0 -0
- /package/dist/{mentionProcessor-4LMVOVGA.js.map → mentionProcessor-JS7EY2LD.js.map} +0 -0
- /package/dist/{messages-XW74FZX6.js.map → messages-GQMW2ANU.js.map} +0 -0
- /package/dist/{model-RJINKACR.js.map → model-VGKT6DJE.js.map} +0 -0
- /package/dist/{openai-66PYA2FX.js.map → openai-TSJZC7MB.js.map} +0 -0
- /package/dist/{outputStyles-MV6ZVKVT.js.map → outputStyles-5VLEN2UN.js.map} +0 -0
- /package/dist/{pluginRuntime-BCOVUPBE.js.map → pluginRuntime-XKPZ3BX4.js.map} +0 -0
- /package/dist/{pluginValidation-3E6ZTNSH.js.map → pluginValidation-ZHCDH3MZ.js.map} +0 -0
- /package/dist/{prompts-CQXW5O3Z.js.map → prompts-MQWEK5T7.js.map} +0 -0
- /package/dist/{pybAgentSessionLoad-CKCBOT52.js.map → pybAgentSessionLoad-5CPNQIXV.js.map} +0 -0
- /package/dist/{pybAgentSessionResume-LDUO3VEW.js.map → pybAgentSessionResume-VCYFMJCA.js.map} +0 -0
- /package/dist/{pybAgentStreamJsonSession-5XVEA5BE.js.map → pybAgentStreamJsonSession-DOTUU74W.js.map} +0 -0
- /package/dist/{pybHooks-JTBESPF6.js.map → pybHooks-W2EX2SUW.js.map} +0 -0
- /package/dist/{query-Z3URPE24.js.map → query-OH75KHOB.js.map} +0 -0
- /package/dist/{registry-2K7ZNIJX.js.map → registry-OUOC3F5A.js.map} +0 -0
- /package/dist/{ripgrep-RJWD3Z7N.js.map → ripgrep-MEONNP4W.js.map} +0 -0
- /package/dist/{skillMarketplace-ZDWIN663.js.map → skillMarketplace-34N7IKSR.js.map} +0 -0
- /package/dist/{state-XOHPGE2O.js.map → state-6NDQ3LIC.js.map} +0 -0
- /package/dist/{theme-B672GYQW.js.map → theme-7K5257BK.js.map} +0 -0
- /package/dist/{toolPermissionSettings-IGFHXHH7.js.map → toolPermissionSettings-2QVLET4R.js.map} +0 -0
- /package/dist/{tools-4SXRMJGJ.js.map → tools-6MGNB35T.js.map} +0 -0
- /package/dist/{userInput-6CV2RY5H.js.map → userInput-MF4TLCQC.js.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/services/plugins/skillMarketplace.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n copyFileSync,\n existsSync,\n lstatSync,\n mkdirSync,\n readFileSync,\n readdirSync,\n renameSync,\n rmSync,\n writeFileSync,\n} from 'node:fs'\nimport { randomUUID } from 'node:crypto'\nimport { homedir } from 'node:os'\nimport { basename, dirname, join, resolve, sep } from 'node:path'\nimport { unzipSync } from 'fflate'\nimport { z } from 'zod'\nimport { CONFIG_BASE_DIR } from '@constants/product'\nimport { getCwd } from '@utils/state'\nimport { resolveXdgCachePath, resolveXdgDataPath } from '@utils/config/env'\n\nconst KNOWN_MARKETPLACES_FILE = 'known_marketplaces.json'\nconst MARKETPLACES_CACHE_DIR = 'marketplaces'\nconst INSTALLED_SKILL_PLUGINS_FILE = 'installed-skill-plugins.json'\n\nfunction getMarketplacesCacheDir(): string {\n return resolveXdgCachePath(join('plugins', MARKETPLACES_CACHE_DIR))\n}\n\nfunction getKnownMarketplacesFile(): string {\n return join(resolveXdgDataPath('plugins'), KNOWN_MARKETPLACES_FILE)\n}\n\nfunction getInstalledSkillPluginsFile(): string {\n return resolveXdgDataPath(INSTALLED_SKILL_PLUGINS_FILE)\n}\n\nconst MarketplaceSourceSchema = z.discriminatedUnion('source', [\n z.strictObject({\n source: z.literal('github'),\n repo: z.string().min(3),\n ref: z.string().optional(),\n path: z.string().optional(),\n }),\n z.strictObject({\n source: z.literal('git'),\n url: z.string().min(3),\n ref: z.string().optional(),\n path: z.string().optional(),\n }),\n z.strictObject({\n source: z.literal('url'),\n url: z.string().url(),\n headers: z.record(z.string(), z.string()).optional(),\n }),\n z.strictObject({\n source: z.literal('npm'),\n package: z.string().min(1),\n }),\n z.strictObject({\n source: z.literal('file'),\n path: z.string().min(1),\n }),\n z.strictObject({\n source: z.literal('directory'),\n path: z.string().min(1),\n }),\n])\n\nexport type MarketplaceSource = z.infer<typeof MarketplaceSourceSchema>\n\nconst MarketplacePathListSchema = z.preprocess(value => {\n if (typeof value === 'string') return [value]\n return value\n}, z.array(z.string()))\n\nconst MarketplacePluginSchema = z\n .object({\n name: z.string().min(1),\n description: z.string().optional(),\n source: z.string().optional().default('./'),\n strict: z.boolean().optional(),\n skills: MarketplacePathListSchema.optional(),\n commands: MarketplacePathListSchema.optional(),\n })\n .passthrough()\n\nexport const MarketplaceManifestSchema = z\n .object({\n $schema: z.string().optional(),\n description: z.string().optional(),\n name: z.string().min(1),\n owner: z\n .object({\n name: z.string().optional(),\n email: z.string().optional(),\n })\n .passthrough()\n .optional(),\n metadata: z.record(z.string(), z.unknown()).optional().default({}),\n plugins: z.array(MarketplacePluginSchema).default([]),\n })\n .passthrough()\n\nexport type MarketplaceManifest = z.infer<typeof MarketplaceManifestSchema>\nexport type PluginEntry = MarketplaceManifest['plugins'][number]\n\nconst KnownMarketplacesSchema = z.record(\n z.string(),\n z.strictObject({\n source: MarketplaceSourceSchema,\n installLocation: z.string().min(1),\n lastUpdated: z.string().min(1),\n autoUpdate: z.boolean().optional(),\n }),\n)\n\nexport type KnownMarketplacesConfig = z.infer<typeof KnownMarketplacesSchema>\n\nexport type PluginScope = 'user' | 'project' | 'local'\n\ntype InstalledSkillPlugin = {\n plugin: string\n marketplace: string\n scope: PluginScope\n kind?: 'skill-pack' | 'plugin-pack'\n isEnabled?: boolean\n projectPath?: string\n installedAt: string\n pluginRoot?: string\n skills: string[]\n commands: string[]\n sourceMarketplacePath: string\n}\n\ntype InstalledSkillPluginsFile = Record<string, InstalledSkillPlugin>\n\nfunction userPybDir(): string {\n return resolveXdgDataPath('')\n}\n\nfunction normalizePluginScope(options?: {\n scope?: PluginScope\n project?: boolean\n}): PluginScope {\n if (\n options?.scope === 'user' ||\n options?.scope === 'project' ||\n options?.scope === 'local'\n ) {\n return options.scope\n }\n if (options?.project === true) return 'project'\n return 'user'\n}\n\nfunction scopeBaseDir(scope: PluginScope): string {\n if (scope === 'user') return userPybDir()\n return join(getCwd(), CONFIG_BASE_DIR)\n}\n\nfunction scopeSkillsDir(scope: PluginScope): string {\n return join(scopeBaseDir(scope), 'skills')\n}\n\nfunction scopeCommandsDir(scope: PluginScope): string {\n return join(scopeBaseDir(scope), 'commands')\n}\n\nfunction scopeDisabledSkillsDir(scope: PluginScope): string {\n return join(scopeBaseDir(scope), 'skills.disabled')\n}\n\nfunction scopeDisabledCommandsDir(scope: PluginScope): string {\n return join(scopeBaseDir(scope), 'commands.disabled')\n}\n\nfunction scopeInstalledPluginsDir(scope: PluginScope): string {\n return join(scopeBaseDir(scope), 'plugins', 'installed')\n}\n\nfunction scopeInstalledPluginRoot(\n scope: PluginScope,\n plugin: string,\n marketplace: string,\n): string {\n return join(scopeInstalledPluginsDir(scope), plugin, marketplace)\n}\n\nfunction pluginsDir(): string {\n return join(userPybDir(), 'plugins')\n}\n\nfunction knownMarketplacesConfigPath(): string {\n return join(pluginsDir(), KNOWN_MARKETPLACES_FILE)\n}\n\nfunction marketplaceCacheBaseDir(): string {\n return resolveXdgCachePath(join('plugins', MARKETPLACES_CACHE_DIR))\n}\n\nfunction installedSkillPluginsPath(): string {\n return join(userPybDir(), INSTALLED_SKILL_PLUGINS_FILE)\n}\n\nfunction ensureDir(path: string): void {\n mkdirSync(path, { recursive: true })\n}\n\nfunction readJsonFile<T>(path: string, fallback: T): T {\n try {\n if (!existsSync(path)) return fallback\n const raw = readFileSync(path, 'utf8')\n return JSON.parse(raw) as T\n } catch {\n return fallback\n }\n}\n\nfunction writeJsonFile(path: string, value: unknown): void {\n ensureDir(dirname(path))\n writeFileSync(path, `${JSON.stringify(value, null, 2)}\\n`, 'utf8')\n}\n\nfunction normalizeMarketplaceSubPath(path: string | undefined): string | null {\n if (!path) return null\n const trimmed = path\n .trim()\n .replace(/^\\.?\\//, '')\n .replace(/^\\/+/, '')\n if (!trimmed) return null\n if (trimmed.includes('..')) {\n throw new Error(`Marketplace path contains '..': ${path}`)\n }\n return trimmed.replace(/\\\\/g, '/').replace(/\\/+$/, '')\n}\n\nfunction safeJoinWithin(baseDir: string, relativePath: string): string {\n const normalized = relativePath.replace(/\\\\/g, '/')\n if (!normalized || normalized.startsWith('/') || normalized.includes('..')) {\n throw new Error(`Unsafe path in archive: ${relativePath}`)\n }\n const joined = resolve(baseDir, normalized.split('/').join(sep))\n const resolvedBase = resolve(baseDir)\n if (!joined.startsWith(resolvedBase + sep) && joined !== resolvedBase) {\n throw new Error(`Path traversal detected: ${relativePath}`)\n }\n return joined\n}\n\nfunction ensureEmptyDir(path: string): void {\n if (existsSync(path)) rmSync(path, { recursive: true, force: true })\n ensureDir(path)\n}\n\nfunction safeCopyDirectory(srcDir: string, destDir: string): void {\n ensureDir(destDir)\n const entries = readdirSync(srcDir, { withFileTypes: true })\n for (const entry of entries) {\n const srcPath = join(srcDir, entry.name)\n const destPath = join(destDir, entry.name)\n\n if (entry.isDirectory()) {\n safeCopyDirectory(srcPath, destPath)\n continue\n }\n\n if (entry.isFile()) {\n ensureDir(dirname(destPath))\n copyFileSync(srcPath, destPath)\n continue\n }\n\n }\n}\n\nfunction readMarketplaceFromDirectory(rootDir: string): MarketplaceManifest {\n const primaryMarketplaceFile = resolve(\n rootDir,\n '.pyb-plugin',\n 'marketplace.json',\n )\n const legacyMarketplaceFile = resolve(\n rootDir,\n '.claude-plugin',\n 'marketplace.json',\n )\n const marketplaceFile = existsSync(primaryMarketplaceFile)\n ? primaryMarketplaceFile\n : legacyMarketplaceFile\n if (!existsSync(marketplaceFile)) {\n throw new Error(\n `Marketplace file not found (expected .pyb-plugin/marketplace.json or .claude-plugin/marketplace.json)`,\n )\n }\n const raw = readFileSync(marketplaceFile, 'utf8')\n const parsed = MarketplaceManifestSchema.safeParse(JSON.parse(raw))\n if (!parsed.success) {\n throw new Error(\n `Invalid marketplace.json: ${parsed.error.issues.map(i => i.message).join('; ')}`,\n )\n }\n return parsed.data\n}\n\nexport function parsePluginSpec(spec: string): {\n plugin: string\n marketplace: string\n} {\n const trimmed = spec.trim()\n const parts = trimmed.split('@')\n if (parts.length !== 2) {\n throw new Error(\n `Invalid plugin spec: ${spec}. Expected format: <plugin>@<marketplace>`,\n )\n }\n const plugin = parts[0]!.trim()\n const marketplace = parts[1]!.trim()\n if (!plugin || !marketplace) {\n throw new Error(\n `Invalid plugin spec: ${spec}. Expected format: <plugin>@<marketplace>`,\n )\n }\n return { plugin, marketplace }\n}\n\nfunction resolvePluginForInstall(pluginInput: string): {\n plugin: string\n marketplace: string\n pluginSpec: string\n} {\n const trimmed = pluginInput.trim()\n if (!trimmed) throw new Error('Plugin is required')\n\n if (trimmed.includes('@')) {\n const resolved = parsePluginSpec(trimmed)\n return {\n ...resolved,\n pluginSpec: `${resolved.plugin}@${resolved.marketplace}`,\n }\n }\n\n const config = loadKnownMarketplaces()\n const matches: { marketplace: string; entry: PluginEntry }[] = []\n for (const [marketplace, entry] of Object.entries(config)) {\n try {\n const manifest = readMarketplaceFromDirectory(entry.installLocation)\n const found = manifest.plugins.find(p => p.name === trimmed)\n if (found) matches.push({ marketplace, entry: found })\n } catch {\n }\n }\n\n if (matches.length === 0) {\n const availableMarketplaces = Object.keys(config).sort().join(', ')\n throw new Error(\n `Plugin '${trimmed}' not found in any marketplace. Available marketplaces: ${availableMarketplaces || '(none)'}`,\n )\n }\n\n if (matches.length > 1) {\n const options = matches\n .map(m => `${trimmed}@${m.marketplace}`)\n .sort()\n .join(', ')\n throw new Error(\n `Plugin '${trimmed}' is available in multiple marketplaces. Use an explicit spec: ${options}`,\n )\n }\n\n return {\n plugin: trimmed,\n marketplace: matches[0]!.marketplace,\n pluginSpec: `${trimmed}@${matches[0]!.marketplace}`,\n }\n}\n\nfunction resolveInstalledPluginSpec(\n pluginInput: string,\n state: InstalledSkillPluginsFile,\n): string {\n const trimmed = pluginInput.trim()\n if (!trimmed) throw new Error('Plugin is required')\n\n if (trimmed.includes('@')) {\n parsePluginSpec(trimmed)\n return trimmed\n }\n\n const matches = Object.entries(state).filter(\n ([, record]) => record?.plugin === trimmed,\n )\n if (matches.length === 0) {\n throw new Error(`Plugin '${trimmed}' is not installed`)\n }\n if (matches.length > 1) {\n const options = matches\n .map(([spec]) => spec)\n .sort()\n .join(', ')\n throw new Error(\n `Plugin '${trimmed}' is installed from multiple marketplaces. Use an explicit spec: ${options}`,\n )\n }\n return matches[0]![0]\n}\n\nfunction baseDirForInstallRecord(record: InstalledSkillPlugin): string {\n if (record.scope === 'user') return userPybDir()\n const projectPath =\n typeof record.projectPath === 'string' ? record.projectPath.trim() : ''\n if (!projectPath) {\n throw new Error(\n `Installed plugin '${record.plugin}@${record.marketplace}' is missing projectPath for scope=${record.scope}`,\n )\n }\n return join(projectPath, CONFIG_BASE_DIR)\n}\n\nfunction githubRepoFromUrl(input: string): string | null {\n const ssh = input.match(/^git@github\\.com:([^/]+\\/[^/]+?)(?:\\.git)?$/)\n if (ssh?.[1]) return ssh[1]\n const https = input.match(\n /^https?:\\/\\/github\\.com\\/([^/]+\\/[^/]+?)(?:\\.git)?$/,\n )\n if (https?.[1]) return https[1]\n return null\n}\n\nfunction parseRefAndPath(input: string): {\n base: string\n ref?: string\n path?: string\n} {\n const [beforeHash, hashPart] = input.split('#', 2)\n const [base, refPart] = beforeHash.split('@', 2)\n return {\n base,\n ref: refPart?.trim() || undefined,\n path: hashPart?.trim() || undefined,\n }\n}\n\nfunction parseMarketplaceSourceInput(sourceInput: string): MarketplaceSource {\n const raw = sourceInput.trim()\n if (!raw) throw new Error('Marketplace source is required')\n\n for (const prefix of [\n 'github:',\n 'git:',\n 'url:',\n 'npm:',\n 'file:',\n 'dir:',\n ] as const) {\n if (raw.startsWith(prefix)) {\n const rest = raw.slice(prefix.length).trim()\n const parsed = parseRefAndPath(rest)\n if (prefix === 'github:') {\n return {\n source: 'github',\n repo: parsed.base.trim(),\n ...(parsed.ref ? { ref: parsed.ref } : {}),\n ...(parsed.path ? { path: parsed.path } : {}),\n }\n }\n if (prefix === 'git:') {\n const repo = githubRepoFromUrl(parsed.base.trim())\n if (repo) {\n return {\n source: 'github',\n repo,\n ...(parsed.ref ? { ref: parsed.ref } : {}),\n ...(parsed.path ? { path: parsed.path } : {}),\n }\n }\n return {\n source: 'git',\n url: parsed.base.trim(),\n ...(parsed.ref ? { ref: parsed.ref } : {}),\n ...(parsed.path ? { path: parsed.path } : {}),\n }\n }\n if (prefix === 'url:') {\n return { source: 'url', url: rest }\n }\n if (prefix === 'npm:') {\n return { source: 'npm', package: rest }\n }\n if (prefix === 'file:') {\n return { source: 'file', path: rest }\n }\n if (prefix === 'dir:') {\n return { source: 'directory', path: rest }\n }\n }\n }\n\n const resolved = resolve(raw)\n if (existsSync(resolved)) {\n const stat = lstatSync(resolved)\n if (stat.isDirectory()) return { source: 'directory', path: resolved }\n if (stat.isFile()) return { source: 'file', path: resolved }\n throw new Error(`Marketplace source must be a directory or file: ${raw}`)\n }\n\n const parsed = parseRefAndPath(raw)\n if (/^[^/\\s]+\\/[^/\\s]+$/.test(parsed.base)) {\n return {\n source: 'github',\n repo: parsed.base,\n ...(parsed.ref ? { ref: parsed.ref } : {}),\n ...(parsed.path ? { path: parsed.path } : {}),\n }\n }\n\n const repo = githubRepoFromUrl(parsed.base)\n if (repo) {\n return {\n source: 'github',\n repo,\n ...(parsed.ref ? { ref: parsed.ref } : {}),\n ...(parsed.path ? { path: parsed.path } : {}),\n }\n }\n\n if (/^https?:\\/\\//.test(raw)) {\n return { source: 'url', url: raw }\n }\n\n throw new Error(\n `Unsupported marketplace source: ${sourceInput}. Use a local path, \"owner/repo\", or prefixes like github:, git:, url:, file:, dir:.`,\n )\n}\n\nasync function fetchBinary(url: string): Promise<Uint8Array> {\n const resp = await fetch(url, { method: 'GET' })\n if (!resp.ok) {\n throw new Error(\n `Failed to download ${url}: ${resp.status} ${resp.statusText}`,\n )\n }\n const buf = await resp.arrayBuffer()\n return new Uint8Array(buf)\n}\n\nasync function tryDownloadGithubZip(\n repo: string,\n ref: string,\n): Promise<Uint8Array> {\n const [owner, name] = repo.split('/', 2)\n if (!owner || !name) throw new Error(`Invalid GitHub repo: ${repo}`)\n\n const candidates = ref.startsWith('refs/')\n ? [ref]\n : [`refs/heads/${ref}`, `refs/tags/${ref}`]\n\n\t let lastError: Error | null = null\n\t for (const candidate of candidates) {\n\t const url = `https://codeload.github.com/${owner}/${name}/zip/${candidate}`\n\t try {\n\t return await fetchBinary(url)\n\t } catch (err) {\n\t lastError = err instanceof Error ? err : Error(String(err))\n\t }\n }\n throw lastError ?? new Error(`Failed to download GitHub repo ${repo}@${ref}`)\n}\n\nasync function cacheMarketplaceToTempDir(\n source: MarketplaceSource,\n tempDir: string,\n): Promise<void> {\n ensureEmptyDir(tempDir)\n\n if (source.source === 'directory') {\n const root = resolve(source.path)\n if (!existsSync(root) || !lstatSync(root).isDirectory()) {\n throw new Error(`Directory not found: ${source.path}`)\n }\n safeCopyDirectory(root, tempDir)\n return\n }\n\n if (source.source === 'file') {\n const file = resolve(source.path)\n if (!existsSync(file) || !lstatSync(file).isFile()) {\n throw new Error(`File not found: ${source.path}`)\n }\n const out = join(tempDir, '.pyb-plugin')\n ensureDir(out)\n copyFileSync(file, join(out, 'marketplace.json'))\n return\n }\n\n if (source.source === 'github') {\n const pathWithin = normalizeMarketplaceSubPath(source.path)\n\n const preferredRef = source.ref?.trim() || ''\n const refsToTry = preferredRef ? [preferredRef] : ['main', 'master']\n\n let zip: Uint8Array | null = null\n let usedRef = preferredRef || 'main'\n let lastError: Error | null = null\n for (const ref of refsToTry) {\n try {\n zip = await tryDownloadGithubZip(source.repo, ref)\n usedRef = ref\n break\n } catch (err) {\n lastError = err instanceof Error ? err : Error(String(err))\n }\n }\n if (!zip)\n throw (\n lastError ?? new Error(`Failed to download GitHub repo ${source.repo}`)\n )\n\n const files = unzipSync(zip)\n const names = Object.keys(files).filter(Boolean)\n const topDir = names.length > 0 ? names[0]!.split('/')[0]! : ''\n const includePrefix = pathWithin\n ? `${topDir}/${pathWithin.replace(/\\/+$/, '')}/`\n : `${topDir}/`\n\n let extractedCount = 0\n for (const [name, data] of Object.entries(files)) {\n if (!name.startsWith(includePrefix)) continue\n const rel = name.slice(includePrefix.length)\n if (!rel) continue\n if (rel.endsWith('/')) {\n ensureDir(safeJoinWithin(tempDir, rel))\n continue\n }\n const dest = safeJoinWithin(tempDir, rel)\n ensureDir(dirname(dest))\n writeFileSync(dest, data)\n extractedCount++\n }\n\n if (extractedCount === 0) {\n throw new Error(\n `No files extracted from ${source.repo}@${usedRef}${pathWithin ? `#${pathWithin}` : ''}`,\n )\n }\n return\n }\n\n if (source.source === 'url') {\n const url = source.url\n if (url.toLowerCase().endsWith('.json')) {\n const data = await fetchBinary(url)\n const out = join(tempDir, '.pyb-plugin')\n ensureDir(out)\n writeFileSync(join(out, 'marketplace.json'), Buffer.from(data))\n return\n }\n if (url.toLowerCase().endsWith('.zip')) {\n const zip = await fetchBinary(url)\n const files = unzipSync(zip)\n for (const [name, data] of Object.entries(files)) {\n if (!name || name.endsWith('/')) continue\n const dest = safeJoinWithin(tempDir, name)\n ensureDir(dirname(dest))\n writeFileSync(dest, data)\n }\n return\n }\n throw new Error(\n `Unsupported url marketplace source. Provide a .json or .zip URL: ${url}`,\n )\n }\n\n if (source.source === 'git') {\n const repo = githubRepoFromUrl(source.url)\n if (repo) {\n await cacheMarketplaceToTempDir(\n {\n source: 'github',\n repo,\n ...(source.ref ? { ref: source.ref } : {}),\n ...(source.path ? { path: source.path } : {}),\n },\n tempDir,\n )\n return\n }\n throw new Error(\n `git sources are not supported without GitHub conversion (url=${source.url})`,\n )\n }\n\n if (source.source === 'npm') {\n throw new Error(\n `npm marketplace sources are not supported yet (package=${source.package}). Install the package and add it as a local dir instead.`,\n )\n }\n}\n\nfunction loadKnownMarketplaces(): KnownMarketplacesConfig {\n const raw = readJsonFile<unknown>(knownMarketplacesConfigPath(), {})\n const parsed = KnownMarketplacesSchema.safeParse(raw)\n if (!parsed.success) {\n throw new Error(\n `Marketplace configuration is corrupted: ${parsed.error.issues.map(i => i.message).join('; ')}`,\n )\n }\n return parsed.data\n}\n\nfunction saveKnownMarketplaces(config: KnownMarketplacesConfig): void {\n const parsed = KnownMarketplacesSchema.safeParse(config)\n if (!parsed.success) {\n throw new Error(`Invalid marketplace config: ${parsed.error.message}`)\n }\n writeJsonFile(knownMarketplacesConfigPath(), parsed.data)\n}\n\nexport function listMarketplaces(): KnownMarketplacesConfig {\n return loadKnownMarketplaces()\n}\n\nexport async function addMarketplace(\n sourceInput: string,\n): Promise<{ name: string }> {\n const source = parseMarketplaceSourceInput(sourceInput)\n const validatedSource = MarketplaceSourceSchema.safeParse(source)\n if (!validatedSource.success) {\n throw new Error(\n `Invalid marketplace source: ${validatedSource.error.issues.map(i => i.message).join('; ')}`,\n )\n }\n\n const config = loadKnownMarketplaces()\n const cacheBase = marketplaceCacheBaseDir()\n ensureDir(cacheBase)\n\n const tempDir = join(cacheBase, `tmp-${randomUUID()}`)\n try {\n await cacheMarketplaceToTempDir(validatedSource.data, tempDir)\n const manifest = readMarketplaceFromDirectory(tempDir)\n const marketplaceName = manifest.name\n\n if (config[marketplaceName]) {\n throw new Error(\n `Marketplace '${marketplaceName}' is already installed. Remove it first to re-add.`,\n )\n }\n\n const installLocation = join(cacheBase, marketplaceName)\n if (existsSync(installLocation)) {\n throw new Error(\n `Marketplace cache directory already exists: ${installLocation}`,\n )\n }\n\n renameSync(tempDir, installLocation)\n config[marketplaceName] = {\n source: validatedSource.data,\n installLocation,\n lastUpdated: new Date().toISOString(),\n }\n saveKnownMarketplaces(config)\n return { name: marketplaceName }\n } catch (error) {\n if (existsSync(tempDir)) rmSync(tempDir, { recursive: true, force: true })\n throw error\n }\n}\n\nexport function removeMarketplace(name: string): void {\n const trimmed = name.trim()\n if (!trimmed) throw new Error('Marketplace name is required')\n\n const config = loadKnownMarketplaces()\n const entry = config[trimmed]\n if (!entry) throw new Error(`Marketplace '${trimmed}' not found`)\n\n delete config[trimmed]\n saveKnownMarketplaces(config)\n\n try {\n if (existsSync(entry.installLocation)) {\n rmSync(entry.installLocation, { recursive: true, force: true })\n }\n } catch {\n }\n}\n\nexport async function refreshMarketplaceAsync(name: string): Promise<void> {\n const trimmed = name.trim()\n if (!trimmed) throw new Error('Marketplace name is required')\n\n const config = loadKnownMarketplaces()\n const entry = config[trimmed]\n if (!entry) throw new Error(`Marketplace '${trimmed}' not found`)\n\n const cacheBase = marketplaceCacheBaseDir()\n ensureDir(cacheBase)\n\n const tempDir = join(cacheBase, `tmp-${randomUUID()}`)\n try {\n await cacheMarketplaceToTempDir(entry.source, tempDir)\n const manifest = readMarketplaceFromDirectory(tempDir)\n if (manifest.name !== trimmed) {\n throw new Error(\n `Marketplace name mismatch on refresh: expected ${trimmed}, got ${manifest.name}`,\n )\n }\n\n if (existsSync(entry.installLocation)) {\n rmSync(entry.installLocation, { recursive: true, force: true })\n }\n renameSync(tempDir, entry.installLocation)\n config[trimmed] = {\n ...entry,\n lastUpdated: new Date().toISOString(),\n }\n saveKnownMarketplaces(config)\n } catch (error) {\n if (existsSync(tempDir)) rmSync(tempDir, { recursive: true, force: true })\n throw error\n }\n}\n\nexport async function refreshAllMarketplacesAsync(\n onProgress?: (message: string) => void,\n): Promise<{ refreshed: string[]; failed: { name: string; error: string }[] }> {\n const config = loadKnownMarketplaces()\n const names = Object.keys(config).sort()\n\n const refreshed: string[] = []\n const failed: { name: string; error: string }[] = []\n\n for (const name of names) {\n try {\n onProgress?.(`Updating marketplace: ${name}...`)\n await refreshMarketplaceAsync(name)\n refreshed.push(name)\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n failed.push({ name, error: message })\n onProgress?.(`Failed to refresh marketplace ${name}: ${message}`)\n }\n }\n\n return { refreshed, failed }\n}\n\nexport function getMarketplaceManifest(marketplaceName: string): {\n manifest: MarketplaceManifest\n rootDir: string\n source: MarketplaceSource\n} {\n const config = loadKnownMarketplaces()\n const entry = config[marketplaceName]\n if (!entry) {\n const available = Object.keys(config).sort().join(', ')\n throw new Error(\n `Marketplace '${marketplaceName}' not found. Available marketplaces: ${available || '(none)'}`,\n )\n }\n const manifest = readMarketplaceFromDirectory(entry.installLocation)\n return { manifest, rootDir: entry.installLocation, source: entry.source }\n}\n\nfunction ensurePluginInstallState(): InstalledSkillPluginsFile {\n ensureDir(userPybDir())\n const state = readJsonFile<Record<string, any>>(\n installedSkillPluginsPath(),\n {},\n )\n for (const record of Object.values(state)) {\n if (!record || typeof record !== 'object') continue\n if (\n record.scope !== 'user' &&\n record.scope !== 'project' &&\n record.scope !== 'local'\n ) {\n record.scope = 'user'\n }\n if (record.kind !== 'skill-pack' && record.kind !== 'plugin-pack') {\n record.kind =\n typeof record.pluginRoot === 'string' ? 'plugin-pack' : 'skill-pack'\n }\n if (record.isEnabled === undefined) record.isEnabled = true\n }\n return state as InstalledSkillPluginsFile\n}\n\nfunction savePluginInstallState(state: InstalledSkillPluginsFile): void {\n writeJsonFile(installedSkillPluginsPath(), state)\n}\n\nexport function installSkillPlugin(\n pluginInput: string,\n options?: { scope?: PluginScope; project?: boolean; force?: boolean },\n): {\n pluginSpec: string\n installedSkills: string[]\n installedCommands: string[]\n} {\n const scope = normalizePluginScope(options)\n const { plugin, marketplace, pluginSpec } =\n resolvePluginForInstall(pluginInput)\n const { manifest, rootDir, source } = getMarketplaceManifest(marketplace)\n\n const entry = manifest.plugins.find(p => p.name === plugin)\n if (!entry) {\n const available = manifest.plugins\n .map(p => p.name)\n .sort()\n .join(', ')\n throw new Error(\n `Plugin '${plugin}' not found in marketplace '${marketplace}'. Available plugins: ${available || '(none)'}`,\n )\n }\n\n const installState = ensurePluginInstallState()\n const existing = installState[pluginSpec]\n if (existing && existing.scope !== scope && options?.force !== true) {\n throw new Error(\n `Plugin '${pluginSpec}' is already installed with scope=${existing.scope}. Uninstall it first to install with scope=${scope}.`,\n )\n }\n if (existing && options?.force !== true) {\n throw new Error(\n `Plugin '${pluginSpec}' is already installed. Re-run with --force to reinstall.`,\n )\n }\n\n const entrySourceBase = resolve(rootDir, entry.source ?? './')\n const primaryManifestPath = join(\n entrySourceBase,\n '.pyb-plugin',\n 'plugin.json',\n )\n const legacyManifestPath = join(\n entrySourceBase,\n '.claude-plugin',\n 'plugin.json',\n )\n const pluginManifestPath = existsSync(primaryManifestPath)\n ? primaryManifestPath\n : legacyManifestPath\n\n if (\n existsSync(pluginManifestPath) &&\n lstatSync(pluginManifestPath).isFile()\n ) {\n const pluginRoot = scopeInstalledPluginRoot(scope, plugin, marketplace)\n if (existsSync(pluginRoot) && options?.force !== true) {\n throw new Error(`Destination already exists: ${pluginRoot}`)\n }\n ensureEmptyDir(pluginRoot)\n safeCopyDirectory(entrySourceBase, pluginRoot)\n\n installState[pluginSpec] = {\n plugin,\n marketplace,\n scope,\n kind: 'plugin-pack',\n pluginRoot,\n isEnabled: true,\n projectPath: scope === 'user' ? undefined : getCwd(),\n installedAt: new Date().toISOString(),\n skills: [],\n commands: [],\n sourceMarketplacePath:\n source.source === 'file' || source.source === 'directory'\n ? source.path\n : source.source === 'github'\n ? `github:${source.repo}`\n : source.source === 'url'\n ? source.url\n : source.source === 'git'\n ? source.url\n : `npm:${source.package}`,\n }\n savePluginInstallState(installState)\n\n return { pluginSpec, installedSkills: [], installedCommands: [] }\n }\n\n const skillsDestBase = scopeSkillsDir(scope)\n const commandsDestBase = join(scopeCommandsDir(scope), plugin, marketplace)\n\n ensureDir(skillsDestBase)\n ensureDir(commandsDestBase)\n\n const installedSkills: string[] = []\n const installedCommands: string[] = []\n\n const skillPaths = entry.skills ?? []\n for (const rel of skillPaths) {\n const src = safeJoinWithin(entrySourceBase, rel)\n if (!existsSync(src) || !lstatSync(src).isDirectory()) {\n throw new Error(`Skill path not found or not a directory: ${src}`)\n }\n const skillName = basename(src)\n const dest = join(skillsDestBase, skillName)\n\n if (existsSync(dest) && options?.force !== true) {\n throw new Error(`Destination already exists: ${dest}`)\n }\n ensureEmptyDir(dest)\n safeCopyDirectory(src, dest)\n installedSkills.push(skillName)\n }\n\n const commandPaths = entry.commands ?? []\n for (const rel of commandPaths) {\n const src = safeJoinWithin(entrySourceBase, rel)\n if (!existsSync(src)) {\n throw new Error(`Command path not found: ${src}`)\n }\n const stat = lstatSync(src)\n if (stat.isDirectory()) {\n const dest = join(commandsDestBase, basename(src))\n if (existsSync(dest) && options?.force !== true) {\n throw new Error(`Destination already exists: ${dest}`)\n }\n ensureEmptyDir(dest)\n safeCopyDirectory(src, dest)\n installedCommands.push(dest)\n continue\n }\n if (stat.isFile()) {\n const dest = join(commandsDestBase, basename(src))\n ensureDir(dirname(dest))\n if (existsSync(dest) && options?.force !== true) {\n throw new Error(`Destination already exists: ${dest}`)\n }\n copyFileSync(src, dest)\n installedCommands.push(dest)\n continue\n }\n }\n\n installState[pluginSpec] = {\n plugin,\n marketplace,\n scope,\n kind: 'skill-pack',\n isEnabled: true,\n projectPath: scope === 'user' ? undefined : getCwd(),\n installedAt: new Date().toISOString(),\n skills: installedSkills,\n commands: installedCommands,\n sourceMarketplacePath:\n source.source === 'file' || source.source === 'directory'\n ? source.path\n : source.source === 'github'\n ? `github:${source.repo}`\n : source.source === 'url'\n ? source.url\n : source.source === 'git'\n ? source.url\n : `npm:${source.package}`,\n }\n savePluginInstallState(installState)\n\n return { pluginSpec, installedSkills, installedCommands }\n}\n\nexport function uninstallSkillPlugin(\n pluginInput: string,\n options?: { scope?: PluginScope; project?: boolean },\n): { pluginSpec: string; removedSkills: string[]; removedCommands: string[] } {\n const requestedScope = normalizePluginScope(options)\n const state = ensurePluginInstallState()\n const pluginSpec = resolveInstalledPluginSpec(pluginInput, state)\n const record = state[pluginSpec]\n if (!record) {\n throw new Error(`Plugin '${pluginSpec}' is not installed`)\n }\n\n if (record.scope !== requestedScope) {\n throw new Error(\n `Plugin '${pluginSpec}' is installed with scope=${record.scope}. Re-run with --scope ${record.scope}.`,\n )\n }\n if (record.scope !== 'user') {\n const projectPath = record.projectPath?.trim() || ''\n const cwd = getCwd()\n if (!projectPath || projectPath !== cwd) {\n throw new Error(\n `Plugin '${pluginSpec}' is installed for a different directory. Expected cwd=${projectPath || '(missing)'}, got cwd=${cwd}`,\n )\n }\n }\n\n if (record.kind === 'plugin-pack') {\n const baseDir = baseDirForInstallRecord(record)\n const pluginRoot =\n typeof record.pluginRoot === 'string' && record.pluginRoot.trim()\n ? record.pluginRoot\n : join(\n baseDir,\n 'plugins',\n 'installed',\n record.plugin,\n record.marketplace,\n )\n\n const removedCommands: string[] = []\n if (existsSync(pluginRoot)) {\n rmSync(pluginRoot, { recursive: true, force: true })\n removedCommands.push(pluginRoot)\n }\n\n delete state[pluginSpec]\n savePluginInstallState(state)\n\n return { pluginSpec, removedSkills: [], removedCommands }\n }\n\n const baseDir = baseDirForInstallRecord(record)\n const skillsDestBase = join(baseDir, 'skills')\n const commandsDestBase = join(\n baseDir,\n 'commands',\n record.plugin,\n record.marketplace,\n )\n const disabledSkillsBase = join(\n baseDir,\n 'skills.disabled',\n record.plugin,\n record.marketplace,\n )\n const disabledCommandsBase = join(\n baseDir,\n 'commands.disabled',\n record.plugin,\n record.marketplace,\n )\n\n const removedSkills: string[] = []\n for (const skillName of record.skills) {\n const dest = join(skillsDestBase, skillName)\n if (existsSync(dest)) rmSync(dest, { recursive: true, force: true })\n const disabledDest = join(disabledSkillsBase, skillName)\n if (existsSync(disabledDest))\n rmSync(disabledDest, { recursive: true, force: true })\n removedSkills.push(skillName)\n }\n\n const removedCommands: string[] = []\n if (existsSync(commandsDestBase)) {\n rmSync(commandsDestBase, { recursive: true, force: true })\n removedCommands.push(commandsDestBase)\n }\n if (existsSync(disabledCommandsBase)) {\n rmSync(disabledCommandsBase, { recursive: true, force: true })\n removedCommands.push(disabledCommandsBase)\n }\n\n delete state[pluginSpec]\n savePluginInstallState(state)\n\n return { pluginSpec, removedSkills, removedCommands }\n}\n\nexport function disableSkillPlugin(\n pluginInput: string,\n options?: { scope?: PluginScope; project?: boolean },\n): {\n pluginSpec: string\n disabledSkills: string[]\n disabledCommands: string[]\n} {\n const requestedScope = normalizePluginScope(options)\n const state = ensurePluginInstallState()\n const pluginSpec = resolveInstalledPluginSpec(pluginInput, state)\n const record = state[pluginSpec]\n if (!record) throw new Error(`Plugin '${pluginSpec}' is not installed`)\n\n if (record.scope !== requestedScope) {\n throw new Error(\n `Plugin '${pluginSpec}' is installed with scope=${record.scope}. Re-run with --scope ${record.scope}.`,\n )\n }\n if (record.scope !== 'user') {\n const projectPath = record.projectPath?.trim() || ''\n const cwd = getCwd()\n if (!projectPath || projectPath !== cwd) {\n throw new Error(\n `Plugin '${pluginSpec}' is installed for a different directory. Expected cwd=${projectPath || '(missing)'}, got cwd=${cwd}`,\n )\n }\n }\n\n if (record.isEnabled === false) {\n return { pluginSpec, disabledSkills: [], disabledCommands: [] }\n }\n\n if (record.kind === 'plugin-pack') {\n record.isEnabled = false\n state[pluginSpec] = record\n savePluginInstallState(state)\n return { pluginSpec, disabledSkills: [], disabledCommands: [] }\n }\n\n const baseDir = baseDirForInstallRecord(record)\n const skillsDir = join(baseDir, 'skills')\n const commandsDir = join(\n baseDir,\n 'commands',\n record.plugin,\n record.marketplace,\n )\n const disabledSkillsBase = join(\n baseDir,\n 'skills.disabled',\n record.plugin,\n record.marketplace,\n )\n const disabledCommandsDir = join(\n baseDir,\n 'commands.disabled',\n record.plugin,\n record.marketplace,\n )\n\n const disabledSkills: string[] = []\n for (const skillName of record.skills) {\n const src = join(skillsDir, skillName)\n if (!existsSync(src)) continue\n const dest = join(disabledSkillsBase, skillName)\n ensureDir(dirname(dest))\n if (existsSync(dest)) rmSync(dest, { recursive: true, force: true })\n renameSync(src, dest)\n disabledSkills.push(skillName)\n }\n\n const disabledCommands: string[] = []\n if (existsSync(commandsDir)) {\n ensureDir(dirname(disabledCommandsDir))\n if (existsSync(disabledCommandsDir)) {\n rmSync(disabledCommandsDir, { recursive: true, force: true })\n }\n renameSync(commandsDir, disabledCommandsDir)\n disabledCommands.push(disabledCommandsDir)\n }\n\n record.isEnabled = false\n state[pluginSpec] = record\n savePluginInstallState(state)\n\n return { pluginSpec, disabledSkills, disabledCommands }\n}\n\nexport function enableSkillPlugin(\n pluginInput: string,\n options?: { scope?: PluginScope; project?: boolean },\n): { pluginSpec: string; enabledSkills: string[]; enabledCommands: string[] } {\n const requestedScope = normalizePluginScope(options)\n const state = ensurePluginInstallState()\n const pluginSpec = resolveInstalledPluginSpec(pluginInput, state)\n const record = state[pluginSpec]\n if (!record) throw new Error(`Plugin '${pluginSpec}' is not installed`)\n\n if (record.scope !== requestedScope) {\n throw new Error(\n `Plugin '${pluginSpec}' is installed with scope=${record.scope}. Re-run with --scope ${record.scope}.`,\n )\n }\n if (record.scope !== 'user') {\n const projectPath = record.projectPath?.trim() || ''\n const cwd = getCwd()\n if (!projectPath || projectPath !== cwd) {\n throw new Error(\n `Plugin '${pluginSpec}' is installed for a different directory. Expected cwd=${projectPath || '(missing)'}, got cwd=${cwd}`,\n )\n }\n }\n\n if (record.isEnabled !== false) {\n return { pluginSpec, enabledSkills: [], enabledCommands: [] }\n }\n\n if (record.kind === 'plugin-pack') {\n record.isEnabled = true\n state[pluginSpec] = record\n savePluginInstallState(state)\n return { pluginSpec, enabledSkills: [], enabledCommands: [] }\n }\n\n const baseDir = baseDirForInstallRecord(record)\n const skillsDir = join(baseDir, 'skills')\n const commandsDir = join(\n baseDir,\n 'commands',\n record.plugin,\n record.marketplace,\n )\n const disabledSkillsBase = join(\n baseDir,\n 'skills.disabled',\n record.plugin,\n record.marketplace,\n )\n const disabledCommandsDir = join(\n baseDir,\n 'commands.disabled',\n record.plugin,\n record.marketplace,\n )\n\n const enabledSkills: string[] = []\n for (const skillName of record.skills) {\n const src = join(disabledSkillsBase, skillName)\n if (!existsSync(src)) continue\n const dest = join(skillsDir, skillName)\n ensureDir(dirname(dest))\n if (existsSync(dest)) {\n throw new Error(`Destination already exists: ${dest}`)\n }\n renameSync(src, dest)\n enabledSkills.push(skillName)\n }\n\n const enabledCommands: string[] = []\n if (existsSync(disabledCommandsDir)) {\n ensureDir(dirname(commandsDir))\n if (existsSync(commandsDir)) {\n throw new Error(`Destination already exists: ${commandsDir}`)\n }\n renameSync(disabledCommandsDir, commandsDir)\n enabledCommands.push(commandsDir)\n }\n\n record.isEnabled = true\n state[pluginSpec] = record\n savePluginInstallState(state)\n\n return { pluginSpec, enabledSkills, enabledCommands }\n}\n\nexport function listInstalledSkillPlugins(): InstalledSkillPluginsFile {\n return ensurePluginInstallState()\n}\n\nexport function listEnabledInstalledPluginPackRoots(): string[] {\n const state = ensurePluginInstallState()\n const cwd = getCwd()\n const roots: string[] = []\n\n for (const spec of Object.keys(state).sort()) {\n const record = state[spec]\n if (!record || record.kind !== 'plugin-pack') continue\n if (record.isEnabled === false) continue\n\n if (record.scope !== 'user') {\n const projectPath = record.projectPath?.trim() || ''\n if (!projectPath || projectPath !== cwd) continue\n }\n\n const baseDir = baseDirForInstallRecord(record)\n const pluginRoot =\n typeof record.pluginRoot === 'string' && record.pluginRoot.trim()\n ? record.pluginRoot\n : join(\n baseDir,\n 'plugins',\n 'installed',\n record.plugin,\n record.marketplace,\n )\n\n try {\n if (!existsSync(pluginRoot) || !lstatSync(pluginRoot).isDirectory())\n continue\n roots.push(pluginRoot)\n } catch {\n continue\n }\n }\n\n return roots\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["parsed", "repo", "baseDir", "removedCommands"]
|
|
7
|
+
}
|
|
@@ -3,18 +3,18 @@ const require = __pybCreateRequire(import.meta.url);
|
|
|
3
3
|
import {
|
|
4
4
|
formatValidationResult,
|
|
5
5
|
validatePluginOrMarketplacePath
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-BBZ2VZ5J.js";
|
|
7
7
|
import {
|
|
8
8
|
loadPybAgentSessionMessages
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-Q7W7PGSO.js";
|
|
10
10
|
import {
|
|
11
11
|
listPybAgentSessions
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-VBJP55XA.js";
|
|
13
13
|
import {
|
|
14
14
|
appendSessionCustomTitleRecord,
|
|
15
15
|
appendSessionJsonlFromMessage,
|
|
16
16
|
appendSessionTagRecord
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-XD5KXOSG.js";
|
|
18
18
|
import {
|
|
19
19
|
drainHookSystemPromptAdditions,
|
|
20
20
|
getHookTranscriptPath,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
runStopHooks,
|
|
27
27
|
runUserPromptSubmitHooks,
|
|
28
28
|
updateHookTranscriptForMessages
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-HVMJPWC6.js";
|
|
30
30
|
import {
|
|
31
31
|
DEFAULT_OUTPUT_STYLE,
|
|
32
32
|
getAvailableOutputStyles,
|
|
@@ -35,16 +35,16 @@ import {
|
|
|
35
35
|
getOutputStyleSystemPromptAdditions,
|
|
36
36
|
resolveOutputStyleName,
|
|
37
37
|
setCurrentOutputStyle
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-7IKX4543.js";
|
|
39
39
|
import {
|
|
40
40
|
fetchCustomModels,
|
|
41
41
|
getModelFeatures
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-HHTFRFKN.js";
|
|
43
43
|
import {
|
|
44
44
|
queryLLM,
|
|
45
45
|
queryQuick,
|
|
46
46
|
verifyApiKey
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-Q32HEIH2.js";
|
|
48
48
|
import {
|
|
49
49
|
DEFAULT_TIMEOUT_MS,
|
|
50
50
|
FallbackToolUseRejectedMessage,
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
listMCPServers,
|
|
59
59
|
loadMergedSettings,
|
|
60
60
|
normalizeSandboxRuntimeConfigFromSettings
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-N6ETO4PE.js";
|
|
62
62
|
import {
|
|
63
63
|
addMarketplace,
|
|
64
64
|
disableSkillPlugin,
|
|
@@ -71,11 +71,11 @@ import {
|
|
|
71
71
|
refreshMarketplaceAsync,
|
|
72
72
|
removeMarketplace,
|
|
73
73
|
uninstallSkillPlugin
|
|
74
|
-
} from "./chunk-
|
|
74
|
+
} from "./chunk-VAR6IG72.js";
|
|
75
75
|
import {
|
|
76
76
|
loadToolPermissionContextFromDisk,
|
|
77
77
|
persistToolPermissionUpdateToDisk
|
|
78
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-GEHCREEY.js";
|
|
79
79
|
import {
|
|
80
80
|
applyToolPermissionContextUpdate,
|
|
81
81
|
createDefaultToolPermissionContext
|
|
@@ -88,7 +88,7 @@ import {
|
|
|
88
88
|
resetReminderSession,
|
|
89
89
|
setTodos,
|
|
90
90
|
systemReminderService
|
|
91
|
-
} from "./chunk-
|
|
91
|
+
} from "./chunk-MRU4VN5R.js";
|
|
92
92
|
import {
|
|
93
93
|
getSessionState
|
|
94
94
|
} from "./chunk-ERMQRV55.js";
|
|
@@ -97,7 +97,7 @@ import {
|
|
|
97
97
|
getActiveAgents,
|
|
98
98
|
getAgentByType,
|
|
99
99
|
getAllAgents
|
|
100
|
-
} from "./chunk-
|
|
100
|
+
} from "./chunk-UF2ARFEB.js";
|
|
101
101
|
import {
|
|
102
102
|
API_ERROR_MESSAGE_PREFIX,
|
|
103
103
|
CANCEL_MESSAGE,
|
|
@@ -127,7 +127,7 @@ import {
|
|
|
127
127
|
processUserInput,
|
|
128
128
|
reorderMessages,
|
|
129
129
|
stripSystemMessages
|
|
130
|
-
} from "./chunk-
|
|
130
|
+
} from "./chunk-KTLUYKAC.js";
|
|
131
131
|
import {
|
|
132
132
|
getRequestStatus,
|
|
133
133
|
setRequestStatus,
|
|
@@ -150,11 +150,11 @@ import {
|
|
|
150
150
|
normalizeFilePath,
|
|
151
151
|
readTextContent,
|
|
152
152
|
writeTextContent
|
|
153
|
-
} from "./chunk-
|
|
153
|
+
} from "./chunk-BPN5QY2K.js";
|
|
154
154
|
import {
|
|
155
155
|
ripGrep,
|
|
156
156
|
tree
|
|
157
|
-
} from "./chunk-
|
|
157
|
+
} from "./chunk-6XDESUHK.js";
|
|
158
158
|
import {
|
|
159
159
|
parseBlockEdits
|
|
160
160
|
} from "./chunk-QWIBSCDN.js";
|
|
@@ -164,17 +164,17 @@ import {
|
|
|
164
164
|
ParserRegistry,
|
|
165
165
|
initParser,
|
|
166
166
|
loadLanguage
|
|
167
|
-
} from "./chunk-
|
|
167
|
+
} from "./chunk-HWIU6J2T.js";
|
|
168
168
|
import {
|
|
169
169
|
getSettingsFileCandidates,
|
|
170
170
|
loadSettingsWithLegacyFallback
|
|
171
|
-
} from "./chunk-
|
|
171
|
+
} from "./chunk-F47KO7J2.js";
|
|
172
172
|
import {
|
|
173
173
|
getCustomCommandDirectories,
|
|
174
174
|
hasCustomCommands,
|
|
175
175
|
loadCustomCommands,
|
|
176
176
|
reloadCustomCommands
|
|
177
|
-
} from "./chunk-
|
|
177
|
+
} from "./chunk-LSJILN2S.js";
|
|
178
178
|
import {
|
|
179
179
|
getSessionPlugins
|
|
180
180
|
} from "./chunk-BJSWTHRM.js";
|
|
@@ -182,17 +182,17 @@ import {
|
|
|
182
182
|
ModelManager,
|
|
183
183
|
getModelManager,
|
|
184
184
|
isDefaultSlowAndCapableModel
|
|
185
|
-
} from "./chunk-
|
|
185
|
+
} from "./chunk-SBF7BOS4.js";
|
|
186
186
|
import {
|
|
187
187
|
getCodeStyle,
|
|
188
188
|
getContext,
|
|
189
189
|
getGitState,
|
|
190
190
|
getIsGit,
|
|
191
191
|
getProjectDocs
|
|
192
|
-
} from "./chunk-
|
|
192
|
+
} from "./chunk-T2HQBH46.js";
|
|
193
193
|
import {
|
|
194
194
|
getTheme
|
|
195
|
-
} from "./chunk-
|
|
195
|
+
} from "./chunk-EQMKAITH.js";
|
|
196
196
|
import {
|
|
197
197
|
DEFAULT_GLOBAL_CONFIG,
|
|
198
198
|
enableConfigs,
|
|
@@ -205,7 +205,7 @@ import {
|
|
|
205
205
|
saveGlobalConfig,
|
|
206
206
|
setAllPointersToModel,
|
|
207
207
|
setModelPointer
|
|
208
|
-
} from "./chunk-
|
|
208
|
+
} from "./chunk-4GB3OWJY.js";
|
|
209
209
|
import {
|
|
210
210
|
AbortError
|
|
211
211
|
} from "./chunk-RQVLBMP7.js";
|
|
@@ -214,7 +214,7 @@ import {
|
|
|
214
214
|
getCurrentRequest,
|
|
215
215
|
logUserFriendly,
|
|
216
216
|
markPhase
|
|
217
|
-
} from "./chunk-
|
|
217
|
+
} from "./chunk-3RXA6IWG.js";
|
|
218
218
|
import {
|
|
219
219
|
ASCII_LOGO,
|
|
220
220
|
BunShell,
|
|
@@ -239,8 +239,8 @@ import {
|
|
|
239
239
|
getPlanConversationKey,
|
|
240
240
|
getPlanFilePath,
|
|
241
241
|
getPlanModeSystemPromptAdditions,
|
|
242
|
-
getPybBaseDir,
|
|
243
242
|
getTaskOutputFilePath,
|
|
243
|
+
getXdgConfigDir,
|
|
244
244
|
hydratePlanSlugFromMessages,
|
|
245
245
|
isMainPlanFilePathForActiveConversation,
|
|
246
246
|
logError,
|
|
@@ -248,14 +248,15 @@ import {
|
|
|
248
248
|
readPlanFile,
|
|
249
249
|
renderBackgroundShellStatusAttachment,
|
|
250
250
|
renderBashNotification,
|
|
251
|
+
resolveXdgDataPath,
|
|
251
252
|
setActivePlanConversationKey,
|
|
252
253
|
setCwd,
|
|
253
254
|
shouldApplyToolOutputTruncation,
|
|
254
255
|
truncateToolOutput
|
|
255
|
-
} from "./chunk-
|
|
256
|
+
} from "./chunk-KUIDN7FP.js";
|
|
256
257
|
import {
|
|
257
258
|
MACRO
|
|
258
|
-
} from "./chunk-
|
|
259
|
+
} from "./chunk-H6NBGOQG.js";
|
|
259
260
|
import {
|
|
260
261
|
formatTotalCost,
|
|
261
262
|
getTotalAPIDuration,
|
|
@@ -443,7 +444,7 @@ var getCommandSubcommandPrefix = memoize(
|
|
|
443
444
|
var getCommandPrefix = memoize(
|
|
444
445
|
async (command4, abortSignal) => {
|
|
445
446
|
const { systemPrompt, userPrompt } = buildBashCommandPrefixDetectionPrompt(command4);
|
|
446
|
-
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-
|
|
447
|
+
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-XZHOT5QG.js");
|
|
447
448
|
const response = await queryQuick2({
|
|
448
449
|
systemPrompt,
|
|
449
450
|
userPrompt,
|
|
@@ -1411,7 +1412,7 @@ function rootPathForSource(source) {
|
|
|
1411
1412
|
case "session":
|
|
1412
1413
|
return resolveLikeCliPath(getOriginalCwd());
|
|
1413
1414
|
case "userSettings":
|
|
1414
|
-
return resolveLikeCliPath(
|
|
1415
|
+
return resolveLikeCliPath(getXdgConfigDir());
|
|
1415
1416
|
case "policySettings":
|
|
1416
1417
|
case "projectSettings":
|
|
1417
1418
|
case "localSettings":
|
|
@@ -1601,7 +1602,7 @@ function suggestFilePermissionUpdates(args) {
|
|
|
1601
1602
|
function getSpecialAllowedReadReason(args) {
|
|
1602
1603
|
const absolute = resolveLikeCliPath(args.inputPath);
|
|
1603
1604
|
const conversationKey = getPlanConversationKey(args.context);
|
|
1604
|
-
const baseDirResolved = resolveLikeCliPath(
|
|
1605
|
+
const baseDirResolved = resolveLikeCliPath(resolveXdgDataPath(""));
|
|
1605
1606
|
const bashOutputsDir = resolveLikeCliPath(
|
|
1606
1607
|
path.join(baseDirResolved, "bash-outputs", conversationKey)
|
|
1607
1608
|
);
|
|
@@ -4245,7 +4246,7 @@ function formatParseError(error) {
|
|
|
4245
4246
|
return error instanceof Error ? error.message : String(error);
|
|
4246
4247
|
}
|
|
4247
4248
|
async function defaultGateQuery(args) {
|
|
4248
|
-
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-
|
|
4249
|
+
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-XZHOT5QG.js");
|
|
4249
4250
|
const queryLLMFn = args.queryLLMOverride ?? queryLLM2;
|
|
4250
4251
|
const messages = [
|
|
4251
4252
|
{
|
|
@@ -6505,7 +6506,7 @@ var FileEditTool = {
|
|
|
6505
6506
|
const originalFileContent = currentFileContent;
|
|
6506
6507
|
let totalPatch = [];
|
|
6507
6508
|
const { SmartEdit } = await import("./smart-edit-AWHJDSU6.js");
|
|
6508
|
-
const { findLspAnchor } = await import("./lspAnchor-
|
|
6509
|
+
const { findLspAnchor } = await import("./lspAnchor-3AQPL2ZZ.js");
|
|
6509
6510
|
for (const op of editOperations) {
|
|
6510
6511
|
const normalizedSearch = normalizeLineEndings(op.search);
|
|
6511
6512
|
const normalizedReplace = normalizeLineEndings(op.replace);
|
|
@@ -11027,7 +11028,7 @@ async function createAndStoreApiKey(accessToken) {
|
|
|
11027
11028
|
}
|
|
11028
11029
|
saveGlobalConfig(config2);
|
|
11029
11030
|
try {
|
|
11030
|
-
const { resetAnthropicClient } = await import("./llm-
|
|
11031
|
+
const { resetAnthropicClient } = await import("./llm-XZHOT5QG.js");
|
|
11031
11032
|
resetAnthropicClient();
|
|
11032
11033
|
} catch {
|
|
11033
11034
|
}
|
|
@@ -15309,7 +15310,7 @@ async function refreshPluginRuntimeFromInstalls() {
|
|
|
15309
15310
|
const existingRoots = getSessionPlugins().map((p) => p.rootDir);
|
|
15310
15311
|
const dirs = Array.from(/* @__PURE__ */ new Set([...existingRoots, ...installedRoots]));
|
|
15311
15312
|
if (dirs.length === 0) return [];
|
|
15312
|
-
const { configureSessionPlugins } = await import("./pluginRuntime-
|
|
15313
|
+
const { configureSessionPlugins } = await import("./pluginRuntime-XKPZ3BX4.js");
|
|
15313
15314
|
const { errors } = await configureSessionPlugins({ pluginDirs: dirs });
|
|
15314
15315
|
return errors;
|
|
15315
15316
|
}
|
|
@@ -15978,7 +15979,7 @@ async function call(onDone, context) {
|
|
|
15978
15979
|
ModelConfig,
|
|
15979
15980
|
{
|
|
15980
15981
|
onClose: () => {
|
|
15981
|
-
import("./model-
|
|
15982
|
+
import("./model-VGKT6DJE.js").then(({ reloadModelManager: reloadModelManager2 }) => {
|
|
15982
15983
|
reloadModelManager2();
|
|
15983
15984
|
triggerModelConfigChange();
|
|
15984
15985
|
onDone();
|
|
@@ -23373,7 +23374,7 @@ function useStatusLine() {
|
|
|
23373
23374
|
// src/ui/components/PromptInput.tsx
|
|
23374
23375
|
async function interpretHashCommand(input) {
|
|
23375
23376
|
try {
|
|
23376
|
-
const { queryQuick: queryQuick2 } = await import("./llm-
|
|
23377
|
+
const { queryQuick: queryQuick2 } = await import("./llm-XZHOT5QG.js");
|
|
23377
23378
|
const systemPrompt = [
|
|
23378
23379
|
"You're helping the user structure notes that will be added to their PYB.md file.",
|
|
23379
23380
|
"Format the user's input into a well-structured note that will be useful for later reference.",
|
|
@@ -23686,7 +23687,7 @@ function PromptInput({
|
|
|
23686
23687
|
if (messages2.length) {
|
|
23687
23688
|
if (mode === "bash") {
|
|
23688
23689
|
onQuery(messages2, newAbortController).then(async () => {
|
|
23689
|
-
const { getCwd: getCwd2 } = await import("./state-
|
|
23690
|
+
const { getCwd: getCwd2 } = await import("./state-6NDQ3LIC.js");
|
|
23690
23691
|
setCurrentPwd(getCwd2());
|
|
23691
23692
|
});
|
|
23692
23693
|
} else {
|
|
@@ -26488,7 +26489,7 @@ import { homedir as homedir7 } from "os";
|
|
|
26488
26489
|
// src/commands/agents/generation.ts
|
|
26489
26490
|
import { randomUUID as randomUUID5 } from "crypto";
|
|
26490
26491
|
async function generateAgentWithClaude(prompt) {
|
|
26491
|
-
const { queryModel } = await import("./llm-
|
|
26492
|
+
const { queryModel } = await import("./llm-XZHOT5QG.js");
|
|
26492
26493
|
const systemPrompt = `You are an expert at creating AI agent configurations. Based on the user's description, generate a specialized agent configuration.
|
|
26493
26494
|
|
|
26494
26495
|
Return your response as a JSON object with exactly these fields:
|