xling 0.0.2 → 0.3.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 (122) hide show
  1. package/README.md +276 -1
  2. package/dist/base-BWvHbkly.js +69 -0
  3. package/dist/base-BWvHbkly.js.map +1 -0
  4. package/dist/base-BXJVsMwL.d.ts +45 -0
  5. package/dist/base-BXJVsMwL.d.ts.map +1 -0
  6. package/dist/base-DdIJJBHV.js +34 -0
  7. package/dist/base-DdIJJBHV.js.map +1 -0
  8. package/dist/base-EQ6uvBQs.d.ts +43 -0
  9. package/dist/base-EQ6uvBQs.d.ts.map +1 -0
  10. package/dist/claude-BsdlWM7z.js +31 -0
  11. package/dist/claude-BsdlWM7z.js.map +1 -0
  12. package/dist/claude-D7KdpYHQ.js +209 -0
  13. package/dist/claude-D7KdpYHQ.js.map +1 -0
  14. package/dist/claudeDefault-pd-Kyu6o.js +19 -0
  15. package/dist/claudeDefault-pd-Kyu6o.js.map +1 -0
  16. package/dist/codex-Crifr9cw.js +32 -0
  17. package/dist/codex-Crifr9cw.js.map +1 -0
  18. package/dist/codex-UJ2PYHA6.js +85 -0
  19. package/dist/codex-UJ2PYHA6.js.map +1 -0
  20. package/dist/commands/settings/get.d.ts +24 -0
  21. package/dist/commands/settings/get.d.ts.map +1 -0
  22. package/dist/commands/settings/get.js +118 -0
  23. package/dist/commands/settings/get.js.map +1 -0
  24. package/dist/commands/settings/inspect.d.ts +19 -0
  25. package/dist/commands/settings/inspect.d.ts.map +1 -0
  26. package/dist/commands/settings/inspect.js +88 -0
  27. package/dist/commands/settings/inspect.js.map +1 -0
  28. package/dist/commands/settings/list.d.ts +25 -0
  29. package/dist/commands/settings/list.d.ts.map +1 -0
  30. package/dist/commands/settings/list.js +147 -0
  31. package/dist/commands/settings/list.js.map +1 -0
  32. package/dist/commands/settings/set.d.ts +22 -0
  33. package/dist/commands/settings/set.d.ts.map +1 -0
  34. package/dist/commands/settings/set.js +83 -0
  35. package/dist/commands/settings/set.js.map +1 -0
  36. package/dist/commands/settings/switch.d.ts +27 -0
  37. package/dist/commands/settings/switch.d.ts.map +1 -0
  38. package/dist/commands/settings/switch.js +164 -0
  39. package/dist/commands/settings/switch.js.map +1 -0
  40. package/dist/commands/x/index.d.ts +25 -0
  41. package/dist/commands/x/index.d.ts.map +1 -0
  42. package/dist/commands/x/index.js +130 -0
  43. package/dist/commands/x/index.js.map +1 -0
  44. package/dist/dispatcher-BUU7wUgm.js +94 -0
  45. package/dist/dispatcher-BUU7wUgm.js.map +1 -0
  46. package/dist/dispatcher-Co94YvDc.js +76 -0
  47. package/dist/dispatcher-Co94YvDc.js.map +1 -0
  48. package/dist/domain/interfaces.d.ts +3 -0
  49. package/dist/domain/interfaces.js +1 -0
  50. package/dist/domain/types.d.ts +2 -0
  51. package/dist/domain/types.js +1 -0
  52. package/dist/domain/validators.d.ts +82 -0
  53. package/dist/domain/validators.d.ts.map +1 -0
  54. package/dist/domain/validators.js +58 -0
  55. package/dist/domain/validators.js.map +1 -0
  56. package/dist/editor-D4qoje1V.js +32 -0
  57. package/dist/editor-D4qoje1V.js.map +1 -0
  58. package/dist/errors-CAZ5k5YT.js +89 -0
  59. package/dist/errors-CAZ5k5YT.js.map +1 -0
  60. package/dist/format-Cqecj3RS.js +229 -0
  61. package/dist/format-Cqecj3RS.js.map +1 -0
  62. package/dist/fsStore-BPnFUGta.js +122 -0
  63. package/dist/fsStore-BPnFUGta.js.map +1 -0
  64. package/dist/gemini-Qo5146d_.js +52 -0
  65. package/dist/gemini-Qo5146d_.js.map +1 -0
  66. package/dist/interfaces-DRNAGN0l.d.ts +75 -0
  67. package/dist/interfaces-DRNAGN0l.d.ts.map +1 -0
  68. package/dist/run.d.ts +1 -0
  69. package/dist/run.js +15 -0
  70. package/dist/run.js.map +1 -0
  71. package/dist/runner-BE7zZq1g.js +89 -0
  72. package/dist/runner-BE7zZq1g.js.map +1 -0
  73. package/dist/services/launch/adapters/base.d.ts +4 -0
  74. package/dist/services/launch/adapters/base.js +4 -0
  75. package/dist/services/launch/adapters/claude.d.ts +25 -0
  76. package/dist/services/launch/adapters/claude.d.ts.map +1 -0
  77. package/dist/services/launch/adapters/claude.js +5 -0
  78. package/dist/services/launch/adapters/codex.d.ts +26 -0
  79. package/dist/services/launch/adapters/codex.d.ts.map +1 -0
  80. package/dist/services/launch/adapters/codex.js +5 -0
  81. package/dist/services/launch/dispatcher.d.ts +44 -0
  82. package/dist/services/launch/dispatcher.d.ts.map +1 -0
  83. package/dist/services/launch/dispatcher.js +8 -0
  84. package/dist/services/settings/adapters/base.d.ts +4 -0
  85. package/dist/services/settings/adapters/base.js +5 -0
  86. package/dist/services/settings/adapters/claude.d.ts +43 -0
  87. package/dist/services/settings/adapters/claude.d.ts.map +1 -0
  88. package/dist/services/settings/adapters/claude.js +9 -0
  89. package/dist/services/settings/adapters/codex.d.ts +45 -0
  90. package/dist/services/settings/adapters/codex.d.ts.map +1 -0
  91. package/dist/services/settings/adapters/codex.js +6 -0
  92. package/dist/services/settings/adapters/gemini.d.ts +32 -0
  93. package/dist/services/settings/adapters/gemini.d.ts.map +1 -0
  94. package/dist/services/settings/adapters/gemini.js +6 -0
  95. package/dist/services/settings/dispatcher.d.ts +36 -0
  96. package/dist/services/settings/dispatcher.d.ts.map +1 -0
  97. package/dist/services/settings/dispatcher.js +12 -0
  98. package/dist/services/settings/fsStore.d.ts +46 -0
  99. package/dist/services/settings/fsStore.d.ts.map +1 -0
  100. package/dist/services/settings/fsStore.js +4 -0
  101. package/dist/services/settings/templates/claudeDefault.d.ts +20 -0
  102. package/dist/services/settings/templates/claudeDefault.d.ts.map +1 -0
  103. package/dist/services/settings/templates/claudeDefault.js +3 -0
  104. package/dist/types--0tjriPy.d.ts +104 -0
  105. package/dist/types--0tjriPy.d.ts.map +1 -0
  106. package/dist/utils/editor.d.ts +6 -0
  107. package/dist/utils/editor.d.ts.map +1 -0
  108. package/dist/utils/editor.js +4 -0
  109. package/dist/utils/errors.d.ts +61 -0
  110. package/dist/utils/errors.d.ts.map +1 -0
  111. package/dist/utils/errors.js +3 -0
  112. package/dist/utils/format.d.ts +20 -0
  113. package/dist/utils/format.d.ts.map +1 -0
  114. package/dist/utils/format.js +3 -0
  115. package/dist/utils/logger.d.ts +32 -0
  116. package/dist/utils/logger.d.ts.map +1 -0
  117. package/dist/utils/logger.js +46 -0
  118. package/dist/utils/logger.js.map +1 -0
  119. package/dist/utils/runner.d.ts +36 -0
  120. package/dist/utils/runner.d.ts.map +1 -0
  121. package/dist/utils/runner.js +3 -0
  122. package/package.json +66 -6
