@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.
- package/README.md +61 -0
- package/dist/cli.d.ts +14 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +427 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/bootstrap.d.ts +19 -0
- package/dist/commands/bootstrap.d.ts.map +1 -0
- package/dist/commands/bootstrap.js +157 -0
- package/dist/commands/bootstrap.js.map +1 -0
- package/dist/commands/cache.d.ts +19 -0
- package/dist/commands/cache.d.ts.map +1 -0
- package/dist/commands/cache.js +101 -0
- package/dist/commands/cache.js.map +1 -0
- package/dist/commands/clear.d.ts +12 -0
- package/dist/commands/clear.d.ts.map +1 -0
- package/dist/commands/clear.js +50 -0
- package/dist/commands/clear.js.map +1 -0
- package/dist/commands/config.d.ts +34 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +423 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/delta.d.ts +14 -0
- package/dist/commands/delta.d.ts.map +1 -0
- package/dist/commands/delta.js +140 -0
- package/dist/commands/delta.js.map +1 -0
- package/dist/commands/doctor.d.ts +8 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +187 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/export.d.ts +12 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +45 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/import.d.ts +13 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +87 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/learn.d.ts +17 -0
- package/dist/commands/learn.d.ts.map +1 -0
- package/dist/commands/learn.js +193 -0
- package/dist/commands/learn.js.map +1 -0
- package/dist/commands/patterns.d.ts +13 -0
- package/dist/commands/patterns.d.ts.map +1 -0
- package/dist/commands/patterns.js +76 -0
- package/dist/commands/patterns.js.map +1 -0
- package/dist/commands/plugin.d.ts +26 -0
- package/dist/commands/plugin.d.ts.map +1 -0
- package/dist/commands/plugin.js +267 -0
- package/dist/commands/plugin.js.map +1 -0
- package/dist/commands/projects.d.ts +15 -0
- package/dist/commands/projects.d.ts.map +1 -0
- package/dist/commands/projects.js +122 -0
- package/dist/commands/projects.js.map +1 -0
- package/dist/commands/record.d.ts +32 -0
- package/dist/commands/record.d.ts.map +1 -0
- package/dist/commands/record.js +307 -0
- package/dist/commands/record.js.map +1 -0
- package/dist/commands/search.d.ts +16 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +125 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/status.d.ts +8 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +63 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/summarize.d.ts +17 -0
- package/dist/commands/summarize.d.ts.map +1 -0
- package/dist/commands/summarize.js +167 -0
- package/dist/commands/summarize.js.map +1 -0
- package/dist/commands/top.d.ts +14 -0
- package/dist/commands/top.d.ts.map +1 -0
- package/dist/commands/top.js +58 -0
- package/dist/commands/top.js.map +1 -0
- package/dist/commands/tune.d.ts +36 -0
- package/dist/commands/tune.d.ts.map +1 -0
- package/dist/commands/tune.js +354 -0
- package/dist/commands/tune.js.map +1 -0
- package/dist/formatters/playbook-formatter.d.ts +19 -0
- package/dist/formatters/playbook-formatter.d.ts.map +1 -0
- package/dist/formatters/playbook-formatter.js +56 -0
- package/dist/formatters/playbook-formatter.js.map +1 -0
- package/dist/formatters/search-formatter.d.ts +28 -0
- package/dist/formatters/search-formatter.d.ts.map +1 -0
- package/dist/formatters/search-formatter.js +48 -0
- package/dist/formatters/search-formatter.js.map +1 -0
- package/dist/formatters/status-formatter.d.ts +25 -0
- package/dist/formatters/status-formatter.d.ts.map +1 -0
- package/dist/formatters/status-formatter.js +46 -0
- package/dist/formatters/status-formatter.js.map +1 -0
- package/dist/services/config-loader.d.ts +8 -0
- package/dist/services/config-loader.d.ts.map +1 -0
- package/dist/services/config-loader.js +7 -0
- package/dist/services/config-loader.js.map +1 -0
- package/dist/services/initialization.d.ts +128 -0
- package/dist/services/initialization.d.ts.map +1 -0
- package/dist/services/initialization.js +874 -0
- package/dist/services/initialization.js.map +1 -0
- package/dist/services/language-detector.d.ts +63 -0
- package/dist/services/language-detector.d.ts.map +1 -0
- package/dist/services/language-detector.js +123 -0
- package/dist/services/language-detector.js.map +1 -0
- package/dist/services/logger.d.ts +97 -0
- package/dist/services/logger.d.ts.map +1 -0
- package/dist/services/logger.js +229 -0
- package/dist/services/logger.js.map +1 -0
- package/dist/services/plugin-loader.d.ts +84 -0
- package/dist/services/plugin-loader.d.ts.map +1 -0
- package/dist/services/plugin-loader.js +282 -0
- package/dist/services/plugin-loader.js.map +1 -0
- package/dist/services/recorder.d.ts +80 -0
- package/dist/services/recorder.d.ts.map +1 -0
- package/dist/services/recorder.js +267 -0
- package/dist/services/recorder.js.map +1 -0
- package/dist/services/server-client.d.ts +32 -0
- package/dist/services/server-client.d.ts.map +1 -0
- package/dist/services/server-client.js +68 -0
- package/dist/services/server-client.js.map +1 -0
- package/dist/services/session-storage.d.ts +20 -0
- package/dist/services/session-storage.d.ts.map +1 -0
- package/dist/services/session-storage.js +29 -0
- package/dist/services/session-storage.js.map +1 -0
- package/dist/types/config.d.ts +33 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +63 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/pattern.d.ts +8 -0
- package/dist/types/pattern.d.ts.map +1 -0
- package/dist/types/pattern.js +7 -0
- package/dist/types/pattern.js.map +1 -0
- package/dist/types/plugin.d.ts +87 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +5 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/types/recorder.d.ts +44 -0
- package/dist/types/recorder.d.ts.map +1 -0
- package/dist/types/recorder.js +5 -0
- package/dist/types/recorder.js.map +1 -0
- package/dist/utils/code-extractor.d.ts +8 -0
- package/dist/utils/code-extractor.d.ts.map +1 -0
- package/dist/utils/code-extractor.js +7 -0
- package/dist/utils/code-extractor.js.map +1 -0
- package/dist/utils/semver.d.ts +13 -0
- package/dist/utils/semver.d.ts.map +1 -0
- package/dist/utils/semver.js +14 -0
- package/dist/utils/semver.js.map +1 -0
- package/dist/utils/version-checker.d.ts +27 -0
- package/dist/utils/version-checker.d.ts.map +1 -0
- package/dist/utils/version-checker.js +141 -0
- package/dist/utils/version-checker.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* View playbook patterns command
|
|
3
|
+
*/
|
|
4
|
+
import { globalOptions } from '../cli.js';
|
|
5
|
+
import { createContext } from '../types/config.js';
|
|
6
|
+
import { ACEServerClient } from '../services/server-client.js';
|
|
7
|
+
import { Logger } from '../services/logger.js';
|
|
8
|
+
import { formatPlaybook } from '../formatters/playbook-formatter.js';
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
/**
|
|
11
|
+
* View playbook patterns
|
|
12
|
+
*/
|
|
13
|
+
export async function patternsCommand(options) {
|
|
14
|
+
const logger = new Logger(globalOptions);
|
|
15
|
+
const spinner = logger.spinner('Fetching playbook...');
|
|
16
|
+
try {
|
|
17
|
+
const context = await createContext({ org: globalOptions.org, project: globalOptions.project });
|
|
18
|
+
const client = new ACEServerClient(context, logger);
|
|
19
|
+
// Fetch server config for defaults
|
|
20
|
+
const serverConfig = await client.getConfig();
|
|
21
|
+
const runtimeSettings = serverConfig?.runtime_settings || {};
|
|
22
|
+
const effectiveSection = options.section ?? runtimeSettings.patternDefaultSection;
|
|
23
|
+
const effectiveMinHelpful = options.minHelpful ?? runtimeSettings.patternMinHelpful ?? 0;
|
|
24
|
+
logger.debug(`Patterns: section=${effectiveSection || 'all'}, min_helpful=${effectiveMinHelpful}`);
|
|
25
|
+
const result = await client.getPlaybook({
|
|
26
|
+
forceRefresh: false,
|
|
27
|
+
include_metadata: true
|
|
28
|
+
});
|
|
29
|
+
spinner?.succeed('Playbook retrieved');
|
|
30
|
+
// Apply client-side filtering
|
|
31
|
+
let playbook = result.playbook;
|
|
32
|
+
if (effectiveSection) {
|
|
33
|
+
const emptyPlaybook = {
|
|
34
|
+
strategies_and_hard_rules: [],
|
|
35
|
+
useful_code_snippets: [],
|
|
36
|
+
troubleshooting_and_pitfalls: [],
|
|
37
|
+
apis_to_use: []
|
|
38
|
+
};
|
|
39
|
+
playbook = {
|
|
40
|
+
...emptyPlaybook,
|
|
41
|
+
[effectiveSection]: playbook[effectiveSection] || []
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (effectiveMinHelpful > 0) {
|
|
45
|
+
for (const key of Object.keys(playbook)) {
|
|
46
|
+
playbook[key] = playbook[key].filter((b) => (b.helpful || 0) >= effectiveMinHelpful);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (logger.isJson()) {
|
|
50
|
+
logger.output({ playbook, total_bullets: result.total_bullets });
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
// Use total_bullets from server response (single source of truth)
|
|
54
|
+
// NOTE: Object.keys(playbook).length is ALWAYS 4 (even when empty), so it's unreliable
|
|
55
|
+
if (result.total_bullets === 0) {
|
|
56
|
+
logger.warn('No patterns found');
|
|
57
|
+
logger.stderr(chalk.dim('Run "ce-ace bootstrap" to initialize the playbook\n'));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
formatPlaybook(playbook, {
|
|
61
|
+
section: effectiveSection,
|
|
62
|
+
minHelpful: effectiveMinHelpful,
|
|
63
|
+
verbose: logger.isVerbose()
|
|
64
|
+
});
|
|
65
|
+
if (result.metadata && logger.isVerbose()) {
|
|
66
|
+
logger.debug('Metadata:', result.metadata);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
spinner?.fail('Failed to fetch playbook');
|
|
72
|
+
logger.error('Failed to fetch playbook', error instanceof Error ? error : String(error));
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=patterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../src/commands/patterns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin management commands
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* List all available plugins
|
|
6
|
+
*/
|
|
7
|
+
export declare function pluginListCommand(): Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
* Trust a plugin
|
|
10
|
+
*/
|
|
11
|
+
export declare function pluginTrustCommand(name: string, options: {
|
|
12
|
+
yes?: boolean;
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Untrust a plugin
|
|
16
|
+
*/
|
|
17
|
+
export declare function pluginUntrustCommand(name: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Enable a plugin
|
|
20
|
+
*/
|
|
21
|
+
export declare function pluginEnableCommand(name: string): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Disable a plugin
|
|
24
|
+
*/
|
|
25
|
+
export declare function pluginDisableCommand(name: string): Promise<void>;
|
|
26
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/commands/plugin.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH;;GAEG;AACH,wBAAsB,iBAAiB,kBAmEtC;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,iBAmFhF;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,iBA4BtD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,iBAgDrD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,iBA4BtD"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin management commands
|
|
3
|
+
*/
|
|
4
|
+
import { getPluginLoader } from '../services/plugin-loader.js';
|
|
5
|
+
import { globalOptions } from '../cli.js';
|
|
6
|
+
import { Logger } from '../services/logger.js';
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
import * as readline from 'readline/promises';
|
|
9
|
+
import { stdin, stdout } from 'process';
|
|
10
|
+
/**
|
|
11
|
+
* List all available plugins
|
|
12
|
+
*/
|
|
13
|
+
export async function pluginListCommand() {
|
|
14
|
+
const logger = new Logger(globalOptions);
|
|
15
|
+
try {
|
|
16
|
+
const loader = getPluginLoader(logger);
|
|
17
|
+
const plugins = loader.discoverPlugins();
|
|
18
|
+
// Note: registry available via loader.getRegistry() if needed
|
|
19
|
+
if (logger.isJson()) {
|
|
20
|
+
logger.output({
|
|
21
|
+
plugins: plugins.map(p => ({
|
|
22
|
+
name: p.name,
|
|
23
|
+
version: p.version,
|
|
24
|
+
description: p.description,
|
|
25
|
+
enabled: loader.isEnabled(p.name),
|
|
26
|
+
trusted: loader.isTrusted(p),
|
|
27
|
+
commands: p.commands?.length || 0
|
|
28
|
+
}))
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
if (plugins.length === 0) {
|
|
33
|
+
logger.info('No plugins found');
|
|
34
|
+
logger.info(chalk.dim(`Install plugins to ~/.ace/plugins/`));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
logger.info(chalk.bold(`\nš Available Plugins (${plugins.length})\n`));
|
|
38
|
+
for (const plugin of plugins) {
|
|
39
|
+
const trusted = loader.isTrusted(plugin);
|
|
40
|
+
const enabled = loader.isEnabled(plugin.name);
|
|
41
|
+
const statusIcon = !trusted ? chalk.yellow('ā ') : enabled ? chalk.green('ā') : chalk.dim('ā');
|
|
42
|
+
const statusText = !trusted ? chalk.yellow('UNTRUSTED') : enabled ? chalk.green('ENABLED') : chalk.dim('DISABLED');
|
|
43
|
+
logger.info(`${statusIcon} ${chalk.cyan(plugin.name)} ${chalk.dim(`v${plugin.version}`)} [${statusText}]`);
|
|
44
|
+
if (plugin.description) {
|
|
45
|
+
logger.info(chalk.dim(` ${plugin.description}`));
|
|
46
|
+
}
|
|
47
|
+
if (plugin.commands && plugin.commands.length > 0) {
|
|
48
|
+
logger.info(chalk.dim(` Commands: ${plugin.commands.map(c => c.name).join(', ')}`));
|
|
49
|
+
}
|
|
50
|
+
if (!trusted) {
|
|
51
|
+
logger.info(chalk.yellow(` ā Run 'ce-ace plugin trust ${plugin.name}' to trust this plugin`));
|
|
52
|
+
}
|
|
53
|
+
logger.info('');
|
|
54
|
+
}
|
|
55
|
+
logger.info(chalk.dim('Run \'ce-ace plugin trust <name>\' to trust a plugin'));
|
|
56
|
+
logger.info(chalk.dim('Run \'ce-ace plugin enable <name>\' to enable a plugin'));
|
|
57
|
+
logger.info(chalk.dim('Run \'ce-ace plugin disable <name>\' to disable a plugin\n'));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
if (logger.isJson()) {
|
|
62
|
+
logger.output({
|
|
63
|
+
success: false,
|
|
64
|
+
error: error instanceof Error ? error.message : String(error)
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
logger.error('Failed to list plugins', error instanceof Error ? error : String(error));
|
|
69
|
+
}
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Trust a plugin
|
|
75
|
+
*/
|
|
76
|
+
export async function pluginTrustCommand(name, options) {
|
|
77
|
+
const logger = new Logger(globalOptions);
|
|
78
|
+
try {
|
|
79
|
+
const loader = getPluginLoader(logger);
|
|
80
|
+
const plugins = loader.discoverPlugins();
|
|
81
|
+
// Find plugin
|
|
82
|
+
const plugin = plugins.find(p => p.name === name);
|
|
83
|
+
if (!plugin) {
|
|
84
|
+
throw new Error(`Plugin not found: ${name}`);
|
|
85
|
+
}
|
|
86
|
+
// Check if already trusted
|
|
87
|
+
if (loader.isTrusted(plugin)) {
|
|
88
|
+
if (logger.isJson()) {
|
|
89
|
+
logger.output({
|
|
90
|
+
success: true,
|
|
91
|
+
message: 'Plugin already trusted',
|
|
92
|
+
plugin: name
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
logger.info(chalk.yellow(`Plugin "${name}" is already trusted`));
|
|
97
|
+
}
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
// Show warning and get confirmation
|
|
101
|
+
if (!options.yes && !logger.isJson()) {
|
|
102
|
+
logger.warn(`ā ļø Security Warning: Trusting plugins`);
|
|
103
|
+
logger.info('');
|
|
104
|
+
logger.info(chalk.dim('Plugins can execute arbitrary code with access to:'));
|
|
105
|
+
if (plugin.permissions?.network) {
|
|
106
|
+
logger.info(chalk.dim(' ⢠Network requests'));
|
|
107
|
+
}
|
|
108
|
+
if (plugin.permissions?.filesystem) {
|
|
109
|
+
logger.info(chalk.dim(` ⢠Filesystem (${plugin.permissions.filesystem})`));
|
|
110
|
+
}
|
|
111
|
+
if (plugin.permissions?.environment) {
|
|
112
|
+
logger.info(chalk.dim(' ⢠Environment variables'));
|
|
113
|
+
}
|
|
114
|
+
if (plugin.permissions?.subprocess) {
|
|
115
|
+
logger.info(chalk.dim(' ⢠Subprocess execution'));
|
|
116
|
+
}
|
|
117
|
+
logger.info('');
|
|
118
|
+
logger.info(chalk.dim('Only trust plugins from sources you trust.'));
|
|
119
|
+
logger.info('');
|
|
120
|
+
const rl = readline.createInterface({ input: stdin, output: stdout });
|
|
121
|
+
const answer = await rl.question(chalk.yellow(`Trust plugin "${name}" v${plugin.version}? (y/N): `));
|
|
122
|
+
rl.close();
|
|
123
|
+
if (answer.toLowerCase() !== 'y' && answer.toLowerCase() !== 'yes') {
|
|
124
|
+
logger.info(chalk.dim('Cancelled'));
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// Trust plugin
|
|
129
|
+
loader.trustPlugin(name, plugin.version);
|
|
130
|
+
if (logger.isJson()) {
|
|
131
|
+
logger.output({
|
|
132
|
+
success: true,
|
|
133
|
+
plugin: name,
|
|
134
|
+
version: plugin.version
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
logger.success(`ā
Plugin "${name}" v${plugin.version} is now trusted`);
|
|
139
|
+
logger.info(chalk.dim(`Run 'ce-ace plugin enable ${name}' to enable it`));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
if (logger.isJson()) {
|
|
144
|
+
logger.output({
|
|
145
|
+
success: false,
|
|
146
|
+
error: error instanceof Error ? error.message : String(error)
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
logger.error('Failed to trust plugin', error instanceof Error ? error : String(error));
|
|
151
|
+
}
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Untrust a plugin
|
|
157
|
+
*/
|
|
158
|
+
export async function pluginUntrustCommand(name) {
|
|
159
|
+
const logger = new Logger(globalOptions);
|
|
160
|
+
try {
|
|
161
|
+
const loader = getPluginLoader(logger);
|
|
162
|
+
loader.untrustPlugin(name);
|
|
163
|
+
if (logger.isJson()) {
|
|
164
|
+
logger.output({
|
|
165
|
+
success: true,
|
|
166
|
+
plugin: name
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
logger.success(`š Plugin "${name}" is no longer trusted`);
|
|
171
|
+
logger.info(chalk.dim('The plugin has been automatically disabled'));
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
if (logger.isJson()) {
|
|
176
|
+
logger.output({
|
|
177
|
+
success: false,
|
|
178
|
+
error: error instanceof Error ? error.message : String(error)
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
logger.error('Failed to untrust plugin', error instanceof Error ? error : String(error));
|
|
183
|
+
}
|
|
184
|
+
process.exit(1);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Enable a plugin
|
|
189
|
+
*/
|
|
190
|
+
export async function pluginEnableCommand(name) {
|
|
191
|
+
const logger = new Logger(globalOptions);
|
|
192
|
+
try {
|
|
193
|
+
const loader = getPluginLoader(logger);
|
|
194
|
+
const plugins = loader.discoverPlugins();
|
|
195
|
+
// Find plugin
|
|
196
|
+
const plugin = plugins.find(p => p.name === name);
|
|
197
|
+
if (!plugin) {
|
|
198
|
+
throw new Error(`Plugin not found: ${name}`);
|
|
199
|
+
}
|
|
200
|
+
// Check if trusted
|
|
201
|
+
if (!loader.isTrusted(plugin)) {
|
|
202
|
+
throw new Error(`Plugin "${name}" is not trusted. Run "ce-ace plugin trust ${name}" first.`);
|
|
203
|
+
}
|
|
204
|
+
// Enable plugin
|
|
205
|
+
loader.enablePlugin(name);
|
|
206
|
+
if (logger.isJson()) {
|
|
207
|
+
logger.output({
|
|
208
|
+
success: true,
|
|
209
|
+
plugin: name
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
logger.success(`ā
Plugin "${name}" enabled`);
|
|
214
|
+
if (plugin.commands && plugin.commands.length > 0) {
|
|
215
|
+
logger.info(chalk.dim('Available commands:'));
|
|
216
|
+
for (const cmd of plugin.commands) {
|
|
217
|
+
logger.info(chalk.dim(` ⢠ce-ace ${name}:${cmd.name} - ${cmd.description}`));
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
if (logger.isJson()) {
|
|
224
|
+
logger.output({
|
|
225
|
+
success: false,
|
|
226
|
+
error: error instanceof Error ? error.message : String(error)
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
logger.error('Failed to enable plugin', error instanceof Error ? error : String(error));
|
|
231
|
+
}
|
|
232
|
+
process.exit(1);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Disable a plugin
|
|
237
|
+
*/
|
|
238
|
+
export async function pluginDisableCommand(name) {
|
|
239
|
+
const logger = new Logger(globalOptions);
|
|
240
|
+
try {
|
|
241
|
+
const loader = getPluginLoader(logger);
|
|
242
|
+
loader.disablePlugin(name);
|
|
243
|
+
if (logger.isJson()) {
|
|
244
|
+
logger.output({
|
|
245
|
+
success: true,
|
|
246
|
+
plugin: name
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
logger.success(`āøļø Plugin "${name}" disabled`);
|
|
251
|
+
logger.info(chalk.dim(`Run 'ce-ace plugin enable ${name}' to re-enable it`));
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
if (logger.isJson()) {
|
|
256
|
+
logger.output({
|
|
257
|
+
success: false,
|
|
258
|
+
error: error instanceof Error ? error.message : String(error)
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
logger.error('Failed to disable plugin', error instanceof Error ? error : String(error));
|
|
263
|
+
}
|
|
264
|
+
process.exit(1);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/commands/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Projects command - List and discover projects from ACE server
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Projects command options
|
|
6
|
+
*/
|
|
7
|
+
interface ProjectsOptions {
|
|
8
|
+
org?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* List all projects across all organizations
|
|
12
|
+
*/
|
|
13
|
+
export declare function projectsCommand(options?: ProjectsOptions): Promise<void>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=projects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/commands/projects.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;GAEG;AACH,UAAU,eAAe;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,GAAE,eAAoB,iBAuHlE"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Projects command - List and discover projects from ACE server
|
|
3
|
+
*/
|
|
4
|
+
import { globalOptions } from '../cli.js';
|
|
5
|
+
import { Logger } from '../services/logger.js';
|
|
6
|
+
import { ACEServerClient } from '../services/server-client.js';
|
|
7
|
+
import { loadConfig } from '../services/config-loader.js';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
/**
|
|
10
|
+
* List all projects across all organizations
|
|
11
|
+
*/
|
|
12
|
+
export async function projectsCommand(options = {}) {
|
|
13
|
+
const logger = new Logger(globalOptions);
|
|
14
|
+
try {
|
|
15
|
+
// Load global config
|
|
16
|
+
const config = loadConfig();
|
|
17
|
+
// Determine which orgs to query
|
|
18
|
+
const orgsToQuery = new Map();
|
|
19
|
+
if (options.org) {
|
|
20
|
+
// Filter to specific org
|
|
21
|
+
if (config.orgs && config.orgs[options.org]) {
|
|
22
|
+
orgsToQuery.set(options.org, {
|
|
23
|
+
apiToken: config.orgs[options.org].apiToken
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
throw new Error(`Organization ${options.org} not found in config`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// Query all orgs
|
|
32
|
+
if (config.orgs) {
|
|
33
|
+
for (const [orgId, orgConfig] of Object.entries(config.orgs)) {
|
|
34
|
+
orgsToQuery.set(orgId, {
|
|
35
|
+
apiToken: orgConfig.apiToken
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else if (config.apiToken) {
|
|
40
|
+
// Single-org mode - we don't know the org ID yet, will get from server
|
|
41
|
+
orgsToQuery.set('default', {
|
|
42
|
+
apiToken: config.apiToken
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
throw new Error('No API tokens found in config. Run `ce-ace config` to configure.');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const spinner = logger.spinner('Fetching projects from server...');
|
|
50
|
+
// Query each org
|
|
51
|
+
const allProjects = [];
|
|
52
|
+
for (const [orgId, orgConfig] of orgsToQuery.entries()) {
|
|
53
|
+
try {
|
|
54
|
+
// Create temporary context for this org
|
|
55
|
+
const tempContext = {
|
|
56
|
+
serverUrl: config.serverUrl,
|
|
57
|
+
apiToken: orgConfig.apiToken,
|
|
58
|
+
projectId: 'temp', // Not used for verifyToken
|
|
59
|
+
cacheTtlMinutes: config.cacheTtlMinutes
|
|
60
|
+
};
|
|
61
|
+
const client = new ACEServerClient(tempContext, logger);
|
|
62
|
+
const result = await client.verifyToken();
|
|
63
|
+
allProjects.push({
|
|
64
|
+
orgId: result.org_id,
|
|
65
|
+
orgName: result.org_name,
|
|
66
|
+
projects: result.projects
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
logger.debug(`Failed to query org ${orgId}: ${error instanceof Error ? error.message : String(error)}`);
|
|
71
|
+
// Continue with other orgs
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
spinner?.succeed();
|
|
75
|
+
// Output results
|
|
76
|
+
if (logger.isJson()) {
|
|
77
|
+
logger.output({
|
|
78
|
+
organizations: allProjects.map(org => ({
|
|
79
|
+
org_id: org.orgId,
|
|
80
|
+
org_name: org.orgName,
|
|
81
|
+
projects: org.projects
|
|
82
|
+
}))
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// Human-readable output
|
|
87
|
+
if (allProjects.length === 0) {
|
|
88
|
+
logger.info('No projects found');
|
|
89
|
+
logger.info(chalk.dim('Run `ce-ace config` to configure your API token'));
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
logger.info(chalk.bold(`\nš ACE Projects\n`));
|
|
93
|
+
for (const org of allProjects) {
|
|
94
|
+
logger.info(chalk.cyan.bold(`${org.orgName} (${org.orgId})`));
|
|
95
|
+
if (org.projects.length === 0) {
|
|
96
|
+
logger.info(chalk.dim(' No projects'));
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
for (const project of org.projects) {
|
|
100
|
+
logger.info(` ${chalk.green('ā')} ${project.project_name}`);
|
|
101
|
+
logger.info(chalk.dim(` ID: ${project.project_id}`));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
logger.info('');
|
|
105
|
+
}
|
|
106
|
+
logger.info(chalk.dim('Tip: Use --org <org_id> to filter to a specific organization\n'));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
if (logger.isJson()) {
|
|
111
|
+
logger.output({
|
|
112
|
+
success: false,
|
|
113
|
+
error: error instanceof Error ? error.message : String(error)
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
logger.error('Failed to fetch projects', error instanceof Error ? error : String(error));
|
|
118
|
+
}
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/commands/projects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session recording commands
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Start recording a session
|
|
6
|
+
*/
|
|
7
|
+
export declare function recordStartCommand(options: {
|
|
8
|
+
session?: string;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Stop recording the current session
|
|
12
|
+
*/
|
|
13
|
+
export declare function recordStopCommand(): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* List all recorded sessions
|
|
16
|
+
*/
|
|
17
|
+
export declare function recordListCommand(): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Export a session to a file
|
|
20
|
+
*/
|
|
21
|
+
export declare function recordExportCommand(sessionId: string, outputPath: string): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Delete a session recording
|
|
24
|
+
*/
|
|
25
|
+
export declare function recordDeleteCommand(sessionId: string, options: {
|
|
26
|
+
yes?: boolean;
|
|
27
|
+
}): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Get current recording status
|
|
30
|
+
*/
|
|
31
|
+
export declare function recordStatusCommand(): Promise<void>;
|
|
32
|
+
//# sourceMappingURL=record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/commands/record.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,iBAyCrE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,kBAoCtC;AAED;;GAEG;AACH,wBAAsB,iBAAiB,kBA6DtC;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iBA2B9E;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,iBA+CtF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,kBA2CxC"}
|