codeep 1.0.69 → 1.0.70

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 CHANGED
@@ -364,6 +364,7 @@ After installation, `codeep` is available globally in your terminal. Simply run
364
364
 
365
365
  | Command | Description |
366
366
  |---------|-------------|
367
+ | `/grant` | Grant write permission for agent (opens permission dialog) |
367
368
  | `/agent <task>` | Run agent for a specific task (manual mode) |
368
369
  | `/agent-dry <task>` | Preview what agent would do without executing |
369
370
  | `/agent-stop` | Stop a running agent |
@@ -508,7 +509,7 @@ With write access enabled:
508
509
  | API Timeout | 60000ms | Request timeout |
509
510
  | API Rate Limit | 30/min | Max API calls per minute |
510
511
  | Command Rate Limit | 100/min | Max commands per minute |
511
- | Agent Mode | ON | `ON` = agent runs on every message, `Manual` = use /agent |
512
+ | Agent Mode | ON | `ON` = agent runs automatically (requires write permission via `/grant`), `Manual` = use /agent |
512
513
  | Agent API Timeout | 180000ms | Timeout per agent API call (auto-adjusted for complexity) |
513
514
  | Agent Max Duration | 20 min | Maximum time for agent to run (5-60 min) |
514
515
  | Agent Max Iterations | 100 | Maximum agent iterations (10-200) |
@@ -522,6 +523,13 @@ With write access enabled:
522
523
 
523
524
  ### Autonomous Coding (Agent Mode ON)
524
525
 
526
+ First, grant write permission (required for Agent Mode ON to work):
527
+
528
+ ```
529
+ > /grant
530
+ # Opens permission dialog - select "Read + Write" for full agent access
531
+ ```
532
+
525
533
  With write access enabled, just describe what you want:
526
534
 