@@ -0,0 +1,20 @@
1
+ import { l as SettingsFileEntry } from "../types--0tjriPy.js";
2
+
3
+ //#region src/utils/format.d.ts
4
+
5
+ /**
6
+ * 格式化为 JSON 字符串
7
+ */
8
+ declare function formatJson(data: unknown, pretty?: boolean): string;
9
+ /**
10
+ * 格式化为表格
11
+ */
12
+ declare function formatTable(data: Record<string, unknown>): string;
13
+ /**
14
+ * 格式化 settings 文件清单
15
+ */
16
+ declare function formatFilesTable(files: SettingsFileEntry[]): string;
17
+ declare function formatDiff(currentValue: unknown, nextValue: unknown): string | null;
18
+ //#endregion
19
+ export { formatDiff, formatFilesTable, formatJson, formatTable };
20
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","names":[],"sources":["../../src/utils/format.ts"],"sourcesContent":[],"mappings":";;;;AAiBA;AAiBA;AAoBA;iBA5CgB,UAAA;;;;iBAOA,WAAA,OAAkB;;;;iBAiBlB,gBAAA,QAAwB;iBAoBxB,UAAA"}
@@ -0,0 +1,3 @@
1
+ import { i as formatTable, n as formatFilesTable, r as formatJson, t as formatDiff } from "../format-Cqecj3RS.js";
2
+
3
+ export { formatDiff, formatFilesTable, formatJson, formatTable };
@@ -0,0 +1,32 @@
1
+ //#region src/utils/logger.d.ts
2
+ /**
3
+ * 日志工具
4
+ */
5
+ /**
6
+ * 日志级别
7
+ */
8
+ declare enum LogLevel {
9
+ DEBUG = 0,
10
+ INFO = 1,
11
+ WARN = 2,
12
+ ERROR = 3,
13
+ }
14
+ /**
15
+ * 简单的日志工具类
16
+ */
17
+ declare class Logger {
18
+ private level;
19
+ constructor(level?: LogLevel);
20
+ setLevel(level: LogLevel): void;
21
+ debug(message: string, ...args: unknown[]): void;
22
+ info(message: string, ...args: unknown[]): void;
23
+ warn(message: string, ...args: unknown[]): void;
24
+ error(message: string, ...args: unknown[]): void;
25
+ }
26
+ /**
27
+ * 默认 logger 实例
28
+ */
29
+ declare const logger: Logger;
30
+ //#endregion
31
+ export { LogLevel, Logger, logger };
32
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","names":[],"sources":["../../src/utils/logger.ts"],"sourcesContent":[],"mappings":";;AAOA;AAUA;AAuCA;;;aAjDY,QAAA;;;;;;;;;cAUC,MAAA;;sBAGQ;kBAIH;;;;;;;;;cAgCL,QAAM"}
@@ -0,0 +1,46 @@
1
+ //#region src/utils/logger.ts
2
+ /**
3
+ * 日志工具
4
+ */
5
+ /**
6
+ * 日志级别
7
+ */
8
+ let LogLevel = /* @__PURE__ */ function(LogLevel$1) {
9
+ LogLevel$1[LogLevel$1["DEBUG"] = 0] = "DEBUG";
10
+ LogLevel$1[LogLevel$1["INFO"] = 1] = "INFO";
11
+ LogLevel$1[LogLevel$1["WARN"] = 2] = "WARN";
12
+ LogLevel$1[LogLevel$1["ERROR"] = 3] = "ERROR";
13
+ return LogLevel$1;
14
+ }({});
15
+ /**
16
+ * 简单的日志工具类
17
+ */
18
+ var Logger = class {
19
+ level;
20
+ constructor(level = LogLevel.INFO) {
21
+ this.level = level;
22
+ }
23
+ setLevel(level) {
24
+ this.level = level;
25
+ }
26
+ debug(message, ...args) {
27
+ if (this.level <= LogLevel.DEBUG) console.debug(`[DEBUG] ${message}`, ...args);
28
+ }
29
+ info(message, ...args) {
30
+ if (this.level <= LogLevel.INFO) console.info(`[INFO] ${message}`, ...args);
31
+ }
32
+ warn(message, ...args) {
33
+ if (this.level <= LogLevel.WARN) console.warn(`[WARN] ${message}`, ...args);
34
+ }
35
+ error(message, ...args) {
36
+ if (this.level <= LogLevel.ERROR) console.error(`[ERROR] ${message}`, ...args);
37
+ }
38
+ };
39
+ /**
40
+ * 默认 logger 实例
41
+ */
42
+ const logger = new Logger();
43
+
44
+ //#endregion
45
+ export { LogLevel, Logger, logger };
46
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","names":[],"sources":["../../src/utils/logger.ts"],"sourcesContent":["/**\n * 日志工具\n */\n\n/**\n * 日志级别\n */\nexport enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3,\n}\n\n/**\n * 简单的日志工具类\n */\nexport class Logger {\n private level: LogLevel;\n\n constructor(level: LogLevel = LogLevel.INFO) {\n this.level = level;\n }\n\n setLevel(level: LogLevel) {\n this.level = level;\n }\n\n debug(message: string, ...args: unknown[]) {\n if (this.level <= LogLevel.DEBUG) {\n console.debug(`[DEBUG] ${message}`, ...args);\n }\n }\n\n info(message: string, ...args: unknown[]) {\n if (this.level <= LogLevel.INFO) {\n console.info(`[INFO] ${message}`, ...args);\n }\n }\n\n warn(message: string, ...args: unknown[]) {\n if (this.level <= LogLevel.WARN) {\n console.warn(`[WARN] ${message}`, ...args);\n }\n }\n\n error(message: string, ...args: unknown[]) {\n if (this.level <= LogLevel.ERROR) {\n console.error(`[ERROR] ${message}`, ...args);\n }\n }\n}\n\n/**\n * 默认 logger 实例\n */\nexport const logger = new Logger();\n"],"mappings":";;;;;;;AAOA,IAAY,gDAAL;AACL;AACA;AACA;AACA;;;;;;AAMF,IAAa,SAAb,MAAoB;CAClB,AAAQ;CAER,YAAY,QAAkB,SAAS,MAAM;AAC3C,OAAK,QAAQ;;CAGf,SAAS,OAAiB;AACxB,OAAK,QAAQ;;CAGf,MAAM,SAAiB,GAAG,MAAiB;AACzC,MAAI,KAAK,SAAS,SAAS,MACzB,SAAQ,MAAM,WAAW,WAAW,GAAG,KAAK;;CAIhD,KAAK,SAAiB,GAAG,MAAiB;AACxC,MAAI,KAAK,SAAS,SAAS,KACzB,SAAQ,KAAK,UAAU,WAAW,GAAG,KAAK;;CAI9C,KAAK,SAAiB,GAAG,MAAiB;AACxC,MAAI,KAAK,SAAS,SAAS,KACzB,SAAQ,KAAK,UAAU,WAAW,GAAG,KAAK;;CAI9C,MAAM,SAAiB,GAAG,MAAiB;AACzC,MAAI,KAAK,SAAS,SAAS,MACzB,SAAQ,MAAM,WAAW,WAAW,GAAG,KAAK;;;;;;AAQlD,MAAa,SAAS,IAAI,QAAQ"}
@@ -0,0 +1,36 @@
1
+ import { r as LaunchCommandSpec } from "../types--0tjriPy.js";
2
+
3
+ //#region src/utils/runner.d.ts
4
+
5
+ interface SpawnOptions {
6
+ cwd?: string;
7
+ env?: Record<string, string>;
8
+ args?: string[];
9
+ }
10
+ interface SpawnResult {
11
+ pid: number;
12
+ command: string;
13
+ }
14
+ /**
15
+ * 启动子进程
16
+ * @param spec 命令规范
17
+ * @param options 启动选项
18
+ * @returns 进程 ID 和完整命令
19
+ */
20
+ declare function spawnProcess(spec: LaunchCommandSpec, options?: SpawnOptions): Promise<SpawnResult>;
21
+ /**
22
+ * 检查可执行文件是否存在于 PATH 中
23
+ * @param name 可执行文件名
24
+ * @returns 是否存在
25
+ */
26
+ declare function checkExecutable(name: string): Promise<boolean>;
27
+ /**
28
+ * 获取可执行文件的版本信息
29
+ * @param executable 可执行文件名
30
+ * @param versionArgs 版本参数(默认 --version)
31
+ * @returns 版本字符串
32
+ */
33
+ declare function getExecutableVersion(executable: string, versionArgs?: string[]): Promise<string>;
34
+ //#endregion
35
+ export { SpawnOptions, SpawnResult, checkExecutable, getExecutableVersion, spawnProcess };
36
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","names":[],"sources":["../../src/utils/runner.ts"],"sourcesContent":[],"mappings":";;;;AAyBsB,UAjBL,YAAA,CAiBiB;EAC1B,GAAA,CAAA,EAAA,MAAA;EACI,GAAA,CAAA,EAjBJ,MAiBI,CAAA,MAAA,EAAA,MAAA,CAAA;EACD,IAAA,CAAA,EAAA,MAAA,EAAA;;AAAD,UAdO,WAAA,CAcP;EA4DY,GAAA,EAAA,MAAA;EAkBA,OAAA,EAAA,MAAA;;;;;;;;iBAjFA,YAAA,OACd,6BACI,eACT,QAAQ;;;;;;iBA4DW,eAAA,gBAA+B;;;;;;;iBAkB/B,oBAAA,8CAGnB"}
@@ -0,0 +1,3 @@
1
+ import { n as getExecutableVersion, r as spawnProcess, t as checkExecutable } from "../runner-BE7zZq1g.js";
2
+
3
+ export { checkExecutable, getExecutableVersion, spawnProcess };
package/package.json CHANGED
@@ -1,13 +1,73 @@
1
1
  {
2
2
  "name": "xling",
3
- "version": "0.0.2",
4
- "description": "",
5
- "main": "index.js",
3
+ "version": "0.3.0",
4
+ "description": "Unified CLI for managing AI tool settings",
5
+ "homepage": "https://github.com/kingsword09/xling/tree/main#readme",
6
+ "bugs": {
7
+ "url": "https://github.com/kingsword09/xling/issues"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/kingsword09/xling.git"
12
+ },
13
+ "type": "module",
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "bin": {
18
+ "xling": "./dist/run.js"
19
+ },
6
20
  "scripts": {
7
- "test": "echo \"Error: no test specified\" && exit 1"
21
+ "build": "tsdown",
22
+ "dev": "tsdown --watch",
23
+ "test": "vitest",
24
+ "test:watch": "vitest --watch",
25
+ "test:coverage": "vitest --coverage",
26
+ "lint": "oxlint src",
27
+ "lint:fix": "oxlint --fix src",
28
+ "format": "oxfmt src",
29
+ "format:check": "oxfmt --check src",
30
+ "typecheck": "tsc --noEmit",
31
+ "prepublishOnly": "bun run build"
8
32
  },
9
- "keywords": ["ai"],
33
+ "keywords": [
34
+ "ai",
35
+ "cli",
36
+ "settings",
37
+ "claude",
38
+ "codex",
39
+ "gemini"
40
+ ],
10
41
  "author": "Kingsword kingsword09 <kingsword09@gmail.com>",
11
42
  "license": "Apache-2.0",
12
- "packageManager": "pnpm@10.20.0"
43
+ "packageManager": "bun@1.3.2",
44
+ "engines": {
45
+ "node": ">=20.19.0"
46
+ },
47
+ "oclif": {
48
+ "bin": "xling",
49
+ "dirname": "xling",
50
+ "commands": "./dist/commands",
51
+ "topicSeparator": ":"
52
+ },
53
+ "publishConfig": {
54
+ "access": "public"
55
+ },
56
+ "devDependencies": {
57
+ "@oclif/test": "^4.1.14",
58
+ "@types/bun": "^1.3.2",
59
+ "@types/node": "^24.10.0",
60
+ "oclif": "^4.22.44",
61
+ "oxfmt": "^0.13.0",
62
+ "oxlint": "^1.28.0",
63
+ "tsdown": "^0.16.1",
64
+ "typescript": "^5.9.3",
65
+ "vitest": "^4.0.8"
66
+ },
67
+ "dependencies": {
68
+ "@iarna/toml": "^2.2.5",
69
+ "@oclif/core": "^4.8.0",
70
+ "cli-table3": "^0.6.5",
71
+ "zod": "^4.1.12"
72
+ }
13
73
  }