@oaysus/cli 0.1.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.
Files changed (243) hide show
  1. package/README.md +166 -0
  2. package/bin/oaysus.js +6 -0
  3. package/dist/cli.d.ts +11 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +174 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/login.d.ts +2 -0
  8. package/dist/commands/login.d.ts.map +1 -0
  9. package/dist/commands/login.js +75 -0
  10. package/dist/commands/login.js.map +1 -0
  11. package/dist/commands/logout.d.ts +2 -0
  12. package/dist/commands/logout.d.ts.map +1 -0
  13. package/dist/commands/logout.js +23 -0
  14. package/dist/commands/logout.js.map +1 -0
  15. package/dist/commands/whoami.d.ts +2 -0
  16. package/dist/commands/whoami.d.ts.map +1 -0
  17. package/dist/commands/whoami.js +44 -0
  18. package/dist/commands/whoami.js.map +1 -0
  19. package/dist/components/App.d.ts +43 -0
  20. package/dist/components/App.d.ts.map +1 -0
  21. package/dist/components/App.js +63 -0
  22. package/dist/components/App.js.map +1 -0
  23. package/dist/components/BuildProgress.d.ts +16 -0
  24. package/dist/components/BuildProgress.d.ts.map +1 -0
  25. package/dist/components/BuildProgress.js +42 -0
  26. package/dist/components/BuildProgress.js.map +1 -0
  27. package/dist/components/ErrorMessage.d.ts +13 -0
  28. package/dist/components/ErrorMessage.d.ts.map +1 -0
  29. package/dist/components/ErrorMessage.js +29 -0
  30. package/dist/components/ErrorMessage.js.map +1 -0
  31. package/dist/components/FileList.d.ts +13 -0
  32. package/dist/components/FileList.d.ts.map +1 -0
  33. package/dist/components/FileList.js +25 -0
  34. package/dist/components/FileList.js.map +1 -0
  35. package/dist/components/Header.d.ts +12 -0
  36. package/dist/components/Header.d.ts.map +1 -0
  37. package/dist/components/Header.js +18 -0
  38. package/dist/components/Header.js.map +1 -0
  39. package/dist/components/LastCommand.d.ts +9 -0
  40. package/dist/components/LastCommand.d.ts.map +1 -0
  41. package/dist/components/LastCommand.js +39 -0
  42. package/dist/components/LastCommand.js.map +1 -0
  43. package/dist/components/Logo.d.ts +14 -0
  44. package/dist/components/Logo.d.ts.map +1 -0
  45. package/dist/components/Logo.js +44 -0
  46. package/dist/components/Logo.js.map +1 -0
  47. package/dist/components/ProgressBar.d.ts +13 -0
  48. package/dist/components/ProgressBar.d.ts.map +1 -0
  49. package/dist/components/ProgressBar.js +20 -0
  50. package/dist/components/ProgressBar.js.map +1 -0
  51. package/dist/components/SlashCommands.d.ts +17 -0
  52. package/dist/components/SlashCommands.d.ts.map +1 -0
  53. package/dist/components/SlashCommands.js +59 -0
  54. package/dist/components/SlashCommands.js.map +1 -0
  55. package/dist/components/Spinner.d.ts +13 -0
  56. package/dist/components/Spinner.d.ts.map +1 -0
  57. package/dist/components/Spinner.js +16 -0
  58. package/dist/components/Spinner.js.map +1 -0
  59. package/dist/components/StatusCard.d.ts +14 -0
  60. package/dist/components/StatusCard.d.ts.map +1 -0
  61. package/dist/components/StatusCard.js +40 -0
  62. package/dist/components/StatusCard.js.map +1 -0
  63. package/dist/components/SuccessMessage.d.ts +12 -0
  64. package/dist/components/SuccessMessage.d.ts.map +1 -0
  65. package/dist/components/SuccessMessage.js +18 -0
  66. package/dist/components/SuccessMessage.js.map +1 -0
  67. package/dist/components/UploadProgress.d.ts +13 -0
  68. package/dist/components/UploadProgress.d.ts.map +1 -0
  69. package/dist/components/UploadProgress.js +40 -0
  70. package/dist/components/UploadProgress.js.map +1 -0
  71. package/dist/components/ValidationProgress.d.ts +12 -0
  72. package/dist/components/ValidationProgress.d.ts.map +1 -0
  73. package/dist/components/ValidationProgress.js +44 -0
  74. package/dist/components/ValidationProgress.js.map +1 -0
  75. package/dist/index.d.ts +7 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +21 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/lib/core/framework-registry.d.ts +27 -0
  80. package/dist/lib/core/framework-registry.d.ts.map +1 -0
  81. package/dist/lib/core/framework-registry.js +67 -0
  82. package/dist/lib/core/framework-registry.js.map +1 -0
  83. package/dist/lib/core/types.d.ts +124 -0
  84. package/dist/lib/core/types.d.ts.map +1 -0
  85. package/dist/lib/core/types.js +6 -0
  86. package/dist/lib/core/types.js.map +1 -0
  87. package/dist/lib/project-generator.d.ts +15 -0
  88. package/dist/lib/project-generator.d.ts.map +1 -0
  89. package/dist/lib/project-generator.js +286 -0
  90. package/dist/lib/project-generator.js.map +1 -0
  91. package/dist/lib/push.d.ts +20 -0
  92. package/dist/lib/push.d.ts.map +1 -0
  93. package/dist/lib/push.js +222 -0
  94. package/dist/lib/push.js.map +1 -0
  95. package/dist/lib/react/builder.d.ts +45 -0
  96. package/dist/lib/react/builder.d.ts.map +1 -0
  97. package/dist/lib/react/builder.js +381 -0
  98. package/dist/lib/react/builder.js.map +1 -0
  99. package/dist/lib/react/bundler.d.ts +104 -0
  100. package/dist/lib/react/bundler.d.ts.map +1 -0
  101. package/dist/lib/react/bundler.js +654 -0
  102. package/dist/lib/react/bundler.js.map +1 -0
  103. package/dist/lib/react/config.d.ts +34 -0
  104. package/dist/lib/react/config.d.ts.map +1 -0
  105. package/dist/lib/react/config.js +64 -0
  106. package/dist/lib/react/config.js.map +1 -0
  107. package/dist/lib/react/import-map.d.ts +54 -0
  108. package/dist/lib/react/import-map.d.ts.map +1 -0
  109. package/dist/lib/react/import-map.js +187 -0
  110. package/dist/lib/react/import-map.js.map +1 -0
  111. package/dist/lib/shared/auth-middleware.d.ts +29 -0
  112. package/dist/lib/shared/auth-middleware.d.ts.map +1 -0
  113. package/dist/lib/shared/auth-middleware.js +48 -0
  114. package/dist/lib/shared/auth-middleware.js.map +1 -0
  115. package/dist/lib/shared/auth.d.ts +50 -0
  116. package/dist/lib/shared/auth.d.ts.map +1 -0
  117. package/dist/lib/shared/auth.js +243 -0
  118. package/dist/lib/shared/auth.js.map +1 -0
  119. package/dist/lib/shared/cdn-downloader.d.ts +30 -0
  120. package/dist/lib/shared/cdn-downloader.d.ts.map +1 -0
  121. package/dist/lib/shared/cdn-downloader.js +126 -0
  122. package/dist/lib/shared/cdn-downloader.js.map +1 -0
  123. package/dist/lib/shared/command-history.d.ts +29 -0
  124. package/dist/lib/shared/command-history.d.ts.map +1 -0
  125. package/dist/lib/shared/command-history.js +73 -0
  126. package/dist/lib/shared/command-history.js.map +1 -0
  127. package/dist/lib/shared/commands.d.ts +24 -0
  128. package/dist/lib/shared/commands.d.ts.map +1 -0
  129. package/dist/lib/shared/commands.js +63 -0
  130. package/dist/lib/shared/commands.js.map +1 -0
  131. package/dist/lib/shared/config.d.ts +40 -0
  132. package/dist/lib/shared/config.d.ts.map +1 -0
  133. package/dist/lib/shared/config.js +69 -0
  134. package/dist/lib/shared/config.js.map +1 -0
  135. package/dist/lib/shared/file-utils.d.ts +45 -0
  136. package/dist/lib/shared/file-utils.d.ts.map +1 -0
  137. package/dist/lib/shared/file-utils.js +88 -0
  138. package/dist/lib/shared/file-utils.js.map +1 -0
  139. package/dist/lib/shared/import-analyzer.d.ts +49 -0
  140. package/dist/lib/shared/import-analyzer.d.ts.map +1 -0
  141. package/dist/lib/shared/import-analyzer.js +268 -0
  142. package/dist/lib/shared/import-analyzer.js.map +1 -0
  143. package/dist/lib/shared/path-builder.d.ts +55 -0
  144. package/dist/lib/shared/path-builder.d.ts.map +1 -0
  145. package/dist/lib/shared/path-builder.js +66 -0
  146. package/dist/lib/shared/path-builder.js.map +1 -0
  147. package/dist/lib/shared/uploader.d.ts +79 -0
  148. package/dist/lib/shared/uploader.d.ts.map +1 -0
  149. package/dist/lib/shared/uploader.js +340 -0
  150. package/dist/lib/shared/uploader.js.map +1 -0
  151. package/dist/lib/shared/zip-creator.d.ts +18 -0
  152. package/dist/lib/shared/zip-creator.d.ts.map +1 -0
  153. package/dist/lib/shared/zip-creator.js +131 -0
  154. package/dist/lib/shared/zip-creator.js.map +1 -0
  155. package/dist/lib/svelte/builder.d.ts +37 -0
  156. package/dist/lib/svelte/builder.d.ts.map +1 -0
  157. package/dist/lib/svelte/builder.js +364 -0
  158. package/dist/lib/svelte/builder.js.map +1 -0
  159. package/dist/lib/svelte/bundler.d.ts +92 -0
  160. package/dist/lib/svelte/bundler.d.ts.map +1 -0
  161. package/dist/lib/svelte/bundler.js +499 -0
  162. package/dist/lib/svelte/bundler.js.map +1 -0
  163. package/dist/lib/svelte/config.d.ts +22 -0
  164. package/dist/lib/svelte/config.d.ts.map +1 -0
  165. package/dist/lib/svelte/config.js +65 -0
  166. package/dist/lib/svelte/config.js.map +1 -0
  167. package/dist/lib/svelte/import-map.d.ts +42 -0
  168. package/dist/lib/svelte/import-map.d.ts.map +1 -0
  169. package/dist/lib/svelte/import-map.js +197 -0
  170. package/dist/lib/svelte/import-map.js.map +1 -0
  171. package/dist/lib/template-manager.d.ts +33 -0
  172. package/dist/lib/template-manager.d.ts.map +1 -0
  173. package/dist/lib/template-manager.js +69 -0
  174. package/dist/lib/template-manager.js.map +1 -0
  175. package/dist/lib/validator.d.ts +10 -0
  176. package/dist/lib/validator.d.ts.map +1 -0
  177. package/dist/lib/validator.js +343 -0
  178. package/dist/lib/validator.js.map +1 -0
  179. package/dist/lib/vue/builder.d.ts +37 -0
  180. package/dist/lib/vue/builder.d.ts.map +1 -0
  181. package/dist/lib/vue/builder.js +366 -0
  182. package/dist/lib/vue/builder.js.map +1 -0
  183. package/dist/lib/vue/bundler.d.ts +78 -0
  184. package/dist/lib/vue/bundler.d.ts.map +1 -0
  185. package/dist/lib/vue/bundler.js +208 -0
  186. package/dist/lib/vue/bundler.js.map +1 -0
  187. package/dist/lib/vue/config.d.ts +18 -0
  188. package/dist/lib/vue/config.d.ts.map +1 -0
  189. package/dist/lib/vue/config.js +42 -0
  190. package/dist/lib/vue/config.js.map +1 -0
  191. package/dist/lib/vue/import-map.d.ts +42 -0
  192. package/dist/lib/vue/import-map.d.ts.map +1 -0
  193. package/dist/lib/vue/import-map.js +156 -0
  194. package/dist/lib/vue/import-map.js.map +1 -0
  195. package/dist/screens/BuildScreen.d.ts +8 -0
  196. package/dist/screens/BuildScreen.d.ts.map +1 -0
  197. package/dist/screens/BuildScreen.js +158 -0
  198. package/dist/screens/BuildScreen.js.map +1 -0
  199. package/dist/screens/CreateScreen.d.ts +12 -0
  200. package/dist/screens/CreateScreen.d.ts.map +1 -0
  201. package/dist/screens/CreateScreen.js +305 -0
  202. package/dist/screens/CreateScreen.js.map +1 -0
  203. package/dist/screens/InitScreen.d.ts +11 -0
  204. package/dist/screens/InitScreen.d.ts.map +1 -0
  205. package/dist/screens/InitScreen.js +339 -0
  206. package/dist/screens/InitScreen.js.map +1 -0
  207. package/dist/screens/LoginScreen.d.ts +15 -0
  208. package/dist/screens/LoginScreen.d.ts.map +1 -0
  209. package/dist/screens/LoginScreen.js +427 -0
  210. package/dist/screens/LoginScreen.js.map +1 -0
  211. package/dist/screens/LogoutScreen.d.ts +15 -0
  212. package/dist/screens/LogoutScreen.d.ts.map +1 -0
  213. package/dist/screens/LogoutScreen.js +187 -0
  214. package/dist/screens/LogoutScreen.js.map +1 -0
  215. package/dist/screens/PushScreen.d.ts +12 -0
  216. package/dist/screens/PushScreen.d.ts.map +1 -0
  217. package/dist/screens/PushScreen.js +546 -0
  218. package/dist/screens/PushScreen.js.map +1 -0
  219. package/dist/screens/ValidateScreen.d.ts +12 -0
  220. package/dist/screens/ValidateScreen.d.ts.map +1 -0
  221. package/dist/screens/ValidateScreen.js +193 -0
  222. package/dist/screens/ValidateScreen.js.map +1 -0
  223. package/dist/screens/WelcomeScreen.d.ts +39 -0
  224. package/dist/screens/WelcomeScreen.d.ts.map +1 -0
  225. package/dist/screens/WelcomeScreen.js +297 -0
  226. package/dist/screens/WelcomeScreen.js.map +1 -0
  227. package/dist/screens/WhoamiScreen.d.ts +14 -0
  228. package/dist/screens/WhoamiScreen.d.ts.map +1 -0
  229. package/dist/screens/WhoamiScreen.js +180 -0
  230. package/dist/screens/WhoamiScreen.js.map +1 -0
  231. package/dist/types/index.d.ts +40 -0
  232. package/dist/types/index.d.ts.map +1 -0
  233. package/dist/types/index.js +2 -0
  234. package/dist/types/index.js.map +1 -0
  235. package/dist/types/templates.d.ts +55 -0
  236. package/dist/types/templates.d.ts.map +1 -0
  237. package/dist/types/templates.js +6 -0
  238. package/dist/types/templates.js.map +1 -0
  239. package/dist/types/validation.d.ts +108 -0
  240. package/dist/types/validation.d.ts.map +1 -0
  241. package/dist/types/validation.js +6 -0
  242. package/dist/types/validation.js.map +1 -0
  243. package/package.json +94 -0
