@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,23 @@
|
|
|
1
|
+
export { runCommand } from './run.js';
|
|
2
|
+
export { listCommand } from './list.js';
|
|
3
|
+
export { traceCommand } from './trace.js';
|
|
4
|
+
export { doctorCommand } from './doctor.js';
|
|
5
|
+
export { guardCommand } from './guard.js';
|
|
6
|
+
export { callCommand } from './call.js';
|
|
7
|
+
export { agentCommand } from './agent.js';
|
|
8
|
+
export { abilityCommand } from './ability.js';
|
|
9
|
+
export { sessionCommand } from './session.js';
|
|
10
|
+
export { setupCommand } from './setup.js';
|
|
11
|
+
export { configCommand } from './config.js';
|
|
12
|
+
export { reviewCommand } from './review.js';
|
|
13
|
+
export { scaffoldCommand } from './scaffold.js';
|
|
14
|
+
export { discussCommand } from './discuss.js';
|
|
15
|
+
export { helpCommand, versionCommand, CLI_VERSION } from './help.js';
|
|
16
|
+
export { resumeCommand } from './resume.js';
|
|
17
|
+
export { historyCommand } from './history.js';
|
|
18
|
+
export { statusCommand } from './status.js';
|
|
19
|
+
export { cleanupCommand } from './cleanup.js';
|
|
20
|
+
export { iterateCommand } from './iterate.js';
|
|
21
|
+
export { mcpCommand } from './mcp.js';
|
|
22
|
+
export { updateCommand } from './update.js';
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGrE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export { runCommand } from './run.js';
|
|
2
|
+
export { listCommand } from './list.js';
|
|
3
|
+
export { traceCommand } from './trace.js';
|
|
4
|
+
export { doctorCommand } from './doctor.js';
|
|
5
|
+
export { guardCommand } from './guard.js';
|
|
6
|
+
export { callCommand } from './call.js';
|
|
7
|
+
export { agentCommand } from './agent.js';
|
|
8
|
+
export { abilityCommand } from './ability.js';
|
|
9
|
+
export { sessionCommand } from './session.js';
|
|
10
|
+
export { setupCommand } from './setup.js';
|
|
11
|
+
export { configCommand } from './config.js';
|
|
12
|
+
export { reviewCommand } from './review.js';
|
|
13
|
+
export { scaffoldCommand } from './scaffold.js';
|
|
14
|
+
export { discussCommand } from './discuss.js';
|
|
15
|
+
export { helpCommand, versionCommand, CLI_VERSION } from './help.js';
|
|
16
|
+
// High-value additions
|
|
17
|
+
export { resumeCommand } from './resume.js';
|
|
18
|
+
export { historyCommand } from './history.js';
|
|
19
|
+
export { statusCommand } from './status.js';
|
|
20
|
+
export { cleanupCommand } from './cleanup.js';
|
|
21
|
+
export { iterateCommand } from './iterate.js';
|
|
22
|
+
// MCP server
|
|
23
|
+
export { mcpCommand } from './mcp.js';
|
|
24
|
+
// Update
|
|
25
|
+
export { updateCommand } from './update.js';
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAErE,uBAAuB;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,aAAa;AACb,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Iterate Command - Shorthand for iterate mode
|
|
3
|
+
*
|
|
4
|
+
* Usage: ax iterate <provider> <prompt>
|
|
5
|
+
* ax iterate --max-iterations 50 <provider> <prompt>
|
|
6
|
+
*
|
|
7
|
+
* This is a convenience command that wraps `ax call --iterate`.
|
|
8
|
+
*/
|
|
9
|
+
import type { CommandResult, CLIOptions } from '../types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Iterate command handler
|
|
12
|
+
*
|
|
13
|
+
* This command is a convenience wrapper around `ax call --iterate`.
|
|
14
|
+
*/
|
|
15
|
+
export declare function iterateCommand(args: string[], options: CLIOptions): Promise<CommandResult>;
|
|
16
|
+
//# sourceMappingURL=iterate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iterate.d.ts","sourceRoot":"","sources":["../../src/commands/iterate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkD7D;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,aAAa,CAAC,CAaxB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Iterate Command - Shorthand for iterate mode
|
|
3
|
+
*
|
|
4
|
+
* Usage: ax iterate <provider> <prompt>
|
|
5
|
+
* ax iterate --max-iterations 50 <provider> <prompt>
|
|
6
|
+
*
|
|
7
|
+
* This is a convenience command that wraps `ax call --iterate`.
|
|
8
|
+
*/
|
|
9
|
+
import { callCommand } from './call.js';
|
|
10
|
+
import { DEFAULT_MAX_ITERATIONS, DEFAULT_MAX_TIME_MS } from '@defai.digital/iterate-domain';
|
|
11
|
+
/**
|
|
12
|
+
* Shows iterate command help
|
|
13
|
+
*/
|
|
14
|
+
function showIterateHelp() {
|
|
15
|
+
const helpText = `
|
|
16
|
+
Iterate Command - Autonomous multi-step execution
|
|
17
|
+
|
|
18
|
+
Usage:
|
|
19
|
+
ax iterate <provider> <prompt>
|
|
20
|
+
ax iterate --max-iterations 50 <provider> <prompt>
|
|
21
|
+
|
|
22
|
+
Arguments:
|
|
23
|
+
<provider> AI provider to use (claude, gemini, codex, qwen, glm, grok)
|
|
24
|
+
<prompt> The task to complete autonomously
|
|
25
|
+
|
|
26
|
+
Options:
|
|
27
|
+
--max-iterations Maximum iterations (default: ${DEFAULT_MAX_ITERATIONS})
|
|
28
|
+
--max-time Maximum time: 30s, 5m, 1h (default: ${Math.round(DEFAULT_MAX_TIME_MS / 60000)}m)
|
|
29
|
+
--no-context Skip loading project context
|
|
30
|
+
--model Specific model to use
|
|
31
|
+
--system System prompt to prepend
|
|
32
|
+
--format Output format: text (default) or json
|
|
33
|
+
|
|
34
|
+
How It Works:
|
|
35
|
+
1. Sends your prompt to the AI provider
|
|
36
|
+
2. AI works on the task and responds
|
|
37
|
+
3. If task incomplete, AI continues automatically
|
|
38
|
+
4. Pauses when AI needs your input (questions, decisions)
|
|
39
|
+
5. Stops when task is complete or budget exceeded
|
|
40
|
+
|
|
41
|
+
Examples:
|
|
42
|
+
ax iterate claude "implement user authentication"
|
|
43
|
+
ax iterate gemini --max-iterations 50 "refactor the entire API layer"
|
|
44
|
+
ax iterate codex --max-time 10m "add comprehensive unit tests"
|
|
45
|
+
|
|
46
|
+
This is equivalent to: ax call --iterate <provider> <prompt>
|
|
47
|
+
`.trim();
|
|
48
|
+
return {
|
|
49
|
+
success: true,
|
|
50
|
+
message: helpText,
|
|
51
|
+
data: undefined,
|
|
52
|
+
exitCode: 0,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Iterate command handler
|
|
57
|
+
*
|
|
58
|
+
* This command is a convenience wrapper around `ax call --iterate`.
|
|
59
|
+
*/
|
|
60
|
+
export async function iterateCommand(args, options) {
|
|
61
|
+
// Show help if requested
|
|
62
|
+
if (args.length === 0 || args[0] === 'help' || options.help) {
|
|
63
|
+
return showIterateHelp();
|
|
64
|
+
}
|
|
65
|
+
// Enable iterate mode and delegate to call command
|
|
66
|
+
const iterateOptions = {
|
|
67
|
+
...options,
|
|
68
|
+
iterate: true,
|
|
69
|
+
};
|
|
70
|
+
return callCommand(args, iterateOptions);
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=iterate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iterate.js","sourceRoot":"","sources":["../../src/commands/iterate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAE5F;;GAEG;AACH,SAAS,eAAe;IACtB,MAAM,QAAQ,GAAG;;;;;;;;;;;;mDAYgC,sBAAsB;0DACf,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC;;;;;;;;;;;;;;;;;;;CAmBhG,CAAC,IAAI,EAAE,CAAC;IAEP,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,CAAC;KACZ,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAc,EACd,OAAmB;IAEnB,yBAAyB;IACzB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5D,OAAO,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED,mDAAmD;IACnD,MAAM,cAAc,GAAe;QACjC,GAAG,OAAO;QACV,OAAO,EAAE,IAAI;KACd,CAAC;IAEF,OAAO,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI7D;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,aAAa,CAAC,CAgExB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { createWorkflowLoader, findWorkflowDir } from '@defai.digital/workflow-engine';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* Handles the 'list' command - lists available workflows
|
|
5
|
+
*/
|
|
6
|
+
export async function listCommand(_args, options) {
|
|
7
|
+
try {
|
|
8
|
+
// Find workflow directory
|
|
9
|
+
const workflowDir = options.workflowDir ?? findWorkflowDir(process.cwd());
|
|
10
|
+
if (!workflowDir) {
|
|
11
|
+
return {
|
|
12
|
+
success: true,
|
|
13
|
+
message: 'No workflow directory found. Create examples/workflows/ or use --workflow-dir.',
|
|
14
|
+
data: [],
|
|
15
|
+
exitCode: 0,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
// Load workflows from directory
|
|
19
|
+
const loader = createWorkflowLoader({ workflowsDir: workflowDir });
|
|
20
|
+
const workflows = await loader.listAll();
|
|
21
|
+
if (workflows.length === 0) {
|
|
22
|
+
return {
|
|
23
|
+
success: true,
|
|
24
|
+
message: `No workflows found in ${workflowDir}`,
|
|
25
|
+
data: [],
|
|
26
|
+
exitCode: 0,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
// Apply limit if specified
|
|
30
|
+
const limited = options.limit !== undefined
|
|
31
|
+
? workflows.slice(0, options.limit)
|
|
32
|
+
: workflows;
|
|
33
|
+
if (options.format === 'json') {
|
|
34
|
+
return {
|
|
35
|
+
success: true,
|
|
36
|
+
message: undefined,
|
|
37
|
+
data: limited,
|
|
38
|
+
exitCode: 0,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// Format as text table
|
|
42
|
+
const header = 'ID | Name | Version | Steps | Status';
|
|
43
|
+
const separator = '-'.repeat(header.length);
|
|
44
|
+
const rows = limited.map((w) => `${w.id.padEnd(28)} | ${(w.name ?? w.id).substring(0, 30).padEnd(30)} | ${w.version.padEnd(7)} | ${String(w.stepCount).padEnd(5)} | ${w.status}`);
|
|
45
|
+
const footer = `\n${workflows.length} workflow(s) found in ${path.basename(workflowDir)}/`;
|
|
46
|
+
return {
|
|
47
|
+
success: true,
|
|
48
|
+
message: [header, separator, ...rows, footer].join('\n'),
|
|
49
|
+
data: limited,
|
|
50
|
+
exitCode: 0,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
return {
|
|
55
|
+
success: false,
|
|
56
|
+
message: `Failed to list workflows: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
57
|
+
data: undefined,
|
|
58
|
+
exitCode: 1,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACvF,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAe,EACf,OAAmB;IAEnB,IAAI,CAAC;QACH,0BAA0B;QAC1B,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAE1E,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,gFAAgF;gBACzF,IAAI,EAAE,EAAE;gBACR,QAAQ,EAAE,CAAC;aACZ,CAAC;QACJ,CAAC;QAED,gCAAgC;QAChC,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QAEzC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,yBAAyB,WAAW,EAAE;gBAC/C,IAAI,EAAE,EAAE;gBACR,QAAQ,EAAE,CAAC;aACZ,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS;YACzC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC;YACnC,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,SAAS;gBAClB,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,CAAC;aACZ,CAAC;QACJ,CAAC;QAED,uBAAuB;QACvB,MAAM,MAAM,GAAG,0FAA0F,CAAC;QAC1G,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7B,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CACjJ,CAAC;QAEF,MAAM,MAAM,GAAG,KAAK,SAAS,CAAC,MAAM,yBAAyB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC;QAE3F,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACxD,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC;SACZ,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;YAChG,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,CAAC;SACZ,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server Command
|
|
3
|
+
*
|
|
4
|
+
* Starts the AutomatosX MCP server for integration with AI coding assistants
|
|
5
|
+
* like Claude Code, Gemini CLI, Codex CLI, etc.
|
|
6
|
+
*/
|
|
7
|
+
import type { CommandResult, CLIOptions } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* MCP command handler
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* ax mcp server Start the MCP server (stdio transport)
|
|
13
|
+
* ax mcp serve Alias for 'server'
|
|
14
|
+
*/
|
|
15
|
+
export declare function mcpCommand(args: string[], _options: CLIOptions): Promise<CommandResult>;
|
|
16
|
+
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAO7D;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EAAE,EACd,QAAQ,EAAE,UAAU,GACnB,OAAO,CAAC,aAAa,CAAC,CAiBxB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server Command
|
|
3
|
+
*
|
|
4
|
+
* Starts the AutomatosX MCP server for integration with AI coding assistants
|
|
5
|
+
* like Claude Code, Gemini CLI, Codex CLI, etc.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* MCP command handler
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* ax mcp server Start the MCP server (stdio transport)
|
|
12
|
+
* ax mcp serve Alias for 'server'
|
|
13
|
+
*/
|
|
14
|
+
export async function mcpCommand(args, _options) {
|
|
15
|
+
const subcommand = args[0];
|
|
16
|
+
switch (subcommand) {
|
|
17
|
+
case 'server':
|
|
18
|
+
case 'serve':
|
|
19
|
+
case undefined:
|
|
20
|
+
return await startMCPServer();
|
|
21
|
+
default:
|
|
22
|
+
return {
|
|
23
|
+
success: false,
|
|
24
|
+
exitCode: 1,
|
|
25
|
+
message: `Unknown MCP subcommand: ${subcommand}\n\nUsage:\n ax mcp server Start the MCP server`,
|
|
26
|
+
data: undefined,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Start the MCP server
|
|
32
|
+
*/
|
|
33
|
+
async function startMCPServer() {
|
|
34
|
+
try {
|
|
35
|
+
// Dynamically import the MCP server to avoid circular dependencies
|
|
36
|
+
const { runStdioServer } = await import('@defai.digital/mcp-server');
|
|
37
|
+
// Run the server (this will block until stdin closes)
|
|
38
|
+
await runStdioServer();
|
|
39
|
+
return {
|
|
40
|
+
success: true,
|
|
41
|
+
exitCode: 0,
|
|
42
|
+
message: undefined,
|
|
43
|
+
data: undefined,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
// Log to stderr to avoid polluting MCP protocol on stdout
|
|
48
|
+
console.error(`MCP server error: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
49
|
+
return {
|
|
50
|
+
success: false,
|
|
51
|
+
exitCode: 1,
|
|
52
|
+
message: `Failed to start MCP server: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
53
|
+
data: undefined,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAc,EACd,QAAoB;IAEpB,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAA8B,CAAC;IAExD,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,MAAM,cAAc,EAAE,CAAC;QAEhC;YACE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,2BAA2B,UAAU,qDAAqD;gBACnG,IAAI,EAAE,SAAS;aAChB,CAAC;IACN,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc;IAC3B,IAAI,CAAC;QACH,mEAAmE;QACnE,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;QAErE,sDAAsD;QACtD,MAAM,cAAc,EAAE,CAAC;QAEvB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,SAAS;SAChB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0DAA0D;QAC1D,OAAO,CAAC,KAAK,CACX,qBAAqB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAChF,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;YAClG,IAAI,EAAE,SAAS;SAChB,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resume Command
|
|
3
|
+
*
|
|
4
|
+
* Resume agent execution from a checkpoint.
|
|
5
|
+
* Leverages the existing checkpoint-manager from @defai.digital/agent-execution.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* ax resume # Resume latest checkpoint (requires --agent)
|
|
9
|
+
* ax resume --agent=coder # Resume latest for specific agent
|
|
10
|
+
* ax resume --checkpoint=<uuid> # Resume specific checkpoint
|
|
11
|
+
* ax resume list --agent=coder # List available checkpoints
|
|
12
|
+
*/
|
|
13
|
+
import type { CommandResult, CLIOptions } from '../types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Resume command handler
|
|
16
|
+
*/
|
|
17
|
+
export declare function resumeCommand(args: string[], options: CLIOptions): Promise<CommandResult>;
|
|
18
|
+
//# sourceMappingURL=resume.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../src/commands/resume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAY7D;;GAEG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,aAAa,CAAC,CA4GxB"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resume Command
|
|
3
|
+
*
|
|
4
|
+
* Resume agent execution from a checkpoint.
|
|
5
|
+
* Leverages the existing checkpoint-manager from @defai.digital/agent-execution.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* ax resume # Resume latest checkpoint (requires --agent)
|
|
9
|
+
* ax resume --agent=coder # Resume latest for specific agent
|
|
10
|
+
* ax resume --checkpoint=<uuid> # Resume specific checkpoint
|
|
11
|
+
* ax resume list --agent=coder # List available checkpoints
|
|
12
|
+
*/
|
|
13
|
+
import { createCheckpointManager } from '@defai.digital/agent-execution';
|
|
14
|
+
import { safeValidateResumeOptions, } from '@defai.digital/contracts';
|
|
15
|
+
import { getCheckpointStorage, initializeStorageAsync, } from '../utils/storage-instances.js';
|
|
16
|
+
/**
|
|
17
|
+
* Resume command handler
|
|
18
|
+
*/
|
|
19
|
+
export async function resumeCommand(args, options) {
|
|
20
|
+
// Initialize storage (enables SQLite if available)
|
|
21
|
+
await initializeStorageAsync();
|
|
22
|
+
// Handle list subcommand
|
|
23
|
+
const extendedOptions = options;
|
|
24
|
+
if (args[0] === 'list' || extendedOptions.list) {
|
|
25
|
+
return listCheckpoints(options);
|
|
26
|
+
}
|
|
27
|
+
// Parse and validate options
|
|
28
|
+
const opts = extractResumeOptions(options);
|
|
29
|
+
const validation = safeValidateResumeOptions(opts);
|
|
30
|
+
if (!validation.success) {
|
|
31
|
+
return {
|
|
32
|
+
success: false,
|
|
33
|
+
exitCode: 1,
|
|
34
|
+
message: `Invalid options: ${validation.error.errors.map((e) => e.message).join(', ')}`,
|
|
35
|
+
data: undefined,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const resumeOpts = validation.data;
|
|
39
|
+
const storage = getCheckpointStorage();
|
|
40
|
+
// Get checkpoint to resume
|
|
41
|
+
let checkpoint = null;
|
|
42
|
+
if (resumeOpts.checkpointId) {
|
|
43
|
+
checkpoint = await storage.load(resumeOpts.checkpointId);
|
|
44
|
+
}
|
|
45
|
+
else if (resumeOpts.agentId) {
|
|
46
|
+
checkpoint = await storage.loadLatest(resumeOpts.agentId, resumeOpts.sessionId);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
return {
|
|
50
|
+
success: false,
|
|
51
|
+
exitCode: 1,
|
|
52
|
+
message: 'Please specify --agent or --checkpoint. Use "ax resume list --agent=<id>" to see available checkpoints.',
|
|
53
|
+
data: undefined,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
if (!checkpoint) {
|
|
57
|
+
return {
|
|
58
|
+
success: false,
|
|
59
|
+
exitCode: 1,
|
|
60
|
+
message: resumeOpts.checkpointId
|
|
61
|
+
? `Checkpoint not found: ${resumeOpts.checkpointId}`
|
|
62
|
+
: `No checkpoint found for agent: ${resumeOpts.agentId}`,
|
|
63
|
+
data: undefined,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
// Check if expired
|
|
67
|
+
if (checkpoint.expiresAt && new Date(checkpoint.expiresAt) < new Date()) {
|
|
68
|
+
return {
|
|
69
|
+
success: false,
|
|
70
|
+
exitCode: 1,
|
|
71
|
+
message: `Checkpoint ${checkpoint.checkpointId} has expired (${formatAge(checkpoint.expiresAt)})`,
|
|
72
|
+
data: undefined,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
// Display checkpoint info
|
|
76
|
+
if (!resumeOpts.force && options.format !== 'json') {
|
|
77
|
+
console.log('');
|
|
78
|
+
console.log('Resuming from checkpoint:');
|
|
79
|
+
console.log(` ID: ${checkpoint.checkpointId.slice(0, 8)}...`);
|
|
80
|
+
console.log(` Agent: ${checkpoint.agentId}`);
|
|
81
|
+
console.log(` Step: ${checkpoint.stepIndex} (${checkpoint.completedStepId})`);
|
|
82
|
+
console.log(` Created: ${formatAge(checkpoint.createdAt)}`);
|
|
83
|
+
console.log('');
|
|
84
|
+
console.log(`This will continue execution from step ${checkpoint.stepIndex + 1}.`);
|
|
85
|
+
}
|
|
86
|
+
// Create manager and get resume context
|
|
87
|
+
const manager = createCheckpointManager(checkpoint.agentId, checkpoint.sessionId, storage);
|
|
88
|
+
const resumeContext = await manager.getResumeContext(checkpoint.checkpointId);
|
|
89
|
+
if (!resumeContext) {
|
|
90
|
+
return {
|
|
91
|
+
success: false,
|
|
92
|
+
exitCode: 1,
|
|
93
|
+
message: 'Failed to create resume context',
|
|
94
|
+
data: undefined,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
// Return success with resume info
|
|
98
|
+
// Note: Actual execution integration would happen here
|
|
99
|
+
return {
|
|
100
|
+
success: true,
|
|
101
|
+
exitCode: 0,
|
|
102
|
+
message: options.format === 'json'
|
|
103
|
+
? undefined
|
|
104
|
+
: `Ready to resume from step ${resumeContext.startFromStep}`,
|
|
105
|
+
data: {
|
|
106
|
+
checkpointId: checkpoint.checkpointId,
|
|
107
|
+
agentId: checkpoint.agentId,
|
|
108
|
+
startFromStep: resumeContext.startFromStep,
|
|
109
|
+
previousStepsCompleted: checkpoint.stepIndex,
|
|
110
|
+
context: resumeContext.context,
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* List available checkpoints for an agent
|
|
116
|
+
*/
|
|
117
|
+
async function listCheckpoints(options) {
|
|
118
|
+
const extendedOptions = options;
|
|
119
|
+
const agentId = extendedOptions.agent;
|
|
120
|
+
if (!agentId) {
|
|
121
|
+
return {
|
|
122
|
+
success: false,
|
|
123
|
+
exitCode: 1,
|
|
124
|
+
message: 'Please specify --agent to list checkpoints',
|
|
125
|
+
data: undefined,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
const storage = getCheckpointStorage();
|
|
129
|
+
const checkpoints = await storage.list(agentId);
|
|
130
|
+
if (checkpoints.length === 0) {
|
|
131
|
+
return {
|
|
132
|
+
success: true,
|
|
133
|
+
exitCode: 0,
|
|
134
|
+
message: `No checkpoints found for agent: ${agentId}`,
|
|
135
|
+
data: { checkpoints: [] },
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
// Format for JSON output
|
|
139
|
+
if (options.format === 'json') {
|
|
140
|
+
return {
|
|
141
|
+
success: true,
|
|
142
|
+
exitCode: 0,
|
|
143
|
+
message: undefined,
|
|
144
|
+
data: {
|
|
145
|
+
checkpoints: checkpoints.map((cp) => ({
|
|
146
|
+
checkpointId: cp.checkpointId,
|
|
147
|
+
agentId: cp.agentId,
|
|
148
|
+
sessionId: cp.sessionId,
|
|
149
|
+
stepIndex: cp.stepIndex,
|
|
150
|
+
completedStepId: cp.completedStepId,
|
|
151
|
+
createdAt: cp.createdAt,
|
|
152
|
+
expiresAt: cp.expiresAt,
|
|
153
|
+
age: formatAge(cp.createdAt),
|
|
154
|
+
})),
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
// Format for text output
|
|
159
|
+
console.log('');
|
|
160
|
+
console.log(`Checkpoints for agent: ${agentId}`);
|
|
161
|
+
console.log('');
|
|
162
|
+
console.log('ID Step Created Expires');
|
|
163
|
+
console.log('-------- ---------------------- ---------- ----------');
|
|
164
|
+
for (const cp of checkpoints) {
|
|
165
|
+
const id = cp.checkpointId.slice(0, 8);
|
|
166
|
+
const step = `${cp.stepIndex} (${cp.completedStepId})`.slice(0, 22).padEnd(22);
|
|
167
|
+
const created = formatAge(cp.createdAt).padEnd(10);
|
|
168
|
+
const expires = cp.expiresAt ? formatAge(cp.expiresAt) : 'never';
|
|
169
|
+
console.log(`${id} ${step} ${created} ${expires}`);
|
|
170
|
+
}
|
|
171
|
+
console.log('');
|
|
172
|
+
return {
|
|
173
|
+
success: true,
|
|
174
|
+
exitCode: 0,
|
|
175
|
+
message: undefined,
|
|
176
|
+
data: { checkpoints },
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Extract resume options from CLI options
|
|
181
|
+
*/
|
|
182
|
+
function extractResumeOptions(options) {
|
|
183
|
+
const opts = options;
|
|
184
|
+
return {
|
|
185
|
+
checkpointId: opts.checkpoint,
|
|
186
|
+
agentId: opts.agent,
|
|
187
|
+
sessionId: opts.session,
|
|
188
|
+
force: opts.force === true,
|
|
189
|
+
format: options.format,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Format a datetime as human-readable age
|
|
194
|
+
*/
|
|
195
|
+
function formatAge(isoDate) {
|
|
196
|
+
const diff = Date.now() - new Date(isoDate).getTime();
|
|
197
|
+
const minutes = Math.floor(diff / 60000);
|
|
198
|
+
const hours = Math.floor(minutes / 60);
|
|
199
|
+
const days = Math.floor(hours / 24);
|
|
200
|
+
if (days > 0)
|
|
201
|
+
return `${days}d ago`;
|
|
202
|
+
if (hours > 0)
|
|
203
|
+
return `${hours}h ago`;
|
|
204
|
+
if (minutes > 0)
|
|
205
|
+
return `${minutes}m ago`;
|
|
206
|
+
return 'just now';
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=resume.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../src/commands/resume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EACL,yBAAyB,GAG1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAc,EACd,OAAmB;IAEnB,mDAAmD;IACnD,MAAM,sBAAsB,EAAE,CAAC;IAE/B,yBAAyB;IACzB,MAAM,eAAe,GAAG,OAA6C,CAAC;IACtE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,eAAe,CAAC,IAAI,EAAE,CAAC;QAC/C,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,6BAA6B;IAC7B,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAEnD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,oBAAoB,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACvF,IAAI,EAAE,SAAS;SAChB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC;IACnC,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IAEvC,2BAA2B;IAC3B,IAAI,UAAU,GAAsB,IAAI,CAAC;IAEzC,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;QAC5B,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;SAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QAC9B,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAClF,CAAC;SAAM,CAAC;QACN,OAAO;YACL,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,yGAAyG;YAClH,IAAI,EAAE,SAAS;SAChB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,UAAU,CAAC,YAAY;gBAC9B,CAAC,CAAC,yBAAyB,UAAU,CAAC,YAAY,EAAE;gBACpD,CAAC,CAAC,kCAAkC,UAAU,CAAC,OAAO,EAAE;YAC1D,IAAI,EAAE,SAAS;SAChB,CAAC;IACJ,CAAC;IAED,mBAAmB;IACnB,IAAI,UAAU,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;QACxE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,cAAc,UAAU,CAAC,YAAY,iBAAiB,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG;YACjG,IAAI,EAAE,SAAS;SAChB,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,CAAC,SAAS,KAAK,UAAU,CAAC,eAAe,GAAG,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,0CAA0C,UAAU,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;IACrF,CAAC;IAED,wCAAwC;IACxC,MAAM,OAAO,GAAG,uBAAuB,CACrC,UAAU,CAAC,OAAO,EAClB,UAAU,CAAC,SAAS,EACpB,OAAO,CACR,CAAC;IAEF,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAC9E,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,iCAAiC;YAC1C,IAAI,EAAE,SAAS;SAChB,CAAC;IACJ,CAAC;IAED,kCAAkC;IAClC,uDAAuD;IACvD,OAAO;QACL,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,OAAO,CAAC,MAAM,KAAK,MAAM;YAChC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,6BAA6B,aAAa,CAAC,aAAa,EAAE;QAC9D,IAAI,EAAE;YACJ,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,aAAa,EAAE,aAAa,CAAC,aAAa;YAC1C,sBAAsB,EAAE,UAAU,CAAC,SAAS;YAC5C,OAAO,EAAE,aAAa,CAAC,OAAO;SAC/B;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,OAAmB;IAChD,MAAM,eAAe,GAAG,OAA6C,CAAC;IACtE,MAAM,OAAO,GAAG,eAAe,CAAC,KAA2B,CAAC;IAE5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,SAAS;SAChB,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEhD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,mCAAmC,OAAO,EAAE;YACrD,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;SAC1B,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE;gBACJ,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,EAAc,EAAE,EAAE,CAAC,CAAC;oBAChD,YAAY,EAAE,EAAE,CAAC,YAAY;oBAC7B,OAAO,EAAE,EAAE,CAAC,OAAO;oBACnB,SAAS,EAAE,EAAE,CAAC,SAAS;oBACvB,SAAS,EAAE,EAAE,CAAC,SAAS;oBACvB,eAAe,EAAE,EAAE,CAAC,eAAe;oBACnC,SAAS,EAAE,EAAE,CAAC,SAAS;oBACvB,SAAS,EAAE,EAAE,CAAC,SAAS;oBACvB,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC;iBAC7B,CAAC,CAAC;aACJ;SACF,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IAExE,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,SAAS,KAAK,EAAE,CAAC,eAAe,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAEjE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,KAAK,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO;QACL,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,EAAE,WAAW,EAAE;KACtB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,OAAmB;IAC/C,MAAM,IAAI,GAAG,OAA6C,CAAC;IAC3D,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,UAAgC;QACnD,OAAO,EAAE,IAAI,CAAC,KAA2B;QACzC,SAAS,EAAE,IAAI,CAAC,OAA6B;QAC7C,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,OAAe;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IAEpC,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,GAAG,IAAI,OAAO,CAAC;IACpC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,GAAG,KAAK,OAAO,CAAC;IACtC,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,GAAG,OAAO,OAAO,CAAC;IAC1C,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Review Command
|
|
3
|
+
*
|
|
4
|
+
* AI-powered code review with focused analysis modes.
|
|
5
|
+
* Usage: ax review <paths...> [options]
|
|
6
|
+
* ax review help
|
|
7
|
+
*/
|
|
8
|
+
import type { CommandResult, CLIOptions } from '../types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Review command handler
|
|
11
|
+
*/
|
|
12
|
+
export declare function reviewCommand(args: string[], options: CLIOptions): Promise<CommandResult>;
|
|
13
|
+
//# sourceMappingURL=review.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAyf7D;;GAEG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,aAAa,CAAC,CAcxB"}
|