@chucky.cloud/cli 0.2.8 → 0.2.9

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.
Files changed (78) hide show
  1. package/dist/commands/apply.d.ts +7 -0
  2. package/dist/commands/apply.d.ts.map +1 -0
  3. package/dist/commands/apply.js +104 -0
  4. package/dist/commands/apply.js.map +1 -0
  5. package/dist/commands/config.d.ts.map +1 -1
  6. package/dist/commands/config.js +5 -1
  7. package/dist/commands/config.js.map +1 -1
  8. package/dist/commands/delete.js +3 -3
  9. package/dist/commands/delete.js.map +1 -1
  10. package/dist/commands/deploy.d.ts +6 -2
  11. package/dist/commands/deploy.d.ts.map +1 -1
  12. package/dist/commands/deploy.js +177 -33
  13. package/dist/commands/deploy.js.map +1 -1
  14. package/dist/commands/diff.d.ts +6 -0
  15. package/dist/commands/diff.d.ts.map +1 -0
  16. package/dist/commands/diff.js +101 -0
  17. package/dist/commands/diff.js.map +1 -0
  18. package/dist/commands/discard.d.ts +6 -0
  19. package/dist/commands/discard.d.ts.map +1 -0
  20. package/dist/commands/discard.js +36 -0
  21. package/dist/commands/discard.js.map +1 -0
  22. package/dist/commands/fetch.d.ts +6 -0
  23. package/dist/commands/fetch.d.ts.map +1 -0
  24. package/dist/commands/fetch.js +147 -0
  25. package/dist/commands/fetch.js.map +1 -0
  26. package/dist/commands/init.d.ts.map +1 -1
  27. package/dist/commands/init.js +199 -57
  28. package/dist/commands/init.js.map +1 -1
  29. package/dist/commands/jobs.d.ts +3 -0
  30. package/dist/commands/jobs.d.ts.map +1 -0
  31. package/dist/commands/jobs.js +415 -0
  32. package/dist/commands/jobs.js.map +1 -0
  33. package/dist/commands/keys.d.ts.map +1 -1
  34. package/dist/commands/keys.js +6 -1
  35. package/dist/commands/keys.js.map +1 -1
  36. package/dist/commands/log.d.ts +5 -0
  37. package/dist/commands/log.d.ts.map +1 -0
  38. package/dist/commands/log.js +69 -0
  39. package/dist/commands/log.js.map +1 -0
  40. package/dist/commands/prompt.d.ts +1 -0
  41. package/dist/commands/prompt.d.ts.map +1 -1
  42. package/dist/commands/prompt.js +173 -1
  43. package/dist/commands/prompt.js.map +1 -1
  44. package/dist/commands/pull.d.ts +7 -0
  45. package/dist/commands/pull.d.ts.map +1 -0
  46. package/dist/commands/pull.js +19 -0
  47. package/dist/commands/pull.js.map +1 -0
  48. package/dist/commands/sessions.d.ts +7 -0
  49. package/dist/commands/sessions.d.ts.map +1 -0
  50. package/dist/commands/sessions.js +57 -0
  51. package/dist/commands/sessions.js.map +1 -0
  52. package/dist/commands/wait.d.ts +7 -0
  53. package/dist/commands/wait.d.ts.map +1 -0
  54. package/dist/commands/wait.js +91 -0
  55. package/dist/commands/wait.js.map +1 -0
  56. package/dist/index.js +79 -1
  57. package/dist/index.js.map +1 -1
  58. package/dist/lib/api.d.ts +130 -0
  59. package/dist/lib/api.d.ts.map +1 -1
  60. package/dist/lib/api.js +99 -0
  61. package/dist/lib/api.js.map +1 -1
  62. package/dist/lib/archive.d.ts +5 -1
  63. package/dist/lib/archive.d.ts.map +1 -1
  64. package/dist/lib/archive.js +10 -15
  65. package/dist/lib/archive.js.map +1 -1
  66. package/dist/lib/config.d.ts +80 -5
  67. package/dist/lib/config.d.ts.map +1 -1
  68. package/dist/lib/config.js +86 -9
  69. package/dist/lib/config.js.map +1 -1
  70. package/dist/lib/git.d.ts +70 -0
  71. package/dist/lib/git.d.ts.map +1 -0
  72. package/dist/lib/git.js +232 -0
  73. package/dist/lib/git.js.map +1 -0
  74. package/dist/lib/output.d.ts +42 -0
  75. package/dist/lib/output.d.ts.map +1 -0
  76. package/dist/lib/output.js +123 -0
  77. package/dist/lib/output.js.map +1 -0
  78. package/package.json +1 -1
