@ace-sdk/cli 2.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.
Files changed (150) hide show
  1. package/README.md +61 -0
  2. package/dist/cli.d.ts +14 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +427 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/bootstrap.d.ts +19 -0
  7. package/dist/commands/bootstrap.d.ts.map +1 -0
  8. package/dist/commands/bootstrap.js +157 -0
  9. package/dist/commands/bootstrap.js.map +1 -0
  10. package/dist/commands/cache.d.ts +19 -0
  11. package/dist/commands/cache.d.ts.map +1 -0
  12. package/dist/commands/cache.js +101 -0
  13. package/dist/commands/cache.js.map +1 -0
  14. package/dist/commands/clear.d.ts +12 -0
  15. package/dist/commands/clear.d.ts.map +1 -0
  16. package/dist/commands/clear.js +50 -0
  17. package/dist/commands/clear.js.map +1 -0
  18. package/dist/commands/config.d.ts +34 -0
  19. package/dist/commands/config.d.ts.map +1 -0
  20. package/dist/commands/config.js +423 -0
  21. package/dist/commands/config.js.map +1 -0
  22. package/dist/commands/delta.d.ts +14 -0
  23. package/dist/commands/delta.d.ts.map +1 -0
  24. package/dist/commands/delta.js +140 -0
  25. package/dist/commands/delta.js.map +1 -0
  26. package/dist/commands/doctor.d.ts +8 -0
  27. package/dist/commands/doctor.d.ts.map +1 -0
  28. package/dist/commands/doctor.js +187 -0
  29. package/dist/commands/doctor.js.map +1 -0
  30. package/dist/commands/export.d.ts +12 -0
  31. package/dist/commands/export.d.ts.map +1 -0
  32. package/dist/commands/export.js +45 -0
  33. package/dist/commands/export.js.map +1 -0
  34. package/dist/commands/import.d.ts +13 -0
  35. package/dist/commands/import.d.ts.map +1 -0
  36. package/dist/commands/import.js +87 -0
  37. package/dist/commands/import.js.map +1 -0
  38. package/dist/commands/learn.d.ts +17 -0
  39. package/dist/commands/learn.d.ts.map +1 -0
  40. package/dist/commands/learn.js +193 -0
  41. package/dist/commands/learn.js.map +1 -0
  42. package/dist/commands/patterns.d.ts +13 -0
  43. package/dist/commands/patterns.d.ts.map +1 -0
  44. package/dist/commands/patterns.js +76 -0
  45. package/dist/commands/patterns.js.map +1 -0
  46. package/dist/commands/plugin.d.ts +26 -0
  47. package/dist/commands/plugin.d.ts.map +1 -0
  48. package/dist/commands/plugin.js +267 -0
  49. package/dist/commands/plugin.js.map +1 -0
  50. package/dist/commands/projects.d.ts +15 -0
  51. package/dist/commands/projects.d.ts.map +1 -0
  52. package/dist/commands/projects.js +122 -0
  53. package/dist/commands/projects.js.map +1 -0
  54. package/dist/commands/record.d.ts +32 -0
  55. package/dist/commands/record.d.ts.map +1 -0
  56. package/dist/commands/record.js +307 -0
  57. package/dist/commands/record.js.map +1 -0
  58. package/dist/commands/search.d.ts +16 -0
  59. package/dist/commands/search.d.ts.map +1 -0
  60. package/dist/commands/search.js +125 -0
  61. package/dist/commands/search.js.map +1 -0
  62. package/dist/commands/status.d.ts +8 -0
  63. package/dist/commands/status.d.ts.map +1 -0
  64. package/dist/commands/status.js +63 -0
  65. package/dist/commands/status.js.map +1 -0
  66. package/dist/commands/summarize.d.ts +17 -0
  67. package/dist/commands/summarize.d.ts.map +1 -0
  68. package/dist/commands/summarize.js +167 -0
  69. package/dist/commands/summarize.js.map +1 -0
  70. package/dist/commands/top.d.ts +14 -0
  71. package/dist/commands/top.d.ts.map +1 -0
  72. package/dist/commands/top.js +58 -0
  73. package/dist/commands/top.js.map +1 -0
  74. package/dist/commands/tune.d.ts +36 -0
  75. package/dist/commands/tune.d.ts.map +1 -0
  76. package/dist/commands/tune.js +354 -0
  77. package/dist/commands/tune.js.map +1 -0
  78. package/dist/formatters/playbook-formatter.d.ts +19 -0
  79. package/dist/formatters/playbook-formatter.d.ts.map +1 -0
  80. package/dist/formatters/playbook-formatter.js +56 -0
  81. package/dist/formatters/playbook-formatter.js.map +1 -0
  82. package/dist/formatters/search-formatter.d.ts +28 -0
  83. package/dist/formatters/search-formatter.d.ts.map +1 -0
  84. package/dist/formatters/search-formatter.js +48 -0
  85. package/dist/formatters/search-formatter.js.map +1 -0
  86. package/dist/formatters/status-formatter.d.ts +25 -0
  87. package/dist/formatters/status-formatter.d.ts.map +1 -0
  88. package/dist/formatters/status-formatter.js +46 -0
  89. package/dist/formatters/status-formatter.js.map +1 -0
  90. package/dist/services/config-loader.d.ts +8 -0
  91. package/dist/services/config-loader.d.ts.map +1 -0
  92. package/dist/services/config-loader.js +7 -0
  93. package/dist/services/config-loader.js.map +1 -0
  94. package/dist/services/initialization.d.ts +128 -0
  95. package/dist/services/initialization.d.ts.map +1 -0
  96. package/dist/services/initialization.js +874 -0
  97. package/dist/services/initialization.js.map +1 -0
  98. package/dist/services/language-detector.d.ts +63 -0
  99. package/dist/services/language-detector.d.ts.map +1 -0
  100. package/dist/services/language-detector.js +123 -0
  101. package/dist/services/language-detector.js.map +1 -0
  102. package/dist/services/logger.d.ts +97 -0
  103. package/dist/services/logger.d.ts.map +1 -0
  104. package/dist/services/logger.js +229 -0
  105. package/dist/services/logger.js.map +1 -0
  106. package/dist/services/plugin-loader.d.ts +84 -0
  107. package/dist/services/plugin-loader.d.ts.map +1 -0
  108. package/dist/services/plugin-loader.js +282 -0
  109. package/dist/services/plugin-loader.js.map +1 -0
  110. package/dist/services/recorder.d.ts +80 -0
  111. package/dist/services/recorder.d.ts.map +1 -0
  112. package/dist/services/recorder.js +267 -0
  113. package/dist/services/recorder.js.map +1 -0
  114. package/dist/services/server-client.d.ts +32 -0
  115. package/dist/services/server-client.d.ts.map +1 -0
  116. package/dist/services/server-client.js +68 -0
  117. package/dist/services/server-client.js.map +1 -0
  118. package/dist/services/session-storage.d.ts +20 -0
  119. package/dist/services/session-storage.d.ts.map +1 -0
  120. package/dist/services/session-storage.js +29 -0
  121. package/dist/services/session-storage.js.map +1 -0
  122. package/dist/types/config.d.ts +33 -0
  123. package/dist/types/config.d.ts.map +1 -0
  124. package/dist/types/config.js +63 -0
  125. package/dist/types/config.js.map +1 -0
  126. package/dist/types/pattern.d.ts +8 -0
  127. package/dist/types/pattern.d.ts.map +1 -0
  128. package/dist/types/pattern.js +7 -0
  129. package/dist/types/pattern.js.map +1 -0
  130. package/dist/types/plugin.d.ts +87 -0
  131. package/dist/types/plugin.d.ts.map +1 -0
  132. package/dist/types/plugin.js +5 -0
  133. package/dist/types/plugin.js.map +1 -0
  134. package/dist/types/recorder.d.ts +44 -0
  135. package/dist/types/recorder.d.ts.map +1 -0
  136. package/dist/types/recorder.js +5 -0
  137. package/dist/types/recorder.js.map +1 -0
  138. package/dist/utils/code-extractor.d.ts +8 -0
  139. package/dist/utils/code-extractor.d.ts.map +1 -0
  140. package/dist/utils/code-extractor.js +7 -0
  141. package/dist/utils/code-extractor.js.map +1 -0
  142. package/dist/utils/semver.d.ts +13 -0
  143. package/dist/utils/semver.d.ts.map +1 -0
  144. package/dist/utils/semver.js +14 -0
  145. package/dist/utils/semver.js.map +1 -0
  146. package/dist/utils/version-checker.d.ts +27 -0
  147. package/dist/utils/version-checker.d.ts.map +1 -0
  148. package/dist/utils/version-checker.js +141 -0
  149. package/dist/utils/version-checker.js.map +1 -0
  150. package/package.json +64 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/types/plugin.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,GAAG,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,GAAG,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,GAAG,CAAC;IACZ,MAAM,EAAE,GAAG,CAAC;IACZ,MAAM,EAAE,GAAG,CAAC;CACb"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Plugin system types
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/types/plugin.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Session recording types
3
+ */
4
+ /**
5
+ * Session event types
6
+ */
7
+ export type SessionEventType = 'command' | 'request' | 'response' | 'error' | 'log' | 'metadata';
8
+ /**
9
+ * Single session event
10
+ */
11
+ export interface SessionEvent {
12
+ timestamp: string;
13
+ type: SessionEventType;
14
+ data: any;
15
+ duration?: number;
16
+ }
17
+ /**
18
+ * Session metadata
19
+ */
20
+ export interface SessionMetadata {
21
+ id: string;
22
+ startTime: string;
23
+ endTime?: string;
24
+ command: string;
25
+ projectId?: string;
26
+ events: number;
27
+ }
28
+ /**
29
+ * Complete session recording
30
+ */
31
+ export interface SessionRecording {
32
+ metadata: SessionMetadata;
33
+ events: SessionEvent[];
34
+ }
35
+ /**
36
+ * Recorder state
37
+ */
38
+ export interface RecorderState {
39
+ active: boolean;
40
+ sessionId: string | null;
41
+ startTime: Date | null;
42
+ eventCount: number;
43
+ }
44
+ //# sourceMappingURL=recorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../../src/types/recorder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,SAAS,GACT,UAAU,GACV,OAAO,GACP,KAAK,GACL,UAAU,CAAC;AAEf;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,GAAG,CAAC;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Session recording types
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=recorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../src/types/recorder.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Code Extractor - Re-export from @ace-sdk/core
3
+ *
4
+ * @package @ace-sdk/cli
5
+ */
6
+ export type { CodeBlock } from '@ace-sdk/core';
7
+ export { extractFunctionBodies, isInteresting, extractCodeBlocksFromMarkdown, extractAddedLinesFromDiff } from '@ace-sdk/core';
8
+ //# sourceMappingURL=code-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-extractor.d.ts","sourceRoot":"","sources":["../../src/utils/code-extractor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,6BAA6B,EAC7B,yBAAyB,EAC1B,MAAM,eAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Code Extractor - Re-export from @ace-sdk/core
3
+ *
4
+ * @package @ace-sdk/cli
5
+ */
6
+ export { extractFunctionBodies, isInteresting, extractCodeBlocksFromMarkdown, extractAddedLinesFromDiff } from '@ace-sdk/core';
7
+ //# sourceMappingURL=code-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-extractor.js","sourceRoot":"","sources":["../../src/utils/code-extractor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,6BAA6B,EAC7B,yBAAyB,EAC1B,MAAM,eAAe,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Semver - Re-export from @ace-sdk/core
3
+ *
4
+ * @package @ace-sdk/cli
5
+ */
6
+ export type { SemanticVersion } from '@ace-sdk/core';
7
+ export { parseVersion, compareVersions, satisfiesVersion } from '@ace-sdk/core';
8
+ /**
9
+ * Get client version from package.json
10
+ * CLI-specific function
11
+ */
12
+ export declare function getClientVersion(): string;
13
+ //# sourceMappingURL=semver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semver.d.ts","sourceRoot":"","sources":["../../src/utils/semver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAEvB;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Semver - Re-export from @ace-sdk/core
3
+ *
4
+ * @package @ace-sdk/cli
5
+ */
6
+ export { parseVersion, compareVersions, satisfiesVersion } from '@ace-sdk/core';
7
+ /**
8
+ * Get client version from package.json
9
+ * CLI-specific function
10
+ */
11
+ export function getClientVersion() {
12
+ return '2.0.0'; // Will be updated by release script
13
+ }
14
+ //# sourceMappingURL=semver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/utils/semver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAEvB;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,OAAO,CAAC,CAAE,oCAAoC;AACvD,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Version Checking System for @ace-sdk/cli
3
+ * Checks CLI version against npm registry
4
+ */
5
+ export interface VersionStatus {
6
+ clientVersion: string;
7
+ latestNpmVersion: string | null;
8
+ isCliUpdateAvailable: boolean;
9
+ warnings: string[];
10
+ }
11
+ /**
12
+ * Perform complete version check
13
+ * Returns version status with update availability
14
+ */
15
+ export declare function performVersionCheck(): Promise<VersionStatus>;
16
+ /**
17
+ * Check version and log warnings (non-blocking)
18
+ * Called during CLI initialization
19
+ */
20
+ export declare function checkVersionCompatibility(): Promise<VersionStatus>;
21
+ /**
22
+ * Lightweight CLI update checker with caching
23
+ * Only checks npm registry
24
+ * Caches result for 24 hours to avoid spamming npm registry
25
+ */
26
+ export declare function checkCliUpdate(): Promise<void>;
27
+ //# sourceMappingURL=version-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-checker.d.ts","sourceRoot":"","sources":["../../src/utils/version-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAqCD;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,aAAa,CAAC,CA6BlE;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,aAAa,CAAC,CAcxE;AAED;;;;GAIG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAyDpD"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Version Checking System for @ace-sdk/cli
3
+ * Checks CLI version against npm registry
4
+ */
5
+ import { compareVersions, getClientVersion } from './semver.js';
6
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
7
+ import { join } from 'path';
8
+ /**
9
+ * Check latest CLI version from npm registry
10
+ * Package: @ace-sdk/cli
11
+ *
12
+ * Returns latest published version (e.g., "1.0.0")
13
+ */
14
+ async function checkLatestNpmVersion() {
15
+ try {
16
+ const response = await fetch('https://registry.npmjs.org/@ace-sdk/cli/latest', {
17
+ headers: {
18
+ 'Accept': 'application/json',
19
+ 'User-Agent': 'ce-ace-cli'
20
+ }
21
+ });
22
+ if (!response.ok) {
23
+ // Package might not be published yet (404 is expected for unpublished packages)
24
+ if (response.status === 404) {
25
+ return null; // Not published yet
26
+ }
27
+ console.error(`⚠️ npm registry error: ${response.status}`);
28
+ return null;
29
+ }
30
+ const data = await response.json();
31
+ return data.version || null;
32
+ }
33
+ catch (error) {
34
+ // Silently fail - network errors are common
35
+ return null;
36
+ }
37
+ }
38
+ /**
39
+ * Perform complete version check
40
+ * Returns version status with update availability
41
+ */
42
+ export async function performVersionCheck() {
43
+ const clientVersion = getClientVersion();
44
+ const warnings = [];
45
+ console.error(`ℹ️ Checking version (current: ${clientVersion})...`);
46
+ // Check npm package version for CLI updates
47
+ const latestNpmVersion = await checkLatestNpmVersion();
48
+ let isCliUpdateAvailable = false;
49
+ if (latestNpmVersion) {
50
+ console.error(`ℹ️ Latest npm version: ${latestNpmVersion}`);
51
+ if (compareVersions(latestNpmVersion, clientVersion) > 0) {
52
+ isCliUpdateAvailable = true;
53
+ warnings.push(`🎉 New version available: v${latestNpmVersion} (current: v${clientVersion}). ` +
54
+ `Update with: npm install -g @ace-sdk/cli@latest`);
55
+ }
56
+ }
57
+ // Silently ignore if npm check fails (package not published yet or network error)
58
+ return {
59
+ clientVersion,
60
+ latestNpmVersion,
61
+ isCliUpdateAvailable,
62
+ warnings
63
+ };
64
+ }
65
+ /**
66
+ * Check version and log warnings (non-blocking)
67
+ * Called during CLI initialization
68
+ */
69
+ export async function checkVersionCompatibility() {
70
+ const status = await performVersionCheck();
71
+ // Log warnings (non-blocking)
72
+ if (status.warnings.length > 0) {
73
+ console.error('');
74
+ console.error('⚠️ Version Warnings:');
75
+ status.warnings.forEach((warning, index) => {
76
+ console.error(` ${index + 1}. ${warning}`);
77
+ });
78
+ console.error('');
79
+ }
80
+ return status;
81
+ }
82
+ /**
83
+ * Lightweight CLI update checker with caching
84
+ * Only checks npm registry
85
+ * Caches result for 24 hours to avoid spamming npm registry
86
+ */
87
+ export async function checkCliUpdate() {
88
+ try {
89
+ const cacheDir = join(process.env.HOME || process.env.USERPROFILE || '/tmp', '.ace-cache');
90
+ const cacheFile = join(cacheDir, 'cli-version-check.json');
91
+ const now = Date.now();
92
+ const cacheTtl = 24 * 60 * 60 * 1000; // 24 hours
93
+ // Check cache
94
+ if (existsSync(cacheFile)) {
95
+ const cached = JSON.parse(readFileSync(cacheFile, 'utf8'));
96
+ if (now - cached.timestamp < cacheTtl) {
97
+ // Cache is fresh
98
+ if (cached.updateAvailable) {
99
+ console.error(`\n💡 Update available: v${cached.latestVersion} → Run: npm install -g @ace-sdk/cli@latest\n`);
100
+ }
101
+ return;
102
+ }
103
+ }
104
+ // Cache miss or expired - check npm
105
+ const currentVersion = getClientVersion();
106
+ const latestVersion = await checkLatestNpmVersion();
107
+ if (latestVersion && compareVersions(latestVersion, currentVersion) > 0) {
108
+ // Update available
109
+ const cacheData = {
110
+ timestamp: now,
111
+ updateAvailable: true,
112
+ currentVersion,
113
+ latestVersion
114
+ };
115
+ // Save to cache
116
+ if (!existsSync(cacheDir)) {
117
+ mkdirSync(cacheDir, { recursive: true });
118
+ }
119
+ writeFileSync(cacheFile, JSON.stringify(cacheData));
120
+ console.error(`\n💡 Update available: v${latestVersion} (current: v${currentVersion})`);
121
+ console.error(` Run: npm install -g @ace-sdk/cli@latest\n`);
122
+ }
123
+ else {
124
+ // No update or check failed
125
+ const cacheData = {
126
+ timestamp: now,
127
+ updateAvailable: false,
128
+ currentVersion,
129
+ latestVersion: latestVersion || currentVersion
130
+ };
131
+ if (!existsSync(cacheDir)) {
132
+ mkdirSync(cacheDir, { recursive: true });
133
+ }
134
+ writeFileSync(cacheFile, JSON.stringify(cacheData));
135
+ }
136
+ }
137
+ catch (error) {
138
+ // Silently fail - update checks shouldn't break the CLI
139
+ }
140
+ }
141
+ //# sourceMappingURL=version-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-checker.js","sourceRoot":"","sources":["../../src/utils/version-checker.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@ace-sdk/cli",
3
+ "version": "2.0.0",
4
+ "description": "ACE CLI - Command-line tool for intelligent pattern learning and playbook management",
5
+ "main": "dist/cli.js",
6
+ "types": "dist/cli.d.ts",
7
+ "type": "module",
8
+ "bin": {
9
+ "ace-cli": "dist/cli.js",
10
+ "ce-ace": "dist/cli.js"
11
+ },
12
+ "scripts": {
13
+ "build": "tsc",
14
+ "watch": "tsc --watch",
15
+ "clean": "rm -rf dist",
16
+ "dev": "tsx src/cli.ts",
17
+ "test": "tsx tests/cli-test.ts",
18
+ "prepublishOnly": "npm run build"
19
+ },
20
+ "keywords": [
21
+ "cli",
22
+ "ace",
23
+ "pattern-learning",
24
+ "playbook",
25
+ "code-analysis",
26
+ "agentic",
27
+ "context-engineering",
28
+ "code-engine",
29
+ "developer-tools"
30
+ ],
31
+ "author": {
32
+ "name": "CE.NET Team",
33
+ "email": "ace@code-engine.net"
34
+ },
35
+ "license": "MIT",
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "https://github.com/ce-dot-net/ace-sdk.git",
39
+ "directory": "packages/cli"
40
+ },
41
+ "dependencies": {
42
+ "@ace-sdk/core": "^1.0.0",
43
+ "chalk": "^5.6.2",
44
+ "commander": "^14.0.2",
45
+ "ora": "^9.0.0",
46
+ "tabtab": "^3.0.2"
47
+ },
48
+ "devDependencies": {
49
+ "@types/node": "^24.10.1",
50
+ "@types/tabtab": "^3.0.4",
51
+ "tsx": "^4.19.2",
52
+ "typescript": "^5.9.3"
53
+ },
54
+ "engines": {
55
+ "node": ">=20.0.0"
56
+ },
57
+ "files": [
58
+ "dist/**/*",
59
+ "README.md"
60
+ ],
61
+ "publishConfig": {
62
+ "access": "public"
63
+ }
64
+ }