@pupt/cli 0.0.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +54 -29
  3. package/dist/annotations/annotation-analyzer.d.ts +17 -0
  4. package/dist/annotations/annotation-analyzer.d.ts.map +1 -0
  5. package/dist/annotations/annotation-analyzer.js +145 -0
  6. package/dist/annotations/annotation-analyzer.js.map +1 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +435 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/commands/add.d.ts +5 -0
  12. package/dist/commands/add.d.ts.map +1 -0
  13. package/dist/commands/add.js +164 -0
  14. package/dist/commands/add.js.map +1 -0
  15. package/dist/commands/annotate.d.ts +2 -0
  16. package/dist/commands/annotate.d.ts.map +1 -0
  17. package/dist/commands/annotate.js +99 -0
  18. package/dist/commands/annotate.js.map +1 -0
  19. package/dist/commands/base-command.d.ts +23 -0
  20. package/dist/commands/base-command.d.ts.map +1 -0
  21. package/dist/commands/base-command.js +41 -0
  22. package/dist/commands/base-command.js.map +1 -0
  23. package/dist/commands/cache.d.ts +9 -0
  24. package/dist/commands/cache.d.ts.map +1 -0
  25. package/dist/commands/cache.js +31 -0
  26. package/dist/commands/cache.js.map +1 -0
  27. package/dist/commands/config.d.ts +8 -0
  28. package/dist/commands/config.d.ts.map +1 -0
  29. package/dist/commands/config.js +93 -0
  30. package/dist/commands/config.js.map +1 -0
  31. package/dist/commands/edit.d.ts +2 -0
  32. package/dist/commands/edit.d.ts.map +1 -0
  33. package/dist/commands/edit.js +35 -0
  34. package/dist/commands/edit.js.map +1 -0
  35. package/dist/commands/help.d.ts +2 -0
  36. package/dist/commands/help.d.ts.map +1 -0
  37. package/dist/commands/help.js +26 -0
  38. package/dist/commands/help.js.map +1 -0
  39. package/dist/commands/history.d.ts +12 -0
  40. package/dist/commands/history.d.ts.map +1 -0
  41. package/dist/commands/history.js +317 -0
  42. package/dist/commands/history.js.map +1 -0
  43. package/dist/commands/init.d.ts +2 -0
  44. package/dist/commands/init.d.ts.map +1 -0
  45. package/dist/commands/init.js +137 -0
  46. package/dist/commands/init.js.map +1 -0
  47. package/dist/commands/install.d.ts +16 -0
  48. package/dist/commands/install.d.ts.map +1 -0
  49. package/dist/commands/install.js +263 -0
  50. package/dist/commands/install.js.map +1 -0
  51. package/dist/commands/review.d.ts +3 -0
  52. package/dist/commands/review.d.ts.map +1 -0
  53. package/dist/commands/review.js +160 -0
  54. package/dist/commands/review.js.map +1 -0
  55. package/dist/commands/run.d.ts +32 -0
  56. package/dist/commands/run.d.ts.map +1 -0
  57. package/dist/commands/run.js +367 -0
  58. package/dist/commands/run.js.map +1 -0
  59. package/dist/commands/uninstall.d.ts +2 -0
  60. package/dist/commands/uninstall.d.ts.map +1 -0
  61. package/dist/commands/uninstall.js +45 -0
  62. package/dist/commands/uninstall.js.map +1 -0
  63. package/dist/commands/update.d.ts +2 -0
  64. package/dist/commands/update.d.ts.map +1 -0
  65. package/dist/commands/update.js +113 -0
  66. package/dist/commands/update.js.map +1 -0
  67. package/dist/config/config-manager.d.ts +19 -0
  68. package/dist/config/config-manager.d.ts.map +1 -0
  69. package/dist/config/config-manager.js +221 -0
  70. package/dist/config/config-manager.js.map +1 -0
  71. package/dist/config/global-paths.d.ts +5 -0
  72. package/dist/config/global-paths.d.ts.map +1 -0
  73. package/dist/config/global-paths.js +16 -0
  74. package/dist/config/global-paths.js.map +1 -0
  75. package/dist/config/migration.d.ts +12 -0
  76. package/dist/config/migration.d.ts.map +1 -0
  77. package/dist/config/migration.js +270 -0
  78. package/dist/config/migration.js.map +1 -0
  79. package/dist/history/enhanced-history-manager.d.ts +27 -0
  80. package/dist/history/enhanced-history-manager.d.ts.map +1 -0
  81. package/dist/history/enhanced-history-manager.js +116 -0
  82. package/dist/history/enhanced-history-manager.js.map +1 -0
  83. package/dist/history/history-manager.d.ts +43 -0
  84. package/dist/history/history-manager.d.ts.map +1 -0
  85. package/dist/history/history-manager.js +229 -0
  86. package/dist/history/history-manager.js.map +1 -0
  87. package/dist/index.d.ts +6 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +6 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/prompts/input-types/file-search-prompt.d.ts +11 -0
  92. package/dist/prompts/input-types/file-search-prompt.d.ts.map +1 -0
  93. package/dist/prompts/input-types/file-search-prompt.js +53 -0
  94. package/dist/prompts/input-types/file-search-prompt.js.map +1 -0
  95. package/dist/prompts/input-types/review-file-prompt.d.ts +3 -0
  96. package/dist/prompts/input-types/review-file-prompt.d.ts.map +1 -0
  97. package/dist/prompts/input-types/review-file-prompt.js +9 -0
  98. package/dist/prompts/input-types/review-file-prompt.js.map +1 -0
  99. package/dist/schemas/config-schema.d.ts +1637 -0
  100. package/dist/schemas/config-schema.d.ts.map +1 -0
  101. package/dist/schemas/config-schema.js +136 -0
  102. package/dist/schemas/config-schema.js.map +1 -0
  103. package/dist/search/search-engine.d.ts +8 -0
  104. package/dist/search/search-engine.d.ts.map +1 -0
  105. package/dist/search/search-engine.js +53 -0
  106. package/dist/search/search-engine.js.map +1 -0
  107. package/dist/services/git-service.d.ts +28 -0
  108. package/dist/services/git-service.d.ts.map +1 -0
  109. package/dist/services/git-service.js +157 -0
  110. package/dist/services/git-service.js.map +1 -0
  111. package/dist/services/input-collector.d.ts +9 -0
  112. package/dist/services/input-collector.d.ts.map +1 -0
  113. package/dist/services/input-collector.js +162 -0
  114. package/dist/services/input-collector.js.map +1 -0
  115. package/dist/services/logging-service.d.ts +49 -0
  116. package/dist/services/logging-service.d.ts.map +1 -0
  117. package/dist/services/logging-service.js +203 -0
  118. package/dist/services/logging-service.js.map +1 -0
  119. package/dist/services/module-cache.d.ts +42 -0
  120. package/dist/services/module-cache.d.ts.map +1 -0
  121. package/dist/services/module-cache.js +205 -0
  122. package/dist/services/module-cache.js.map +1 -0
  123. package/dist/services/module-entry-builder.d.ts +20 -0
  124. package/dist/services/module-entry-builder.d.ts.map +1 -0
  125. package/dist/services/module-entry-builder.js +71 -0
  126. package/dist/services/module-entry-builder.js.map +1 -0
  127. package/dist/services/output-capture-service.d.ts +28 -0
  128. package/dist/services/output-capture-service.d.ts.map +1 -0
  129. package/dist/services/output-capture-service.js +348 -0
  130. package/dist/services/output-capture-service.js.map +1 -0
  131. package/dist/services/package-manager.d.ts +18 -0
  132. package/dist/services/package-manager.d.ts.map +1 -0
  133. package/dist/services/package-manager.js +141 -0
  134. package/dist/services/package-manager.js.map +1 -0
  135. package/dist/services/pattern-detector.d.ts +15 -0
  136. package/dist/services/pattern-detector.d.ts.map +1 -0
  137. package/dist/services/pattern-detector.js +228 -0
  138. package/dist/services/pattern-detector.js.map +1 -0
  139. package/dist/services/prompt-resolver.d.ts +32 -0
  140. package/dist/services/prompt-resolver.d.ts.map +1 -0
  141. package/dist/services/prompt-resolver.js +73 -0
  142. package/dist/services/prompt-resolver.js.map +1 -0
  143. package/dist/services/pupt-prompt-source.d.ts +16 -0
  144. package/dist/services/pupt-prompt-source.d.ts.map +1 -0
  145. package/dist/services/pupt-prompt-source.js +74 -0
  146. package/dist/services/pupt-prompt-source.js.map +1 -0
  147. package/dist/services/pupt-service.d.ts +33 -0
  148. package/dist/services/pupt-service.d.ts.map +1 -0
  149. package/dist/services/pupt-service.js +119 -0
  150. package/dist/services/pupt-service.js.map +1 -0
  151. package/dist/services/review-data-builder.d.ts +25 -0
  152. package/dist/services/review-data-builder.d.ts.map +1 -0
  153. package/dist/services/review-data-builder.js +333 -0
  154. package/dist/services/review-data-builder.js.map +1 -0
  155. package/dist/services/suggestion-generator.d.ts +11 -0
  156. package/dist/services/suggestion-generator.d.ts.map +1 -0
  157. package/dist/services/suggestion-generator.js +158 -0
  158. package/dist/services/suggestion-generator.js.map +1 -0
  159. package/dist/services/ui-service.d.ts +49 -0
  160. package/dist/services/ui-service.d.ts.map +1 -0
  161. package/dist/services/ui-service.js +196 -0
  162. package/dist/services/ui-service.js.map +1 -0
  163. package/dist/types/annotations.d.ts +50 -0
  164. package/dist/types/annotations.d.ts.map +1 -0
  165. package/dist/types/annotations.js +2 -0
  166. package/dist/types/annotations.js.map +1 -0
  167. package/dist/types/config.d.ts +110 -0
  168. package/dist/types/config.d.ts.map +1 -0
  169. package/dist/types/config.js +12 -0
  170. package/dist/types/config.js.map +1 -0
  171. package/dist/types/history.d.ts +36 -0
  172. package/dist/types/history.d.ts.map +1 -0
  173. package/dist/types/history.js +2 -0
  174. package/dist/types/history.js.map +1 -0
  175. package/dist/types/patterns.d.ts +25 -0
  176. package/dist/types/patterns.d.ts.map +1 -0
  177. package/dist/types/patterns.js +2 -0
  178. package/dist/types/patterns.js.map +1 -0
  179. package/dist/types/prompt.d.ts +29 -0
  180. package/dist/types/prompt.d.ts.map +1 -0
  181. package/dist/types/prompt.js +24 -0
  182. package/dist/types/prompt.js.map +1 -0
  183. package/dist/types/review.d.ts +81 -0
  184. package/dist/types/review.d.ts.map +1 -0
  185. package/dist/types/review.js +2 -0
  186. package/dist/types/review.js.map +1 -0
  187. package/dist/ui/console-ui.d.ts +30 -0
  188. package/dist/ui/console-ui.d.ts.map +1 -0
  189. package/dist/ui/console-ui.js +88 -0
  190. package/dist/ui/console-ui.js.map +1 -0
  191. package/dist/ui/interactive-search.d.ts +8 -0
  192. package/dist/ui/interactive-search.d.ts.map +1 -0
  193. package/dist/ui/interactive-search.js +29 -0
  194. package/dist/ui/interactive-search.js.map +1 -0
  195. package/dist/utils/annotation-migration.d.ts +12 -0
  196. package/dist/utils/annotation-migration.d.ts.map +1 -0
  197. package/dist/utils/annotation-migration.js +88 -0
  198. package/dist/utils/annotation-migration.js.map +1 -0
  199. package/dist/utils/date-formatter.d.ts +10 -0
  200. package/dist/utils/date-formatter.d.ts.map +1 -0
  201. package/dist/utils/date-formatter.js +46 -0
  202. package/dist/utils/date-formatter.js.map +1 -0
  203. package/dist/utils/editor.d.ts +14 -0
  204. package/dist/utils/editor.d.ts.map +1 -0
  205. package/dist/utils/editor.js +52 -0
  206. package/dist/utils/editor.js.map +1 -0
  207. package/dist/utils/errors.d.ts +58 -0
  208. package/dist/utils/errors.d.ts.map +1 -0
  209. package/dist/utils/errors.js +275 -0
  210. package/dist/utils/errors.js.map +1 -0
  211. package/dist/utils/git-info.d.ts +10 -0
  212. package/dist/utils/git-info.d.ts.map +1 -0
  213. package/dist/utils/git-info.js +44 -0
  214. package/dist/utils/git-info.js.map +1 -0
  215. package/dist/utils/gitignore.d.ts +10 -0
  216. package/dist/utils/gitignore.d.ts.map +1 -0
  217. package/dist/utils/gitignore.js +72 -0
  218. package/dist/utils/gitignore.js.map +1 -0
  219. package/dist/utils/logger.d.ts +39 -0
  220. package/dist/utils/logger.d.ts.map +1 -0
  221. package/dist/utils/logger.js +143 -0
  222. package/dist/utils/logger.js.map +1 -0
  223. package/dist/utils/platform.d.ts +9 -0
  224. package/dist/utils/platform.d.ts.map +1 -0
  225. package/dist/utils/platform.js +45 -0
  226. package/dist/utils/platform.js.map +1 -0
  227. package/dist/utils/project-root.d.ts +22 -0
  228. package/dist/utils/project-root.d.ts.map +1 -0
  229. package/dist/utils/project-root.js +226 -0
  230. package/dist/utils/project-root.js.map +1 -0
  231. package/dist/utils/prompt-dir-resolver.d.ts +5 -0
  232. package/dist/utils/prompt-dir-resolver.d.ts.map +1 -0
  233. package/dist/utils/prompt-dir-resolver.js +25 -0
  234. package/dist/utils/prompt-dir-resolver.js.map +1 -0
  235. package/dist/utils/security.d.ts +5 -0
  236. package/dist/utils/security.d.ts.map +1 -0
  237. package/dist/utils/security.js +57 -0
  238. package/dist/utils/security.js.map +1 -0
  239. package/dist/utils/tool-detection.d.ts +14 -0
  240. package/dist/utils/tool-detection.d.ts.map +1 -0
  241. package/dist/utils/tool-detection.js +43 -0
  242. package/dist/utils/tool-detection.js.map +1 -0
  243. package/package.json +79 -7
  244. package/prompts/prompts/ad-hoc-long.prompt +60 -0
  245. package/prompts/prompts/ad-hoc.prompt +29 -0
  246. package/prompts/prompts/code-review.prompt +99 -0
  247. package/prompts/prompts/debugging-error-message.prompt +81 -0
  248. package/prompts/prompts/fix-github-actions.prompt +62 -0
  249. package/prompts/prompts/fix-test-errors.prompt +73 -0
  250. package/prompts/prompts/git-commit-comment.prompt +61 -0
  251. package/prompts/prompts/implementation-phase.prompt +53 -0
  252. package/prompts/prompts/implementation-plan.prompt +101 -0
  253. package/prompts/prompts/new-feature.prompt +89 -0
  254. package/prompts/prompts/new-project.prompt +9 -0
  255. package/prompts/prompts/one-shot-change.prompt +79 -0
  256. package/prompts/prompts/pupt-prompt-improvement.prompt +270 -0
  257. package/prompts/prompts/simple-test.prompt +8 -0
  258. package/prompts/prompts/update-design.prompt +71 -0
  259. package/prompts/prompts/update-documentation.prompt +6 -0
