ralphctl 0.1.1 → 0.1.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.
@@ -2,11 +2,11 @@
2
2
  import {
3
3
  addSingleTicketInteractive,
4
4
  ticketAddCommand
5
- } from "./chunk-IDLFGCG7.mjs";
5
+ } from "./chunk-MNMQC36F.mjs";
6
6
  import "./chunk-7TG3EAQ2.mjs";
7
- import "./chunk-35KGXPBU.mjs";
8
- import "./chunk-VCZGS3UD.mjs";
9
- import "./chunk-4C24UQ3X.mjs";
7
+ import "./chunk-WGHJI3OI.mjs";
8
+ import "./chunk-EKMZZRWI.mjs";
9
+ import "./chunk-6PYTKGB5.mjs";
10
10
  import "./chunk-QBXHAXHI.mjs";
11
11
  export {
12
12
  addSingleTicketInteractive,
@@ -2,11 +2,11 @@
2
2
  import {
3
3
  addCheckScriptToRepository,
4
4
  projectAddCommand
5
- } from "./chunk-MTBWEN43.mjs";
5
+ } from "./chunk-MRKOFVTM.mjs";
6
6
  import "./chunk-NTWO2LXB.mjs";
7
7
  import "./chunk-7TG3EAQ2.mjs";
8
- import "./chunk-35KGXPBU.mjs";
9
- import "./chunk-4C24UQ3X.mjs";
8
+ import "./chunk-WGHJI3OI.mjs";
9
+ import "./chunk-6PYTKGB5.mjs";
10
10
  import "./chunk-QBXHAXHI.mjs";
11
11
  export {
12
12
  addCheckScriptToRepository,
@@ -67,9 +67,14 @@ function assertSafeCwd(path) {
67
67
  throw new Error(`Unsafe path for cwd: must be absolute, got: ${path}`);
68
68
  }
69
69
  }
