coding-config 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/README.md +194 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +70 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/config.d.ts +21 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +212 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/install.d.ts +5 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +197 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/publish.d.ts +5 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +172 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/register.d.ts +5 -0
- package/dist/commands/register.d.ts.map +1 -0
- package/dist/commands/register.js +110 -0
- package/dist/commands/register.js.map +1 -0
- package/dist/commands/status.d.ts +5 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +73 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/constants.d.ts +32 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +70 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +85 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +14 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/config.d.ts +50 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +166 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/conflict.d.ts +25 -0
- package/dist/utils/conflict.d.ts.map +1 -0
- package/dist/utils/conflict.js +183 -0
- package/dist/utils/conflict.js.map +1 -0
- package/dist/utils/diff.d.ts +8 -0
- package/dist/utils/diff.d.ts.map +1 -0
- package/dist/utils/diff.js +152 -0
- package/dist/utils/diff.js.map +1 -0
- package/dist/utils/git.d.ts +73 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +259 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/merge.d.ts +21 -0
- package/dist/utils/merge.d.ts.map +1 -0
- package/dist/utils/merge.js +273 -0
- package/dist/utils/merge.js.map +1 -0
- package/dist/utils/prompt.d.ts +27 -0
- package/dist/utils/prompt.d.ts.map +1 -0
- package/dist/utils/prompt.js +183 -0
- package/dist/utils/prompt.js.map +1 -0
- package/dist/utils/sync-record.d.ts +30 -0
- package/dist/utils/sync-record.d.ts.map +1 -0
- package/dist/utils/sync-record.js +151 -0
- package/dist/utils/sync-record.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git 仓库地址
|
|
3
|
+
* 使用 SSH 协议,需要配置 SSH 密钥
|
|
4
|
+
*/
|
|
5
|
+
export declare const REPO_URL = "ssh://liumengxin02@icode.baidu.com:8235/baidu/personal-code/claude-configs";
|
|
6
|
+
/**
|
|
7
|
+
* 本地配置文件路径
|
|
8
|
+
*/
|
|
9
|
+
export declare const CONFIG_DIR: string;
|
|
10
|
+
export declare const CONFIG_FILE: string;
|
|
11
|
+
/**
|
|
12
|
+
* Claude 配置目录
|
|
13
|
+
*/
|
|
14
|
+
export declare const CLAUDE_DIR_NAME = ".claude";
|
|
15
|
+
export declare const PERSONAL_CLAUDE_DIR: string;
|
|
16
|
+
/**
|
|
17
|
+
* 基础配置包名称
|
|
18
|
+
*/
|
|
19
|
+
export declare const BASE_CONFIG = "config-base";
|
|
20
|
+
/**
|
|
21
|
+
* 配置子目录
|
|
22
|
+
*/
|
|
23
|
+
export declare const CONFIG_DIRS: readonly ["commands", "hooks", "skills", "agents"];
|
|
24
|
+
/**
|
|
25
|
+
* Git 默认分支
|
|
26
|
+
*/
|
|
27
|
+
export declare const DEFAULT_BRANCH = "main";
|
|
28
|
+
/**
|
|
29
|
+
* GitHub API 基础 URL
|
|
30
|
+
*/
|
|
31
|
+
export declare const GITHUB_API_BASE = "https://api.github.com";
|
|
32
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,eAAO,MAAM,QAAQ,+EAA+E,CAAC;AAErG;;GAEG;AACH,eAAO,MAAM,UAAU,QAA4C,CAAC;AACpE,eAAO,MAAM,WAAW,QAAuC,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,mBAAmB,QAA2C,CAAC;AAE5E;;GAEG;AACH,eAAO,MAAM,WAAW,gBAAgB,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,WAAW,oDAAqD,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,cAAc,SAAS,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,eAAe,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
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.GITHUB_API_BASE = exports.DEFAULT_BRANCH = exports.CONFIG_DIRS = exports.BASE_CONFIG = exports.PERSONAL_CLAUDE_DIR = exports.CLAUDE_DIR_NAME = exports.CONFIG_FILE = exports.CONFIG_DIR = exports.REPO_URL = void 0;
|
|
37
|
+
const os = __importStar(require("os"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
/**
|
|
40
|
+
* Git 仓库地址
|
|
41
|
+
* 使用 SSH 协议,需要配置 SSH 密钥
|
|
42
|
+
*/
|
|
43
|
+
exports.REPO_URL = 'ssh://liumengxin02@icode.baidu.com:8235/baidu/personal-code/claude-configs';
|
|
44
|
+
/**
|
|
45
|
+
* 本地配置文件路径
|
|
46
|
+
*/
|
|
47
|
+
exports.CONFIG_DIR = path.join(os.homedir(), '.coding-config');
|
|
48
|
+
exports.CONFIG_FILE = path.join(exports.CONFIG_DIR, 'config.json');
|
|
49
|
+
/**
|
|
50
|
+
* Claude 配置目录
|
|
51
|
+
*/
|
|
52
|
+
exports.CLAUDE_DIR_NAME = '.claude';
|
|
53
|
+
exports.PERSONAL_CLAUDE_DIR = path.join(os.homedir(), exports.CLAUDE_DIR_NAME);
|
|
54
|
+
/**
|
|
55
|
+
* 基础配置包名称
|
|
56
|
+
*/
|
|
57
|
+
exports.BASE_CONFIG = 'config-base';
|
|
58
|
+
/**
|
|
59
|
+
* 配置子目录
|
|
60
|
+
*/
|
|
61
|
+
exports.CONFIG_DIRS = ['commands', 'hooks', 'skills', 'agents'];
|
|
62
|
+
/**
|
|
63
|
+
* Git 默认分支
|
|
64
|
+
*/
|
|
65
|
+
exports.DEFAULT_BRANCH = 'main';
|
|
66
|
+
/**
|
|
67
|
+
* GitHub API 基础 URL
|
|
68
|
+
*/
|
|
69
|
+
exports.GITHUB_API_BASE = 'https://api.github.com';
|
|
70
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAE7B;;;GAGG;AACU,QAAA,QAAQ,GAAG,4EAA4E,CAAC;AAErG;;GAEG;AACU,QAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACvD,QAAA,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAU,EAAE,aAAa,CAAC,CAAC;AAEhE;;GAEG;AACU,QAAA,eAAe,GAAG,SAAS,CAAC;AAC5B,QAAA,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,uBAAe,CAAC,CAAC;AAE5E;;GAEG;AACU,QAAA,WAAW,GAAG,aAAa,CAAC;AAEzC;;GAEG;AACU,QAAA,WAAW,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAE9E;;GAEG;AACU,QAAA,cAAc,GAAG,MAAM,CAAC;AAErC;;GAEG;AACU,QAAA,eAAe,GAAG,wBAAwB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Config - CLI tool for managing and syncing Claude configurations
|
|
3
|
+
*/
|
|
4
|
+
export { registerCommand } from './commands/register';
|
|
5
|
+
export { statusCommand } from './commands/status';
|
|
6
|
+
export { installCommand } from './commands/install';
|
|
7
|
+
export { publishCommand } from './commands/publish';
|
|
8
|
+
export * from './utils/config';
|
|
9
|
+
export * from './utils/git';
|
|
10
|
+
export * from './utils/prompt';
|
|
11
|
+
export * from './utils/conflict';
|
|
12
|
+
export * from './types';
|
|
13
|
+
export * from './constants';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,SAAS,CAAC;AAGxB,cAAc,aAAa,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Claude Config - CLI tool for managing and syncing Claude configurations
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.publishCommand = exports.installCommand = exports.statusCommand = exports.registerCommand = void 0;
|
|
21
|
+
// 导出所有命令
|
|
22
|
+
var register_1 = require("./commands/register");
|
|
23
|
+
Object.defineProperty(exports, "registerCommand", { enumerable: true, get: function () { return register_1.registerCommand; } });
|
|
24
|
+
var status_1 = require("./commands/status");
|
|
25
|
+
Object.defineProperty(exports, "statusCommand", { enumerable: true, get: function () { return status_1.statusCommand; } });
|
|
26
|
+
var install_1 = require("./commands/install");
|
|
27
|
+
Object.defineProperty(exports, "installCommand", { enumerable: true, get: function () { return install_1.installCommand; } });
|
|
28
|
+
var publish_1 = require("./commands/publish");
|
|
29
|
+
Object.defineProperty(exports, "publishCommand", { enumerable: true, get: function () { return publish_1.publishCommand; } });
|
|
30
|
+
// 导出工具函数
|
|
31
|
+
__exportStar(require("./utils/config"), exports);
|
|
32
|
+
__exportStar(require("./utils/git"), exports);
|
|
33
|
+
__exportStar(require("./utils/prompt"), exports);
|
|
34
|
+
__exportStar(require("./utils/conflict"), exports);
|
|
35
|
+
// 导出类型
|
|
36
|
+
__exportStar(require("./types"), exports);
|
|
37
|
+
// 导出常量
|
|
38
|
+
__exportStar(require("./constants"), exports);
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,SAAS;AACT,gDAAsD;AAA7C,2GAAA,eAAe,OAAA;AACxB,4CAAkD;AAAzC,uGAAA,aAAa,OAAA;AACtB,8CAAoD;AAA3C,yGAAA,cAAc,OAAA;AACvB,8CAAoD;AAA3C,yGAAA,cAAc,OAAA;AAEvB,SAAS;AACT,iDAA+B;AAC/B,8CAA4B;AAC5B,iDAA+B;AAC/B,mDAAiC;AAEjC,OAAO;AACP,0CAAwB;AAExB,OAAO;AACP,8CAA4B"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 本地配置文件结构
|
|
3
|
+
*/
|
|
4
|
+
export interface Config {
|
|
5
|
+
registeredTeam?: string;
|
|
6
|
+
githubToken?: string;
|
|
7
|
+
repoUrl: string;
|
|
8
|
+
cardId?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 配置级别
|
|
12
|
+
*/
|
|
13
|
+
export type ConfigLevel = 'personal' | 'project';
|
|
14
|
+
/**
|
|
15
|
+
* 配置路径信息
|
|
16
|
+
*/
|
|
17
|
+
export interface ConfigPath {
|
|
18
|
+
level: ConfigLevel;
|
|
19
|
+
path: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 冲突类型
|
|
23
|
+
*/
|
|
24
|
+
export declare enum ConflictType {
|
|
25
|
+
RemoteDeleted = "remote_deleted",
|
|
26
|
+
BothModified = "both_modified",
|
|
27
|
+
RemoteModified = "remote_modified",
|
|
28
|
+
LocalOnly = "local_only"
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 文件冲突信息
|
|
32
|
+
*/
|
|
33
|
+
export interface FileConflict {
|
|
34
|
+
file: string;
|
|
35
|
+
type: ConflictType;
|
|
36
|
+
localPath: string;
|
|
37
|
+
remotePath: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 冲突解决策略
|
|
41
|
+
*/
|
|
42
|
+
export type ConflictResolution = 'keep_local' | 'keep_remote';
|
|
43
|
+
/**
|
|
44
|
+
* 团队配置目录类型
|
|
45
|
+
*/
|
|
46
|
+
export type TeamDir = 'commands' | 'hooks' | 'skills' | 'agents';
|
|
47
|
+
/**
|
|
48
|
+
* Git 操作选项
|
|
49
|
+
*/
|
|
50
|
+
export interface GitOptions {
|
|
51
|
+
repoUrl: string;
|
|
52
|
+
localPath: string;
|
|
53
|
+
branch?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 发布选项
|
|
57
|
+
*/
|
|
58
|
+
export interface PublishOptions {
|
|
59
|
+
sourcePath: string;
|
|
60
|
+
teamName: string;
|
|
61
|
+
githubToken: string;
|
|
62
|
+
repoUrl: string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 同步记录 - 记录从远程同步的文件列表
|
|
66
|
+
*/
|
|
67
|
+
export interface SyncRecord {
|
|
68
|
+
lastSyncTime: string;
|
|
69
|
+
syncedFiles: string[];
|
|
70
|
+
repoUrl: string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 多路径同步记录 - 记录每个目标路径的同步状态
|
|
74
|
+
*/
|
|
75
|
+
export interface MultiPathSyncRecord {
|
|
76
|
+
[targetPath: string]: SyncRecord;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 配置验证结果
|
|
80
|
+
*/
|
|
81
|
+
export interface ValidationResult {
|
|
82
|
+
isValid: boolean;
|
|
83
|
+
errors: string[];
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,oBAAY,YAAY;IACtB,aAAa,mBAAmB;IAChC,YAAY,kBAAkB;IAC9B,cAAc,oBAAoB;IAClC,SAAS,eAAe;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,aAAa,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConflictType = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* 冲突类型
|
|
6
|
+
*/
|
|
7
|
+
var ConflictType;
|
|
8
|
+
(function (ConflictType) {
|
|
9
|
+
ConflictType["RemoteDeleted"] = "remote_deleted";
|
|
10
|
+
ConflictType["BothModified"] = "both_modified";
|
|
11
|
+
ConflictType["RemoteModified"] = "remote_modified";
|
|
12
|
+
ConflictType["LocalOnly"] = "local_only";
|
|
13
|
+
})(ConflictType || (exports.ConflictType = ConflictType = {}));
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;AAuBA;;GAEG;AACH,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,gDAAgC,CAAA;IAChC,8CAA8B,CAAA;IAC9B,kDAAkC,CAAA;IAClC,wCAAwB,CAAA;AAC1B,CAAC,EALW,YAAY,4BAAZ,YAAY,QAKvB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Config, ValidationResult } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* 验证配置对象
|
|
4
|
+
*/
|
|
5
|
+
export declare function validateConfig(config: Config): ValidationResult;
|
|
6
|
+
/**
|
|
7
|
+
* 确保配置目录存在
|
|
8
|
+
*/
|
|
9
|
+
export declare function ensureConfigDir(): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* 读取配置文件
|
|
12
|
+
*/
|
|
13
|
+
export declare function readConfig(): Promise<Config>;
|
|
14
|
+
/**
|
|
15
|
+
* 写入配置文件
|
|
16
|
+
*/
|
|
17
|
+
export declare function writeConfig(config: Config): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* 更新配置文件
|
|
20
|
+
*/
|
|
21
|
+
export declare function updateConfig(updates: Partial<Config>): Promise<Config>;
|
|
22
|
+
/**
|
|
23
|
+
* 获取已注册的团队名称
|
|
24
|
+
*/
|
|
25
|
+
export declare function getRegisteredTeam(): Promise<string | undefined>;
|
|
26
|
+
/**
|
|
27
|
+
* 设置已注册的团队名称
|
|
28
|
+
*/
|
|
29
|
+
export declare function setRegisteredTeam(teamName: string): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* 获取 GitHub Token
|
|
32
|
+
*/
|
|
33
|
+
export declare function getGithubToken(): Promise<string | undefined>;
|
|
34
|
+
/**
|
|
35
|
+
* 设置 GitHub Token
|
|
36
|
+
*/
|
|
37
|
+
export declare function setGithubToken(token: string): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* 获取仓库 URL
|
|
40
|
+
*/
|
|
41
|
+
export declare function getRepoUrl(): Promise<string>;
|
|
42
|
+
/**
|
|
43
|
+
* 获取 CardID
|
|
44
|
+
*/
|
|
45
|
+
export declare function getCardId(): Promise<string | undefined>;
|
|
46
|
+
/**
|
|
47
|
+
* 设置 CardID
|
|
48
|
+
*/
|
|
49
|
+
export declare function setCardId(cardId: string): Promise<void>;
|
|
50
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAmBpD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAiB/D;AAGD;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAErD;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAYlD;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/D;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAK5E;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAGrE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvE;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAGlE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjE;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAGlD;AAED;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG7D;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D"}
|
|
@@ -0,0 +1,166 @@
|
|
|
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.validateConfig = validateConfig;
|
|
37
|
+
exports.ensureConfigDir = ensureConfigDir;
|
|
38
|
+
exports.readConfig = readConfig;
|
|
39
|
+
exports.writeConfig = writeConfig;
|
|
40
|
+
exports.updateConfig = updateConfig;
|
|
41
|
+
exports.getRegisteredTeam = getRegisteredTeam;
|
|
42
|
+
exports.setRegisteredTeam = setRegisteredTeam;
|
|
43
|
+
exports.getGithubToken = getGithubToken;
|
|
44
|
+
exports.setGithubToken = setGithubToken;
|
|
45
|
+
exports.getRepoUrl = getRepoUrl;
|
|
46
|
+
exports.getCardId = getCardId;
|
|
47
|
+
exports.setCardId = setCardId;
|
|
48
|
+
const fs = __importStar(require("fs-extra"));
|
|
49
|
+
const constants_1 = require("../constants");
|
|
50
|
+
/**
|
|
51
|
+
* 验证 URL 格式
|
|
52
|
+
*/
|
|
53
|
+
function isValidUrl(url) {
|
|
54
|
+
if (!url || typeof url !== 'string') {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
new URL(url);
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* 验证配置对象
|
|
67
|
+
*/
|
|
68
|
+
function validateConfig(config) {
|
|
69
|
+
const errors = [];
|
|
70
|
+
// 验证 repoUrl(必需字段)
|
|
71
|
+
if (!config.repoUrl) {
|
|
72
|
+
errors.push('repoUrl is required');
|
|
73
|
+
}
|
|
74
|
+
else if (!isValidUrl(config.repoUrl)) {
|
|
75
|
+
errors.push('repoUrl must be a valid URL');
|
|
76
|
+
}
|
|
77
|
+
// 可选字段:registeredTeam, githubToken, cardId
|
|
78
|
+
// 这些字段如果存在,可以在这里添加额外的验证逻辑
|
|
79
|
+
return {
|
|
80
|
+
isValid: errors.length === 0,
|
|
81
|
+
errors,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 确保配置目录存在
|
|
86
|
+
*/
|
|
87
|
+
async function ensureConfigDir() {
|
|
88
|
+
await fs.ensureDir(constants_1.CONFIG_DIR);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* 读取配置文件
|
|
92
|
+
*/
|
|
93
|
+
async function readConfig() {
|
|
94
|
+
await ensureConfigDir();
|
|
95
|
+
if (await fs.pathExists(constants_1.CONFIG_FILE)) {
|
|
96
|
+
const data = await fs.readFile(constants_1.CONFIG_FILE, 'utf-8');
|
|
97
|
+
return JSON.parse(data);
|
|
98
|
+
}
|
|
99
|
+
// 返回默认配置
|
|
100
|
+
return {
|
|
101
|
+
repoUrl: constants_1.REPO_URL,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* 写入配置文件
|
|
106
|
+
*/
|
|
107
|
+
async function writeConfig(config) {
|
|
108
|
+
await ensureConfigDir();
|
|
109
|
+
await fs.writeFile(constants_1.CONFIG_FILE, JSON.stringify(config, null, 2), 'utf-8');
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* 更新配置文件
|
|
113
|
+
*/
|
|
114
|
+
async function updateConfig(updates) {
|
|
115
|
+
const config = await readConfig();
|
|
116
|
+
const newConfig = { ...config, ...updates };
|
|
117
|
+
await writeConfig(newConfig);
|
|
118
|
+
return newConfig;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* 获取已注册的团队名称
|
|
122
|
+
*/
|
|
123
|
+
async function getRegisteredTeam() {
|
|
124
|
+
const config = await readConfig();
|
|
125
|
+
return config.registeredTeam;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* 设置已注册的团队名称
|
|
129
|
+
*/
|
|
130
|
+
async function setRegisteredTeam(teamName) {
|
|
131
|
+
await updateConfig({ registeredTeam: teamName });
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* 获取 GitHub Token
|
|
135
|
+
*/
|
|
136
|
+
async function getGithubToken() {
|
|
137
|
+
const config = await readConfig();
|
|
138
|
+
return config.githubToken;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* 设置 GitHub Token
|
|
142
|
+
*/
|
|
143
|
+
async function setGithubToken(token) {
|
|
144
|
+
await updateConfig({ githubToken: token });
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* 获取仓库 URL
|
|
148
|
+
*/
|
|
149
|
+
async function getRepoUrl() {
|
|
150
|
+
const config = await readConfig();
|
|
151
|
+
return config.repoUrl;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* 获取 CardID
|
|
155
|
+
*/
|
|
156
|
+
async function getCardId() {
|
|
157
|
+
const config = await readConfig();
|
|
158
|
+
return config.cardId;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* 设置 CardID
|
|
162
|
+
*/
|
|
163
|
+
async function setCardId(cardId) {
|
|
164
|
+
await updateConfig({ cardId });
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { FileConflict } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* 检测文件冲突
|
|
4
|
+
* 使用同步记录来判断文件是否为远程删除
|
|
5
|
+
* @param localDir 本地目录
|
|
6
|
+
* @param remoteDir 远程目录
|
|
7
|
+
* @param targetPath 目标同步路径(如 ~/.claude 或 /project/.claude)
|
|
8
|
+
* @param configDir 配置目录名称(如 'agents', 'commands' 等)
|
|
9
|
+
*/
|
|
10
|
+
export declare function detectConflicts(localDir: string, remoteDir: string, targetPath: string, configDir?: string): Promise<FileConflict[]>;
|
|
11
|
+
/**
|
|
12
|
+
* 复制目录(递归)
|
|
13
|
+
*/
|
|
14
|
+
export declare function copyDir(src: string, dest: string): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* 删除文件(移到废纸篓/回收站)
|
|
17
|
+
* @param filePath 要删除的文件路径
|
|
18
|
+
* @param useTrash 是否使用废纸篓(默认为 true)
|
|
19
|
+
*/
|
|
20
|
+
export declare function deleteFile(filePath: string, useTrash?: boolean): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* 复制单个文件
|
|
23
|
+
*/
|
|
24
|
+
export declare function copyFile(src: string, dest: string): Promise<void>;
|
|
25
|
+
//# sourceMappingURL=conflict.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict.d.ts","sourceRoot":"","sources":["../../src/utils/conflict.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAgB,MAAM,UAAU,CAAC;AAgDtD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,EAAE,CAAC,CA0DzB;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAItE;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB1F;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE"}
|