codeep 1.0.47 → 1.0.48

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.
@@ -21,8 +21,18 @@ export const AgentProgress = ({ isRunning, iteration, maxIterations, actions, cu
21
21
  if (!isRunning && actions.length === 0) {
22
22
  return null;
23
23
  }
24
- // Show last 8 actions
25
- const recentActions = actions.slice(-8);
24
+ // Show last 5 actions (more compact)
25
+ const recentActions = actions.slice(-5);
26
+ // Get current/last action for prominent display
27
+ const currentAction = actions.length > 0 ? actions[actions.length - 1] : null;
28
+ // Count actions by type
29
+ const actionCounts = {
30
+ reads: actions.filter(a => a.type === 'read').length,
31
+ writes: actions.filter(a => a.type === 'write').length,
32
+ edits: actions.filter(a => a.type === 'edit').length,
33
+ commands: actions.filter(a => a.type === 'command').length,
34
+ searches: actions.filter(a => a.type === 'search').length,
35
+ };
26
36
  // Count file changes
27
37
  const fileChanges = {
28
38
  created: actions.filter(a => a.type === 'write' && a.result === 'success').length,
@@ -30,7 +40,48 @@ export const AgentProgress = ({ isRunning, iteration, maxIterations, actions, cu
30
40
  deleted: actions.filter(a => a.type === 'delete' && a.result === 'success').length,
31
41
  };
32
42
  const totalFileChanges = fileChanges.created + fileChanges.modified + fileChanges.deleted;
33
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: dryRun ? 'yellow' : '#f02a30', padding: 1, marginY: 1, children: [_jsx(Box, { children: isRunning ? (_jsxs(_Fragment, { children: [_jsxs(Text, { color: dryRun ? 'yellow' : '#f02a30', children: ["[", SPINNER_FRAMES[spinnerFrame], "]"] }), _jsxs(Text, { color: dryRun ? 'yellow' : '#f02a30', bold: true, children: [' ', dryRun ? 'DRY RUN' : 'AGENT', ' '] }), _jsx(Text, { color: "gray", children: "|" }), _jsxs(Text, { color: "cyan", children: [" step ", iteration] }), _jsx(Text, { color: "gray", children: " | " }), _jsxs(Text, { color: "white", children: [actions.length, " actions"] })] })) : (_jsxs(_Fragment, { children: [_jsx(Text, { color: "green", bold: true, children: "[DONE] " }), _jsx(Text, { children: "Agent completed" }), _jsx(Text, { color: "gray", children: " | " }), _jsxs(Text, { color: "white", children: [actions.length, " actions"] })] })) }), _jsx(Text, { color: "gray", children: '─'.repeat(50) }), recentActions.length > 0 && (_jsx(Box, { flexDirection: "column", children: recentActions.map((action, i) => (_jsx(ActionItem, { action: action }, i))) })), isRunning && totalFileChanges > 0 && (_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "gray", children: "Changes: " }), fileChanges.created > 0 && _jsxs(Text, { color: "green", children: ["+", fileChanges.created, " "] }), fileChanges.modified > 0 && _jsxs(Text, { color: "yellow", children: ["~", fileChanges.modified, " "] }), fileChanges.deleted > 0 && _jsxs(Text, { color: "red", children: ["-", fileChanges.deleted] })] })), isRunning && currentThinking && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "gray", wrap: "truncate-end", children: ["> ", currentThinking.slice(0, 80), currentThinking.length > 80 ? '...' : ''] }) })), isRunning && (_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "gray", children: "Press " }), _jsx(Text, { color: "#f02a30", children: "Esc" }), _jsx(Text, { color: "gray", children: " to stop" })] })), !isRunning && totalFileChanges > 0 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { bold: true, children: "File Changes:" }), fileChanges.created > 0 && (_jsxs(Text, { color: "green", children: [" + ", fileChanges.created, " file(s) created"] })), fileChanges.modified > 0 && (_jsxs(Text, { color: "yellow", children: [" ~ ", fileChanges.modified, " file(s) modified"] })), fileChanges.deleted > 0 && (_jsxs(Text, { color: "red", children: [" - ", fileChanges.deleted, " file(s) deleted"] }))] }))] }));
43
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: dryRun ? 'yellow' : '#f02a30', padding: 1, marginY: 1, children: [_jsx(Box, { children: isRunning ? (_jsxs(_Fragment, { children: [_jsxs(Text, { color: dryRun ? 'yellow' : '#f02a30', children: ["[", SPINNER_FRAMES[spinnerFrame], "]"] }), _jsxs(Text, { color: dryRun ? 'yellow' : '#f02a30', bold: true, children: [' ', dryRun ? 'DRY RUN' : 'AGENT', ' '] }), _jsx(Text, { color: "gray", children: "|" }), _jsxs(Text, { color: "cyan", children: [" step ", iteration] }), _jsx(Text, { color: "gray", children: " | " }), actionCounts.reads > 0 && _jsxs(Text, { color: "blue", children: [actionCounts.reads, "R "] }), actionCounts.writes > 0 && _jsxs(Text, { color: "green", children: [actionCounts.writes, "W "] }), actionCounts.edits > 0 && _jsxs(Text, { color: "yellow", children: [actionCounts.edits, "E "] }), actionCounts.commands > 0 && _jsxs(Text, { color: "magenta", children: [actionCounts.commands, "C "] }), actionCounts.searches > 0 && _jsxs(Text, { color: "cyan", children: [actionCounts.searches, "S "] }), actions.length === 0 && _jsx(Text, { color: "gray", children: "0 actions" })] })) : (_jsxs(_Fragment, { children: [_jsx(Text, { color: "green", bold: true, children: "[DONE] " }), _jsx(Text, { children: "Agent completed" }), _jsx(Text, { color: "gray", children: " | " }), _jsxs(Text, { color: "white", children: [actions.length, " actions"] })] })) }), isRunning && currentAction && (_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "white", bold: true, children: "Now: " }), _jsxs(Text, { color: getActionColor(currentAction.type), children: [getActionLabel(currentAction.type), " "] }), _jsx(Text, { color: "white", children: formatTarget(currentAction.target) })] })), _jsx(Text, { color: "gray", children: '─'.repeat(50) }), recentActions.length > 1 && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "gray", dimColor: true, children: "Recent:" }), recentActions.slice(0, -1).map((action, i) => (_jsx(ActionItem, { action: action }, i)))] })), isRunning && totalFileChanges > 0 && (_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "gray", children: "Changes: " }), fileChanges.created > 0 && _jsxs(Text, { color: "green", children: ["+", fileChanges.created, " "] }), fileChanges.modified > 0 && _jsxs(Text, { color: "yellow", children: ["~", fileChanges.modified, " "] }), fileChanges.deleted > 0 && _jsxs(Text, { color: "red", children: ["-", fileChanges.deleted] })] })), isRunning && currentThinking && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "gray", wrap: "truncate-end", children: ["> ", currentThinking.slice(0, 80), currentThinking.length > 80 ? '...' : ''] }) })), isRunning && (_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "gray", children: "Press " }), _jsx(Text, { color: "#f02a30", children: "Esc" }), _jsx(Text, { color: "gray", children: " to stop" })] })), !isRunning && totalFileChanges > 0 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { bold: true, children: "File Changes:" }), fileChanges.created > 0 && (_jsxs(Text, { color: "green", children: [" + ", fileChanges.created, " file(s) created"] })), fileChanges.modified > 0 && (_jsxs(Text, { color: "yellow", children: [" ~ ", fileChanges.modified, " file(s) modified"] })), fileChanges.deleted > 0 && (_jsxs(Text, { color: "red", children: [" - ", fileChanges.deleted, " file(s) deleted"] }))] }))] }));
44
+ };
45
+ // Helper functions for action display
46
+ const getActionColor = (type) => {
47
+ switch (type) {
48
+ case 'read': return 'blue';
49
+ case 'write': return 'green';
50
+ case 'edit': return 'yellow';
51
+ case 'delete': return 'red';
52
+ case 'command': return 'magenta';
53
+ case 'search': return 'cyan';
54
+ case 'list': return 'white';
55
+ case 'mkdir': return 'blue';
56
+ case 'fetch': return 'cyan';
57
+ default: return 'white';
58
+ }
59
+ };
60
+ const getActionLabel = (type) => {
61
+ switch (type) {
62
+ case 'read': return 'Reading';
63
+ case 'write': return 'Creating';
64
+ case 'edit': return 'Editing';
65
+ case 'delete': return 'Deleting';
66
+ case 'command': return 'Running';
67
+ case 'search': return 'Searching';
68
+ case 'list': return 'Listing';
69
+ case 'mkdir': return 'Creating dir';
70
+ case 'fetch': return 'Fetching';
71
+ default: return type.toUpperCase();
72
+ }
73
+ };
74
+ const formatTarget = (target) => {
75
+ // For file paths, show just the filename or last part
76
+ if (target.includes('/')) {
77
+ const parts = target.split('/');
78
+ const filename = parts[parts.length - 1];
79
+ if (parts.length > 2) {
80
+ return `.../${parts[parts.length - 2]}/${filename}`;
81
+ }
82
+ return target.length > 50 ? '...' + target.slice(-47) : target;
83
+ }
84
+ return target.length > 50 ? target.slice(0, 47) + '...' : target;
34
85
  };
