codemini-cli 0.3.1 → 0.3.3

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.
@@ -9,7 +9,7 @@ export function describeCommandToolActivity(copy, parsed, { done = false, blocke
9
9
  const target = parsed.target || 'command';
10
10
  const intent = classifyRunIntent(parsed.target);
11
11
 
12
- if (parsed.base === 'run' || parsed.base === 'start_service') {
12
+ if (parsed.base === 'run') {
13
13
  if (intent.kind === 'install') return phaseText(copy, blocked, done, target, copy.toolActivity.doingInstall, copy.toolActivity.doneInstall);
14
14
  if (intent.kind === 'build') return phaseText(copy, blocked, done, target, copy.toolActivity.doingBuild, copy.toolActivity.doneBuild);
15
15
  if (intent.kind === 'test') return phaseText(copy, blocked, done, target, copy.toolActivity.doingTest, copy.toolActivity.doneTest);
@@ -18,24 +18,17 @@ export function describeCommandToolActivity(copy, parsed, { done = false, blocke
18
18
  if (intent.kind === 'database-service') return phaseText(copy, blocked, done, target, copy.toolActivity.doingDatabase, copy.toolActivity.doneDatabase);
19
19
  if (intent.kind === 'docker-service') return phaseText(copy, blocked, done, target, copy.toolActivity.doingDocker, copy.toolActivity.doneDocker);
20
20
  if (intent.kind === 'service') return phaseText(copy, blocked, done, target, copy.toolActivity.doingGeneric, copy.toolActivity.doneGeneric);
21
- if (parsed.base === 'run') return phaseText(copy, blocked, done, trimText(target, 72) || parsed.base, copy.toolActivity.doingCommand, copy.toolActivity.doneCommand);
21
+ return phaseText(copy, blocked, done, trimText(target, 72) || parsed.base, copy.toolActivity.doingCommand, copy.toolActivity.doneCommand);
22
22
  }
23
23
 
24
- if (parsed.base === 'list_services') {
25
- return phaseText(copy, blocked, done, trimText(parsed.target, 72) || parsed.base, copy.toolActivity.doingListServices, copy.toolActivity.doneListServices);
24
+ if (parsed.base === 'list_background_tasks') {
25
+ return phaseText(copy, blocked, done, trimText(parsed.target, 72) || parsed.base, copy.toolActivity.doingListBackgroundTasks, copy.toolActivity.doneListBackgroundTasks);
26
26
  }
27
- if (parsed.base === 'get_service_status') {
28
- return phaseText(copy, blocked, done, trimText(parsed.target, 72) || parsed.base, copy.toolActivity.doingServiceStatus, copy.toolActivity.doneServiceStatus);
27
+ if (parsed.base === 'get_background_task') {
28
+ return phaseText(copy, blocked, done, trimText(parsed.target, 72) || parsed.base, copy.toolActivity.doingBackgroundTaskStatus, copy.toolActivity.doneBackgroundTaskStatus);
29
29
  }
30
- if (parsed.base === 'get_service_logs') {
31
- return phaseText(copy, blocked, done, trimText(parsed.target, 72) || parsed.base, copy.toolActivity.doingServiceLogs, copy.toolActivity.doneServiceLogs);
32
- }
33
- if (parsed.base === 'stop_service') {
34
- return phaseText(copy, blocked, done, trimText(parsed.target, 72) || parsed.base, copy.toolActivity.doingStopService, copy.toolActivity.doneStopService);
35
- }
36
-
37
- if (parsed.base === 'start_service') {
38
- return phaseText(copy, blocked, done, trimText(parsed.target, 72) || parsed.base, copy.toolActivity.doingGeneric, copy.toolActivity.doneGeneric);
30
+ if (parsed.base === 'stop_background_task') {
31
+ return phaseText(copy, blocked, done, trimText(parsed.target, 72) || parsed.base, copy.toolActivity.doingStopBackgroundTask, copy.toolActivity.doneStopBackgroundTask);
39
32
  }
40
33
 
41
34
  return '';
@@ -9,11 +9,8 @@ export function describeMiscToolActivity(copy, parsed, rawName, { done = false,
9
9
  if (blocked) return `${copy.toolActivity.blocked}: code generation`;
10
10
  return done ? copy.toolActivity.doneCodeGeneration : copy.toolActivity.doingCodeGeneration;
11
11
  }
12
- if (parsed.base === 'create_task') {
13
- return blocked ? makeBlocked(copy, 'create_task') : done ? copy.toolActivity.doneCreateTask : copy.toolActivity.doingCreateTask;
14
- }
15
- if (parsed.base === 'update_task') {
16
- return blocked ? makeBlocked(copy, 'update_task') : done ? copy.toolActivity.doneUpdateTask : copy.toolActivity.doingUpdateTask;
12
+ if (parsed.base === 'update_todos') {
13
+ return blocked ? makeBlocked(copy, 'update_todos') : done ? copy.toolActivity.doneUpdateTodos : copy.toolActivity.doingUpdateTodos;
17
14
  }
18
15
  return blocked ? `${copy.toolActivity.blocked}: ${parsed.raw}` : done ? `${copy.toolActivity.doneGeneric}: ${parsed.raw}` : `${copy.toolActivity.doingGeneric}: ${parsed.raw}`;
19
16
  }
@@ -1,117 +0,0 @@
1
- import fs from 'node:fs/promises';
2
- import path from 'node:path';
3
- import { getProjectLegacyTasksFilePath, getProjectTasksDir } from './paths.js';
4
-
5
- function legacyTasksFilePath(cwd = process.cwd()) {
6
- return getProjectLegacyTasksFilePath(cwd);
7
- }
8
-
9
- function tasksFilePath(cwd = process.cwd(), sessionId = '') {
10
- const sid = String(sessionId || '').trim();
11
- if (!sid) return legacyTasksFilePath(cwd);
12
- return path.join(getProjectTasksDir(cwd), `${sid}.json`);
13
- }
14
-
15
- async function ensureDir(filePath) {
16
- await fs.mkdir(path.dirname(filePath), { recursive: true });
17
- }
18
-
19
- function normalizeTasks(value) {
20
- if (!Array.isArray(value)) return [];
21
- return value
22
- .map((t) => ({
23
- id: String(t?.id || '').trim(),
24
- title: String(t?.title || '').trim(),
25
- status: String(t?.status || 'pending').trim() || 'pending',
26
- description: String(t?.description || '').trim(),
27
- createdAt: String(t?.createdAt || ''),
28
- updatedAt: String(t?.updatedAt || '')
29
- }))
30
- .filter((t) => t.id && t.title);
31
- }
32
-
33
- function createTaskId() {
34
- const ts = Date.now().toString(36);
35
- const rnd = Math.random().toString(36).slice(2, 7);
36
- return `task-${ts}-${rnd}`;
37
- }
38
-
39
- export async function loadTasks(cwd = process.cwd(), sessionId = '') {
40
- const filePath = tasksFilePath(cwd, sessionId);
41
- try {
42
- const raw = await fs.readFile(filePath, 'utf8');
43
- const parsed = JSON.parse(raw);
44
- return normalizeTasks(parsed?.tasks);
45
- } catch {
46
- if (sessionId) {
47
- try {
48
- const raw = await fs.readFile(legacyTasksFilePath(cwd), 'utf8');
49
- const parsed = JSON.parse(raw);
50
- return normalizeTasks(parsed?.tasks);
51
- } catch {
52
- return [];
53
- }
54
- }
55
- return [];
56
- }
57
- }
58
-
59
- export async function saveTasks(tasks, cwd = process.cwd(), sessionId = '') {
60
- const filePath = tasksFilePath(cwd, sessionId);
61
- await ensureDir(filePath);
62
- const normalized = normalizeTasks(tasks);
63
- await fs.writeFile(
64
- filePath,
65
- `${JSON.stringify({ updatedAt: new Date().toISOString(), tasks: normalized }, null, 2)}\n`,
66
- 'utf8'
67
- );
68
- return normalized;
69
- }
70
-
71
- export async function createTasks(items, cwd = process.cwd(), sessionId = '') {
72
- const existing = await loadTasks(cwd, sessionId);
73
- const now = new Date().toISOString();
74
- const input = Array.isArray(items) ? items : [];
75
- const add = input
76
- .map((t) => ({
77
- id: createTaskId(),
78
- title: String(t?.title || '').trim(),
79
- description: String(t?.description || '').trim(),
80
- status: 'pending',
81
- createdAt: now,
82
- updatedAt: now
83
- }))
84
- .filter((t) => t.title);
85
- const next = [...existing, ...add];
86
- await saveTasks(next, cwd, sessionId);
87
- return add;
88
- }
89
-
90
- export async function updateTask(taskId, patch, cwd = process.cwd(), sessionId = '') {
91
- const tasks = await loadTasks(cwd, sessionId);
92
- const idx = tasks.findIndex((t) => t.id === taskId);
93
- if (idx === -1) return null;
94
- const next = [...tasks];
95
- const status = String(patch?.status || next[idx].status).trim();
96
- next[idx] = {
97
- ...next[idx],
98
- ...(patch?.title ? { title: String(patch.title) } : {}),
99
- ...(patch?.description !== undefined ? { description: String(patch.description || '') } : {}),
100
- status: ['pending', 'in_progress', 'completed'].includes(status) ? status : next[idx].status,
101
- updatedAt: new Date().toISOString()
102
- };
103
- await saveTasks(next, cwd, sessionId);
104
- return next[idx];
105
- }
106
-
107
- export async function deleteTasks(ids, cwd = process.cwd(), sessionId = '') {
108
- const remove = new Set((Array.isArray(ids) ? ids : []).map((v) => String(v)));
109
- const before = await loadTasks(cwd, sessionId);
110
- const kept = before.filter((t) => !remove.has(t.id));
111
- await saveTasks(kept, cwd, sessionId);
112
- return { removed: before.length - kept.length, remaining: kept.length };
113
- }
114
-
115
- export async function clearTasks(cwd = process.cwd(), sessionId = '') {
116
- await saveTasks([], cwd, sessionId);
117
- }