@defai.digital/cli 13.1.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/LICENSE +214 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +11 -0
- package/dist/bin.js.map +1 -0
- package/dist/bootstrap.d.ts +144 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +315 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/cli.d.ts +14 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +84 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/ability.d.ts +17 -0
- package/dist/commands/ability.d.ts.map +1 -0
- package/dist/commands/ability.js +286 -0
- package/dist/commands/ability.js.map +1 -0
- package/dist/commands/agent.d.ts +18 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +361 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/call.d.ts +15 -0
- package/dist/commands/call.d.ts.map +1 -0
- package/dist/commands/call.js +503 -0
- package/dist/commands/call.js.map +1 -0
- package/dist/commands/cleanup.d.ts +18 -0
- package/dist/commands/cleanup.d.ts.map +1 -0
- package/dist/commands/cleanup.js +300 -0
- package/dist/commands/cleanup.js.map +1 -0
- package/dist/commands/config.d.ts +16 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +513 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/discuss.d.ts +16 -0
- package/dist/commands/discuss.d.ts.map +1 -0
- package/dist/commands/discuss.js +700 -0
- package/dist/commands/discuss.js.map +1 -0
- package/dist/commands/doctor.d.ts +48 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +356 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/guard.d.ts +12 -0
- package/dist/commands/guard.d.ts.map +1 -0
- package/dist/commands/guard.js +225 -0
- package/dist/commands/guard.js.map +1 -0
- package/dist/commands/help.d.ts +11 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +180 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/history.d.ts +19 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +200 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/index.d.ts +23 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +26 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/iterate.d.ts +16 -0
- package/dist/commands/iterate.d.ts.map +1 -0
- package/dist/commands/iterate.js +72 -0
- package/dist/commands/iterate.js.map +1 -0
- package/dist/commands/list.d.ts +6 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +62 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/mcp.d.ts +16 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +57 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/resume.d.ts +18 -0
- package/dist/commands/resume.d.ts.map +1 -0
- package/dist/commands/resume.js +208 -0
- package/dist/commands/resume.js.map +1 -0
- package/dist/commands/review.d.ts +13 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +450 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/run.d.ts +6 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +158 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/scaffold.d.ts +20 -0
- package/dist/commands/scaffold.d.ts.map +1 -0
- package/dist/commands/scaffold.js +924 -0
- package/dist/commands/scaffold.js.map +1 -0
- package/dist/commands/session.d.ts +20 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +504 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/setup.d.ts +14 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +762 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/status.d.ts +17 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +227 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/trace.d.ts +6 -0
- package/dist/commands/trace.d.ts.map +1 -0
- package/dist/commands/trace.js +204 -0
- package/dist/commands/trace.js.map +1 -0
- package/dist/commands/update.d.ts +24 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +296 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/parser.d.ts +14 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +288 -0
- package/dist/parser.js.map +1 -0
- package/dist/types.d.ts +91 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +29 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/dangerous-op-guard.d.ts +33 -0
- package/dist/utils/dangerous-op-guard.d.ts.map +1 -0
- package/dist/utils/dangerous-op-guard.js +112 -0
- package/dist/utils/dangerous-op-guard.js.map +1 -0
- package/dist/utils/database.d.ts +85 -0
- package/dist/utils/database.d.ts.map +1 -0
- package/dist/utils/database.js +184 -0
- package/dist/utils/database.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/provider-factory.d.ts +31 -0
- package/dist/utils/provider-factory.d.ts.map +1 -0
- package/dist/utils/provider-factory.js +109 -0
- package/dist/utils/provider-factory.js.map +1 -0
- package/dist/utils/storage-instances.d.ts +19 -0
- package/dist/utils/storage-instances.d.ts.map +1 -0
- package/dist/utils/storage-instances.js +20 -0
- package/dist/utils/storage-instances.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guard Command
|
|
3
|
+
*
|
|
4
|
+
* Post-check AI coding governance.
|
|
5
|
+
* Usage: ax guard check --policy <policy> --target <target>
|
|
6
|
+
*/
|
|
7
|
+
import { guardCheck, listPolicies, validatePolicyId, } from '@defai.digital/guard';
|
|
8
|
+
/**
|
|
9
|
+
* ANSI color codes for terminal output
|
|
10
|
+
*/
|
|
11
|
+
const COLORS = {
|
|
12
|
+
reset: '\x1b[0m',
|
|
13
|
+
green: '\x1b[32m',
|
|
14
|
+
red: '\x1b[31m',
|
|
15
|
+
yellow: '\x1b[33m',
|
|
16
|
+
cyan: '\x1b[36m',
|
|
17
|
+
bold: '\x1b[1m',
|
|
18
|
+
dim: '\x1b[2m',
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Status icons
|
|
22
|
+
*/
|
|
23
|
+
const ICONS = {
|
|
24
|
+
PASS: `${COLORS.green}\u2713${COLORS.reset}`,
|
|
25
|
+
FAIL: `${COLORS.red}\u2717${COLORS.reset}`,
|
|
26
|
+
WARN: `${COLORS.yellow}\u26A0${COLORS.reset}`,
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Formats guard result for text output
|
|
30
|
+
*/
|
|
31
|
+
function formatGuardResult(result, verbose) {
|
|
32
|
+
const lines = [];
|
|
33
|
+
// Header
|
|
34
|
+
lines.push('');
|
|
35
|
+
lines.push(`${COLORS.bold}AX Guard Check${COLORS.reset}`);
|
|
36
|
+
lines.push(`Policy: ${result.policyId}`);
|
|
37
|
+
lines.push(`Target: ${result.target}`);
|
|
38
|
+
lines.push('');
|
|
39
|
+
// Status banner
|
|
40
|
+
const statusIcon = ICONS[result.status];
|
|
41
|
+
const statusColor = result.status === 'PASS'
|
|
42
|
+
? COLORS.green
|
|
43
|
+
: result.status === 'FAIL'
|
|
44
|
+
? COLORS.red
|
|
45
|
+
: COLORS.yellow;
|
|
46
|
+
lines.push(`${statusIcon} ${statusColor}${COLORS.bold}${result.status}${COLORS.reset}: ${result.summary}`);
|
|
47
|
+
lines.push('');
|
|
48
|
+
// Gate results
|
|
49
|
+
if (result.gates.length > 0) {
|
|
50
|
+
lines.push(`${COLORS.bold}Gate Results${COLORS.reset}`);
|
|
51
|
+
for (const gate of result.gates) {
|
|
52
|
+
const gateIcon = ICONS[gate.status];
|
|
53
|
+
lines.push(` ${gateIcon} ${gate.gate}: ${gate.message}`);
|
|
54
|
+
if (verbose && gate.details !== undefined) {
|
|
55
|
+
const detailsStr = JSON.stringify(gate.details, null, 2)
|
|
56
|
+
.split('\n')
|
|
57
|
+
.map((line) => ` ${COLORS.dim}${line}${COLORS.reset}`)
|
|
58
|
+
.join('\n');
|
|
59
|
+
lines.push(detailsStr);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
lines.push('');
|
|
63
|
+
}
|
|
64
|
+
// Suggestions
|
|
65
|
+
if (result.suggestions.length > 0) {
|
|
66
|
+
lines.push(`${COLORS.bold}Suggested Actions${COLORS.reset}`);
|
|
67
|
+
for (const suggestion of result.suggestions) {
|
|
68
|
+
lines.push(` ${COLORS.dim}\u2022${COLORS.reset} ${suggestion}`);
|
|
69
|
+
}
|
|
70
|
+
lines.push('');
|
|
71
|
+
}
|
|
72
|
+
return lines.join('\n');
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Parses guard subcommand and options
|
|
76
|
+
*/
|
|
77
|
+
function parseGuardArgs(args, options) {
|
|
78
|
+
const subcommand = args[0] ?? 'help';
|
|
79
|
+
// Parse --policy and --target from remaining args
|
|
80
|
+
let policy = options.workflowId; // Reuse workflowId for policy
|
|
81
|
+
let target;
|
|
82
|
+
for (let i = 1; i < args.length; i++) {
|
|
83
|
+
const arg = args[i];
|
|
84
|
+
if (arg === '--policy' && i + 1 < args.length) {
|
|
85
|
+
policy = args[++i];
|
|
86
|
+
}
|
|
87
|
+
else if (arg === '--target' && i + 1 < args.length) {
|
|
88
|
+
target = args[++i];
|
|
89
|
+
}
|
|
90
|
+
else if (target === undefined && arg !== undefined && !arg.startsWith('-')) {
|
|
91
|
+
// First positional arg after subcommand is target
|
|
92
|
+
target = arg;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return { subcommand, policy, target };
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Shows guard help
|
|
99
|
+
*/
|
|
100
|
+
function showGuardHelp() {
|
|
101
|
+
const policies = listPolicies();
|
|
102
|
+
const helpText = `
|
|
103
|
+
${COLORS.bold}AX Guard - Post-check AI Coding Governance${COLORS.reset}
|
|
104
|
+
|
|
105
|
+
Usage:
|
|
106
|
+
ax guard check --policy <policy> --target <target>
|
|
107
|
+
ax guard list
|
|
108
|
+
ax guard help
|
|
109
|
+
|
|
110
|
+
Commands:
|
|
111
|
+
check Run governance checks on current changes
|
|
112
|
+
list List available policies
|
|
113
|
+
help Show this help message
|
|
114
|
+
|
|
115
|
+
Options:
|
|
116
|
+
--policy <policy> Policy to apply (required for check)
|
|
117
|
+
--target <target> Target name, e.g., provider name (required for check)
|
|
118
|
+
--verbose Show detailed gate results
|
|
119
|
+
|
|
120
|
+
Available Policies:
|
|
121
|
+
${policies.map((p) => ` - ${p}`).join('\n')}
|
|
122
|
+
|
|
123
|
+
Examples:
|
|
124
|
+
ax guard check --policy provider-refactor --target openai
|
|
125
|
+
ax guard check --policy bugfix --target fix-123 --verbose
|
|
126
|
+
ax guard list
|
|
127
|
+
`.trim();
|
|
128
|
+
return {
|
|
129
|
+
success: true,
|
|
130
|
+
message: helpText,
|
|
131
|
+
data: undefined,
|
|
132
|
+
exitCode: 0,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Lists available policies
|
|
137
|
+
*/
|
|
138
|
+
function listPoliciesCommand() {
|
|
139
|
+
const policies = listPolicies();
|
|
140
|
+
return {
|
|
141
|
+
success: true,
|
|
142
|
+
message: `Available policies:\n${policies.map((p) => ` - ${p}`).join('\n')}`,
|
|
143
|
+
data: policies,
|
|
144
|
+
exitCode: 0,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Runs guard check
|
|
149
|
+
*/
|
|
150
|
+
async function runGuardCheck(policy, target, options) {
|
|
151
|
+
// Validate policy
|
|
152
|
+
if (!validatePolicyId(policy)) {
|
|
153
|
+
const available = listPolicies();
|
|
154
|
+
return {
|
|
155
|
+
success: false,
|
|
156
|
+
message: `Unknown policy: ${policy}\nAvailable policies: ${available.join(', ')}`,
|
|
157
|
+
data: undefined,
|
|
158
|
+
exitCode: 1,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
const result = await guardCheck({
|
|
163
|
+
policy,
|
|
164
|
+
target,
|
|
165
|
+
format: options.format,
|
|
166
|
+
verbose: options.verbose,
|
|
167
|
+
});
|
|
168
|
+
if (options.format === 'json') {
|
|
169
|
+
return {
|
|
170
|
+
success: result.status !== 'FAIL',
|
|
171
|
+
message: undefined,
|
|
172
|
+
data: result,
|
|
173
|
+
exitCode: result.status === 'FAIL' ? 1 : 0,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
return {
|
|
177
|
+
success: result.status !== 'FAIL',
|
|
178
|
+
message: formatGuardResult(result, options.verbose),
|
|
179
|
+
data: result,
|
|
180
|
+
exitCode: result.status === 'FAIL' ? 1 : 0,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
185
|
+
return {
|
|
186
|
+
success: false,
|
|
187
|
+
message: `Guard check failed: ${message}`,
|
|
188
|
+
data: undefined,
|
|
189
|
+
exitCode: 1,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Guard command handler
|
|
195
|
+
*/
|
|
196
|
+
export async function guardCommand(args, options) {
|
|
197
|
+
const { subcommand, policy, target } = parseGuardArgs(args, options);
|
|
198
|
+
switch (subcommand) {
|
|
199
|
+
case 'check': {
|
|
200
|
+
if (policy === undefined) {
|
|
201
|
+
return {
|
|
202
|
+
success: false,
|
|
203
|
+
message: 'Error: --policy is required\n\nRun "ax guard help" for usage.',
|
|
204
|
+
data: undefined,
|
|
205
|
+
exitCode: 1,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
if (target === undefined) {
|
|
209
|
+
return {
|
|
210
|
+
success: false,
|
|
211
|
+
message: 'Error: --target is required\n\nRun "ax guard help" for usage.',
|
|
212
|
+
data: undefined,
|
|
213
|
+
exitCode: 1,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
return runGuardCheck(policy, target, options);
|
|
217
|
+
}
|
|
218
|
+
case 'list':
|
|
219
|
+
return listPoliciesCommand();
|
|
220
|
+
case 'help':
|
|
221
|
+
default:
|
|
222
|
+
return showGuardHelp();
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/commands/guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CommandResult, CLIOptions } from '../types.js';
|
|
2
|
+
export declare const CLI_VERSION: string;
|
|
3
|
+
/**
|
|
4
|
+
* Handles the 'help' command
|
|
5
|
+
*/
|
|
6
|
+
export declare function helpCommand(_args: string[], _options: CLIOptions): Promise<CommandResult>;
|
|
7
|
+
/**
|
|
8
|
+
* Handles the 'version' command
|
|
9
|
+
*/
|
|
10
|
+
export declare function versionCommand(_args: string[], _options: CLIOptions): Promise<CommandResult>;
|
|
11
|
+
//# sourceMappingURL=help.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAO7D,eAAO,MAAM,WAAW,QAAc,CAAC;AAyJvC;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,UAAU,GACnB,OAAO,CAAC,aAAa,CAAC,CAOxB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,UAAU,GACnB,OAAO,CAAC,aAAa,CAAC,CAOxB"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
/**
|
|
3
|
+
* Read CLI version from package.json
|
|
4
|
+
*/
|
|
5
|
+
const require = createRequire(import.meta.url);
|
|
6
|
+
const pkg = require('../../package.json');
|
|
7
|
+
export const CLI_VERSION = pkg.version;
|
|
8
|
+
/**
|
|
9
|
+
* Help text for the CLI
|
|
10
|
+
*/
|
|
11
|
+
const HELP_TEXT = `
|
|
12
|
+
AutomatosX - AI-powered workflow automation
|
|
13
|
+
|
|
14
|
+
Usage:
|
|
15
|
+
ax <command> [options]
|
|
16
|
+
|
|
17
|
+
Commands:
|
|
18
|
+
setup Initialize AutomatosX configuration
|
|
19
|
+
config <subcommand> Manage configuration (show, get, set, reset, path)
|
|
20
|
+
run <workflow-id> Execute a workflow
|
|
21
|
+
list List available workflows
|
|
22
|
+
trace [trace-id] View trace information
|
|
23
|
+
doctor [provider] Check system health and provider CLIs
|
|
24
|
+
guard <subcommand> Post-check AI coding governance
|
|
25
|
+
call <provider> Call an AI provider directly
|
|
26
|
+
agent <subcommand> Manage agents (list, get, register, run, remove)
|
|
27
|
+
session <subcommand> Manage sessions (list, get, create, join, complete)
|
|
28
|
+
review <subcommand> AI-powered code review (analyze, list)
|
|
29
|
+
scaffold <subcommand> Scaffold contract-first components
|
|
30
|
+
discuss <topic> Multi-model discussion and consensus
|
|
31
|
+
ability <subcommand> Manage abilities (list, inject)
|
|
32
|
+
mcp <subcommand> MCP server for AI coding assistants
|
|
33
|
+
status Show current session status
|
|
34
|
+
resume Resume a previous session
|
|
35
|
+
history View execution history
|
|
36
|
+
cleanup Clean up old sessions and data
|
|
37
|
+
iterate Iterative development loop
|
|
38
|
+
update Check for updates and upgrade CLI
|
|
39
|
+
help Show this help message
|
|
40
|
+
version Show version information
|
|
41
|
+
|
|
42
|
+
Config Subcommands:
|
|
43
|
+
config show Show current configuration
|
|
44
|
+
config get <path> Get a specific config value
|
|
45
|
+
config set <path> <v> Set a config value
|
|
46
|
+
config reset Reset configuration to defaults
|
|
47
|
+
config path Show config file paths
|
|
48
|
+
|
|
49
|
+
Agent Subcommands:
|
|
50
|
+
agent list List registered agents
|
|
51
|
+
agent get <id> Get agent details
|
|
52
|
+
agent register Register a new agent from JSON input
|
|
53
|
+
agent run <id> Execute an agent
|
|
54
|
+
agent remove <id> Remove an agent
|
|
55
|
+
|
|
56
|
+
Session Subcommands:
|
|
57
|
+
session list List sessions
|
|
58
|
+
session get <id> Get session details
|
|
59
|
+
session create Create a new session
|
|
60
|
+
session join <id> Join a session
|
|
61
|
+
session leave <id> Leave a session
|
|
62
|
+
session complete <id> Complete a session
|
|
63
|
+
session fail <id> Fail a session
|
|
64
|
+
|
|
65
|
+
Review Subcommands:
|
|
66
|
+
review analyze <paths> AI-powered code review with focus modes
|
|
67
|
+
review list List past code reviews
|
|
68
|
+
|
|
69
|
+
Focus modes: --focus security|architecture|performance|maintainability|correctness|all
|
|
70
|
+
|
|
71
|
+
Scaffold Subcommands:
|
|
72
|
+
scaffold project <name> Generate new project from template
|
|
73
|
+
scaffold contract <name> Generate Zod schema and invariants
|
|
74
|
+
scaffold domain <name> Generate complete domain package
|
|
75
|
+
scaffold guard <id> Generate guard policy
|
|
76
|
+
|
|
77
|
+
Scaffold Options:
|
|
78
|
+
-t, --template <type> Template: monorepo or standalone (default: standalone)
|
|
79
|
+
-m, --domain <name> Primary domain name (required for project)
|
|
80
|
+
-d, --description <desc> Domain description
|
|
81
|
+
-o, --output <path> Output directory
|
|
82
|
+
-s, --scope <scope> Package scope (default: @myorg)
|
|
83
|
+
-r, --radius <n> Change radius limit (default: 3)
|
|
84
|
+
--no-tests Skip test scaffolds
|
|
85
|
+
--no-guard Skip guard policy
|
|
86
|
+
--dry-run Preview without writing files
|
|
87
|
+
|
|
88
|
+
Discuss Options:
|
|
89
|
+
discuss <topic> Start multi-model discussion
|
|
90
|
+
discuss quick <topic> Quick 2-3 model synthesis
|
|
91
|
+
|
|
92
|
+
Discuss Flags:
|
|
93
|
+
--providers <list> Comma-separated providers (default: claude,glm,qwen,gemini)
|
|
94
|
+
--pattern <type> Pattern: synthesis, voting, debate, critique, round-robin
|
|
95
|
+
--rounds <n> Number of discussion rounds (default: 2)
|
|
96
|
+
--consensus <method> Method: synthesis, voting, moderator, unanimous, majority
|
|
97
|
+
--context <text> Additional context for discussion
|
|
98
|
+
--verbose, -v Show detailed progress
|
|
99
|
+
|
|
100
|
+
Ability Subcommands:
|
|
101
|
+
ability list List available abilities
|
|
102
|
+
ability inject Inject abilities into context
|
|
103
|
+
|
|
104
|
+
MCP Subcommands:
|
|
105
|
+
mcp server Start MCP server (stdio transport)
|
|
106
|
+
mcp serve Alias for 'server'
|
|
107
|
+
|
|
108
|
+
Options:
|
|
109
|
+
-h, --help Show help
|
|
110
|
+
-v, --verbose Enable verbose output
|
|
111
|
+
-V, --version Show version
|
|
112
|
+
--format <format> Output format: text (default) or json
|
|
113
|
+
--workflow-dir <dir> Path to workflow files directory
|
|
114
|
+
--workflow-id <id> Workflow ID for run command
|
|
115
|
+
--trace-id <id> Trace ID for trace command
|
|
116
|
+
--limit <n> Limit number of results
|
|
117
|
+
--input <json> Input JSON for workflow execution
|
|
118
|
+
|
|
119
|
+
Examples:
|
|
120
|
+
ax setup
|
|
121
|
+
ax setup --force
|
|
122
|
+
ax config show
|
|
123
|
+
ax config get logLevel
|
|
124
|
+
ax config set logLevel debug
|
|
125
|
+
ax run my-workflow
|
|
126
|
+
ax run my-workflow --input '{"key": "value"}'
|
|
127
|
+
ax list --format json
|
|
128
|
+
ax trace
|
|
129
|
+
ax trace abc123-def456 --verbose
|
|
130
|
+
ax doctor
|
|
131
|
+
ax doctor claude --verbose
|
|
132
|
+
ax guard check --policy provider-refactor --target openai
|
|
133
|
+
ax guard list
|
|
134
|
+
ax call gemini "Summarize this text"
|
|
135
|
+
ax call claude --file ./README.md "Explain in Chinese"
|
|
136
|
+
ax agent list
|
|
137
|
+
ax agent get code-reviewer
|
|
138
|
+
ax agent run code-reviewer --input '{"query": "Review this code"}'
|
|
139
|
+
ax session create --input '{"initiator": "agent-1", "task": "Review code"}'
|
|
140
|
+
ax session get <session-id>
|
|
141
|
+
ax review analyze src/ --focus security
|
|
142
|
+
ax review analyze src/ --focus maintainability
|
|
143
|
+
ax review list --limit 10
|
|
144
|
+
ax scaffold project my-app -m order -t standalone
|
|
145
|
+
ax scaffold project ecommerce -m order -t monorepo -s @myorg
|
|
146
|
+
ax scaffold contract payment -d "Payment processing domain"
|
|
147
|
+
ax scaffold domain payment --no-tests
|
|
148
|
+
ax scaffold guard payment-dev -r 3
|
|
149
|
+
ax scaffold project my-app -m order --dry-run
|
|
150
|
+
ax discuss "What is the best approach for microservices?"
|
|
151
|
+
ax discuss --pattern debate "Monolith vs microservices for startups"
|
|
152
|
+
ax discuss quick "Best testing strategy for APIs"
|
|
153
|
+
ax ability list
|
|
154
|
+
ax update
|
|
155
|
+
ax update --check
|
|
156
|
+
ax update --yes
|
|
157
|
+
`.trim();
|
|
158
|
+
/**
|
|
159
|
+
* Handles the 'help' command
|
|
160
|
+
*/
|
|
161
|
+
export function helpCommand(_args, _options) {
|
|
162
|
+
return Promise.resolve({
|
|
163
|
+
success: true,
|
|
164
|
+
message: HELP_TEXT,
|
|
165
|
+
data: undefined,
|
|
166
|
+
exitCode: 0,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Handles the 'version' command
|
|
171
|
+
*/
|
|
172
|
+
export function versionCommand(_args, _options) {
|
|
173
|
+
return Promise.resolve({
|
|
174
|
+
success: true,
|
|
175
|
+
message: `ax version ${CLI_VERSION}`,
|
|
176
|
+
data: { version: CLI_VERSION },
|
|
177
|
+
exitCode: 0,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;GAEG;AACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AACjE,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC;AAEvC;;GAEG;AACH,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkJjB,CAAC,IAAI,EAAE,CAAC;AAET;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,KAAe,EACf,QAAoB;IAEpB,OAAO,OAAO,CAAC,OAAO,CAAC;QACrB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,CAAC;KACZ,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAe,EACf,QAAoB;IAEpB,OAAO,OAAO,CAAC,OAAO,CAAC;QACrB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,cAAc,WAAW,EAAE;QACpC,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;QAC9B,QAAQ,EAAE,CAAC;KACZ,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* History Command
|
|
3
|
+
*
|
|
4
|
+
* View past agent run history.
|
|
5
|
+
* Provides visibility into completed, failed, and running executions.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* ax history # Show last 10 runs
|
|
9
|
+
* ax history --limit=20 # Show last 20 runs
|
|
10
|
+
* ax history --agent=coder # Filter by agent
|
|
11
|
+
* ax history --status=failed # Show only failed runs
|
|
12
|
+
* ax history --verbose # Show full details
|
|
13
|
+
*/
|
|
14
|
+
import type { CommandResult, CLIOptions } from '../types.js';
|
|
15
|
+
/**
|
|
16
|
+
* History command handler
|
|
17
|
+
*/
|
|
18
|
+
export declare function historyCommand(_args: string[], options: CLIOptions): Promise<CommandResult>;
|
|
19
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA4B7D;;GAEG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,aAAa,CAAC,CAuFxB"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* History Command
|
|
3
|
+
*
|
|
4
|
+
* View past agent run history.
|
|
5
|
+
* Provides visibility into completed, failed, and running executions.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* ax history # Show last 10 runs
|
|
9
|
+
* ax history --limit=20 # Show last 20 runs
|
|
10
|
+
* ax history --agent=coder # Filter by agent
|
|
11
|
+
* ax history --status=failed # Show only failed runs
|
|
12
|
+
* ax history --verbose # Show full details
|
|
13
|
+
*/
|
|
14
|
+
import { safeValidateHistoryOptions, } from '@defai.digital/contracts';
|
|
15
|
+
import { createSessionManager, createSessionStore, DEFAULT_SESSION_DOMAIN_CONFIG, } from '@defai.digital/session-domain';
|
|
16
|
+
// Lazy-initialized session manager (shared across commands)
|
|
17
|
+
let sessionManager;
|
|
18
|
+
/**
|
|
19
|
+
* Get or create the session manager instance
|
|
20
|
+
*/
|
|
21
|
+
function getSessionManager() {
|
|
22
|
+
if (sessionManager === undefined) {
|
|
23
|
+
const store = createSessionStore();
|
|
24
|
+
sessionManager = createSessionManager(store, DEFAULT_SESSION_DOMAIN_CONFIG);
|
|
25
|
+
}
|
|
26
|
+
return sessionManager;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* History command handler
|
|
30
|
+
*/
|
|
31
|
+
export async function historyCommand(_args, options) {
|
|
32
|
+
// Parse and validate options
|
|
33
|
+
const opts = extractHistoryOptions(options);
|
|
34
|
+
const validation = safeValidateHistoryOptions(opts);
|
|
35
|
+
if (!validation.success) {
|
|
36
|
+
return {
|
|
37
|
+
success: false,
|
|
38
|
+
exitCode: 1,
|
|
39
|
+
message: `Invalid options: ${validation.error.errors.map((e) => e.message).join(', ')}`,
|
|
40
|
+
data: undefined,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const historyOpts = validation.data;
|
|
44
|
+
// Get run history
|
|
45
|
+
// Note: This would integrate with session-domain's getRunHistory
|
|
46
|
+
const runs = await getRunHistory(historyOpts.agent, historyOpts.status, historyOpts.limit ?? 10);
|
|
47
|
+
if (runs.length === 0) {
|
|
48
|
+
return {
|
|
49
|
+
success: true,
|
|
50
|
+
exitCode: 0,
|
|
51
|
+
message: historyOpts.agent
|
|
52
|
+
? `No runs found for agent: ${historyOpts.agent}`
|
|
53
|
+
: 'No runs found',
|
|
54
|
+
data: { runs: [] },
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
// Format for JSON output
|
|
58
|
+
if (historyOpts.format === 'json') {
|
|
59
|
+
return {
|
|
60
|
+
success: true,
|
|
61
|
+
exitCode: 0,
|
|
62
|
+
message: undefined,
|
|
63
|
+
data: { runs },
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
// Format for text output
|
|
67
|
+
console.log('');
|
|
68
|
+
console.log('Run History:');
|
|
69
|
+
console.log('');
|
|
70
|
+
if (historyOpts.verbose) {
|
|
71
|
+
// Detailed view
|
|
72
|
+
for (const run of runs) {
|
|
73
|
+
console.log(`${formatStatus(run.status)} ${run.agentId}`);
|
|
74
|
+
console.log(` Task: ${truncate(run.task, 60)}`);
|
|
75
|
+
console.log(` Started: ${formatAge(run.startedAt)}`);
|
|
76
|
+
console.log(` Duration: ${formatDuration(run.durationMs)}`);
|
|
77
|
+
console.log(` Steps: ${run.stepsCompleted}`);
|
|
78
|
+
if (run.error) {
|
|
79
|
+
console.log(` Error: ${run.error}`);
|
|
80
|
+
}
|
|
81
|
+
console.log('');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
// Compact view
|
|
86
|
+
console.log('Status Agent Started Duration Task');
|
|
87
|
+
console.log('------ -------------- ---------- -------- ----');
|
|
88
|
+
for (const run of runs) {
|
|
89
|
+
const status = formatStatus(run.status);
|
|
90
|
+
const agent = run.agentId.slice(0, 14).padEnd(14);
|
|
91
|
+
const started = formatAge(run.startedAt).padEnd(10);
|
|
92
|
+
const duration = formatDuration(run.durationMs).padEnd(8);
|
|
93
|
+
const task = truncate(run.task, 40);
|
|
94
|
+
console.log(`${status} ${agent} ${started} ${duration} ${task}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
console.log('');
|
|
98
|
+
return {
|
|
99
|
+
success: true,
|
|
100
|
+
exitCode: 0,
|
|
101
|
+
message: undefined,
|
|
102
|
+
data: { runs, count: runs.length },
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Extract history options from CLI options
|
|
107
|
+
*/
|
|
108
|
+
function extractHistoryOptions(options) {
|
|
109
|
+
const opts = options;
|
|
110
|
+
return {
|
|
111
|
+
agent: opts.agent,
|
|
112
|
+
status: opts.status,
|
|
113
|
+
limit: opts.limit ?? 10,
|
|
114
|
+
verbose: options.verbose,
|
|
115
|
+
format: options.format,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get run history from session-domain
|
|
120
|
+
*/
|
|
121
|
+
async function getRunHistory(agentId, status, limit) {
|
|
122
|
+
try {
|
|
123
|
+
const manager = getSessionManager();
|
|
124
|
+
// Build options object conforming to HistoryQuery contract
|
|
125
|
+
// limit is required in the contract (has default in schema)
|
|
126
|
+
const options = {
|
|
127
|
+
limit: limit ?? 10, // Default to 10 if not provided
|
|
128
|
+
};
|
|
129
|
+
if (agentId !== undefined) {
|
|
130
|
+
options.agentId = agentId;
|
|
131
|
+
}
|
|
132
|
+
if (status !== undefined) {
|
|
133
|
+
options.status = status;
|
|
134
|
+
}
|
|
135
|
+
const domainRecords = await manager.getRunHistory(options);
|
|
136
|
+
// Map domain records to contract RunRecord type
|
|
137
|
+
// They should be compatible but we cast explicitly for safety
|
|
138
|
+
return domainRecords;
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
// Return empty array on error
|
|
142
|
+
return [];
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Format run status for display
|
|
147
|
+
*/
|
|
148
|
+
function formatStatus(status) {
|
|
149
|
+
switch (status) {
|
|
150
|
+
case 'completed':
|
|
151
|
+
return '[OK] ';
|
|
152
|
+
case 'failed':
|
|
153
|
+
return '[FAIL]';
|
|
154
|
+
case 'running':
|
|
155
|
+
return '[... ]';
|
|
156
|
+
case 'cancelled':
|
|
157
|
+
return '[STOP]';
|
|
158
|
+
default:
|
|
159
|
+
return '[?] ';
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Format duration in milliseconds
|
|
164
|
+
*/
|
|
165
|
+
function formatDuration(ms) {
|
|
166
|
+
if (ms === undefined)
|
|
167
|
+
return '-';
|
|
168
|
+
if (ms < 1000)
|
|
169
|
+
return `${ms}ms`;
|
|
170
|
+
if (ms < 60000)
|
|
171
|
+
return `${Math.round(ms / 1000)}s`;
|
|
172
|
+
if (ms < 3600000)
|
|
173
|
+
return `${Math.round(ms / 60000)}m`;
|
|
174
|
+
return `${Math.round(ms / 3600000)}h`;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Format a datetime as human-readable age
|
|
178
|
+
*/
|
|
179
|
+
function formatAge(isoDate) {
|
|
180
|
+
const diff = Date.now() - new Date(isoDate).getTime();
|
|
181
|
+
const minutes = Math.floor(diff / 60000);
|
|
182
|
+
const hours = Math.floor(minutes / 60);
|
|
183
|
+
const days = Math.floor(hours / 24);
|
|
184
|
+
if (days > 0)
|
|
185
|
+
return `${days}d ago`;
|
|
186
|
+
if (hours > 0)
|
|
187
|
+
return `${hours}h ago`;
|
|
188
|
+
if (minutes > 0)
|
|
189
|
+
return `${minutes}m ago`;
|
|
190
|
+
return 'just now';
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Truncate string with ellipsis
|
|
194
|
+
*/
|
|
195
|
+
function truncate(str, maxLength) {
|
|
196
|
+
if (str.length <= maxLength)
|
|
197
|
+
return str;
|
|
198
|
+
return str.slice(0, maxLength - 3) + '...';
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
|