@mycompbox/compbox-cli 1.13.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 (98) hide show
  1. package/.tsbuildinfo +1 -0
  2. package/commands/configure.d.ts +24 -0
  3. package/commands/configure.d.ts.map +1 -0
  4. package/commands/configure.js +170 -0
  5. package/commands/configure.js.map +1 -0
  6. package/commands/doctor.d.ts +136 -0
  7. package/commands/doctor.d.ts.map +1 -0
  8. package/commands/doctor.js +606 -0
  9. package/commands/doctor.js.map +1 -0
  10. package/commands/install.d.ts +3 -0
  11. package/commands/install.d.ts.map +1 -0
  12. package/commands/install.js +88 -0
  13. package/commands/install.js.map +1 -0
  14. package/commands/list.d.ts +3 -0
  15. package/commands/list.d.ts.map +1 -0
  16. package/commands/list.js +141 -0
  17. package/commands/list.js.map +1 -0
  18. package/commands/login.d.ts +15 -0
  19. package/commands/login.d.ts.map +1 -0
  20. package/commands/login.js +102 -0
  21. package/commands/login.js.map +1 -0
  22. package/commands/publish.d.ts +3 -0
  23. package/commands/publish.d.ts.map +1 -0
  24. package/commands/publish.js +102 -0
  25. package/commands/publish.js.map +1 -0
  26. package/commands/run.d.ts +76 -0
  27. package/commands/run.d.ts.map +1 -0
  28. package/commands/run.js +417 -0
  29. package/commands/run.js.map +1 -0
  30. package/commands/service.d.ts +29 -0
  31. package/commands/service.d.ts.map +1 -0
  32. package/commands/service.js +142 -0
  33. package/commands/service.js.map +1 -0
  34. package/commands/update.d.ts +3 -0
  35. package/commands/update.d.ts.map +1 -0
  36. package/commands/update.js +141 -0
  37. package/commands/update.js.map +1 -0
  38. package/index.d.ts +3 -0
  39. package/index.d.ts.map +1 -0
  40. package/index.js +8508 -0
  41. package/index.js.map +1 -0
  42. package/package.json +30 -0
  43. package/utils/agent-invoker.d.ts +393 -0
  44. package/utils/agent-invoker.d.ts.map +1 -0
  45. package/utils/agent-invoker.js +1632 -0
  46. package/utils/agent-invoker.js.map +1 -0
  47. package/utils/api-client.d.ts +54 -0
  48. package/utils/api-client.d.ts.map +1 -0
  49. package/utils/api-client.js +214 -0
  50. package/utils/api-client.js.map +1 -0
  51. package/utils/auth-client.d.ts +61 -0
  52. package/utils/auth-client.d.ts.map +1 -0
  53. package/utils/auth-client.js +135 -0
  54. package/utils/auth-client.js.map +1 -0
  55. package/utils/claude-runtime.d.ts +116 -0
  56. package/utils/claude-runtime.d.ts.map +1 -0
  57. package/utils/claude-runtime.js +291 -0
  58. package/utils/claude-runtime.js.map +1 -0
  59. package/utils/config-store.d.ts +128 -0
  60. package/utils/config-store.d.ts.map +1 -0
  61. package/utils/config-store.js +137 -0
  62. package/utils/config-store.js.map +1 -0
  63. package/utils/file-manager.d.ts +32 -0
  64. package/utils/file-manager.d.ts.map +1 -0
  65. package/utils/file-manager.js +208 -0
  66. package/utils/file-manager.js.map +1 -0
  67. package/utils/keychain.d.ts +46 -0
  68. package/utils/keychain.d.ts.map +1 -0
  69. package/utils/keychain.js +167 -0
  70. package/utils/keychain.js.map +1 -0
  71. package/utils/loopback.d.ts +45 -0
  72. package/utils/loopback.d.ts.map +1 -0
  73. package/utils/loopback.js +95 -0
  74. package/utils/loopback.js.map +1 -0
  75. package/utils/mailbox-client.d.ts +98 -0
  76. package/utils/mailbox-client.d.ts.map +1 -0
  77. package/utils/mailbox-client.js +178 -0
  78. package/utils/mailbox-client.js.map +1 -0
  79. package/utils/mcp-config-writer.d.ts +133 -0
  80. package/utils/mcp-config-writer.d.ts.map +1 -0
  81. package/utils/mcp-config-writer.js +184 -0
  82. package/utils/mcp-config-writer.js.map +1 -0
  83. package/utils/pack-bundler.d.ts +30 -0
  84. package/utils/pack-bundler.d.ts.map +1 -0
  85. package/utils/pack-bundler.js +141 -0
  86. package/utils/pack-bundler.js.map +1 -0
  87. package/utils/prompt.d.ts +31 -0
  88. package/utils/prompt.d.ts.map +1 -0
  89. package/utils/prompt.js +86 -0
  90. package/utils/prompt.js.map +1 -0
  91. package/utils/table-formatter.d.ts +42 -0
  92. package/utils/table-formatter.d.ts.map +1 -0
  93. package/utils/table-formatter.js +125 -0
  94. package/utils/table-formatter.js.map +1 -0
  95. package/utils/version-resolver.d.ts +31 -0
  96. package/utils/version-resolver.d.ts.map +1 -0
  97. package/utils/version-resolver.js +75 -0
  98. package/utils/version-resolver.js.map +1 -0