@@ -0,0 +1,275 @@
1
+ import chalk from 'chalk';
2
+ import { logger } from './logger.js';
3
+ export var ErrorCategory;
4
+ (function (ErrorCategory) {
5
+ ErrorCategory["USER_ERROR"] = "USER_ERROR";
6
+ ErrorCategory["CONFIG_ERROR"] = "CONFIG_ERROR";
7
+ ErrorCategory["FILE_SYSTEM_ERROR"] = "FILE_SYSTEM_ERROR";
8
+ ErrorCategory["NETWORK_ERROR"] = "NETWORK_ERROR";
9
+ ErrorCategory["EXTERNAL_TOOL_ERROR"] = "EXTERNAL_TOOL_ERROR";
10
+ ErrorCategory["SYSTEM_ERROR"] = "SYSTEM_ERROR";
11
+ ErrorCategory["UNKNOWN"] = "UNKNOWN";
12
+ })(ErrorCategory || (ErrorCategory = {}));
13
+ export var ErrorSeverity;
14
+ (function (ErrorSeverity) {
15
+ ErrorSeverity["WARNING"] = "WARNING";
16
+ ErrorSeverity["ERROR"] = "ERROR";
17
+ ErrorSeverity["FATAL"] = "FATAL";
18
+ })(ErrorSeverity || (ErrorSeverity = {}));
19
+ export class PromptToolError extends Error {
20
+ code;
21
+ category;
22
+ severity;
23
+ suggestions;
24
+ icon;
25
+ constructor(message, code, category = ErrorCategory.UNKNOWN, severity = ErrorSeverity.ERROR, suggestions = [], icon = '❌') {
26
+ super(message);
27
+ this.code = code;
28
+ this.category = category;
29
+ this.severity = severity;
30
+ this.suggestions = suggestions;
31
+ this.icon = icon;
32
+ this.name = 'PromptToolError';
33
+ }
34
+ }
35
+ export function createError(options) {
36
+ return new PromptToolError(options.message, options.code, options.category ?? ErrorCategory.UNKNOWN, options.severity ?? ErrorSeverity.ERROR, options.suggestions ?? [], options.icon ?? '❌');
37
+ }
38
+ export function isRecoverableError(error) {
39
+ if (!(error instanceof PromptToolError)) {
40
+ return false;
41
+ }
42
+ if (error.severity === ErrorSeverity.FATAL) {
43
+ return false;
44
+ }
45
+ const recoverableCategories = [
46
+ ErrorCategory.USER_ERROR,
47
+ ErrorCategory.CONFIG_ERROR,
48
+ ErrorCategory.NETWORK_ERROR,
49
+ ErrorCategory.EXTERNAL_TOOL_ERROR
50
+ ];
51
+ return recoverableCategories.includes(error.category);
52
+ }
53
+ export function getErrorCategory(error) {
54
+ if (error instanceof PromptToolError) {
55
+ return error.category;
56
+ }
57
+ return ErrorCategory.UNKNOWN;
58
+ }
59
+ export function displayError(error) {
60
+ if (error instanceof PromptToolError) {
61
+ let prefix;
62
+ if (error.severity === ErrorSeverity.FATAL) {
63
+ prefix = chalk.bgRed.white(' FATAL ERROR: ');
64
+ }
65
+ else if (error.severity === ErrorSeverity.WARNING) {
66
+ prefix = chalk.yellow('Warning:');
67
+ }
68
+ else {
69
+ prefix = chalk.red('Error:');
70
+ }
71
+ const displayFn = error.severity === ErrorSeverity.WARNING ? logger.warn.bind(logger) : logger.error.bind(logger);
72
+ displayFn(`${error.icon} ${prefix} ${error.message}`);
73
+ if (error.suggestions.length > 0) {
74
+ displayFn(chalk.yellow('\n💡 Suggestions:'));
75
+ error.suggestions.forEach(suggestion => {
76
+ displayFn(chalk.dim(` • ${suggestion.text}`));
77
+ if (suggestion.command) {
78
+ displayFn(chalk.green(` ▶️ ${suggestion.command}`));
79
+ }
80
+ });
81
+ }
82
+ }
83
+ else {
84
+ logger.error(chalk.red('Error:'), error.message);
85
+ }
86
+ if (process.env.DEBUG === 'true') {
87
+ logger.error(chalk.dim('\nStack trace:'));
88
+ logger.error(chalk.dim(error.stack || 'No stack trace available'));
89
+ }
90
+ }
91
+ // Common error creators
92
+ export const errors = {
93
+ // File System Errors
94
+ fileNotFound: (path) => createError({
95
+ message: `File not found: ${path}`,
96
+ code: 'FILE_NOT_FOUND',
97
+ category: ErrorCategory.FILE_SYSTEM_ERROR,
98
+ suggestions: [
99
+ { text: 'Check if the file exists', command: `ls -la "${path}"` },
100
+ { text: 'Verify the path is correct' },
101
+ { text: 'Use absolute paths to avoid confusion' }
102
+ ],
103
+ icon: '📄'
104
+ }),
105
+ permissionDenied: (path) => createError({
106
+ message: `Permission denied: ${path}`,
107
+ code: 'PERMISSION_DENIED',
108
+ category: ErrorCategory.FILE_SYSTEM_ERROR,
109
+ suggestions: [
110
+ { text: 'Check directory permissions', command: `ls -la "${path}"` },
111
+ { text: 'Fix permissions', command: `chmod 755 "${path}"` },
112
+ { text: 'Ensure directory exists', command: `mkdir -p "${path}"` }
113
+ ],
114
+ icon: '🔒'
115
+ }),
116
+ // User Errors
117
+ noPromptsFound: (dirs) => createError({
118
+ message: `No prompts found in: ${dirs.join(', ')}`,
119
+ code: 'NO_PROMPTS',
120
+ category: ErrorCategory.USER_ERROR,
121
+ suggestions: [
122
+ { text: 'Create a new prompt interactively', command: 'pt add' },
123
+ { text: `Create a .prompt file in one of the directories` }
124
+ ],
125
+ icon: '🔍'
126
+ }),
127
+ validationError: (field, format, example) => createError({
128
+ message: `Invalid ${field}`,
129
+ code: 'VALIDATION_ERROR',
130
+ category: ErrorCategory.USER_ERROR,
131
+ severity: ErrorSeverity.WARNING,
132
+ suggestions: [
133
+ { text: `Expected format: ${format}` },
134
+ { text: `Example: ${example}` }
135
+ ],
136
+ icon: '✏️'
137
+ }),
138
+ templateError: (template, details) => createError({
139
+ message: `Template error in "${template}": ${details}`,
140
+ code: 'TEMPLATE_ERROR',
141
+ category: ErrorCategory.USER_ERROR,
142
+ suggestions: [
143
+ { text: 'Check template syntax' },
144
+ { text: 'Ensure all helpers are closed properly' },
145
+ { text: 'Verify variable names are correct' }
146
+ ],
147
+ icon: '📝'
148
+ }),
149
+ // Configuration Errors
150
+ configMissing: () => createError({
151
+ message: 'No configuration found',
152
+ code: 'NO_CONFIG',
153
+ category: ErrorCategory.CONFIG_ERROR,
154
+ suggestions: [
155
+ { text: 'Initialize configuration', command: 'pt init' }
156
+ ],
157
+ icon: '⚙️'
158
+ }),
159
+ invalidConfig: (field, expected, actual) => createError({
160
+ message: `Configuration error: '${field}' must be ${expected} (found: ${typeof actual})`,
161
+ code: 'INVALID_CONFIG',
162
+ category: ErrorCategory.CONFIG_ERROR,
163
+ suggestions: [
164
+ { text: `Edit .pt-config.json and fix the '${field}' value` },
165
+ { text: `Expected format: ${expected}` }
166
+ ],
167
+ icon: '⚙️'
168
+ }),
169
+ featureNotEnabled: (feature, benefits) => createError({
170
+ message: `${feature} is not enabled`,
171
+ code: 'FEATURE_DISABLED',
172
+ category: ErrorCategory.CONFIG_ERROR,
173
+ severity: ErrorSeverity.WARNING,
174
+ suggestions: [
175
+ { text: 'Enable it by running:', command: 'pt init' },
176
+ { text: `Benefits: ${benefits.join(', ')}` }
177
+ ],
178
+ icon: '🎯'
179
+ }),
180
+ // External Tool Errors
181
+ toolNotFound: (tool, suggestions = []) => createError({
182
+ message: `Tool '${tool}' not found`,
183
+ code: 'TOOL_NOT_FOUND',
184
+ category: ErrorCategory.EXTERNAL_TOOL_ERROR,
185
+ suggestions: [
186
+ ...suggestions.map(s => ({ text: `Did you mean '${s}'?` })),
187
+ { text: 'Check if installed', command: `which ${tool}` },
188
+ { text: 'Install if needed', command: `npm install -g ${tool}` }
189
+ ],
190
+ icon: '🔧'
191
+ }),
192
+ noEditor: () => createError({
193
+ message: 'No editor configured',
194
+ code: 'NO_EDITOR',
195
+ category: ErrorCategory.EXTERNAL_TOOL_ERROR,
196
+ suggestions: [
197
+ { text: 'Set your editor:', command: 'export EDITOR=vim' },
198
+ { text: 'For VS Code:', command: 'export EDITOR="code --wait"' },
199
+ { text: 'Add to your shell profile to make permanent' }
200
+ ],
201
+ icon: '✏️'
202
+ }),
203
+ gitError: (details) => createError({
204
+ message: `Git error: ${details}`,
205
+ code: 'GIT_ERROR',
206
+ category: ErrorCategory.EXTERNAL_TOOL_ERROR,
207
+ suggestions: [
208
+ { text: 'Check git status', command: 'git status' },
209
+ { text: 'View git log', command: 'git log --oneline -5' },
210
+ { text: 'Ensure you\'re in a git repository' }
211
+ ],
212
+ icon: '🔗'
213
+ }),
214
+ gitNotInstalled: () => createError({
215
+ message: 'Git is not installed',
216
+ code: 'GIT_NOT_INSTALLED',
217
+ category: ErrorCategory.EXTERNAL_TOOL_ERROR,
218
+ suggestions: [
219
+ { text: 'Install git for your platform' },
220
+ { text: 'macOS:', command: 'brew install git' },
221
+ { text: 'Ubuntu/Debian:', command: 'sudo apt-get install git' },
222
+ { text: 'Visit https://git-scm.com/downloads for more options' }
223
+ ],
224
+ icon: '🔗'
225
+ }),
226
+ // Network Errors
227
+ networkError: (url, details) => createError({
228
+ message: `Network error accessing ${url}: ${details}`,
229
+ code: 'NETWORK_ERROR',
230
+ category: ErrorCategory.NETWORK_ERROR,
231
+ suggestions: [
232
+ { text: 'Check your internet connection' },
233
+ { text: 'Verify the URL is correct' },
234
+ { text: 'Try again in a few moments' },
235
+ { text: 'Check if you need to configure a proxy' }
236
+ ],
237
+ icon: '🌐'
238
+ }),
239
+ // History Errors
240
+ historyNotFound: (index, total) => createError({
241
+ message: `History entry #${index} not found`,
242
+ code: 'HISTORY_NOT_FOUND',
243
+ category: ErrorCategory.USER_ERROR,
244
+ severity: ErrorSeverity.WARNING,
245
+ suggestions: [
246
+ { text: `Available entries: 1-${total}` },
247
+ { text: 'View all entries', command: 'pt history' }
248
+ ],
249
+ icon: '📋'
250
+ }),
251
+ // Prompt Errors
252
+ promptNotFound: (name) => createError({
253
+ message: `Prompt '${name}' not found`,
254
+ code: 'PROMPT_NOT_FOUND',
255
+ category: ErrorCategory.USER_ERROR,
256
+ suggestions: [
257
+ { text: 'List available prompts', command: 'pt' },
258
+ { text: 'Check prompt name or filename' },
259
+ { text: 'Create a new prompt', command: 'pt add' }
260
+ ],
261
+ icon: '🔍'
262
+ }),
263
+ commandNotFound: (command, suggestions = [], availableCommands = []) => createError({
264
+ message: `Unknown command: '${command}'`,
265
+ code: 'COMMAND_NOT_FOUND',
266
+ category: ErrorCategory.USER_ERROR,
267
+ suggestions: [
268
+ ...suggestions.map(s => ({ text: `Did you mean '${s}'?`, command: `pt ${s}` })),
269
+ ...(availableCommands.length > 0 ? [{ text: `Available commands: ${availableCommands.join(', ')}` }] : []),
270
+ { text: 'Show help', command: 'pt help' }
271
+ ],
272
+ icon: '❓'
273
+ })
274
+ };
275
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ interface GitInfo {
2
+ branch?: string;
3
+ commit?: string;
4
+ isDirty?: boolean;
5
+ gitDir?: string;
6
+ }
7
+ export declare function getGitInfo(): Promise<GitInfo>;
8
+ export declare function formatDuration(startTime: Date, endTime: Date): string;
9
+ export {};
10
+ //# sourceMappingURL=git-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-info.d.ts","sourceRoot":"","sources":["../../src/utils/git-info.ts"],"names":[],"mappings":"AAKA,UAAU,OAAO;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAyBnD;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,MAAM,CAuBrE"}
@@ -0,0 +1,44 @@
1
+ import { exec } from 'child_process';
2
+ import { promisify } from 'util';
3
+ const execAsync = promisify(exec);
4
+ export async function getGitInfo() {
5
+ const info = {};
6
+ try {
7
+ // Get current branch
8
+ const branchResult = await execAsync('git rev-parse --abbrev-ref HEAD');
9
+ info.branch = branchResult.stdout.trim();
10
+ // Get current commit hash
11
+ const commitResult = await execAsync('git rev-parse HEAD');
12
+ info.commit = commitResult.stdout.trim();
13
+ // Check if working directory is dirty
14
+ const statusResult = await execAsync('git status --porcelain');
15
+ info.isDirty = statusResult.stdout.trim().length > 0;
16
+ // Get the git directory (important for worktrees)
17
+ const gitDirResult = await execAsync('git rev-parse --absolute-git-dir');
18
+ info.gitDir = gitDirResult.stdout.trim();
19
+ }
20
+ catch {
21
+ // Not a git repository or git not available
22
+ // Return partial info - don't throw
23
+ }
24
+ return info;
25
+ }
26
+ export function formatDuration(startTime, endTime) {
27
+ const durationMs = endTime.getTime() - startTime.getTime();
28
+ const seconds = Math.floor(durationMs / 1000);
29
+ if (seconds < 60) {
30
+ return `${seconds}s`;
31
+ }
32
+ const minutes = Math.floor(seconds / 60);
33
+ const remainingSeconds = seconds % 60;
34
+ if (minutes < 60) {
35
+ return remainingSeconds > 0 ? `${minutes}m ${remainingSeconds}s` : `${minutes}m`;
36
+ }
37
+ const hours = Math.floor(minutes / 60);
38
+ const remainingMinutes = minutes % 60;
39
+ if (remainingMinutes > 0) {
40
+ return `${hours}h ${remainingMinutes}m`;
41
+ }
42
+ return `${hours}h`;
43
+ }
44
+ //# sourceMappingURL=git-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-info.js","sourceRoot":"","sources":["../../src/utils/git-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AASlC,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,IAAI,GAAY,EAAE,CAAC;IAEzB,IAAI,CAAC;QACH,qBAAqB;QACrB,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,iCAAiC,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAEzC,0BAA0B;QAC1B,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAEzC,sCAAsC;QACtC,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAErD,kDAAkD;QAClD,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,kCAAkC,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,4CAA4C;QAC5C,oCAAoC;IACtC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,SAAe,EAAE,OAAa;IAC3D,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAE9C,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;QACjB,OAAO,GAAG,OAAO,GAAG,CAAC;IACvB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACzC,MAAM,gBAAgB,GAAG,OAAO,GAAG,EAAE,CAAC;IAEtC,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;QACjB,OAAO,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,gBAAgB,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC;IACnF,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACvC,MAAM,gBAAgB,GAAG,OAAO,GAAG,EAAE,CAAC;IAEtC,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,GAAG,KAAK,KAAK,gBAAgB,GAAG,CAAC;IAC1C,CAAC;IAED,OAAO,GAAG,KAAK,GAAG,CAAC;AACrB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { SimpleGit } from 'simple-git';
2
+ /**
3
+ * Check if current directory is a git repository
4
+ */
5
+ export declare function isGitRepository(git?: SimpleGit): Promise<boolean>;
6
+ /**
7
+ * Add entry to .gitignore file
8
+ */
9
+ export declare function addToGitignore(entry: string): Promise<void>;
10
+ //# sourceMappingURL=gitignore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitignore.d.ts","sourceRoot":"","sources":["../../src/utils/gitignore.ts"],"names":[],"mappings":"AAGA,OAAkB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAElD;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,GAAE,SAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,CAMpF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DjE"}
@@ -0,0 +1,72 @@
1
+ import path from 'node:path';
2
+ import fs from 'fs-extra';
3
+ import simpleGit from 'simple-git';
4
+ /**
5
+ * Check if current directory is a git repository
6
+ */
7
+ export async function isGitRepository(git = simpleGit()) {
8
+ try {
9
+ return await git.checkIsRepo();
10
+ }
11
+ catch {
12
+ return false;
13
+ }
14
+ }
15
+ /**
16
+ * Add entry to .gitignore file
17
+ */
18
+ export async function addToGitignore(entry) {
19
+ const gitignorePath = path.join(process.cwd(), '.gitignore');
20
+ let gitignoreContent = '';
21
+ let exists = false;
22
+ try {
23
+ gitignoreContent = await fs.readFile(gitignorePath, 'utf-8');
24
+ exists = true;
25
+ }
26
+ catch {
27
+ // File doesn't exist, will create it
28
+ gitignoreContent = '';
29
+ }
30
+ // Check if entry already exists
31
+ const lines = gitignoreContent.split('\n');
32
+ const entryExists = lines.some(line => line.trim() === entry);
33
+ if (entryExists) {
34
+ return; // Entry already exists, nothing to do
35
+ }
36
+ // Check if PUPT section exists
37
+ const promptToolSectionIndex = lines.findIndex(line => line.trim() === '# PUPT');
38
+ if (promptToolSectionIndex !== -1) {
39
+ // Add to existing PUPT section
40
+ // Find the end of the section (next comment or end of file)
41
+ let insertIndex = promptToolSectionIndex + 1;
42
+ while (insertIndex < lines.length &&
43
+ lines[insertIndex].trim() !== '' &&
44
+ !lines[insertIndex].trim().startsWith('#')) {
45
+ insertIndex++;
46
+ }
47
+ // Insert the new entry
48
+ lines.splice(insertIndex, 0, entry);
49
+ }
50
+ else {
51
+ // Add new PUPT section
52
+ // Ensure there's a newline before the section if file has content
53
+ if (exists && gitignoreContent.trim() !== '') {
54
+ if (!gitignoreContent.endsWith('\n')) {
55
+ lines.push(''); // Add empty line
56
+ }
57
+ lines.push(''); // Add separator line
58
+ }
59
+ else if (!exists || gitignoreContent === '') {
60
+ // For new files, remove the initial empty line
61
+ if (lines.length === 1 && lines[0] === '') {
62
+ lines.pop();
63
+ }
64
+ }
65
+ lines.push('# PUPT');
66
+ lines.push(entry);
67
+ }
68
+ // Write back to file
69
+ const newContent = lines.join('\n');
70
+ await fs.writeFile(gitignorePath, newContent.endsWith('\n') ? newContent : `${newContent}\n`, 'utf-8');
71
+ }
72
+ //# sourceMappingURL=gitignore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitignore.js","sourceRoot":"","sources":["../../src/utils/gitignore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Platform-aware logger that ensures consistent line endings
3
+ * and prevents null characters in output
4
+ */
5
+ export declare class Logger {
6
+ private static instance;
7
+ private readonly lineEnding;
8
+ private constructor();
9
+ static getInstance(): Logger;
10
+ /**
11
+ * Sanitizes a string for output:
12
+ * - Removes null characters
13
+ * - Normalizes line endings to platform-specific format
14
+ * - Removes trailing newlines to prevent double spacing
15
+ */
16
+ private sanitize;
17
+ /**
18
+ * Logs a message to stdout with proper line endings
19
+ */
20
+ log(...args: unknown[]): void;
21
+ /**
22
+ * Logs an error message to stderr with proper line endings
23
+ */
24
+ error(...args: unknown[]): void;
25
+ /**
26
+ * Logs a message without adding a newline at the end
27
+ */
28
+ write(message: string): void;
29
+ /**
30
+ * Logs a warning message to stderr
31
+ */
32
+ warn(...args: unknown[]): void;
33
+ /**
34
+ * Logs a debug message (only in development/test environments)
35
+ */
36
+ debug(...args: unknown[]): void;
37
+ }
38
+ export declare const logger: Logger;
39
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,OAAO;IAqBP,MAAM,CAAC,WAAW,IAAI,MAAM;IAO5B;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;IAOhB;;OAEG;IACH,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAkB7B;;OAEG;IACH,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAkB/B;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAe5B;;OAEG;IACH,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAkB9B;;OAEG;IACH,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;CAmBhC;AAGD,eAAO,MAAM,MAAM,QAAuB,CAAC"}
@@ -0,0 +1,143 @@
1
+ import os from 'os';
2
+ /**
3
+ * Platform-aware logger that ensures consistent line endings
4
+ * and prevents null characters in output
5
+ */
6
+ export class Logger {
7
+ static instance;
8
+ lineEnding;
9
+ constructor() {
10
+ // Use platform-specific line endings
11
+ this.lineEnding = os.platform() === 'win32' ? '\r\n' : '\n';
12
+ // Handle EPIPE errors gracefully when output is piped
13
+ // Increase max listeners to avoid warnings in tests
14
+ process.stdout.setMaxListeners(process.stdout.getMaxListeners() + 1);
15
+ process.stderr.setMaxListeners(process.stderr.getMaxListeners() + 1);
16
+ const handlePipeError = (error) => {
17
+ if (error.code === 'EPIPE') {
18
+ // Silently ignore EPIPE errors - this is normal when piping to less/head/etc
19
+ // Don't exit, just stop writing
20
+ return;
21
+ }
22
+ };
23
+ process.stdout.on('error', handlePipeError);
24
+ process.stderr.on('error', handlePipeError);
25
+ }
26
+ static getInstance() {
27
+ if (!Logger.instance) {
28
+ Logger.instance = new Logger();
29
+ }
30
+ return Logger.instance;
31
+ }
32
+ /**
33
+ * Sanitizes a string for output:
34
+ * - Removes null characters
35
+ * - Normalizes line endings to platform-specific format
36
+ * - Removes trailing newlines to prevent double spacing
37
+ */
38
+ sanitize(text) {
39
+ return text
40
+ .replace(/\0/g, '') // Remove null characters
41
+ .replace(/\r\n|\r|\n/g, this.lineEnding) // Normalize line endings
42
+ .replace(/[\r\n]+$/, ''); // Remove trailing newlines
43
+ }
44
+ /**
45
+ * Logs a message to stdout with proper line endings
46
+ */
47
+ log(...args) {
48
+ const message = args.map(arg => typeof arg === 'string' ? arg : String(arg)).join(' ');
49
+ const sanitized = this.sanitize(message);
50
+ try {
51
+ process.stdout.write(sanitized + this.lineEnding);
52
+ }
53
+ catch (error) {
54
+ // Handle EPIPE errors gracefully when output is piped
55
+ if (error.code === 'EPIPE') {
56
+ // Silently ignore - this is normal when piping to less/head/etc
57
+ return;
58
+ }
59
+ // Re-throw other errors
60
+ throw error;
61
+ }
62
+ }
63
+ /**
64
+ * Logs an error message to stderr with proper line endings
65
+ */
66
+ error(...args) {
67
+ const message = args.map(arg => typeof arg === 'string' ? arg : String(arg)).join(' ');
68
+ const sanitized = this.sanitize(message);
69
+ try {
70
+ process.stderr.write(sanitized + this.lineEnding);
71
+ }
72
+ catch (error) {
73
+ // Handle EPIPE errors gracefully when output is piped
74
+ if (error.code === 'EPIPE') {
75
+ // Silently ignore - this is normal when piping to less/head/etc
76
+ return;
77
+ }
78
+ // Re-throw other errors
79
+ throw error;
80
+ }
81
+ }
82
+ /**
83
+ * Logs a message without adding a newline at the end
84
+ */
85
+ write(message) {
86
+ const sanitized = this.sanitize(message);
87
+ try {
88
+ process.stdout.write(sanitized);
89
+ }
90
+ catch (error) {
91
+ // Handle EPIPE errors gracefully when output is piped
92
+ if (error.code === 'EPIPE') {
93
+ // Silently ignore - this is normal when piping to less/head/etc
94
+ return;
95
+ }
96
+ // Re-throw other errors
97
+ throw error;
98
+ }
99
+ }
100
+ /**
101
+ * Logs a warning message to stderr
102
+ */
103
+ warn(...args) {
104
+ const message = args.map(arg => typeof arg === 'string' ? arg : String(arg)).join(' ');
105
+ const sanitized = this.sanitize(message);
106
+ try {
107
+ process.stderr.write(sanitized + this.lineEnding);
108
+ }
109
+ catch (error) {
110
+ // Handle EPIPE errors gracefully when output is piped
111
+ if (error.code === 'EPIPE') {
112
+ // Silently ignore - this is normal when piping to less/head/etc
113
+ return;
114
+ }
115
+ // Re-throw other errors
116
+ throw error;
117
+ }
118
+ }
119
+ /**
120
+ * Logs a debug message (only in development/test environments)
121
+ */
122
+ debug(...args) {
123
+ if (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test' || process.env.DEBUG) {
124
+ const message = args.map(arg => typeof arg === 'string' ? arg : String(arg)).join(' ');
125
+ const sanitized = this.sanitize(`[DEBUG] ${message}`);
126
+ try {
127
+ process.stderr.write(sanitized + this.lineEnding);
128
+ }
129
+ catch (error) {
130
+ // Handle EPIPE errors gracefully when output is piped
131
+ if (error.code === 'EPIPE') {
132
+ // Exit gracefully when pipe is closed
133
+ process.exit(0);
134
+ }
135
+ // Re-throw other errors
136
+ throw error;
137
+ }
138
+ }
139
+ }
140
+ }
141
+ // Export singleton instance
142
+ export const logger = Logger.getInstance();
143
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare function getHomePath(): string;
2
+ export declare function getConfigPaths(): string[];
3
+ export declare function getPlatform(): NodeJS.Platform;
4
+ export declare function isWindows(): boolean;
5
+ export declare function isMacOS(): boolean;
6
+ export declare function isLinux(): boolean;
7
+ export declare function normalizeLineEndings(text: string): string;
8
+ export declare function getUsername(): string;
9
+ //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/utils/platform.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAyBzC;AAED,wBAAgB,WAAW,IAAI,MAAM,CAAC,QAAQ,CAE7C;AAED,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,wBAAgB,OAAO,IAAI,OAAO,CAEjC;AAED,wBAAgB,OAAO,IAAI,OAAO,CAEjC;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,WAAW,IAAI,MAAM,CAEpC"}