jerad-cli 0.1.0 → 0.3.0
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/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +21 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +201 -62
- package/dist/commands/dev.js.map +1 -1
- package/dist/components/ConfirmPrompt.d.ts +8 -0
- package/dist/components/ConfirmPrompt.d.ts.map +1 -0
- package/dist/components/ConfirmPrompt.js +19 -0
- package/dist/components/ConfirmPrompt.js.map +1 -0
- package/dist/components/DevApp.d.ts +30 -0
- package/dist/components/DevApp.d.ts.map +1 -0
- package/dist/components/DevApp.js +97 -0
- package/dist/components/DevApp.js.map +1 -0
- package/dist/components/ExecutionView.d.ts +25 -0
- package/dist/components/ExecutionView.d.ts.map +1 -0
- package/dist/components/ExecutionView.js +498 -0
- package/dist/components/ExecutionView.js.map +1 -0
- package/dist/components/Header.d.ts +10 -0
- package/dist/components/Header.d.ts.map +1 -0
- package/dist/components/Header.js +22 -0
- package/dist/components/Header.js.map +1 -0
- package/dist/components/InputPrompt.d.ts +13 -0
- package/dist/components/InputPrompt.d.ts.map +1 -0
- package/dist/components/InputPrompt.js +33 -0
- package/dist/components/InputPrompt.js.map +1 -0
- package/dist/components/MarkdownText.d.ts +6 -0
- package/dist/components/MarkdownText.d.ts.map +1 -0
- package/dist/components/MarkdownText.js +200 -0
- package/dist/components/MarkdownText.js.map +1 -0
- package/dist/components/MessageList.d.ts +13 -0
- package/dist/components/MessageList.d.ts.map +1 -0
- package/dist/components/MessageList.js +23 -0
- package/dist/components/MessageList.js.map +1 -0
- package/dist/components/Select.d.ts +14 -0
- package/dist/components/Select.d.ts.map +1 -0
- package/dist/components/Select.js +35 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/Spinner.d.ts +7 -0
- package/dist/components/Spinner.d.ts.map +1 -0
- package/dist/components/Spinner.js +7 -0
- package/dist/components/Spinner.js.map +1 -0
- package/dist/components/StreamingText.d.ts +7 -0
- package/dist/components/StreamingText.d.ts.map +1 -0
- package/dist/components/StreamingText.js +9 -0
- package/dist/components/StreamingText.js.map +1 -0
- package/dist/components/TaskCard.d.ts +14 -0
- package/dist/components/TaskCard.d.ts.map +1 -0
- package/dist/components/TaskCard.js +6 -0
- package/dist/components/TaskCard.js.map +1 -0
- package/dist/components/ToolUseDisplay.d.ts +9 -0
- package/dist/components/ToolUseDisplay.d.ts.map +1 -0
- package/dist/components/ToolUseDisplay.js +38 -0
- package/dist/components/ToolUseDisplay.js.map +1 -0
- package/dist/components/index.d.ts +13 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +13 -0
- package/dist/components/index.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useClaudeAgent.d.ts +25 -0
- package/dist/hooks/useClaudeAgent.d.ts.map +1 -0
- package/dist/hooks/useClaudeAgent.js +114 -0
- package/dist/hooks/useClaudeAgent.js.map +1 -0
- package/dist/hooks/useMessageQueue.d.ts +21 -0
- package/dist/hooks/useMessageQueue.d.ts.map +1 -0
- package/dist/hooks/useMessageQueue.js +77 -0
- package/dist/hooks/useMessageQueue.js.map +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/agent.d.ts +28 -0
- package/dist/lib/agent.d.ts.map +1 -0
- package/dist/lib/agent.js +184 -0
- package/dist/lib/agent.js.map +1 -0
- package/dist/lib/api.d.ts +3 -0
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/auth-check.d.ts +8 -0
- package/dist/lib/auth-check.d.ts.map +1 -0
- package/dist/lib/auth-check.js +68 -0
- package/dist/lib/auth-check.js.map +1 -0
- package/dist/lib/claude-md.d.ts +5 -0
- package/dist/lib/claude-md.d.ts.map +1 -0
- package/dist/lib/claude-md.js +61 -0
- package/dist/lib/claude-md.js.map +1 -0
- package/dist/lib/execution-logger.d.ts +77 -0
- package/dist/lib/execution-logger.d.ts.map +1 -0
- package/dist/lib/execution-logger.js +233 -0
- package/dist/lib/execution-logger.js.map +1 -0
- package/dist/lib/git.d.ts +6 -0
- package/dist/lib/git.d.ts.map +1 -1
- package/dist/lib/git.js +32 -0
- package/dist/lib/git.js.map +1 -1
- package/dist/lib/input-monitor.d.ts +21 -0
- package/dist/lib/input-monitor.d.ts.map +1 -0
- package/dist/lib/input-monitor.js +110 -0
- package/dist/lib/input-monitor.js.map +1 -0
- package/dist/lib/manual-steps.d.ts +16 -0
- package/dist/lib/manual-steps.d.ts.map +1 -0
- package/dist/lib/manual-steps.js +149 -0
- package/dist/lib/manual-steps.js.map +1 -0
- package/dist/lib/mode.d.ts +42 -0
- package/dist/lib/mode.d.ts.map +1 -0
- package/dist/lib/mode.js +128 -0
- package/dist/lib/mode.js.map +1 -0
- package/dist/lib/prompts.d.ts +8 -0
- package/dist/lib/prompts.d.ts.map +1 -0
- package/dist/lib/prompts.js +58 -0
- package/dist/lib/prompts.js.map +1 -0
- package/dist/lib/question-handler.d.ts +23 -0
- package/dist/lib/question-handler.d.ts.map +1 -0
- package/dist/lib/question-handler.js +99 -0
- package/dist/lib/question-handler.js.map +1 -0
- package/dist/lib/sync.d.ts +40 -0
- package/dist/lib/sync.d.ts.map +1 -0
- package/dist/lib/sync.js +287 -0
- package/dist/lib/sync.js.map +1 -0
- package/dist/lib/user-input.d.ts +9 -0
- package/dist/lib/user-input.d.ts.map +1 -0
- package/dist/lib/user-input.js +62 -0
- package/dist/lib/user-input.js.map +1 -0
- package/dist/ui/inline-input.d.ts +25 -0
- package/dist/ui/inline-input.d.ts.map +1 -0
- package/dist/ui/inline-input.js +157 -0
- package/dist/ui/inline-input.js.map +1 -0
- package/dist/ui/prompts/index.d.ts +4 -0
- package/dist/ui/prompts/index.d.ts.map +1 -0
- package/dist/ui/prompts/index.js +4 -0
- package/dist/ui/prompts/index.js.map +1 -0
- package/dist/ui/prompts/input.d.ts +9 -0
- package/dist/ui/prompts/input.d.ts.map +1 -0
- package/dist/ui/prompts/input.js +124 -0
- package/dist/ui/prompts/input.js.map +1 -0
- package/dist/ui/prompts/select.d.ts +17 -0
- package/dist/ui/prompts/select.d.ts.map +1 -0
- package/dist/ui/prompts/select.js +214 -0
- package/dist/ui/prompts/select.js.map +1 -0
- package/dist/ui/prompts/utils.d.ts +81 -0
- package/dist/ui/prompts/utils.d.ts.map +1 -0
- package/dist/ui/prompts/utils.js +164 -0
- package/dist/ui/prompts/utils.js.map +1 -0
- package/dist/ui/task-display.d.ts +2 -0
- package/dist/ui/task-display.d.ts.map +1 -1
- package/dist/ui/task-display.js +48 -0
- package/dist/ui/task-display.js.map +1 -1
- package/package.json +13 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,WAAW,SAkBpB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { checkAuth, getAuthInstructions } from '../lib/auth-check.js';
|
|
4
|
+
export const authCommand = new Command('auth')
|
|
5
|
+
.description('Check Claude API authentication status')
|
|
6
|
+
.action(async () => {
|
|
7
|
+
const status = checkAuth();
|
|
8
|
+
console.log('\n' + chalk.bold('Claude API Authentication Status'));
|
|
9
|
+
console.log('━'.repeat(40));
|
|
10
|
+
if (status.valid) {
|
|
11
|
+
console.log(chalk.green('✓ Authenticated'));
|
|
12
|
+
console.log(` Method: ${chalk.cyan(status.method)}`);
|
|
13
|
+
console.log(` ${chalk.gray(status.details)}`);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
console.log(chalk.red('✗ Not authenticated'));
|
|
17
|
+
console.log(getAuthInstructions());
|
|
18
|
+
}
|
|
19
|
+
console.log('');
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiCpC,eAAO,MAAM,UAAU,SAyUnB,CAAC"}
|
package/dist/commands/dev.js
CHANGED
|
@@ -1,133 +1,273 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { render } from 'ink';
|
|
5
|
+
import { isAuthenticated, isProjectLinked, getProjectConfig, getToken, getApiUrl } from '../lib/config.js';
|
|
5
6
|
import { getApiClient } from '../lib/api.js';
|
|
6
|
-
import { isGitRepo, createBranch, createStoryBranchName } from '../lib/git.js';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { isGitRepo, createBranch, createStoryBranchName, commitChanges, hasUncommittedChanges, getCurrentBranch } from '../lib/git.js';
|
|
8
|
+
import { checkAuth, getAuthInstructions } from '../lib/auth-check.js';
|
|
9
|
+
import { ActivitySync } from '../lib/sync.js';
|
|
10
|
+
import { selectMode, fetchProjectDefaultMode, getModeDisplay, getModeEmoji } from '../lib/mode.js';
|
|
11
|
+
import { displayTaskCard, displayError, displayWarning, displayBranchCreated, displaySuccess, displayInfo, } from '../ui/task-display.js';
|
|
12
|
+
import { select, confirmYN, input } from '../ui/prompts/index.js';
|
|
13
|
+
import { ExecutionView } from '../components/index.js';
|
|
14
|
+
import { ensureClaudeMd } from '../lib/claude-md.js';
|
|
9
15
|
const POLL_INTERVAL = 5000; // 5 seconds
|
|
10
16
|
export const devCommand = new Command('dev')
|
|
11
|
-
.description('Start dev mode - watch for in-progress tasks and
|
|
17
|
+
.description('Start dev mode - watch for in-progress tasks and execute with Claude Agent SDK')
|
|
12
18
|
.option('-n, --no-git', 'Skip git branch creation')
|
|
13
19
|
.option('-p, --poll <seconds>', 'Poll interval in seconds', '5')
|
|
20
|
+
.option('--auto-commit', 'Automatically commit and push on completion')
|
|
21
|
+
.option('--mode <mode>', 'Execution mode: auto, balanced, manual')
|
|
22
|
+
.option('-y, --yes', 'Skip confirmation prompts, use preset modes')
|
|
14
23
|
.action(async (options) => {
|
|
15
|
-
// Validate
|
|
24
|
+
// Validate mode flag if provided
|
|
25
|
+
const cliModeFlag = options.mode;
|
|
26
|
+
if (cliModeFlag && !['auto', 'balanced', 'manual'].includes(cliModeFlag)) {
|
|
27
|
+
console.log(chalk.red(`\n ✗ Invalid mode: "${cliModeFlag}"`));
|
|
28
|
+
console.log(chalk.gray(' Valid modes: auto, balanced, manual\n'));
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
// Check Jerad authentication (web app)
|
|
16
32
|
if (!isAuthenticated()) {
|
|
17
|
-
displayError('Not logged in. Run: jerad login <token>');
|
|
33
|
+
displayError('Not logged in to Jerad. Run: jerad login <token>');
|
|
18
34
|
process.exit(1);
|
|
19
35
|
}
|
|
20
36
|
if (!isProjectLinked()) {
|
|
21
37
|
displayError('No project linked. Run: jerad link <project-id>');
|
|
22
38
|
process.exit(1);
|
|
23
39
|
}
|
|
24
|
-
// Check Claude
|
|
25
|
-
const
|
|
26
|
-
if (!
|
|
27
|
-
displayError('Claude
|
|
28
|
-
console.log(
|
|
40
|
+
// Check Claude API authentication (BYOK)
|
|
41
|
+
const claudeAuth = checkAuth();
|
|
42
|
+
if (!claudeAuth.valid) {
|
|
43
|
+
displayError('Claude API not authenticated.');
|
|
44
|
+
console.log(getAuthInstructions());
|
|
29
45
|
process.exit(1);
|
|
30
46
|
}
|
|
31
47
|
// Check git repo if git is enabled
|
|
32
|
-
|
|
48
|
+
let gitEnabled = options.git !== false;
|
|
49
|
+
if (gitEnabled) {
|
|
33
50
|
const isGit = await isGitRepo();
|
|
34
51
|
if (!isGit) {
|
|
35
52
|
displayWarning('Not in a git repository. Git features will be disabled.');
|
|
36
|
-
|
|
53
|
+
gitEnabled = false;
|
|
37
54
|
}
|
|
38
55
|
}
|
|
39
56
|
const projectConfig = getProjectConfig();
|
|
40
57
|
const pollInterval = (parseInt(options.poll || '5', 10) || 5) * 1000;
|
|
58
|
+
// Initialize activity sync
|
|
59
|
+
const apiUrl = getApiUrl();
|
|
60
|
+
const token = getToken();
|
|
61
|
+
const sync = new ActivitySync(apiUrl, token || '', projectConfig.projectId);
|
|
62
|
+
// Fetch project default mode
|
|
63
|
+
const projectDefaultMode = await fetchProjectDefaultMode(projectConfig.projectId, apiUrl, token || '');
|
|
41
64
|
// Display header
|
|
42
|
-
|
|
65
|
+
console.log();
|
|
66
|
+
console.log(chalk.bold.cyan(' 🤖 Jerad CLI v0.3.0'));
|
|
67
|
+
console.log(chalk.gray(` Project: ${projectConfig.projectName}`));
|
|
68
|
+
console.log(chalk.gray(` Auth: ${claudeAuth.method} - ${claudeAuth.details}`));
|
|
69
|
+
if (cliModeFlag) {
|
|
70
|
+
console.log(chalk.gray(` Mode Override: ${getModeDisplay(cliModeFlag)}`));
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
console.log(chalk.gray(` Project Default: ${getModeDisplay(projectDefaultMode)}`));
|
|
74
|
+
}
|
|
75
|
+
console.log(chalk.gray(' Status: Watching for tasks...'));
|
|
76
|
+
console.log();
|
|
43
77
|
const api = getApiClient();
|
|
44
78
|
let lastProcessedStoryId = null;
|
|
45
|
-
let isProcessing = false;
|
|
79
|
+
let isProcessing = false;
|
|
46
80
|
// Main polling loop
|
|
47
81
|
const poll = async () => {
|
|
48
|
-
|
|
49
|
-
if (isProcessing) {
|
|
82
|
+
if (isProcessing)
|
|
50
83
|
return;
|
|
51
|
-
}
|
|
52
84
|
try {
|
|
53
85
|
const inProgressStories = await api.getInProgressStories(projectConfig.projectId);
|
|
54
86
|
if (inProgressStories.length > 0) {
|
|
55
87
|
const story = inProgressStories[0];
|
|
56
88
|
// Skip if we already processed this story
|
|
57
|
-
if (story._id === lastProcessedStoryId)
|
|
89
|
+
if (story._id === lastProcessedStoryId)
|
|
58
90
|
return;
|
|
59
|
-
}
|
|
60
|
-
// Mark as processing to prevent duplicate prompts
|
|
61
91
|
isProcessing = true;
|
|
92
|
+
// Check for uncommitted changes before starting
|
|
93
|
+
if (gitEnabled && await hasUncommittedChanges()) {
|
|
94
|
+
console.log(chalk.yellow('\n⚠️ You have uncommitted changes.\n'));
|
|
95
|
+
try {
|
|
96
|
+
const action = await select({
|
|
97
|
+
message: 'What would you like to do?',
|
|
98
|
+
header: 'Uncommitted Changes',
|
|
99
|
+
options: [
|
|
100
|
+
{ label: 'Commit changes now', value: 'commit' },
|
|
101
|
+
{ label: 'Stash changes and continue', value: 'stash' },
|
|
102
|
+
{ label: 'Skip this task for now', value: 'skip' },
|
|
103
|
+
],
|
|
104
|
+
});
|
|
105
|
+
if (action === 'commit') {
|
|
106
|
+
const message = await input({
|
|
107
|
+
message: 'Commit message:',
|
|
108
|
+
defaultValue: 'WIP: Save progress before next task',
|
|
109
|
+
});
|
|
110
|
+
try {
|
|
111
|
+
await commitChanges(message || 'WIP: Save progress before next task');
|
|
112
|
+
displaySuccess('Changes committed');
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
displayError(`Failed to commit: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
116
|
+
isProcessing = false;
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else if (action === 'stash') {
|
|
121
|
+
try {
|
|
122
|
+
const { exec } = await import('child_process');
|
|
123
|
+
const { promisify } = await import('util');
|
|
124
|
+
const execAsync = promisify(exec);
|
|
125
|
+
await execAsync('git stash push -m "jerad-auto-stash"');
|
|
126
|
+
displaySuccess('Changes stashed');
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
displayError(`Failed to stash: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
130
|
+
isProcessing = false;
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
console.log(chalk.gray('\nSkipping task. Waiting for changes to be committed...\n'));
|
|
136
|
+
isProcessing = false;
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
// User cancelled
|
|
142
|
+
isProcessing = false;
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
62
146
|
// Get full story with prompt
|
|
63
147
|
const fullStory = await api.getStory(projectConfig.projectId, story._id);
|
|
64
148
|
// Display task card
|
|
65
149
|
displayTaskCard(fullStory);
|
|
66
|
-
//
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
//
|
|
150
|
+
// Select execution mode
|
|
151
|
+
const modeSelection = await selectMode({
|
|
152
|
+
executionMode: fullStory.executionMode,
|
|
153
|
+
suggestedMode: fullStory.suggestedMode,
|
|
154
|
+
suggestedModeReason: fullStory.suggestedModeReason,
|
|
155
|
+
}, projectDefaultMode, cliModeFlag, options.yes);
|
|
156
|
+
console.log('');
|
|
157
|
+
console.log(chalk.gray(` Mode: ${getModeDisplay(modeSelection.mode)} (${modeSelection.source.replace(/_/g, ' ')})`));
|
|
158
|
+
console.log('');
|
|
159
|
+
// Ask user if they want to start (unless --yes flag)
|
|
160
|
+
let shouldStart = options.yes;
|
|
161
|
+
if (!shouldStart) {
|
|
162
|
+
try {
|
|
163
|
+
shouldStart = await confirmYN(`Start this task in ${getModeDisplay(modeSelection.mode)} mode?`, true);
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
shouldStart = false;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
76
169
|
lastProcessedStoryId = story._id;
|
|
77
|
-
if (
|
|
170
|
+
if (shouldStart) {
|
|
171
|
+
let branchName;
|
|
78
172
|
// Create git branch if enabled
|
|
79
|
-
if (
|
|
80
|
-
|
|
173
|
+
if (gitEnabled) {
|
|
174
|
+
branchName = createStoryBranchName(story._id, story.title);
|
|
81
175
|
displayBranchCreated(branchName);
|
|
82
176
|
try {
|
|
83
177
|
await createBranch(branchName);
|
|
84
|
-
// Update story with branch name
|
|
85
178
|
await api.updateStoryStatus(projectConfig.projectId, story._id, 'in_progress', branchName);
|
|
86
179
|
}
|
|
87
180
|
catch (error) {
|
|
88
181
|
displayWarning(`Could not create branch: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
182
|
+
// Continue without branch - will commit to current branch
|
|
183
|
+
branchName = await getCurrentBranch();
|
|
184
|
+
displayInfo(`Will commit to current branch: ${branchName}`);
|
|
89
185
|
}
|
|
90
186
|
}
|
|
91
|
-
//
|
|
92
|
-
|
|
187
|
+
// Generate CLAUDE.md with project context
|
|
188
|
+
await ensureClaudeMd(apiUrl, token || '', projectConfig.projectId, story._id, process.cwd());
|
|
189
|
+
// Start Claude Agent with React UI
|
|
190
|
+
console.log(chalk.cyan(`\n ${getModeEmoji(modeSelection.mode)} Starting Claude Agent in ${modeSelection.mode} mode...\n`));
|
|
93
191
|
try {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
192
|
+
// Track execution result
|
|
193
|
+
let executionSuccess = false;
|
|
194
|
+
let queuedUserMessages = [];
|
|
195
|
+
let commitResult;
|
|
196
|
+
// Render the React execution view (handles Git commit flow internally)
|
|
197
|
+
const { waitUntilExit } = render(React.createElement(ExecutionView, {
|
|
198
|
+
prompt: fullStory.prompt,
|
|
199
|
+
workingDir: process.cwd(),
|
|
200
|
+
mode: modeSelection.mode,
|
|
201
|
+
storyTitle: story.title,
|
|
202
|
+
storyId: story._id,
|
|
203
|
+
branchName: branchName,
|
|
204
|
+
onComplete: (success, queued, result) => {
|
|
205
|
+
executionSuccess = success;
|
|
206
|
+
queuedUserMessages = queued;
|
|
207
|
+
commitResult = result;
|
|
103
208
|
},
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
209
|
+
onMessage: (message) => {
|
|
210
|
+
// Sync to web app
|
|
211
|
+
sync.sendMessage(message, story._id);
|
|
212
|
+
},
|
|
213
|
+
}));
|
|
214
|
+
// Wait for execution to complete (including Git commit flow)
|
|
215
|
+
await waitUntilExit();
|
|
216
|
+
// Post-execution handling
|
|
217
|
+
if (executionSuccess) {
|
|
218
|
+
console.log(''); // New line after React UI
|
|
219
|
+
// Show queued messages if any
|
|
220
|
+
if (queuedUserMessages.length > 0) {
|
|
221
|
+
console.log(chalk.yellow('━'.repeat(60)));
|
|
222
|
+
console.log(chalk.yellow(' 📝 QUEUED USER MESSAGES'));
|
|
223
|
+
console.log(chalk.yellow('━'.repeat(60)));
|
|
224
|
+
console.log('');
|
|
225
|
+
queuedUserMessages.forEach((msg, i) => {
|
|
226
|
+
console.log(chalk.white(` ${i + 1}. ${msg.message}`));
|
|
227
|
+
});
|
|
228
|
+
console.log('');
|
|
229
|
+
}
|
|
230
|
+
// Move story to review if committed
|
|
231
|
+
if (commitResult?.committed) {
|
|
232
|
+
try {
|
|
233
|
+
await api.updateStoryStatus(projectConfig.projectId, story._id, 'review', commitResult.branchName || branchName);
|
|
234
|
+
displaySuccess('Story moved to Review');
|
|
235
|
+
sync.sendStatusChange(story._id, 'review', commitResult.branchName || branchName);
|
|
236
|
+
// Only clear processed ID if story was moved to review
|
|
237
|
+
// This allows picking up the next task
|
|
238
|
+
lastProcessedStoryId = null;
|
|
239
|
+
}
|
|
240
|
+
catch (error) {
|
|
241
|
+
displayWarning(`Could not update story status: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
242
|
+
// Still clear if status update failed but commit succeeded
|
|
243
|
+
// User will need to manually move story
|
|
244
|
+
lastProcessedStoryId = null;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
// If no commit was made, keep lastProcessedStoryId set
|
|
248
|
+
// This prevents re-processing the same in_progress story
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
// Execution failed
|
|
252
|
+
sync.sendError(story._id, 'Execution failed or was interrupted');
|
|
110
253
|
}
|
|
111
254
|
}
|
|
112
255
|
catch (error) {
|
|
113
|
-
displayError(`Claude
|
|
256
|
+
displayError(`Claude Agent error: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
257
|
+
sync.sendError(story._id, error instanceof Error ? error.message : 'Unknown error');
|
|
114
258
|
}
|
|
115
|
-
// Re-display
|
|
259
|
+
// Re-display status
|
|
116
260
|
console.log();
|
|
117
|
-
|
|
261
|
+
console.log(chalk.gray(' Status: Watching for tasks...\n'));
|
|
118
262
|
}
|
|
119
263
|
else {
|
|
120
|
-
// User declined
|
|
121
264
|
console.log(chalk.gray('\nWaiting for task status change...\n'));
|
|
122
265
|
}
|
|
123
|
-
// Done processing
|
|
124
266
|
isProcessing = false;
|
|
125
267
|
}
|
|
126
268
|
}
|
|
127
269
|
catch (error) {
|
|
128
|
-
// Reset processing flag on error
|
|
129
270
|
isProcessing = false;
|
|
130
|
-
// Silently handle polling errors to avoid spamming the console
|
|
131
271
|
if (process.env.DEBUG) {
|
|
132
272
|
console.error('Polling error:', error);
|
|
133
273
|
}
|
|
@@ -143,7 +283,6 @@ export const devCommand = new Command('dev')
|
|
|
143
283
|
console.log(chalk.gray('\n\nExiting dev mode...'));
|
|
144
284
|
process.exit(0);
|
|
145
285
|
});
|
|
146
|
-
// Keep the process running
|
|
147
286
|
console.log(chalk.gray(`Polling every ${pollInterval / 1000} seconds. Press Ctrl+C to exit.\n`));
|
|
148
287
|
});
|
|
149
288
|
//# sourceMappingURL=dev.js.map
|
package/dist/commands/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface ConfirmPromptProps {
|
|
2
|
+
message: string;
|
|
3
|
+
onConfirm: (confirmed: boolean) => void;
|
|
4
|
+
defaultValue?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function ConfirmPrompt({ message, onConfirm, defaultValue }: ConfirmPromptProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=ConfirmPrompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfirmPrompt.d.ts","sourceRoot":"","sources":["../../src/components/ConfirmPrompt.tsx"],"names":[],"mappings":"AAGA,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,YAAmB,EAAE,EAAE,kBAAkB,2CAsB5F"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text, useInput } from 'ink';
|
|
3
|
+
export function ConfirmPrompt({ message, onConfirm, defaultValue = true }) {
|
|
4
|
+
useInput((input) => {
|
|
5
|
+
const lower = input.toLowerCase();
|
|
6
|
+
if (lower === 'y') {
|
|
7
|
+
onConfirm(true);
|
|
8
|
+
}
|
|
9
|
+
else if (lower === 'n') {
|
|
10
|
+
onConfirm(false);
|
|
11
|
+
}
|
|
12
|
+
else if (input === '\r') {
|
|
13
|
+
// Enter key - use default
|
|
14
|
+
onConfirm(defaultValue);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
return (_jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: "? " }), _jsxs(Text, { children: [message, " "] }), _jsx(Text, { color: "gray", children: defaultValue ? '[Y/n]' : '[y/N]' })] }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=ConfirmPrompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfirmPrompt.js","sourceRoot":"","sources":["../../src/components/ConfirmPrompt.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAQ1C,MAAM,UAAU,aAAa,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,GAAG,IAAI,EAAsB;IAC3F,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,SAAS,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACzB,SAAS,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;aAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1B,0BAA0B;YAC1B,SAAS,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,mBAAU,EAC5B,MAAC,IAAI,eAAE,OAAO,SAAS,EACvB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YACf,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAC5B,IACH,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ExecutionMode } from '../lib/mode.js';
|
|
2
|
+
interface Story {
|
|
3
|
+
_id: string;
|
|
4
|
+
title: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
acceptanceCriteria?: string[];
|
|
7
|
+
notes?: string;
|
|
8
|
+
priority?: string;
|
|
9
|
+
prompt: string;
|
|
10
|
+
}
|
|
11
|
+
interface ProjectConfig {
|
|
12
|
+
projectId: string;
|
|
13
|
+
projectName: string;
|
|
14
|
+
}
|
|
15
|
+
interface DevAppProps {
|
|
16
|
+
story: Story;
|
|
17
|
+
mode: ExecutionMode;
|
|
18
|
+
modeSource: string;
|
|
19
|
+
project: ProjectConfig;
|
|
20
|
+
authMethod?: string;
|
|
21
|
+
authDetails?: string;
|
|
22
|
+
onComplete?: (success: boolean) => void;
|
|
23
|
+
onQueuedMessages?: (messages: Array<{
|
|
24
|
+
message: string;
|
|
25
|
+
timestamp: Date;
|
|
26
|
+
}>) => void;
|
|
27
|
+
}
|
|
28
|
+
export declare function DevApp({ story, mode, modeSource, project, authMethod, authDetails, onComplete, onQueuedMessages, }: DevAppProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=DevApp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevApp.d.ts","sourceRoot":"","sources":["../../src/components/DevApp.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,UAAU,KAAK;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,WAAW;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,IAAI,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;CACpF;AASD,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,IAAI,EACJ,UAAU,EACV,OAAO,EACP,UAAU,EACV,WAAW,EACX,UAAU,EACV,gBAAgB,GACjB,EAAE,WAAW,2CAgNb"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
3
|
+
import { Box, Text, useApp, useInput } from 'ink';
|
|
4
|
+
import { Header } from './Header.js';
|
|
5
|
+
import { TaskCard } from './TaskCard.js';
|
|
6
|
+
import { MessageList } from './MessageList.js';
|
|
7
|
+
import { StreamingText } from './StreamingText.js';
|
|
8
|
+
import { ToolUseDisplay } from './ToolUseDisplay.js';
|
|
9
|
+
import { Spinner } from './Spinner.js';
|
|
10
|
+
import { InputPrompt } from './InputPrompt.js';
|
|
11
|
+
import { ConfirmPrompt } from './ConfirmPrompt.js';
|
|
12
|
+
import { useClaudeAgent } from '../hooks/useClaudeAgent.js';
|
|
13
|
+
import { useMessageQueue } from '../hooks/useMessageQueue.js';
|
|
14
|
+
export function DevApp({ story, mode, modeSource, project, authMethod, authDetails, onComplete, onQueuedMessages, }) {
|
|
15
|
+
const { exit } = useApp();
|
|
16
|
+
const [state, setState] = useState('showing_task');
|
|
17
|
+
const [error, setError] = useState(null);
|
|
18
|
+
const [inputActive, setInputActive] = useState(false);
|
|
19
|
+
const [inputValue, setInputValue] = useState('');
|
|
20
|
+
const { messages, queuedUserMessages, addAssistantMessage, addSystemMessage, queueUserMessage, clearQueue, } = useMessageQueue();
|
|
21
|
+
const { isProcessing, currentTool, streamingText, sendPrompt, interrupt, } = useClaudeAgent({
|
|
22
|
+
workingDir: process.cwd(),
|
|
23
|
+
mode,
|
|
24
|
+
onMessage: (msg) => {
|
|
25
|
+
if (msg.role === 'assistant') {
|
|
26
|
+
addAssistantMessage(msg.content);
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
onComplete: () => {
|
|
30
|
+
setState('completed');
|
|
31
|
+
// Report queued messages
|
|
32
|
+
if (queuedUserMessages.length > 0) {
|
|
33
|
+
onQueuedMessages?.(queuedUserMessages.map(m => ({
|
|
34
|
+
message: m.message,
|
|
35
|
+
timestamp: m.timestamp,
|
|
36
|
+
})));
|
|
37
|
+
}
|
|
38
|
+
onComplete?.(true);
|
|
39
|
+
},
|
|
40
|
+
onError: (err) => {
|
|
41
|
+
setError(err.message);
|
|
42
|
+
setState('error');
|
|
43
|
+
onComplete?.(false);
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
// Handle keyboard input
|
|
47
|
+
useInput((input, key) => {
|
|
48
|
+
// Ctrl+C to exit
|
|
49
|
+
if (key.ctrl && input === 'c') {
|
|
50
|
+
if (isProcessing) {
|
|
51
|
+
interrupt();
|
|
52
|
+
}
|
|
53
|
+
exit();
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
// Esc to toggle input mode (only when executing)
|
|
57
|
+
if (key.escape && state === 'executing') {
|
|
58
|
+
if (inputActive) {
|
|
59
|
+
setInputValue('');
|
|
60
|
+
setInputActive(false);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
setInputActive(true);
|
|
64
|
+
}
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
// Start execution after brief delay to show task card
|
|
69
|
+
useEffect(() => {
|
|
70
|
+
if (state === 'showing_task') {
|
|
71
|
+
const timer = setTimeout(() => {
|
|
72
|
+
setState('confirming_start');
|
|
73
|
+
}, 1000);
|
|
74
|
+
return () => clearTimeout(timer);
|
|
75
|
+
}
|
|
76
|
+
}, [state]);
|
|
77
|
+
const handleStartConfirm = useCallback((confirmed) => {
|
|
78
|
+
if (confirmed) {
|
|
79
|
+
setState('executing');
|
|
80
|
+
addSystemMessage(`Starting execution in ${mode} mode...`);
|
|
81
|
+
sendPrompt(story.prompt);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
exit();
|
|
85
|
+
}
|
|
86
|
+
}, [mode, story.prompt, sendPrompt, addSystemMessage, exit]);
|
|
87
|
+
const handleUserInput = useCallback((value) => {
|
|
88
|
+
queueUserMessage(value);
|
|
89
|
+
addSystemMessage(`Message queued: "${value}"`);
|
|
90
|
+
}, [queueUserMessage, addSystemMessage]);
|
|
91
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Header, { projectName: project.projectName, mode: mode, authMethod: authMethod, authDetails: authDetails }), _jsx(TaskCard, { story: story }), _jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: "gray", children: "Mode: " }), _jsx(Text, { color: "cyan", children: mode }), _jsxs(Text, { color: "gray", children: [" (", modeSource.replace(/_/g, ' '), ")"] })] }), state === 'confirming_start' && (_jsx(ConfirmPrompt, { message: `Start this task in ${mode} mode?`, onConfirm: handleStartConfirm, defaultValue: true })), (state === 'executing' || state === 'completed') && (_jsxs(_Fragment, { children: [_jsx(Box, { marginY: 1, children: _jsx(Text, { color: "gray", children: '─'.repeat(60) }) }), _jsx(MessageList, { messages: messages }), streamingText && state === 'executing' && (_jsx(StreamingText, { text: streamingText })), currentTool && (_jsx(ToolUseDisplay, { toolName: currentTool.name, input: currentTool.input })), isProcessing && !streamingText && !currentTool && (_jsx(Spinner, { text: "Thinking..." })), state === 'executing' && (_jsx(InputPrompt, { isActive: inputActive, value: inputValue, onChange: setInputValue, onSubmit: (val) => {
|
|
92
|
+
handleUserInput(val);
|
|
93
|
+
setInputActive(false);
|
|
94
|
+
setInputValue('');
|
|
95
|
+
}, queueCount: queuedUserMessages.length })), state === 'completed' && (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: "gray", children: '─'.repeat(60) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "green", children: "\u2713 Task completed!" }) }), queuedUserMessages.length > 0 && (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { color: "yellow", children: ["Queued messages (", queuedUserMessages.length, "):"] }), queuedUserMessages.map((msg, i) => (_jsx(Box, { marginLeft: 2, children: _jsxs(Text, { color: "gray", children: [i + 1, ". ", msg.message] }) }, msg.id)))] }))] }))] })), state === 'error' && error && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "red", children: ["\u2717 Error: ", error] }) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", dimColor: true, children: isProcessing ? 'Ctrl+C to interrupt' : 'Ctrl+C to exit' }) })] }));
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=DevApp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevApp.js","sourceRoot":"","sources":["../../src/components/DevApp.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type SDKMessage } from '@anthropic-ai/claude-agent-sdk';
|
|
2
|
+
import { type ExecutionMode } from '../lib/mode.js';
|
|
3
|
+
interface QueuedMessage {
|
|
4
|
+
message: string;
|
|
5
|
+
timestamp: Date;
|
|
6
|
+
}
|
|
7
|
+
export interface CommitResult {
|
|
8
|
+
committed: boolean;
|
|
9
|
+
pushed: boolean;
|
|
10
|
+
commitMessage?: string;
|
|
11
|
+
branchName?: string;
|
|
12
|
+
}
|
|
13
|
+
interface ExecutionViewProps {
|
|
14
|
+
prompt: string;
|
|
15
|
+
workingDir: string;
|
|
16
|
+
mode: ExecutionMode;
|
|
17
|
+
storyTitle: string;
|
|
18
|
+
storyId: string;
|
|
19
|
+
branchName?: string;
|
|
20
|
+
onComplete: (success: boolean, queuedMessages: QueuedMessage[], commitResult?: CommitResult) => void;
|
|
21
|
+
onMessage?: (message: SDKMessage) => void;
|
|
22
|
+
}
|
|
23
|
+
export declare function ExecutionView({ prompt, workingDir, mode, storyTitle, storyId, branchName, onComplete, onMessage, }: ExecutionViewProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=ExecutionView.d.ts.map
|