sino-bc-cli 1.3.2 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +60 -14
  2. package/dist/SKILL.md +32 -14
  3. package/dist/api-doc/README.md +23 -5
  4. package/dist/api-doc/biz-line-query.md +2 -0
  5. package/dist/api-doc/biz-line-strategy.md +2 -0
  6. package/dist/api-doc/icenter-mcp-strategy-dimension-facebook-ad-list.md +13 -5
  7. package/dist/api-doc/icenter-mcp-strategy-dimension-google-ad-list.md +170 -0
  8. package/dist/api-doc/icenter-mcp-strategy-dimension-tiktok-ad-list.md +172 -0
  9. package/dist/api-doc/icenter-mcp-strategy-metrics-facebook-ad-list.md +11 -6
  10. package/dist/api-doc/icenter-mcp-strategy-metrics-google-ad-list.md +201 -0
  11. package/dist/api-doc/icenter-mcp-strategy-metrics-tiktok-ad-list.md +204 -0
  12. package/dist/api-doc/icenter-mcp-version-query.md +5 -3
  13. package/dist/index.js +1 -33
  14. package/package.json +6 -3
  15. package/dist/commands/api-endpoint.command.d.ts +0 -58
  16. package/dist/commands/api-endpoint.command.js +0 -212
  17. package/dist/commands/api-endpoint.command.js.map +0 -1
  18. package/dist/commands/api-list.command.d.ts +0 -39
  19. package/dist/commands/api-list.command.js +0 -179
  20. package/dist/commands/api-list.command.js.map +0 -1
  21. package/dist/commands/bc-api.command.d.ts +0 -20
  22. package/dist/commands/bc-api.command.js +0 -30
  23. package/dist/commands/bc-api.command.js.map +0 -1
  24. package/dist/commands/ic-api.command.d.ts +0 -20
  25. package/dist/commands/ic-api.command.js +0 -30
  26. package/dist/commands/ic-api.command.js.map +0 -1
  27. package/dist/commands/index.d.ts +0 -12
  28. package/dist/commands/index.js +0 -29
  29. package/dist/commands/index.js.map +0 -1
  30. package/dist/commands/init.command.d.ts +0 -30
  31. package/dist/commands/init.command.js +0 -130
  32. package/dist/commands/init.command.js.map +0 -1
  33. package/dist/constants/api-catalog.d.ts +0 -34
  34. package/dist/constants/api-catalog.js +0 -118
  35. package/dist/constants/api-catalog.js.map +0 -1
  36. package/dist/constants/api-doc.d.ts +0 -13
  37. package/dist/constants/api-doc.js +0 -97
  38. package/dist/constants/api-doc.js.map +0 -1
  39. package/dist/constants/biz-line-api-doc.d.ts +0 -19
  40. package/dist/constants/biz-line-api-doc.js +0 -353
  41. package/dist/constants/biz-line-api-doc.js.map +0 -1
  42. package/dist/constants/gateway.d.ts +0 -35
  43. package/dist/constants/gateway.js +0 -113
  44. package/dist/constants/gateway.js.map +0 -1
  45. package/dist/constants/index.d.ts +0 -32
  46. package/dist/constants/index.js +0 -84
  47. package/dist/constants/index.js.map +0 -1
  48. package/dist/core/cli-app.d.ts +0 -51
  49. package/dist/core/cli-app.js +0 -283
  50. package/dist/core/cli-app.js.map +0 -1
  51. package/dist/core/command-registry.d.ts +0 -71
  52. package/dist/core/command-registry.js +0 -195
  53. package/dist/core/command-registry.js.map +0 -1
  54. package/dist/core/index.d.ts +0 -2
  55. package/dist/core/index.js +0 -9
  56. package/dist/core/index.js.map +0 -1
  57. package/dist/index.d.ts +0 -12
  58. package/dist/index.js.map +0 -1
  59. package/dist/types/index.d.ts +0 -122
  60. package/dist/types/index.js +0 -46
  61. package/dist/types/index.js.map +0 -1
  62. package/dist/utils/browser.d.ts +0 -52
  63. package/dist/utils/browser.js +0 -222
  64. package/dist/utils/browser.js.map +0 -1
  65. package/dist/utils/common.d.ts +0 -97
  66. package/dist/utils/common.js +0 -198
  67. package/dist/utils/common.js.map +0 -1
  68. package/dist/utils/crypto.d.ts +0 -53
  69. package/dist/utils/crypto.js +0 -153
  70. package/dist/utils/crypto.js.map +0 -1
  71. package/dist/utils/http.d.ts +0 -58
  72. package/dist/utils/http.js +0 -188
  73. package/dist/utils/http.js.map +0 -1
  74. package/dist/utils/index.d.ts +0 -7
  75. package/dist/utils/index.js +0 -22
  76. package/dist/utils/index.js.map +0 -1
  77. package/dist/utils/logger.d.ts +0 -56
  78. package/dist/utils/logger.js +0 -161
  79. package/dist/utils/logger.js.map +0 -1
  80. package/dist/utils/prompt.d.ts +0 -18
  81. package/dist/utils/prompt.js +0 -77
  82. package/dist/utils/prompt.js.map +0 -1
  83. package/dist/utils/skill-install.d.ts +0 -74
  84. package/dist/utils/skill-install.js +0 -131
  85. package/dist/utils/skill-install.js.map +0 -1
