wiggum-cli 0.12.1 → 0.13.1

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.
Files changed (37) hide show
  1. package/dist/index.js +7 -6
  2. package/dist/templates/prompts/PROMPT_review_auto.md.tmpl +19 -23
  3. package/dist/tui/app.d.ts +12 -22
  4. package/dist/tui/app.js +130 -314
  5. package/dist/tui/components/AppShell.d.ts +47 -0
  6. package/dist/tui/components/AppShell.js +19 -0
  7. package/dist/tui/components/FooterStatusBar.js +2 -3
  8. package/dist/tui/components/HeaderContent.d.ts +28 -0
  9. package/dist/tui/components/HeaderContent.js +16 -0
  10. package/dist/tui/components/MessageList.d.ts +9 -7
  11. package/dist/tui/components/MessageList.js +23 -17
  12. package/dist/tui/components/RunCompletionSummary.d.ts +22 -0
  13. package/dist/tui/components/RunCompletionSummary.js +23 -0
  14. package/dist/tui/components/SpecCompletionSummary.d.ts +47 -0
  15. package/dist/tui/components/SpecCompletionSummary.js +124 -0
  16. package/dist/tui/components/TipsBar.d.ts +24 -0
  17. package/dist/tui/components/TipsBar.js +23 -0
  18. package/dist/tui/components/WiggumBanner.js +8 -3
  19. package/dist/tui/hooks/useBackgroundRuns.d.ts +52 -0
  20. package/dist/tui/hooks/useBackgroundRuns.js +121 -0
  21. package/dist/tui/orchestration/interview-orchestrator.js +1 -1
  22. package/dist/tui/screens/InitScreen.d.ts +13 -8
  23. package/dist/tui/screens/InitScreen.js +86 -87
  24. package/dist/tui/screens/InterviewScreen.d.ts +11 -8
  25. package/dist/tui/screens/InterviewScreen.js +145 -99
  26. package/dist/tui/screens/MainShell.d.ts +13 -12
  27. package/dist/tui/screens/MainShell.js +65 -69
  28. package/dist/tui/screens/RunScreen.d.ts +17 -1
  29. package/dist/tui/screens/RunScreen.js +235 -80
  30. package/dist/tui/screens/index.d.ts +0 -2
  31. package/dist/tui/screens/index.js +0 -1
  32. package/dist/tui/utils/loop-status.d.ts +22 -3
  33. package/dist/tui/utils/loop-status.js +65 -15
  34. package/package.json +5 -1
  35. package/src/templates/prompts/PROMPT_review_auto.md.tmpl +19 -23
  36. package/dist/tui/screens/WelcomeScreen.d.ts +0 -44
  37. package/dist/tui/screens/WelcomeScreen.js +0 -54
@@ -64,27 +64,21 @@ EOF
64
64
  )"
65
65
  ```
66
66
 
67
- ### Step 4: Request Codex Review
67
+ ### Step 4: Request Claude Code Review
68
68
 
69
- Run automated code review using Codex CLI:
69
+ Run automated code review using Claude Code CLI:
70
70
 
71
71
  ```bash
72
- # Check if Codex CLI is installed
73
- if ! command -v codex &> /dev/null; then
74
- echo "WARNING: Codex CLI not installed. Manual review needed."
75
- cd {{appDir}} && gh pr comment --body "Manual review requested - Codex CLI not available. Install: brew install openai/tap/codex"
72
+ # Check if Claude Code CLI is installed
73
+ if ! command -v claude &> /dev/null; then
74
+ echo "WARNING: Claude Code CLI not installed. Manual review needed."
75
+ cd {{appDir}} && gh pr comment --body "Manual review requested - Claude Code CLI not available. Install: https://docs.anthropic.com/en/docs/claude-code/overview"
76
76
  else
77
- echo "Running Codex code review..."
78
- # Get diff summary for context
79
- DIFF_SUMMARY=$(cd {{appDir}} && git diff main --stat | head -50)
77
+ echo "Running Claude Code review..."
80
78
 