35
86
  /**
36
87
  * Single action item display
@@ -39,39 +90,14 @@ const ActionItem = ({ action }) => {
39
90
  const getStatusIndicator = () => {
40
91
  switch (action.result) {
41
92
  case 'success':
42
- return _jsx(Text, { color: "green", children: "[ok]" });
93
+ return _jsx(Text, { color: "green", children: "\u2713" });
43
94
  case 'error':
44
- return _jsx(Text, { color: "red", children: "[err]" });
45
- default:
46
- return _jsx(Text, { color: "yellow", children: "[..]" });
47
- }
48
- };
49
- const getTypeInfo = () => {
50
- switch (action.type) {
51
- case 'read':
52
- return { color: 'blue', label: 'READ' };
53
- case 'write':
54
- return { color: 'green', label: 'CREATE' };
55
- case 'edit':
56
- return { color: 'yellow', label: 'EDIT' };
57
- case 'delete':
58
- return { color: 'red', label: 'DELETE' };
59
- case 'command':
60
- return { color: 'magenta', label: 'EXEC' };
61
- case 'search':
62
- return { color: 'cyan', label: 'SEARCH' };
63
- case 'list':
64
- return { color: 'white', label: 'LIST' };
65
- case 'mkdir':
66
- return { color: 'blue', label: 'MKDIR' };
67
- case 'fetch':
68
- return { color: 'cyan', label: 'FETCH' };
95
+ return _jsx(Text, { color: "red", children: "\u2717" });
69
96
  default:
70
- return { color: 'white', label: String(action.type).toUpperCase() };
97
+ return _jsx(Text, { color: "yellow", children: "\u00B7" });
71
98
  }
72
99
  };
73
- const typeInfo = getTypeInfo();
74
- return (_jsxs(Text, { children: [getStatusIndicator(), ' ', _jsx(Text, { color: typeInfo.color, children: typeInfo.label.padEnd(6) }), ' ', _jsxs(Text, { children: [action.target.slice(0, 40), action.target.length > 40 ? '...' : ''] })] }));
100
+ return (_jsxs(Text, { children: [getStatusIndicator(), ' ', _jsx(Text, { color: getActionColor(action.type), children: getActionLabel(action.type).padEnd(10) }), ' ', _jsx(Text, { color: "gray", children: formatTarget(action.target) })] }));
75
101
  };
76
102
  export const AgentSummary = ({ success, iterations, actions, error, aborted, }) => {
77
103
  const filesWritten = actions.filter(a => a.type === 'write' && a.result === 'success');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeep",
3
- "version": "1.0.47",
3
+ "version": "1.0.48",
4
4
  "description": "AI-powered coding assistant built for the terminal. Multiple LLM providers, project-aware context, and a seamless development workflow.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",