@@ -1,188 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.HttpUtils = void 0;
40
- const axios_1 = __importDefault(require("axios"));
41
- const _ = __importStar(require("lodash"));
42
- const dayjs_1 = __importDefault(require("dayjs"));
43
- const logger_1 = require("./logger");
44
- const constants_1 = require("../constants");
45
- /**
46
- * HTTP 请求工具类
47
- * 封装 axios,提供统一的 HTTP 请求接口,包含请求拦截、响应拦截、错误处理
48
- * 具备超时设置、自动重试、日志记录等功能
49
- */
50
- class HttpUtils {
51
- /** axios 实例 */
52
- static instance;
53
- /**
54
- * 获取 axios 实例(单例模式)
55
- */
56
- static getInstance() {
57
- if (!this.instance) {
58
- this.instance = axios_1.default.create({
59
- timeout: constants_1.DEFAULT_CONFIG.timeout,
60
- headers: {
61
- 'Content-Type': 'application/json',
62
- 'User-Agent': `${constants_1.CLI_CONFIG.name}/${constants_1.CLI_CONFIG.version}`,
63
- [constants_1.GATEWAY_TYPE_HEADER]: constants_1.GATEWAY_TYPE_VALUE,
64
- },
65
- });
66
- // 请求拦截器
67
- this.instance.interceptors.request.use((config) => {
68
- const startTime = (0, dayjs_1.default)().valueOf();
69
- // 在 config 中存储开始时间,供响应拦截器计算耗时
70
- const extendedConfig = config;
71
- extendedConfig._startTime = startTime;
72
- const method = String(config.method || 'GET');
73
- logger_1.logger.debug(`发起 HTTP 请求: ${_.toUpper(method)} ${config.url}`);
74
- return config;
75
- }, (error) => {
76
- logger_1.logger.error('HTTP 请求拦截器错误:', error);
77
- return Promise.reject(error);
78
- });
79
- // 响应拦截器
80
- this.instance.interceptors.response.use((response) => {
81
- const extendedConfig = response.config;
82
- const startTime = extendedConfig._startTime || 0;
83
- const duration = startTime ? (0, dayjs_1.default)().valueOf() - startTime : 0;
84
- const method = String(response.config.method || 'GET');
85
- logger_1.logger.debug(`HTTP 请求成功: ${_.toUpper(method)} ${response.config.url} - ` +
86
- `状态码: ${response.status} - 耗时: ${duration}ms`);
87
- return response;
88
- }, (error) => {
89
- const extendedConfig = error.config;
90
- const startTime = extendedConfig?._startTime || 0;
91
- const duration = startTime ? (0, dayjs_1.default)().valueOf() - startTime : 0;
92
- const method = String(extendedConfig?.method || 'GET');
93
- const url = String(extendedConfig?.url || '');
94
- if (error.response) {
95
- // 服务器返回错误响应
96
- logger_1.logger.error(`HTTP 请求失败: ${_.toUpper(method)} ${url} - ` +
97
- `状态码: ${error.response.status} - 耗时: ${duration}ms`);
98
- }
99
- else if (error.request) {
100
- // 请求已发出但未收到响应
101
- logger_1.logger.error(`HTTP 请求无响应: ${_.toUpper(method)} ${url} - ` +
102
- `超时或网络错误 - 耗时: ${duration}ms`);
103
- }
104
- else {
105
- // 请求配置错误
106
- logger_1.logger.error(`HTTP 请求配置错误: ${error.message}`);
107
- }
108
- return Promise.reject(error);
109
- });
110
- }
111
- return this.instance;
112
- }
113
- /**
114
- * 发送 GET 请求
115
- * @param url 请求 URL
116
- * @param config 请求配置
117
- * @returns Promise<T> 响应数据
118
- */
119
- static async get(url, config) {
120
- const response = await this.getInstance().get(url, config);
121
- return response.data;
122
- }
123
- /**
124
- * 发送 POST 请求
125
- * @param url 请求 URL
126
- * @param data 请求数据
127
- * @param config 请求配置
128
- * @returns Promise<T> 响应数据
129
- */
130
- static async post(url, data, config) {
131
- const response = await this.getInstance().post(url, data, config);
132
- return response.data;
133
- }
134
- /**
135
- * 发送 PUT 请求
136
- * @param url 请求 URL
137
- * @param data 请求数据
138
- * @param config 请求配置
139
- * @returns Promise<T> 响应数据
140
- */
141
- static async put(url, data, config) {
142
- const response = await this.getInstance().put(url, data, config);
143
- return response.data;
144
- }
145
- /**
146
- * 发送 DELETE 请求
147
- * @param url 请求 URL
148
- * @param config 请求配置
149
- * @returns Promise<T> 响应数据
150
- */
151
- static async delete(url, config) {
152
- const response = await this.getInstance().delete(url, config);
153
- return response.data;
154
- }
155
- /**
156
- * 带重试机制的 GET 请求
157
- * @param url 请求 URL
158
- * @param maxRetries 最大重试次数,默认 3 次
159
- * @param retryDelay 重试间隔(毫秒),默认 1000ms
160
- * @param config 请求配置
161
- * @returns Promise<T> 响应数据
162
- */
163
- static async getWithRetry(url, maxRetries = 3, retryDelay = 1000, config) {
164
- let lastError;
165
- for (let attempt = 1; attempt <= maxRetries; attempt++) {
166
- try {
167
- return await this.get(url, config);
168
- }
169
- catch (error) {
170
- lastError = error;
171
- if (attempt < maxRetries) {
172
- logger_1.logger.warn(`HTTP 请求第 ${attempt} 次失败,${retryDelay}ms 后进行第 ${attempt + 1} 次重试...`);
173
- await this.sleep(retryDelay);
174
- }
175
- }
176
- }
177
- throw lastError;
178
- }
179
- /**
180
- * 延时函数
181
- * @param ms 延时毫秒数
182
- */
183
- static sleep(ms) {
184
- return new Promise((resolve) => setTimeout(resolve, ms));
185
- }
186
- }
187
- exports.HttpUtils = HttpUtils;
188
- //# sourceMappingURL=http.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/utils/http.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- export { logger } from './logger';
2
- export { BrowserUtils } from './browser';
3
- export { CryptoUtils } from './crypto';
4
- export { HttpUtils } from './http';
5
- export { CommonUtils } from './common';
6
- export { PromptUtils } from './prompt';
7
- export { installSkillToAgents, resolveSkillSourcePath, getAgentSkillPaths, SKILL_FOLDER_NAME, AGENT_SKILL_TARGETS, } from './skill-install';
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AGENT_SKILL_TARGETS = exports.SKILL_FOLDER_NAME = exports.getAgentSkillPaths = exports.resolveSkillSourcePath = exports.installSkillToAgents = exports.PromptUtils = exports.CommonUtils = exports.HttpUtils = exports.CryptoUtils = exports.BrowserUtils = exports.logger = void 0;
4
- var logger_1 = require("./logger");
5
- Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_1.logger; } });
6
- var browser_1 = require("./browser");
7
- Object.defineProperty(exports, "BrowserUtils", { enumerable: true, get: function () { return browser_1.BrowserUtils; } });
8
- var crypto_1 = require("./crypto");
9
- Object.defineProperty(exports, "CryptoUtils", { enumerable: true, get: function () { return crypto_1.CryptoUtils; } });
10
- var http_1 = require("./http");
11
- Object.defineProperty(exports, "HttpUtils", { enumerable: true, get: function () { return http_1.HttpUtils; } });
12
- var common_1 = require("./common");
13
- Object.defineProperty(exports, "CommonUtils", { enumerable: true, get: function () { return common_1.CommonUtils; } });
14
- var prompt_1 = require("./prompt");
15
- Object.defineProperty(exports, "PromptUtils", { enumerable: true, get: function () { return prompt_1.PromptUtils; } });
16
- var skill_install_1 = require("./skill-install");
17
- Object.defineProperty(exports, "installSkillToAgents", { enumerable: true, get: function () { return skill_install_1.installSkillToAgents; } });
18
- Object.defineProperty(exports, "resolveSkillSourcePath", { enumerable: true, get: function () { return skill_install_1.resolveSkillSourcePath; } });
19
- Object.defineProperty(exports, "getAgentSkillPaths", { enumerable: true, get: function () { return skill_install_1.getAgentSkillPaths; } });
20
- Object.defineProperty(exports, "SKILL_FOLDER_NAME", { enumerable: true, get: function () { return skill_install_1.SKILL_FOLDER_NAME; } });
21
- Object.defineProperty(exports, "AGENT_SKILL_TARGETS", { enumerable: true, get: function () { return skill_install_1.AGENT_SKILL_TARGETS; } });
22
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,qCAAyC;AAAhC,uGAAA,YAAY,OAAA;AACrB,mCAAuC;AAA9B,qGAAA,WAAW,OAAA;AACpB,+BAAmC;AAA1B,iGAAA,SAAS,OAAA;AAClB,mCAAuC;AAA9B,qGAAA,WAAW,OAAA;AACpB,mCAAuC;AAA9B,qGAAA,WAAW,OAAA;AACpB,iDAMyB;AALvB,qHAAA,oBAAoB,OAAA;AACpB,uHAAA,sBAAsB,OAAA;AACtB,mHAAA,kBAAkB,OAAA;AAClB,kHAAA,iBAAiB,OAAA;AACjB,oHAAA,mBAAmB,OAAA"}
@@ -1,56 +0,0 @@
1
- import { LogLevel } from '../types';
2
- /**
3
- * 日志工具类
4
- * 提供统一的日志输出接口,支持不同级别和颜色输出
5
- * 使用 chalk 实现彩色输出,dayjs 格式化时间戳,lodash 进行对象处理
6
- */
7
- declare class Logger {
8
- /** 当前日志输出级别 */
9
- private currentLevel;
10
- /** 日志级别权重映射,用于级别过滤 */
11
- private readonly levelWeights;
12
- /**
13
- * 设置日志输出级别
14
- * @param level 目标日志级别
15
- */
16
- setLevel(level: LogLevel): void;
17
- /**
18
- * 内部日志输出核心方法
19
- * @param level 日志级别
20
- * @param messages 日志消息列表
21
- */
22
- private log;
23
- /**
24
- * 格式化日志消息,处理对象类型的格式化输出
25
- * 使用 lodash 进行对象判断和序列化
26
- * @param messages 消息列表
27
- */
28
- private formatMessages;
29
- /**
30
- * 输出调试级别日志
31
- */
32
- debug(...messages: unknown[]): void;
33
- /**
34
- * 输出信息级别日志
35
- */
36
- info(...messages: unknown[]): void;
37
- /**
38
- * 输出警告级别日志
39
- */
40
- warn(...messages: unknown[]): void;
41
- /**
42
- * 输出错误级别日志
43
- */
44
- error(...messages: unknown[]): void;
45
- /**
46
- * 输出成功信息(绿色高亮)
47
- */
48
- success(...messages: unknown[]): void;
49
- /**
50
- * 输出提示信息(蓝色高亮)
51
- */
52
- tip(...messages: unknown[]): void;
53
- }
54
- /** 导出日志单例实例 */
55
- export declare const logger: Logger;
56
- export {};
@@ -1,161 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.logger = void 0;
40
- const _ = __importStar(require("lodash"));
41
- const dayjs_1 = __importDefault(require("dayjs"));
42
- const chalk_1 = __importDefault(require("chalk"));
43
- const types_1 = require("../types");
44
- /**
45
- * 日志工具类
46
- * 提供统一的日志输出接口,支持不同级别和颜色输出
47
- * 使用 chalk 实现彩色输出,dayjs 格式化时间戳,lodash 进行对象处理
48
- */
49
- class Logger {
50
- /** 当前日志输出级别 */
51
- currentLevel = types_1.LogLevel.INFO;
52
- /** 日志级别权重映射,用于级别过滤 */
53
- levelWeights = {
54
- [types_1.LogLevel.DEBUG]: 0,
55
- [types_1.LogLevel.INFO]: 1,
56
- [types_1.LogLevel.WARN]: 2,
57
- [types_1.LogLevel.ERROR]: 3,
58
- };
59
- /**
60
- * 设置日志输出级别
61
- * @param level 目标日志级别
62
- */
63
- setLevel(level) {
64
- this.currentLevel = level;
65
- }
66
- /**
67
- * 内部日志输出核心方法
68
- * @param level 日志级别
69
- * @param messages 日志消息列表
70
- */
71
- log(level, ...messages) {
72
- // 使用 lodash 判断当前级别是否应该输出
73
- if (this.levelWeights[level] < this.levelWeights[this.currentLevel]) {
74
- return;
75
- }
76
- // 使用 dayjs 格式化时间戳
77
- const timestamp = (0, dayjs_1.default)().format('YYYY-MM-DD HH:mm:ss');
78
- // 级别标识
79
- const levelTag = `[${_.toUpper(level)}]`;
80
- // 根据级别选择不同的颜色输出
81
- let output;
82
- switch (level) {
83
- case types_1.LogLevel.DEBUG:
84
- output = chalk_1.default.gray(`${timestamp} ${chalk_1.default.cyan(levelTag)} ${this.formatMessages(messages)}`);
85
- break;
86
- case types_1.LogLevel.INFO:
87
- output = chalk_1.default.white(`${timestamp} ${chalk_1.default.green(levelTag)} ${this.formatMessages(messages)}`);
88
- break;
89
- case types_1.LogLevel.WARN:
90
- output = chalk_1.default.yellow(`${timestamp} ${chalk_1.default.yellow(levelTag)} ${this.formatMessages(messages)}`);
91
- break;
92
- case types_1.LogLevel.ERROR:
93
- output = chalk_1.default.red(`${timestamp} ${chalk_1.default.red(levelTag)} ${this.formatMessages(messages)}`);
94
- break;
95
- default:
96
- output = `${timestamp} ${levelTag} ${this.formatMessages(messages)}`;
97
- }
98
- // 统一输出到对应流
99
- const stream = level === types_1.LogLevel.ERROR ? process.stderr : process.stdout;
100
- stream.write(output + '\n');
101
- }
102
- /**
103
- * 格式化日志消息,处理对象类型的格式化输出
104
- * 使用 lodash 进行对象判断和序列化
105
- * @param messages 消息列表
106
- */
107
- formatMessages(messages) {
108
- return _.map(messages, (msg) => {
109
- if (_.isObject(msg) || _.isArray(msg)) {
110
- try {
111
- return JSON.stringify(msg, null, 2);
112
- }
113
- catch {
114
- return String(msg);
115
- }
116
- }
117
- return String(msg);
118
- }).join(' ');
119
- }
120
- /**
121
- * 输出调试级别日志
122
- */
123
- debug(...messages) {
124
- this.log(types_1.LogLevel.DEBUG, ...messages);
125
- }
126
- /**
127
- * 输出信息级别日志
128
- */
129
- info(...messages) {
130
- this.log(types_1.LogLevel.INFO, ...messages);
131
- }
132
- /**
133
- * 输出警告级别日志
134
- */
135
- warn(...messages) {
136
- this.log(types_1.LogLevel.WARN, ...messages);
137
- }
138
- /**
139
- * 输出错误级别日志
140
- */
141
- error(...messages) {
142
- this.log(types_1.LogLevel.ERROR, ...messages);
143
- }
144
- /**
145
- * 输出成功信息(绿色高亮)
146
- */
147
- success(...messages) {
148
- const formatted = this.formatMessages(messages);
149
- process.stdout.write(chalk_1.default.green('✓ ') + chalk_1.default.whiteBright(formatted) + '\n');
150
- }
151
- /**
152
- * 输出提示信息(蓝色高亮)
153
- */
154
- tip(...messages) {
155
- const formatted = this.formatMessages(messages);
156
- process.stdout.write(chalk_1.default.blue('ℹ ') + chalk_1.default.whiteBright(formatted) + '\n');
157
- }
158
- }
159
- /** 导出日志单例实例 */
160
- exports.logger = new Logger();
161
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- /**
2
- * 终端交互工具
3
- * 封装 readline,提供问答与序号选择
4
- */
5
- export declare class PromptUtils {
6
- /**
7
- * 向终端提问并读取一行输入
8
- * @param promptText 提示文案
9
- */
10
- static question(promptText: string): Promise<string>;
11
- /**
12
- * 按序号选择列表项(1-based 输入,返回 0-based 下标)
13
- * 输入非法时循环提示,直到得到合法序号
14
- * @param count 选项数量
15
- * @param promptText 提示文案
16
- */
17
- static selectIndex(count: number, promptText?: string): Promise<number>;
18
- }
@@ -1,77 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.PromptUtils = void 0;
37
- const readline = __importStar(require("node:readline/promises"));
38
- const node_process_1 = require("node:process");
39
- const _ = __importStar(require("lodash"));
40
- const logger_1 = require("./logger");
41
- /**
42
- * 终端交互工具
43
- * 封装 readline,提供问答与序号选择
44
- */
45
- class PromptUtils {
46
- /**
47
- * 向终端提问并读取一行输入
48
- * @param promptText 提示文案
49
- */
50
- static async question(promptText) {
51
- const rl = readline.createInterface({ input: node_process_1.stdin, output: node_process_1.stdout });
52
- try {
53
- return await rl.question(promptText);
54
- }
55
- finally {
56
- rl.close();
57
- }
58
- }
59
- /**
60
- * 按序号选择列表项(1-based 输入,返回 0-based 下标)
61
- * 输入非法时循环提示,直到得到合法序号
62
- * @param count 选项数量
63
- * @param promptText 提示文案
64
- */
65
- static async selectIndex(count, promptText = '请输入序号') {
66
- while (true) {
67
- const raw = _.trim(await this.question(`${promptText} (1-${count}): `));
68
- const index = _.toInteger(raw);
69
- if (_.inRange(index, 1, count + 1)) {
70
- return index - 1;
71
- }
72
- logger_1.logger.warn(`无效序号,请输入 1-${count} 之间的数字`);
73
- }
74
- }
75
- }
76
- exports.PromptUtils = PromptUtils;
77
- //# sourceMappingURL=prompt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AACnD,+CAA6C;AAC7C,0CAA4B;AAC5B,qCAAkC;AAElC;;;GAGG;AACH,MAAa,WAAW;IACtB;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAkB;QAC7C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,oBAAK,EAAE,MAAM,EAAE,qBAAM,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,KAAK,CAAC,WAAW,CAC7B,KAAa,EACb,aAAqB,OAAO;QAE5B,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,UAAU,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC;YACxE,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnC,OAAO,KAAK,GAAG,CAAC,CAAC;YACnB,CAAC;YACD,eAAM,CAAC,IAAI,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;CACF;AAjCD,kCAiCC"}
@@ -1,74 +0,0 @@
1
- /**
2
- * 写入各 Agent 技能目录时使用的文件夹名,需与 SKILL.md frontmatter 的 name 一致
3
- */
4
- export declare const SKILL_FOLDER_NAME = "sino-bc-cli";
5
- /**
6
- * 用户级技能扫描目录(相对 os.homedir())
7
- * 飞书豆包工作会聚合 ~/.agents/skills 与 ~/.codex/skills
8
- */
9
- export declare const AGENT_SKILL_TARGETS: readonly [{
10
- readonly id: "agents";
11
- readonly segments: readonly [".agents", "skills"];
12
- readonly label: "通用 / 飞书豆包工作";
13
- }, {
14
- readonly id: "codex";
15
- readonly segments: readonly [".codex", "skills"];
16
- readonly label: "Codex";
17
- }, {
18
- readonly id: "cursor";
19
- readonly segments: readonly [".cursor", "skills"];
20
- readonly label: "Cursor";
21
- }, {
22
- readonly id: "claude";
23
- readonly segments: readonly [".claude", "skills"];
24
- readonly label: "Claude Code";
25
- }];
26
- /** 单个目标目录的写入结果 */
27
- export type SkillWriteAction = 'created' | 'updated' | 'unchanged';
28
- export interface ISkillWriteItem {
29
- /** 完整 SKILL.md 路径 */
30
- path: string;
31
- /** Agent 说明 */
32
- label: string;
33
- /** 写入动作 */
34
- action: SkillWriteAction;
35
- }
36
- export interface ISkillWriteFailure {
37
- path: string;
38
- label: string;
39
- error: string;
40
- }
41
- export interface ISkillInstallResult {
42
- /** 作为源的 SKILL.md 绝对路径 */
43
- source: string;
44
- /** 用户主目录 */
45
- home: string;
46
- written: ISkillWriteItem[];
47
- failed: ISkillWriteFailure[];
48
- }
49
- export interface ISkillInstallOptions {
50
- /** SKILL.md 源路径;缺省时从编译产物 / 仓库根解析 */
51
- source?: string;
52
- /** 解析 SKILL.md 时的起点目录,默认为本模块所在目录 */
53
- fromDir?: string;
54
- /** 目标主目录,默认 os.homedir(),便于测试注入 */
55
- home?: string;
56
- }
57
- /**
58
- * 从 CLI 产物或源码目录解析 SKILL.md
59
- * 构建后位于 dist/SKILL.md;ts-node 开发时位于仓库根目录
60
- */
61
- export declare function resolveSkillSourcePath(fromDir?: string): string | undefined;
62
- /**
63
- * 计算各 Agent 的技能安装路径(跨 Windows / macOS / Linux)
64
- */
65
- export declare function getAgentSkillPaths(home?: string): Array<{
66
- dir: string;
67
- file: string;
68
- label: string;
69
- }>;
70
- /**
71
- * 将 SKILL.md 复制到各 Agent 会扫描的用户级技能目录
72
- * 使用复制而非符号链接,避免 Windows 未提权时 symlink 失败
73
- */
74
- export declare function installSkillToAgents(options?: ISkillInstallOptions): ISkillInstallResult;