81
- # Use codex exec for non-interactive review
82
- echo "Code Review Request for $FEATURE feature.
79
+ cd {{appDir}} && claude -p "You are reviewing a PR for the $FEATURE feature.
83
80
 
84
- ## Changed Files:
85
- $DIFF_SUMMARY
86
-
87
- ## Review Checklist:
81
+ Review the git diff against main and check:
88
82
  - Code quality and patterns consistency
89
83
  - Test coverage adequacy
90
84
  - Potential bugs or edge cases
@@ -92,19 +86,21 @@ $DIFF_SUMMARY
92
86
  - Performance implications
93
87
  - Error handling completeness
94
88
 
95
- Please review and respond with:
89
+ Run: git diff main
90
+
91
+ Respond with:
96
92
  - APPROVED if everything looks good
97
- - Or list specific issues that need to be fixed" | cd {{appDir}} && codex exec --full-auto -
93
+ - Or list specific issues with file:line references that need to be fixed"
98
94
  fi
99
95
  ```
100
96
 
101
97
  **Handle review feedback:**
102
- - If Codex outputs "APPROVED" -> Proceed to Step 5 (rebase and merge)
103
- - If Codex lists issues:
98
+ - If Claude outputs "APPROVED" -> Proceed to Step 5 (rebase and merge)
99
+ - If Claude lists issues:
104
100
  1. Address each issue with code fixes
105
101
  2. Commit: `git -C {{appDir}} add -A && git -C {{appDir}} commit -m "fix($FEATURE): address review feedback"`
106
102
  3. Push: `git -C {{appDir}} push origin feat/$FEATURE`
107
- 4. Re-run the `codex review` command above
103
+ 4. Re-run the Claude review command above
108
104
  - Max 3 review iterations before requiring manual intervention
109
105
 
110
106
  ### Step 5: Rebase Before Merge (for Parallel Execution)
@@ -126,7 +122,7 @@ cd {{appDir}} && git push --force-with-lease origin feat/$FEATURE
126
122
  ```
127
123
 
128
124
  ### Step 6: Merge PR
129
- When Codex review is approved and branch is rebased:
125
+ When Claude review is approved and branch is rebased:
130
126
  ```bash
131
127
  cd {{appDir}} && gh pr merge --squash --delete-branch
132
128
  ```
@@ -145,7 +141,7 @@ cd {{appDir}} && gh pr merge --squash --delete-branch
145
141
  Note: Spec status updates are handled in the Spec Verification phase before PR creation.
146
142
 
147
143
  ## Rules
148
- - Do NOT merge without Codex approval
144
+ - Do NOT merge without Claude Code approval
149
145
  - Address ALL review comments before merging
150
146
  - Use squash merge to keep history clean
151
147
  - If gh CLI fails, check authentication: `gh auth status`
@@ -155,7 +151,7 @@ Note: Spec status updates are handled in the Spec Verification phase before PR c
155
151
  - **gh: command not found** -> Install GitHub CLI: `brew install gh`
156
152
  - **gh auth error** -> Run: `gh auth login`
157
153
  - **PR already exists** -> Use: `gh pr view` to see status
158
- - **Codex CLI not installed** -> Install with: `brew install openai/tap/codex`, then `codex login`
154
+ - **Claude Code CLI not installed** -> Install: `npm install -g @anthropic-ai/claude-code`
159
155
  - **Rebase conflicts** -> Resolve carefully, re-run all tests after
160
156
 
161
157
  ## Learning Capture
