@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.
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 +417 -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 +2 -0
  41. package/dist/commands/prompt.d.ts.map +1 -1
  42. package/dist/commands/prompt.js +174 -2
  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 +80 -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 +2 -2
@@ -3,7 +3,8 @@ import { homedir } from "node:os";
3
3
  import { join } from "node:path";
4
4
  const CONFIG_DIR = join(homedir(), ".chucky");
5
5
  const GLOBAL_CONFIG_PATH = join(CONFIG_DIR, "config.json");
6
- const PROJECT_CONFIG_FILE = ".chucky.json";
6
+ const CHUCKY_CONFIG_FILE = "chucky.json"; // Committed
7
+ const PROJECT_BINDING_FILE = ".chucky"; // Gitignored
7
8
  // Default portal URL (production)
8
9
  const DEFAULT_PORTAL_URL = "https://doting-hornet-490.convex.site";
9
10
  /**
@@ -37,11 +38,11 @@ export function saveGlobalConfig(config) {
37
38
  writeFileSync(GLOBAL_CONFIG_PATH, JSON.stringify(config, null, 2));
38
39
  }
39
40
  /**
40
- * Load project config from current directory
41
+ * Load chucky.json config (committed file)
41
42
  */
42
- export function loadProjectConfig(cwd = process.cwd()) {
43
+ export function loadChuckyConfig(cwd = process.cwd()) {
43
44
  try {
44
- const configPath = join(cwd, PROJECT_CONFIG_FILE);
45
+ const configPath = join(cwd, CHUCKY_CONFIG_FILE);
45
46
  if (!existsSync(configPath)) {
46
47
  return null;
47
48
  }
@@ -53,12 +54,69 @@ export function loadProjectConfig(cwd = process.cwd()) {
53
54
  }
54
55
  }
55
56
  /**
56
- * Save project config to current directory
57
+ * Save chucky.json config (committed file)
57
58
  */
58
- export function saveProjectConfig(config, cwd = process.cwd()) {
59
- const configPath = join(cwd, PROJECT_CONFIG_FILE);
59
+ export function saveChuckyConfig(config, cwd = process.cwd()) {
60
+ const configPath = join(cwd, CHUCKY_CONFIG_FILE);
60
61
  writeFileSync(configPath, JSON.stringify(config, null, 2));
61
62
  }
63
+ /**
64
+ * Load .chucky project binding (gitignored file)
65
+ */
66
+ export function loadProjectBinding(cwd = process.cwd()) {
67
+ try {
68
+ const bindingPath = join(cwd, PROJECT_BINDING_FILE);
69
+ if (!existsSync(bindingPath)) {
70
+ return null;
71
+ }
72
+ const content = readFileSync(bindingPath, "utf-8");
73
+ return JSON.parse(content);
74
+ }
75
+ catch {
76
+ return null;
77
+ }
78
+ }
79
+ /**
80
+ * Save .chucky project binding (gitignored file)
81
+ */
82
+ export function saveProjectBinding(binding, cwd = process.cwd()) {
83
+ const bindingPath = join(cwd, PROJECT_BINDING_FILE);
84
+ writeFileSync(bindingPath, JSON.stringify(binding, null, 2));
85
+ }
86
+ /**
87
+ * Load combined project config (chucky.json + .chucky)
88
+ */
89
+ export function loadProjectConfig(cwd = process.cwd()) {
90
+ const chuckyConfig = loadChuckyConfig(cwd);
91
+ if (!chuckyConfig) {
92
+ return null;
93
+ }
94
+ const binding = loadProjectBinding(cwd);
95
+ return {
96
+ name: chuckyConfig.name,
97
+ description: chuckyConfig.description,
98
+ folder: chuckyConfig.folder || ".",
99
+ crons: chuckyConfig.crons,
100
+ projectId: binding?.projectId,
101
+ };
102
+ }
103
+ /**
104
+ * Legacy: Save project config (for backwards compatibility during migration)
105
+ * @deprecated Use saveChuckyConfig and saveProjectBinding separately
106
+ */
107
+ export function saveProjectConfig(config, cwd = process.cwd()) {
108
+ // Save chucky.json (committed)
109
+ saveChuckyConfig({
110
+ name: config.name,
111
+ description: config.description,
112
+ folder: config.folder,
113
+ crons: config.crons,
114
+ }, cwd);
115
+ // Save .chucky (gitignored) if projectId exists
116
+ if (config.projectId) {
117
+ saveProjectBinding({ projectId: config.projectId }, cwd);
118
+ }
119
+ }
62
120
  /**
63
121
  * Check if user is logged in
64
122
  */
@@ -88,20 +146,39 @@ export function getPortalUrl() {
88
146
  const config = loadGlobalConfig();
89
147
  return config?.portalUrl || DEFAULT_PORTAL_URL;
90
148
  }
149
+ /**
150
+ * Get worker URL (ChuckyBox)
151
+ */
152
+ export function getWorkerUrl() {
153
+ return process.env.CHUCKY_WORKER_URL || "https://conjure.chucky.cloud";
154
+ }
91
155
  /**
92
156
  * Get project config or throw if not initialized
93
157
  */
94
158
  export function requireProjectConfig() {
95
159
  const config = loadProjectConfig();
96
160
  if (!config) {
97
- throw new Error("Project not initialized. Run 'chucky init' first.");
161
+ throw new Error("No chucky.json found. Run 'chucky init' first.");
98
162
  }
99
163
  return config;
100
164
  }
165
+ /**
166
+ * Check if chucky.json exists in current directory
167
+ */
168
+ export function hasChuckyConfig() {
169
+ return loadChuckyConfig() !== null;
170
+ }
171
+ /**
172
+ * Check if project is bound (has .chucky with projectId)
173
+ */
174
+ export function isProjectBound() {
175
+ return loadProjectBinding() !== null;
176
+ }
101
177
  /**
102
178
  * Check if project is initialized in current directory
179
+ * @deprecated Use hasChuckyConfig() and isProjectBound() separately
103
180
  */
104
181
  export function isProjectInitialized() {
105
- return loadProjectConfig() !== null;
182
+ return hasChuckyConfig();
106
183
  }
107
184
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ export interface GitInfo {
2
+ isRepo: boolean;
3
+ isRoot: boolean;
4
+ headCommit: string;
5
+ isDirty: boolean;
6
+ dirtyFiles: string[];
7
+ }
8
+ export interface BundleStats {
9
+ commits: number;
10
+ filesAdded: string[];
11
+ filesModified: string[];
12
+ filesDeleted: string[];
13
+ insertions: number;
14
+ deletions: number;
15
+ }
16
+ export interface CommitInfo {
17
+ hash: string;
18
+ message: string;
19
+ filesChanged: number;
20
+ }
21
+ /**
22
+ * Get git repository information for a folder
23
+ */
24
+ export declare function getGitInfo(folder: string): GitInfo;
25
+ /**
26
+ * Auto-commit all changes
27
+ */
28
+ export declare function autoCommit(folder: string, message: string): string;
29
+ /**
30
+ * Create a git bundle from a commit range
31
+ */
32
+ export declare function createBundle(folder: string, fromCommit: string, outputPath: string): boolean;
33
+ /**
34
+ * Verify a git bundle
35
+ */
36
+ export declare function verifyBundle(folder: string, bundlePath: string): boolean;
37
+ /**
38
+ * Fetch a bundle to a branch
39
+ */
40
+ export declare function fetchBundle(folder: string, bundlePath: string, branchName: string): void;
41
+ /**
42
+ * Get stats for changes between HEAD and a branch
43
+ */
44
+ export declare function getBundleStats(folder: string, branchName: string): BundleStats;
45
+ /**
46
+ * Get full diff between HEAD and a branch
47
+ */
48
+ export declare function getFullDiff(folder: string, branchName: string): string;
49
+ /**
50
+ * Get commit log between HEAD and a branch
51
+ */
52
+ export declare function getCommitLog(folder: string, branchName: string): CommitInfo[];
53
+ /**
54
+ * Apply a branch (fast-forward merge)
55
+ */
56
+ export declare function applyBranch(folder: string, branchName: string, options?: {
57
+ force?: boolean;
58
+ }): {
59
+ commits: number;
60
+ files: number;
61
+ };
62
+ /**
63
+ * Discard a branch (delete without merging)
64
+ */
65
+ export declare function discardBranch(folder: string, branchName: string): void;
66
+ /**
67
+ * Check if a branch exists
68
+ */
69
+ export declare function branchExists(folder: string, branchName: string): boolean;
70
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAkCD;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAqClD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAOlE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAWT;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CASxE;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,IAAI,CAKN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAqD9E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAGtE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU,EAAE,CAoC7E;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAmBpC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAKtE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAIxE"}
@@ -0,0 +1,232 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { existsSync } from "node:fs";
3
+ import { join, resolve } from "node:path";
4
+ /**
5
+ * Execute a git command and return stdout
6
+ */
7
+ function git(args, cwd) {
8
+ const result = spawnSync("git", args, {
9
+ cwd,
10
+ encoding: "utf-8",
11
+ maxBuffer: 10 * 1024 * 1024,
12
+ });
13
+ if (result.error) {
14
+ throw result.error;
15
+ }
16
+ if (result.status !== 0) {
17
+ throw new Error(result.stderr || `git ${args[0]} failed`);
18
+ }
19
+ return result.stdout.trim();
20
+ }
21
+ /**
22
+ * Execute a git command, returning null on failure instead of throwing
23
+ */
24
+ function gitSafe(args, cwd) {
25
+ try {
26
+ return git(args, cwd);
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ }
32
+ /**
33
+ * Get git repository information for a folder
34
+ */
35
+ export function getGitInfo(folder) {
36
+ const fullPath = resolve(folder);
37
+ // Check if .git exists in this folder (is root)
38
+ const isRoot = existsSync(join(fullPath, ".git"));
39
+ // Check if it's inside any git repo
40
+ const gitDir = gitSafe(["rev-parse", "--git-dir"], fullPath);
41
+ const isRepo = gitDir !== null;
42
+ if (!isRepo) {
43
+ return {
44
+ isRepo: false,
45
+ isRoot: false,
46
+ headCommit: "",
47
+ isDirty: false,
48
+ dirtyFiles: [],
49
+ };
50
+ }
51
+ // Get HEAD commit
52
+ const headCommit = gitSafe(["rev-parse", "HEAD"], fullPath) || "";
53
+ // Get dirty files
54
+ const status = gitSafe(["status", "--porcelain"], fullPath) || "";
55
+ const dirtyFiles = status
56
+ .split("\n")
57
+ .filter((line) => line.trim())
58
+ .map((line) => line.slice(3));
59
+ return {
60
+ isRepo,
61
+ isRoot,
62
+ headCommit,
63
+ isDirty: dirtyFiles.length > 0,
64
+ dirtyFiles,
65
+ };
66
+ }
67
+ /**
68
+ * Auto-commit all changes
69
+ */
70
+ export function autoCommit(folder, message) {
71
+ const fullPath = resolve(folder);
72
+ git(["add", "-A"], fullPath);
73
+ git(["commit", "-m", message], fullPath);
74
+ return git(["rev-parse", "HEAD"], fullPath);
75
+ }
76
+ /**
77
+ * Create a git bundle from a commit range
78
+ */
79
+ export function createBundle(folder, fromCommit, outputPath) {
80
+ const fullPath = resolve(folder);
81
+ // Check if there are any commits in the range
82
+ const revList = gitSafe(["rev-list", `${fromCommit}..HEAD`], fullPath);
83
+ if (!revList || revList.trim() === "") {
84
+ return false; // No changes
85
+ }
86
+ git(["bundle", "create", outputPath, `${fromCommit}..HEAD`], fullPath);
87
+ return true;
88
+ }
89
+ /**
90
+ * Verify a git bundle
91
+ */
92
+ export function verifyBundle(folder, bundlePath) {
93
+ const fullPath = resolve(folder);
94
+ try {
95
+ git(["bundle", "verify", bundlePath], fullPath);
96
+ return true;
97
+ }
98
+ catch {
99
+ return false;
100
+ }
101
+ }
102
+ /**
103
+ * Fetch a bundle to a branch
104
+ */
105
+ export function fetchBundle(folder, bundlePath, branchName) {
106
+ const fullPath = resolve(folder);
107
+ // Fetch from bundle to the specified branch
108
+ git(["fetch", bundlePath, `HEAD:${branchName}`], fullPath);
109
+ }
110
+ /**
111
+ * Get stats for changes between HEAD and a branch
112
+ */
113
+ export function getBundleStats(folder, branchName) {
114
+ const fullPath = resolve(folder);
115
+ // Get commit count
116
+ const revList = gitSafe(["rev-list", `HEAD..${branchName}`], fullPath) || "";
117
+ const commits = revList ? revList.split("\n").filter((l) => l.trim()).length : 0;
118
+ // Get file stats
119
+ const diffStat = gitSafe(["diff", "--numstat", `HEAD..${branchName}`], fullPath) || "";
120
+ let insertions = 0;
121
+ let deletions = 0;
122
+ for (const line of diffStat.split("\n").filter((l) => l.trim())) {
123
+ const [added, removed] = line.split("\t");
124
+ if (added !== "-")
125
+ insertions += parseInt(added, 10) || 0;
126
+ if (removed !== "-")
127
+ deletions += parseInt(removed, 10) || 0;
128
+ }
129
+ // Get file change types
130
+ const diffFiles = gitSafe(["diff", "--name-status", `HEAD..${branchName}`], fullPath) || "";
131
+ const filesAdded = [];
132
+ const filesModified = [];
133
+ const filesDeleted = [];
134
+ for (const line of diffFiles.split("\n").filter((l) => l.trim())) {
135
+ const [status, ...fileParts] = line.split("\t");
136
+ const file = fileParts.join("\t");
137
+ if (status.startsWith("A")) {
138
+ filesAdded.push(file);
139
+ }
140
+ else if (status.startsWith("M")) {
141
+ filesModified.push(file);
142
+ }
143
+ else if (status.startsWith("D")) {
144
+ filesDeleted.push(file);
145
+ }
146
+ }
147
+ return {
148
+ commits,
149
+ filesAdded,
150
+ filesModified,
151
+ filesDeleted,
152
+ insertions,
153
+ deletions,
154
+ };
155
+ }
156
+ /**
157
+ * Get full diff between HEAD and a branch
158
+ */
159
+ export function getFullDiff(folder, branchName) {
160
+ const fullPath = resolve(folder);
161
+ return git(["diff", `HEAD..${branchName}`], fullPath);
162
+ }
163
+ /**
164
+ * Get commit log between HEAD and a branch
165
+ */
166
+ export function getCommitLog(folder, branchName) {
167
+ const fullPath = resolve(folder);
168
+ const log = gitSafe(["log", "--oneline", "--numstat", `HEAD..${branchName}`], fullPath) || "";
169
+ const commits = [];
170
+ let currentCommit = null;
171
+ for (const line of log.split("\n")) {
172
+ if (!line.trim())
173
+ continue;
174
+ // Commit line: "abc1234 Commit message here"
175
+ const commitMatch = line.match(/^([a-f0-9]+)\s+(.+)$/);
176
+ if (commitMatch && !line.includes("\t")) {
177
+ if (currentCommit) {
178
+ commits.push(currentCommit);
179
+ }
180
+ currentCommit = {
181
+ hash: commitMatch[1],
182
+ message: commitMatch[2],
183
+ filesChanged: 0,
184
+ };
185
+ }
186
+ else if (currentCommit && line.includes("\t")) {
187
+ // File stat line
188
+ currentCommit.filesChanged++;
189
+ }
190
+ }
191
+ if (currentCommit) {
192
+ commits.push(currentCommit);
193
+ }
194
+ return commits;
195
+ }
196
+ /**
197
+ * Apply a branch (fast-forward merge)
198
+ */
199
+ export function applyBranch(folder, branchName, options) {
200
+ const fullPath = resolve(folder);
201
+ const stats = getBundleStats(fullPath, branchName);
202
+ if (options?.force) {
203
+ // Use --no-edit to avoid interactive editor, provide merge commit message
204
+ git(["merge", "--no-edit", "-m", `Merge ${branchName}`, branchName], fullPath);
205
+ }
206
+ else {
207
+ git(["merge", "--ff-only", branchName], fullPath);
208
+ }
209
+ // Clean up the branch
210
+ git(["branch", "-d", branchName], fullPath);
211
+ return {
212
+ commits: stats.commits,
213
+ files: stats.filesAdded.length + stats.filesModified.length + stats.filesDeleted.length,
214
+ };
215
+ }
216
+ /**
217
+ * Discard a branch (delete without merging)
218
+ */
219
+ export function discardBranch(folder, branchName) {
220
+ const fullPath = resolve(folder);
221
+ // Use -D to force delete even if not merged
222
+ gitSafe(["branch", "-D", branchName], fullPath);
223
+ }
224
+ /**
225
+ * Check if a branch exists
226
+ */
227
+ export function branchExists(folder, branchName) {
228
+ const fullPath = resolve(folder);
229
+ const result = gitSafe(["rev-parse", "--verify", branchName], fullPath);
230
+ return result !== null;
231
+ }
232
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Exit codes for CLI commands
3
+ */
4
+ export declare const ExitCode: {
5
+ readonly SUCCESS: 0;
6
+ readonly CONFLICT: 1;
7
+ readonly NOT_FOUND: 2;
8
+ readonly NOT_GIT_REPO: 3;
9
+ readonly NETWORK_ERROR: 4;
10
+ readonly DIRTY_WORKSPACE: 5;
11
+ readonly TIMEOUT: 6;
12
+ readonly NO_CHANGES: 7;
13
+ };
14
+ export type ExitCodeType = (typeof ExitCode)[keyof typeof ExitCode];
15
+ /**
16
+ * Output options for commands
17
+ */
18
+ export interface OutputOptions {
19
+ json?: boolean;
20
+ quiet?: boolean;
21
+ }
22
+ /**
23
+ * Error response structure
24
+ */
25
+ export interface ErrorResponse {
26
+ error: string;
27
+ message?: string;
28
+ [key: string]: unknown;
29
+ }
30
+ /**
31
+ * Output data to console based on options
32
+ */
33
+ export declare function output(data: unknown, options: OutputOptions): void;
34
+ /**
35
+ * Exit with an error code and message
36
+ */
37
+ export declare function exitWithError(code: ExitCodeType, error: ErrorResponse, options: OutputOptions): never;
38
+ /**
39
+ * Success exit
40
+ */
41
+ export declare function exitSuccess(data: unknown, options: OutputOptions): never;
42
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;CASX,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CASlE;AAsED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,aAAa,GACrB,KAAK,CAiBP;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,KAAK,CAGxE"}
@@ -0,0 +1,123 @@
1
+ import chalk from "chalk";
2
+ /**
3
+ * Exit codes for CLI commands
4
+ */
5
+ export const ExitCode = {
6
+ SUCCESS: 0,
7
+ CONFLICT: 1,
8
+ NOT_FOUND: 2,
9
+ NOT_GIT_REPO: 3,
10
+ NETWORK_ERROR: 4,
11
+ DIRTY_WORKSPACE: 5,
12
+ TIMEOUT: 6,
13
+ NO_CHANGES: 7,
14
+ };
15
+ /**
16
+ * Output data to console based on options
17
+ */
18
+ export function output(data, options) {
19
+ if (options.quiet)
20
+ return;
21
+ if (options.json) {
22
+ console.log(JSON.stringify(data, null, 2));
23
+ }
24
+ else {
25
+ // Pretty print for human consumption
26
+ prettyPrint(data);
27
+ }
28
+ }
29
+ /**
30
+ * Pretty print data for human consumption
31
+ */
32
+ function prettyPrint(data) {
33
+ if (typeof data === "string") {
34
+ console.log(data);
35
+ return;
36
+ }
37
+ if (typeof data !== "object" || data === null) {
38
+ console.log(data);
39
+ return;
40
+ }
41
+ const obj = data;
42
+ // Handle status messages
43
+ if ("status" in obj) {
44
+ const status = obj.status;
45
+ if (status === "deployed" || status === "applied" || status === "completed") {
46
+ console.log(chalk.green(`✓ ${status}`));
47
+ }
48
+ else if (status === "fetched") {
49
+ console.log(chalk.blue(`✓ ${status}`));
50
+ }
51
+ else if (status === "discarded") {
52
+ console.log(chalk.yellow(`✓ ${status}`));
53
+ }
54
+ else {
55
+ console.log(chalk.dim(`Status: ${status}`));
56
+ }
57
+ }
58
+ // Print other fields
59
+ for (const [key, value] of Object.entries(obj)) {
60
+ if (key === "status")
61
+ continue;
62
+ if (key === "error") {
63
+ console.log(chalk.red(`Error: ${value}`));
64
+ continue;
65
+ }
66
+ if (Array.isArray(value)) {
67
+ console.log(chalk.dim(`${formatKey(key)}: ${value.length} items`));
68
+ for (const item of value.slice(0, 10)) {
69
+ console.log(chalk.dim(` - ${typeof item === "object" ? JSON.stringify(item) : item}`));
70
+ }
71
+ if (value.length > 10) {
72
+ console.log(chalk.dim(` ... and ${value.length - 10} more`));
73
+ }
74
+ }
75
+ else if (typeof value === "object" && value !== null) {
76
+ console.log(chalk.dim(`${formatKey(key)}:`));
77
+ for (const [subKey, subValue] of Object.entries(value)) {
78
+ console.log(chalk.dim(` ${formatKey(subKey)}: ${subValue}`));
79
+ }
80
+ }
81
+ else {
82
+ console.log(chalk.dim(`${formatKey(key)}: ${value}`));
83
+ }
84
+ }
85
+ }
86
+ /**
87
+ * Format a camelCase or snake_case key for display
88
+ */
89
+ function formatKey(key) {
90
+ return key
91
+ .replace(/_/g, " ")
92
+ .replace(/([A-Z])/g, " $1")
93
+ .toLowerCase()
94
+ .replace(/^\w/, (c) => c.toUpperCase());
95
+ }
96
+ /**
97
+ * Exit with an error code and message
98
+ */
99
+ export function exitWithError(code, error, options) {
100
+ if (options.quiet) {
101
+ process.exit(code);
102
+ }
103
+ if (options.json) {
104
+ console.log(JSON.stringify(error, null, 2));
105
+ }
106
+ else {
107
+ console.log(chalk.red(`\nError: ${error.message || error.error}`));
108
+ if (error.files && Array.isArray(error.files)) {
109
+ for (const file of error.files) {
110
+ console.log(chalk.dim(` - ${file}`));
111
+ }
112
+ }
113
+ }
114
+ process.exit(code);
115
+ }
116
+ /**
117
+ * Success exit
118
+ */
119
+ export function exitSuccess(data, options) {
120
+ output(data, options);
121
+ process.exit(ExitCode.SUCCESS);
122
+ }
123
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chucky.cloud/cli",
3
- "version": "0.2.8",
3
+ "version": "0.3.0",
4
4
  "description": "CLI for deploying AI agent workspaces to Chucky cloud - build and ship Claude-powered assistants",
5
5
  "type": "module",
6
6
  "bin": {
@@ -39,7 +39,7 @@
39
39
  "url": "https://github.com/Chucky-Cloud/chucky-cli/issues"
40
40
  },
41
41
  "dependencies": {
42
- "@chucky.cloud/sdk": "^0.2.5",
42
+ "@chucky.cloud/sdk": "^0.3.4",
43
43
  "@inquirer/prompts": "^7.0.0",
44
44
  "archiver": "^7.0.1",
45
45
  "chalk": "^5.3.0",