@chucky.cloud/cli 0.2.8 → 0.3.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/dist/commands/apply.d.ts +7 -0
- package/dist/commands/apply.d.ts.map +1 -0
- package/dist/commands/apply.js +104 -0
- package/dist/commands/apply.js.map +1 -0
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +5 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/delete.js +3 -3
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/deploy.d.ts +6 -2
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +177 -33
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/diff.d.ts +6 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +101 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/discard.d.ts +6 -0
- package/dist/commands/discard.d.ts.map +1 -0
- package/dist/commands/discard.js +36 -0
- package/dist/commands/discard.js.map +1 -0
- package/dist/commands/fetch.d.ts +6 -0
- package/dist/commands/fetch.d.ts.map +1 -0
- package/dist/commands/fetch.js +147 -0
- package/dist/commands/fetch.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +199 -57
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/jobs.d.ts +3 -0
- package/dist/commands/jobs.d.ts.map +1 -0
- package/dist/commands/jobs.js +417 -0
- package/dist/commands/jobs.js.map +1 -0
- package/dist/commands/keys.d.ts.map +1 -1
- package/dist/commands/keys.js +6 -1
- package/dist/commands/keys.js.map +1 -1
- package/dist/commands/log.d.ts +5 -0
- package/dist/commands/log.d.ts.map +1 -0
- package/dist/commands/log.js +69 -0
- package/dist/commands/log.js.map +1 -0
- package/dist/commands/prompt.d.ts +2 -0
- package/dist/commands/prompt.d.ts.map +1 -1
- package/dist/commands/prompt.js +174 -2
- package/dist/commands/prompt.js.map +1 -1
- package/dist/commands/pull.d.ts +7 -0
- package/dist/commands/pull.d.ts.map +1 -0
- package/dist/commands/pull.js +19 -0
- package/dist/commands/pull.js.map +1 -0
- package/dist/commands/sessions.d.ts +7 -0
- package/dist/commands/sessions.d.ts.map +1 -0
- package/dist/commands/sessions.js +57 -0
- package/dist/commands/sessions.js.map +1 -0
- package/dist/commands/wait.d.ts +7 -0
- package/dist/commands/wait.d.ts.map +1 -0
- package/dist/commands/wait.js +91 -0
- package/dist/commands/wait.js.map +1 -0
- package/dist/index.js +80 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +130 -0
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +99 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/archive.d.ts +5 -1
- package/dist/lib/archive.d.ts.map +1 -1
- package/dist/lib/archive.js +10 -15
- package/dist/lib/archive.js.map +1 -1
- package/dist/lib/config.d.ts +80 -5
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +86 -9
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/git.d.ts +70 -0
- package/dist/lib/git.d.ts.map +1 -0
- package/dist/lib/git.js +232 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/output.d.ts +42 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +123 -0
- package/dist/lib/output.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import ora from "ora";
|
|
4
|
+
import crypto from "node:crypto";
|
|
5
|
+
import { createWriteStream } from "node:fs";
|
|
6
|
+
import { unlink } from "node:fs/promises";
|
|
7
|
+
import { tmpdir } from "node:os";
|
|
8
|
+
import { join, resolve } from "node:path";
|
|
9
|
+
import { pipeline } from "node:stream/promises";
|
|
10
|
+
import { Readable } from "node:stream";
|
|
11
|
+
import { requireApiKey, requireProjectConfig, loadProjectConfig, getWorkerUrl } from "../lib/config.js";
|
|
12
|
+
import { ChuckyApi } from "../lib/api.js";
|
|
13
|
+
import { generateToken } from "../lib/token.js";
|
|
14
|
+
import { verifyBundle, fetchBundle, applyBranch, branchExists } from "../lib/git.js";
|
|
15
|
+
function formatStatus(job) {
|
|
16
|
+
const status = job.status.toUpperCase();
|
|
17
|
+
if (job.isSuccess)
|
|
18
|
+
return chalk.green(status);
|
|
19
|
+
if (job.isFailed)
|
|
20
|
+
return chalk.red(status);
|
|
21
|
+
if (status === "EXECUTING")
|
|
22
|
+
return chalk.blue(status);
|
|
23
|
+
if (status === "QUEUED" || status === "PENDING")
|
|
24
|
+
return chalk.yellow(status);
|
|
25
|
+
return chalk.dim(status);
|
|
26
|
+
}
|
|
27
|
+
function formatDate(dateStr) {
|
|
28
|
+
const date = new Date(dateStr);
|
|
29
|
+
return date.toLocaleString();
|
|
30
|
+
}
|
|
31
|
+
function formatDuration(startedAt, finishedAt) {
|
|
32
|
+
if (!startedAt)
|
|
33
|
+
return "-";
|
|
34
|
+
const start = new Date(startedAt).getTime();
|
|
35
|
+
const end = finishedAt ? new Date(finishedAt).getTime() : Date.now();
|
|
36
|
+
const durationMs = end - start;
|
|
37
|
+
if (durationMs < 1000)
|
|
38
|
+
return `${durationMs}ms`;
|
|
39
|
+
if (durationMs < 60000)
|
|
40
|
+
return `${(durationMs / 1000).toFixed(1)}s`;
|
|
41
|
+
const minutes = Math.floor(durationMs / 60000);
|
|
42
|
+
const seconds = Math.floor((durationMs % 60000) / 1000);
|
|
43
|
+
return `${minutes}m ${seconds}s`;
|
|
44
|
+
}
|
|
45
|
+
async function listJobs(options) {
|
|
46
|
+
const spinner = ora("Fetching jobs...").start();
|
|
47
|
+
try {
|
|
48
|
+
const apiKey = requireApiKey();
|
|
49
|
+
const api = new ChuckyApi(apiKey);
|
|
50
|
+
const result = await api.listJobs({
|
|
51
|
+
status: options.status,
|
|
52
|
+
size: options.limit ? parseInt(options.limit, 10) : 25,
|
|
53
|
+
});
|
|
54
|
+
spinner.stop();
|
|
55
|
+
if (result.jobs.length === 0) {
|
|
56
|
+
console.log(chalk.yellow("\nNo jobs found."));
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
console.log(chalk.bold(`\nJobs (${result.jobs.length}):\n`));
|
|
60
|
+
for (const job of result.jobs) {
|
|
61
|
+
const duration = formatDuration(job.startedAt, job.finishedAt);
|
|
62
|
+
console.log(` ${chalk.bold(job.id)}`);
|
|
63
|
+
console.log(` Status: ${formatStatus(job)}`);
|
|
64
|
+
console.log(` Created: ${chalk.dim(formatDate(job.createdAt))}`);
|
|
65
|
+
if (job.startedAt) {
|
|
66
|
+
console.log(` Duration: ${chalk.dim(duration)}`);
|
|
67
|
+
}
|
|
68
|
+
console.log();
|
|
69
|
+
}
|
|
70
|
+
if (result.hasMore) {
|
|
71
|
+
console.log(chalk.dim(" More jobs available. Use --limit to see more."));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
spinner.fail("Failed to fetch jobs");
|
|
76
|
+
console.log(chalk.red(`\nError: ${error.message}`));
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async function getJob(jobId, options = {}) {
|
|
81
|
+
const spinner = ora("Fetching job...").start();
|
|
82
|
+
try {
|
|
83
|
+
const apiKey = requireApiKey();
|
|
84
|
+
const api = new ChuckyApi(apiKey);
|
|
85
|
+
const { job } = await api.getJob(jobId);
|
|
86
|
+
spinner.stop();
|
|
87
|
+
// JSON output mode
|
|
88
|
+
if (options.json) {
|
|
89
|
+
console.log(JSON.stringify(job, null, 2));
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
console.log(chalk.bold(`\nJob: ${job.id}\n`));
|
|
93
|
+
console.log(` Status: ${formatStatus(job)}`);
|
|
94
|
+
console.log(` Task: ${chalk.dim(job.taskIdentifier)}`);
|
|
95
|
+
console.log(` Created: ${chalk.dim(formatDate(job.createdAt))}`);
|
|
96
|
+
if (job.startedAt) {
|
|
97
|
+
console.log(` Started: ${chalk.dim(formatDate(job.startedAt))}`);
|
|
98
|
+
}
|
|
99
|
+
if (job.finishedAt) {
|
|
100
|
+
console.log(` Finished: ${chalk.dim(formatDate(job.finishedAt))}`);
|
|
101
|
+
}
|
|
102
|
+
console.log(` Duration: ${chalk.dim(formatDuration(job.startedAt, job.finishedAt))}`);
|
|
103
|
+
// Show error if failed
|
|
104
|
+
if (job.error) {
|
|
105
|
+
console.log();
|
|
106
|
+
console.log(chalk.red(` Error: ${job.error.message}`));
|
|
107
|
+
}
|
|
108
|
+
// Show output/response if available
|
|
109
|
+
if (job.output !== undefined) {
|
|
110
|
+
console.log();
|
|
111
|
+
console.log(chalk.bold(" Response:"));
|
|
112
|
+
const outputStr = typeof job.output === "string"
|
|
113
|
+
? job.output
|
|
114
|
+
: JSON.stringify(job.output, null, 2);
|
|
115
|
+
// Indent each line
|
|
116
|
+
const indented = outputStr.split("\n").map(line => ` ${line}`).join("\n");
|
|
117
|
+
console.log(chalk.cyan(indented));
|
|
118
|
+
}
|
|
119
|
+
console.log();
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
spinner.fail("Failed to fetch job");
|
|
123
|
+
console.log(chalk.red(`\nError: ${error.message}`));
|
|
124
|
+
process.exit(1);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
async function cancelJob(jobId) {
|
|
128
|
+
const spinner = ora("Cancelling job...").start();
|
|
129
|
+
try {
|
|
130
|
+
const apiKey = requireApiKey();
|
|
131
|
+
const api = new ChuckyApi(apiKey);
|
|
132
|
+
await api.cancelJob(jobId);
|
|
133
|
+
spinner.succeed(`Job ${jobId} cancelled`);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
spinner.fail("Failed to cancel job");
|
|
137
|
+
console.log(chalk.red(`\nError: ${error.message}`));
|
|
138
|
+
process.exit(1);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async function createJob(message, options) {
|
|
142
|
+
const spinner = ora("Creating job...").start();
|
|
143
|
+
try {
|
|
144
|
+
// Get project config and API key
|
|
145
|
+
const projectConfig = requireProjectConfig();
|
|
146
|
+
const apiKey = requireApiKey();
|
|
147
|
+
if (!projectConfig.projectId) {
|
|
148
|
+
throw new Error("No project ID found. Run 'chucky init' first.");
|
|
149
|
+
}
|
|
150
|
+
// Fetch HMAC key from API
|
|
151
|
+
spinner.text = "Fetching HMAC key...";
|
|
152
|
+
const api = new ChuckyApi(apiKey);
|
|
153
|
+
const { hmacKey } = await api.getHmacKey(projectConfig.projectId);
|
|
154
|
+
// Generate JWT token
|
|
155
|
+
spinner.text = "Creating job...";
|
|
156
|
+
const token = generateToken({
|
|
157
|
+
projectId: projectConfig.projectId,
|
|
158
|
+
hmacSecret: hmacKey,
|
|
159
|
+
expiresInSeconds: 3600, // 1 hour
|
|
160
|
+
});
|
|
161
|
+
// Generate idempotency key
|
|
162
|
+
const idempotencyKey = `cli-${Date.now()}-${crypto.randomBytes(4).toString("hex")}`;
|
|
163
|
+
// Build request body
|
|
164
|
+
const workerUrl = getWorkerUrl();
|
|
165
|
+
// Parse tools option (can be JSON or comma-separated)
|
|
166
|
+
let toolsValue = undefined;
|
|
167
|
+
if (options.tools) {
|
|
168
|
+
try {
|
|
169
|
+
toolsValue = JSON.parse(options.tools);
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
toolsValue = options.tools.split(",").map((t) => t.trim());
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Handle permission mode
|
|
176
|
+
let permissionMode = options.permissionMode;
|
|
177
|
+
let allowDangerouslySkipPermissions = false;
|
|
178
|
+
if (options.dangerouslySkipPermissions) {
|
|
179
|
+
permissionMode = "bypassPermissions";
|
|
180
|
+
allowDangerouslySkipPermissions = true;
|
|
181
|
+
}
|
|
182
|
+
const body = {
|
|
183
|
+
message,
|
|
184
|
+
idempotencyKey,
|
|
185
|
+
...(options.vessel && { vessel: options.vessel }),
|
|
186
|
+
options: {
|
|
187
|
+
token,
|
|
188
|
+
...(options.model && { model: options.model }),
|
|
189
|
+
...(options.systemPrompt && { systemPrompt: options.systemPrompt }),
|
|
190
|
+
...(options.maxTurns && { maxTurns: parseInt(options.maxTurns, 10) }),
|
|
191
|
+
...(toolsValue !== undefined && { tools: toolsValue }),
|
|
192
|
+
...(options.allowedTools && { allowedTools: options.allowedTools.split(",").map((t) => t.trim()) }),
|
|
193
|
+
...(options.disallowedTools && { disallowedTools: options.disallowedTools.split(",").map((t) => t.trim()) }),
|
|
194
|
+
...(permissionMode && { permissionMode }),
|
|
195
|
+
...(allowDangerouslySkipPermissions && { allowDangerouslySkipPermissions }),
|
|
196
|
+
},
|
|
197
|
+
};
|
|
198
|
+
if (options.ttl) {
|
|
199
|
+
body.ttl = parseInt(options.ttl, 10);
|
|
200
|
+
}
|
|
201
|
+
if (options.callbackUrl) {
|
|
202
|
+
body.callback = {
|
|
203
|
+
url: options.callbackUrl,
|
|
204
|
+
...(options.callbackSecret && { secret: options.callbackSecret }),
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
// Call incubate endpoint
|
|
208
|
+
const response = await fetch(`${workerUrl}/incubate`, {
|
|
209
|
+
method: "POST",
|
|
210
|
+
headers: { "Content-Type": "application/json" },
|
|
211
|
+
body: JSON.stringify(body),
|
|
212
|
+
});
|
|
213
|
+
const data = (await response.json());
|
|
214
|
+
if (!response.ok) {
|
|
215
|
+
throw new Error(data.message || data.error || `Request failed: ${response.status}`);
|
|
216
|
+
}
|
|
217
|
+
spinner.succeed(`Job created: ${data.vesselId}`);
|
|
218
|
+
console.log(chalk.dim(`\nIdempotency Key: ${data.idempotencyKey}`));
|
|
219
|
+
console.log(chalk.dim(`Status: ${data.status}`));
|
|
220
|
+
if (data.scheduledFor) {
|
|
221
|
+
console.log(chalk.dim(`Scheduled for: ${data.scheduledFor}`));
|
|
222
|
+
}
|
|
223
|
+
console.log(chalk.dim(`\nTrack with: chucky jobs get ${data.vesselId}`));
|
|
224
|
+
// --apply implies --wait
|
|
225
|
+
const shouldWait = options.wait || options.apply;
|
|
226
|
+
// Wait for completion if requested
|
|
227
|
+
if (shouldWait) {
|
|
228
|
+
console.log();
|
|
229
|
+
const completedJob = await waitForJob(data.vesselId);
|
|
230
|
+
// Apply changes if requested and job succeeded
|
|
231
|
+
if (options.apply && completedJob?.isSuccess) {
|
|
232
|
+
console.log();
|
|
233
|
+
await applyJobChanges(data.vesselId);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
spinner.fail("Failed to create job");
|
|
239
|
+
console.log(chalk.red(`\nError: ${error.message}`));
|
|
240
|
+
process.exit(1);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
async function applyJobChanges(jobId) {
|
|
244
|
+
const apiKey = requireApiKey();
|
|
245
|
+
const projectConfig = loadProjectConfig();
|
|
246
|
+
const api = new ChuckyApi(apiKey);
|
|
247
|
+
const folder = projectConfig?.folder || ".";
|
|
248
|
+
const fullPath = resolve(folder);
|
|
249
|
+
const branchName = `chucky/job-${jobId.replace(/^run_/, "")}`;
|
|
250
|
+
const shortId = jobId.slice(0, 12);
|
|
251
|
+
let bundlePath = null;
|
|
252
|
+
const spinner = ora("Waiting for bundle...").start();
|
|
253
|
+
try {
|
|
254
|
+
// Check if branch already exists
|
|
255
|
+
if (branchExists(fullPath, branchName)) {
|
|
256
|
+
spinner.warn(`Branch '${branchName}' already exists, skipping apply`);
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
// Wait for bundle to be available (it's uploaded asynchronously after result)
|
|
260
|
+
let bundleInfo = null;
|
|
261
|
+
const maxRetries = 15; // Jobs may take longer to finalize
|
|
262
|
+
const retryDelayMs = 2000;
|
|
263
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
264
|
+
try {
|
|
265
|
+
bundleInfo = await api.getJobBundle(jobId);
|
|
266
|
+
break; // Success
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
const isNotFound = error.message.includes("not found") ||
|
|
270
|
+
error.message.includes("No bundle");
|
|
271
|
+
if (isNotFound && attempt < maxRetries) {
|
|
272
|
+
spinner.text = `Waiting for bundle... (${attempt}/${maxRetries})`;
|
|
273
|
+
await new Promise(resolve => setTimeout(resolve, retryDelayMs));
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
throw error;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
if (!bundleInfo) {
|
|
281
|
+
spinner.warn("Bundle not available yet, run 'chucky fetch' manually later");
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
if (!bundleInfo.hasChanges) {
|
|
285
|
+
spinner.succeed("Job completed with no file changes");
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
spinner.text = "Downloading bundle...";
|
|
289
|
+
// Download bundle
|
|
290
|
+
bundlePath = join(tmpdir(), `chucky-bundle-${jobId}.bundle`);
|
|
291
|
+
const response = await fetch(bundleInfo.downloadUrl);
|
|
292
|
+
if (!response.ok || !response.body) {
|
|
293
|
+
spinner.fail("Failed to download bundle");
|
|
294
|
+
console.log(chalk.red("Failed to download bundle from server"));
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
const fileStream = createWriteStream(bundlePath);
|
|
298
|
+
await pipeline(Readable.fromWeb(response.body), fileStream);
|
|
299
|
+
spinner.text = "Verifying bundle...";
|
|
300
|
+
// Verify bundle
|
|
301
|
+
if (!verifyBundle(fullPath, bundlePath)) {
|
|
302
|
+
spinner.fail("Bundle verification failed");
|
|
303
|
+
console.log(chalk.red("Bundle verification failed. The bundle may be corrupted."));
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
spinner.text = "Fetching to branch...";
|
|
307
|
+
// Fetch to temp branch
|
|
308
|
+
fetchBundle(fullPath, bundlePath, branchName);
|
|
309
|
+
spinner.text = "Applying changes...";
|
|
310
|
+
// Apply to working directory (with merge fallback)
|
|
311
|
+
let result;
|
|
312
|
+
try {
|
|
313
|
+
result = applyBranch(fullPath, branchName);
|
|
314
|
+
}
|
|
315
|
+
catch (ffError) {
|
|
316
|
+
const errorMsg = ffError.message || "";
|
|
317
|
+
if (errorMsg.includes("fast-forward") || errorMsg.includes("diverging") || errorMsg.includes("Not possible")) {
|
|
318
|
+
spinner.text = "Merging changes...";
|
|
319
|
+
result = applyBranch(fullPath, branchName, { force: true });
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
throw ffError;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
spinner.succeed(`Applied ${result.commits} commit(s) with ${result.files} file(s) changed`);
|
|
326
|
+
console.log(chalk.dim(`\nChanges from job ${shortId} have been applied to your working directory.`));
|
|
327
|
+
console.log(chalk.dim(`Branch '${branchName}' contains the original commits.`));
|
|
328
|
+
}
|
|
329
|
+
catch (error) {
|
|
330
|
+
spinner.fail("Apply failed");
|
|
331
|
+
console.log(chalk.red(`\nError: ${error.message}`));
|
|
332
|
+
console.log(chalk.dim(`\nYou can manually run: chucky fetch ${jobId} && chucky apply ${jobId}`));
|
|
333
|
+
}
|
|
334
|
+
finally {
|
|
335
|
+
// Clean up temp file
|
|
336
|
+
if (bundlePath) {
|
|
337
|
+
try {
|
|
338
|
+
await unlink(bundlePath);
|
|
339
|
+
}
|
|
340
|
+
catch {
|
|
341
|
+
// Ignore cleanup errors
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
async function waitForJob(jobId) {
|
|
347
|
+
const spinner = ora("Waiting for job to complete...").start();
|
|
348
|
+
const apiKey = requireApiKey();
|
|
349
|
+
const api = new ChuckyApi(apiKey);
|
|
350
|
+
const startTime = Date.now();
|
|
351
|
+
const maxWaitMs = 600000; // 10 minutes
|
|
352
|
+
while (Date.now() - startTime < maxWaitMs) {
|
|
353
|
+
try {
|
|
354
|
+
const { job } = await api.getJob(jobId);
|
|
355
|
+
if (job.isCompleted) {
|
|
356
|
+
if (job.isSuccess) {
|
|
357
|
+
spinner.succeed("Job completed successfully");
|
|
358
|
+
}
|
|
359
|
+
else if (job.isFailed) {
|
|
360
|
+
spinner.fail("Job failed");
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
spinner.info(`Job finished with status: ${job.status}`);
|
|
364
|
+
}
|
|
365
|
+
console.log(chalk.dim(`\nDuration: ${formatDuration(job.startedAt, job.finishedAt)}`));
|
|
366
|
+
return job;
|
|
367
|
+
}
|
|
368
|
+
spinner.text = `Waiting for job... (${job.status})`;
|
|
369
|
+
}
|
|
370
|
+
catch {
|
|
371
|
+
// Ignore errors during polling
|
|
372
|
+
}
|
|
373
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
374
|
+
}
|
|
375
|
+
spinner.warn("Timeout waiting for job completion");
|
|
376
|
+
console.log(chalk.dim(`\nJob is still running. Check status with: chucky jobs get ${jobId}`));
|
|
377
|
+
return null;
|
|
378
|
+
}
|
|
379
|
+
export function createJobsCommand() {
|
|
380
|
+
const cmd = new Command("jobs").description("Manage jobs (background runs)");
|
|
381
|
+
cmd
|
|
382
|
+
.command("list")
|
|
383
|
+
.description("List recent jobs")
|
|
384
|
+
.option("-s, --status <status>", "Filter by status (PENDING, QUEUED, EXECUTING, COMPLETED, FAILED, CANCELED)")
|
|
385
|
+
.option("-l, --limit <number>", "Number of jobs to show", "25")
|
|
386
|
+
.action(listJobs);
|
|
387
|
+
cmd
|
|
388
|
+
.command("get <jobId>")
|
|
389
|
+
.description("Get details of a specific job")
|
|
390
|
+
.option("--json", "Output raw JSON response")
|
|
391
|
+
.action(getJob);
|
|
392
|
+
cmd
|
|
393
|
+
.command("cancel <jobId>")
|
|
394
|
+
.description("Cancel a running job")
|
|
395
|
+
.action(cancelJob);
|
|
396
|
+
cmd
|
|
397
|
+
.command("create <message>")
|
|
398
|
+
.description("Create a new background job")
|
|
399
|
+
.option("-m, --model <model>", "Model to use (e.g., claude-sonnet-4-5-20250929)")
|
|
400
|
+
.option("-s, --system-prompt <prompt>", "System prompt")
|
|
401
|
+
.option("--max-turns <n>", "Maximum conversation turns")
|
|
402
|
+
.option("--callback-url <url>", "Webhook URL for result delivery")
|
|
403
|
+
.option("--callback-secret <secret>", "Secret for webhook HMAC signature")
|
|
404
|
+
.option("--ttl <seconds>", "Delay execution by N seconds")
|
|
405
|
+
.option("-w, --wait", "Wait for job completion")
|
|
406
|
+
.option("-a, --apply", "Wait for completion and apply changes (implies --wait)")
|
|
407
|
+
.option("-v, --vessel <name>", "Persistent sandbox name for session reuse")
|
|
408
|
+
// SDK options
|
|
409
|
+
.option("--tools <tools>", 'Tools config (JSON or comma-separated names)')
|
|
410
|
+
.option("--allowed-tools <tools>", "Comma-separated list of allowed tools")
|
|
411
|
+
.option("--disallowed-tools <tools>", "Comma-separated list of disallowed tools")
|
|
412
|
+
.option("--permission-mode <mode>", "Permission mode (bypassPermissions, default, etc.)")
|
|
413
|
+
.option("--dangerously-skip-permissions", "Bypass all permission checks")
|
|
414
|
+
.action(createJob);
|
|
415
|
+
return cmd;
|
|
416
|
+
}
|
|
417
|
+
//# sourceMappingURL=jobs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/commands/jobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAmCjD"}
|
package/dist/commands/keys.js
CHANGED
|
@@ -8,9 +8,14 @@ export async function keysCommand() {
|
|
|
8
8
|
const apiKey = requireApiKey();
|
|
9
9
|
const projectConfig = requireProjectConfig();
|
|
10
10
|
const api = new ChuckyApi(apiKey);
|
|
11
|
+
if (!projectConfig.projectId) {
|
|
12
|
+
spinner.fail("Project not linked");
|
|
13
|
+
console.log(chalk.red("\nError: Project not linked. Run 'chucky init' first."));
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
11
16
|
const keyInfo = await api.getHmacKey(projectConfig.projectId);
|
|
12
17
|
spinner.stop();
|
|
13
|
-
console.log(chalk.bold(`\nHMAC Key for ${projectConfig.
|
|
18
|
+
console.log(chalk.bold(`\nHMAC Key for ${projectConfig.name}\n`));
|
|
14
19
|
console.log(chalk.dim("Use this key to sign JWTs for your users.\n"));
|
|
15
20
|
console.log(` ${chalk.bold("Key:")} ${keyInfo.hmacKey}`);
|
|
16
21
|
console.log(` ${chalk.bold("Created:")} ${new Date(keyInfo.createdAt).toLocaleString()}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEpD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,oBAAoB,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAE9D,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEpD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,oBAAoB,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;QAElC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;YAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAE9D,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE,CAC9E,CAAC;QACF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,mFAAmF,CACpF,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAa,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/commands/log.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,UAAU,CAC9B,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,IAAI,CAAC,CAiFf"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { requireApiKey, requireProjectConfig } from "../lib/config.js";
|
|
4
|
+
import { ChuckyApi, isJobId } from "../lib/api.js";
|
|
5
|
+
import { getCommitLog, branchExists } from "../lib/git.js";
|
|
6
|
+
import { ExitCode, exitWithError, output, } from "../lib/output.js";
|
|
7
|
+
export async function logCommand(id, options) {
|
|
8
|
+
const outputOpts = {
|
|
9
|
+
json: options.json,
|
|
10
|
+
quiet: false,
|
|
11
|
+
};
|
|
12
|
+
const isSession = !isJobId(id);
|
|
13
|
+
try {
|
|
14
|
+
const apiKey = requireApiKey();
|
|
15
|
+
const projectConfig = requireProjectConfig();
|
|
16
|
+
const api = new ChuckyApi(apiKey);
|
|
17
|
+
const folder = projectConfig.folder || ".";
|
|
18
|
+
const fullPath = resolve(folder);
|
|
19
|
+
// Resolve partial session IDs
|
|
20
|
+
const resolvedId = isSession ? await api.resolveSessionId(id, projectConfig.projectId) : id;
|
|
21
|
+
const branchName = isSession ? `chucky/session-${resolvedId}` : `chucky/job-${resolvedId}`;
|
|
22
|
+
// Use short ID for display
|
|
23
|
+
const shortId = isSession ? resolvedId.slice(0, 8) : resolvedId;
|
|
24
|
+
// Check if branch exists
|
|
25
|
+
if (!branchExists(fullPath, branchName)) {
|
|
26
|
+
exitWithError(ExitCode.NOT_FOUND, {
|
|
27
|
+
error: "branch_not_found",
|
|
28
|
+
message: `Branch '${branchName}' not found. Run 'chucky fetch ${shortId}' first.`,
|
|
29
|
+
[isSession ? "session_id" : "job_id"]: resolvedId,
|
|
30
|
+
}, outputOpts);
|
|
31
|
+
}
|
|
32
|
+
const commits = getCommitLog(fullPath, branchName);
|
|
33
|
+
if (options.json) {
|
|
34
|
+
output({
|
|
35
|
+
[isSession ? "session_id" : "job_id"]: resolvedId,
|
|
36
|
+
commits: commits.map((c) => ({
|
|
37
|
+
hash: c.hash,
|
|
38
|
+
message: c.message,
|
|
39
|
+
files: c.filesChanged,
|
|
40
|
+
})),
|
|
41
|
+
}, outputOpts);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
console.log(chalk.bold(`\nCommits for ${isSession ? "session" : "job"} ${shortId}:\n`));
|
|
45
|
+
if (commits.length === 0) {
|
|
46
|
+
console.log(chalk.dim(" No commits found"));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
for (const commit of commits) {
|
|
50
|
+
console.log(chalk.yellow(commit.hash) +
|
|
51
|
+
" " +
|
|
52
|
+
commit.message +
|
|
53
|
+
chalk.dim(` (${commit.filesChanged} files)`));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
console.log("");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
if (error.code) {
|
|
61
|
+
throw error;
|
|
62
|
+
}
|
|
63
|
+
exitWithError(ExitCode.NETWORK_ERROR, {
|
|
64
|
+
error: "log_failed",
|
|
65
|
+
message: error.message,
|
|
66
|
+
}, outputOpts);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/commands/log.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export interface PromptOptions {
|
|
2
2
|
project?: string;
|
|
3
3
|
token?: string;
|
|
4
|
+
vessel?: string;
|
|
4
5
|
outputFormat?: "text" | "json" | "stream-json";
|
|
5
6
|
jsonSchema?: string;
|
|
6
7
|
model?: string;
|
|
@@ -16,6 +17,7 @@ export interface PromptOptions {
|
|
|
16
17
|
agents?: string;
|
|
17
18
|
betas?: string;
|
|
18
19
|
allowPossession?: boolean;
|
|
20
|
+
apply?: boolean;
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
21
23
|
* Main prompt command handler
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/commands/prompt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/commands/prompt.ts"],"names":[],"mappings":"AAsCA,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAmNf"}
|