@@ -0,0 +1,193 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { readFile } from 'fs/promises';
4
+ import { fileURLToPath } from 'url';
5
+ import path from 'path';
6
+ import { Logo } from '../components/Logo.js';
7
+ import { Spinner } from '../components/Spinner.js';
8
+ import { SuccessMessage } from '../components/SuccessMessage.js';
9
+ import { ValidationProgress } from '../components/ValidationProgress.js';
10
+ import { ProgressBar } from '../components/ProgressBar.js';
11
+ import { validatePackage } from '../lib/validator.js';
12
+ export const ValidateScreen = ({ projectPath = '.', onExit, sessionHistory = [], addToHistory }) => {
13
+ const [state, setState] = useState('idle');
14
+ const [validationResult, setValidationResult] = useState(null);
15
+ const [progress, setProgress] = useState(0);
16
+ const [appData, setAppData] = useState({
17
+ version: '0.1.0',
18
+ isLoaded: false
19
+ });
20
+ const [directory] = useState(path.resolve(projectPath));
21
+ // Destructure for easier access
22
+ const { version } = appData;
23
+ // Load version on mount
24
+ useEffect(() => {
25
+ const loadVersion = async () => {
26
+ try {
27
+ const __filename = fileURLToPath(import.meta.url);
28
+ const __dirname = path.dirname(__filename);
29
+ const pkgPath = path.join(__dirname, '../../package.json');
30
+ const pkgData = await readFile(pkgPath, 'utf-8');
31
+ const pkg = JSON.parse(pkgData);
32
+ setAppData({
33
+ version: pkg.version,
34
+ isLoaded: true
35
+ });
36
+ }
37
+ catch {
38
+ setAppData({
39
+ version: '0.1.0',
40
+ isLoaded: true
41
+ });
42
+ }
43
+ };
44
+ loadVersion();
45
+ }, []);
46
+ useEffect(() => {
47
+ const runValidation = async () => {
48
+ try {
49
+ // Log the command being run
50
+ if (addToHistory) {
51
+ addToHistory({
52
+ type: 'info',
53
+ content: '❯ /validate',
54
+ color: 'cyan',
55
+ // Add spacing marker to indicate this should have top margin
56
+ spinnerId: sessionHistory.length > 0 ? 'command-separator' : undefined
57
+ });
58
+ }
59
+ // Add validation start to history
60
+ if (addToHistory) {
61
+ addToHistory({
62
+ type: 'info',
63
+ content: `Validating package in: ${directory}`
64
+ });
65
+ }
66
+ // Step 1: Early check - is this even a theme/component directory?
67
+ setState('validating-structure');
68
+ setProgress(20);
69
+ const hasPackageJson = await (async () => {
70
+ try {
71
+ const fs = await import('fs/promises');
72
+ await fs.access(path.join(projectPath, 'package.json'));
73
+ return true;
74
+ }
75
+ catch {
76
+ return false;
77
+ }
78
+ })();
79
+ const hasComponentsDir = await (async () => {
80
+ try {
81
+ const fs = await import('fs/promises');
82
+ await fs.access(path.join(projectPath, 'components'));
83
+ return true;
84
+ }
85
+ catch {
86
+ return false;
87
+ }
88
+ })();
89
+ if (!hasPackageJson && !hasComponentsDir) {
90
+ if (addToHistory) {
91
+ addToHistory({
92
+ type: 'info',
93
+ content: `Validation failed: Not a valid theme or component directory (checked ${directory})`
94
+ });
95
+ }
96
+ onExit?.();
97
+ return;
98
+ }
99
+ await new Promise(resolve => setTimeout(resolve, 300));
100
+ // Step 2: Validate schemas
101
+ setState('validating-schemas');
102
+ setProgress(40);
103
+ const result = await validatePackage(projectPath);
104
+ if (!result.valid) {
105
+ if (addToHistory) {
106
+ // Add all errors to history
107
+ result.errors.forEach(error => {
108
+ addToHistory({
109
+ type: 'info',
110
+ content: `Validation failed: ${error}`
111
+ });
112
+ });
113
+ }
114
+ onExit?.();
115
+ return;
116
+ }
117
+ setValidationResult(result);
118
+ // Step 3: Discover components
119
+ setState('discovering-components');
120
+ setProgress(80);
121
+ await new Promise(resolve => setTimeout(resolve, 300));
122
+ // Success
123
+ setProgress(100);
124
+ setState('success');
125
+ if (addToHistory) {
126
+ addToHistory({
127
+ type: 'response',
128
+ content: 'Package validation successful'
129
+ });
130
+ }
131
+ onExit?.();
132
+ }
133
+ catch (err) {
134
+ const errorMessage = err instanceof Error ? err.message : 'Validation failed';
135
+ if (addToHistory) {
136
+ addToHistory({
137
+ type: 'info',
138
+ content: `Validation failed: ${errorMessage}`
139
+ });
140
+ }
141
+ onExit?.();
142
+ }
143
+ };
144
+ runValidation();
145
+ // eslint-disable-next-line react-hooks/exhaustive-deps
146
+ }, [projectPath]);
147
+ return (React.createElement(Box, { flexDirection: "column", padding: 1 },
148
+ appData.isLoaded && (React.createElement(Logo, { version: version, directory: directory })),
149
+ sessionHistory && sessionHistory.length > 0 && (React.createElement(Box, { flexDirection: "column", marginTop: 1, marginBottom: 1 }, sessionHistory.slice(-5).map((entry, index) => (React.createElement(Box, { key: index, marginBottom: 0 },
150
+ entry.type === 'prompt' && (React.createElement(Text, { color: "cyan" },
151
+ "\u2192 ",
152
+ entry.content)),
153
+ entry.type === 'response' && (React.createElement(Text, { color: "green" },
154
+ "\u2713 ",
155
+ entry.content)),
156
+ entry.type === 'info' && (React.createElement(Text, { dimColor: true }, entry.content))))))),
157
+ React.createElement(Box, { marginTop: 1, marginBottom: 1 },
158
+ React.createElement(Text, { color: "cyan", bold: true }, "\u2192 /validate")),
159
+ React.createElement(Box, { marginTop: 1, marginBottom: 1 },
160
+ React.createElement(ProgressBar, { progress: progress, width: 50 })),
161
+ state === 'validating-structure' && (React.createElement(Spinner, { message: "Validating package structure...", color: "cyan" })),
162
+ state === 'validating-schemas' && (React.createElement(Spinner, { message: "Validating schemas...", color: "cyan" })),
163
+ state === 'discovering-components' && validationResult && (React.createElement(Box, { flexDirection: "column" },
164
+ React.createElement(Text, { color: "green", bold: true }, "\u2713 Validation passed"),
165
+ React.createElement(Box, { marginTop: 1, flexDirection: "column" },
166
+ React.createElement(Text, { dimColor: true },
167
+ "Framework: ",
168
+ React.createElement(Text, { color: "white" }, validationResult.inferredConfig.framework)),
169
+ React.createElement(Text, { dimColor: true },
170
+ "Type: ",
171
+ React.createElement(Text, { color: "white" }, validationResult.inferredConfig.type)),
172
+ React.createElement(Text, { dimColor: true },
173
+ "Version: ",
174
+ React.createElement(Text, { color: "white" }, validationResult.inferredConfig.version))),
175
+ React.createElement(Box, { marginTop: 1 },
176
+ React.createElement(Spinner, { message: `Discovering ${validationResult.components.length} component(s)...` })))),
177
+ state === 'success' && validationResult && (React.createElement(Box, { flexDirection: "column" },
178
+ React.createElement(ValidationProgress, { validationResult: validationResult }),
179
+ React.createElement(Box, { marginTop: 2 },
180
+ React.createElement(SuccessMessage, { message: "Validation passed!", details: [
181
+ 'Package structure is valid',
182
+ 'All schemas are correct',
183
+ `${validationResult.components.length} component(s) found`,
184
+ 'Ready to push with /push'
185
+ ] })),
186
+ validationResult.warnings.length > 0 && (React.createElement(Box, { marginTop: 1, flexDirection: "column" },
187
+ React.createElement(Text, { color: "yellow", bold: true }, "Warnings:"),
188
+ validationResult.warnings.map((warn, i) => (React.createElement(Text, { key: i, color: "yellow" },
189
+ "\u26A0 ",
190
+ warn)))))))));
191
+ };
192
+ export default ValidateScreen;
193
+ //# sourceMappingURL=ValidateScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidateScreen.js","sourceRoot":"","sources":["../../src/screens/ValidateScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAmBtD,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAC5D,WAAW,GAAG,GAAG,EACjB,MAAM,EACN,cAAc,GAAG,EAAE,EACnB,YAAY,EACb,EAAE,EAAE;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAkB,MAAM,CAAC,CAAC;IAC5D,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAA0B,IAAI,CAAC,CAAC;IACxF,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC;QACrC,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAExD,gCAAgC;IAChC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE5B,wBAAwB;IACxB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;YAC7B,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;gBAC3D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAChC,UAAU,CAAC;oBACT,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,UAAU,CAAC;oBACT,OAAO,EAAE,OAAO;oBAChB,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;QAEF,WAAW,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;YAC/B,IAAI,CAAC;gBACH,4BAA4B;gBAC5B,IAAI,YAAY,EAAE,CAAC;oBACjB,YAAY,CAAC;wBACX,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,aAAa;wBACtB,KAAK,EAAE,MAAM;wBACb,6DAA6D;wBAC7D,SAAS,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;qBACvE,CAAC,CAAC;gBACL,CAAC;gBAED,kCAAkC;gBAClC,IAAI,YAAY,EAAE,CAAC;oBACjB,YAAY,CAAC;wBACX,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,0BAA0B,SAAS,EAAE;qBAC/C,CAAC,CAAC;gBACL,CAAC;gBAED,kEAAkE;gBAClE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;gBACjC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAEhB,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;oBACvC,IAAI,CAAC;wBACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;wBACvC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;wBACxD,OAAO,IAAI,CAAC;oBACd,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,KAAK,CAAC;oBACf,CAAC;gBACH,CAAC,CAAC,EAAE,CAAC;gBAEL,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;oBACzC,IAAI,CAAC;wBACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;wBACvC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;wBACtD,OAAO,IAAI,CAAC;oBACd,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,KAAK,CAAC;oBACf,CAAC;gBACH,CAAC,CAAC,EAAE,CAAC;gBAEL,IAAI,CAAC,cAAc,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACzC,IAAI,YAAY,EAAE,CAAC;wBACjB,YAAY,CAAC;4BACX,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE,wEAAwE,SAAS,GAAG;yBAC9F,CAAC,CAAC;oBACL,CAAC;oBAED,MAAM,EAAE,EAAE,CAAC;oBACX,OAAO;gBACT,CAAC;gBAED,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBAEvD,2BAA2B;gBAC3B,QAAQ,CAAC,oBAAoB,CAAC,CAAC;gBAC/B,WAAW,CAAC,EAAE,CAAC,CAAC;gBAChB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;gBAElD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBAClB,IAAI,YAAY,EAAE,CAAC;wBACjB,4BAA4B;wBAC5B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;4BAC5B,YAAY,CAAC;gCACX,IAAI,EAAE,MAAM;gCACZ,OAAO,EAAE,sBAAsB,KAAK,EAAE;6BACvC,CAAC,CAAC;wBACL,CAAC,CAAC,CAAC;oBACL,CAAC;oBAED,MAAM,EAAE,EAAE,CAAC;oBACX,OAAO;gBACT,CAAC;gBAED,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBAE5B,8BAA8B;gBAC9B,QAAQ,CAAC,wBAAwB,CAAC,CAAC;gBACnC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAChB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBAEvD,UAAU;gBACV,WAAW,CAAC,GAAG,CAAC,CAAC;gBACjB,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAEpB,IAAI,YAAY,EAAE,CAAC;oBACjB,YAAY,CAAC;wBACX,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE,+BAA+B;qBACzC,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,EAAE,EAAE,CAAC;YAEb,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC;gBAE9E,IAAI,YAAY,EAAE,CAAC;oBACjB,YAAY,CAAC;wBACX,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,sBAAsB,YAAY,EAAE;qBAC9C,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,EAAE,EAAE,CAAC;YACb,CAAC;QACH,CAAC,CAAC;QAEF,aAAa,EAAE,CAAC;QAChB,uDAAuD;IACzD,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,OAAO,EAAE,CAAC;QAEnC,OAAO,CAAC,QAAQ,IAAI,CACnB,oBAAC,IAAI,IACH,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,GACpB,CACH;QAGA,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAC9C,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,IACtD,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAC9C,oBAAC,GAAG,IAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAC1B,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;;gBACb,KAAK,CAAC,OAAO,CACX,CACR;YACA,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,CAC5B,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO;;gBACd,KAAK,CAAC,OAAO,CACX,CACR;YACA,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CACxB,oBAAC,IAAI,IAAC,QAAQ,UACX,KAAK,CAAC,OAAO,CACT,CACR,CACG,CACP,CAAC,CACE,CACP;QAGD,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;YAChC,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,6BAEhB,CACH;QAGN,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;YAChC,oBAAC,WAAW,IAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAI,CAC1C;QAGL,KAAK,KAAK,sBAAsB,IAAI,CACnC,oBAAC,OAAO,IAAC,OAAO,EAAC,iCAAiC,EAAC,KAAK,EAAC,MAAM,GAAG,CACnE;QAEA,KAAK,KAAK,oBAAoB,IAAI,CACjC,oBAAC,OAAO,IAAC,OAAO,EAAC,uBAAuB,EAAC,KAAK,EAAC,MAAM,GAAG,CACzD;QAEA,KAAK,KAAK,wBAAwB,IAAI,gBAAgB,IAAI,CACzD,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;YACzB,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,qCAEjB;YACP,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ;gBACvC,oBAAC,IAAI,IAAC,QAAQ;;oBACD,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,IAAE,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAAQ,CAC5E;gBACP,oBAAC,IAAI,IAAC,QAAQ;;oBACN,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,IAAE,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAQ,CAClE;gBACP,oBAAC,IAAI,IAAC,QAAQ;;oBACH,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,IAAE,gBAAgB,CAAC,cAAc,CAAC,OAAO,CAAQ,CACxE,CACH;YACN,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC;gBACf,oBAAC,OAAO,IAAC,OAAO,EAAE,eAAe,gBAAgB,CAAC,UAAU,CAAC,MAAM,kBAAkB,GAAI,CACrF,CACF,CACP;QAGA,KAAK,KAAK,SAAS,IAAI,gBAAgB,IAAI,CAC1C,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;YACzB,oBAAC,kBAAkB,IAAC,gBAAgB,EAAE,gBAAgB,GAAI;YAE1D,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC;gBACf,oBAAC,cAAc,IACb,OAAO,EAAC,oBAAoB,EAC5B,OAAO,EAAE;wBACP,4BAA4B;wBAC5B,yBAAyB;wBACzB,GAAG,gBAAgB,CAAC,UAAU,CAAC,MAAM,qBAAqB;wBAC1D,0BAA0B;qBAC3B,GACD,CACE;YAEL,gBAAgB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CACvC,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ;gBACvC,oBAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,sBAElB;gBACN,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC1C,oBAAC,IAAI,IAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAC,QAAQ;;oBACvB,IAAI,CACF,CACR,CAAC,CACE,CACP,CACG,CACP,CACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import { HistoryEntry } from '../components/App.js';
3
+ type Screen = {
4
+ type: 'welcome';
5
+ } | {
6
+ type: 'init';
7
+ projectName?: string;
8
+ } | {
9
+ type: 'create';
10
+ componentName?: string;
11
+ projectPath?: string;
12
+ } | {
13
+ type: 'login';
14
+ } | {
15
+ type: 'status';
16
+ } | {
17
+ type: 'logout';
18
+ } | {
19
+ type: 'validate';
20
+ projectPath?: string;
21
+ dryRun?: boolean;
22
+ } | {
23
+ type: 'push';
24
+ projectPath?: string;
25
+ };
26
+ interface WelcomeScreenProps {
27
+ onNavigate?: (screen: Screen) => void;
28
+ onExit?: () => void;
29
+ sessionHistory?: HistoryEntry[];
30
+ addToHistory?: (entry: HistoryEntry | HistoryEntry[]) => void;
31
+ }
32
+ /**
33
+ * WelcomeScreen
34
+ * Interactive CLI welcome screen displayed when running `oaysus` with no arguments
35
+ * Shows logo, system info, persistent session history, command prompt, and accepts user input
36
+ */
37
+ export declare const WelcomeScreen: React.FC<WelcomeScreenProps>;
38
+ export default WelcomeScreen;
39
+ //# sourceMappingURL=WelcomeScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WelcomeScreen.d.ts","sourceRoot":"","sources":["../../src/screens/WelcomeScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,KAAK,MAAM,GACP;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,UAAU,kBAAkB;IAC1B,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC;IAChC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,EAAE,KAAK,IAAI,CAAC;CAC/D;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAgWtD,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,297 @@
1
+ import React from 'react';
2
+ import { Box, Text, useInput } from 'ink';
3
+ import TextInput from 'ink-text-input';
4
+ import { readFile } from 'fs/promises';
5
+ import { fileURLToPath } from 'url';
6
+ import path from 'path';
7
+ import { Logo } from '../components/Logo.js';
8
+ import { Spinner } from '../components/Spinner.js';
9
+ import { SlashCommands } from '../components/SlashCommands.js';
10
+ import { getLastCommand } from '../lib/shared/command-history.js';
11
+ import { loadCredentials } from '../lib/shared/auth.js';
12
+ import { filterCommands } from '../lib/shared/commands.js';
13
+ import chalk from 'chalk';
14
+ /**
15
+ * WelcomeScreen
16
+ * Interactive CLI welcome screen displayed when running `oaysus` with no arguments
17
+ * Shows logo, system info, persistent session history, command prompt, and accepts user input
18
+ */
19
+ export const WelcomeScreen = ({ onNavigate, onExit, sessionHistory = [], addToHistory }) => {
20
+ const [commandInput, setCommandInput] = React.useState('');
21
+ const [lastCmd, setLastCmd] = React.useState(null);
22
+ const [showInput, setShowInput] = React.useState(true);
23
+ const [slashMode, setSlashMode] = React.useState(false);
24
+ const [selectedCommandIndex, setSelectedCommandIndex] = React.useState(0);
25
+ const [appData, setAppData] = React.useState({
26
+ version: '0.1.0',
27
+ userEmail: null,
28
+ isLoaded: false
29
+ });
30
+ const [directory] = React.useState(process.cwd());
31
+ // Destructure for easier access
32
+ const { version, userEmail, isLoaded } = appData;
33
+ // Load version, credentials, and last command on mount
34
+ React.useEffect(() => {
35
+ const loadAllData = async () => {
36
+ // Load all data in parallel
37
+ const [versionData, credsData, cmdData] = await Promise.all([
38
+ // Load version
39
+ (async () => {
40
+ try {
41
+ const __filename = fileURLToPath(import.meta.url);
42
+ const __dirname = path.dirname(__filename);
43
+ const pkgPath = path.join(__dirname, '../../package.json');
44
+ const pkgData = await readFile(pkgPath, 'utf-8');
45
+ const pkg = JSON.parse(pkgData);
46
+ return pkg.version;
47
+ }
48
+ catch {
49
+ return '0.1.0';
50
+ }
51
+ })(),
52
+ // Load credentials
53
+ loadCredentials(),
54
+ // Load last command
55
+ getLastCommand()
56
+ ]);
57
+ // Single state update to prevent multiple renders
58
+ setAppData({
59
+ version: versionData,
60
+ userEmail: credsData?.email || null,
61
+ isLoaded: true
62
+ });
63
+ if (cmdData) {
64
+ setLastCmd(cmdData.command);
65
+ }
66
+ };
67
+ loadAllData();
68
+ }, []);
69
+ // Watch for "/" input to enter slash mode
70
+ React.useEffect(() => {
71
+ if (commandInput === '/') {
72
+ setSlashMode(true);
73
+ setSelectedCommandIndex(0);
74
+ }
75
+ else if (slashMode && !commandInput.startsWith('/')) {
76
+ setSlashMode(false);
77
+ setSelectedCommandIndex(0);
78
+ }
79
+ }, [commandInput, slashMode]);
80
+ // Reset selected index when search query changes
81
+ React.useEffect(() => {
82
+ if (slashMode) {
83
+ setSelectedCommandIndex(0);
84
+ }
85
+ }, [commandInput]);
86
+ // Handle command submission
87
+ const handleSubmit = (value) => {
88
+ // Ignore submit when in slash mode - selection handled by SlashCommands
89
+ if (slashMode) {
90
+ return;
91
+ }
92
+ const trimmed = value.trim();
93
+ // If empty, just ignore
94
+ if (!trimmed) {
95
+ return;
96
+ }
97
+ // Commands must start with /
98
+ if (!trimmed.startsWith('/')) {
99
+ // Add error to history
100
+ if (addToHistory) {
101
+ addToHistory({
102
+ type: 'info',
103
+ content: `Unknown command: "${trimmed}". Type / to see available commands.`
104
+ });
105
+ }
106
+ setCommandInput('');
107
+ return;
108
+ }
109
+ // Extract command name from slash command
110
+ const commandName = trimmed.slice(1).split(' ')[0];
111
+ // Check if it's a valid command
112
+ const validCommands = ['init', 'create', 'login', 'status', 'logout', 'validate', 'push', 'exit'];
113
+ if (!validCommands.includes(commandName)) {
114
+ if (addToHistory) {
115
+ addToHistory({
116
+ type: 'info',
117
+ content: `Unknown command: "/${commandName}". Type / to see available commands.`
118
+ });
119
+ }
120
+ setCommandInput('');
121
+ return;
122
+ }
123
+ // Handle the command via slash select
124
+ handleSlashSelect(commandName);
125
+ };
126
+ // Handle slash command selection
127
+ const handleSlashSelect = (commandName) => {
128
+ setSlashMode(false);
129
+ setCommandInput('');
130
+ // Handle exit command
131
+ if (commandName === 'exit') {
132
+ if (onExit) {
133
+ onExit();
134
+ }
135
+ else {
136
+ process.exit(0);
137
+ }
138
+ return;
139
+ }
140
+ // Navigate to command screen
141
+ if (onNavigate) {
142
+ switch (commandName) {
143
+ case 'init':
144
+ onNavigate({ type: 'init' });
145
+ break;
146
+ case 'create':
147
+ onNavigate({ type: 'create' });
148
+ break;
149
+ case 'login':
150
+ onNavigate({ type: 'login' });
151
+ break;
152
+ case 'status':
153
+ onNavigate({ type: 'status' });
154
+ break;
155
+ case 'logout':
156
+ onNavigate({ type: 'logout' });
157
+ break;
158
+ case 'validate':
159
+ onNavigate({ type: 'validate' });
160
+ break;
161
+ case 'push':
162
+ onNavigate({ type: 'push' });
163
+ break;
164
+ default:
165
+ break;
166
+ }
167
+ }
168
+ };
169
+ // Handle slash mode cancel
170
+ const handleSlashCancel = () => {
171
+ setSlashMode(false);
172
+ setCommandInput('');
173
+ setSelectedCommandIndex(0);
174
+ };
175
+ // Handle command list navigation
176
+ const handleCommandNavigation = (direction) => {
177
+ const searchQuery = commandInput.slice(1); // Remove "/" prefix
178
+ const isLoggedIn = !!userEmail;
179
+ // Apply same filtering logic as SlashCommands
180
+ let commands = filterCommands(searchQuery);
181
+ commands = commands.filter(cmd => {
182
+ if (cmd.name === 'login')
183
+ return !isLoggedIn;
184
+ if (cmd.name === 'logout')
185
+ return isLoggedIn;
186
+ if (cmd.name === 'status')
187
+ return isLoggedIn;
188
+ return true;
189
+ });
190
+ const filteredCount = Math.min(commands.length, 10);
191
+ if (direction === 'up') {
192
+ setSelectedCommandIndex(prev => (prev > 0 ? prev - 1 : filteredCount - 1));
193
+ }
194
+ else {
195
+ setSelectedCommandIndex(prev => (prev < filteredCount - 1 ? prev + 1 : 0));
196
+ }
197
+ };
198
+ // Handle Ctrl+C to exit and Escape to close slash mode
199
+ useInput((input, key) => {
200
+ if (key.ctrl && input === 'c') {
201
+ if (onExit) {
202
+ onExit();
203
+ }
204
+ else {
205
+ process.exit(0);
206
+ }
207
+ }
208
+ // Close slash mode with Escape key
209
+ if (key.escape && slashMode) {
210
+ handleSlashCancel();
211
+ }
212
+ // Tab autocomplete in slash mode
213
+ if (key.tab && slashMode) {
214
+ const searchQuery = commandInput.slice(1); // Remove "/" prefix
215
+ const isLoggedIn = !!userEmail;
216
+ // Apply same filtering logic as SlashCommands
217
+ let commands = filterCommands(searchQuery);
218
+ commands = commands.filter(cmd => {
219
+ if (cmd.name === 'login')
220
+ return !isLoggedIn;
221
+ if (cmd.name === 'logout')
222
+ return isLoggedIn;
223
+ if (cmd.name === 'status')
224
+ return isLoggedIn;
225
+ return true;
226
+ });
227
+ const filteredCmds = commands.slice(0, 10);
228
+ if (filteredCmds.length > 0 && filteredCmds[selectedCommandIndex]) {
229
+ const selectedCommand = filteredCmds[selectedCommandIndex].name;
230
+ setCommandInput(`/${selectedCommand}`);
231
+ }
232
+ }
233
+ });
234
+ // Don't render until data is loaded to prevent double rendering
235
+ if (!isLoaded) {
236
+ return null;
237
+ }
238
+ return (React.createElement(Box, { flexDirection: "column" },
239
+ React.createElement(Logo, { version: version, directory: directory, userEmail: userEmail }),
240
+ sessionHistory.length > 0 && (React.createElement(Box, { flexDirection: "column", marginTop: 1 }, sessionHistory.map((entry, index) => {
241
+ const uniqueKey = `history-${index}-${entry.type}-${entry.spinnerId || ''}`;
242
+ if (entry.type === 'prompt') {
243
+ return (React.createElement(Box, { key: uniqueKey },
244
+ React.createElement(Text, null, entry.content)));
245
+ }
246
+ else if (entry.type === 'response') {
247
+ return (React.createElement(Box, { key: uniqueKey },
248
+ React.createElement(Text, { dimColor: true }, "\u276F "),
249
+ React.createElement(Text, null, entry.content)));
250
+ }
251
+ else if (entry.type === 'success') {
252
+ // Split checkmark from text: "✓ Message" -> "✓ " + "Message"
253
+ const hasCheckmark = entry.content.startsWith('✓ ');
254
+ if (hasCheckmark) {
255
+ const text = entry.content.substring(2); // Remove "✓ "
256
+ return (React.createElement(Box, { key: uniqueKey },
257
+ React.createElement(Text, { color: "green" }, "\u2713 "),
258
+ React.createElement(Text, null, text)));
259
+ }
260
+ return (React.createElement(Box, { key: uniqueKey },
261
+ React.createElement(Text, { color: "green" }, entry.content)));
262
+ }
263
+ else if (entry.type === 'spinner') {
264
+ return (React.createElement(Box, { key: uniqueKey },
265
+ React.createElement(Spinner, { type: "dots", color: "cyan", message: entry.content })));
266
+ }
267
+ else if (entry.type === 'progress') {
268
+ return (React.createElement(Box, { key: uniqueKey },
269
+ React.createElement(Text, { color: "cyan" }, entry.content)));
270
+ }
271
+ else if (entry.type === 'error') {
272
+ return (React.createElement(Box, { key: uniqueKey },
273
+ React.createElement(Text, { color: "red" }, entry.content)));
274
+ }
275
+ else {
276
+ // Default info type
277
+ const textColor = entry.color === 'dim' ? undefined : entry.color;
278
+ const isDim = entry.color === 'dim';
279
+ const needsTopMargin = entry.spinnerId === 'command-separator';
280
+ return (React.createElement(Box, { key: uniqueKey, marginTop: needsTopMargin ? 1 : 0 },
281
+ React.createElement(Text, { color: textColor, dimColor: isDim }, entry.content)));
282
+ }
283
+ }))),
284
+ showInput && (React.createElement(Box, { key: "input-view", flexDirection: "column" },
285
+ React.createElement(Box, { flexDirection: "column" },
286
+ React.createElement(Text, { dimColor: true }, '─'.repeat(process.stdout.columns || 80)),
287
+ React.createElement(Box, null,
288
+ React.createElement(Text, null,
289
+ chalk.white('❯'),
290
+ " "),
291
+ React.createElement(TextInput, { value: commandInput, onChange: setCommandInput, onSubmit: handleSubmit, placeholder: "Type / for commands..." })),
292
+ React.createElement(Text, { dimColor: true }, '─'.repeat(process.stdout.columns || 80))),
293
+ slashMode && (React.createElement(Box, { key: "slash-commands-list" },
294
+ React.createElement(SlashCommands, { searchQuery: commandInput.slice(1), onSelect: handleSlashSelect, onCancel: handleSlashCancel, selectedIndex: selectedCommandIndex, onNavigate: handleCommandNavigation, isLoggedIn: !!userEmail })))))));
295
+ };
296
+ export default WelcomeScreen;
297
+ //# sourceMappingURL=WelcomeScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WelcomeScreen.js","sourceRoot":"","sources":["../../src/screens/WelcomeScreen.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { HistoryEntry } from '../components/App.js';
3
+ interface WhoamiScreenProps {
4
+ onExit?: () => void;
5
+ sessionHistory?: HistoryEntry[];
6
+ addToHistory?: (entry: HistoryEntry | HistoryEntry[]) => void;
7
+ }
8
+ /**
9
+ * WhoamiScreen Component
10
+ * Displays current user information in chat history format
11
+ */
12
+ export declare const WhoamiScreen: React.FC<WhoamiScreenProps>;
13
+ export default WhoamiScreen;
14
+ //# sourceMappingURL=WhoamiScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WhoamiScreen.d.ts","sourceRoot":"","sources":["../../src/screens/WhoamiScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AASnD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC;IAChC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,EAAE,KAAK,IAAI,CAAC;CAC/D;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA4NpD,CAAC;AAEF,eAAe,YAAY,CAAC"}