@@ -1,44 +0,0 @@
1
- /**
2
- * WelcomeScreen - Streamlined welcome screen
3
- *
4
- * Displays the Wiggum CLI banner with a compact status line.
5
- * No "Press Enter to continue" friction - boots directly to input-ready.
6
- */
7
- import React from 'react';
8
- import type { AIProvider } from '../../ai/providers.js';
9
- /**
10
- * Props for WelcomeScreen component
11
- */
12
- export interface WelcomeScreenProps {
13
- /** Current AI provider */
14
- provider: AIProvider | null;
15
- /** Current model ID */
16
- model: string;
17
- /** CLI version */
18
- version: string;
19
- /** Whether the project is initialized */
20
- isInitialized: boolean;
21
- /** Called when user presses Enter to continue */
22
- onContinue: () => void;
23
- }
24
- /**
25
- * WelcomeScreen component
26
- *
27
- * Displays a streamlined welcome screen with:
28
- * - ASCII art banner in Simpson yellow
29
- * - Compact status line: version │ model │ status
30
- * - Contextual tip for getting started
31
- * - No "Press Enter to continue" friction
32
- *
33
- * @example
34
- * ```tsx
35
- * <WelcomeScreen
36
- * provider="anthropic"
37
- * model="sonnet"
38
- * version="0.10.9"
39
- * isInitialized={true}
40
- * onContinue={() => navigate('shell')}
41
- * />
42
- * ```
43
- */
44
- export declare function WelcomeScreen({ provider, model, version, isInitialized, onContinue, }: WelcomeScreenProps): React.ReactElement;
@@ -1,54 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * WelcomeScreen - Streamlined welcome screen
4
- *
5
- * Displays the Wiggum CLI banner with a compact status line.
6
- * No "Press Enter to continue" friction - boots directly to input-ready.
7
- */
8
- import React from 'react';
9
- import { Box, Text } from 'ink';
10
- import { WiggumBanner } from '../components/WiggumBanner.js';
11
- import { colors, theme } from '../theme.js';
12
- /**
13
- * Get version from package.json (client-side compatible)
14
- */
15
- function getVersionDisplay(version) {
16
- return version || '0.5.0';
17
- }
18
- /**
19
- * WelcomeScreen component
20
- *
21
- * Displays a streamlined welcome screen with:
22
- * - ASCII art banner in Simpson yellow
23
- * - Compact status line: version │ model │ status
24
- * - Contextual tip for getting started
25
- * - No "Press Enter to continue" friction
26
- *
27
- * @example
28
- * ```tsx
29
- * <WelcomeScreen
30
- * provider="anthropic"
31
- * model="sonnet"
32
- * version="0.10.9"
33
- * isInitialized={true}
34
- * onContinue={() => navigate('shell')}
35
- * />
36
- * ```
37
- */
38
- export function WelcomeScreen({ provider, model, version, isInitialized, onContinue, }) {
39
- const versionDisplay = getVersionDisplay(version);
40
- const separator = theme.statusLine.separator;
41
- // Auto-continue after first render completes (no delay, banner persists naturally)
42
- React.useEffect(() => {
43
- // Let banner render, then continue on next tick
44
- const immediate = setImmediate(() => {
45
- onContinue();
46
- });
47
- return () => clearImmediate(immediate);
48
- }, [onContinue]);
49
- // Build status text
50
- const modelDisplay = provider ? `${provider}/${model}` : 'not configured';
51
- const statusText = isInitialized ? 'Ready' : 'Not initialized';
52
- const statusColor = isInitialized ? colors.green : colors.orange;
53
- return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(WiggumBanner, {}), _jsxs(Box, { marginTop: 1, flexDirection: "row", children: [_jsxs(Text, { color: colors.pink, children: ["v", versionDisplay] }), _jsx(Text, { dimColor: true, children: separator }), provider ? (_jsx(Text, { color: colors.blue, children: modelDisplay })) : (_jsx(Text, { color: colors.orange, children: modelDisplay })), _jsx(Text, { dimColor: true, children: separator }), _jsx(Text, { color: statusColor, children: statusText })] }), _jsx(Box, { marginTop: 2, children: _jsxs(Text, { dimColor: true, children: ["Tip: ", isInitialized ? '/new <feature> to create spec' : '/init to set up', ", /help for commands"] }) })] }));
54
- }