527
535
  ```
package/dist/app.js CHANGED
@@ -117,7 +117,7 @@ export const App = () => {
117
117
  if (agentMode === 'on' && !hasWrite) {
118
118
  setTimeout(() => {
119
119
  setNotificationDuration(8000);
120
- setNotification('⚠️ Agent Mode is ON but only read access. Use /grant for write access or /agent for manual mode.');
120
+ setNotification('⚠️ Agent Mode ON: Needs write permission to work. Use /grant to enable or /agent for manual mode.');
121
121
  }, 500);
122
122
  }
123
123
  }
@@ -134,7 +134,7 @@ export const App = () => {
134
134
  if (agentMode === 'on') {
135
135
  setTimeout(() => {
136
136
  setNotificationDuration(8000);
137
- setNotification('⚠️ Agent Mode is ON but no project detected. Run codeep in a project directory.');
137
+ setNotification('⚠️ Agent Mode ON: Not a project folder (no package.json, etc). Run codeep inside a project.');
138
138
  }, 500);
139
139
  }
140
140
  }
@@ -414,10 +414,10 @@ export const App = () => {
414
414
  logger.debug(`[handleSubmit] agentMode=${agentMode}, hasWriteAccess=${hasWriteAccess}, hasProjectContext=${!!projectContext}`);
415
415
  if (agentMode === 'on') {
416
416
  if (!projectContext) {
417
- notify('⚠️ Agent Mode ON: Requires project directory. Using chat mode instead.', 8000);
417
+ notify('⚠️ Agent Mode ON: Not a project folder. Run codeep inside a project directory.', 8000);
418
418
  }
419
419
  else if (!hasWriteAccess) {
420
- notify('⚠️ Agent Mode ON: Write permission required. Grant with /grant or using chat mode.', 8000);
420
+ notify('⚠️ Agent Mode ON: Needs write permission. Use /grant to enable.', 8000);
421
421
  }
422
422
  else {
423
423
  notify('✓ Using agent mode (change in /settings)');
@@ -624,6 +624,20 @@ export const App = () => {
624
624
  case '/settings':
625
625
  setScreen('settings');
626
626
  break;
627
+ case '/grant': {
628
+ // Grant write permission for agent mode
629
+ if (!projectContext) {
630
+ notify('Not in a project directory. Run codeep inside a project folder.');
631
+ break;
632
+ }
633
+ if (hasWriteAccess) {
634
+ notify('Write permission already granted. Agent Mode is ready.');
635
+ break;
636
+ }
637
+ // Open permission dialog to grant write access
638
+ setScreen('permission');
639
+ break;
640
+ }
627
641
  case '/login':
628
642
  setScreen('login');
629
643
  break;
@@ -1281,7 +1295,7 @@ export const App = () => {
1281
1295
  const agentMode = config.get('agentMode');
1282
1296
  if (agentMode === 'on' && !writeGranted) {
1283
1297
  setTimeout(() => {
1284
- notify('⚠️ Agent Mode is ON but write access not granted. Use /grant for full agent or /agent for manual.', 8000);
1298
+ notify('⚠️ Agent Mode ON: Needs write permission to work. Use /grant to enable or /agent for manual mode.', 8000);
1285
1299
  }, 100);
1286
1300
  }
1287
1301
  }
@@ -1291,7 +1305,7 @@ export const App = () => {
1291
1305
  const agentMode = config.get('agentMode');
1292
1306
  if (agentMode === 'on') {
1293
1307
  setTimeout(() => {
1294
- notify('⚠️ Agent Mode is ON but project access denied. Agent cannot run.', 8000);
1308
+ notify('⚠️ Agent Mode ON: Permission denied. Use /grant to try again or /agent for manual mode.', 8000);
1295
1309
  }, 100);
1296
1310
  }
1297
1311
  }
@@ -1394,7 +1408,7 @@ export const App = () => {
1394
1408
  const actionColor = change.action === 'delete' ? 'red' : change.action === 'edit' ? 'yellow' : 'green';
1395
1409
  const actionLabel = change.action === 'delete' ? 'DELETE' : change.action === 'edit' ? 'EDIT' : 'CREATE';
1396
1410
  return (_jsxs(Text, { children: ["\u2022 ", _jsxs(Text, { color: actionColor, children: ["[", actionLabel, "]"] }), " ", change.path, change.action !== 'delete' && change.content.includes('\n') && ` (${change.content.split('\n').length} lines)`] }, i));
1397
- }), _jsx(Text, { children: " " }), _jsxs(Text, { children: ["Apply changes? ", _jsx(Text, { color: "#f02a30", bold: true, children: "[Y/n]" })] }), _jsx(Text, { color: "gray", children: "Press Y to apply, N or Esc to reject" })] })), notification && (_jsx(Box, { justifyContent: "center", children: _jsx(Text, { color: "cyan", children: notification }) })), _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "#f02a30", children: '─'.repeat(Math.max(20, stdout?.columns || 80)) }), _jsx(Box, { paddingX: 1, children: _jsx(ChatInput, { onSubmit: handleSubmit, disabled: isLoading || isAgentRunning || pendingFileChanges.length > 0, history: inputHistory, clearTrigger: clearInputTrigger }) }), _jsx(Text, { color: "#f02a30", children: '─'.repeat(Math.max(20, stdout?.columns || 80)) })] }), _jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { children: _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", bold: true, children: "Ctrl+V" }), _jsx(Text, { children: " Paste " }), _jsx(Text, { color: "#f02a30", bold: true, children: "Ctrl+L" }), _jsx(Text, { children: " Clear " }), _jsx(Text, { color: "#f02a30", bold: true, children: "Esc" }), _jsx(Text, { children: " Cancel " }), _jsx(Text, { color: "#f02a30", bold: true, children: "\u2191\u2193" }), _jsx(Text, { children: " History " }), _jsx(Text, { color: "#f02a30", bold: true, children: "/help" }), _jsx(Text, { children: " Commands" })] }) }), _jsx(Box, { children: config.get('agentMode') === 'on' ? (hasWriteAccess && projectContext ? (_jsx(Text, { color: "green", children: "Agent: ON \u2713" })) : (_jsxs(Text, { color: "yellow", children: ["Agent: ON (inactive - ", !projectContext ? 'no project' : 'no write access', ")"] }))) : (_jsx(Text, { color: "gray", children: "Agent: Manual (use /agent)" })) })] })] }));
1411
+ }), _jsx(Text, { children: " " }), _jsxs(Text, { children: ["Apply changes? ", _jsx(Text, { color: "#f02a30", bold: true, children: "[Y/n]" })] }), _jsx(Text, { color: "gray", children: "Press Y to apply, N or Esc to reject" })] })), notification && (_jsx(Box, { justifyContent: "center", children: _jsx(Text, { color: "cyan", children: notification }) })), _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "#f02a30", children: '─'.repeat(Math.max(20, stdout?.columns || 80)) }), _jsx(Box, { paddingX: 1, children: _jsx(ChatInput, { onSubmit: handleSubmit, disabled: isLoading || isAgentRunning || pendingFileChanges.length > 0, history: inputHistory, clearTrigger: clearInputTrigger }) }), _jsx(Text, { color: "#f02a30", children: '─'.repeat(Math.max(20, stdout?.columns || 80)) })] }), _jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { children: _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", bold: true, children: "Ctrl+V" }), _jsx(Text, { children: " Paste " }), _jsx(Text, { color: "#f02a30", bold: true, children: "Ctrl+L" }), _jsx(Text, { children: " Clear " }), _jsx(Text, { color: "#f02a30", bold: true, children: "Esc" }), _jsx(Text, { children: " Cancel " }), _jsx(Text, { color: "#f02a30", bold: true, children: "\u2191\u2193" }), _jsx(Text, { children: " History " }), _jsx(Text, { color: "#f02a30", bold: true, children: "/help" }), _jsx(Text, { children: " Commands" })] }) }), _jsx(Box, { children: config.get('agentMode') === 'on' ? (hasWriteAccess && projectContext ? (_jsx(Text, { color: "green", children: "Agent: ON \u2713" })) : (_jsxs(Text, { color: "yellow", children: ["Agent: ON (needs ", !projectContext ? 'project folder' : 'permission - /grant', ")"] }))) : (_jsx(Text, { color: "gray", children: "Agent: Manual (use /agent)" })) })] })] }));
1398
1412
  };
1399
1413
  // Model selection component
1400
1414
  const ModelSelect = ({ onClose, notify }) => {
@@ -1,3 +1,3 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Text, Box } from 'ink';
3
- export const Help = () => (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#f02a30", padding: 1, children: [_jsx(Text, { color: "#f02a30", bold: true, children: "Commands" }), _jsx(Text, { children: " " }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/help" }), " - Show this help"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/status" }), " - Show current status"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/version" }), " - Show version info"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/update" }), " - Check for updates"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/model" }), " - Switch model"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/protocol" }), " - Switch API protocol"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/provider" }), " - Switch API provider"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/lang" }), " - Set response language"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/settings" }), " - Adjust temp, tokens, timeout, rate limits"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/sessions" }), " - Save/load chat sessions"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/sessions delete" }), " ", '<name>', " - Delete a session"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/rename" }), " ", '<name>', " - Rename current session"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/search" }), " ", '<term>', " - Search through messages (e.g. /search error)"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/export" }), " - Export chat to MD/JSON/TXT format"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/diff" }), " [--staged] - Review git changes with AI"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/commit" }), " - Generate commit message from staged changes"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/apply" }), " - Apply file changes from AI response"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/copy" }), " [n] - Copy code block [n] to clipboard"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/agent" }), " ", '<task>', " - Start autonomous agent for task"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/agent-dry" }), " ", '<task>', " - Preview agent actions (no changes)"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/agent-stop" }), " - Stop running agent"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/clear" }), " - Clear chat history"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/login" }), " - Login with different key"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/logout" }), " - Logout and clear key"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/exit" }), " - Quit application"] }), _jsx(Text, { children: " " }), _jsx(Text, { color: "#f02a30", bold: true, children: "Shortcuts" }), _jsx(Text, { children: " " }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "\u2191/\u2193" }), " - Navigate input history or command suggestions"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "Tab" }), " - Autocomplete selected command"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "Ctrl+L" }), " - Clear chat (same as /clear)"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "Escape" }), " - Cancel request"] }), _jsx(Text, { children: " " }), _jsx(Text, { color: "#f02a30", bold: true, children: "Code Blocks" }), _jsx(Text, { children: " " }), _jsx(Text, { children: "Code blocks are numbered [0], [1], etc." }), _jsxs(Text, { children: ["Use ", _jsx(Text, { color: "#f02a30", children: "/copy" }), " to copy last block, ", _jsx(Text, { color: "#f02a30", children: "/copy 0" }), " for first"] }), _jsx(Text, { children: " " }), _jsx(Text, { color: "#f02a30", bold: true, children: "Project Context" }), _jsx(Text, { children: " " }), _jsx(Text, { children: "When started in a project directory, Codeep can:" }), _jsx(Text, { children: " \u2022 Auto-detect file paths in your messages" }), _jsx(Text, { children: " \u2022 Attach file contents automatically" }), _jsx(Text, { children: " \u2022 Understand your project structure" }), _jsx(Text, { children: " " }), _jsx(Text, { children: "Examples:" }), _jsxs(Text, { children: [" ", _jsx(Text, { children: "\"check src/app.tsx\"" }), " - reads and analyzes file"] }), _jsxs(Text, { children: [" ", _jsx(Text, { children: "\"what does package.json contain\"" }), " - shows file"] }), _jsxs(Text, { children: [" ", _jsx(Text, { children: "\"improve error handling\"" }), " - AI knows project"] }), _jsx(Text, { children: " " }), _jsx(Text, { color: "#f02a30", bold: true, children: "Agent Mode" }), _jsx(Text, { children: " " }), _jsxs(Text, { children: ["Two modes available in ", _jsx(Text, { color: "#f02a30", children: "/settings" }), ":"] }), _jsxs(Text, { children: [" \u2022 ", _jsx(Text, { color: "green", bold: true, children: "ON" }), " - Agent runs automatically on every message"] }), _jsxs(Text, { children: [" \u2022 ", _jsx(Text, { color: "yellow", bold: true, children: "Manual" }), " - Agent runs only with /agent command"] }), _jsx(Text, { children: " " }), _jsx(Text, { children: "Agent capabilities:" }), _jsx(Text, { children: " \u2022 Creates, edits, deletes files automatically" }), _jsx(Text, { children: " \u2022 Runs shell commands (npm, git, etc.)" }), _jsx(Text, { children: " \u2022 Loops until task is complete" }), _jsx(Text, { children: " \u2022 Shows progress and all actions taken" }), _jsx(Text, { children: " " }), _jsx(Text, { children: "Manual mode examples:" }), _jsxs(Text, { children: [" ", _jsx(Text, { color: "#f02a30", children: "/agent" }), " \"add error handling to api.ts\""] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: "#f02a30", children: "/agent" }), " \"run tests and fix failures\""] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: "#f02a30", children: "/agent" }), " \"create a new React component for user profile\""] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: "#f02a30", children: "/agent-dry" }), " \"refactor utils folder\" - preview only"] })] }));
3
+ export const Help = () => (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#f02a30", padding: 1, children: [_jsx(Text, { color: "#f02a30", bold: true, children: "Commands" }), _jsx(Text, { children: " " }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/help" }), " - Show this help"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/status" }), " - Show current status"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/version" }), " - Show version info"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/update" }), " - Check for updates"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/model" }), " - Switch model"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/protocol" }), " - Switch API protocol"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/provider" }), " - Switch API provider"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/lang" }), " - Set response language"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/settings" }), " - Adjust temp, tokens, timeout, rate limits"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/sessions" }), " - Save/load chat sessions"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/sessions delete" }), " ", '<name>', " - Delete a session"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/rename" }), " ", '<name>', " - Rename current session"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/search" }), " ", '<term>', " - Search through messages (e.g. /search error)"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/export" }), " - Export chat to MD/JSON/TXT format"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/diff" }), " [--staged] - Review git changes with AI"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/commit" }), " - Generate commit message from staged changes"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/apply" }), " - Apply file changes from AI response"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/copy" }), " [n] - Copy code block [n] to clipboard"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/grant" }), " - Grant write permission for agent"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/agent" }), " ", '<task>', " - Start autonomous agent for task"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/agent-dry" }), " ", '<task>', " - Preview agent actions (no changes)"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/agent-stop" }), " - Stop running agent"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/clear" }), " - Clear chat history"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/login" }), " - Login with different key"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/logout" }), " - Logout and clear key"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "/exit" }), " - Quit application"] }), _jsx(Text, { children: " " }), _jsx(Text, { color: "#f02a30", bold: true, children: "Shortcuts" }), _jsx(Text, { children: " " }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "\u2191/\u2193" }), " - Navigate input history or command suggestions"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "Tab" }), " - Autocomplete selected command"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "Ctrl+L" }), " - Clear chat (same as /clear)"] }), _jsxs(Text, { children: [_jsx(Text, { color: "#f02a30", children: "Escape" }), " - Cancel request"] }), _jsx(Text, { children: " " }), _jsx(Text, { color: "#f02a30", bold: true, children: "Code Blocks" }), _jsx(Text, { children: " " }), _jsx(Text, { children: "Code blocks are numbered [0], [1], etc." }), _jsxs(Text, { children: ["Use ", _jsx(Text, { color: "#f02a30", children: "/copy" }), " to copy last block, ", _jsx(Text, { color: "#f02a30", children: "/copy 0" }), " for first"] }), _jsx(Text, { children: " " }), _jsx(Text, { color: "#f02a30", bold: true, children: "Project Context" }), _jsx(Text, { children: " " }), _jsx(Text, { children: "When started in a project directory, Codeep can:" }), _jsx(Text, { children: " \u2022 Auto-detect file paths in your messages" }), _jsx(Text, { children: " \u2022 Attach file contents automatically" }), _jsx(Text, { children: " \u2022 Understand your project structure" }), _jsx(Text, { children: " " }), _jsx(Text, { children: "Examples:" }), _jsxs(Text, { children: [" ", _jsx(Text, { children: "\"check src/app.tsx\"" }), " - reads and analyzes file"] }), _jsxs(Text, { children: [" ", _jsx(Text, { children: "\"what does package.json contain\"" }), " - shows file"] }), _jsxs(Text, { children: [" ", _jsx(Text, { children: "\"improve error handling\"" }), " - AI knows project"] }), _jsx(Text, { children: " " }), _jsx(Text, { color: "#f02a30", bold: true, children: "Agent Mode" }), _jsx(Text, { children: " " }), _jsxs(Text, { children: ["Two modes available in ", _jsx(Text, { color: "#f02a30", children: "/settings" }), ":"] }), _jsxs(Text, { children: [" \u2022 ", _jsx(Text, { color: "green", bold: true, children: "ON" }), " - Agent runs automatically on every message"] }), _jsxs(Text, { children: [" \u2022 ", _jsx(Text, { color: "yellow", bold: true, children: "Manual" }), " - Agent runs only with /agent command"] }), _jsx(Text, { children: " " }), _jsx(Text, { children: "Agent capabilities:" }), _jsx(Text, { children: " \u2022 Creates, edits, deletes files automatically" }), _jsx(Text, { children: " \u2022 Runs shell commands (npm, git, etc.)" }), _jsx(Text, { children: " \u2022 Loops until task is complete" }), _jsx(Text, { children: " \u2022 Shows progress and all actions taken" }), _jsx(Text, { children: " " }), _jsx(Text, { children: "Manual mode examples:" }), _jsxs(Text, { children: [" ", _jsx(Text, { color: "#f02a30", children: "/agent" }), " \"add error handling to api.ts\""] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: "#f02a30", children: "/agent" }), " \"run tests and fix failures\""] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: "#f02a30", children: "/agent" }), " \"create a new React component for user profile\""] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: "#f02a30", children: "/agent-dry" }), " \"refactor utils folder\" - preview only"] })] }));
@@ -23,6 +23,10 @@ const COMMANDS = [
23
23
  { cmd: '/apply', desc: 'Apply file changes' },
24
24
  { cmd: '/copy', desc: 'Copy code block' },
25
25
  { cmd: '/paste', desc: 'Paste from clipboard' },
26
+ { cmd: '/grant', desc: 'Grant write permission for agent' },
27
+ { cmd: '/agent', desc: 'Run agent for a task' },
28
+ { cmd: '/agent-dry', desc: 'Preview agent actions' },
29
+ { cmd: '/agent-stop', desc: 'Stop running agent' },
26
30
  { cmd: '/clear', desc: 'Clear chat' },
27
31
  { cmd: '/login', desc: 'Change API key' },
28
32
  { cmd: '/logout', desc: 'Logout' },
@@ -189,10 +189,10 @@ export const Settings = ({ onClose, notify, hasWriteAccess = false, hasProjectCo
189
189
  const agentCanRun = agentMode === 'on' && hasWriteAccess && hasProjectContext;
190
190
  const agentStatusMessage = agentMode === 'on'
191
191
  ? (!hasProjectContext
192
- ? '⚠️ No project detected - agent cannot run'
192
+ ? '⚠️ Not a project folder - run codeep inside a project directory'
193
193
  : (!hasWriteAccess
194
- ? '⚠️ No write access - use /grant or agent runs in chat mode'
195
- : '✓ Agent will run automatically'))
196
- : 'ℹ️ Use /agent <task> to run agent manually';
194
+ ? '⚠️ Needs write permission - use /grant to enable agent'
195
+ : '✓ Agent will run automatically on every message'))
196
+ : 'ℹ️ Manual mode - use /agent <task> to run agent';
197
197
  return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#f02a30", padding: 1, children: [_jsx(Text, { color: "#f02a30", bold: true, children: "Settings" }), _jsx(Text, { children: " " }), SETTINGS.map((setting, i) => (_jsx(Box, { children: _jsxs(Text, { children: [i === selected ? _jsx(Text, { color: "#f02a30", children: "\u25B8 " }) : ' ', _jsxs(Text, { color: i === selected ? '#f02a30' : undefined, children: [setting.label, ":"] }), _jsx(Text, { children: " " }), editing && i === selected ? (_jsx(Text, { color: "cyan", inverse: true, children: editValue || ' ' })) : (_jsx(Text, { color: "green", children: setting.value() })), i === selected && setting.type === 'number' && !editing && (_jsx(Text, { children: " (\u2190/\u2192 adjust, Enter to type)" })), i === selected && setting.type === 'select' && (_jsx(Text, { children: " (\u2190/\u2192 or Enter to toggle)" }))] }) }, setting.key))), _jsx(Text, { children: " " }), _jsx(Text, { color: agentCanRun ? 'green' : (agentMode === 'on' ? 'yellow' : 'gray'), children: agentStatusMessage }), _jsx(Text, { children: " " }), _jsx(Text, { children: "\u2191/\u2193 Navigate | \u2190/\u2192 Adjust | Enter Edit | Esc Close" })] }));
198
198
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeep",
3
- "version": "1.0.69",
3
+ "version": "1.0.70",
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",