claude-flow 2.0.0-alpha.42 → 2.0.0-alpha.44
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 +1 -1
- package/bin/claude-flow +1 -1
- package/dist/__tests__/features/mocks/MockFeatureManager.d.ts +26 -0
- package/dist/__tests__/features/mocks/MockFeatureManager.d.ts.map +1 -0
- package/dist/__tests__/features/mocks/MockFeatureManager.js +200 -0
- package/dist/__tests__/features/mocks/MockFeatureManager.js.map +1 -0
- package/dist/__tests__/features/setup.d.ts +24 -0
- package/dist/__tests__/features/setup.d.ts.map +1 -0
- package/dist/__tests__/features/setup.js +42 -0
- package/dist/__tests__/features/setup.js.map +1 -0
- package/dist/__tests__/features/utils/test-helpers.d.ts +96 -0
- package/dist/__tests__/features/utils/test-helpers.d.ts.map +1 -0
- package/dist/__tests__/features/utils/test-helpers.js +281 -0
- package/dist/__tests__/features/utils/test-helpers.js.map +1 -0
- package/dist/cli/commands/features.d.ts +3 -0
- package/dist/cli/commands/features.d.ts.map +1 -0
- package/dist/cli/commands/features.js +77 -0
- package/dist/cli/commands/features.js.map +1 -0
- package/dist/cli/simple-commands/features.d.ts +2 -0
- package/dist/cli/simple-commands/features.d.ts.map +1 -0
- package/dist/cli/simple-commands/features.js +92 -0
- package/dist/cli/simple-commands/features.js.map +1 -0
- package/dist/cli/simple-commands/hooks.d.ts +1 -0
- package/dist/cli/simple-commands/hooks.d.ts.map +1 -1
- package/dist/cli/simple-commands/hooks.js +506 -229
- package/dist/cli/simple-commands/hooks.js.map +1 -1
- package/dist/cli/simple-commands/init/index.js +3 -5
- package/dist/cli/simple-commands/init/index.js.map +1 -1
- package/dist/features/adapters/CliFeatureAdapter.d.ts +36 -0
- package/dist/features/adapters/CliFeatureAdapter.d.ts.map +1 -0
- package/dist/features/adapters/CliFeatureAdapter.js +311 -0
- package/dist/features/adapters/CliFeatureAdapter.js.map +1 -0
- package/dist/features/adapters/McpFeatureAdapter.d.ts +61 -0
- package/dist/features/adapters/McpFeatureAdapter.d.ts.map +1 -0
- package/dist/features/adapters/McpFeatureAdapter.js +487 -0
- package/dist/features/adapters/McpFeatureAdapter.js.map +1 -0
- package/dist/features/adapters/index.d.ts +7 -0
- package/dist/features/adapters/index.d.ts.map +1 -0
- package/dist/features/adapters/index.js +7 -0
- package/dist/features/adapters/index.js.map +1 -0
- package/dist/features/built-in/index.d.ts +53 -0
- package/dist/features/built-in/index.d.ts.map +1 -0
- package/dist/features/built-in/index.js +286 -0
- package/dist/features/built-in/index.js.map +1 -0
- package/dist/features/core/FeatureManager.d.ts +37 -0
- package/dist/features/core/FeatureManager.d.ts.map +1 -0
- package/dist/features/core/FeatureManager.js +291 -0
- package/dist/features/core/FeatureManager.js.map +1 -0
- package/dist/features/core/FeatureRegistry.d.ts +24 -0
- package/dist/features/core/FeatureRegistry.d.ts.map +1 -0
- package/dist/features/core/FeatureRegistry.js +75 -0
- package/dist/features/core/FeatureRegistry.js.map +1 -0
- package/dist/features/core/configuration-manager.d.ts +16 -0
- package/dist/features/core/configuration-manager.d.ts.map +1 -0
- package/dist/features/core/configuration-manager.js +94 -0
- package/dist/features/core/configuration-manager.js.map +1 -0
- package/dist/features/core/feature-manager.d.ts +23 -0
- package/dist/features/core/feature-manager.d.ts.map +1 -0
- package/dist/features/core/feature-manager.js +163 -0
- package/dist/features/core/feature-manager.js.map +1 -0
- package/dist/features/core/feature-registry.d.ts +16 -0
- package/dist/features/core/feature-registry.d.ts.map +1 -0
- package/dist/features/core/feature-registry.js +175 -0
- package/dist/features/core/feature-registry.js.map +1 -0
- package/dist/features/core/feature.d.ts +25 -0
- package/dist/features/core/feature.d.ts.map +1 -0
- package/dist/features/core/feature.js +113 -0
- package/dist/features/core/feature.js.map +1 -0
- package/dist/features/core/index.d.ts +10 -0
- package/dist/features/core/index.d.ts.map +1 -0
- package/dist/features/core/index.js +11 -0
- package/dist/features/core/index.js.map +1 -0
- package/dist/features/core/transparency-layer.d.ts +16 -0
- package/dist/features/core/transparency-layer.d.ts.map +1 -0
- package/dist/features/core/transparency-layer.js +61 -0
- package/dist/features/core/transparency-layer.js.map +1 -0
- package/dist/features/hooks/command-hooks.d.ts +40 -0
- package/dist/features/hooks/command-hooks.d.ts.map +1 -0
- package/dist/features/hooks/command-hooks.js +159 -0
- package/dist/features/hooks/command-hooks.js.map +1 -0
- package/dist/features/index.d.ts +6 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +8 -0
- package/dist/features/index.js.map +1 -0
- package/dist/features/initializer.d.ts +17 -0
- package/dist/features/initializer.d.ts.map +1 -0
- package/dist/features/initializer.js +41 -0
- package/dist/features/initializer.js.map +1 -0
- package/dist/features/tests/manual-test.d.ts +6 -0
- package/dist/features/tests/manual-test.d.ts.map +1 -0
- package/dist/features/tests/manual-test.js +130 -0
- package/dist/features/tests/manual-test.js.map +1 -0
- package/dist/features/types/IFeature.d.ts +148 -0
- package/dist/features/types/IFeature.d.ts.map +1 -0
- package/dist/features/types/IFeature.js +43 -0
- package/dist/features/types/IFeature.js.map +1 -0
- package/dist/features/types/IFeatureAdapter.d.ts +298 -0
- package/dist/features/types/IFeatureAdapter.d.ts.map +1 -0
- package/dist/features/types/IFeatureAdapter.js +2 -0
- package/dist/features/types/IFeatureAdapter.js.map +1 -0
- package/dist/features/types/IFeatureConfiguration.d.ts +380 -0
- package/dist/features/types/IFeatureConfiguration.d.ts.map +1 -0
- package/dist/features/types/IFeatureConfiguration.js +2 -0
- package/dist/features/types/IFeatureConfiguration.js.map +1 -0
- package/dist/features/types/IFeatureManager.d.ts +216 -0
- package/dist/features/types/IFeatureManager.d.ts.map +1 -0
- package/dist/features/types/IFeatureManager.js +2 -0
- package/dist/features/types/IFeatureManager.js.map +1 -0
- package/dist/features/types/IFeatureMetrics.d.ts +543 -0
- package/dist/features/types/IFeatureMetrics.d.ts.map +1 -0
- package/dist/features/types/IFeatureMetrics.js +25 -0
- package/dist/features/types/IFeatureMetrics.js.map +1 -0
- package/dist/features/types/ITransparencyLayer.d.ts +552 -0
- package/dist/features/types/ITransparencyLayer.d.ts.map +1 -0
- package/dist/features/types/ITransparencyLayer.js +60 -0
- package/dist/features/types/ITransparencyLayer.js.map +1 -0
- package/dist/features/types/feature-types.d.ts +153 -0
- package/dist/features/types/feature-types.d.ts.map +1 -0
- package/dist/features/types/feature-types.js +40 -0
- package/dist/features/types/feature-types.js.map +1 -0
- package/dist/features/types/index.d.ts +13 -0
- package/dist/features/types/index.d.ts.map +1 -0
- package/dist/features/types/index.js +16 -0
- package/dist/features/types/index.js.map +1 -0
- package/dist/features/types/type-guards.d.ts +100 -0
- package/dist/features/types/type-guards.d.ts.map +1 -0
- package/dist/features/types/type-guards.js +212 -0
- package/dist/features/types/type-guards.js.map +1 -0
- package/dist/features/types/utility-types.d.ts +440 -0
- package/dist/features/types/utility-types.d.ts.map +1 -0
- package/dist/features/types/utility-types.js +2 -0
- package/dist/features/types/utility-types.js.map +1 -0
- package/dist/mcp/feature-tools.d.ts +24 -0
- package/dist/mcp/feature-tools.d.ts.map +1 -0
- package/dist/mcp/feature-tools.js +65 -0
- package/dist/mcp/feature-tools.js.map +1 -0
- package/dist/memory/shared-memory.js +656 -0
- package/dist/memory/shared-memory.js.map +1 -0
- package/dist/memory/sqlite-store.js +6 -10
- package/dist/memory/sqlite-store.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/commands/features.ts +84 -0
- package/src/cli/help-text.js +2 -2
- package/src/cli/simple-commands/init/templates/CLAUDE.md +132 -25
- package/src/cli/simple-commands/hooks-complete.js +0 -677
- package/src/cli/simple-commands/hooks-enhanced-integration.js +0 -231
- package/src/cli/simple-commands/hooks-enhanced.js +0 -424
- package/src/cli/simple-commands/hooks-memory-bridge.js +0 -97
- package/src/cli/simple-commands/hooks-original.js +0 -377
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test Helpers and Utilities
|
|
3
|
+
* Common utilities for feature system testing
|
|
4
|
+
*/
|
|
5
|
+
import { EventEmitter } from 'events';
|
|
6
|
+
/**
|
|
7
|
+
* Creates a mock feature for testing
|
|
8
|
+
*/
|
|
9
|
+
export function createMockFeature(overrides) {
|
|
10
|
+
return {
|
|
11
|
+
id: 'mock-feature',
|
|
12
|
+
name: 'Mock Feature',
|
|
13
|
+
version: '1.0.0',
|
|
14
|
+
description: 'A mock feature for testing',
|
|
15
|
+
activate: jest.fn().mockResolvedValue(undefined),
|
|
16
|
+
deactivate: jest.fn().mockResolvedValue(undefined),
|
|
17
|
+
...overrides,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Creates a mock adapter context for testing
|
|
22
|
+
*/
|
|
23
|
+
export function createMockAdapterContext(overrides) {
|
|
24
|
+
const eventBus = new EventEmitter();
|
|
25
|
+
return {
|
|
26
|
+
eventBus,
|
|
27
|
+
logger: {
|
|
28
|
+
log: jest.fn(),
|
|
29
|
+
error: jest.fn(),
|
|
30
|
+
warn: jest.fn(),
|
|
31
|
+
info: jest.fn(),
|
|
32
|
+
debug: jest.fn(),
|
|
33
|
+
},
|
|
34
|
+
config: {
|
|
35
|
+
version: '1.0.0',
|
|
36
|
+
environment: 'test',
|
|
37
|
+
},
|
|
38
|
+
services: new Map(),
|
|
39
|
+
...overrides,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Creates a mock feature configuration
|
|
44
|
+
*/
|
|
45
|
+
export function createMockConfig(overrides) {
|
|
46
|
+
return {
|
|
47
|
+
enabled: true,
|
|
48
|
+
settings: {},
|
|
49
|
+
...overrides,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Waits for an event to be emitted
|
|
54
|
+
*/
|
|
55
|
+
export function waitForEvent(emitter, eventName, timeout = 1000) {
|
|
56
|
+
return new Promise((resolve, reject) => {
|
|
57
|
+
const timer = setTimeout(() => {
|
|
58
|
+
reject(new Error(`Timeout waiting for event: ${eventName}`));
|
|
59
|
+
}, timeout);
|
|
60
|
+
emitter.once(eventName, (data) => {
|
|
61
|
+
clearTimeout(timer);
|
|
62
|
+
resolve(data);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Creates a spy that tracks method calls with timing information
|
|
68
|
+
*/
|
|
69
|
+
export function createTimingSpy() {
|
|
70
|
+
const calls = [];
|
|
71
|
+
const spy = jest.fn().mockImplementation((...args) => {
|
|
72
|
+
calls.push({
|
|
73
|
+
timestamp: Date.now(),
|
|
74
|
+
args,
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
return Object.assign(spy, {
|
|
78
|
+
calls,
|
|
79
|
+
wasCalledBefore(otherSpy) {
|
|
80
|
+
if (this.calls.length === 0 || otherSpy.calls.length === 0) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
return this.calls[0].timestamp < otherSpy.calls[0].timestamp;
|
|
84
|
+
},
|
|
85
|
+
wasCalledAfter(otherSpy) {
|
|
86
|
+
if (this.calls.length === 0 || otherSpy.calls.length === 0) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
return this.calls[0].timestamp > otherSpy.calls[0].timestamp;
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Delays execution for testing async operations
|
|
95
|
+
*/
|
|
96
|
+
export function delay(ms) {
|
|
97
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Creates a mock storage provider
|
|
101
|
+
*/
|
|
102
|
+
export function createMockStorage() {
|
|
103
|
+
const storage = new Map();
|
|
104
|
+
return {
|
|
105
|
+
save: jest.fn().mockImplementation((key, value) => {
|
|
106
|
+
storage.set(key, value);
|
|
107
|
+
return Promise.resolve();
|
|
108
|
+
}),
|
|
109
|
+
load: jest.fn().mockImplementation((key) => {
|
|
110
|
+
return Promise.resolve(storage.get(key) || null);
|
|
111
|
+
}),
|
|
112
|
+
delete: jest.fn().mockImplementation((key) => {
|
|
113
|
+
storage.delete(key);
|
|
114
|
+
return Promise.resolve();
|
|
115
|
+
}),
|
|
116
|
+
clear: jest.fn().mockImplementation(() => {
|
|
117
|
+
storage.clear();
|
|
118
|
+
return Promise.resolve();
|
|
119
|
+
}),
|
|
120
|
+
_storage: storage, // Expose for testing
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Custom Jest matchers for feature testing
|
|
125
|
+
*/
|
|
126
|
+
export const featureMatchers = {
|
|
127
|
+
toBeActivated(received) {
|
|
128
|
+
const pass = received.activate.mock.calls.length > 0;
|
|
129
|
+
return {
|
|
130
|
+
pass,
|
|
131
|
+
message: () => pass
|
|
132
|
+
? `Expected feature not to be activated`
|
|
133
|
+
: `Expected feature to be activated`,
|
|
134
|
+
};
|
|
135
|
+
},
|
|
136
|
+
toBeDeactivated(received) {
|
|
137
|
+
const pass = received.deactivate.mock.calls.length > 0;
|
|
138
|
+
return {
|
|
139
|
+
pass,
|
|
140
|
+
message: () => pass
|
|
141
|
+
? `Expected feature not to be deactivated`
|
|
142
|
+
: `Expected feature to be deactivated`,
|
|
143
|
+
};
|
|
144
|
+
},
|
|
145
|
+
toHaveBeenCalledBefore(received, other) {
|
|
146
|
+
const receivedCalls = received.mock.invocationCallOrder;
|
|
147
|
+
const otherCalls = other.mock.invocationCallOrder;
|
|
148
|
+
if (receivedCalls.length === 0 || otherCalls.length === 0) {
|
|
149
|
+
return {
|
|
150
|
+
pass: false,
|
|
151
|
+
message: () => `One or both functions were not called`,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
const pass = Math.min(...receivedCalls) < Math.min(...otherCalls);
|
|
155
|
+
return {
|
|
156
|
+
pass,
|
|
157
|
+
message: () => pass
|
|
158
|
+
? `Expected ${received.getMockName()} not to be called before ${other.getMockName()}`
|
|
159
|
+
: `Expected ${received.getMockName()} to be called before ${other.getMockName()}`,
|
|
160
|
+
};
|
|
161
|
+
},
|
|
162
|
+
toHaveBeenCalledAfter(received, other) {
|
|
163
|
+
const receivedCalls = received.mock.invocationCallOrder;
|
|
164
|
+
const otherCalls = other.mock.invocationCallOrder;
|
|
165
|
+
if (receivedCalls.length === 0 || otherCalls.length === 0) {
|
|
166
|
+
return {
|
|
167
|
+
pass: false,
|
|
168
|
+
message: () => `One or both functions were not called`,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
const pass = Math.min(...receivedCalls) > Math.max(...otherCalls);
|
|
172
|
+
return {
|
|
173
|
+
pass,
|
|
174
|
+
message: () => pass
|
|
175
|
+
? `Expected ${received.getMockName()} not to be called after ${other.getMockName()}`
|
|
176
|
+
: `Expected ${received.getMockName()} to be called after ${other.getMockName()}`,
|
|
177
|
+
};
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
/**
|
|
181
|
+
* Test data fixtures
|
|
182
|
+
*/
|
|
183
|
+
export const fixtures = {
|
|
184
|
+
features: {
|
|
185
|
+
basic: createMockFeature({
|
|
186
|
+
id: 'basic-feature',
|
|
187
|
+
name: 'Basic Feature',
|
|
188
|
+
}),
|
|
189
|
+
withDependencies: createMockFeature({
|
|
190
|
+
id: 'dependent-feature',
|
|
191
|
+
name: 'Dependent Feature',
|
|
192
|
+
dependencies: ['base-feature'],
|
|
193
|
+
}),
|
|
194
|
+
withConfiguration: createMockFeature({
|
|
195
|
+
id: 'configurable-feature',
|
|
196
|
+
name: 'Configurable Feature',
|
|
197
|
+
configure: jest.fn().mockResolvedValue(undefined),
|
|
198
|
+
configSchema: {
|
|
199
|
+
type: 'object',
|
|
200
|
+
properties: {
|
|
201
|
+
apiKey: { type: 'string' },
|
|
202
|
+
timeout: { type: 'number' },
|
|
203
|
+
},
|
|
204
|
+
required: ['apiKey'],
|
|
205
|
+
},
|
|
206
|
+
}),
|
|
207
|
+
withHooks: createMockFeature({
|
|
208
|
+
id: 'hook-feature',
|
|
209
|
+
name: 'Feature with Hooks',
|
|
210
|
+
onBeforeActivate: jest.fn().mockResolvedValue(undefined),
|
|
211
|
+
onAfterActivate: jest.fn().mockResolvedValue(undefined),
|
|
212
|
+
onBeforeDeactivate: jest.fn().mockResolvedValue(undefined),
|
|
213
|
+
onAfterDeactivate: jest.fn().mockResolvedValue(undefined),
|
|
214
|
+
}),
|
|
215
|
+
},
|
|
216
|
+
configs: {
|
|
217
|
+
basic: createMockConfig({
|
|
218
|
+
enabled: true,
|
|
219
|
+
settings: {
|
|
220
|
+
debug: false,
|
|
221
|
+
},
|
|
222
|
+
}),
|
|
223
|
+
withApiKey: createMockConfig({
|
|
224
|
+
enabled: true,
|
|
225
|
+
settings: {
|
|
226
|
+
apiKey: 'test-api-key-12345',
|
|
227
|
+
timeout: 5000,
|
|
228
|
+
},
|
|
229
|
+
}),
|
|
230
|
+
disabled: createMockConfig({
|
|
231
|
+
enabled: false,
|
|
232
|
+
settings: {},
|
|
233
|
+
}),
|
|
234
|
+
},
|
|
235
|
+
};
|
|
236
|
+
/**
|
|
237
|
+
* Performance measurement utilities
|
|
238
|
+
*/
|
|
239
|
+
export class PerformanceMeasurer {
|
|
240
|
+
marks = new Map();
|
|
241
|
+
mark(name) {
|
|
242
|
+
this.marks.set(name, performance.now());
|
|
243
|
+
}
|
|
244
|
+
measure(name, startMark, endMark) {
|
|
245
|
+
const start = this.marks.get(startMark);
|
|
246
|
+
const end = endMark ? this.marks.get(endMark) : performance.now();
|
|
247
|
+
if (!start) {
|
|
248
|
+
throw new Error(`Start mark '${startMark}' not found`);
|
|
249
|
+
}
|
|
250
|
+
if (endMark && !this.marks.has(endMark)) {
|
|
251
|
+
throw new Error(`End mark '${endMark}' not found`);
|
|
252
|
+
}
|
|
253
|
+
return (end || performance.now()) - start;
|
|
254
|
+
}
|
|
255
|
+
clear() {
|
|
256
|
+
this.marks.clear();
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Memory usage tracker for tests
|
|
261
|
+
*/
|
|
262
|
+
export class MemoryTracker {
|
|
263
|
+
snapshots = [];
|
|
264
|
+
snapshot() {
|
|
265
|
+
const usage = process.memoryUsage();
|
|
266
|
+
this.snapshots.push({ timestamp: Date.now(), usage });
|
|
267
|
+
return usage;
|
|
268
|
+
}
|
|
269
|
+
getGrowth() {
|
|
270
|
+
if (this.snapshots.length < 2) {
|
|
271
|
+
return 0;
|
|
272
|
+
}
|
|
273
|
+
const first = this.snapshots[0].usage.heapUsed;
|
|
274
|
+
const last = this.snapshots[this.snapshots.length - 1].usage.heapUsed;
|
|
275
|
+
return last - first;
|
|
276
|
+
}
|
|
277
|
+
clear() {
|
|
278
|
+
this.snapshots = [];
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
//# sourceMappingURL=test-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../../../src/__tests__/features/utils/test-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,qBAAqB,IAAI,OAAO,CA+E/C"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { ConfigManager } from '../../config/config-manager.js';
|
|
3
|
+
import { createCliFeatureAdapter } from '../../features/adapters/CliFeatureAdapter.js';
|
|
4
|
+
export function createFeaturesCommand() {
|
|
5
|
+
const features = new Command('features')
|
|
6
|
+
.description('Manage transparent features')
|
|
7
|
+
.addHelpText('after', `
|
|
8
|
+
Examples:
|
|
9
|
+
claude-flow features list # List all available features
|
|
10
|
+
claude-flow features enable auto-format # Enable the auto-format feature
|
|
11
|
+
claude-flow features disable auto-format # Disable the auto-format feature
|
|
12
|
+
claude-flow features status # Show status of all features
|
|
13
|
+
claude-flow features config auto-format # Configure a specific feature
|
|
14
|
+
`);
|
|
15
|
+
// List features
|
|
16
|
+
features
|
|
17
|
+
.command('list')
|
|
18
|
+
.description('List all available features')
|
|
19
|
+
.option('-v, --verbose', 'Show detailed feature information')
|
|
20
|
+
.action(async (options) => {
|
|
21
|
+
const configManager = new ConfigManager();
|
|
22
|
+
const adapter = createCliFeatureAdapter(configManager);
|
|
23
|
+
await adapter.listFeatures([], options);
|
|
24
|
+
});
|
|
25
|
+
// Enable feature
|
|
26
|
+
features
|
|
27
|
+
.command('enable <feature>')
|
|
28
|
+
.description('Enable a specific feature')
|
|
29
|
+
.action(async (feature) => {
|
|
30
|
+
const configManager = new ConfigManager();
|
|
31
|
+
const adapter = createCliFeatureAdapter(configManager);
|
|
32
|
+
await adapter.enableFeature([feature], {});
|
|
33
|
+
});
|
|
34
|
+
// Disable feature
|
|
35
|
+
features
|
|
36
|
+
.command('disable <feature>')
|
|
37
|
+
.description('Disable a specific feature')
|
|
38
|
+
.action(async (feature) => {
|
|
39
|
+
const configManager = new ConfigManager();
|
|
40
|
+
const adapter = createCliFeatureAdapter(configManager);
|
|
41
|
+
await adapter.disableFeature([feature], {});
|
|
42
|
+
});
|
|
43
|
+
// Toggle feature
|
|
44
|
+
features
|
|
45
|
+
.command('toggle <feature>')
|
|
46
|
+
.description('Toggle a feature on/off')
|
|
47
|
+
.action(async (feature) => {
|
|
48
|
+
const configManager = new ConfigManager();
|
|
49
|
+
const adapter = createCliFeatureAdapter(configManager);
|
|
50
|
+
await adapter.toggleFeature([feature], {});
|
|
51
|
+
});
|
|
52
|
+
// Configure feature
|
|
53
|
+
features
|
|
54
|
+
.command('config <feature>')
|
|
55
|
+
.alias('configure')
|
|
56
|
+
.description('Configure a specific feature')
|
|
57
|
+
.option('-s, --set <key=value>', 'Set a configuration value')
|
|
58
|
+
.option('-g, --get <key>', 'Get a configuration value')
|
|
59
|
+
.option('-r, --reset', 'Reset to default configuration')
|
|
60
|
+
.action(async (feature, options) => {
|
|
61
|
+
const configManager = new ConfigManager();
|
|
62
|
+
const adapter = createCliFeatureAdapter(configManager);
|
|
63
|
+
await adapter.configureFeature([feature], options);
|
|
64
|
+
});
|
|
65
|
+
// Feature status
|
|
66
|
+
features
|
|
67
|
+
.command('status [feature]')
|
|
68
|
+
.description('Show feature status')
|
|
69
|
+
.option('-d, --detailed', 'Show detailed status information')
|
|
70
|
+
.action(async (feature, options) => {
|
|
71
|
+
const configManager = new ConfigManager();
|
|
72
|
+
const adapter = createCliFeatureAdapter(configManager);
|
|
73
|
+
await adapter.showFeatureStatus(feature ? [feature] : [], options);
|
|
74
|
+
});
|
|
75
|
+
return features;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=features.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features.js","sourceRoot":"","sources":["../../../src/cli/commands/features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAEvF,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;SACrC,WAAW,CAAC,6BAA6B,CAAC;SAC1C,WAAW,CAAC,OAAO,EAAE;;;;;;;CAOzB,CAAC,CAAC;IAED,gBAAgB;IAChB,QAAQ;SACL,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,eAAe,EAAE,mCAAmC,CAAC;SAC5D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEL,iBAAiB;IACjB,QAAQ;SACL,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEL,kBAAkB;IAClB,QAAQ;SACL,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEL,iBAAiB;IACjB,QAAQ;SACL,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,yBAAyB,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEL,oBAAoB;IACpB,QAAQ;SACL,OAAO,CAAC,kBAAkB,CAAC;SAC3B,KAAK,CAAC,WAAW,CAAC;SAClB,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,uBAAuB,EAAE,2BAA2B,CAAC;SAC5D,MAAM,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;SACtD,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;SACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QACjC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEL,iBAAiB;IACjB,QAAQ;SACL,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,qBAAqB,CAAC;SAClC,MAAM,CAAC,gBAAgB,EAAE,kCAAkC,CAAC;SAC5D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QACjC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEL,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../../src/cli/simple-commands/features.js"],"names":[],"mappings":"AAQA,sEA4CC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature management CLI commands
|
|
3
|
+
*/
|
|
4
|
+
import { ConfigManager } from '../../config/config-manager.js';
|
|
5
|
+
import { createCliFeatureAdapter } from '../../features/adapters/CliFeatureAdapter.js';
|
|
6
|
+
// Feature command handler
|
|
7
|
+
export async function featuresCommand(args, flags) {
|
|
8
|
+
const subcommand = args[0];
|
|
9
|
+
const subArgs = args.slice(1);
|
|
10
|
+
// Initialize config manager
|
|
11
|
+
const configManager = new ConfigManager();
|
|
12
|
+
const adapter = createCliFeatureAdapter(configManager);
|
|
13
|
+
try {
|
|
14
|
+
switch (subcommand) {
|
|
15
|
+
case 'list':
|
|
16
|
+
await adapter.listFeatures(subArgs, flags);
|
|
17
|
+
break;
|
|
18
|
+
case 'enable':
|
|
19
|
+
await adapter.enableFeature(subArgs, flags);
|
|
20
|
+
break;
|
|
21
|
+
case 'disable':
|
|
22
|
+
await adapter.disableFeature(subArgs, flags);
|
|
23
|
+
break;
|
|
24
|
+
case 'toggle':
|
|
25
|
+
await adapter.toggleFeature(subArgs, flags);
|
|
26
|
+
break;
|
|
27
|
+
case 'config':
|
|
28
|
+
case 'configure':
|
|
29
|
+
await adapter.configureFeature(subArgs, flags);
|
|
30
|
+
break;
|
|
31
|
+
case 'status':
|
|
32
|
+
await adapter.showFeatureStatus(subArgs, flags);
|
|
33
|
+
break;
|
|
34
|
+
case 'help':
|
|
35
|
+
default:
|
|
36
|
+
showFeatureHelp();
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.error('Error:', error.message);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function showFeatureHelp() {
|
|
46
|
+
console.log(`
|
|
47
|
+
🎯 Claude-Flow Feature Management
|
|
48
|
+
|
|
49
|
+
Feature flags allow you to enable/disable and configure various system capabilities.
|
|
50
|
+
|
|
51
|
+
Usage: claude-flow features <subcommand> [options]
|
|
52
|
+
|
|
53
|
+
Subcommands:
|
|
54
|
+
list List all available features
|
|
55
|
+
enable <feature-id> Enable a feature
|
|
56
|
+
disable <feature-id> Disable a feature
|
|
57
|
+
toggle <feature-id> Toggle a feature on/off
|
|
58
|
+
config <feature-id> Configure a feature
|
|
59
|
+
status [feature-id] Show feature status
|
|
60
|
+
|
|
61
|
+
Options:
|
|
62
|
+
--category <type> Filter by category (list)
|
|
63
|
+
--enabled <true|false> Filter by enabled state (list)
|
|
64
|
+
--experimental <bool> Filter experimental features (list)
|
|
65
|
+
--verbose Show detailed information
|
|
66
|
+
--json Output in JSON format
|
|
67
|
+
--set <key=value> Set configuration value (config)
|
|
68
|
+
--get Get configuration (config)
|
|
69
|
+
--reset Reset configuration (config)
|
|
70
|
+
--health Include health check (status)
|
|
71
|
+
|
|
72
|
+
Examples:
|
|
73
|
+
claude-flow features list
|
|
74
|
+
claude-flow features list --category swarm --enabled true
|
|
75
|
+
claude-flow features enable advanced-memory
|
|
76
|
+
claude-flow features config swarm-coordination --set maxAgents=10
|
|
77
|
+
claude-flow features status --health
|
|
78
|
+
|
|
79
|
+
Feature Categories:
|
|
80
|
+
• core Core system features
|
|
81
|
+
• memory Memory and persistence features
|
|
82
|
+
• swarm Swarm coordination features
|
|
83
|
+
• agent Agent management features
|
|
84
|
+
• workflow Workflow automation features
|
|
85
|
+
• integration External integration features
|
|
86
|
+
• performance Performance optimization features
|
|
87
|
+
• experimental Experimental features (use with caution)
|
|
88
|
+
|
|
89
|
+
Tip: Use 'claude-flow features list --verbose' to see all feature details.
|
|
90
|
+
`);
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=features.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features.js","sourceRoot":"","sources":["../../../src/cli/simple-commands/features.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAEvF,0BAA0B;AAC1B,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAI,EAAE,KAAK;IAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE9B,4BAA4B;IAC5B,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;IAEvD,IAAI,CAAC;QACH,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,MAAM;gBACT,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC3C,MAAM;YAER,KAAK,QAAQ;gBACX,MAAM,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC5C,MAAM;YAER,KAAK,SAAS;gBACZ,MAAM,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC7C,MAAM;YAER,KAAK,QAAQ;gBACX,MAAM,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC5C,MAAM;YAER,KAAK,QAAQ,CAAC;YACd,KAAK,WAAW;gBACd,MAAM,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC/C,MAAM;YAER,KAAK,QAAQ;gBACX,MAAM,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAChD,MAAM;YAER,KAAK,MAAM,CAAC;YACZ;gBACE,eAAe,EAAE,CAAC;gBAClB,MAAM;QACV,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CX,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/cli/simple-commands/hooks.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/cli/simple-commands/hooks.js"],"names":[],"mappings":"AAmBA,qEAoEC"}
|