brainrot-cli 0.1.0 → 0.1.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.
- package/dist/AchievementNotification.d.ts.map +1 -1
- package/dist/AchievementNotification.js.map +1 -1
- package/dist/DynamicInterviewFlow.d.ts +66 -0
- package/dist/DynamicInterviewFlow.d.ts.map +1 -0
- package/dist/DynamicInterviewFlow.js +352 -0
- package/dist/DynamicInterviewFlow.js.map +1 -0
- package/dist/FeaturePromptScreen.d.ts +24 -0
- package/dist/FeaturePromptScreen.d.ts.map +1 -0
- package/dist/FeaturePromptScreen.js +117 -0
- package/dist/FeaturePromptScreen.js.map +1 -0
- package/dist/GameSelector.d.ts +9 -1
- package/dist/GameSelector.d.ts.map +1 -1
- package/dist/GameSelector.js +116 -19
- package/dist/GameSelector.js.map +1 -1
- package/dist/HelpOverlay.d.ts.map +1 -1
- package/dist/HelpOverlay.js +5 -2
- package/dist/HelpOverlay.js.map +1 -1
- package/dist/InterviewQuestion.d.ts +36 -0
- package/dist/InterviewQuestion.d.ts.map +1 -0
- package/dist/InterviewQuestion.js +148 -0
- package/dist/InterviewQuestion.js.map +1 -0
- package/dist/Layout.d.ts +1 -1
- package/dist/Layout.d.ts.map +1 -1
- package/dist/Layout.js +4 -4
- package/dist/Layout.js.map +1 -1
- package/dist/LogViewer.d.ts.map +1 -1
- package/dist/LogViewer.js +2 -2
- package/dist/LogViewer.js.map +1 -1
- package/dist/LoopAlertOverlay.d.ts +1 -1
- package/dist/LoopAlertOverlay.d.ts.map +1 -1
- package/dist/LoopAlertOverlay.js +1 -1
- package/dist/LoopAlertOverlay.js.map +1 -1
- package/dist/LoopManagementPanel.d.ts.map +1 -1
- package/dist/LoopManagementPanel.js.map +1 -1
- package/dist/OnboardingTutorial.d.ts +23 -0
- package/dist/OnboardingTutorial.d.ts.map +1 -0
- package/dist/OnboardingTutorial.js +165 -0
- package/dist/OnboardingTutorial.js.map +1 -0
- package/dist/PrdGenerationScreen.d.ts +43 -0
- package/dist/PrdGenerationScreen.d.ts.map +1 -0
- package/dist/PrdGenerationScreen.js +411 -0
- package/dist/PrdGenerationScreen.js.map +1 -0
- package/dist/PrdOverlay.d.ts +29 -0
- package/dist/PrdOverlay.d.ts.map +1 -0
- package/dist/PrdOverlay.js +174 -0
- package/dist/PrdOverlay.js.map +1 -0
- package/dist/PreStartReviewScreen.d.ts +29 -0
- package/dist/PreStartReviewScreen.d.ts.map +1 -0
- package/dist/PreStartReviewScreen.js +161 -0
- package/dist/PreStartReviewScreen.js.map +1 -0
- package/dist/ResumeOverlay.d.ts +26 -0
- package/dist/ResumeOverlay.d.ts.map +1 -0
- package/dist/ResumeOverlay.js +163 -0
- package/dist/ResumeOverlay.js.map +1 -0
- package/dist/SettingsMenu.d.ts.map +1 -1
- package/dist/SettingsMenu.js +14 -7
- package/dist/SettingsMenu.js.map +1 -1
- package/dist/SetupWizard.d.ts +41 -0
- package/dist/SetupWizard.d.ts.map +1 -0
- package/dist/SetupWizard.js +167 -0
- package/dist/SetupWizard.js.map +1 -0
- package/dist/SplitPane.d.ts.map +1 -1
- package/dist/SplitPane.js +6 -2
- package/dist/SplitPane.js.map +1 -1
- package/dist/StatsMenu.d.ts.map +1 -1
- package/dist/StatsMenu.js +24 -6
- package/dist/StatsMenu.js.map +1 -1
- package/dist/StatusBar.d.ts +45 -2
- package/dist/StatusBar.d.ts.map +1 -1
- package/dist/StatusBar.js +193 -23
- package/dist/StatusBar.js.map +1 -1
- package/dist/TaskBreakdownScreen.d.ts +27 -0
- package/dist/TaskBreakdownScreen.d.ts.map +1 -0
- package/dist/TaskBreakdownScreen.js +96 -0
- package/dist/TaskBreakdownScreen.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/games/MinesweeperGame.d.ts +1 -1
- package/dist/games/MinesweeperGame.d.ts.map +1 -1
- package/dist/games/MinesweeperGame.js +30 -10
- package/dist/games/MinesweeperGame.js.map +1 -1
- package/dist/games/PongGame.d.ts +1 -1
- package/dist/games/PongGame.d.ts.map +1 -1
- package/dist/games/PongGame.js +7 -2
- package/dist/games/PongGame.js.map +1 -1
- package/dist/games/SnakeGame.d.ts +1 -1
- package/dist/games/SnakeGame.d.ts.map +1 -1
- package/dist/games/SnakeGame.js +12 -4
- package/dist/games/SnakeGame.js.map +1 -1
- package/dist/games/TetrisGame.d.ts +1 -1
- package/dist/games/TetrisGame.d.ts.map +1 -1
- package/dist/games/TetrisGame.js +22 -5
- package/dist/games/TetrisGame.js.map +1 -1
- package/dist/high-scores.d.ts.map +1 -1
- package/dist/high-scores.js.map +1 -1
- package/dist/index.js +228 -15
- package/dist/index.js.map +1 -1
- package/dist/loop-state.d.ts +137 -0
- package/dist/loop-state.d.ts.map +1 -0
- package/dist/loop-state.js +228 -0
- package/dist/loop-state.js.map +1 -0
- package/dist/ralph-loop-parser.d.ts.map +1 -1
- package/dist/ralph-loop-parser.js +4 -2
- package/dist/ralph-loop-parser.js.map +1 -1
- package/dist/stats.d.ts.map +1 -1
- package/dist/stats.js.map +1 -1
- package/dist/styled-components.d.ts +1 -1
- package/dist/styled-components.d.ts.map +1 -1
- package/dist/styled-components.js +5 -3
- package/dist/styled-components.js.map +1 -1
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +15 -2
- package/dist/theme.js.map +1 -1
- package/dist/themes.d.ts.map +1 -1
- package/dist/themes.js.map +1 -1
- package/dist/use-claude-code.d.ts.map +1 -1
- package/dist/use-claude-code.js +7 -1
- package/dist/use-claude-code.js.map +1 -1
- package/dist/use-config.d.ts.map +1 -1
- package/dist/use-config.js.map +1 -1
- package/dist/use-loop-state.d.ts +55 -0
- package/dist/use-loop-state.d.ts.map +1 -0
- package/dist/use-loop-state.js +208 -0
- package/dist/use-loop-state.js.map +1 -0
- package/dist/use-stats.d.ts.map +1 -1
- package/dist/use-stats.js.map +1 -1
- package/dist/useTheme.d.ts.map +1 -1
- package/dist/useTheme.js.map +1 -1
- package/package.json +1 -1
- package/dist/__tests__/ralph-loop-parser.test.d.ts +0 -2
- package/dist/__tests__/ralph-loop-parser.test.d.ts.map +0 -1
- package/dist/__tests__/ralph-loop-parser.test.js +0 -143
- package/dist/__tests__/ralph-loop-parser.test.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AchievementNotification.d.ts","sourceRoot":"","sources":["../src/AchievementNotification.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,4BAA4B;IAC3C,iCAAiC;IACjC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkCD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,cAAc,EACd,UAAU,EACV,QAAe,GAChB,EAAE,4BAA4B,
|
|
1
|
+
{"version":3,"file":"AchievementNotification.d.ts","sourceRoot":"","sources":["../src/AchievementNotification.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,4BAA4B;IAC3C,iCAAiC;IACjC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkCD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,cAAc,EACd,UAAU,EACV,QAAe,GAChB,EAAE,4BAA4B,kDAgC9B;AAED;;GAEG;AACH,wBAAgB,2BAA2B;2BAIC,MAAM,EAAE;;;EAwBnD;AAED,eAAe,uBAAuB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AchievementNotification.js","sourceRoot":"","sources":["../src/AchievementNotification.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAoB,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAW/C;;GAEG;AACH,SAAS,iBAAiB,CAAC,EAAE,WAAW,EAAgC;IACtE,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAEhC,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAE,MAAM,CAAC,OAAO,EAC3B,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,CAAC,EACX,UAAU,EAAC,QAAQ,aAEnB,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,mBAC9B,WAAW,CAAC,IAAI,4BAAwB,WAAW,CAAC,IAAI,IACpD,GACH,EACN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YAC7B,WAAW,CAAC,IAAI,GACZ,GACH,EACN,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,QAAQ,kBAAE,WAAW,CAAC,WAAW,GAAQ,GAC3C,IACF,CACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,EACtC,cAAc,EACd,UAAU,EACV,QAAQ,GAAG,IAAI,GACc;IAC7B,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"AchievementNotification.js","sourceRoot":"","sources":["../src/AchievementNotification.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic Interview Flow Component
|
|
3
|
+
*
|
|
4
|
+
* Manages a multi-question interview flow with dynamic question generation.
|
|
5
|
+
* Questions cover: scope, users, technical constraints, integration, success criteria, edge cases, priorities.
|
|
6
|
+
* Progress indicator shows 'Question X of ~Y' (approximate since questions may be added/removed).
|
|
7
|
+
*/
|
|
8
|
+
import { type InterviewOption } from "./InterviewQuestion.js";
|
|
9
|
+
/** Question category for organizing interview flow */
|
|
10
|
+
export type QuestionCategory = "scope" | "users" | "technical" | "integration" | "success" | "edge_cases" | "priorities";
|
|
11
|
+
/** A single interview question definition */
|
|
12
|
+
export interface InterviewQuestionDef {
|
|
13
|
+
/** Unique question identifier */
|
|
14
|
+
id: string;
|
|
15
|
+
/** Question category */
|
|
16
|
+
category: QuestionCategory;
|
|
17
|
+
/** The question text */
|
|
18
|
+
question: string;
|
|
19
|
+
/** Header displayed above the question */
|
|
20
|
+
header: string;
|
|
21
|
+
/** Pre-defined answer options (A-D) */
|
|
22
|
+
options: InterviewOption[];
|
|
23
|
+
/** Whether this question can trigger follow-up questions */
|
|
24
|
+
canTriggerFollowUp?: boolean;
|
|
25
|
+
/** Condition for showing this question (based on previous answers) */
|
|
26
|
+
showIf?: (answers: InterviewAnswers) => boolean;
|
|
27
|
+
}
|
|
28
|
+
/** User's answer to a question */
|
|
29
|
+
export interface InterviewAnswer {
|
|
30
|
+
questionId: string;
|
|
31
|
+
answer: string;
|
|
32
|
+
timestamp: string;
|
|
33
|
+
}
|
|
34
|
+
/** Map of all collected answers */
|
|
35
|
+
export type InterviewAnswers = Record<string, string>;
|
|
36
|
+
/** Complete interview result */
|
|
37
|
+
export interface InterviewResult {
|
|
38
|
+
/** All answers collected */
|
|
39
|
+
answers: InterviewAnswers;
|
|
40
|
+
/** Original feature description */
|
|
41
|
+
featureDescription: string;
|
|
42
|
+
/** Estimated complexity */
|
|
43
|
+
complexity: "small" | "medium" | "large";
|
|
44
|
+
/** Summary generated from answers */
|
|
45
|
+
summary: string;
|
|
46
|
+
}
|
|
47
|
+
export interface DynamicInterviewFlowProps {
|
|
48
|
+
/** Whether the component is visible */
|
|
49
|
+
isVisible: boolean;
|
|
50
|
+
/** The feature description entered by user */
|
|
51
|
+
featureDescription: string;
|
|
52
|
+
/** Callback when interview is complete */
|
|
53
|
+
onComplete: (result: InterviewResult) => void;
|
|
54
|
+
/** Callback when user wants to go back */
|
|
55
|
+
onBack?: () => void;
|
|
56
|
+
/** Whether the component has focus */
|
|
57
|
+
hasFocus: boolean;
|
|
58
|
+
/** Terminal dimensions for centering */
|
|
59
|
+
dimensions?: {
|
|
60
|
+
width: number;
|
|
61
|
+
height: number;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export declare function DynamicInterviewFlow({ isVisible, featureDescription, onComplete, onBack, hasFocus, dimensions, }: DynamicInterviewFlowProps): import("react/jsx-runtime").JSX.Element | null;
|
|
65
|
+
export default DynamicInterviewFlow;
|
|
66
|
+
//# sourceMappingURL=DynamicInterviewFlow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamicInterviewFlow.d.ts","sourceRoot":"","sources":["../src/DynamicInterviewFlow.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAMhC,sDAAsD;AACtD,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP,OAAO,GACP,WAAW,GACX,aAAa,GACb,SAAS,GACT,YAAY,GACZ,YAAY,CAAC;AAEjB,6CAA6C;AAC7C,MAAM,WAAW,oBAAoB;IACnC,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,wBAAwB;IACxB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,sEAAsE;IACtE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC;CACjD;AAED,kCAAkC;AAClC,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,mCAAmC;AACnC,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEtD,gCAAgC;AAChC,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,mCAAmC;IACnC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2BAA2B;IAC3B,UAAU,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACzC,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,uCAAuC;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0CAA0C;IAC1C,UAAU,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC9C,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,sCAAsC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,wCAAwC;IACxC,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAiUD,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,kBAAkB,EAClB,UAAU,EACV,MAAM,EACN,QAAQ,EACR,UAAU,GACX,EAAE,yBAAyB,kDA2I3B;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Dynamic Interview Flow Component
|
|
4
|
+
*
|
|
5
|
+
* Manages a multi-question interview flow with dynamic question generation.
|
|
6
|
+
* Questions cover: scope, users, technical constraints, integration, success criteria, edge cases, priorities.
|
|
7
|
+
* Progress indicator shows 'Question X of ~Y' (approximate since questions may be added/removed).
|
|
8
|
+
*/
|
|
9
|
+
import { Box, Text } from "ink";
|
|
10
|
+
import { useState, useCallback, useMemo, useEffect } from "react";
|
|
11
|
+
import { useThemeColors } from "./useTheme.js";
|
|
12
|
+
import { navIcons } from "./theme.js";
|
|
13
|
+
import { InterviewQuestion, } from "./InterviewQuestion.js";
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// QUESTION TEMPLATES
|
|
16
|
+
// ============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Core interview questions covering all required topics.
|
|
19
|
+
* Questions are ordered by priority and may be conditionally shown.
|
|
20
|
+
*/
|
|
21
|
+
const CORE_QUESTIONS = [
|
|
22
|
+
// Scope questions
|
|
23
|
+
{
|
|
24
|
+
id: "scope_type",
|
|
25
|
+
category: "scope",
|
|
26
|
+
question: "What type of project is this?",
|
|
27
|
+
header: "Project Scope",
|
|
28
|
+
options: [
|
|
29
|
+
{ label: "Web application (frontend/fullstack)", value: "web" },
|
|
30
|
+
{ label: "Backend API or service", value: "backend" },
|
|
31
|
+
{ label: "CLI tool or script", value: "cli" },
|
|
32
|
+
{ label: "Mobile app", value: "mobile" },
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
id: "scope_size",
|
|
37
|
+
category: "scope",
|
|
38
|
+
question: "How would you describe the scope of this feature?",
|
|
39
|
+
header: "Feature Size",
|
|
40
|
+
options: [
|
|
41
|
+
{ label: "Small - single file or function", value: "small" },
|
|
42
|
+
{ label: "Medium - multiple files/components", value: "medium" },
|
|
43
|
+
{ label: "Large - new system or major changes", value: "large" },
|
|
44
|
+
{ label: "Unclear - need to explore first", value: "unclear" },
|
|
45
|
+
],
|
|
46
|
+
canTriggerFollowUp: true,
|
|
47
|
+
},
|
|
48
|
+
// User questions
|
|
49
|
+
{
|
|
50
|
+
id: "users_primary",
|
|
51
|
+
category: "users",
|
|
52
|
+
question: "Who is the primary user of this feature?",
|
|
53
|
+
header: "Target Users",
|
|
54
|
+
options: [
|
|
55
|
+
{ label: "End users (customers)", value: "end_users" },
|
|
56
|
+
{ label: "Developers (internal/external)", value: "developers" },
|
|
57
|
+
{ label: "Admins or operators", value: "admins" },
|
|
58
|
+
{ label: "Automated systems/services", value: "automated" },
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
// Technical constraints
|
|
62
|
+
{
|
|
63
|
+
id: "tech_constraints",
|
|
64
|
+
category: "technical",
|
|
65
|
+
question: "Are there specific technical constraints to consider?",
|
|
66
|
+
header: "Technical Constraints",
|
|
67
|
+
options: [
|
|
68
|
+
{
|
|
69
|
+
label: "Must use existing codebase patterns",
|
|
70
|
+
value: "existing_patterns",
|
|
71
|
+
},
|
|
72
|
+
{ label: "Performance is critical", value: "performance" },
|
|
73
|
+
{ label: "Security/authentication required", value: "security" },
|
|
74
|
+
{ label: "No specific constraints", value: "none" },
|
|
75
|
+
],
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: "tech_testing",
|
|
79
|
+
category: "technical",
|
|
80
|
+
question: "What testing approach should be used?",
|
|
81
|
+
header: "Testing Strategy",
|
|
82
|
+
options: [
|
|
83
|
+
{ label: "Unit tests for core logic", value: "unit" },
|
|
84
|
+
{ label: "Integration/E2E tests", value: "integration" },
|
|
85
|
+
{ label: "Both unit and integration", value: "both" },
|
|
86
|
+
{ label: "Manual testing only", value: "manual" },
|
|
87
|
+
],
|
|
88
|
+
showIf: (answers) => answers.scope_size !== "small",
|
|
89
|
+
},
|
|
90
|
+
// Integration
|
|
91
|
+
{
|
|
92
|
+
id: "integration_external",
|
|
93
|
+
category: "integration",
|
|
94
|
+
question: "Does this feature need to integrate with external services?",
|
|
95
|
+
header: "External Integration",
|
|
96
|
+
options: [
|
|
97
|
+
{ label: "Yes - APIs/third-party services", value: "external_api" },
|
|
98
|
+
{ label: "Yes - database/storage", value: "database" },
|
|
99
|
+
{ label: "Yes - authentication provider", value: "auth" },
|
|
100
|
+
{ label: "No external integrations needed", value: "none" },
|
|
101
|
+
],
|
|
102
|
+
showIf: (answers) => answers.scope_type !== "cli",
|
|
103
|
+
},
|
|
104
|
+
// Success criteria
|
|
105
|
+
{
|
|
106
|
+
id: "success_criteria",
|
|
107
|
+
category: "success",
|
|
108
|
+
question: "How will you know when this feature is complete?",
|
|
109
|
+
header: "Success Criteria",
|
|
110
|
+
options: [
|
|
111
|
+
{ label: "All tests pass", value: "tests" },
|
|
112
|
+
{ label: "Feature works as specified", value: "functional" },
|
|
113
|
+
{ label: "Code reviewed and merged", value: "merged" },
|
|
114
|
+
{ label: "Deployed to production", value: "deployed" },
|
|
115
|
+
],
|
|
116
|
+
},
|
|
117
|
+
// Edge cases
|
|
118
|
+
{
|
|
119
|
+
id: "edge_cases",
|
|
120
|
+
category: "edge_cases",
|
|
121
|
+
question: "What edge cases should be handled?",
|
|
122
|
+
header: "Edge Cases",
|
|
123
|
+
options: [
|
|
124
|
+
{ label: "Error handling and recovery", value: "errors" },
|
|
125
|
+
{ label: "Empty/null input handling", value: "empty_input" },
|
|
126
|
+
{ label: "Performance under load", value: "load" },
|
|
127
|
+
{ label: "All of the above", value: "all" },
|
|
128
|
+
],
|
|
129
|
+
showIf: (answers) => answers.scope_size !== "small",
|
|
130
|
+
},
|
|
131
|
+
// Priorities
|
|
132
|
+
{
|
|
133
|
+
id: "priority_focus",
|
|
134
|
+
category: "priorities",
|
|
135
|
+
question: "What should Claude prioritize?",
|
|
136
|
+
header: "Priority Focus",
|
|
137
|
+
options: [
|
|
138
|
+
{ label: "Code quality and maintainability", value: "quality" },
|
|
139
|
+
{ label: "Speed of implementation", value: "speed" },
|
|
140
|
+
{ label: "Comprehensive documentation", value: "docs" },
|
|
141
|
+
{ label: "Balance all aspects equally", value: "balanced" },
|
|
142
|
+
],
|
|
143
|
+
},
|
|
144
|
+
];
|
|
145
|
+
/**
|
|
146
|
+
* Follow-up questions that may be added based on answers
|
|
147
|
+
*/
|
|
148
|
+
const FOLLOWUP_QUESTIONS = [
|
|
149
|
+
{
|
|
150
|
+
id: "scope_clarify",
|
|
151
|
+
category: "scope",
|
|
152
|
+
question: "Can you be more specific about the scope?",
|
|
153
|
+
header: "Scope Clarification",
|
|
154
|
+
options: [
|
|
155
|
+
{ label: "It's a new feature from scratch", value: "new" },
|
|
156
|
+
{ label: "Extending existing functionality", value: "extend" },
|
|
157
|
+
{ label: "Refactoring/improving existing code", value: "refactor" },
|
|
158
|
+
{ label: "Fixing a bug or issue", value: "bugfix" },
|
|
159
|
+
],
|
|
160
|
+
showIf: (answers) => answers.scope_size === "unclear",
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
id: "security_details",
|
|
164
|
+
category: "technical",
|
|
165
|
+
question: "What security considerations are important?",
|
|
166
|
+
header: "Security Details",
|
|
167
|
+
options: [
|
|
168
|
+
{ label: "User authentication/authorization", value: "auth" },
|
|
169
|
+
{ label: "Data encryption/privacy", value: "encryption" },
|
|
170
|
+
{ label: "Input validation/sanitization", value: "validation" },
|
|
171
|
+
{ label: "All security best practices", value: "all" },
|
|
172
|
+
],
|
|
173
|
+
showIf: (answers) => answers.tech_constraints === "security",
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
id: "performance_targets",
|
|
177
|
+
category: "technical",
|
|
178
|
+
question: "What performance targets should be met?",
|
|
179
|
+
header: "Performance Goals",
|
|
180
|
+
options: [
|
|
181
|
+
{ label: "Sub-second response times", value: "fast" },
|
|
182
|
+
{ label: "Handle high concurrent load", value: "scalable" },
|
|
183
|
+
{ label: "Minimize memory usage", value: "memory" },
|
|
184
|
+
{ label: "General optimization", value: "general" },
|
|
185
|
+
],
|
|
186
|
+
showIf: (answers) => answers.tech_constraints === "performance",
|
|
187
|
+
},
|
|
188
|
+
];
|
|
189
|
+
// ============================================================================
|
|
190
|
+
// HELPER FUNCTIONS
|
|
191
|
+
// ============================================================================
|
|
192
|
+
/**
|
|
193
|
+
* Calculate interview complexity based on feature description
|
|
194
|
+
*/
|
|
195
|
+
function estimateComplexity(featureDescription) {
|
|
196
|
+
const words = featureDescription.split(/\s+/).length;
|
|
197
|
+
const hasComplexKeywords = /system|integration|auth|api|database|migration/i.test(featureDescription);
|
|
198
|
+
if (words > 50 || hasComplexKeywords) {
|
|
199
|
+
return "large";
|
|
200
|
+
}
|
|
201
|
+
else if (words > 20) {
|
|
202
|
+
return "medium";
|
|
203
|
+
}
|
|
204
|
+
return "small";
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Determine which questions to show based on answers and complexity
|
|
208
|
+
*/
|
|
209
|
+
function getActiveQuestions(answers, complexity) {
|
|
210
|
+
// Start with core questions
|
|
211
|
+
let questions = [...CORE_QUESTIONS];
|
|
212
|
+
// Add follow-up questions based on answers
|
|
213
|
+
for (const followUp of FOLLOWUP_QUESTIONS) {
|
|
214
|
+
if (followUp.showIf && followUp.showIf(answers)) {
|
|
215
|
+
// Insert follow-up after related question
|
|
216
|
+
const relatedIdx = questions.findIndex((q) => q.category === followUp.category);
|
|
217
|
+
if (relatedIdx >= 0) {
|
|
218
|
+
questions.splice(relatedIdx + 1, 0, followUp);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
questions.push(followUp);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// Filter out questions that shouldn't be shown
|
|
226
|
+
questions = questions.filter((q) => {
|
|
227
|
+
if (q.showIf) {
|
|
228
|
+
return q.showIf(answers);
|
|
229
|
+
}
|
|
230
|
+
return true;
|
|
231
|
+
});
|
|
232
|
+
// For small complexity, reduce questions
|
|
233
|
+
if (complexity === "small") {
|
|
234
|
+
// Keep only essential questions for small features
|
|
235
|
+
const essentialIds = [
|
|
236
|
+
"scope_type",
|
|
237
|
+
"scope_size",
|
|
238
|
+
"users_primary",
|
|
239
|
+
"success_criteria",
|
|
240
|
+
"priority_focus",
|
|
241
|
+
];
|
|
242
|
+
questions = questions.filter((q) => essentialIds.includes(q.id) || q.showIf?.(answers));
|
|
243
|
+
}
|
|
244
|
+
return questions;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Generate a summary from interview answers
|
|
248
|
+
*/
|
|
249
|
+
function generateSummary(answers) {
|
|
250
|
+
const parts = [];
|
|
251
|
+
if (answers.scope_type) {
|
|
252
|
+
parts.push(`Project type: ${answers.scope_type}`);
|
|
253
|
+
}
|
|
254
|
+
if (answers.scope_size) {
|
|
255
|
+
parts.push(`Scope: ${answers.scope_size}`);
|
|
256
|
+
}
|
|
257
|
+
if (answers.users_primary) {
|
|
258
|
+
parts.push(`Target users: ${answers.users_primary}`);
|
|
259
|
+
}
|
|
260
|
+
if (answers.priority_focus) {
|
|
261
|
+
parts.push(`Priority: ${answers.priority_focus}`);
|
|
262
|
+
}
|
|
263
|
+
return parts.join(" | ");
|
|
264
|
+
}
|
|
265
|
+
function ProgressIndicator({ current, estimated, colors, }) {
|
|
266
|
+
// Show approximate with ~ since questions may change
|
|
267
|
+
const progressText = `Question ${current} of ~${estimated}`;
|
|
268
|
+
const percentage = Math.round((current / estimated) * 100);
|
|
269
|
+
// Visual progress bar
|
|
270
|
+
const barWidth = 20;
|
|
271
|
+
const filled = Math.round((current / estimated) * barWidth);
|
|
272
|
+
const empty = barWidth - filled;
|
|
273
|
+
const bar = `${"█".repeat(filled)}${"░".repeat(empty)}`;
|
|
274
|
+
return (_jsxs(Box, { flexDirection: "column", alignItems: "center", marginBottom: 1, children: [_jsx(Text, { color: colors.secondary, children: progressText }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: colors.primary, children: bar }), _jsxs(Text, { color: colors.textMuted, children: [" ", percentage, "%"] })] })] }));
|
|
275
|
+
}
|
|
276
|
+
// ============================================================================
|
|
277
|
+
// MAIN COMPONENT
|
|
278
|
+
// ============================================================================
|
|
279
|
+
export function DynamicInterviewFlow({ isVisible, featureDescription, onComplete, onBack, hasFocus, dimensions, }) {
|
|
280
|
+
const colors = useThemeColors();
|
|
281
|
+
// Track current question index and answers
|
|
282
|
+
const [currentIndex, setCurrentIndex] = useState(0);
|
|
283
|
+
const [answers, setAnswers] = useState({});
|
|
284
|
+
// Calculate complexity from feature description
|
|
285
|
+
const complexity = useMemo(() => estimateComplexity(featureDescription), [featureDescription]);
|
|
286
|
+
// Get active questions based on current answers and complexity
|
|
287
|
+
const activeQuestions = useMemo(() => getActiveQuestions(answers, complexity), [answers, complexity]);
|
|
288
|
+
// Current question
|
|
289
|
+
const currentQuestion = activeQuestions[currentIndex];
|
|
290
|
+
// Estimated total (may change as answers are given)
|
|
291
|
+
const estimatedTotal = activeQuestions.length;
|
|
292
|
+
// Handle answer submission
|
|
293
|
+
const handleAnswer = useCallback((answer) => {
|
|
294
|
+
if (!currentQuestion)
|
|
295
|
+
return;
|
|
296
|
+
// Store answer
|
|
297
|
+
const newAnswers = {
|
|
298
|
+
...answers,
|
|
299
|
+
[currentQuestion.id]: answer,
|
|
300
|
+
};
|
|
301
|
+
setAnswers(newAnswers);
|
|
302
|
+
// Check if this is the last question
|
|
303
|
+
const updatedQuestions = getActiveQuestions(newAnswers, complexity);
|
|
304
|
+
const nextIndex = currentIndex + 1;
|
|
305
|
+
if (nextIndex >= updatedQuestions.length) {
|
|
306
|
+
// Interview complete
|
|
307
|
+
const result = {
|
|
308
|
+
answers: newAnswers,
|
|
309
|
+
featureDescription,
|
|
310
|
+
complexity: newAnswers.scope_size ||
|
|
311
|
+
complexity,
|
|
312
|
+
summary: generateSummary(newAnswers),
|
|
313
|
+
};
|
|
314
|
+
onComplete(result);
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
// Move to next question
|
|
318
|
+
setCurrentIndex(nextIndex);
|
|
319
|
+
}
|
|
320
|
+
}, [
|
|
321
|
+
currentQuestion,
|
|
322
|
+
answers,
|
|
323
|
+
currentIndex,
|
|
324
|
+
complexity,
|
|
325
|
+
featureDescription,
|
|
326
|
+
onComplete,
|
|
327
|
+
]);
|
|
328
|
+
// Handle going back to previous question
|
|
329
|
+
const handleBack = useCallback(() => {
|
|
330
|
+
if (currentIndex > 0) {
|
|
331
|
+
setCurrentIndex(currentIndex - 1);
|
|
332
|
+
}
|
|
333
|
+
else if (onBack) {
|
|
334
|
+
onBack();
|
|
335
|
+
}
|
|
336
|
+
}, [currentIndex, onBack]);
|
|
337
|
+
// Reset when interview starts
|
|
338
|
+
useEffect(() => {
|
|
339
|
+
if (isVisible) {
|
|
340
|
+
setCurrentIndex(0);
|
|
341
|
+
setAnswers({});
|
|
342
|
+
}
|
|
343
|
+
}, [isVisible, featureDescription]);
|
|
344
|
+
if (!isVisible || !currentQuestion) {
|
|
345
|
+
return null;
|
|
346
|
+
}
|
|
347
|
+
return (_jsxs(Box, { flexDirection: "column", alignItems: "center", justifyContent: "center", width: "100%", height: "100%", children: [_jsx(ProgressIndicator, { current: currentIndex + 1, estimated: estimatedTotal, colors: colors }), _jsx(Box, { marginBottom: 1, children: _jsxs(Text, { dimColor: true, children: [navIcons.bullet, " ", currentQuestion.category.toUpperCase().replace("_", " "), " ", navIcons.bullet] }) }), _jsx(InterviewQuestion, { isVisible: true, question: currentQuestion.question, header: currentQuestion.header, options: currentQuestion.options, onAnswer: handleAnswer, onBack: handleBack, hasFocus: hasFocus, dimensions: dimensions }), _jsx(Box, { marginTop: 2, paddingX: 2, width: Math.min(70, (dimensions?.width ?? 80) - 4), children: _jsxs(Text, { dimColor: true, italic: true, children: ["Building:", " ", featureDescription.length > 50
|
|
348
|
+
? featureDescription.slice(0, 50) + "..."
|
|
349
|
+
: featureDescription] }) })] }));
|
|
350
|
+
}
|
|
351
|
+
export default DynamicInterviewFlow;
|
|
352
|
+
//# sourceMappingURL=DynamicInterviewFlow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamicInterviewFlow.js","sourceRoot":"","sources":["../src/DynamicInterviewFlow.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Prompt Screen Component
|
|
3
|
+
*
|
|
4
|
+
* Full-screen modal that asks the user for a feature description.
|
|
5
|
+
* Part of the setup wizard flow after onboarding tutorial.
|
|
6
|
+
*/
|
|
7
|
+
export interface FeaturePromptScreenProps {
|
|
8
|
+
/** Whether the screen is visible */
|
|
9
|
+
isVisible: boolean;
|
|
10
|
+
/** Callback when feature prompt is submitted */
|
|
11
|
+
onComplete: (prompt: string) => void;
|
|
12
|
+
/** Callback when user wants to go back */
|
|
13
|
+
onBack?: () => void;
|
|
14
|
+
/** Whether the component has focus */
|
|
15
|
+
hasFocus: boolean;
|
|
16
|
+
/** Terminal dimensions for centering */
|
|
17
|
+
dimensions?: {
|
|
18
|
+
width: number;
|
|
19
|
+
height: number;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export declare function FeaturePromptScreen({ isVisible, onComplete, onBack, hasFocus, dimensions, }: FeaturePromptScreenProps): import("react/jsx-runtime").JSX.Element | null;
|
|
23
|
+
export default FeaturePromptScreen;
|
|
24
|
+
//# sourceMappingURL=FeaturePromptScreen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeaturePromptScreen.d.ts","sourceRoot":"","sources":["../src/FeaturePromptScreen.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,MAAM,WAAW,wBAAwB;IACvC,oCAAoC;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,sCAAsC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,wCAAwC;IACxC,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AA2JD,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,UAAU,EACV,MAAM,EACN,QAAQ,EACR,UAAU,GACX,EAAE,wBAAwB,kDA+H1B;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Feature Prompt Screen Component
|
|
4
|
+
*
|
|
5
|
+
* Full-screen modal that asks the user for a feature description.
|
|
6
|
+
* Part of the setup wizard flow after onboarding tutorial.
|
|
7
|
+
*/
|
|
8
|
+
import { Box, Text, useInput } from "ink";
|
|
9
|
+
import { useState, useCallback, useMemo } from "react";
|
|
10
|
+
import { useThemeColors } from "./useTheme.js";
|
|
11
|
+
import { navIcons, decorChars } from "./theme.js";
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// CONSTANTS
|
|
14
|
+
// ============================================================================
|
|
15
|
+
const MIN_CHARS = 10;
|
|
16
|
+
const PLACEHOLDER_EXAMPLES = [
|
|
17
|
+
"Build a user authentication system with JWT",
|
|
18
|
+
"Create a REST API for task management",
|
|
19
|
+
"Implement a real-time chat feature",
|
|
20
|
+
"Add dark mode support to the UI",
|
|
21
|
+
];
|
|
22
|
+
function InputDisplay({ value, colors, width }) {
|
|
23
|
+
const displayWidth = Math.max(width - 4, 30);
|
|
24
|
+
const cursorChar = "▌";
|
|
25
|
+
// Show placeholder when empty
|
|
26
|
+
if (!value) {
|
|
27
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { borderStyle: "single", borderColor: colors.borderFocus, paddingX: 1, width: displayWidth, children: [_jsx(Text, { dimColor: true, italic: true, children: PLACEHOLDER_EXAMPLES[0] }), _jsx(Text, { color: colors.primary, children: cursorChar })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, italic: true, children: "Examples:" }) }), PLACEHOLDER_EXAMPLES.slice(1).map((example, i) => (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { dimColor: true, children: [navIcons.bullet, " ", example] }) }, i)))] }));
|
|
28
|
+
}
|
|
29
|
+
// Show input with cursor
|
|
30
|
+
// Wrap text if it exceeds display width
|
|
31
|
+
const maxTextWidth = displayWidth - 4; // Account for padding and cursor
|
|
32
|
+
const lines = [];
|
|
33
|
+
let remaining = value;
|
|
34
|
+
while (remaining.length > 0) {
|
|
35
|
+
if (remaining.length <= maxTextWidth) {
|
|
36
|
+
lines.push(remaining);
|
|
37
|
+
remaining = "";
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
// Find a good break point (space) or just cut
|
|
41
|
+
const breakPoint = remaining.lastIndexOf(" ", maxTextWidth);
|
|
42
|
+
const cutPoint = breakPoint > maxTextWidth / 2 ? breakPoint : maxTextWidth;
|
|
43
|
+
lines.push(remaining.slice(0, cutPoint));
|
|
44
|
+
remaining = remaining.slice(cutPoint).trimStart();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return (_jsx(Box, { borderStyle: "single", borderColor: colors.borderFocus, paddingX: 1, width: displayWidth, flexDirection: "column", children: lines.map((line, i) => (_jsxs(Box, { children: [_jsx(Text, { color: colors.text, children: line }), i === lines.length - 1 && (_jsx(Text, { color: colors.primary, children: cursorChar }))] }, i))) }));
|
|
48
|
+
}
|
|
49
|
+
function ValidationMessage({ charCount, colors, showError, }) {
|
|
50
|
+
const remaining = MIN_CHARS - charCount;
|
|
51
|
+
const isValid = charCount >= MIN_CHARS;
|
|
52
|
+
return (_jsxs(Box, { marginTop: 1, justifyContent: "space-between", width: "100%", children: [_jsx(Box, { children: showError && !isValid && (_jsxs(Text, { color: colors.error, children: [navIcons.arrowRight, " Minimum ", MIN_CHARS, " characters required"] })) }), _jsx(Box, { children: _jsxs(Text, { color: isValid ? colors.success : colors.textMuted, children: [charCount, " / ", MIN_CHARS, isValid && " ✓", !isValid && ` (${remaining} more)`] }) })] }));
|
|
53
|
+
}
|
|
54
|
+
function NavigationHints({ colors, canSubmit, hasBack }) {
|
|
55
|
+
return (_jsxs(Box, { justifyContent: "center", marginTop: 2, children: [hasBack && _jsx(Text, { color: colors.textMuted, children: "Esc: Go Back | " }), _jsxs(Text, { color: canSubmit ? colors.primary : colors.textMuted, children: ["Enter: ", canSubmit ? "Submit" : "Need more text", " ", navIcons.arrowRight] })] }));
|
|
56
|
+
}
|
|
57
|
+
// ============================================================================
|
|
58
|
+
// MAIN COMPONENT
|
|
59
|
+
// ============================================================================
|
|
60
|
+
export function FeaturePromptScreen({ isVisible, onComplete, onBack, hasFocus, dimensions, }) {
|
|
61
|
+
const [inputValue, setInputValue] = useState("");
|
|
62
|
+
const [showError, setShowError] = useState(false);
|
|
63
|
+
const colors = useThemeColors();
|
|
64
|
+
const isValid = inputValue.length >= MIN_CHARS;
|
|
65
|
+
const handleSubmit = useCallback(() => {
|
|
66
|
+
if (isValid) {
|
|
67
|
+
onComplete(inputValue.trim());
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
setShowError(true);
|
|
71
|
+
}
|
|
72
|
+
}, [inputValue, isValid, onComplete]);
|
|
73
|
+
const handleBack = useCallback(() => {
|
|
74
|
+
if (onBack) {
|
|
75
|
+
onBack();
|
|
76
|
+
}
|
|
77
|
+
}, [onBack]);
|
|
78
|
+
// Handle keyboard input
|
|
79
|
+
useInput((input, key) => {
|
|
80
|
+
if (!hasFocus || !isVisible)
|
|
81
|
+
return;
|
|
82
|
+
// Enter to submit
|
|
83
|
+
if (key.return) {
|
|
84
|
+
handleSubmit();
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
// Escape to go back
|
|
88
|
+
if (key.escape) {
|
|
89
|
+
handleBack();
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
// Backspace/Delete to remove characters
|
|
93
|
+
if (key.backspace || key.delete) {
|
|
94
|
+
setInputValue((prev) => prev.slice(0, -1));
|
|
95
|
+
setShowError(false);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
// Printable characters (ignore control keys)
|
|
99
|
+
if (input && !key.ctrl && !key.meta) {
|
|
100
|
+
setInputValue((prev) => prev + input);
|
|
101
|
+
setShowError(false);
|
|
102
|
+
}
|
|
103
|
+
}, { isActive: hasFocus && isVisible });
|
|
104
|
+
// Calculate box dimensions
|
|
105
|
+
const boxWidth = useMemo(() => {
|
|
106
|
+
if (dimensions?.width) {
|
|
107
|
+
return Math.min(70, dimensions.width - 4);
|
|
108
|
+
}
|
|
109
|
+
return 70;
|
|
110
|
+
}, [dimensions?.width]);
|
|
111
|
+
if (!isVisible) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
return (_jsxs(Box, { flexDirection: "column", alignItems: "center", justifyContent: "center", width: "100%", height: "100%", children: [_jsxs(Box, { flexDirection: "column", borderStyle: "double", borderColor: colors.primary, paddingX: 2, paddingY: 1, width: boxWidth, children: [_jsx(Box, { justifyContent: "center", marginBottom: 1, children: _jsxs(Text, { color: colors.secondary, bold: true, children: [decorChars.sparkle, " NEW FEATURE ", decorChars.sparkle] }) }), _jsx(Box, { justifyContent: "center", marginBottom: 2, children: _jsx(Text, { color: colors.primary, bold: true, children: "What feature do you want to build?" }) }), _jsx(Box, { flexDirection: "column", alignItems: "center", children: _jsx(InputDisplay, { value: inputValue, colors: colors, width: boxWidth }) }), _jsx(Box, { paddingX: 2, children: _jsx(ValidationMessage, { charCount: inputValue.length, colors: colors, showError: showError }) }), _jsx(NavigationHints, { colors: colors, canSubmit: isValid, hasBack: !!onBack })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, italic: true, children: "Be specific about what you want to achieve" }) })] }));
|
|
115
|
+
}
|
|
116
|
+
export default FeaturePromptScreen;
|
|
117
|
+
//# sourceMappingURL=FeaturePromptScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeaturePromptScreen.js","sourceRoot":"","sources":["../src/FeaturePromptScreen.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAmBlD,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,oBAAoB,GAAG;IAC3B,6CAA6C;IAC7C,uCAAuC;IACvC,oCAAoC;IACpC,iCAAiC;CAClC,CAAC;AAYF,SAAS,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAqB;IAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,GAAG,CAAC;IAEvB,8BAA8B;IAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,GAAG,IACF,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,YAAY,aAEnB,KAAC,IAAI,IAAC,QAAQ,QAAC,MAAM,kBAClB,oBAAoB,CAAC,CAAC,CAAC,GACnB,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YAAG,UAAU,GAAQ,IAC5C,EACN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,QAAC,MAAM,gCAEd,GACH,EACL,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CACjD,KAAC,GAAG,IAAS,WAAW,EAAE,CAAC,YACzB,MAAC,IAAI,IAAC,QAAQ,mBACX,QAAQ,CAAC,MAAM,OAAG,OAAO,IACrB,IAHC,CAAC,CAIL,CACP,CAAC,IACE,CACP,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,wCAAwC;IACxC,MAAM,YAAY,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,iCAAiC;IACxE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,SAAS,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,SAAS,GAAG,EAAE,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,8CAA8C;YAC9C,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAC5D,MAAM,QAAQ,GACZ,UAAU,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;YACzC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;QACpD,CAAC;IACH,CAAC;IAED,OAAO,CACL,KAAC,GAAG,IACF,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,YAAY,EACnB,aAAa,EAAC,QAAQ,YAErB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAG,IAAI,GAAQ,EACtC,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CACzB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YAAG,UAAU,GAAQ,CACjD,KAJO,CAAC,CAKL,CACP,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAQD,SAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,MAAM,EACN,SAAS,GACc;IACvB,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACxC,MAAM,OAAO,GAAG,SAAS,IAAI,SAAS,CAAC;IAEvC,OAAO,CACL,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,cAAc,EAAC,eAAe,EAAC,KAAK,EAAC,MAAM,aAC5D,KAAC,GAAG,cACD,SAAS,IAAI,CAAC,OAAO,IAAI,CACxB,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,aACtB,QAAQ,CAAC,UAAU,eAAW,SAAS,4BACnC,CACR,GACG,EACN,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,aACrD,SAAS,SAAK,SAAS,EACvB,OAAO,IAAI,IAAI,EACf,CAAC,OAAO,IAAI,KAAK,SAAS,QAAQ,IAC9B,GACH,IACF,CACP,CAAC;AACJ,CAAC;AAQD,SAAS,eAAe,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAwB;IAC3E,OAAO,CACL,MAAC,GAAG,IAAC,cAAc,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACtC,OAAO,IAAI,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,gCAAwB,EACjE,MAAC,IAAI,IAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,wBAChD,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,OAAG,QAAQ,CAAC,UAAU,IAChE,IACH,CACP,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,UAAU,mBAAmB,CAAC,EAClC,SAAS,EACT,UAAU,EACV,MAAM,EACN,QAAQ,EACR,UAAU,GACe;IACzB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,IAAI,SAAS,CAAC;IAE/C,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAEtC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,wBAAwB;IACxB,QAAQ,CACN,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACb,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS;YAAE,OAAO;QAEpC,kBAAkB;QAClB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,YAAY,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,oBAAoB;QACpB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,UAAU,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,wCAAwC;QACxC,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAChC,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QAED,6CAA6C;QAC7C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACpC,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;YACtC,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAAE,CACpC,CAAC;IAEF,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5B,IAAI,UAAU,EAAE,KAAK,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAExB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,UAAU,EAAC,QAAQ,EACnB,cAAc,EAAC,QAAQ,EACvB,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,aAGb,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAE,MAAM,CAAC,OAAO,EAC3B,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,QAAQ,aAGf,KAAC,GAAG,IAAC,cAAc,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,YAC1C,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,mBAChC,UAAU,CAAC,OAAO,mBAAe,UAAU,CAAC,OAAO,IAC/C,GACH,EAGN,KAAC,GAAG,IAAC,cAAc,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,YAC1C,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,yDAE1B,GACH,EAGN,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,YAC7C,KAAC,YAAY,IAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAI,GAChE,EAGN,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YACd,KAAC,iBAAiB,IAChB,SAAS,EAAE,UAAU,CAAC,MAAM,EAC5B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,GACpB,GACE,EAGN,KAAC,eAAe,IACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,CAAC,CAAC,MAAM,GACjB,IACE,EAGN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,QAAC,MAAM,iEAEd,GACH,IACF,CACP,CAAC;AACJ,CAAC;AAED,eAAe,mBAAmB,CAAC"}
|
package/dist/GameSelector.d.ts
CHANGED
|
@@ -16,10 +16,18 @@ export interface GameSelectorProps {
|
|
|
16
16
|
onSelectGame: (gameId: string) => void;
|
|
17
17
|
/** Callback when stats menu is requested */
|
|
18
18
|
onOpenStats?: () => void;
|
|
19
|
+
/** Whether games are enabled (unlocked after loop start) */
|
|
20
|
+
gamesEnabled?: boolean;
|
|
21
|
+
/** Whether a loop is currently active */
|
|
22
|
+
hasActiveLoop?: boolean;
|
|
23
|
+
/** Callback when Start New Loop is selected */
|
|
24
|
+
onStartNewLoop?: () => void;
|
|
25
|
+
/** Callback when View Current Loop is selected */
|
|
26
|
+
onViewCurrentLoop?: () => void;
|
|
19
27
|
}
|
|
20
28
|
/**
|
|
21
29
|
* Game selector menu component
|
|
22
30
|
*/
|
|
23
|
-
export declare function GameSelector({ games, hasFocus, dimensions, onSelectGame, onOpenStats, }: GameSelectorProps): import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
export declare function GameSelector({ games, hasFocus, dimensions, onSelectGame, onOpenStats, gamesEnabled, hasActiveLoop, onStartNewLoop, onViewCurrentLoop, }: GameSelectorProps): import("react/jsx-runtime").JSX.Element;
|
|
24
32
|
export default GameSelector;
|
|
25
33
|
//# sourceMappingURL=GameSelector.d.ts.map
|