70
+ function expandTilde(path) {
71
+ if (path === "~") return homedir();
72
+ if (path.startsWith("~/")) return homedir() + path.slice(1);
73
+ return path;
74
+ }
70
75
  async function validateProjectPath(path) {
71
76
  try {
72
- const resolved = resolve(path);
77
+ const resolved = resolve(expandTilde(path));
73
78
  const lstats = await lstat(resolved);
74
79
  if (lstats.isSymbolicLink()) {
75
80
  const realPath = await realpath(resolved);
@@ -285,6 +290,7 @@ export {
285
290
  getIdeateDir,
286
291
  getSchemaPath,
287
292
  assertSafeCwd,
293
+ expandTilde,
288
294
  validateProjectPath,
289
295
  ValidationError,
290
296
  FileNotFoundError,
@@ -20,7 +20,7 @@ import {
20
20
  readValidatedJson,
21
21
  removeDir,
22
22
  writeValidatedJson
23
- } from "./chunk-4C24UQ3X.mjs";
23
+ } from "./chunk-6PYTKGB5.mjs";
24
24
  import {
25
25
  log
26
26
  } from "./chunk-QBXHAXHI.mjs";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  createSprint,
4
4
  setCurrentSprint
5
- } from "./chunk-VCZGS3UD.mjs";
5
+ } from "./chunk-EKMZZRWI.mjs";
6
6
  import {
7
7
  emoji,
8
8
  field,
@@ -12,7 +12,7 @@ import {
12
12
  getPendingRequirements,
13
13
  groupTicketsByProject,
14
14
  listTickets
15
- } from "./chunk-IDLFGCG7.mjs";
15
+ } from "./chunk-MNMQC36F.mjs";
16
16
  import {
17
17
  EXIT_ALL_BLOCKED,
18
18
  EXIT_ERROR,
@@ -25,7 +25,7 @@ import {
25
25
  ProjectNotFoundError,
26
26
  getProject,
27
27
  listProjects
28
- } from "./chunk-35KGXPBU.mjs";
28
+ } from "./chunk-WGHJI3OI.mjs";
29
29
  import {
30
30
  SprintNotFoundError,
31
31
  SprintStatusError,
@@ -43,7 +43,7 @@ import {
43
43
  setAiProvider,
44
44
  summarizeProgressForContext,
45
45
  withFileLock
46
- } from "./chunk-VCZGS3UD.mjs";
46
+ } from "./chunk-EKMZZRWI.mjs";
47
47
  import {
48
48
  ImportTasksSchema,
49
49
  RefinedRequirementsSchema,
@@ -59,7 +59,7 @@ import {
59
59
  getTasksFilePath,
60
60
  readValidatedJson,
61
61
  writeValidatedJson
62
- } from "./chunk-4C24UQ3X.mjs";
62
+ } from "./chunk-6PYTKGB5.mjs";
63
63
  import {
64
64
  colors,
65
65
  createSpinner,
@@ -1331,7 +1331,7 @@ async function selectProject(message = "Select project:") {
1331
1331
  default: true
1332
1332
  });
1333
1333
  if (create) {
1334
- const { projectAddCommand } = await import("./add-RRRB63YS.mjs");
1334
+ const { projectAddCommand } = await import("./add-MRGCS3US.mjs");
1335
1335
  await projectAddCommand({ interactive: true });
1336
1336
  const updated = await listProjects();
1337
1337
  if (updated.length === 0) return null;
@@ -1404,7 +1404,7 @@ async function selectSprint(message = "Select sprint:", filter) {
1404
1404
  default: true
1405
1405
  });
1406
1406
  if (create) {
1407
- const { sprintCreateCommand } = await import("./create-POR4WRTU.mjs");
1407
+ const { sprintCreateCommand } = await import("./create-MG7E7PLQ.mjs");
1408
1408
  await sprintCreateCommand({ interactive: true });
1409
1409
  const updated = await listSprints();
1410
1410
  const refiltered = filter ? updated.filter((s) => filter.includes(s.status)) : updated;
@@ -1439,7 +1439,7 @@ async function selectTicket(message = "Select ticket:", filter) {
1439
1439
  default: true
1440
1440
  });
1441
1441
  if (create) {
1442
- const { ticketAddCommand } = await import("./add-T2SU4O3H.mjs");
1442
+ const { ticketAddCommand } = await import("./add-HGJCLWED.mjs");
1443
1443
  await ticketAddCommand({ interactive: true });
1444
1444
  const updated = await listTickets();
1445
1445
  const refiltered = filter ? updated.filter(filter) : updated;
@@ -8,7 +8,7 @@ import {
8
8
  getProject,
9
9
  listProjects,
10
10
  projectExists
11
- } from "./chunk-35KGXPBU.mjs";
11
+ } from "./chunk-WGHJI3OI.mjs";
12
12
  import {
13
13
  SprintStatusError,
14
14
  assertSprintStatus,
@@ -16,13 +16,13 @@ import {
16
16
  getEditor,
17
17
  resolveSprintId,
18
18
  setEditor
19
- } from "./chunk-VCZGS3UD.mjs";
19
+ } from "./chunk-EKMZZRWI.mjs";
20
20
  import {
21
21
  SprintSchema,
22
22
  getSprintFilePath,
23
23
  readValidatedJson,
24
24
  writeValidatedJson
25
- } from "./chunk-4C24UQ3X.mjs";
25
+ } from "./chunk-6PYTKGB5.mjs";
26
26
  import {
27
27
  createSpinner,
28
28
  emoji,
@@ -9,10 +9,11 @@ import {
9
9
  import {
10
10
  ProjectExistsError,
11
11
  createProject
12
- } from "./chunk-35KGXPBU.mjs";
12
+ } from "./chunk-WGHJI3OI.mjs";
13
13
  import {
14
+ expandTilde,
14
15
  validateProjectPath
15
- } from "./chunk-4C24UQ3X.mjs";
16
+ } from "./chunk-6PYTKGB5.mjs";
16
17
  import {
17
18
  createSpinner,
18
19
  emoji,
@@ -337,7 +338,7 @@ async function projectAddCommand(options = {}) {
337
338
  if (options.paths) {
338
339
  const spinner = options.paths.length > 1 ? createSpinner("Validating repository paths...").start() : null;
339
340
  for (const path of options.paths) {
340
- const resolved = resolve2(path.trim());
341
+ const resolved = resolve2(expandTilde(path.trim()));
341
342
  const validation = await validateProjectPath(resolved);
342
343
  if (validation !== true) {
343
344
  errors.push(`--path ${path}: ${validation}`);
@@ -356,7 +357,7 @@ async function projectAddCommand(options = {}) {
356
357
  name = trimmedName;
357
358
  displayName = trimmedDisplayName;
358
359
  repositories = options.paths.map((p) => {
359
- const resolved = resolve2(p.trim());
360
+ const resolved = resolve2(expandTilde(p.trim()));
360
361
  const repo = { name: basename(resolved), path: resolved };
361
362
  if (options.checkScript) repo.checkScript = options.checkScript;
362
363
  return repo;
@@ -384,7 +385,7 @@ async function projectAddCommand(options = {}) {
384
385
  repositories = [];
385
386
  if (options.paths) {
386
387
  for (const p of options.paths) {
387
- const resolved = resolve2(p.trim());
388
+ const resolved = resolve2(expandTilde(p.trim()));
388
389
  const validation = await validateProjectPath(resolved);
389
390
  if (validation === true) {
390
391
  repositories.push({ name: basename(resolved), path: resolved });
@@ -421,7 +422,7 @@ async function projectAddCommand(options = {}) {
421
422
  });
422
423
  firstPath = firstPath.trim();
423
424
  }
424
- const resolved = resolve2(firstPath);
425
+ const resolved = resolve2(expandTilde(firstPath));
425
426
  const validation = await validateProjectPath(resolved);
426
427
  if (validation !== true) {
427
428
  showError(`Invalid path: ${validation}`);
@@ -456,7 +457,7 @@ Configuring: ${firstRepo.name}`);
456
457
  } else if (addAction === "browse") {
457
458
  const browsed = await browseDirectory("Select repository directory:");
458
459
  if (browsed) {
459
- const resolved = resolve2(browsed);
460
+ const resolved = resolve2(expandTilde(browsed));
460
461
  const validation = await validateProjectPath(resolved);
461
462
  if (validation === true) {
462
463
  const newRepo = { name: basename(resolved), path: resolved };
@@ -474,7 +475,7 @@ Configuring: ${firstRepo.name}`);
474
475
  if (additionalPath.trim() === "") {
475
476
  addMore = false;
476
477
  } else {
477
- const resolved = resolve2(additionalPath.trim());
478
+ const resolved = resolve2(expandTilde(additionalPath.trim()));
478
479
  const validation = await validateProjectPath(resolved);
479
480
  if (validation === true) {
480
481
  const newRepo = { name: basename(resolved), path: resolved };
@@ -1,12 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ProjectsSchema,
4
+ expandTilde,
4
5
  fileExists,
5
6
  getProjectsFilePath,
6
7
  readValidatedJson,
7
8
  validateProjectPath,
8
9
  writeValidatedJson
9
- } from "./chunk-4C24UQ3X.mjs";
10
+ } from "./chunk-6PYTKGB5.mjs";
10
11
 
11
12
  // src/store/project.ts
12
13
  import { basename, resolve } from "path";
@@ -36,7 +37,7 @@ function migrateProjectIfNeeded(project) {
36
37
  displayName: project.displayName,
37
38
  repositories: project.paths.map((p) => ({
38
39
  name: basename(p),
39
- path: p
40
+ path: resolve(expandTilde(p))
40
41
  })),
41
42
  description: project.description
42
43
  };
@@ -58,7 +59,20 @@ async function listProjects() {
58
59
  await writeValidatedJson(filePath, validated, ProjectsSchema);
59
60
  return validated;
60
61
  }
61
- return readValidatedJson(filePath, ProjectsSchema);
62
+ const projects = await readValidatedJson(filePath, ProjectsSchema);
63
+ const hasTildePaths = projects.some((p) => p.repositories.some((r) => r.path.startsWith("~")));
64
+ if (hasTildePaths) {
65
+ const corrected = projects.map((project) => ({
66
+ ...project,
67
+ repositories: project.repositories.map(
68
+ (repo) => repo.path.startsWith("~") ? { ...repo, path: resolve(expandTilde(repo.path)) } : repo
69
+ )
70
+ }));
71
+ const validated = ProjectsSchema.parse(corrected);
72
+ await writeValidatedJson(filePath, validated, ProjectsSchema);
73
+ return validated;
74
+ }
75
+ return projects;
62
76
  }
63
77
  async function getProject(name) {
64
78
  const projects = await listProjects();
@@ -79,7 +93,7 @@ async function createProject(project) {
79
93
  }
80
94
  const pathErrors = [];
81
95
  for (const repo of project.repositories) {
82
- const resolved = resolve(repo.path);
96
+ const resolved = resolve(expandTilde(repo.path));
83
97
  const validation = await validateProjectPath(resolved);
84
98
  if (validation !== true) {
85
99
  pathErrors.push(` ${repo.path}: ${validation}`);
@@ -94,7 +108,7 @@ ${pathErrors.join("\n")}`);
94
108
  repositories: project.repositories.map((repo) => ({
95
109
  ...repo,
96
110
  name: repo.name || basename(repo.path),
97
- path: resolve(repo.path)
111
+ path: resolve(expandTilde(repo.path))
98
112
  }))
99
113
  };
100
114
  projects.push(normalizedProject);
@@ -110,7 +124,7 @@ async function updateProject(name, updates) {
110
124
  if (updates.repositories) {
111
125
  const pathErrors = [];
112
126
  for (const repo of updates.repositories) {
113
- const resolved = resolve(repo.path);
127
+ const resolved = resolve(expandTilde(repo.path));
114
128
  const validation = await validateProjectPath(resolved);
115
129
  if (validation !== true) {
116
130
  pathErrors.push(` ${repo.path}: ${validation}`);
@@ -123,7 +137,7 @@ ${pathErrors.join("\n")}`);
123
137
  updates.repositories = updates.repositories.map((repo) => ({
124
138
  ...repo,
125
139
  name: repo.name || basename(repo.path),
126
- path: resolve(repo.path)
140
+ path: resolve(expandTilde(repo.path))
127
141
  }));
128
142
  }
129
143
  const existingProject = projects[index];
@@ -155,7 +169,7 @@ async function getProjectRepos(name) {
155
169
  }
156
170
  async function addProjectRepo(name, repo) {
157
171
  const project = await getProject(name);
158
- const resolvedPath = resolve(repo.path);
172
+ const resolvedPath = resolve(expandTilde(repo.path));
159
173
  const validation = await validateProjectPath(resolvedPath);
160
174
  if (validation !== true) {
161
175
  throw new Error(`Invalid path ${repo.path}: ${validation}`);
@@ -174,7 +188,7 @@ async function addProjectRepo(name, repo) {
174
188
  }
175
189
  async function removeProjectRepo(name, path) {
176
190
  const project = await getProject(name);
177
- const resolvedPath = resolve(path);
191
+ const resolvedPath = resolve(expandTilde(path));
178
192
  const newRepos = project.repositories.filter((r) => r.path !== resolvedPath);
179
193
  if (newRepos.length === 0) {
180
194
  throw new Error("Cannot remove the last repository from a project");
package/dist/cli.mjs CHANGED
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  addCheckScriptToRepository,
4
4
  projectAddCommand
5
- } from "./chunk-MTBWEN43.mjs";
5
+ } from "./chunk-MRKOFVTM.mjs";
6
6
  import {
7
7
  TaskNotFoundError,
8
8
  addTask,
@@ -50,13 +50,13 @@ import {
50
50
  sprintStartCommand,
51
51
  updateTaskStatus,
52
52
  validateImportTasks
53
- } from "./chunk-OFKKZ6SW.mjs";
53
+ } from "./chunk-LOR7QBXX.mjs";
54
54
  import {
55
55
  escapableSelect
56
56
  } from "./chunk-NTWO2LXB.mjs";
57
57
  import {
58
58
  sprintCreateCommand
59
- } from "./chunk-NC3A3T2Z.mjs";
59
+ } from "./chunk-JON4GCLR.mjs";
60
60
  import {
61
61
  IssueFetchError,
62
62
  TicketNotFoundError,
@@ -73,7 +73,7 @@ import {
73
73
  removeTicket,
74
74
  ticketAddCommand,
75
75
  updateTicket
76
- } from "./chunk-IDLFGCG7.mjs";
76
+ } from "./chunk-MNMQC36F.mjs";
77
77
  import {
78
78
  EXIT_ERROR,
79
79
  exitWithCode
@@ -85,7 +85,7 @@ import {
85
85
  listProjects,
86
86
  removeProject,
87
87
  removeProjectRepo
88
- } from "./chunk-35KGXPBU.mjs";
88
+ } from "./chunk-WGHJI3OI.mjs";
89
89
  import {
90
90
  NoCurrentSprintError,
91
91
  SprintNotFoundError,
@@ -108,7 +108,7 @@ import {
108
108
  setCurrentSprint,
109
109
  setEditor,
110
110
  withFileLock
111
- } from "./chunk-VCZGS3UD.mjs";
111
+ } from "./chunk-EKMZZRWI.mjs";
112
112
  import {
113
113
  AiProviderSchema,
114
114
  IdeateOutputSchema,
@@ -119,6 +119,7 @@ import {
119
119
  TaskStatusSchema,
120
120
  TasksSchema,
121
121
  assertSafeCwd,
122
+ expandTilde,
122
123
  fileExists,
123
124
  getDataDir,
124
125
  getIdeateDir,
@@ -129,7 +130,7 @@ import {
129
130
  getTasksFilePath,
130
131
  readValidatedJson,
131
132
  validateProjectPath
132
- } from "./chunk-4C24UQ3X.mjs";
133
+ } from "./chunk-6PYTKGB5.mjs";
133
134
  import {
134
135
  DETAIL_LABEL_WIDTH,
135
136
  badge,
@@ -720,7 +721,7 @@ async function projectRepoAddCommand(args) {
720
721
  validate: (v) => v.trim().length > 0 ? true : "Path is required"
721
722
  });
722
723
  try {
723
- const resolvedPath = resolve(path);
724
+ const resolvedPath = resolve(expandTilde(path));
724
725
  const bareRepo = { name: basename(resolvedPath), path: resolvedPath };
725
726
  log.info(`
726
727
  Configuring: ${bareRepo.name}`);
@@ -2565,7 +2566,7 @@ async function taskAddCommand(options = {}) {
2565
2566
  return result;
2566
2567
  }
2567
2568
  });
2568
- projectPath = resolve2(projectPath.trim());
2569
+ projectPath = resolve2(expandTilde(projectPath.trim()));
2569
2570
  } else {
2570
2571
  const selectedPath = await selectProjectRepository("Select repository:");
2571
2572
  if (!selectedPath) {
@@ -2583,7 +2584,7 @@ async function taskAddCommand(options = {}) {
2583
2584
  return result;
2584
2585
  }
2585
2586
  });
2586
- projectPath = resolve2(projectPath.trim());
2587
+ projectPath = resolve2(expandTilde(projectPath.trim()));
2587
2588
  }
2588
2589
  }
2589
2590
  name = name.trim();
@@ -3634,7 +3635,7 @@ async function interactiveMode() {
3634
3635
  continue;
3635
3636
  }
3636
3637
  if (command === "wizard") {
3637
- const { runWizard } = await import("./wizard-EK22QYUY.mjs");
3638
+ const { runWizard } = await import("./wizard-LRELAN2J.mjs");
3638
3639
  await runWizard();
3639
3640
  continue;
3640
3641
  }
@@ -4110,7 +4111,7 @@ Checks performed:
4110
4111
  // package.json
4111
4112
  var package_default = {
4112
4113
  name: "ralphctl",
4113
- version: "0.1.1",
4114
+ version: "0.1.2",
4114
4115
  description: "Sprint and task management CLI for AI-assisted coding",
4115
4116
  homepage: "https://github.com/lukas-grigis/ralphctl",
4116
4117
  type: "module",
@@ -4228,7 +4229,7 @@ registerCompletionCommands(program);
4228
4229
  registerDoctorCommands(program);
4229
4230
  async function main() {
4230
4231
  if (process.env["COMP_CWORD"] && process.env["COMP_POINT"] && process.env["COMP_LINE"]) {
4231
- const { handleCompletionRequest } = await import("./handle-XDMH5DE4.mjs");
4232
+ const { handleCompletionRequest } = await import("./handle-UG5M2OON.mjs");
4232
4233
  if (await handleCompletionRequest(program)) return;
4233
4234
  }
4234
4235
  if (process.argv.length <= 2 || process.argv[2] === "interactive") {
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  sprintCreateCommand
4
- } from "./chunk-NC3A3T2Z.mjs";
5
- import "./chunk-VCZGS3UD.mjs";
6
- import "./chunk-4C24UQ3X.mjs";
4
+ } from "./chunk-JON4GCLR.mjs";
5
+ import "./chunk-EKMZZRWI.mjs";
6
+ import "./chunk-6PYTKGB5.mjs";
7
7
  import "./chunk-QBXHAXHI.mjs";
8
8
  export {
9
9
  sprintCreateCommand
@@ -7,7 +7,7 @@ async function handleCompletionRequest(program) {
7
7
  return false;
8
8
  }
9
9
  const tabtab = (await import("tabtab")).default;
10
- const { resolveCompletions } = await import("./resolver-HHMON7RK.mjs");
10
+ const { resolveCompletions } = await import("./resolver-WSFWKACM.mjs");
11
11
  const tabEnv = tabtab.parseEnv(env);
12
12
  const completions = await resolveCompletions(program, {
13
13
  line: tabEnv.line,
@@ -11,8 +11,8 @@ import {
11
11
  removeProject,
12
12
  removeProjectRepo,
13
13
  updateProject
14
- } from "./chunk-35KGXPBU.mjs";
15
- import "./chunk-4C24UQ3X.mjs";
14
+ } from "./chunk-WGHJI3OI.mjs";
15
+ import "./chunk-6PYTKGB5.mjs";
16
16
  export {
17
17
  ProjectExistsError,
18
18
  ProjectNotFoundError,
@@ -4,7 +4,7 @@
4
4
  var dynamicResolvers = {
5
5
  "--project": async () => {
6
6
  try {
7
- const { listProjects } = await import("./project-BG7VHACC.mjs");
7
+ const { listProjects } = await import("./project-NT3L4FTB.mjs");
8
8
  const projects = await listProjects();
9
9
  return projects.map((p) => ({ name: p.name, description: p.displayName }));
10
10
  } catch {
@@ -36,7 +36,7 @@ var configValueCompletions = {
36
36
  };
37
37
  async function getSprintCompletions() {
38
38
  try {
39
- const { listSprints } = await import("./sprint-FJVU7HRC.mjs");
39
+ const { listSprints } = await import("./sprint-4VHDLGFN.mjs");
40
40
  const sprints = await listSprints();
41
41
  return sprints.map((s) => ({
42
42
  name: s.id,
@@ -15,8 +15,8 @@ import {
15
15
  listSprints,
16
16
  resolveSprintId,
17
17
  saveSprint
18
- } from "./chunk-VCZGS3UD.mjs";
19
- import "./chunk-4C24UQ3X.mjs";
18
+ } from "./chunk-EKMZZRWI.mjs";
19
+ import "./chunk-6PYTKGB5.mjs";
20
20
  import "./chunk-QBXHAXHI.mjs";
21
21
  export {
22
22
  NoCurrentSprintError,
@@ -3,21 +3,21 @@ import {
3
3
  sprintPlanCommand,
4
4
  sprintRefineCommand,
5
5
  sprintStartCommand
6
- } from "./chunk-OFKKZ6SW.mjs";
6
+ } from "./chunk-LOR7QBXX.mjs";
7
7
  import "./chunk-NTWO2LXB.mjs";
8
8
  import {
9
9
  sprintCreateCommand
10
- } from "./chunk-NC3A3T2Z.mjs";
10
+ } from "./chunk-JON4GCLR.mjs";
11
11
  import {
12
12
  addSingleTicketInteractive
13
- } from "./chunk-IDLFGCG7.mjs";
13
+ } from "./chunk-MNMQC36F.mjs";
14
14
  import "./chunk-7TG3EAQ2.mjs";
15
- import "./chunk-35KGXPBU.mjs";
15
+ import "./chunk-WGHJI3OI.mjs";
16
16
  import {
17
17
  getCurrentSprint,
18
18
  getSprint
19
- } from "./chunk-VCZGS3UD.mjs";
20
- import "./chunk-4C24UQ3X.mjs";
19
+ } from "./chunk-EKMZZRWI.mjs";
20
+ import "./chunk-6PYTKGB5.mjs";
21
21
  import {
22
22
  colors,
23
23
  emoji,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ralphctl",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Sprint and task management CLI for AI-assisted coding",
5
5
  "homepage": "https://github.com/lukas-grigis/ralphctl",
6
6
  "type": "module",