@ai-pack-cli/shared 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.d.ts +10 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +44 -0
- package/dist/constants.js.map +1 -0
- package/dist/detect.d.ts +14 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/detect.js +121 -0
- package/dist/detect.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +65 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +157 -0
- package/dist/logger.js.map +1 -0
- package/dist/npmrc.d.ts +16 -0
- package/dist/npmrc.d.ts.map +1 -0
- package/dist/npmrc.js +68 -0
- package/dist/npmrc.js.map +1 -0
- package/dist/project-config.d.ts +75 -0
- package/dist/project-config.d.ts.map +1 -0
- package/dist/project-config.js +212 -0
- package/dist/project-config.js.map +1 -0
- package/dist/registry.d.ts +102 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +186 -0
- package/dist/registry.js.map +1 -0
- package/dist/types.d.ts +46 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +28 -0
- package/dist/types.js.map +1 -0
- package/package.json +22 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { AiPackRole, InstallableIdeType } from "./types";
|
|
2
|
+
export interface ProjectEntry {
|
|
3
|
+
/** 项目根目录绝对路径 */
|
|
4
|
+
path: string;
|
|
5
|
+
/** 安装的角色 */
|
|
6
|
+
role: AiPackRole;
|
|
7
|
+
/** 安装的 IDE 目录列表 */
|
|
8
|
+
installedIdes: InstallableIdeType[];
|
|
9
|
+
/** 首次安装时间 */
|
|
10
|
+
installedAt: string;
|
|
11
|
+
/** 最后更新时间 */
|
|
12
|
+
updatedAt: string;
|
|
13
|
+
/** 安装的 ai-pack 版本 */
|
|
14
|
+
version?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ScheduledTaskStatus {
|
|
17
|
+
/** 任务名称 */
|
|
18
|
+
name: string;
|
|
19
|
+
/** 是否创建成功 */
|
|
20
|
+
created: boolean;
|
|
21
|
+
/** 创建时间 */
|
|
22
|
+
createdAt?: string;
|
|
23
|
+
/** 最后执行时间 */
|
|
24
|
+
lastExecutedAt?: string;
|
|
25
|
+
/** 最后执行状态: success, error, unknown */
|
|
26
|
+
lastExecutionStatus?: "success" | "error" | "unknown";
|
|
27
|
+
/** 最后执行错误信息 */
|
|
28
|
+
lastExecutionError?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface AiPackConfig {
|
|
31
|
+
/** 配置文件版本 */
|
|
32
|
+
configVersion: number;
|
|
33
|
+
/** 已安装的项目列表 */
|
|
34
|
+
projects: Record<string, ProjectEntry>;
|
|
35
|
+
/** Windows 任务计划程序状态 */
|
|
36
|
+
scheduledTasks?: {
|
|
37
|
+
/** 任务列表 */
|
|
38
|
+
tasks: ScheduledTaskStatus[];
|
|
39
|
+
/** 最后检查时间 */
|
|
40
|
+
lastCheckedAt?: string;
|
|
41
|
+
/** 最后更新时间 */
|
|
42
|
+
lastUpdatedAt?: string;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** 读取项目配置文件 */
|
|
46
|
+
export declare function readProjectConfig(): AiPackConfig;
|
|
47
|
+
/** 写入配置文件 */
|
|
48
|
+
export declare function writeProjectConfig(config: AiPackConfig): void;
|
|
49
|
+
/** 添加或更新项目记录 */
|
|
50
|
+
export declare function recordProject(projectPath: string, role: AiPackRole, installedIdes: InstallableIdeType[], version?: string): void;
|
|
51
|
+
/** 删除项目记录 */
|
|
52
|
+
export declare function removeProject(projectPath: string): boolean;
|
|
53
|
+
/** 获取所有已记录的项目 */
|
|
54
|
+
export declare function getAllProjects(): ProjectEntry[];
|
|
55
|
+
/** 获取指定项目的记录 */
|
|
56
|
+
export declare function getProject(projectPath: string): ProjectEntry | undefined;
|
|
57
|
+
/** 检查项目是否已记录 */
|
|
58
|
+
export declare function hasProject(projectPath: string): boolean;
|
|
59
|
+
/** 更新任务创建状态 */
|
|
60
|
+
export declare function updateTaskCreationStatus(taskName: string, created: boolean): void;
|
|
61
|
+
/** 更新任务执行状态 */
|
|
62
|
+
export declare function updateTaskExecutionStatus(taskName: string, status: "success" | "error" | "unknown", error?: string): void;
|
|
63
|
+
/** 获取任务状态列表 */
|
|
64
|
+
export declare function getScheduledTasksStatus(): ScheduledTaskStatus[];
|
|
65
|
+
/** 获取指定任务状态 */
|
|
66
|
+
export declare function getScheduledTaskStatus(taskName: string): ScheduledTaskStatus | undefined;
|
|
67
|
+
/** 检查任务是否需要重新创建 */
|
|
68
|
+
export declare function checkTasksHealth(): {
|
|
69
|
+
healthy: boolean;
|
|
70
|
+
issues: string[];
|
|
71
|
+
createdCount: number;
|
|
72
|
+
};
|
|
73
|
+
/** 重置任务状态(删除所有任务记录) */
|
|
74
|
+
export declare function resetScheduledTasksStatus(): void;
|
|
75
|
+
//# sourceMappingURL=project-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,mBAAmB;IACnB,aAAa,EAAE,kBAAkB,EAAE,CAAC;IACpC,aAAa;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,aAAa;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,mBAAmB,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACtD,eAAe;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,uBAAuB;IACvB,cAAc,CAAC,EAAE;QACf,WAAW;QACX,KAAK,EAAE,mBAAmB,EAAE,CAAC;QAC7B,aAAa;QACb,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,aAAa;QACb,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAoBD,eAAe;AACf,wBAAgB,iBAAiB,IAAI,YAAY,CAkBhD;AAED,aAAa;AACb,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAM7D;AAED,gBAAgB;AAChB,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,EAChB,aAAa,EAAE,kBAAkB,EAAE,EACnC,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CAgBN;AAED,aAAa;AACb,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAW1D;AAED,iBAAiB;AACjB,wBAAgB,cAAc,IAAI,YAAY,EAAE,CAG/C;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAIxE;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAIvD;AAID,eAAe;AACf,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CA4BjF;AAED,eAAe;AACf,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,EACvC,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,CA0BN;AAED,eAAe;AACf,wBAAgB,uBAAuB,IAAI,mBAAmB,EAAE,CAG/D;AAED,eAAe;AACf,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAGxF;AAED,mBAAmB;AACnB,wBAAgB,gBAAgB,IAAI;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CA+BA;AAED,uBAAuB;AACvB,wBAAgB,yBAAyB,IAAI,IAAI,CAIhD"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.readProjectConfig = readProjectConfig;
|
|
7
|
+
exports.writeProjectConfig = writeProjectConfig;
|
|
8
|
+
exports.recordProject = recordProject;
|
|
9
|
+
exports.removeProject = removeProject;
|
|
10
|
+
exports.getAllProjects = getAllProjects;
|
|
11
|
+
exports.getProject = getProject;
|
|
12
|
+
exports.hasProject = hasProject;
|
|
13
|
+
exports.updateTaskCreationStatus = updateTaskCreationStatus;
|
|
14
|
+
exports.updateTaskExecutionStatus = updateTaskExecutionStatus;
|
|
15
|
+
exports.getScheduledTasksStatus = getScheduledTasksStatus;
|
|
16
|
+
exports.getScheduledTaskStatus = getScheduledTaskStatus;
|
|
17
|
+
exports.checkTasksHealth = checkTasksHealth;
|
|
18
|
+
exports.resetScheduledTasksStatus = resetScheduledTasksStatus;
|
|
19
|
+
const fs_1 = __importDefault(require("fs"));
|
|
20
|
+
const path_1 = __importDefault(require("path"));
|
|
21
|
+
const os_1 = __importDefault(require("os"));
|
|
22
|
+
const CONFIG_DIR_NAME = ".config";
|
|
23
|
+
const PROJECT_CONFIG_FILE = "project.json";
|
|
24
|
+
const AI_PACK_CONFIG_FILE = "ai-pack.json";
|
|
25
|
+
const AI_PACK_DIR_NAME = "ai-pack";
|
|
26
|
+
const CURRENT_CONFIG_VERSION = 1;
|
|
27
|
+
function getConfigDir() {
|
|
28
|
+
return path_1.default.join(os_1.default.homedir(), CONFIG_DIR_NAME, AI_PACK_DIR_NAME);
|
|
29
|
+
}
|
|
30
|
+
function getProjectConfigFilePath() {
|
|
31
|
+
return path_1.default.join(getConfigDir(), PROJECT_CONFIG_FILE);
|
|
32
|
+
}
|
|
33
|
+
function getAiPackConfigFilePath() {
|
|
34
|
+
return path_1.default.join(getConfigDir(), AI_PACK_CONFIG_FILE);
|
|
35
|
+
}
|
|
36
|
+
/** 读取项目配置文件 */
|
|
37
|
+
function readProjectConfig() {
|
|
38
|
+
var _a, _b;
|
|
39
|
+
const configPath = getAiPackConfigFilePath();
|
|
40
|
+
try {
|
|
41
|
+
if (fs_1.default.existsSync(configPath)) {
|
|
42
|
+
const raw = JSON.parse(fs_1.default.readFileSync(configPath, "utf-8"));
|
|
43
|
+
return {
|
|
44
|
+
configVersion: (_a = raw.configVersion) !== null && _a !== void 0 ? _a : CURRENT_CONFIG_VERSION,
|
|
45
|
+
projects: (_b = raw.projects) !== null && _b !== void 0 ? _b : {},
|
|
46
|
+
scheduledTasks: raw.scheduledTasks,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch (_c) {
|
|
51
|
+
// 忽略解析错误,返回默认配置
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
configVersion: CURRENT_CONFIG_VERSION,
|
|
55
|
+
projects: {},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/** 写入配置文件 */
|
|
59
|
+
function writeProjectConfig(config) {
|
|
60
|
+
const configDir = getConfigDir();
|
|
61
|
+
const configPath = getAiPackConfigFilePath();
|
|
62
|
+
fs_1.default.mkdirSync(configDir, { recursive: true });
|
|
63
|
+
fs_1.default.writeFileSync(configPath, JSON.stringify(config, null, 2), "utf-8");
|
|
64
|
+
}
|
|
65
|
+
/** 添加或更新项目记录 */
|
|
66
|
+
function recordProject(projectPath, role, installedIdes, version) {
|
|
67
|
+
var _a;
|
|
68
|
+
const config = readProjectConfig();
|
|
69
|
+
const normalizedPath = path_1.default.resolve(projectPath);
|
|
70
|
+
const now = new Date().toISOString();
|
|
71
|
+
const existing = config.projects[normalizedPath];
|
|
72
|
+
config.projects[normalizedPath] = {
|
|
73
|
+
path: normalizedPath,
|
|
74
|
+
role,
|
|
75
|
+
installedIdes,
|
|
76
|
+
installedAt: (_a = existing === null || existing === void 0 ? void 0 : existing.installedAt) !== null && _a !== void 0 ? _a : now,
|
|
77
|
+
updatedAt: now,
|
|
78
|
+
version,
|
|
79
|
+
};
|
|
80
|
+
writeProjectConfig(config);
|
|
81
|
+
}
|
|
82
|
+
/** 删除项目记录 */
|
|
83
|
+
function removeProject(projectPath) {
|
|
84
|
+
const config = readProjectConfig();
|
|
85
|
+
const normalizedPath = path_1.default.resolve(projectPath);
|
|
86
|
+
if (!(normalizedPath in config.projects)) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
delete config.projects[normalizedPath];
|
|
90
|
+
writeProjectConfig(config);
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
/** 获取所有已记录的项目 */
|
|
94
|
+
function getAllProjects() {
|
|
95
|
+
const config = readProjectConfig();
|
|
96
|
+
return Object.values(config.projects);
|
|
97
|
+
}
|
|
98
|
+
/** 获取指定项目的记录 */
|
|
99
|
+
function getProject(projectPath) {
|
|
100
|
+
const config = readProjectConfig();
|
|
101
|
+
const normalizedPath = path_1.default.resolve(projectPath);
|
|
102
|
+
return config.projects[normalizedPath];
|
|
103
|
+
}
|
|
104
|
+
/** 检查项目是否已记录 */
|
|
105
|
+
function hasProject(projectPath) {
|
|
106
|
+
const config = readProjectConfig();
|
|
107
|
+
const normalizedPath = path_1.default.resolve(projectPath);
|
|
108
|
+
return normalizedPath in config.projects;
|
|
109
|
+
}
|
|
110
|
+
// ============ Windows 任务计划程序状态管理 ============
|
|
111
|
+
/** 更新任务创建状态 */
|
|
112
|
+
function updateTaskCreationStatus(taskName, created) {
|
|
113
|
+
const config = readProjectConfig();
|
|
114
|
+
const now = new Date().toISOString();
|
|
115
|
+
if (!config.scheduledTasks) {
|
|
116
|
+
config.scheduledTasks = { tasks: [] };
|
|
117
|
+
}
|
|
118
|
+
const existingIndex = config.scheduledTasks.tasks.findIndex((t) => t.name === taskName);
|
|
119
|
+
const taskStatus = {
|
|
120
|
+
name: taskName,
|
|
121
|
+
created,
|
|
122
|
+
createdAt: now,
|
|
123
|
+
};
|
|
124
|
+
if (existingIndex >= 0) {
|
|
125
|
+
// 保留已有的执行状态
|
|
126
|
+
const existing = config.scheduledTasks.tasks[existingIndex];
|
|
127
|
+
taskStatus.lastExecutedAt = existing.lastExecutedAt;
|
|
128
|
+
taskStatus.lastExecutionStatus = existing.lastExecutionStatus;
|
|
129
|
+
taskStatus.lastExecutionError = existing.lastExecutionError;
|
|
130
|
+
config.scheduledTasks.tasks[existingIndex] = taskStatus;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
config.scheduledTasks.tasks.push(taskStatus);
|
|
134
|
+
}
|
|
135
|
+
config.scheduledTasks.lastUpdatedAt = now;
|
|
136
|
+
writeProjectConfig(config);
|
|
137
|
+
}
|
|
138
|
+
/** 更新任务执行状态 */
|
|
139
|
+
function updateTaskExecutionStatus(taskName, status, error) {
|
|
140
|
+
const config = readProjectConfig();
|
|
141
|
+
const now = new Date().toISOString();
|
|
142
|
+
if (!config.scheduledTasks) {
|
|
143
|
+
config.scheduledTasks = { tasks: [] };
|
|
144
|
+
}
|
|
145
|
+
const existingIndex = config.scheduledTasks.tasks.findIndex((t) => t.name === taskName);
|
|
146
|
+
if (existingIndex >= 0) {
|
|
147
|
+
config.scheduledTasks.tasks[existingIndex].lastExecutedAt = now;
|
|
148
|
+
config.scheduledTasks.tasks[existingIndex].lastExecutionStatus = status;
|
|
149
|
+
config.scheduledTasks.tasks[existingIndex].lastExecutionError = error;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
// 任务不存在,创建新记录
|
|
153
|
+
config.scheduledTasks.tasks.push({
|
|
154
|
+
name: taskName,
|
|
155
|
+
created: false,
|
|
156
|
+
lastExecutedAt: now,
|
|
157
|
+
lastExecutionStatus: status,
|
|
158
|
+
lastExecutionError: error,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
config.scheduledTasks.lastUpdatedAt = now;
|
|
162
|
+
writeProjectConfig(config);
|
|
163
|
+
}
|
|
164
|
+
/** 获取任务状态列表 */
|
|
165
|
+
function getScheduledTasksStatus() {
|
|
166
|
+
var _a, _b;
|
|
167
|
+
const config = readProjectConfig();
|
|
168
|
+
return (_b = (_a = config.scheduledTasks) === null || _a === void 0 ? void 0 : _a.tasks) !== null && _b !== void 0 ? _b : [];
|
|
169
|
+
}
|
|
170
|
+
/** 获取指定任务状态 */
|
|
171
|
+
function getScheduledTaskStatus(taskName) {
|
|
172
|
+
var _a;
|
|
173
|
+
const config = readProjectConfig();
|
|
174
|
+
return (_a = config.scheduledTasks) === null || _a === void 0 ? void 0 : _a.tasks.find((t) => t.name === taskName);
|
|
175
|
+
}
|
|
176
|
+
/** 检查任务是否需要重新创建 */
|
|
177
|
+
function checkTasksHealth() {
|
|
178
|
+
var _a, _b, _c;
|
|
179
|
+
const config = readProjectConfig();
|
|
180
|
+
const tasks = (_b = (_a = config.scheduledTasks) === null || _a === void 0 ? void 0 : _a.tasks) !== null && _b !== void 0 ? _b : [];
|
|
181
|
+
const issues = [];
|
|
182
|
+
// 检查任务数量
|
|
183
|
+
const createdTasks = tasks.filter((t) => t.created);
|
|
184
|
+
if (createdTasks.length < 2) {
|
|
185
|
+
issues.push(`创建的任务数量不足: ${createdTasks.length}/2`);
|
|
186
|
+
}
|
|
187
|
+
// 检查每个任务的状态
|
|
188
|
+
for (const task of tasks) {
|
|
189
|
+
if (!task.created) {
|
|
190
|
+
issues.push(`任务 "${task.name}" 未创建`);
|
|
191
|
+
}
|
|
192
|
+
if (task.lastExecutionStatus === "error") {
|
|
193
|
+
issues.push(`任务 "${task.name}" 最后执行失败: ${(_c = task.lastExecutionError) !== null && _c !== void 0 ? _c : "未知错误"}`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
// 检查任务状态是否存在
|
|
197
|
+
if (tasks.length === 0) {
|
|
198
|
+
issues.push("任务状态记录不存在");
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
healthy: issues.length === 0,
|
|
202
|
+
issues,
|
|
203
|
+
createdCount: createdTasks.length,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
/** 重置任务状态(删除所有任务记录) */
|
|
207
|
+
function resetScheduledTasksStatus() {
|
|
208
|
+
const config = readProjectConfig();
|
|
209
|
+
config.scheduledTasks = { tasks: [] };
|
|
210
|
+
writeProjectConfig(config);
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=project-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-config.js","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import type { AiPackRole, InstallableIdeType } from "./types";
|
|
2
|
+
export interface ProjectRecord {
|
|
3
|
+
path: string;
|
|
4
|
+
role: AiPackRole;
|
|
5
|
+
installedIdes: InstallableIdeType[];
|
|
6
|
+
lastInstalledAt: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ProjectRegistryFile {
|
|
9
|
+
version: 1;
|
|
10
|
+
updatedAt: string;
|
|
11
|
+
projects: ProjectRecord[];
|
|
12
|
+
}
|
|
13
|
+
export interface ProjectRuntimeStatus {
|
|
14
|
+
status: "idle" | "running" | "success" | "failed";
|
|
15
|
+
updatedAt: string;
|
|
16
|
+
trigger: "manual" | "silent-update";
|
|
17
|
+
error?: string;
|
|
18
|
+
durationMs?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface ProjectStatusEntry {
|
|
21
|
+
path: string;
|
|
22
|
+
role: AiPackRole;
|
|
23
|
+
installedIdes: InstallableIdeType[];
|
|
24
|
+
install?: ProjectRuntimeStatus;
|
|
25
|
+
silentUpdate?: ProjectRuntimeStatus;
|
|
26
|
+
}
|
|
27
|
+
export interface ProjectStatusFile {
|
|
28
|
+
version: 1;
|
|
29
|
+
updatedAt: string;
|
|
30
|
+
totalProjects: number;
|
|
31
|
+
silentInstalledProjects: number;
|
|
32
|
+
projects: ProjectStatusEntry[];
|
|
33
|
+
}
|
|
34
|
+
export interface TaskSchedulerStatus {
|
|
35
|
+
envFlagName: string;
|
|
36
|
+
ready: boolean;
|
|
37
|
+
startupTaskName: string;
|
|
38
|
+
dailyTaskName: string;
|
|
39
|
+
updatedAt: string;
|
|
40
|
+
error?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface LaunchAgentStatus {
|
|
43
|
+
label: string;
|
|
44
|
+
plistPath: string;
|
|
45
|
+
ready: boolean;
|
|
46
|
+
updatedAt: string;
|
|
47
|
+
error?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface SilentUpdateRunStatus {
|
|
50
|
+
version: 1;
|
|
51
|
+
updatedAt: string;
|
|
52
|
+
status: "idle" | "running" | "success" | "partial" | "failed";
|
|
53
|
+
totalProjects: number;
|
|
54
|
+
successProjects: number;
|
|
55
|
+
failedProjects: number;
|
|
56
|
+
lastRunStartedAt?: string;
|
|
57
|
+
lastRunFinishedAt?: string;
|
|
58
|
+
taskScheduler?: TaskSchedulerStatus;
|
|
59
|
+
launchAgent?: LaunchAgentStatus;
|
|
60
|
+
}
|
|
61
|
+
export interface SilentUpdateLogEntry {
|
|
62
|
+
timestamp: string;
|
|
63
|
+
level: "info" | "warn" | "error" | "success";
|
|
64
|
+
message: string;
|
|
65
|
+
type: "install" | "silent-update" | "task-scheduler" | "launch-agent";
|
|
66
|
+
projectPath?: string;
|
|
67
|
+
result?: {
|
|
68
|
+
total?: number;
|
|
69
|
+
success?: number;
|
|
70
|
+
failed?: number;
|
|
71
|
+
};
|
|
72
|
+
projects?: Array<{
|
|
73
|
+
path: string;
|
|
74
|
+
status: "success" | "error";
|
|
75
|
+
error?: string;
|
|
76
|
+
duration?: number;
|
|
77
|
+
}>;
|
|
78
|
+
}
|
|
79
|
+
interface ProjectInstallRecordInput {
|
|
80
|
+
targetDir: string;
|
|
81
|
+
role: AiPackRole;
|
|
82
|
+
installedIdes: InstallableIdeType[];
|
|
83
|
+
trigger: "manual" | "silent-update";
|
|
84
|
+
status: "running" | "success" | "failed";
|
|
85
|
+
error?: string;
|
|
86
|
+
durationMs?: number;
|
|
87
|
+
}
|
|
88
|
+
export declare function getProjectRegistryPath(): string;
|
|
89
|
+
export declare function getProjectStatusPath(): string;
|
|
90
|
+
export declare function getSilentUpdateStatusPath(): string;
|
|
91
|
+
export declare function getInstallLogPath(): string;
|
|
92
|
+
export declare function getSilentUpdateLogPath(): string;
|
|
93
|
+
export declare function getAllProjects(): ProjectRecord[];
|
|
94
|
+
export declare function readSilentUpdateStatus(): SilentUpdateRunStatus;
|
|
95
|
+
export declare function writeSilentUpdateStatus(patch: Partial<SilentUpdateRunStatus>): SilentUpdateRunStatus;
|
|
96
|
+
export declare function updateTaskSchedulerStatus(taskScheduler: TaskSchedulerStatus): SilentUpdateRunStatus;
|
|
97
|
+
export declare function updateLaunchAgentStatus(launchAgent: LaunchAgentStatus): SilentUpdateRunStatus;
|
|
98
|
+
export declare function recordProjectInstallState(input: ProjectInstallRecordInput): void;
|
|
99
|
+
export declare function logInstall(entry: SilentUpdateLogEntry): void;
|
|
100
|
+
export declare function logSilentUpdate(entry: SilentUpdateLogEntry): void;
|
|
101
|
+
export {};
|
|
102
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.js
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getProjectRegistryPath = getProjectRegistryPath;
|
|
7
|
+
exports.getProjectStatusPath = getProjectStatusPath;
|
|
8
|
+
exports.getSilentUpdateStatusPath = getSilentUpdateStatusPath;
|
|
9
|
+
exports.getInstallLogPath = getInstallLogPath;
|
|
10
|
+
exports.getSilentUpdateLogPath = getSilentUpdateLogPath;
|
|
11
|
+
exports.getAllProjects = getAllProjects;
|
|
12
|
+
exports.readSilentUpdateStatus = readSilentUpdateStatus;
|
|
13
|
+
exports.writeSilentUpdateStatus = writeSilentUpdateStatus;
|
|
14
|
+
exports.updateTaskSchedulerStatus = updateTaskSchedulerStatus;
|
|
15
|
+
exports.updateLaunchAgentStatus = updateLaunchAgentStatus;
|
|
16
|
+
exports.recordProjectInstallState = recordProjectInstallState;
|
|
17
|
+
exports.logInstall = logInstall;
|
|
18
|
+
exports.logSilentUpdate = logSilentUpdate;
|
|
19
|
+
const fs_1 = __importDefault(require("fs"));
|
|
20
|
+
const path_1 = __importDefault(require("path"));
|
|
21
|
+
const npmrc_1 = require("./npmrc");
|
|
22
|
+
const PROJECT_REGISTRY_FILE = "project.json";
|
|
23
|
+
const PROJECT_STATUS_FILE = "project-status.json";
|
|
24
|
+
const SILENT_UPDATE_STATUS_FILE = "silent-update-status.json";
|
|
25
|
+
const INSTALL_LOG_FILE = "install.log";
|
|
26
|
+
const SILENT_UPDATE_LOG_FILE = "silent-update.log";
|
|
27
|
+
const LOGS_DIR = "logs";
|
|
28
|
+
function ensureConfigDir() {
|
|
29
|
+
const dir = (0, npmrc_1.getUserAiPackConfigDir)();
|
|
30
|
+
fs_1.default.mkdirSync(dir, { recursive: true });
|
|
31
|
+
return dir;
|
|
32
|
+
}
|
|
33
|
+
function readJsonFile(filePath, fallback) {
|
|
34
|
+
try {
|
|
35
|
+
if (!fs_1.default.existsSync(filePath)) {
|
|
36
|
+
return fallback;
|
|
37
|
+
}
|
|
38
|
+
return JSON.parse(fs_1.default.readFileSync(filePath, "utf-8"));
|
|
39
|
+
}
|
|
40
|
+
catch (_a) {
|
|
41
|
+
return fallback;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function writeJsonFile(filePath, value) {
|
|
45
|
+
ensureConfigDir();
|
|
46
|
+
fs_1.default.writeFileSync(filePath, `${JSON.stringify(value, null, 2)}\n`, "utf-8");
|
|
47
|
+
}
|
|
48
|
+
function normalizeIdes(installedIdes) {
|
|
49
|
+
return [...new Set(installedIdes)].sort();
|
|
50
|
+
}
|
|
51
|
+
function getProjectRegistryPath() {
|
|
52
|
+
return path_1.default.join(ensureConfigDir(), PROJECT_REGISTRY_FILE);
|
|
53
|
+
}
|
|
54
|
+
function getProjectStatusPath() {
|
|
55
|
+
return path_1.default.join(ensureConfigDir(), PROJECT_STATUS_FILE);
|
|
56
|
+
}
|
|
57
|
+
function getSilentUpdateStatusPath() {
|
|
58
|
+
return path_1.default.join(ensureConfigDir(), SILENT_UPDATE_STATUS_FILE);
|
|
59
|
+
}
|
|
60
|
+
function getInstallLogPath() {
|
|
61
|
+
return path_1.default.join(getMonthlyLogDir(), INSTALL_LOG_FILE);
|
|
62
|
+
}
|
|
63
|
+
function getSilentUpdateLogPath() {
|
|
64
|
+
return path_1.default.join(getMonthlyLogDir(), SILENT_UPDATE_LOG_FILE);
|
|
65
|
+
}
|
|
66
|
+
function getAllProjects() {
|
|
67
|
+
return readJsonFile(getProjectRegistryPath(), {
|
|
68
|
+
version: 1,
|
|
69
|
+
updatedAt: "",
|
|
70
|
+
projects: [],
|
|
71
|
+
}).projects;
|
|
72
|
+
}
|
|
73
|
+
function readSilentUpdateStatus() {
|
|
74
|
+
return readJsonFile(getSilentUpdateStatusPath(), {
|
|
75
|
+
version: 1,
|
|
76
|
+
updatedAt: "",
|
|
77
|
+
status: "idle",
|
|
78
|
+
totalProjects: 0,
|
|
79
|
+
successProjects: 0,
|
|
80
|
+
failedProjects: 0,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
function writeSilentUpdateStatus(patch) {
|
|
84
|
+
const current = readSilentUpdateStatus();
|
|
85
|
+
const next = Object.assign(Object.assign(Object.assign({}, current), patch), { version: 1, updatedAt: new Date().toISOString() });
|
|
86
|
+
writeJsonFile(getSilentUpdateStatusPath(), next);
|
|
87
|
+
return next;
|
|
88
|
+
}
|
|
89
|
+
function updateTaskSchedulerStatus(taskScheduler) {
|
|
90
|
+
return writeSilentUpdateStatus({ taskScheduler });
|
|
91
|
+
}
|
|
92
|
+
function updateLaunchAgentStatus(launchAgent) {
|
|
93
|
+
return writeSilentUpdateStatus({ launchAgent });
|
|
94
|
+
}
|
|
95
|
+
function recordProjectInstallState(input) {
|
|
96
|
+
const now = new Date().toISOString();
|
|
97
|
+
const normalizedPath = path_1.default.resolve(input.targetDir);
|
|
98
|
+
const installedIdes = normalizeIdes(input.installedIdes);
|
|
99
|
+
const registry = readJsonFile(getProjectRegistryPath(), {
|
|
100
|
+
version: 1,
|
|
101
|
+
updatedAt: "",
|
|
102
|
+
projects: [],
|
|
103
|
+
});
|
|
104
|
+
const projectIndex = registry.projects.findIndex((item) => path_1.default.resolve(item.path) === normalizedPath);
|
|
105
|
+
if (input.status === "success") {
|
|
106
|
+
const record = {
|
|
107
|
+
path: normalizedPath,
|
|
108
|
+
role: input.role,
|
|
109
|
+
installedIdes,
|
|
110
|
+
lastInstalledAt: now,
|
|
111
|
+
};
|
|
112
|
+
if (projectIndex >= 0) {
|
|
113
|
+
registry.projects[projectIndex] = record;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
registry.projects.push(record);
|
|
117
|
+
}
|
|
118
|
+
registry.updatedAt = now;
|
|
119
|
+
registry.projects.sort((a, b) => a.path.localeCompare(b.path));
|
|
120
|
+
writeJsonFile(getProjectRegistryPath(), registry);
|
|
121
|
+
}
|
|
122
|
+
const projectStatus = readJsonFile(getProjectStatusPath(), {
|
|
123
|
+
version: 1,
|
|
124
|
+
updatedAt: "",
|
|
125
|
+
totalProjects: 0,
|
|
126
|
+
silentInstalledProjects: 0,
|
|
127
|
+
projects: [],
|
|
128
|
+
});
|
|
129
|
+
const statusIndex = projectStatus.projects.findIndex((item) => path_1.default.resolve(item.path) === normalizedPath);
|
|
130
|
+
const currentEntry = statusIndex >= 0
|
|
131
|
+
? projectStatus.projects[statusIndex]
|
|
132
|
+
: {
|
|
133
|
+
path: normalizedPath,
|
|
134
|
+
role: input.role,
|
|
135
|
+
installedIdes,
|
|
136
|
+
};
|
|
137
|
+
currentEntry.role = input.role;
|
|
138
|
+
currentEntry.installedIdes = installedIdes;
|
|
139
|
+
const runtime = {
|
|
140
|
+
status: input.status,
|
|
141
|
+
updatedAt: now,
|
|
142
|
+
trigger: input.trigger,
|
|
143
|
+
};
|
|
144
|
+
if (input.error) {
|
|
145
|
+
runtime.error = input.error;
|
|
146
|
+
}
|
|
147
|
+
if (typeof input.durationMs === "number") {
|
|
148
|
+
runtime.durationMs = input.durationMs;
|
|
149
|
+
}
|
|
150
|
+
if (input.trigger === "silent-update") {
|
|
151
|
+
currentEntry.silentUpdate = runtime;
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
currentEntry.install = runtime;
|
|
155
|
+
}
|
|
156
|
+
if (statusIndex >= 0) {
|
|
157
|
+
projectStatus.projects[statusIndex] = currentEntry;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
projectStatus.projects.push(currentEntry);
|
|
161
|
+
}
|
|
162
|
+
projectStatus.updatedAt = now;
|
|
163
|
+
projectStatus.totalProjects = registry.projects.length;
|
|
164
|
+
projectStatus.silentInstalledProjects = projectStatus.projects.filter((item) => item.silentUpdate).length;
|
|
165
|
+
projectStatus.projects.sort((a, b) => a.path.localeCompare(b.path));
|
|
166
|
+
writeJsonFile(getProjectStatusPath(), projectStatus);
|
|
167
|
+
}
|
|
168
|
+
function logInstall(entry) {
|
|
169
|
+
appendLog(getInstallLogPath(), entry);
|
|
170
|
+
}
|
|
171
|
+
function logSilentUpdate(entry) {
|
|
172
|
+
appendLog(getSilentUpdateLogPath(), entry);
|
|
173
|
+
}
|
|
174
|
+
function appendLog(filePath, entry) {
|
|
175
|
+
fs_1.default.mkdirSync(path_1.default.dirname(filePath), { recursive: true });
|
|
176
|
+
fs_1.default.appendFileSync(filePath, `${JSON.stringify(entry)}\n`, "utf-8");
|
|
177
|
+
}
|
|
178
|
+
function getMonthlyLogDir(date = new Date()) {
|
|
179
|
+
return path_1.default.join(ensureConfigDir(), LOGS_DIR, formatLogMonth(date));
|
|
180
|
+
}
|
|
181
|
+
function formatLogMonth(date) {
|
|
182
|
+
const year = date.getFullYear();
|
|
183
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
184
|
+
return `${year}-${month}`;
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** AI Pack 安装角色 */
|
|
2
|
+
export type AiPackRole = "backend" | "frontend" | "testing";
|
|
3
|
+
/** 支持的 IDE 类型,与 ai-pack manifest.ideType 对齐 */
|
|
4
|
+
export type IdeType = "cursor" | "claude" | "codex" | "opencode" | "qoder" | "trae" | "windsurf" | "vscode" | "jetbrains";
|
|
5
|
+
/** 允许安装的 IDE 目录 */
|
|
6
|
+
export type InstallableIdeType = "cursor" | "claude" | "codex" | "opencode" | "qoder" | "trae";
|
|
7
|
+
/** 安装选项 */
|
|
8
|
+
export interface InstallOptions {
|
|
9
|
+
/** 目标项目根目录 */
|
|
10
|
+
targetDir: string;
|
|
11
|
+
/** 安装角色 */
|
|
12
|
+
role: AiPackRole;
|
|
13
|
+
/** 克隆分支名 */
|
|
14
|
+
branch: string;
|
|
15
|
+
/** ai-pack Git 仓库地址 */
|
|
16
|
+
gitUrl: string;
|
|
17
|
+
/** IDE 类型,写入 manifest */
|
|
18
|
+
ideType?: IdeType;
|
|
19
|
+
/** 需要安装的 IDE 目录集合 */
|
|
20
|
+
installIdeTypes?: InstallableIdeType[];
|
|
21
|
+
/** 是否静默 */
|
|
22
|
+
silent?: boolean;
|
|
23
|
+
/** 安装触发来源 */
|
|
24
|
+
trigger?: "manual" | "silent-update";
|
|
25
|
+
}
|
|
26
|
+
/** 默认安装配置 */
|
|
27
|
+
export interface DefaultConfig {
|
|
28
|
+
role: AiPackRole;
|
|
29
|
+
branch: string;
|
|
30
|
+
gitUrl: string;
|
|
31
|
+
ideType: IdeType;
|
|
32
|
+
}
|
|
33
|
+
export declare const ROLES: {
|
|
34
|
+
value: AiPackRole;
|
|
35
|
+
label: string;
|
|
36
|
+
}[];
|
|
37
|
+
export declare const IDE_TYPES: {
|
|
38
|
+
value: IdeType;
|
|
39
|
+
label: string;
|
|
40
|
+
}[];
|
|
41
|
+
export declare const INSTALLABLE_IDE_TYPES: {
|
|
42
|
+
value: InstallableIdeType;
|
|
43
|
+
label: string;
|
|
44
|
+
dir: string;
|
|
45
|
+
}[];
|
|
46
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAE5D,+CAA+C;AAC/C,MAAM,MAAM,OAAO,GACf,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,UAAU,GACV,OAAO,GACP,MAAM,GACN,UAAU,GACV,QAAQ,GACR,WAAW,CAAC;AAEhB,mBAAmB;AACnB,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;AAE/F,WAAW;AACX,MAAM,WAAW,cAAc;IAC7B,cAAc;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qBAAqB;IACrB,eAAe,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACvC,WAAW;IACX,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa;IACb,OAAO,CAAC,EAAE,QAAQ,GAAG,eAAe,CAAC;CACtC;AAED,aAAa;AACb,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,KAAK,EAAE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAIvD,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAUxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAO5F,CAAC"}
|