aico-cli 0.4.1 → 0.4.4
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/chunks/run-command.mjs +47 -0
- package/dist/chunks/simple-config.mjs +41 -15
- package/dist/cli.mjs +509 -119
- package/package.json +4 -1
- package/templates/skills/slack-gif-creator/LICENSE.txt +202 -0
- package/templates/skills/slack-gif-creator/SKILL.md +646 -0
- package/templates/skills/slack-gif-creator/core/color_palettes.py +302 -0
- package/templates/skills/slack-gif-creator/core/easing.py +230 -0
- package/templates/skills/slack-gif-creator/core/frame_composer.py +469 -0
- package/templates/skills/slack-gif-creator/core/gif_builder.py +246 -0
- package/templates/skills/slack-gif-creator/core/typography.py +357 -0
- package/templates/skills/slack-gif-creator/core/validators.py +264 -0
- package/templates/skills/slack-gif-creator/core/visual_effects.py +494 -0
- package/templates/skills/slack-gif-creator/requirements.txt +4 -0
- package/templates/skills/slack-gif-creator/templates/bounce.py +106 -0
- package/templates/skills/slack-gif-creator/templates/explode.py +331 -0
- package/templates/skills/slack-gif-creator/templates/fade.py +329 -0
- package/templates/skills/slack-gif-creator/templates/flip.py +291 -0
- package/templates/skills/slack-gif-creator/templates/kaleidoscope.py +211 -0
- package/templates/skills/slack-gif-creator/templates/morph.py +329 -0
- package/templates/skills/slack-gif-creator/templates/move.py +293 -0
- package/templates/skills/slack-gif-creator/templates/pulse.py +268 -0
- package/templates/skills/slack-gif-creator/templates/shake.py +127 -0
- package/templates/skills/slack-gif-creator/templates/slide.py +291 -0
- package/templates/skills/slack-gif-creator/templates/spin.py +269 -0
- package/templates/skills/slack-gif-creator/templates/wiggle.py +300 -0
- package/templates/skills/slack-gif-creator/templates/zoom.py +312 -0
- package/templates/skills/swimlane-diagram/README.md +373 -0
- package/templates/skills/swimlane-diagram/SKILL.md +242 -0
- package/templates/skills/swimlane-diagram/examples.md +405 -0
- package/templates/skills/swimlane-diagram/generators.mjs +258 -0
- package/templates/skills/swimlane-diagram/package.json +126 -0
- package/templates/skills/swimlane-diagram/reference.md +368 -0
- package/templates/skills/swimlane-diagram/swimlane-diagram.mjs +215 -0
- package/templates/skills/swimlane-diagram/swimlane-diagram.test.mjs +358 -0
- package/templates/skills/swimlane-diagram/validators.mjs +291 -0
- package/templates/skills/theme-factory/LICENSE.txt +202 -0
- package/templates/skills/theme-factory/SKILL.md +59 -0
- package/templates/skills/theme-factory/theme-showcase.pdf +0 -0
- package/templates/skills/theme-factory/themes/arctic-frost.md +19 -0
- package/templates/skills/theme-factory/themes/botanical-garden.md +19 -0
- package/templates/skills/theme-factory/themes/desert-rose.md +19 -0
- package/templates/skills/theme-factory/themes/forest-canopy.md +19 -0
- package/templates/skills/theme-factory/themes/golden-hour.md +19 -0
- package/templates/skills/theme-factory/themes/midnight-galaxy.md +19 -0
- package/templates/skills/theme-factory/themes/modern-minimalist.md +19 -0
- package/templates/skills/theme-factory/themes/ocean-depths.md +19 -0
- package/templates/skills/theme-factory/themes/sunset-boulevard.md +19 -0
- package/templates/skills/theme-factory/themes/tech-innovation.md +19 -0
- package/templates/code.md +0 -70
- package/templates/windows-bootstrap.ps1 +0 -390
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { p as processManager } from '../cli.mjs';
|
|
2
|
+
import 'cac';
|
|
3
|
+
import 'ansis';
|
|
4
|
+
import './simple-config.mjs';
|
|
5
|
+
import 'inquirer';
|
|
6
|
+
import 'tinyexec';
|
|
7
|
+
import 'node:os';
|
|
8
|
+
import 'node:fs';
|
|
9
|
+
import 'node:child_process';
|
|
10
|
+
import 'node:util';
|
|
11
|
+
import 'child_process';
|
|
12
|
+
import 'util';
|
|
13
|
+
import 'ora';
|
|
14
|
+
import 'dayjs';
|
|
15
|
+
import 'node:path';
|
|
16
|
+
import 'pathe';
|
|
17
|
+
import 'node:url';
|
|
18
|
+
import 'node:events';
|
|
19
|
+
|
|
20
|
+
async function run(command) {
|
|
21
|
+
try {
|
|
22
|
+
const parts = command.split(" ").filter((part) => part.trim());
|
|
23
|
+
if (parts.length === 0) {
|
|
24
|
+
throw new Error("\u547D\u4EE4\u4E0D\u80FD\u4E3A\u7A7A");
|
|
25
|
+
}
|
|
26
|
+
const cmd = parts[0];
|
|
27
|
+
const args = parts.slice(1);
|
|
28
|
+
const result = await processManager.spawn(cmd, args, {
|
|
29
|
+
name: cmd,
|
|
30
|
+
timeout: 6e4,
|
|
31
|
+
// 60秒超时
|
|
32
|
+
stdio: "pipe"
|
|
33
|
+
});
|
|
34
|
+
return {
|
|
35
|
+
stdout: result.stdout || "",
|
|
36
|
+
stderr: result.stderr || ""
|
|
37
|
+
};
|
|
38
|
+
} catch (error) {
|
|
39
|
+
if (error instanceof Error) {
|
|
40
|
+
throw new Error(`Command failed: ${command}
|
|
41
|
+
Error: ${error.message}`);
|
|
42
|
+
}
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export { run };
|
|
@@ -13,7 +13,7 @@ import { join as join$1 } from 'node:path';
|
|
|
13
13
|
import { join, dirname, basename } from 'pathe';
|
|
14
14
|
import { fileURLToPath } from 'node:url';
|
|
15
15
|
|
|
16
|
-
const version = "0.4.
|
|
16
|
+
const version = "0.4.4";
|
|
17
17
|
|
|
18
18
|
function displayBanner(subtitle) {
|
|
19
19
|
const defaultSubtitle = "\u4E00\u952E\u914D\u7F6E\u4F60\u7684\u5F00\u53D1\u73AF\u5883";
|
|
@@ -4678,18 +4678,18 @@ const DEFAULT_FILE_COPY_CONFIGS = [
|
|
|
4678
4678
|
}
|
|
4679
4679
|
},
|
|
4680
4680
|
{
|
|
4681
|
-
source: "templates/
|
|
4682
|
-
destination: join(CLAUDE_DIR, "
|
|
4683
|
-
type: "
|
|
4681
|
+
source: "templates/skills",
|
|
4682
|
+
destination: join(CLAUDE_DIR, "skills"),
|
|
4683
|
+
type: "directory",
|
|
4684
4684
|
options: {
|
|
4685
|
-
mergeStrategy: "
|
|
4685
|
+
mergeStrategy: "copy",
|
|
4686
4686
|
backupBeforeCopy: true,
|
|
4687
4687
|
deleteBeforeCopy: true
|
|
4688
4688
|
}
|
|
4689
4689
|
},
|
|
4690
4690
|
{
|
|
4691
|
-
source: "templates/
|
|
4692
|
-
destination: join(CLAUDE_DIR, "
|
|
4691
|
+
source: "templates/personality.md",
|
|
4692
|
+
destination: join(CLAUDE_DIR, "personality.md"),
|
|
4693
4693
|
type: "file",
|
|
4694
4694
|
options: {
|
|
4695
4695
|
mergeStrategy: "merge",
|
|
@@ -4941,7 +4941,10 @@ class ConfigInstaller extends AbstractInstaller {
|
|
|
4941
4941
|
const settingsInstalled = existsSync(SETTINGS_FILE);
|
|
4942
4942
|
const personalityInstalled = existsSync(join(CLAUDE_DIR, "personality.md"));
|
|
4943
4943
|
const languageInstalled = existsSync(join(CLAUDE_DIR, "language.md"));
|
|
4944
|
-
|
|
4944
|
+
const skillsInstalled = existsSync(join(CLAUDE_DIR, "skills"));
|
|
4945
|
+
return {
|
|
4946
|
+
isInstalled: settingsInstalled && personalityInstalled && languageInstalled && skillsInstalled
|
|
4947
|
+
};
|
|
4945
4948
|
}
|
|
4946
4949
|
async install(options = {}) {
|
|
4947
4950
|
try {
|
|
@@ -5151,35 +5154,58 @@ class ConfigCheckerInstaller extends AbstractInstaller {
|
|
|
5151
5154
|
name = "Config Checker";
|
|
5152
5155
|
async checkStatus() {
|
|
5153
5156
|
const configType = await this.detectConfigType();
|
|
5157
|
+
const skillsInstalled = exists(join(CLAUDE_DIR, "skills"));
|
|
5154
5158
|
return {
|
|
5155
|
-
isInstalled: configType !== "none",
|
|
5159
|
+
isInstalled: configType !== "none" && skillsInstalled,
|
|
5156
5160
|
version: void 0
|
|
5157
5161
|
};
|
|
5158
5162
|
}
|
|
5159
5163
|
async install(options = {}) {
|
|
5160
5164
|
try {
|
|
5161
5165
|
const configType = await this.detectConfigType();
|
|
5162
|
-
|
|
5163
|
-
|
|
5166
|
+
const skillsInstalled = exists(join(CLAUDE_DIR, "skills"));
|
|
5167
|
+
if (configType !== "none" && skillsInstalled && !options.force) {
|
|
5168
|
+
this.log(`\u68C0\u6D4B\u5230 ${configType === "company" ? "\u516C\u53F8" : "\u4E2A\u4EBA"} \u914D\u7F6E\u4E14\u6280\u80FD\u76EE\u5F55\u5DF2\u5B58\u5728\uFF0C\u8DF3\u8FC7\u914D\u7F6E`, "success");
|
|
5164
5169
|
return this.createSkipResult(
|
|
5165
|
-
`${configType === "company" ? "\u516C\u53F8" : "\u4E2A\u4EBA"} \u914D\u7F6E\u5DF2\u5B58\u5728\uFF0C\u8DF3\u8FC7\u914D\u7F6E`,
|
|
5170
|
+
`${configType === "company" ? "\u516C\u53F8" : "\u4E2A\u4EBA"} \u914D\u7F6E\u548C\u6280\u80FD\u76EE\u5F55\u5DF2\u5B58\u5728\uFF0C\u8DF3\u8FC7\u914D\u7F6E`,
|
|
5166
5171
|
"already_configured",
|
|
5167
|
-
{ configType }
|
|
5172
|
+
{ configType, skillsInstalled }
|
|
5168
5173
|
);
|
|
5169
5174
|
}
|
|
5170
5175
|
if (!options.silent) {
|
|
5171
5176
|
if (configType !== "none" && options.force) {
|
|
5172
5177
|
this.log(`\u5F3A\u5236\u8986\u76D6\u73B0\u6709${configType === "company" ? "\u516C\u53F8" : "\u4E2A\u4EBA"}\u914D\u7F6E...`, "info");
|
|
5178
|
+
} else if (!skillsInstalled) {
|
|
5179
|
+
this.log("\u68C0\u6D4B\u5230\u6280\u80FD\u76EE\u5F55\u672A\u5B89\u88C5\uFF0C\u5C06\u8FDB\u884C\u5B89\u88C5...", "info");
|
|
5173
5180
|
} else {
|
|
5174
5181
|
this.log("\u5F00\u59CB\u914D\u7F6E\u68C0\u67E5...", "info");
|
|
5175
5182
|
}
|
|
5176
5183
|
}
|
|
5177
5184
|
const operation = configType !== "none" && options.force ? "\u8986\u76D6\u68C0\u67E5" : "\u914D\u7F6E\u68C0\u67E5";
|
|
5178
|
-
|
|
5185
|
+
const skillsMessage = skillsInstalled ? "\u6280\u80FD\u76EE\u5F55\u5DF2\u5B58\u5728" : "\u6280\u80FD\u76EE\u5F55\u672A\u5B89\u88C5";
|
|
5186
|
+
return this.createSuccessResult(
|
|
5187
|
+
`\u914D\u7F6E\u68C0\u67E5\u5B8C\u6210\uFF0C${operation}\u6210\u529F\uFF0C${skillsMessage}`,
|
|
5188
|
+
void 0,
|
|
5189
|
+
{ configType, skillsInstalled }
|
|
5190
|
+
);
|
|
5179
5191
|
} catch (error) {
|
|
5180
5192
|
return this.handleError(error, "\u914D\u7F6E\u68C0\u67E5");
|
|
5181
5193
|
}
|
|
5182
5194
|
}
|
|
5195
|
+
/**
|
|
5196
|
+
* 检查版本一致性
|
|
5197
|
+
*/
|
|
5198
|
+
async checkVersionConsistency() {
|
|
5199
|
+
try {
|
|
5200
|
+
const aicoConfig = readAicoConfig();
|
|
5201
|
+
if (!aicoConfig) {
|
|
5202
|
+
return false;
|
|
5203
|
+
}
|
|
5204
|
+
return aicoConfig.version === version;
|
|
5205
|
+
} catch (error) {
|
|
5206
|
+
return false;
|
|
5207
|
+
}
|
|
5208
|
+
}
|
|
5183
5209
|
/**
|
|
5184
5210
|
* 检测配置类型
|
|
5185
5211
|
*/
|
|
@@ -5544,4 +5570,4 @@ async function openSettingsJson() {
|
|
|
5544
5570
|
}
|
|
5545
5571
|
}
|
|
5546
5572
|
|
|
5547
|
-
export { AICO_CONFIG_FILE as A, getMcpConfigPath as B, CLAUDE_DIR as C, DEFAULT_FILE_COPY_CONFIGS as D, readMcpConfig as E, writeMcpConfig as F, backupMcpConfig as G, mergeMcpServers as H, buildMcpServerConfig as I, fixWindowsMcpConfig as J, addCompletedOnboarding as K, LEGACY_AICO_CONFIG_FILE as L, MCP_SERVICES as M, createEscapablePrompt as N, displayBannerWithInfo as O, executeWithEscapeSupport as P, handleExitPromptError as Q, handleGeneralError as R, SETTINGS_FILE as S, EscapeKeyPressed as T, displayBanner as U, ConfigCheckerInstaller as V,
|
|
5573
|
+
export { AICO_CONFIG_FILE as A, getMcpConfigPath as B, CLAUDE_DIR as C, DEFAULT_FILE_COPY_CONFIGS as D, readMcpConfig as E, writeMcpConfig as F, backupMcpConfig as G, mergeMcpServers as H, buildMcpServerConfig as I, fixWindowsMcpConfig as J, addCompletedOnboarding as K, LEGACY_AICO_CONFIG_FILE as L, MCP_SERVICES as M, createEscapablePrompt as N, displayBannerWithInfo as O, executeWithEscapeSupport as P, handleExitPromptError as Q, handleGeneralError as R, SETTINGS_FILE as S, EscapeKeyPressed as T, displayBanner as U, ConfigCheckerInstaller as V, updateAicoConfig as W, version as X, InstallationComposer as Y, readAicoConfig as Z, init$1 as _, init as a, getPlatform as b, commandExists as c, importRecommendedEnv as d, importRecommendedPermissions as e, cleanupPermissions as f, getTermuxPrefix as g, mergeAndCleanPermissions as h, isTermux as i, CLAUDE_MD_FILE as j, ClAUDE_CONFIG_FILE as k, SUPPORTED_LANGS as l, messages as m, LANG_LABELS as n, openSettingsJson as o, AI_OUTPUT_LANGUAGES as p, ensureClaudeDir as q, backupExistingConfig as r, copyConfigFiles as s, copyConfigFilesWithConfig as t, configureApi as u, mergeConfigs as v, updateDefaultModel as w, mergeSettingsFile as x, getExistingApiConfig as y, applyAiLanguageDirective as z };
|