@claude-flow/cli 3.0.0-alpha.82 → 3.0.0-alpha.84

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 (45) hide show
  1. package/dist/src/commands/index.d.ts.map +1 -1
  2. package/dist/src/commands/index.js +2 -0
  3. package/dist/src/commands/index.js.map +1 -1
  4. package/dist/src/commands/performance.d.ts.map +1 -1
  5. package/dist/src/commands/performance.js +34 -8
  6. package/dist/src/commands/performance.js.map +1 -1
  7. package/dist/src/commands/security.d.ts.map +1 -1
  8. package/dist/src/commands/security.js +15 -9
  9. package/dist/src/commands/security.js.map +1 -1
  10. package/dist/src/commands/update.d.ts +8 -0
  11. package/dist/src/commands/update.d.ts.map +1 -0
  12. package/dist/src/commands/update.js +276 -0
  13. package/dist/src/commands/update.js.map +1 -0
  14. package/dist/src/index.d.ts +5 -0
  15. package/dist/src/index.d.ts.map +1 -1
  16. package/dist/src/index.js +28 -0
  17. package/dist/src/index.js.map +1 -1
  18. package/dist/src/transfer/ipfs/upload.d.ts.map +1 -1
  19. package/dist/src/transfer/ipfs/upload.js +7 -4
  20. package/dist/src/transfer/ipfs/upload.js.map +1 -1
  21. package/dist/src/transfer/store/discovery.d.ts.map +1 -1
  22. package/dist/src/transfer/store/discovery.js +2 -1
  23. package/dist/src/transfer/store/discovery.js.map +1 -1
  24. package/dist/src/update/checker.d.ts +34 -0
  25. package/dist/src/update/checker.d.ts.map +1 -0
  26. package/dist/src/update/checker.js +190 -0
  27. package/dist/src/update/checker.js.map +1 -0
  28. package/dist/src/update/executor.d.ts +32 -0
  29. package/dist/src/update/executor.d.ts.map +1 -0
  30. package/dist/src/update/executor.js +181 -0
  31. package/dist/src/update/executor.js.map +1 -0
  32. package/dist/src/update/index.d.ts +33 -0
  33. package/dist/src/update/index.d.ts.map +1 -0
  34. package/dist/src/update/index.js +64 -0
  35. package/dist/src/update/index.js.map +1 -0
  36. package/dist/src/update/rate-limiter.d.ts +20 -0
  37. package/dist/src/update/rate-limiter.d.ts.map +1 -0
  38. package/dist/src/update/rate-limiter.js +96 -0
  39. package/dist/src/update/rate-limiter.js.map +1 -0
  40. package/dist/src/update/validator.d.ts +17 -0
  41. package/dist/src/update/validator.d.ts.map +1 -0
  42. package/dist/src/update/validator.js +123 -0
  43. package/dist/src/update/validator.js.map +1 -0
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/package.json +1 -1
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Rate limiter for update checks
3
+ * Prevents excessive npm registry queries
4
+ */
5
+ import * as fs from 'fs';
6
+ import * as path from 'path';
7
+ import * as os from 'os';
8
+ const STATE_FILE = path.join(os.homedir(), '.claude-flow', 'update-state.json');
9
+ const DEFAULT_INTERVAL_HOURS = 24;
10
+ const MAX_CHECKS_PER_DAY = 10;
11
+ function ensureDir() {
12
+ const dir = path.dirname(STATE_FILE);
13
+ if (!fs.existsSync(dir)) {
14
+ fs.mkdirSync(dir, { recursive: true });
15
+ }
16
+ }
17
+ function getDefaultState() {
18
+ return {
19
+ lastCheck: '',
20
+ checksToday: 0,
21
+ date: new Date().toISOString().split('T')[0],
22
+ packageVersions: {},
23
+ };
24
+ }
25
+ export function loadState() {
26
+ try {
27
+ if (fs.existsSync(STATE_FILE)) {
28
+ const content = fs.readFileSync(STATE_FILE, 'utf-8');
29
+ const state = JSON.parse(content);
30
+ // Reset counter if new day
31
+ const today = new Date().toISOString().split('T')[0];
32
+ if (state.date !== today) {
33
+ state.date = today;
34
+ state.checksToday = 0;
35
+ }
36
+ return state;
37
+ }
38
+ }
39
+ catch {
40
+ // Corrupted file, reset
41
+ }
42
+ return getDefaultState();
43
+ }
44
+ export function saveState(state) {
45
+ ensureDir();
46
+ fs.writeFileSync(STATE_FILE, JSON.stringify(state, null, 2));
47
+ }
48
+ export function shouldCheckForUpdates(intervalHours = DEFAULT_INTERVAL_HOURS) {
49
+ // Skip in CI environments
50
+ if (process.env.CI === 'true' || process.env.CONTINUOUS_INTEGRATION === 'true') {
51
+ return { allowed: false, reason: 'CI environment detected' };
52
+ }
53
+ // Skip if explicitly disabled
54
+ if (process.env.CLAUDE_FLOW_AUTO_UPDATE === 'false') {
55
+ return { allowed: false, reason: 'Auto-update disabled via environment' };
56
+ }
57
+ // Force update if requested
58
+ if (process.env.CLAUDE_FLOW_FORCE_UPDATE === 'true') {
59
+ return { allowed: true };
60
+ }
61
+ const state = loadState();
62
+ // Check daily limit
63
+ if (state.checksToday >= MAX_CHECKS_PER_DAY) {
64
+ return { allowed: false, reason: `Daily check limit (${MAX_CHECKS_PER_DAY}) reached` };
65
+ }
66
+ // Check time interval
67
+ if (state.lastCheck) {
68
+ const lastCheckTime = new Date(state.lastCheck).getTime();
69
+ const now = Date.now();
70
+ const hoursSinceLastCheck = (now - lastCheckTime) / (1000 * 60 * 60);
71
+ if (hoursSinceLastCheck < intervalHours) {
72
+ const nextCheck = Math.ceil(intervalHours - hoursSinceLastCheck);
73
+ return {
74
+ allowed: false,
75
+ reason: `Last check was ${Math.floor(hoursSinceLastCheck)}h ago (next check in ~${nextCheck}h)`
76
+ };
77
+ }
78
+ }
79
+ return { allowed: true };
80
+ }
81
+ export function recordCheck(packageVersions) {
82
+ const state = loadState();
83
+ state.lastCheck = new Date().toISOString();
84
+ state.checksToday += 1;
85
+ state.packageVersions = { ...state.packageVersions, ...packageVersions };
86
+ saveState(state);
87
+ }
88
+ export function getCachedVersions() {
89
+ return loadState().packageVersions;
90
+ }
91
+ export function clearCache() {
92
+ if (fs.existsSync(STATE_FILE)) {
93
+ fs.unlinkSync(STATE_FILE);
94
+ }
95
+ }
96
+ //# sourceMappingURL=rate-limiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../../src/update/rate-limiter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Package validator for update compatibility
3
+ * Ensures updates don't break the ecosystem
4
+ */
5
+ export interface ValidationResult {
6
+ valid: boolean;
7
+ incompatibilities: string[];
8
+ warnings: string[];
9
+ requiredPeerUpdates: string[];
10
+ }
11
+ export declare function validateUpdate(packageName: string, fromVersion: string, toVersion: string, installedPackages: Record<string, string>): ValidationResult;
12
+ export declare function validateBulkUpdate(updates: Array<{
13
+ package: string;
14
+ from: string;
15
+ to: string;
16
+ }>, currentPackages: Record<string, string>): ValidationResult;
17
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/update/validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAyCD,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACxC,gBAAgB,CA6ElB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,EAC7D,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,gBAAgB,CAsClB"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Package validator for update compatibility
3
+ * Ensures updates don't break the ecosystem
4
+ */
5
+ import * as semver from 'semver';
6
+ // Known compatibility matrix between @claude-flow packages
7
+ const COMPATIBILITY_MATRIX = {
8
+ '@claude-flow/cli': {
9
+ '@claude-flow/embeddings': { minVersion: '3.0.0-alpha.1' },
10
+ '@claude-flow/security': { minVersion: '3.0.0-alpha.1' },
11
+ '@claude-flow/integration': { minVersion: '3.0.0-alpha.1' },
12
+ },
13
+ '@claude-flow/embeddings': {
14
+ '@claude-flow/cli': { minVersion: '3.0.0-alpha.50' },
15
+ },
16
+ '@claude-flow/integration': {
17
+ '@claude-flow/cli': { minVersion: '3.0.0-alpha.70' },
18
+ 'agentic-flow': { minVersion: '0.1.0' },
19
+ },
20
+ };
21
+ // Known breaking changes by version
22
+ const BREAKING_CHANGES = {
23
+ '@claude-flow/cli': {
24
+ '3.0.0': [
25
+ 'Memory API changed from key-value to vector-based',
26
+ 'Hooks system completely redesigned',
27
+ 'Agent spawning now requires type parameter',
28
+ ],
29
+ },
30
+ '@claude-flow/embeddings': {
31
+ '3.0.0': [
32
+ 'Switched from better-sqlite3 to sql.js',
33
+ 'New initialization required with initEmbeddings()',
34
+ ],
35
+ },
36
+ };
37
+ export function validateUpdate(packageName, fromVersion, toVersion, installedPackages) {
38
+ const result = {
39
+ valid: true,
40
+ incompatibilities: [],
41
+ warnings: [],
42
+ requiredPeerUpdates: [],
43
+ };
44
+ // Check if this is a major version bump
45
+ if (semver.valid(fromVersion) && semver.valid(toVersion)) {
46
+ const fromMajor = semver.major(fromVersion);
47
+ const toMajor = semver.major(toVersion);
48
+ if (toMajor > fromMajor) {
49
+ result.warnings.push(`Major version update (${fromMajor} → ${toMajor}) may contain breaking changes`);
50
+ // Check for known breaking changes
51
+ const changes = BREAKING_CHANGES[packageName]?.[`${toMajor}.0.0`];
52
+ if (changes) {
53
+ result.warnings.push(`Known breaking changes in v${toMajor}:`);
54
+ changes.forEach((change) => result.warnings.push(` - ${change}`));
55
+ }
56
+ }
57
+ }
58
+ // Check compatibility with installed packages
59
+ const compatibility = COMPATIBILITY_MATRIX[packageName];
60
+ if (compatibility) {
61
+ for (const [depName, depReq] of Object.entries(compatibility)) {
62
+ const installedVersion = installedPackages[depName];
63
+ if (installedVersion) {
64
+ // Check minimum version
65
+ if (semver.valid(installedVersion) &&
66
+ semver.lt(installedVersion, depReq.minVersion)) {
67
+ result.incompatibilities.push(`${packageName}@${toVersion} requires ${depName} >= ${depReq.minVersion} (installed: ${installedVersion})`);
68
+ result.requiredPeerUpdates.push(`${depName}@>=${depReq.minVersion}`);
69
+ result.valid = false;
70
+ }
71
+ // Check maximum version
72
+ if (depReq.maxVersion &&
73
+ semver.valid(installedVersion) &&
74
+ semver.gt(installedVersion, depReq.maxVersion)) {
75
+ result.warnings.push(`${packageName}@${toVersion} may not be compatible with ${depName}@${installedVersion} (max: ${depReq.maxVersion})`);
76
+ }
77
+ }
78
+ }
79
+ }
80
+ // Check reverse compatibility - other packages that depend on this one
81
+ for (const [pkgName, deps] of Object.entries(COMPATIBILITY_MATRIX)) {
82
+ if (pkgName === packageName)
83
+ continue;
84
+ const depInfo = deps[packageName];
85
+ if (depInfo && installedPackages[pkgName]) {
86
+ // If the target version is below what the installed package needs
87
+ if (semver.valid(toVersion) && semver.lt(toVersion, depInfo.minVersion)) {
88
+ result.incompatibilities.push(`${pkgName}@${installedPackages[pkgName]} requires ${packageName} >= ${depInfo.minVersion}`);
89
+ result.valid = false;
90
+ }
91
+ }
92
+ }
93
+ return result;
94
+ }
95
+ export function validateBulkUpdate(updates, currentPackages) {
96
+ const combinedResult = {
97
+ valid: true,
98
+ incompatibilities: [],
99
+ warnings: [],
100
+ requiredPeerUpdates: [],
101
+ };
102
+ // Create a simulated state after all updates
103
+ const simulatedPackages = { ...currentPackages };
104
+ for (const update of updates) {
105
+ simulatedPackages[update.package] = update.to;
106
+ }
107
+ // Validate each update against the final state
108
+ for (const update of updates) {
109
+ const result = validateUpdate(update.package, update.from, update.to, simulatedPackages);
110
+ if (!result.valid) {
111
+ combinedResult.valid = false;
112
+ }
113
+ combinedResult.incompatibilities.push(...result.incompatibilities);
114
+ combinedResult.warnings.push(...result.warnings);
115
+ combinedResult.requiredPeerUpdates.push(...result.requiredPeerUpdates);
116
+ }
117
+ // Deduplicate
118
+ combinedResult.incompatibilities = [...new Set(combinedResult.incompatibilities)];
119
+ combinedResult.warnings = [...new Set(combinedResult.warnings)];
120
+ combinedResult.requiredPeerUpdates = [...new Set(combinedResult.requiredPeerUpdates)];
121
+ return combinedResult;
122
+ }
123
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/update/validator.ts"],"names":[],"mappings":"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"}