@zdql/giga-claude-cli 1.0.2
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 +148 -0
- package/dist/commands/config.d.ts +6 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +62 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/workflow/artifacts.d.ts +6 -0
- package/dist/commands/workflow/artifacts.d.ts.map +1 -0
- package/dist/commands/workflow/artifacts.js +92 -0
- package/dist/commands/workflow/artifacts.js.map +1 -0
- package/dist/commands/workflow/control.d.ts +7 -0
- package/dist/commands/workflow/control.d.ts.map +1 -0
- package/dist/commands/workflow/control.js +76 -0
- package/dist/commands/workflow/control.js.map +1 -0
- package/dist/commands/workflow/create.d.ts +6 -0
- package/dist/commands/workflow/create.d.ts.map +1 -0
- package/dist/commands/workflow/create.js +137 -0
- package/dist/commands/workflow/create.js.map +1 -0
- package/dist/commands/workflow/index.d.ts +6 -0
- package/dist/commands/workflow/index.d.ts.map +1 -0
- package/dist/commands/workflow/index.js +27 -0
- package/dist/commands/workflow/index.js.map +1 -0
- package/dist/commands/workflow/logs.d.ts +6 -0
- package/dist/commands/workflow/logs.d.ts.map +1 -0
- package/dist/commands/workflow/logs.js +117 -0
- package/dist/commands/workflow/logs.js.map +1 -0
- package/dist/commands/workflow/run.d.ts +14 -0
- package/dist/commands/workflow/run.d.ts.map +1 -0
- package/dist/commands/workflow/run.js +140 -0
- package/dist/commands/workflow/run.js.map +1 -0
- package/dist/commands/workflow/status.d.ts +6 -0
- package/dist/commands/workflow/status.d.ts.map +1 -0
- package/dist/commands/workflow/status.js +113 -0
- package/dist/commands/workflow/status.js.map +1 -0
- package/dist/commands/workflow/validate.d.ts +6 -0
- package/dist/commands/workflow/validate.d.ts.map +1 -0
- package/dist/commands/workflow/validate.js +94 -0
- package/dist/commands/workflow/validate.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/client.d.ts +14 -0
- package/dist/lib/client.d.ts.map +1 -0
- package/dist/lib/client.js +30 -0
- package/dist/lib/client.js.map +1 -0
- package/dist/lib/config.d.ts +31 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +71 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/output.d.ts +56 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +106 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/utils.d.ts +41 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +92 -0
- package/dist/lib/utils.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* giga workflow logs command
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from "commander";
|
|
5
|
+
import { getClient } from "../../lib/client.js";
|
|
6
|
+
import { success, error, section, print } from "../../lib/output.js";
|
|
7
|
+
import chalk from "chalk";
|
|
8
|
+
export function createWorkflowLogsCommand() {
|
|
9
|
+
return new Command("logs")
|
|
10
|
+
.description("View logs for a specific workflow run entity")
|
|
11
|
+
.argument("<workflowId>", "Workflow ID")
|
|
12
|
+
.requiredOption("--entity <key>", "Entity key to get logs for")
|
|
13
|
+
.option("--json", "Output as JSON")
|
|
14
|
+
.action(async (workflowId, options) => {
|
|
15
|
+
try {
|
|
16
|
+
const id = parseInt(workflowId);
|
|
17
|
+
if (isNaN(id)) {
|
|
18
|
+
error("Invalid workflow ID");
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const client = getClient();
|
|
22
|
+
print(`Fetching logs for entity "${options.entity}"...`);
|
|
23
|
+
const response = await client.getWorkflowRunLogs(id, options.entity);
|
|
24
|
+
if (options.json) {
|
|
25
|
+
console.log(JSON.stringify(response, null, 2));
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// Print human-readable output
|
|
29
|
+
section(`Logs for Entity: ${response.entityKey}`);
|
|
30
|
+
console.log(`Agent Run ID: ${response.agentRunId}`);
|
|
31
|
+
console.log(`Status: ${response.status}`);
|
|
32
|
+
console.log();
|
|
33
|
+
if (response.logs.length === 0) {
|
|
34
|
+
print(chalk.dim("No logs available"));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
section("Logs");
|
|
38
|
+
console.log();
|
|
39
|
+
for (const log of response.logs) {
|
|
40
|
+
const timestamp = new Date(log.timestamp).toLocaleTimeString();
|
|
41
|
+
const typeColor = getTypeColor(log.type);
|
|
42
|
+
const typeLabel = log.type.padEnd(15);
|
|
43
|
+
console.log(`${chalk.dim(timestamp)} ${typeColor(typeLabel)}`);
|
|
44
|
+
// Format log content based on type
|
|
45
|
+
if (log.type === "tool_use") {
|
|
46
|
+
console.log(chalk.cyan(` Tool: ${log.toolName || "unknown"} (#${log.toolNumber || "?"})`));
|
|
47
|
+
if (typeof log.content === "object") {
|
|
48
|
+
console.log(chalk.dim(" Input:"));
|
|
49
|
+
console.log(chalk.dim(" " +
|
|
50
|
+
JSON.stringify(log.content, null, 2)
|
|
51
|
+
.split("\n")
|
|
52
|
+
.join("\n ")));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else if (log.type === "tool_result") {
|
|
56
|
+
console.log(chalk.cyan(` Tool: ${log.toolName || "unknown"} (#${log.toolNumber || "?"})`));
|
|
57
|
+
if (typeof log.content === "string") {
|
|
58
|
+
const preview = log.content.length > 200
|
|
59
|
+
? log.content.substring(0, 200) + "..."
|
|
60
|
+
: log.content;
|
|
61
|
+
console.log(chalk.dim(" " + preview.split("\n").join("\n ")));
|
|
62
|
+
}
|
|
63
|
+
else if (typeof log.content === "object") {
|
|
64
|
+
console.log(chalk.dim(" " + JSON.stringify(log.content)));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else if (log.type === "assistant") {
|
|
68
|
+
if (typeof log.content === "string") {
|
|
69
|
+
console.log(" " + log.content.split("\n").join("\n "));
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
console.log(" " + JSON.stringify(log.content));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else if (log.type === "error") {
|
|
76
|
+
console.log(chalk.red(" " + JSON.stringify(log.content)));
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
console.log(chalk.dim(" " + (typeof log.content === "string"
|
|
80
|
+
? log.content
|
|
81
|
+
: JSON.stringify(log.content))));
|
|
82
|
+
}
|
|
83
|
+
console.log(); // Blank line between logs
|
|
84
|
+
}
|
|
85
|
+
success(`Displayed ${response.logs.length} log entries`);
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
if (err.response?.status === 404) {
|
|
89
|
+
error(`No logs found for entity "${options.entity}" in workflow ${workflowId}`);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
error(err.message || String(err));
|
|
93
|
+
}
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get color for log type
|
|
100
|
+
*/
|
|
101
|
+
function getTypeColor(type) {
|
|
102
|
+
switch (type) {
|
|
103
|
+
case "assistant":
|
|
104
|
+
return chalk.green;
|
|
105
|
+
case "tool_use":
|
|
106
|
+
return chalk.cyan;
|
|
107
|
+
case "tool_result":
|
|
108
|
+
return chalk.blue;
|
|
109
|
+
case "error":
|
|
110
|
+
return chalk.red;
|
|
111
|
+
case "system":
|
|
112
|
+
return chalk.yellow;
|
|
113
|
+
default:
|
|
114
|
+
return chalk.gray;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../commands/workflow/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* giga workflow start and next commands
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from "commander";
|
|
5
|
+
/**
|
|
6
|
+
* Start workflow with auto-continuation
|
|
7
|
+
* Also resumes paused workflows
|
|
8
|
+
*/
|
|
9
|
+
export declare function createWorkflowStartCommand(): Command;
|
|
10
|
+
/**
|
|
11
|
+
* Run next N and then stop (no auto-continuation)
|
|
12
|
+
*/
|
|
13
|
+
export declare function createWorkflowNextCommand(): Command;
|
|
14
|
+
//# sourceMappingURL=run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../commands/workflow/run.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,OAAO,CA6DpD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAmEnD"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* giga workflow start and next commands
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from "commander";
|
|
5
|
+
import { getClient } from "../../lib/client.js";
|
|
6
|
+
import { success, error, info, print } from "../../lib/output.js";
|
|
7
|
+
import chalk from "chalk";
|
|
8
|
+
/**
|
|
9
|
+
* Start workflow with auto-continuation
|
|
10
|
+
* Also resumes paused workflows
|
|
11
|
+
*/
|
|
12
|
+
export function createWorkflowStartCommand() {
|
|
13
|
+
return new Command("start")
|
|
14
|
+
.description("Start workflow with auto-continuation (resumes if paused)")
|
|
15
|
+
.argument("<workflowId>", "Workflow ID")
|
|
16
|
+
.option("--count <n>", "Limit initial batch to N runs (default: fill all slots)")
|
|
17
|
+
.option("--dry-run", "Preview what would be started without actually starting")
|
|
18
|
+
.action(async (workflowId, options) => {
|
|
19
|
+
try {
|
|
20
|
+
const client = getClient();
|
|
21
|
+
const id = parseInt(workflowId, 10);
|
|
22
|
+
if (isNaN(id)) {
|
|
23
|
+
error("Workflow ID must be a number");
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
// Check if paused and auto-resume
|
|
27
|
+
const workflow = await client.getWorkflow(id, false);
|
|
28
|
+
const wasPaused = workflow.status === "paused";
|
|
29
|
+
const result = await client.runWorkflow(id, {
|
|
30
|
+
mode: "all", // Start with auto-continuation
|
|
31
|
+
count: options.count ? parseInt(options.count, 10) : undefined,
|
|
32
|
+
dryRun: options.dryRun,
|
|
33
|
+
autoContinue: true,
|
|
34
|
+
});
|
|
35
|
+
if (result.dryRun) {
|
|
36
|
+
info("Dry run: Would start " + result.wouldStart.length + " runs");
|
|
37
|
+
result.wouldStart.forEach((entity) => {
|
|
38
|
+
print(` ├─ ${entity.entityKey}`);
|
|
39
|
+
});
|
|
40
|
+
console.log();
|
|
41
|
+
print(`Current state: ${result.pending} pending, ${result.running} running, ${result.completed} completed, ${result.failed} failed`);
|
|
42
|
+
print(`Available slots: ${result.availableSlots}`);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
if (wasPaused) {
|
|
46
|
+
success(`Resumed workflow ${id} (was paused)`);
|
|
47
|
+
}
|
|
48
|
+
if (result.started && result.started.length > 0) {
|
|
49
|
+
success(`Starting ${result.started.length} runs for workflow ${id}...`);
|
|
50
|
+
result.started.forEach((run) => {
|
|
51
|
+
print(` ├─ ${run.entityKey}: started (run ${run.runId})`);
|
|
52
|
+
});
|
|
53
|
+
console.log();
|
|
54
|
+
print(`Status: ${result.running} running, ${result.pending} pending, ${result.completed} completed, ${result.failed} failed`);
|
|
55
|
+
info(chalk.dim("Auto-continuation enabled: workflow will keep running until complete or paused."));
|
|
56
|
+
info(chalk.dim(`Use 'giga workflow pause ${id}' to stop auto-continuation.`));
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
info(`No runs started (${result.pending} pending, ${result.running} running)`);
|
|
60
|
+
if (result.running > 0) {
|
|
61
|
+
print(chalk.dim("Wait for running jobs to complete to free up slots."));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
error(err.message || String(err));
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Run next N and then stop (no auto-continuation)
|
|
74
|
+
*/
|
|
75
|
+
export function createWorkflowNextCommand() {
|
|
76
|
+
return new Command("next")
|
|
77
|
+
.description("Run next N entities and then stop (no auto-continuation)")
|
|
78
|
+
.argument("<workflowId>", "Workflow ID")
|
|
79
|
+
.argument("<count>", "Number of entities to run")
|
|
80
|
+
.option("--dry-run", "Preview what would be started without actually starting")
|
|
81
|
+
.action(async (workflowId, count, options) => {
|
|
82
|
+
try {
|
|
83
|
+
const client = getClient();
|
|
84
|
+
const id = parseInt(workflowId, 10);
|
|
85
|
+
const n = parseInt(count, 10);
|
|
86
|
+
if (isNaN(id)) {
|
|
87
|
+
error("Workflow ID must be a number");
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
if (isNaN(n) || n <= 0) {
|
|
91
|
+
error("Count must be a positive number");
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
// Check if paused (for informational message)
|
|
95
|
+
const workflow = await client.getWorkflow(id, false);
|
|
96
|
+
const wasPaused = workflow.status === "paused";
|
|
97
|
+
const result = await client.runWorkflow(id, {
|
|
98
|
+
mode: "next",
|
|
99
|
+
count: n,
|
|
100
|
+
dryRun: options.dryRun,
|
|
101
|
+
autoContinue: false,
|
|
102
|
+
});
|
|
103
|
+
if (result.dryRun) {
|
|
104
|
+
info("Dry run: Would start " + result.wouldStart.length + " runs");
|
|
105
|
+
result.wouldStart.forEach((entity) => {
|
|
106
|
+
print(` ├─ ${entity.entityKey}`);
|
|
107
|
+
});
|
|
108
|
+
console.log();
|
|
109
|
+
print(`Current state: ${result.pending} pending, ${result.running} running, ${result.completed} completed, ${result.failed} failed`);
|
|
110
|
+
print(`Available slots: ${result.availableSlots}`);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
if (wasPaused) {
|
|
114
|
+
info(`Workflow ${id} was paused - unpausing to run ${n} entities`);
|
|
115
|
+
}
|
|
116
|
+
if (result.started && result.started.length > 0) {
|
|
117
|
+
success(`Starting ${result.started.length} runs for workflow ${id}...`);
|
|
118
|
+
result.started.forEach((run) => {
|
|
119
|
+
print(` ├─ ${run.entityKey}: started (run ${run.runId})`);
|
|
120
|
+
});
|
|
121
|
+
console.log();
|
|
122
|
+
print(`Status: ${result.running} running, ${result.pending} pending, ${result.completed} completed, ${result.failed} failed`);
|
|
123
|
+
info(chalk.dim("Auto-continuation disabled: runs will stop after this batch completes."));
|
|
124
|
+
info(chalk.dim(`Use 'giga workflow start ${id}' to enable auto-continuation.`));
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
info(`No runs started (${result.pending} pending, ${result.running} running)`);
|
|
128
|
+
if (result.running > 0) {
|
|
129
|
+
print(chalk.dim("Wait for running jobs to complete to free up slots."));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
error(err.message || String(err));
|
|
136
|
+
process.exit(1);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../commands/workflow/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../commands/workflow/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,2BAA2B,IAAI,OAAO,CAmFrD"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* giga workflow status command
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from "commander";
|
|
5
|
+
import { getClient } from "../../lib/client.js";
|
|
6
|
+
import { error, section, createTable, formatPercent, formatTimestamp, printJson } from "../../lib/output.js";
|
|
7
|
+
import chalk from "chalk";
|
|
8
|
+
export function createWorkflowStatusCommand() {
|
|
9
|
+
return new Command("status")
|
|
10
|
+
.description("Check workflow status and progress")
|
|
11
|
+
.argument("<workflowId>", "Workflow ID")
|
|
12
|
+
.option("--runs", "Include detailed run information")
|
|
13
|
+
.option("--filter <status>", "Filter runs by status (pending, running, completed, failed)")
|
|
14
|
+
.option("--json", "Output as JSON")
|
|
15
|
+
.action(async (workflowId, options) => {
|
|
16
|
+
try {
|
|
17
|
+
const client = getClient();
|
|
18
|
+
const id = parseInt(workflowId, 10);
|
|
19
|
+
if (isNaN(id)) {
|
|
20
|
+
error("Workflow ID must be a number");
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
const workflow = await client.getWorkflow(id, options.runs || false);
|
|
24
|
+
if (options.json) {
|
|
25
|
+
printJson(workflow);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// Print summary
|
|
29
|
+
section(`Workflow ${workflow.workflowId}: "${workflow.name || "(unnamed)"}"`);
|
|
30
|
+
console.log(`Status: ${getStatusColor(workflow.status)}${workflow.status}${chalk.reset()}`);
|
|
31
|
+
console.log(`Created: ${formatTimestamp(workflow.createdAt)}`);
|
|
32
|
+
if (workflow.completedAt) {
|
|
33
|
+
console.log(`Completed: ${formatTimestamp(workflow.completedAt)}`);
|
|
34
|
+
}
|
|
35
|
+
console.log(`Concurrency: ${workflow.concurrency}`);
|
|
36
|
+
if (workflow.artifactPattern) {
|
|
37
|
+
console.log(`Artifact pattern: ${workflow.artifactPattern}`);
|
|
38
|
+
}
|
|
39
|
+
// Progress
|
|
40
|
+
section("Progress");
|
|
41
|
+
const { summary } = workflow;
|
|
42
|
+
console.log(` Total: ${summary.total} entities`);
|
|
43
|
+
console.log(` Pending: ${summary.pending} (${formatPercent(summary.pending, summary.total)})`);
|
|
44
|
+
console.log(` Running: ${summary.running} (${formatPercent(summary.running, summary.total)})`);
|
|
45
|
+
console.log(` Completed: ${chalk.green(summary.completed)} (${formatPercent(summary.completed, summary.total)})`);
|
|
46
|
+
console.log(` Failed: ${summary.failed > 0 ? chalk.red(summary.failed) : summary.failed} (${formatPercent(summary.failed, summary.total)})`);
|
|
47
|
+
// Detailed runs table
|
|
48
|
+
if (options.runs && workflow.runs) {
|
|
49
|
+
let runs = workflow.runs;
|
|
50
|
+
// Filter if requested
|
|
51
|
+
if (options.filter) {
|
|
52
|
+
runs = runs.filter((r) => r.status === options.filter);
|
|
53
|
+
}
|
|
54
|
+
section(`Runs (${runs.length})`);
|
|
55
|
+
const table = createTable({
|
|
56
|
+
head: ["Entity", "Status", "Agent Run", "Artifact", "Duration"],
|
|
57
|
+
});
|
|
58
|
+
for (const run of runs) {
|
|
59
|
+
const statusColor = getStatusColor(run.status);
|
|
60
|
+
const duration = run.startedAt && run.completedAt
|
|
61
|
+
? calculateDuration(run.startedAt, run.completedAt)
|
|
62
|
+
: run.startedAt
|
|
63
|
+
? "running..."
|
|
64
|
+
: "-";
|
|
65
|
+
table.push([
|
|
66
|
+
run.entityKey,
|
|
67
|
+
`${statusColor}${run.status}${chalk.reset()}`,
|
|
68
|
+
run.agentRunId?.toString() || "-",
|
|
69
|
+
run.artifactUrl ? "✓" : run.status === "completed" ? "✗" : "-",
|
|
70
|
+
duration,
|
|
71
|
+
]);
|
|
72
|
+
}
|
|
73
|
+
console.log(table.toString());
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
error(err.message || String(err));
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function getStatusColor(status) {
|
|
83
|
+
switch (status) {
|
|
84
|
+
case "completed":
|
|
85
|
+
return chalk.green("");
|
|
86
|
+
case "running":
|
|
87
|
+
return chalk.blue("");
|
|
88
|
+
case "failed":
|
|
89
|
+
return chalk.red("");
|
|
90
|
+
case "pending":
|
|
91
|
+
return chalk.gray("");
|
|
92
|
+
case "paused":
|
|
93
|
+
return chalk.yellow("");
|
|
94
|
+
default:
|
|
95
|
+
return "";
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function calculateDuration(start, end) {
|
|
99
|
+
const duration = new Date(end).getTime() - new Date(start).getTime();
|
|
100
|
+
const seconds = Math.floor(duration / 1000);
|
|
101
|
+
const minutes = Math.floor(seconds / 60);
|
|
102
|
+
const hours = Math.floor(minutes / 60);
|
|
103
|
+
if (hours > 0) {
|
|
104
|
+
return `${hours}h ${minutes % 60}m`;
|
|
105
|
+
}
|
|
106
|
+
else if (minutes > 0) {
|
|
107
|
+
return `${minutes}m ${seconds % 60}s`;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
return `${seconds}s`;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../commands/workflow/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../commands/workflow/validate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,6BAA6B,IAAI,OAAO,CA+FvD"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* giga workflow validate command
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from "commander";
|
|
5
|
+
import { success, error, warn, section, print } from "../../lib/output.js";
|
|
6
|
+
import { fileExists, createUploadFormData } from "../../lib/utils.js";
|
|
7
|
+
import chalk from "chalk";
|
|
8
|
+
export function createWorkflowValidateCommand() {
|
|
9
|
+
return new Command("validate")
|
|
10
|
+
.description("Validate workflow without creating it")
|
|
11
|
+
.requiredOption("--data <path>", "Path to data file (CSV or JSON)")
|
|
12
|
+
.option("--prompt <path>", "Path to prompt template file (.txt)")
|
|
13
|
+
.option("--prompt-inline <text>", "Inline prompt template string")
|
|
14
|
+
.option("--name <name>", "Workflow name (required for validation)")
|
|
15
|
+
.option("--key-field <field>", "Entity key field name")
|
|
16
|
+
.option("--key-expr <expression>", "Entity key expression")
|
|
17
|
+
.action(async (options) => {
|
|
18
|
+
try {
|
|
19
|
+
// Validate files exist
|
|
20
|
+
if (!fileExists(options.data)) {
|
|
21
|
+
error(`Data file not found: ${options.data}`);
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
if (options.prompt && !fileExists(options.prompt)) {
|
|
25
|
+
error(`Prompt template file not found: ${options.prompt}`);
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
if (!options.prompt && !options.promptInline) {
|
|
29
|
+
error("Either --prompt or --prompt-inline is required");
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
if (!options.keyField && !options.keyExpr) {
|
|
33
|
+
error("Either --key-field or --key-expr is required");
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
// Build config
|
|
37
|
+
const config = {
|
|
38
|
+
name: options.name || "validation-test",
|
|
39
|
+
};
|
|
40
|
+
if (options.keyField)
|
|
41
|
+
config.entityKeyField = options.keyField;
|
|
42
|
+
if (options.keyExpr)
|
|
43
|
+
config.entityKeyExpression = options.keyExpr;
|
|
44
|
+
print("Validating workflow...");
|
|
45
|
+
const formData = createUploadFormData({
|
|
46
|
+
dataFile: options.data,
|
|
47
|
+
promptTemplateFile: options.prompt,
|
|
48
|
+
promptTemplateInline: options.promptInline,
|
|
49
|
+
config,
|
|
50
|
+
});
|
|
51
|
+
// Use raw fetch for validation
|
|
52
|
+
const configModule = await import("../../lib/config.js");
|
|
53
|
+
const cfg = configModule.requireConfig();
|
|
54
|
+
const response = await fetch(`${cfg.baseUrl}/workflows/validate`, {
|
|
55
|
+
method: "POST",
|
|
56
|
+
body: formData,
|
|
57
|
+
});
|
|
58
|
+
if (!response.ok) {
|
|
59
|
+
const errorData = await response.json().catch(() => ({ error: "Validation failed" }));
|
|
60
|
+
error(errorData.error || `HTTP ${response.status}`);
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
const result = await response.json();
|
|
64
|
+
if (result.valid) {
|
|
65
|
+
success("Validation successful");
|
|
66
|
+
console.log(` Total entities: ${result.totalEntities}`);
|
|
67
|
+
console.log(` Unique keys: ${result.uniqueKeys}`);
|
|
68
|
+
if (result.warnings && result.warnings.length > 0) {
|
|
69
|
+
section("Warnings");
|
|
70
|
+
result.warnings.forEach((w) => warn(w));
|
|
71
|
+
}
|
|
72
|
+
if (result.samplePreview) {
|
|
73
|
+
section(`Sample Preview (entity "${result.samplePreview.entityKey}")`);
|
|
74
|
+
console.log(chalk.dim("─".repeat(60)));
|
|
75
|
+
console.log(result.samplePreview.renderedPrompt);
|
|
76
|
+
console.log(chalk.dim("─".repeat(60)));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
error("Validation failed");
|
|
81
|
+
if (result.errors && result.errors.length > 0) {
|
|
82
|
+
section("Errors");
|
|
83
|
+
result.errors.forEach((e) => error(e));
|
|
84
|
+
}
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
error(err.message || String(err));
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../commands/workflow/validate.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Giga-Claude CLI
|
|
4
|
+
* Command-line interface for Giga-Claude workflow orchestration
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from "commander";
|
|
7
|
+
import { createConfigCommand } from "./commands/config.js";
|
|
8
|
+
import { createWorkflowCommand } from "./commands/workflow/index.js";
|
|
9
|
+
import chalk from "chalk";
|
|
10
|
+
const program = new Command();
|
|
11
|
+
program
|
|
12
|
+
.name("giga")
|
|
13
|
+
.description("Giga-Claude CLI - Workflow orchestration for Claude agents")
|
|
14
|
+
.version("1.0.0");
|
|
15
|
+
// Add commands
|
|
16
|
+
program.addCommand(createConfigCommand());
|
|
17
|
+
program.addCommand(createWorkflowCommand());
|
|
18
|
+
// Error handling
|
|
19
|
+
program.exitOverride((err) => {
|
|
20
|
+
if (err.code === "commander.helpDisplayed") {
|
|
21
|
+
process.exit(0);
|
|
22
|
+
}
|
|
23
|
+
process.exit(err.exitCode);
|
|
24
|
+
});
|
|
25
|
+
// Parse and handle errors
|
|
26
|
+
try {
|
|
27
|
+
await program.parseAsync(process.argv);
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
if (err.message?.includes("Unknown command")) {
|
|
31
|
+
console.error(chalk.red("✗"), err.message);
|
|
32
|
+
console.error(chalk.dim("Run 'giga --help' for usage information."));
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
else if (err.message?.includes("Not configured")) {
|
|
36
|
+
console.error(chalk.yellow("⚠"), err.message);
|
|
37
|
+
console.error(chalk.dim("Example: giga config set baseUrl http://localhost:3000"));
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
console.error(chalk.red("✗"), "Error:", err.message || String(err));
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,4DAA4D,CAAC;KACzE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,eAAe;AACf,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAE5C,iBAAiB;AACjB,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE;IAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,0BAA0B;AAC1B,IAAI,CAAC;IACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAAC,OAAO,GAAQ,EAAE,CAAC;IAClB,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;SAAM,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client wrapper for CLI
|
|
3
|
+
* Uses the @zdql/giga-claude-client package
|
|
4
|
+
*/
|
|
5
|
+
import { GigaClaudeClient } from "@zdql/giga-claude-client";
|
|
6
|
+
/**
|
|
7
|
+
* Get or create client instance
|
|
8
|
+
*/
|
|
9
|
+
export declare function getClient(): GigaClaudeClient;
|
|
10
|
+
/**
|
|
11
|
+
* Reset client instance (for testing)
|
|
12
|
+
*/
|
|
13
|
+
export declare function resetClient(): void;
|
|
14
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../lib/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAK5D;;GAEG;AACH,wBAAgB,SAAS,IAAI,gBAAgB,CAc5C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
|