@@ -0,0 +1,7 @@
1
+ export interface ApplyOptions {
2
+ force?: boolean;
3
+ json?: boolean;
4
+ quiet?: boolean;
5
+ }
6
+ export declare function applyCommand(id: string, options: ApplyOptions): Promise<void>;
7
+ //# sourceMappingURL=apply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAwHf"}
@@ -0,0 +1,104 @@
1
+ import chalk from "chalk";
2
+ import ora from "ora";
3
+ import { resolve } from "node:path";
4
+ import { requireApiKey, requireProjectConfig } from "../lib/config.js";
5
+ import { ChuckyApi, isJobId } from "../lib/api.js";
6
+ import { applyBranch, branchExists, getBundleStats } from "../lib/git.js";
7
+ import { ExitCode, exitWithError, output, } from "../lib/output.js";
8
+ export async function applyCommand(id, options) {
9
+ const outputOpts = {
10
+ json: options.json,
11
+ quiet: options.quiet,
12
+ };
13
+ const isSession = !isJobId(id);
14
+ try {
15
+ const apiKey = requireApiKey();
16
+ const projectConfig = requireProjectConfig();
17
+ const api = new ChuckyApi(apiKey);
18
+ const folder = projectConfig.folder || ".";
19
+ const fullPath = resolve(folder);
20
+ // Resolve partial session IDs
21
+ const resolvedId = isSession ? await api.resolveSessionId(id, projectConfig.projectId) : id;
22
+ const branchName = isSession ? `chucky/session-${resolvedId}` : `chucky/job-${resolvedId}`;
23
+ // Use short ID for display
24
+ const shortId = isSession ? resolvedId.slice(0, 8) : resolvedId;
25
+ // Check if branch exists
26
+ if (!branchExists(fullPath, branchName)) {
27
+ exitWithError(ExitCode.NOT_FOUND, {
28
+ error: "branch_not_found",
29
+ message: `Branch '${branchName}' not found. Run 'chucky fetch ${shortId}' first.`,
30
+ [isSession ? "session_id" : "job_id"]: resolvedId,
31
+ }, outputOpts);
32
+ }
33
+ const spinner = options.json || options.quiet ? null : ora("Applying changes...").start();
34
+ // Get stats before apply
35
+ const stats = getBundleStats(fullPath, branchName);
36
+ try {
37
+ // Try fast-forward first, auto-fallback to merge if diverged
38
+ let result;
39
+ let usedMerge = false;
40
+ if (options.force) {
41
+ result = applyBranch(fullPath, branchName, { force: true });
42
+ usedMerge = true;
43
+ }
44
+ else {
45
+ try {
46
+ result = applyBranch(fullPath, branchName);
47
+ }
48
+ catch (ffError) {
49
+ const ffMsg = ffError.message;
50
+ if (ffMsg.includes("fast-forward") || ffMsg.includes("diverging")) {
51
+ if (spinner)
52
+ spinner.text = "Branches diverged, creating merge commit...";
53
+ result = applyBranch(fullPath, branchName, { force: true });
54
+ usedMerge = true;
55
+ }
56
+ else {
57
+ throw ffError;
58
+ }
59
+ }
60
+ }
61
+ spinner?.succeed(`Applied ${result.commits} commit(s), ${result.files} file(s) changed${usedMerge ? " (merge commit)" : ""}`);
62
+ const outputResult = {
63
+ status: "applied",
64
+ [isSession ? "session_id" : "job_id"]: resolvedId,
65
+ commits_merged: result.commits,
66
+ files_changed: result.files,
67
+ insertions: stats.insertions,
68
+ deletions: stats.deletions,
69
+ merge_commit: usedMerge,
70
+ };
71
+ if (options.json || options.quiet) {
72
+ output(outputResult, outputOpts);
73
+ }
74
+ else {
75
+ console.log(chalk.dim(`\nChanges: +${stats.insertions} -${stats.deletions}`));
76
+ console.log(chalk.green("\nChanges applied successfully!"));
77
+ }
78
+ }
79
+ catch (error) {
80
+ const errorMessage = error.message;
81
+ // Check for actual merge conflict (not just diverging branches)
82
+ if (errorMessage.includes("conflict") ||
83
+ errorMessage.includes("CONFLICT")) {
84
+ spinner?.fail("Merge conflict");
85
+ exitWithError(ExitCode.CONFLICT, {
86
+ error: "merge_conflict",
87
+ message: "Merge conflict detected. Resolve conflicts manually and commit.",
88
+ [isSession ? "session_id" : "job_id"]: resolvedId,
89
+ }, outputOpts);
90
+ }
91
+ throw error;
92
+ }
93
+ }
94
+ catch (error) {
95
+ if (error.code) {
96
+ throw error;
97
+ }
98
+ exitWithError(ExitCode.NETWORK_ERROR, {
99
+ error: "apply_failed",
100
+ message: error.message,
101
+ }, { json: options.json, quiet: options.quiet });
102
+ }
103
+ }
104
+ //# sourceMappingURL=apply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EACL,QAAQ,EACR,aAAa,EACb,MAAM,GAEP,MAAM,kBAAkB,CAAC;AAQ1B,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,EAAU,EACV,OAAqB;IAErB,MAAM,UAAU,GAAkB;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAE/B,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;QAClC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,IAAI,GAAG,CAAC;QAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAEjC,8BAA8B;QAC9B,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,gBAAgB,CAAC,EAAE,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,kBAAkB,UAAU,EAAE,CAAC,CAAC,CAAC,cAAc,UAAU,EAAE,CAAC;QAE3F,2BAA2B;QAC3B,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAEhE,yBAAyB;QACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC;YACxC,aAAa,CACX,QAAQ,CAAC,SAAS,EAClB;gBACE,KAAK,EAAE,kBAAkB;gBACzB,OAAO,EAAE,WAAW,UAAU,kCAAkC,OAAO,UAAU;gBACjF,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU;aAClD,EACD,UAAU,CACX,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GACX,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAC;QAE5E,yBAAyB;QACzB,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEnD,IAAI,CAAC;YACH,6DAA6D;YAC7D,IAAI,MAA0C,CAAC;YAC/C,IAAI,SAAS,GAAG,KAAK,CAAC;YAEtB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC;oBACH,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAC7C,CAAC;gBAAC,OAAO,OAAO,EAAE,CAAC;oBACjB,MAAM,KAAK,GAAI,OAAiB,CAAC,OAAO,CAAC;oBACzC,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;wBAClE,IAAI,OAAO;4BAAE,OAAO,CAAC,IAAI,GAAG,6CAA6C,CAAC;wBAC1E,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC5D,SAAS,GAAG,IAAI,CAAC;oBACnB,CAAC;yBAAM,CAAC;wBACN,MAAM,OAAO,CAAC;oBAChB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,EAAE,OAAO,CACd,WAAW,MAAM,CAAC,OAAO,eAAe,MAAM,CAAC,KAAK,mBAAmB,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5G,CAAC;YAEF,MAAM,YAAY,GAAG;gBACnB,MAAM,EAAE,SAAS;gBACjB,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU;gBACjD,cAAc,EAAE,MAAM,CAAC,OAAO;gBAC9B,aAAa,EAAE,MAAM,CAAC,KAAK;gBAC3B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,YAAY,EAAE,SAAS;aACxB,CAAC;YAEF,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAI,KAAe,CAAC,OAAO,CAAC;YAE9C,gEAAgE;YAChE,IACE,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACjC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EACjC,CAAC;gBACD,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAChC,aAAa,CACX,QAAQ,CAAC,QAAQ,EACjB;oBACE,KAAK,EAAE,gBAAgB;oBACvB,OAAO,EAAE,iEAAiE;oBAC1E,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU;iBAClD,EACD,UAAU,CACX,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAAa,CAAC,IAAI,EAAE,CAAC;YACxB,MAAM,KAAK,CAAC;QACd,CAAC;QAED,aAAa,CACX,QAAQ,CAAC,aAAa,EACtB;YACE,KAAK,EAAE,cAAc;YACrB,OAAO,EAAG,KAAe,CAAC,OAAO;SAClC,EACD,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAC7C,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAMA,wBAAsB,sBAAsB,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CrF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAMA,wBAAsB,sBAAsB,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDrF"}
@@ -30,10 +30,14 @@ export async function configAnthropicCommand(options) {
30
30
  console.log(chalk.red("\nError: Anthropic API key should start with 'sk-ant-'"));
31
31
  process.exit(1);
32
32
  }