@@ -0,0 +1,125 @@
1
+ import Table from 'cli-table3';
2
+ import chalk from 'chalk';
3
+ // eslint-disable-next-line @typescript-eslint/no-extraneous-class
4
+ export class TableFormatter {
5
+ /**
6
+ * Format installed packs table
7
+ */
8
+ static formatInstalledPacks(packs) {
9
+ if (!packs.length) {
10
+ return chalk.yellow('No packs installed');
11
+ }
12
+ const table = new Table({
13
+ head: [
14
+ chalk.cyan('Pack Name'),
15
+ chalk.cyan('Version'),
16
+ chalk.cyan('Installed At'),
17
+ chalk.cyan('Status'),
18
+ ],
19
+ colWidths: [30, 15, 25, 20],
20
+ });
21
+ for (const pack of packs) {
22
+ const status = pack.updateAvailable
23
+ ? chalk.yellow(`Update: ${pack.updateAvailable}`)
24
+ : chalk.green('Up to date');
25
+ table.push([
26
+ pack.name,
27
+ pack.version,
28
+ pack.installedVersion ?? '-',
29
+ status,
30
+ ]);
31
+ }
32
+ return table.toString();
33
+ }
34
+ /**
35
+ * Format available packs table
36
+ */
37
+ static formatAvailablePacks(packs) {
38
+ if (!packs.length) {
39
+ return chalk.yellow('No packs available');
40
+ }
41
+ const table = new Table({
42
+ head: [
43
+ chalk.cyan('Pack Name'),
44
+ chalk.cyan('Latest Version'),
45
+ chalk.cyan('Description'),
46
+ ],
47
+ colWidths: [30, 15, 50],
48
+ });
49
+ for (const pack of packs) {
50
+ table.push([
51
+ pack.name,
52
+ pack.version,
53
+ pack.description ?? '-',
54
+ ]);
55
+ }
56
+ return table.toString();
57
+ }
58
+ /**
59
+ * Format combined packs table (installed + available)
60
+ */
61
+ static formatCombinedPacks(packs) {
62
+ if (!packs.length) {
63
+ return chalk.yellow('No packs found');
64
+ }
65
+ const table = new Table({
66
+ head: [
67
+ chalk.cyan('Pack Name'),
68
+ chalk.cyan('Installed'),
69
+ chalk.cyan('Latest'),
70
+ chalk.cyan('Status'),
71
+ ],
72
+ colWidths: [30, 15, 15, 20],
73
+ });
74
+ for (const pack of packs) {
75
+ let status;
76
+ if (!pack.installedVersion) {
77
+ status = chalk.gray('Not installed');
78
+ }
79
+ else if (pack.updateAvailable) {
80
+ status = chalk.yellow('Update available');
81
+ }
82
+ else {
83
+ status = chalk.green('Up to date');
84
+ }
85
+ table.push([
86
+ pack.name,
87
+ pack.installedVersion ?? chalk.gray('-'),
88
+ pack.version,
89
+ status,
90
+ ]);
91
+ }
92
+ return table.toString();
93
+ }
94
+ /**
95
+ * Format a simple list
96
+ */
97
+ static formatList(items) {
98
+ return items.map((item) => ` ${chalk.cyan('•')} ${item}`).join('\n');
99
+ }
100
+ /**
101
+ * Format success message
102
+ */
103
+ static success(message) {
104
+ return chalk.green(`✓ ${message}`);
105
+ }
106
+ /**
107
+ * Format error message
108
+ */
109
+ static error(message) {
110
+ return chalk.red(`✗ ${message}`);
111
+ }
112
+ /**
113
+ * Format warning message
114
+ */
115
+ static warning(message) {
116
+ return chalk.yellow(`⚠ ${message}`);
117
+ }
118
+ /**
119
+ * Format info message
120
+ */
121
+ static info(message) {
122
+ return chalk.blue(`ℹ ${message}`);
123
+ }
124
+ }
125
+ //# sourceMappingURL=table-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-formatter.js","sourceRoot":"","sources":["../../src/utils/table-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export interface VersionInfo {
2
+ current: string;
3
+ latest: string;
4
+ needsUpdate: boolean;
5
+ updateAvailable?: string | undefined;
6
+ }
7
+ export declare class VersionResolver {
8
+ /**
9
+ * Compare two versions and determine if an update is available
10
+ */
11
+ static compareVersions(current: string, latest: string): VersionInfo;
12
+ /**
13
+ * Find the best matching version from available versions
14
+ */
15
+ static resolveVersion(requestedVersion: string | undefined, availableVersions: string[]): string | null;
16
+ /**
17
+ * Get all versions that need updates
18
+ */
19
+ static findUpdates(installedPacks: Record<string, {
20
+ version: string;
21
+ }>, availableVersions: Record<string, string>): Record<string, VersionInfo>;
22
+ /**
23
+ * Validate a version string
24
+ */
25
+ static isValidVersion(version: string): boolean;
26
+ /**
27
+ * Validate a version range
28
+ */
29
+ static isValidRange(range: string): boolean;
30
+ }
31
+ //# sourceMappingURL=version-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/version-resolver.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAGD,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW;IAUpE;;OAEG;IACH,MAAM,CAAC,cAAc,CACnB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,iBAAiB,EAAE,MAAM,EAAE,GAC1B,MAAM,GAAG,IAAI;IAkChB;;OAEG;IACH,MAAM,CAAC,WAAW,CAChB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,EACnD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACxC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IAgB9B;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI/C;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAG5C"}
@@ -0,0 +1,75 @@
1
+ import * as semver from 'semver';
2
+ // eslint-disable-next-line @typescript-eslint/no-extraneous-class
3
+ export class VersionResolver {
4
+ /**
5
+ * Compare two versions and determine if an update is available
6
+ */
7
+ static compareVersions(current, latest) {
8
+ const needsUpdate = semver.lt(current, latest);
9
+ return {
10
+ current,
11
+ latest,
12
+ needsUpdate,
13
+ updateAvailable: needsUpdate ? latest : undefined,
14
+ };
15
+ }
16
+ /**
17
+ * Find the best matching version from available versions
18
+ */
19
+ static resolveVersion(requestedVersion, availableVersions) {
20
+ if (!availableVersions.length) {
21
+ return null;
22
+ }
23
+ // Sort versions in descending order
24
+ const sorted = availableVersions
25
+ .filter((v) => semver.valid(v))
26
+ .sort((a, b) => semver.rcompare(a, b));
27
+ if (!sorted.length) {
28
+ return null;
29
+ }
30
+ // If no version specified, return latest
31
+ if (!requestedVersion || requestedVersion === 'latest') {
32
+ return sorted[0] ?? null;
33
+ }
34
+ // Try to find exact match
35
+ const exactMatch = sorted.find((v) => v === requestedVersion);
36
+ if (exactMatch) {
37
+ return exactMatch;
38
+ }
39
+ // Try to find matching range
40
+ const rangeMatch = sorted.find((v) => semver.satisfies(v, requestedVersion));
41
+ if (rangeMatch) {
42
+ return rangeMatch;
43
+ }
44
+ return null;
45
+ }
46
+ /**
47
+ * Get all versions that need updates
48
+ */
49
+ static findUpdates(installedPacks, availableVersions) {
50
+ const updates = {};
51
+ for (const [packName, installed] of Object.entries(installedPacks)) {
52
+ const latest = availableVersions[packName];
53
+ if (latest) {
54
+ const info = this.compareVersions(installed.version, latest);
55
+ if (info.needsUpdate) {
56
+ updates[packName] = info;
57
+ }
58
+ }
59
+ }
60
+ return updates;
61
+ }
62
+ /**
63
+ * Validate a version string
64
+ */
65
+ static isValidVersion(version) {
66
+ return semver.valid(version) !== null;
67
+ }
68
+ /**
69
+ * Validate a version range
70
+ */
71
+ static isValidRange(range) {
72
+ return semver.validRange(range) !== null;
73
+ }
74
+ }
75
+ //# sourceMappingURL=version-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-resolver.js","sourceRoot":"","sources":["../../src/utils/version-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AASjC,kEAAkE;AAClE,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,OAAe,EAAE,MAAc;QACpD,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/C,OAAO;YACL,OAAO;YACP,MAAM;YACN,WAAW;YACX,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SAClD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CACnB,gBAAoC,EACpC,iBAA2B;QAE3B,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oCAAoC;QACpC,MAAM,MAAM,GAAG,iBAAiB;aAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEzC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yCAAyC;QACzC,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC3B,CAAC;QAED,0BAA0B;QAC1B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC;QAC9D,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,6BAA6B;QAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAC7E,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAChB,cAAmD,EACnD,iBAAyC;QAEzC,MAAM,OAAO,GAAgC,EAAE,CAAC;QAEhD,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YACnE,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC7D,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,OAAe;QACnC,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,KAAa;QAC/B,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;IAC3C,CAAC;CACF"}