@codemieai/code 0.0.3 → 0.0.5
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/README.md +375 -325
- package/bin/codemie-claude.js +23 -0
- package/bin/codemie-code.js +49 -11
- package/bin/codemie-codex.js +12 -13
- package/dist/agents/adapters/claude-code.d.ts +5 -0
- package/dist/agents/adapters/claude-code.d.ts.map +1 -1
- package/dist/agents/adapters/claude-code.js +76 -18
- package/dist/agents/adapters/claude-code.js.map +1 -1
- package/dist/agents/adapters/codex.d.ts +5 -0
- package/dist/agents/adapters/codex.d.ts.map +1 -1
- package/dist/agents/adapters/codex.js +75 -17
- package/dist/agents/adapters/codex.js.map +1 -1
- package/dist/agents/codemie-code/agent.d.ts.map +1 -1
- package/dist/agents/codemie-code/agent.js +187 -21
- package/dist/agents/codemie-code/agent.js.map +1 -1
- package/dist/agents/codemie-code/config.d.ts.map +1 -1
- package/dist/agents/codemie-code/config.js +29 -27
- package/dist/agents/codemie-code/config.js.map +1 -1
- package/dist/agents/codemie-code/index.d.ts +16 -2
- package/dist/agents/codemie-code/index.d.ts.map +1 -1
- package/dist/agents/codemie-code/index.js +74 -6
- package/dist/agents/codemie-code/index.js.map +1 -1
- package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts +87 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts.map +1 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.js +957 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.js.map +1 -0
- package/dist/agents/codemie-code/modes/planMode.d.ts +116 -0
- package/dist/agents/codemie-code/modes/planMode.d.ts.map +1 -0
- package/dist/agents/codemie-code/modes/planMode.js +537 -0
- package/dist/agents/codemie-code/modes/planMode.js.map +1 -0
- package/dist/agents/codemie-code/prompts.d.ts +29 -0
- package/dist/agents/codemie-code/prompts.d.ts.map +1 -1
- package/dist/agents/codemie-code/prompts.js +129 -0
- package/dist/agents/codemie-code/prompts.js.map +1 -1
- package/dist/agents/codemie-code/storage/todoStorage.d.ts +78 -0
- package/dist/agents/codemie-code/storage/todoStorage.d.ts.map +1 -0
- package/dist/agents/codemie-code/storage/todoStorage.js +225 -0
- package/dist/agents/codemie-code/storage/todoStorage.js.map +1 -0
- package/dist/agents/codemie-code/tokenUtils.js +1 -1
- package/dist/agents/codemie-code/tokenUtils.js.map +1 -1
- package/dist/agents/codemie-code/tools/index.d.ts +26 -0
- package/dist/agents/codemie-code/tools/index.d.ts.map +1 -1
- package/dist/agents/codemie-code/tools/index.js +182 -14
- package/dist/agents/codemie-code/tools/index.js.map +1 -1
- package/dist/agents/codemie-code/tools/planning.d.ts +53 -0
- package/dist/agents/codemie-code/tools/planning.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/planning.js +224 -0
- package/dist/agents/codemie-code/tools/planning.js.map +1 -0
- package/dist/agents/codemie-code/types.d.ts +170 -6
- package/dist/agents/codemie-code/types.d.ts.map +1 -1
- package/dist/agents/codemie-code/types.js.map +1 -1
- package/dist/agents/codemie-code/ui/progressTracker.d.ts +125 -0
- package/dist/agents/codemie-code/ui/progressTracker.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/progressTracker.js +343 -0
- package/dist/agents/codemie-code/ui/progressTracker.js.map +1 -0
- package/dist/agents/codemie-code/ui/todoPanel.d.ts +112 -0
- package/dist/agents/codemie-code/ui/todoPanel.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/todoPanel.js +318 -0
- package/dist/agents/codemie-code/ui/todoPanel.js.map +1 -0
- package/dist/agents/codemie-code/ui.d.ts +106 -10
- package/dist/agents/codemie-code/ui.d.ts.map +1 -1
- package/dist/agents/codemie-code/ui.js +913 -129
- package/dist/agents/codemie-code/ui.js.map +1 -1
- package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts +87 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.js +293 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.js.map +1 -0
- package/dist/agents/codemie-code/utils/todoParser.d.ts +41 -0
- package/dist/agents/codemie-code/utils/todoParser.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/todoParser.js +305 -0
- package/dist/agents/codemie-code/utils/todoParser.js.map +1 -0
- package/dist/agents/codemie-code/utils/todoValidator.d.ts +65 -0
- package/dist/agents/codemie-code/utils/todoValidator.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/todoValidator.js +249 -0
- package/dist/agents/codemie-code/utils/todoValidator.js.map +1 -0
- package/dist/agents/codemie-code/validators/planValidator.d.ts +94 -0
- package/dist/agents/codemie-code/validators/planValidator.d.ts.map +1 -0
- package/dist/agents/codemie-code/validators/planValidator.js +281 -0
- package/dist/agents/codemie-code/validators/planValidator.js.map +1 -0
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +7 -5
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/auth.d.ts +3 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +170 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +40 -13
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +209 -16
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/env.js +3 -3
- package/dist/cli/commands/env.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +2 -1
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +15 -9
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +177 -11
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/tools.d.ts +6 -0
- package/dist/cli/commands/tools.d.ts.map +1 -0
- package/dist/cli/commands/tools.js +244 -0
- package/dist/cli/commands/tools.js.map +1 -0
- package/dist/cli/commands/version.js +1 -1
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/cli/commands/workflow.d.ts +6 -0
- package/dist/cli/commands/workflow.d.ts.map +1 -0
- package/dist/cli/commands/workflow.js +424 -0
- package/dist/cli/commands/workflow.js.map +1 -0
- package/dist/cli/index.js +39 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/clients/adapters/github.d.ts +17 -0
- package/dist/clients/adapters/github.d.ts.map +1 -0
- package/dist/clients/adapters/github.js +150 -0
- package/dist/clients/adapters/github.js.map +1 -0
- package/dist/clients/adapters/gitlab.d.ts +17 -0
- package/dist/clients/adapters/gitlab.d.ts.map +1 -0
- package/dist/clients/adapters/gitlab.js +147 -0
- package/dist/clients/adapters/gitlab.js.map +1 -0
- package/dist/clients/registry.d.ts +20 -0
- package/dist/clients/registry.d.ts.map +1 -0
- package/dist/clients/registry.js +27 -0
- package/dist/clients/registry.js.map +1 -0
- package/dist/tools/detector.d.ts +33 -0
- package/dist/tools/detector.d.ts.map +1 -0
- package/dist/tools/detector.js +145 -0
- package/dist/tools/detector.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/manager.d.ts +21 -0
- package/dist/tools/manager.d.ts.map +1 -0
- package/dist/tools/manager.js +104 -0
- package/dist/tools/manager.js.map +1 -0
- package/dist/tools/registry.d.ts +8 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +36 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/types.d.ts +41 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +5 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/types/sso.d.ts +42 -0
- package/dist/types/sso.d.ts.map +1 -0
- package/dist/types/sso.js +2 -0
- package/dist/types/sso.js.map +1 -0
- package/dist/utils/agent-compatibility.d.ts +32 -0
- package/dist/utils/agent-compatibility.d.ts.map +1 -0
- package/dist/utils/agent-compatibility.js +140 -0
- package/dist/utils/agent-compatibility.js.map +1 -0
- package/dist/utils/codemie-integration-validator.d.ts +17 -0
- package/dist/utils/codemie-integration-validator.d.ts.map +1 -0
- package/dist/utils/codemie-integration-validator.js +105 -0
- package/dist/utils/codemie-integration-validator.js.map +1 -0
- package/dist/utils/codemie-model-fetcher.d.ts +11 -0
- package/dist/utils/codemie-model-fetcher.d.ts.map +1 -0
- package/dist/utils/codemie-model-fetcher.js +242 -0
- package/dist/utils/codemie-model-fetcher.js.map +1 -0
- package/dist/utils/config-loader.d.ts +23 -1
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +73 -27
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/credential-store.d.ts +16 -0
- package/dist/utils/credential-store.d.ts.map +1 -0
- package/dist/utils/credential-store.js +109 -0
- package/dist/utils/credential-store.js.map +1 -0
- package/dist/utils/first-time.d.ts +1 -1
- package/dist/utils/first-time.d.ts.map +1 -1
- package/dist/utils/first-time.js +52 -71
- package/dist/utils/first-time.js.map +1 -1
- package/dist/utils/health-checker.d.ts.map +1 -1
- package/dist/utils/health-checker.js +5 -1
- package/dist/utils/health-checker.js.map +1 -1
- package/dist/utils/model-fetcher.d.ts.map +1 -1
- package/dist/utils/model-fetcher.js +15 -2
- package/dist/utils/model-fetcher.js.map +1 -1
- package/dist/utils/sso-auth.d.ts +15 -0
- package/dist/utils/sso-auth.d.ts.map +1 -0
- package/dist/utils/sso-auth.js +207 -0
- package/dist/utils/sso-auth.js.map +1 -0
- package/dist/utils/sso-gateway.d.ts +47 -0
- package/dist/utils/sso-gateway.d.ts.map +1 -0
- package/dist/utils/sso-gateway.js +298 -0
- package/dist/utils/sso-gateway.js.map +1 -0
- package/dist/workflows/detector.d.ts +37 -0
- package/dist/workflows/detector.d.ts.map +1 -0
- package/dist/workflows/detector.js +160 -0
- package/dist/workflows/detector.js.map +1 -0
- package/dist/workflows/index.d.ts +8 -0
- package/dist/workflows/index.d.ts.map +1 -0
- package/dist/workflows/index.js +8 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/installer.d.ts +24 -0
- package/dist/workflows/installer.d.ts.map +1 -0
- package/dist/workflows/installer.js +105 -0
- package/dist/workflows/installer.js.map +1 -0
- package/dist/workflows/registry.d.ts +29 -0
- package/dist/workflows/registry.d.ts.map +1 -0
- package/dist/workflows/registry.js +54 -0
- package/dist/workflows/registry.js.map +1 -0
- package/dist/workflows/templates/github/metadata.d.ts +6 -0
- package/dist/workflows/templates/github/metadata.d.ts.map +1 -0
- package/dist/workflows/templates/github/metadata.js +111 -0
- package/dist/workflows/templates/github/metadata.js.map +1 -0
- package/dist/workflows/templates/gitlab/metadata.d.ts +6 -0
- package/dist/workflows/templates/gitlab/metadata.d.ts.map +1 -0
- package/dist/workflows/templates/gitlab/metadata.js +14 -0
- package/dist/workflows/templates/gitlab/metadata.js.map +1 -0
- package/dist/workflows/types.d.ts +71 -0
- package/dist/workflows/types.d.ts.map +1 -0
- package/dist/workflows/types.js +5 -0
- package/dist/workflows/types.js.map +1 -0
- package/package.json +19 -6
- package/src/workflows/templates/github/code-ci.yml +529 -0
- package/src/workflows/templates/github/inline-fix.yml +665 -0
- package/src/workflows/templates/github/pr-review.yml +677 -0
- package/.claude/agents/README.md +0 -298
- package/.claude/agents/release-manager.md +0 -857
- package/.codemie/guides/git-workflow.md +0 -493
- package/CLAUDE.md +0 -225
- package/config.example.json +0 -10
- package/dist/agents/codemie-code/streaming/events.d.ts +0 -7
- package/dist/agents/codemie-code/streaming/events.d.ts.map +0 -1
- package/dist/agents/codemie-code/streaming/events.js +0 -7
- package/dist/agents/codemie-code/streaming/events.js.map +0 -1
- package/dist/agents/codemie-code/streaming/formatter.d.ts +0 -2
- package/dist/agents/codemie-code/streaming/formatter.d.ts.map +0 -1
- package/dist/agents/codemie-code/streaming/formatter.js +0 -2
- package/dist/agents/codemie-code/streaming/formatter.js.map +0 -1
- package/dist/agents/codemie-code/streaming/ui.d.ts +0 -2
- package/dist/agents/codemie-code/streaming/ui.d.ts.map +0 -1
- package/dist/agents/codemie-code/streaming/ui.js +0 -2
- package/dist/agents/codemie-code/streaming/ui.js.map +0 -1
- package/dist/agents/codemie-code/tools/command.d.ts +0 -2
- package/dist/agents/codemie-code/tools/command.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/command.js +0 -2
- package/dist/agents/codemie-code/tools/command.js.map +0 -1
- package/dist/agents/codemie-code/tools/filesystem.d.ts +0 -2
- package/dist/agents/codemie-code/tools/filesystem.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/filesystem.js +0 -2
- package/dist/agents/codemie-code/tools/filesystem.js.map +0 -1
- package/dist/agents/codemie-code/tools/git.d.ts +0 -2
- package/dist/agents/codemie-code/tools/git.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/git.js +0 -2
- package/dist/agents/codemie-code/tools/git.js.map +0 -1
- package/dist/agents/codemie-code/tools/security.d.ts +0 -2
- package/dist/agents/codemie-code/tools/security.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/security.js +0 -2
- package/dist/agents/codemie-code/tools/security.js.map +0 -1
- package/eslint.config.mjs +0 -43
- package/scripts/README.md +0 -80
- package/scripts/release.sh +0 -156
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Progress Tracker Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides real-time progress tracking and visualization for todo-based workflows
|
|
5
|
+
*/
|
|
6
|
+
import * as clack from '@clack/prompts';
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
import { calculateProgress } from '../utils/todoParser.js';
|
|
9
|
+
import { TodoPanel } from './todoPanel.js';
|
|
10
|
+
/**
|
|
11
|
+
* Progress Tracker for todo-based workflows
|
|
12
|
+
*/
|
|
13
|
+
export class ProgressTracker {
|
|
14
|
+
config;
|
|
15
|
+
todos = [];
|
|
16
|
+
todoPanel;
|
|
17
|
+
lastProgressInfo = null;
|
|
18
|
+
isTracking = false;
|
|
19
|
+
updateTimer = null;
|
|
20
|
+
constructor(config = {}) {
|
|
21
|
+
this.config = config;
|
|
22
|
+
this.config = {
|
|
23
|
+
realTimeUpdates: true,
|
|
24
|
+
updateInterval: 1000,
|
|
25
|
+
showCelebrations: true,
|
|
26
|
+
showQualityFeedback: false,
|
|
27
|
+
compact: false,
|
|
28
|
+
...config
|
|
29
|
+
};
|
|
30
|
+
this.todoPanel = new TodoPanel({
|
|
31
|
+
compact: this.config.compact,
|
|
32
|
+
showProgress: true,
|
|
33
|
+
showTimestamps: false
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Start tracking todo progress
|
|
38
|
+
*/
|
|
39
|
+
start(initialTodos = []) {
|
|
40
|
+
if (this.isTracking) {
|
|
41
|
+
this.stop();
|
|
42
|
+
}
|
|
43
|
+
this.todos = [...initialTodos];
|
|
44
|
+
this.todoPanel.update(this.todos);
|
|
45
|
+
this.lastProgressInfo = calculateProgress(this.todos);
|
|
46
|
+
this.isTracking = true;
|
|
47
|
+
// Show initial state
|
|
48
|
+
this.displayCurrentState();
|
|
49
|
+
// Start real-time updates if enabled
|
|
50
|
+
if (this.config.realTimeUpdates && this.config.updateInterval) {
|
|
51
|
+
this.updateTimer = setInterval(() => {
|
|
52
|
+
this.checkForUpdates();
|
|
53
|
+
}, this.config.updateInterval);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Stop tracking
|
|
58
|
+
*/
|
|
59
|
+
stop() {
|
|
60
|
+
this.isTracking = false;
|
|
61
|
+
if (this.updateTimer) {
|
|
62
|
+
clearInterval(this.updateTimer);
|
|
63
|
+
this.updateTimer = null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Update todos and refresh display
|
|
68
|
+
*/
|
|
69
|
+
updateTodos(newTodos, event, suppressVisualFeedback = false) {
|
|
70
|
+
if (!this.isTracking)
|
|
71
|
+
return;
|
|
72
|
+
// Handle null/undefined gracefully
|
|
73
|
+
if (!newTodos || !Array.isArray(newTodos)) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const previousTodos = [...this.todos];
|
|
77
|
+
this.todos = [...newTodos];
|
|
78
|
+
this.todoPanel.update(this.todos);
|
|
79
|
+
const newProgressInfo = calculateProgress(this.todos);
|
|
80
|
+
const progressChanged = this.hasProgressChanged(newProgressInfo);
|
|
81
|
+
// Show update notification only if not suppressing visual feedback
|
|
82
|
+
if (event && !suppressVisualFeedback) {
|
|
83
|
+
this.handleTodoUpdateEvent(event, previousTodos);
|
|
84
|
+
}
|
|
85
|
+
// Update progress info
|
|
86
|
+
this.lastProgressInfo = newProgressInfo;
|
|
87
|
+
// Show celebrations if progress improved and not suppressing feedback
|
|
88
|
+
if (progressChanged && this.config.showCelebrations && !suppressVisualFeedback) {
|
|
89
|
+
this.checkForCelebrations(newProgressInfo);
|
|
90
|
+
}
|
|
91
|
+
// Display updated state only if not suppressing feedback
|
|
92
|
+
if (!suppressVisualFeedback) {
|
|
93
|
+
this.displayCurrentState();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Handle specific todo update events
|
|
98
|
+
*/
|
|
99
|
+
handleTodoUpdateEvent(event, previousTodos) {
|
|
100
|
+
const { changeType, changedIndex, todos } = event;
|
|
101
|
+
switch (changeType) {
|
|
102
|
+
case 'create':
|
|
103
|
+
if (changedIndex !== undefined) {
|
|
104
|
+
const todo = todos[changedIndex];
|
|
105
|
+
clack.note(`Added: ${todo.content}`, '➕ New Todo');
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// Only show "Todo List Created" if we're showing visual feedback
|
|
109
|
+
// This prevents duplicate messages during planning phases
|
|
110
|
+
if (todos.length > 0) {
|
|
111
|
+
clack.note(`Created ${todos.length} todo${todos.length === 1 ? '' : 's'}`, '📋 Todo List Created');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
break;
|
|
115
|
+
case 'update':
|
|
116
|
+
if (changedIndex !== undefined) {
|
|
117
|
+
const todo = todos[changedIndex];
|
|
118
|
+
const previousTodo = previousTodos[changedIndex];
|
|
119
|
+
if (previousTodo && todo.status !== previousTodo.status) {
|
|
120
|
+
this.showStatusChangeNotification(todo, previousTodo.status, changedIndex);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
break;
|
|
124
|
+
case 'delete':
|
|
125
|
+
clack.note(`Removed ${previousTodos.length} todo${previousTodos.length === 1 ? '' : 's'}`, '🗑️ Todos Cleared');
|
|
126
|
+
break;
|
|
127
|
+
case 'reorder':
|
|
128
|
+
clack.note('Todo order updated', '🔄 Reordered');
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Show status change notification
|
|
134
|
+
*/
|
|
135
|
+
showStatusChangeNotification(todo, previousStatus, index) {
|
|
136
|
+
const statusEmoji = {
|
|
137
|
+
'pending': '⏳',
|
|
138
|
+
'in_progress': '🔄',
|
|
139
|
+
'completed': '✅'
|
|
140
|
+
};
|
|
141
|
+
const message = `${statusEmoji[todo.status]} ${todo.content}`;
|
|
142
|
+
// const subtitle = `Status: ${previousStatus} → ${todo.status}`; // Available for future use
|
|
143
|
+
switch (todo.status) {
|
|
144
|
+
case 'in_progress':
|
|
145
|
+
clack.note(message, `🎯 Started Task ${index + 1}`);
|
|
146
|
+
break;
|
|
147
|
+
case 'completed':
|
|
148
|
+
clack.note(message, `✅ Completed Task ${index + 1}`);
|
|
149
|
+
this.showTaskCompletion(todo, index);
|
|
150
|
+
break;
|
|
151
|
+
case 'pending':
|
|
152
|
+
clack.note(message, `⏳ Reset Task ${index + 1}`);
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Show task completion with celebration
|
|
158
|
+
*/
|
|
159
|
+
showTaskCompletion(todo, _index) {
|
|
160
|
+
if (!this.config.showCelebrations)
|
|
161
|
+
return;
|
|
162
|
+
const progress = this.lastProgressInfo;
|
|
163
|
+
if (!progress)
|
|
164
|
+
return;
|
|
165
|
+
// Individual task completion
|
|
166
|
+
const completionMessage = chalk.green(`🎉 Great job completing: ${todo.content}`);
|
|
167
|
+
// Check if this was the final task
|
|
168
|
+
if (progress.completed === progress.total && progress.total > 1) {
|
|
169
|
+
clack.outro(chalk.green.bold('🏆 All tasks completed! Excellent work!'));
|
|
170
|
+
}
|
|
171
|
+
else if (progress.completed === progress.total - 1) {
|
|
172
|
+
clack.note(completionMessage + chalk.yellow('\n\n🏁 One more task to go!'), '🎯 Almost There');
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
clack.note(completionMessage, '✨ Task Complete');
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Check for milestone celebrations
|
|
180
|
+
*/
|
|
181
|
+
checkForCelebrations(progressInfo) {
|
|
182
|
+
if (!this.config.showCelebrations)
|
|
183
|
+
return;
|
|
184
|
+
const { percentage, completed: _completed, total } = progressInfo;
|
|
185
|
+
// Milestone celebrations
|
|
186
|
+
if (percentage === 25 && total >= 4) {
|
|
187
|
+
clack.note('🌟 25% complete - Great start!', '🎯 Milestone');
|
|
188
|
+
}
|
|
189
|
+
else if (percentage === 50 && total >= 4) {
|
|
190
|
+
clack.note('🔥 50% complete - Halfway there!', '🎯 Milestone');
|
|
191
|
+
}
|
|
192
|
+
else if (percentage === 75 && total >= 4) {
|
|
193
|
+
clack.note('⚡ 75% complete - Almost done!', '🎯 Milestone');
|
|
194
|
+
}
|
|
195
|
+
else if (percentage === 100 && total > 0) {
|
|
196
|
+
const celebration = total === 1 ?
|
|
197
|
+
'🎉 Task completed!' :
|
|
198
|
+
`🏆 All ${total} tasks completed! Outstanding work!`;
|
|
199
|
+
clack.outro(chalk.green.bold(celebration));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Display current state
|
|
204
|
+
*/
|
|
205
|
+
displayCurrentState() {
|
|
206
|
+
if (!this.isTracking)
|
|
207
|
+
return;
|
|
208
|
+
// Only show progress if we have todos to track
|
|
209
|
+
if (this.todos.length === 0)
|
|
210
|
+
return;
|
|
211
|
+
if (this.config.compact) {
|
|
212
|
+
// Compact single-line display
|
|
213
|
+
console.log(this.todoPanel.renderCompactProgress());
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
// Full panel display (for debug or detailed mode)
|
|
217
|
+
// In normal operation, we rely on individual notifications
|
|
218
|
+
// rather than constantly refreshing the full panel
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Check if progress has meaningfully changed
|
|
223
|
+
*/
|
|
224
|
+
hasProgressChanged(newProgressInfo) {
|
|
225
|
+
if (!this.lastProgressInfo)
|
|
226
|
+
return true;
|
|
227
|
+
return (newProgressInfo.completed !== this.lastProgressInfo.completed ||
|
|
228
|
+
newProgressInfo.inProgress !== this.lastProgressInfo.inProgress ||
|
|
229
|
+
newProgressInfo.total !== this.lastProgressInfo.total);
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Check for updates (for polling mode)
|
|
233
|
+
*/
|
|
234
|
+
checkForUpdates() {
|
|
235
|
+
// This would be used if we need to poll for external changes
|
|
236
|
+
// Currently, we rely on explicit updateTodos calls
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Show planning phase start
|
|
240
|
+
*/
|
|
241
|
+
showPlanningStart() {
|
|
242
|
+
// Don't duplicate planning start message - handled by main UI spinner
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Show planning phase completion
|
|
246
|
+
*/
|
|
247
|
+
showPlanningComplete(todoCount) {
|
|
248
|
+
const message = `Created plan with ${todoCount} step${todoCount === 1 ? '' : 's'}`;
|
|
249
|
+
clack.log.success(`📋 ${message}`);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Show execution phase start
|
|
253
|
+
*/
|
|
254
|
+
showExecutionStart() {
|
|
255
|
+
clack.log.info('🚀 Starting execution phase...');
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Show overall completion
|
|
259
|
+
*/
|
|
260
|
+
showOverallCompletion(stats) {
|
|
261
|
+
const { totalTime, tasksCompleted } = stats;
|
|
262
|
+
let message = `🏁 Completed ${tasksCompleted} task${tasksCompleted === 1 ? '' : 's'}`;
|
|
263
|
+
if (totalTime) {
|
|
264
|
+
const minutes = Math.round(totalTime / 60000);
|
|
265
|
+
const seconds = Math.round((totalTime % 60000) / 1000);
|
|
266
|
+
if (minutes > 0) {
|
|
267
|
+
message += ` in ${minutes}m ${seconds}s`;
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
message += ` in ${seconds}s`;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
clack.outro(chalk.green.bold(message));
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Show error state
|
|
277
|
+
*/
|
|
278
|
+
showError(error, todoIndex) {
|
|
279
|
+
let message = `❌ ${error}`;
|
|
280
|
+
if (todoIndex !== undefined && this.todos[todoIndex]) {
|
|
281
|
+
message += `\n📍 While working on: ${this.todos[todoIndex].content}`;
|
|
282
|
+
}
|
|
283
|
+
clack.log.error(message);
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Show warning
|
|
287
|
+
*/
|
|
288
|
+
showWarning(warning) {
|
|
289
|
+
clack.log.warn(`⚠️ ${warning}`);
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Get current progress
|
|
293
|
+
*/
|
|
294
|
+
getCurrentProgress() {
|
|
295
|
+
return this.lastProgressInfo;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Get current todos
|
|
299
|
+
*/
|
|
300
|
+
getCurrentTodos() {
|
|
301
|
+
return [...this.todos];
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Check if currently tracking
|
|
305
|
+
*/
|
|
306
|
+
isActive() {
|
|
307
|
+
return this.isTracking;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Global progress tracker instance
|
|
312
|
+
*/
|
|
313
|
+
let globalProgressTracker = null;
|
|
314
|
+
/**
|
|
315
|
+
* Get or create global progress tracker
|
|
316
|
+
*/
|
|
317
|
+
export function getProgressTracker(config) {
|
|
318
|
+
if (!globalProgressTracker) {
|
|
319
|
+
globalProgressTracker = new ProgressTracker(config);
|
|
320
|
+
}
|
|
321
|
+
return globalProgressTracker;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Reset global progress tracker
|
|
325
|
+
*/
|
|
326
|
+
export function resetProgressTracker() {
|
|
327
|
+
if (globalProgressTracker) {
|
|
328
|
+
globalProgressTracker.stop();
|
|
329
|
+
globalProgressTracker = null;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Quick utility to show a progress update
|
|
334
|
+
*/
|
|
335
|
+
export function showQuickProgress(todos, message) {
|
|
336
|
+
const progress = calculateProgress(todos);
|
|
337
|
+
const progressText = `${progress.completed}/${progress.total} (${progress.percentage}%)`;
|
|
338
|
+
const displayMessage = message ?
|
|
339
|
+
`${message} - ${progressText}` :
|
|
340
|
+
`Progress: ${progressText}`;
|
|
341
|
+
clack.log.info(`📊 ${displayMessage}`);
|
|
342
|
+
}
|
|
343
|
+
//# sourceMappingURL=progressTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progressTracker.js","sourceRoot":"","sources":["../../../../src/agents/codemie-code/ui/progressTracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Todo Panel UI Component
|
|
3
|
+
*
|
|
4
|
+
* Provides rich visual display of todo lists with progress tracking
|
|
5
|
+
* Inspired by LangChain-Code's Rich-based todo panels
|
|
6
|
+
*/
|
|
7
|
+
import type { Todo, ProgressInfo } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Visual styling configuration for todo display
|
|
10
|
+
*/
|
|
11
|
+
export interface TodoDisplayOptions {
|
|
12
|
+
/** Show progress bar */
|
|
13
|
+
showProgress?: boolean;
|
|
14
|
+
/** Show timestamps */
|
|
15
|
+
showTimestamps?: boolean;
|
|
16
|
+
/** Show quality indicators */
|
|
17
|
+
showQuality?: boolean;
|
|
18
|
+
/** Compact display mode */
|
|
19
|
+
compact?: boolean;
|
|
20
|
+
/** Maximum width for content */
|
|
21
|
+
maxWidth?: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Todo Panel for rich terminal display
|
|
25
|
+
*/
|
|
26
|
+
export declare class TodoPanel {
|
|
27
|
+
private options;
|
|
28
|
+
private todos;
|
|
29
|
+
private lastProgressInfo;
|
|
30
|
+
constructor(options?: TodoDisplayOptions);
|
|
31
|
+
/**
|
|
32
|
+
* Update the todo list and trigger display refresh
|
|
33
|
+
*/
|
|
34
|
+
update(todos: Todo[]): void;
|
|
35
|
+
/**
|
|
36
|
+
* Render the todo panel as a formatted string
|
|
37
|
+
*/
|
|
38
|
+
render(): string;
|
|
39
|
+
/**
|
|
40
|
+
* Render empty state
|
|
41
|
+
*/
|
|
42
|
+
private renderEmptyState;
|
|
43
|
+
/**
|
|
44
|
+
* Render panel header
|
|
45
|
+
*/
|
|
46
|
+
private renderHeader;
|
|
47
|
+
/**
|
|
48
|
+
* Render individual todo items
|
|
49
|
+
*/
|
|
50
|
+
private renderTodoItems;
|
|
51
|
+
/**
|
|
52
|
+
* Render a single todo item
|
|
53
|
+
*/
|
|
54
|
+
private renderTodoItem;
|
|
55
|
+
/**
|
|
56
|
+
* Render progress section
|
|
57
|
+
*/
|
|
58
|
+
private renderProgress;
|
|
59
|
+
/**
|
|
60
|
+
* Render current activity section
|
|
61
|
+
*/
|
|
62
|
+
private renderCurrentActivity;
|
|
63
|
+
/**
|
|
64
|
+
* Format timestamp for display
|
|
65
|
+
*/
|
|
66
|
+
private formatTimestamp;
|
|
67
|
+
/**
|
|
68
|
+
* Show a diff between two todo states
|
|
69
|
+
*/
|
|
70
|
+
renderDiff(previousTodos: Todo[], currentTodos: Todo[]): string;
|
|
71
|
+
/**
|
|
72
|
+
* Render a compact single-line progress indicator
|
|
73
|
+
*/
|
|
74
|
+
renderCompactProgress(): string;
|
|
75
|
+
/**
|
|
76
|
+
* Show an animated progress update
|
|
77
|
+
*/
|
|
78
|
+
showProgressUpdate(message: string, todoIndex?: number): void;
|
|
79
|
+
/**
|
|
80
|
+
* Show completion celebration
|
|
81
|
+
*/
|
|
82
|
+
showCompletion(): void;
|
|
83
|
+
/**
|
|
84
|
+
* Display validation warnings
|
|
85
|
+
*/
|
|
86
|
+
showValidationWarnings(warnings: string[]): void;
|
|
87
|
+
/**
|
|
88
|
+
* Display quality suggestions
|
|
89
|
+
*/
|
|
90
|
+
showQualitySuggestions(suggestions: string[]): void;
|
|
91
|
+
/**
|
|
92
|
+
* Get current todos
|
|
93
|
+
*/
|
|
94
|
+
getTodos(): Todo[];
|
|
95
|
+
/**
|
|
96
|
+
* Get current progress info
|
|
97
|
+
*/
|
|
98
|
+
getProgressInfo(): ProgressInfo | null;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Utility function to create a quick todo display
|
|
102
|
+
*/
|
|
103
|
+
export declare function renderTodoList(todos: Todo[], options?: TodoDisplayOptions): string;
|
|
104
|
+
/**
|
|
105
|
+
* Utility function to show a todo update notification
|
|
106
|
+
*/
|
|
107
|
+
export declare function showTodoUpdate(message: string, todos?: Todo[], previousTodos?: Todo[]): void;
|
|
108
|
+
/**
|
|
109
|
+
* Interactive todo status selector
|
|
110
|
+
*/
|
|
111
|
+
export declare function selectTodoStatus(currentStatus: Todo['status']): Promise<Todo['status'] | symbol>;
|
|
112
|
+
//# sourceMappingURL=todoPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todoPanel.d.ts","sourceRoot":"","sources":["../../../../src/agents/codemie-code/ui/todoPanel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGtD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,sBAAsB;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,SAAS;IAIR,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,gBAAgB,CAA6B;gBAEjC,OAAO,GAAE,kBAAuB;IAWpD;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAK3B;;OAEG;IACH,MAAM,IAAI,MAAM;IA0BhB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,OAAO,CAAC,cAAc;IA4CtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAmBtB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,MAAM;IAuC/D;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAmB/B;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAY7D;;OAEG;IACH,cAAc,IAAI,IAAI;IAatB;;OAEG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAWhD;;OAEG;IACH,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI;IAWnD;;OAEG;IACH,QAAQ,IAAI,IAAI,EAAE;IAIlB;;OAEG;IACH,eAAe,IAAI,YAAY,GAAG,IAAI;CAGvC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAIR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,IAAI,EAAE,EACd,aAAa,CAAC,EAAE,IAAI,EAAE,GACrB,IAAI,CAUN;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,GAC5B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CAUlC"}
|