33
+ if (!projectConfig.projectId) {
34
+ console.log(chalk.red("\nError: Project not linked. Run 'chucky init' first."));
35
+ process.exit(1);
36
+ }
33
37
  const spinner = ora("Updating Anthropic API key...").start();
34
38
  await api.setAnthropicKey(projectConfig.projectId, anthropicKey);
35
39
  spinner.succeed("Anthropic API key updated");
36
- console.log(chalk.dim(`\nProject: ${projectConfig.projectName}`));
40
+ console.log(chalk.dim(`\nProject: ${projectConfig.name}`));
37
41
  }
38
42
  catch (error) {
39
43
  console.log(chalk.red(`\nError: ${error.message}`));
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,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,sBAAsB,CAAC,OAAyB;IACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAErD,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,8CAA8C;QAC9C,IAAI,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;QAE/B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,YAAY,GAAG,MAAM,QAAQ,CAAC;gBAC5B,OAAO,EAAE,iCAAiC;gBAC1C,IAAI,EAAE,GAAG;gBACT,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,IAAI,CAAC,KAAK;wBAAE,OAAO,qBAAqB,CAAC;oBACzC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBACjC,OAAO,+CAA+C,CAAC;oBACzD,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC,CAAC;QACL,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,wDAAwD,CAAC,CACpE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,+BAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;QAE7D,MAAM,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAEjE,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,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,sBAAsB,CAAC,OAAyB;IACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAErD,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,8CAA8C;QAC9C,IAAI,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;QAE/B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,YAAY,GAAG,MAAM,QAAQ,CAAC;gBAC5B,OAAO,EAAE,iCAAiC;gBAC1C,IAAI,EAAE,GAAG;gBACT,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,IAAI,CAAC,KAAK;wBAAE,OAAO,qBAAqB,CAAC;oBACzC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBACjC,OAAO,+CAA+C,CAAC;oBACzD,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC,CAAC;QACL,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,wDAAwD,CAAC,CACpE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;YAC7B,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,GAAG,CAAC,+BAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;QAE7D,MAAM,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAEjE,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,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"}
@@ -13,15 +13,15 @@ export async function deleteCommand(projectIdArg) {
13
13
  // If no project ID provided, try current project or ask
14
14
  if (!projectId) {
15
15
  const projectConfig = loadProjectConfig();
16
- if (projectConfig) {
16
+ if (projectConfig && projectConfig.projectId) {
17
17
  // Use current project
18
18
  const useCurrent = await confirm({
19
- message: `Delete current project '${projectConfig.projectName}'?`,
19
+ message: `Delete current project '${projectConfig.name}'?`,
20
20
  default: false,
21
21
  });
22
22
  if (useCurrent) {
23
23
  projectId = projectConfig.projectId;
24
- projectName = projectConfig.projectName;
24
+ projectName = projectConfig.name;
25
25
  }
26
26
  }
27
27
  // If still no project ID, let user select from list
@@ -1 +1 @@
1
- {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,8 @@
1
- export declare function deployCommand(options: {
1
+ export interface DeployOptions {
2
2
  folder?: string;
3
- }): Promise<void>;
3
+ force?: boolean;
4
+ json?: boolean;
5
+ quiet?: boolean;
6
+ }
7
+ export declare function deployCommand(options: DeployOptions): Promise<void>;
4
8
  //# sourceMappingURL=deploy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAwEA,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4F/E"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAsFA,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA2QzE"}
@@ -1,16 +1,18 @@
1
1
  import chalk from "chalk";
2
2
  import ora from "ora";
3
3
  import crypto from "node:crypto";
4
- import { resolve } from "node:path";
5
- import { existsSync, unlinkSync } from "node:fs";
4
+ import { resolve, join } from "node:path";
5
+ import { existsSync, unlinkSync, writeFileSync } from "node:fs";
6
6
  import { isLoggedIn, loadProjectConfig, saveGlobalConfig, loadGlobalConfig, } from "../lib/config.js";
7
7
  import { ChuckyApi } from "../lib/api.js";
8
8
  import { createArchive, formatBytes } from "../lib/archive.js";
9
9
  import { uploadToR2 } from "../lib/r2.js";
10
10
  import { password } from "@inquirer/prompts";
11
11
  import { initCommand } from "./init.js";
12
+ import { getGitInfo, autoCommit } from "../lib/git.js";
13
+ import { ExitCode, exitWithError, output } from "../lib/output.js";
12
14
  const DEFAULT_PORTAL_URL = "https://hidden-owl-118.convex.site";
13
- async function ensureLoggedIn() {
15
+ async function ensureLoggedIn(options) {
14
16
  // Check environment variable first
15
17
  const envKey = process.env.CHUCKY_API_KEY;
16
18
  if (envKey) {
@@ -21,6 +23,13 @@ async function ensureLoggedIn() {
21
23
  const config = loadGlobalConfig();
22
24
  return config.apiKey;
23
25
  }
26
+ // In JSON/quiet mode, don't prompt - just fail
27
+ if (options.json || options.quiet) {
28
+ exitWithError(ExitCode.NETWORK_ERROR, {
29
+ error: "not_logged_in",
30
+ message: "Not logged in. Run 'chucky login' first or set CHUCKY_API_KEY environment variable.",
31
+ }, options);
32
+ }
24
33
  // Guide user through login
25
34
  console.log(chalk.yellow("Not logged in. Let's set up your API key first.\n"));
26
35
  const apiKey = await password({
@@ -55,15 +64,29 @@ async function ensureLoggedIn() {
55
64
  return apiKey;
56
65
  }
57
66
  export async function deployCommand(options) {
58
- console.log(chalk.bold("\nDeploying to Chucky\n"));
67
+ const outputOpts = {
68
+ json: options.json,
69
+ quiet: options.quiet,
70
+ };
71
+ // Only show header in interactive mode
72
+ if (!options.json && !options.quiet) {
73
+ console.log(chalk.bold("\nDeploying to Chucky\n"));
74
+ }
59
75
  let archivePath = null;
76
+ let chuckyStartPath = null;
60
77
  try {
61
78
  // Ensure user is logged in
62
- const apiKey = await ensureLoggedIn();
79
+ const apiKey = await ensureLoggedIn(outputOpts);
63
80
  // Check if project is initialized
64
81
  let projectConfig = loadProjectConfig();
65
82
  if (!projectConfig) {
66
- console.log(chalk.yellow("No project configuration found. Let's initialize one.\n"));
83
+ if (options.json || options.quiet) {
84
+ exitWithError(ExitCode.NOT_FOUND, {
85
+ error: "no_project",
86
+ message: "No chucky.json found. Run 'chucky init' first.",
87
+ }, outputOpts);
88
+ }
89
+ console.log(chalk.yellow("No chucky.json found. Let's initialize one.\n"));
67
90
  await initCommand({ yes: false });
68
91
  projectConfig = loadProjectConfig();
69
92
  if (!projectConfig) {
@@ -71,54 +94,159 @@ export async function deployCommand(options) {
71
94
  }
72
95
  console.log(""); // Add spacing
73
96
  }
97
+ // Check if project is bound (has .chucky with projectId)
98
+ if (!projectConfig.projectId) {
99
+ if (options.json || options.quiet) {
100
+ exitWithError(ExitCode.NOT_FOUND, {
101
+ error: "project_not_linked",
102
+ message: "Project not linked. Run 'chucky init' first.",
103
+ }, outputOpts);
104
+ }
105
+ console.log(chalk.yellow("Project not linked. Let's link it to a Chucky project.\n"));
106
+ await initCommand({ yes: false });
107
+ projectConfig = loadProjectConfig();
108
+ if (!projectConfig?.projectId) {
109
+ throw new Error("Project linking failed");
110
+ }
111
+ console.log(""); // Add spacing
112
+ }
74
113
  const api = new ChuckyApi(apiKey);
75
114
  // Determine folder to deploy
76
115
  const folder = options.folder || projectConfig.folder || ".";
77
116
  const fullPath = resolve(folder);
78
117
  if (!existsSync(fullPath)) {
79
- console.log(chalk.red(`\nError: Directory does not exist: ${fullPath}`));
80
- process.exit(1);
118
+ exitWithError(ExitCode.NOT_FOUND, {
119
+ error: "folder_not_found",
120
+ message: `Directory does not exist: ${fullPath}`,
121
+ folder: fullPath,
122
+ }, outputOpts);
123
+ }
124
+ // Git validation
125
+ const gitInfo = getGitInfo(fullPath);
126
+ if (!gitInfo.isRepo) {
127
+ exitWithError(ExitCode.NOT_GIT_REPO, {
128
+ error: "not_a_git_repo",
129
+ message: `Folder '${folder}' is not a git repository. Initialize with: git init && git add -A && git commit -m "Initial"`,
130
+ folder,
131
+ }, outputOpts);
132
+ }
133
+ if (!gitInfo.isRoot) {
134
+ exitWithError(ExitCode.NOT_GIT_REPO, {
135
+ error: "nested_repo",
136
+ message: `Folder '${folder}' is part of a parent git repository. The deploy folder must be its own git root.`,
137
+ folder,
138
+ }, outputOpts);
81
139
  }
82
- console.log(chalk.dim(`Project: ${projectConfig.projectName}`));
83
- console.log(chalk.dim(`Folder: ${fullPath}\n`));
84
- // Step 1: Create archive
85
- const archiveSpinner = ora("Creating archive...").start();
86
- const archive = await createArchive(fullPath);
140
+ // Check for uncommitted changes
141
+ if (gitInfo.isDirty) {
142
+ if (options.force) {
143
+ if (!options.json && !options.quiet) {
144
+ console.log(chalk.yellow("Auto-committing uncommitted changes..."));
145
+ }
146
+ autoCommit(fullPath, "Auto-commit before deploy");
147
+ }
148
+ else {
149
+ exitWithError(ExitCode.DIRTY_WORKSPACE, {
150
+ error: "dirty_workspace",
151
+ message: "Uncommitted changes in workspace. Use --force to auto-commit.",
152
+ files: gitInfo.dirtyFiles,
153
+ }, outputOpts);
154
+ }
155
+ }
156
+ // Record starting commit
157
+ const startCommit = getGitInfo(fullPath).headCommit;
158
+ // Write .chucky-start file so worker knows the baseline commit
159
+ chuckyStartPath = join(fullPath, ".chucky-start");
160
+ writeFileSync(chuckyStartPath, startCommit, "utf-8");
161
+ if (!options.json && !options.quiet) {
162
+ console.log(chalk.dim(`Project: ${projectConfig.name}`));
163
+ console.log(chalk.dim(`Folder: ${fullPath}`));
164
+ console.log(chalk.dim(`Start commit: ${startCommit.slice(0, 7)}\n`));
165
+ }
166
+ // Step 1: Create archive (include .git)
167
+ const archiveSpinner = options.json || options.quiet ? null : ora("Creating archive...").start();
168
+ const archive = await createArchive(fullPath, { includeGit: true });
87
169
  archivePath = archive.path;
88
- archiveSpinner.succeed(`Archive created (${formatBytes(archive.size)}, ${archive.fileCount} files)`);
170
+ archiveSpinner?.succeed(`Archive created (${formatBytes(archive.size)}, ${archive.fileCount} files)`);
171
+ // Clean up .chucky-start file (it's in the archive now)
172
+ if (existsSync(chuckyStartPath)) {
173
+ unlinkSync(chuckyStartPath);
174
+ }
89
175
  // Step 2: Get upload URL
90
- const urlSpinner = ora("Getting upload URL...").start();
176
+ const urlSpinner = options.json || options.quiet ? null : ora("Getting upload URL...").start();
91
177
  const uploadInfo = await api.getUploadUrl(projectConfig.projectId);
92
- urlSpinner.succeed("Got upload URL");
178
+ urlSpinner?.succeed("Got upload URL");
93
179
  // Step 3: Upload to R2
94
- const uploadSpinner = ora("Uploading...").start();
180
+ const uploadSpinner = options.json || options.quiet ? null : ora("Uploading...").start();
95
181
  await uploadToR2(uploadInfo, archivePath, (uploaded, total) => {
96
- const percent = Math.round((uploaded / total) * 100);
97
- uploadSpinner.text = `Uploading... ${percent}% (${formatBytes(uploaded)}/${formatBytes(total)})`;
182
+ if (uploadSpinner) {
183
+ const percent = Math.round((uploaded / total) * 100);
184
+ uploadSpinner.text = `Uploading... ${percent}% (${formatBytes(uploaded)}/${formatBytes(total)})`;
185
+ }
98
186
  });
99
- uploadSpinner.succeed(`Uploaded to R2 (${uploadInfo.key})`);
187
+ uploadSpinner?.succeed(`Uploaded to R2 (${uploadInfo.key})`);
100
188
  // Step 4: Mark workspace as uploaded
101
- const syncSpinner = ora("Finalizing deployment...").start();
189
+ const syncSpinner = options.json || options.quiet ? null : ora("Finalizing deployment...").start();
102
190
  const result = await api.markWorkspaceUploaded(projectConfig.projectId);
103
- syncSpinner.succeed("Deployment complete");
191
+ syncSpinner?.succeed("Deployment complete");
104
192
  // Clean up temp file
105
193
  if (archivePath && existsSync(archivePath)) {
106
194
  unlinkSync(archivePath);
107
195
  }
108
- console.log(chalk.bold.green("\nDeployment successful!"));
109
- console.log(chalk.dim(`\nProject ID: ${result.projectId}`));
110
- console.log(chalk.dim(`Workspace: ${uploadInfo.key}`));
111
- // Get HMAC key for example curl command
196
+ // Step 6: Sync cron jobs (always sync to clear old ones if removed)
197
+ const cronsToSync = projectConfig.crons || [];
198
+ const cronSpinner = options.json || options.quiet
199
+ ? null
200
+ : ora(cronsToSync.length > 0
201
+ ? `Syncing ${cronsToSync.length} cron job(s)...`
202
+ : "Syncing cron jobs...").start();
112
203
  try {
113
- const hmacInfo = await api.getHmacKey(projectConfig.projectId);
114
- printExampleCurlCommand(result.projectId, hmacInfo.hmacKey, projectConfig.projectName);
204
+ const cronResult = await api.syncCrons(projectConfig.projectId, cronsToSync);
205
+ if (cronsToSync.length > 0 || cronResult.deleted > 0) {
206
+ cronSpinner?.succeed(cronsToSync.length > 0
207
+ ? `Synced ${cronResult.created} cron job(s)` +
208
+ (cronResult.deleted > 0 ? ` (${cronResult.deleted} removed)` : "")
209
+ : `Cleared ${cronResult.deleted} cron job(s)`);
210
+ }
211
+ else {
212
+ cronSpinner?.succeed("No cron jobs to sync");
213
+ }
214
+ }
215
+ catch (cronError) {
216
+ cronSpinner?.fail(`Failed to sync cron jobs: ${cronError.message}`);
217
+ // Don't exit - deployment was still successful
115
218
  }
116
- catch {
117
- // Silently skip if we can't get HMAC key
219
+ // Output result
220
+ if (options.json || options.quiet) {
221
+ output({
222
+ status: "deployed",
223
+ job_id: result.projectId,
224
+ start_commit: startCommit,
225
+ folder: fullPath,
226
+ project_name: projectConfig.name,
227
+ workspace_key: uploadInfo.key,
228
+ }, outputOpts);
229
+ }
230
+ else {
231
+ console.log(chalk.bold.green("\nDeployment successful!"));
232
+ console.log(chalk.dim(`\nProject ID: ${result.projectId}`));
233
+ console.log(chalk.dim(`Workspace: ${uploadInfo.key}`));
234
+ console.log(chalk.dim(`Start commit: ${startCommit.slice(0, 7)}`));
235
+ if (cronsToSync.length > 0) {
236
+ console.log(chalk.dim(`Cron jobs: ${cronsToSync.length}`));
237
+ }
238
+ // Get HMAC key for example curl command
239
+ try {
240
+ const hmacInfo = await api.getHmacKey(projectConfig.projectId);
241
+ printExampleCurlCommand(result.projectId, hmacInfo.hmacKey, projectConfig.name);
242
+ }
243
+ catch {
244
+ // Silently skip if we can't get HMAC key
245
+ }
118
246
  }
119
247
  }
120
248
  catch (error) {
121
- // Clean up temp file on error
249
+ // Clean up temp files on error
122
250
  if (archivePath && existsSync(archivePath)) {
123
251
  try {
124
252
  unlinkSync(archivePath);
@@ -127,8 +255,24 @@ export async function deployCommand(options) {
127
255
  // Ignore cleanup errors
128
256
  }
129
257
  }
130
- console.log(chalk.red(`\nError: ${error.message}`));
131
- process.exit(1);
258
+ if (chuckyStartPath && existsSync(chuckyStartPath)) {
259
+ try {
260
+ unlinkSync(chuckyStartPath);
261
+ }
262
+ catch {
263
+ // Ignore cleanup errors
264
+ }
265
+ }
266
+ if (options.json || options.quiet) {
267
+ exitWithError(ExitCode.NETWORK_ERROR, {
268
+ error: "deploy_failed",
269
+ message: error.message,
270
+ }, outputOpts);
271
+ }
272
+ else {
273
+ console.log(chalk.red(`\nError: ${error.message}`));
274
+ process.exit(1);
275
+ }
132
276
  }
133
277
  }
134
278
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface DiffOptions {
2
+ json?: boolean;
3
+ stat?: boolean;
4
+ }
5
+ export declare function diffCommand(id: string, options: DiffOptions): Promise<void>;
6
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,WAAW,CAC/B,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAgHf"}