@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,317 @@
1
+ import path from 'node:path';
2
+ import chalk from 'chalk';
3
+ import fs from 'fs-extra';
4
+ import { ConfigManager } from '../config/config-manager.js';
5
+ import { HistoryManager } from '../history/history-manager.js';
6
+ import { errors } from '../utils/errors.js';
7
+ import { getGitInfo } from '../utils/git-info.js';
8
+ import { logger } from '../utils/logger.js';
9
+ export async function historyCommand(options) {
10
+ // Load config
11
+ const config = await ConfigManager.load();
12
+ // Check if history is enabled
13
+ if (!config.historyDir) {
14
+ throw errors.featureNotEnabled('History tracking', [
15
+ 'Track all your prompts',
16
+ 'Re-run previous prompts',
17
+ 'Add annotations'
18
+ ]);
19
+ }
20
+ // Create history manager
21
+ const historyManager = new HistoryManager(config.historyDir, config.annotationDir);
22
+ // If --result is specified, show entry with its output
23
+ if (options.result !== undefined) {
24
+ const entry = await historyManager.getHistoryEntry(options.result);
25
+ if (!entry) {
26
+ logger.log(chalk.red(`History entry ${options.result} not found`));
27
+ const totalCount = await historyManager.getTotalCount();
28
+ if (totalCount > 0) {
29
+ logger.log(chalk.dim(`Available entries: 1-${totalCount}`));
30
+ }
31
+ return;
32
+ }
33
+ // Display full entry details
34
+ logger.log(chalk.bold(`\nHistory Entry #${options.result}:`));
35
+ logger.log(chalk.gray('─'.repeat(80)));
36
+ logger.log(`${chalk.cyan('Timestamp:')} ${formatDate(entry.timestamp)}`);
37
+ logger.log(`${chalk.cyan('Title:')} ${entry.title || 'Untitled'}`);
38
+ logger.log(`${chalk.cyan('Template:')} ${entry.templatePath}`);
39
+ if (Object.keys(entry.variables).length > 0) {
40
+ logger.log(chalk.cyan('\nVariables:'));
41
+ for (const [key, value] of Object.entries(entry.variables)) {
42
+ logger.log(` ${chalk.green(key)}: ${JSON.stringify(value)}`);
43
+ }
44
+ }
45
+ logger.log(chalk.cyan('\nFinal Prompt:'));
46
+ logger.log(chalk.gray('─'.repeat(80)));
47
+ logger.log(entry.finalPrompt);
48
+ logger.log(chalk.gray('─'.repeat(80)));
49
+ // Check if output file exists and display it
50
+ if (entry.execution?.output_file) {
51
+ const outputPath = path.join(config.historyDir, entry.execution.output_file);
52
+ try {
53
+ const outputContent = await fs.readFile(outputPath, 'utf-8');
54
+ logger.log(chalk.cyan('\nCommand Output:'));
55
+ logger.log(chalk.gray('─'.repeat(80)));
56
+ logger.log(outputContent);
57
+ logger.log(chalk.gray('─'.repeat(80)));
58
+ }
59
+ catch {
60
+ logger.log(chalk.yellow('\nOutput file not found or inaccessible'));
61
+ }
62
+ }
63
+ else {
64
+ logger.log(chalk.dim('\nNo output file associated with this entry'));
65
+ }
66
+ logger.log(chalk.dim(`\nHistory file: ${entry.filename}`));
67
+ return;
68
+ }
69
+ // If a specific entry is requested, show its full content
70
+ if (options.entry !== undefined) {
71
+ const entry = await historyManager.getHistoryEntry(options.entry);
72
+ if (!entry) {
73
+ logger.log(chalk.red(`History entry ${options.entry} not found`));
74
+ const totalCount = await historyManager.getTotalCount();
75
+ if (totalCount > 0) {
76
+ logger.log(chalk.dim(`Available entries: 1-${totalCount}`));
77
+ }
78
+ return;
79
+ }
80
+ // Display full entry details
81
+ logger.log(chalk.bold(`\nHistory Entry #${options.entry}:`));
82
+ logger.log(chalk.gray('─'.repeat(80)));
83
+ logger.log(`${chalk.cyan('Timestamp:')} ${formatDate(entry.timestamp)}`);
84
+ logger.log(`${chalk.cyan('Title:')} ${entry.title || 'Untitled'}`);
85
+ logger.log(`${chalk.cyan('Template:')} ${entry.templatePath}`);
86
+ if (Object.keys(entry.variables).length > 0) {
87
+ logger.log(chalk.cyan('\nVariables:'));
88
+ for (const [key, value] of Object.entries(entry.variables)) {
89
+ logger.log(` ${chalk.green(key)}: ${JSON.stringify(value)}`);
90
+ }
91
+ }
92
+ logger.log(chalk.cyan('\nFinal Prompt:'));
93
+ logger.log(chalk.gray('─'.repeat(80)));
94
+ logger.log(entry.finalPrompt);
95
+ logger.log(chalk.gray('─'.repeat(80)));
96
+ logger.log(chalk.dim(`\nHistory file: ${entry.filename}`));
97
+ // Show annotations if requested
98
+ if (options.annotations) {
99
+ const annotations = await historyManager.getAnnotationsForHistoryEntry(entry);
100
+ if (annotations.length > 0) {
101
+ logger.log(chalk.cyan('\nAnnotations:'));
102
+ logger.log(chalk.gray('─'.repeat(80)));
103
+ annotations.forEach((annotation, index) => {
104
+ if (index > 0) {
105
+ logger.log(chalk.gray(`\n${'-'.repeat(40)}\n`));
106
+ }
107
+ // Try to parse as JSON first
108
+ try {
109
+ const jsonAnnotation = JSON.parse(annotation);
110
+ // Format JSON annotation nicely
111
+ logger.log(chalk.yellow(`Status: ${jsonAnnotation.status}`));
112
+ logger.log(chalk.gray(`Timestamp: ${formatDate(jsonAnnotation.timestamp)}`));
113
+ if (jsonAnnotation.tags && jsonAnnotation.tags.length > 0) {
114
+ logger.log(chalk.gray(`Tags: ${jsonAnnotation.tags.join(', ')}`));
115
+ }
116
+ if (jsonAnnotation.notes) {
117
+ logger.log(chalk.white('\nNotes:'));
118
+ logger.log(jsonAnnotation.notes);
119
+ }
120
+ if (jsonAnnotation.issues_identified && jsonAnnotation.issues_identified.length > 0) {
121
+ logger.log(chalk.red('\nIssues Identified:'));
122
+ jsonAnnotation.issues_identified.forEach((issue) => {
123
+ logger.log(` - ${chalk.red(`[${issue.severity}]`)} ${issue.category}: ${issue.description}`);
124
+ });
125
+ }
126
+ if (jsonAnnotation.structured_outcome) {
127
+ logger.log(chalk.green('\nStructured Outcome:'));
128
+ const outcome = jsonAnnotation.structured_outcome;
129
+ logger.log(` Tasks: ${outcome.tasks_completed}/${outcome.tasks_total}`);
130
+ if (outcome.tests_run > 0) {
131
+ logger.log(` Tests: ${outcome.tests_passed}/${outcome.tests_run} passed`);
132
+ }
133
+ logger.log(` Execution time: ${outcome.execution_time}`);
134
+ }
135
+ }
136
+ catch {
137
+ // Fall back to displaying raw content (for legacy markdown annotations)
138
+ logger.log(annotation);
139
+ }
140
+ });
141
+ logger.log(chalk.gray('─'.repeat(80)));
142
+ }
143
+ else {
144
+ logger.log(chalk.dim('\nNo annotations found for this entry'));
145
+ }
146
+ }
147
+ return;
148
+ }
149
+ // Determine limit
150
+ let limit;
151
+ if (options.all) {
152
+ limit = undefined;
153
+ }
154
+ else if (options.limit) {
155
+ ({ limit } = options);
156
+ }
157
+ else {
158
+ limit = 20; // Default limit
159
+ }
160
+ // Build directory filter options
161
+ let filterOptions;
162
+ let filterDescription;
163
+ if (!options.allDir) {
164
+ if (options.dir) {
165
+ // User specified a specific directory - don't include legacy entries
166
+ filterOptions = { gitDir: options.dir, workingDir: options.dir, includeLegacy: false };
167
+ filterDescription = options.dir;
168
+ }
169
+ else {
170
+ // Default: filter by current git directory or working directory
171
+ // Include legacy entries (those without git_dir) for backwards compatibility
172
+ const gitInfo = await getGitInfo();
173
+ if (gitInfo.gitDir) {
174
+ filterOptions = { gitDir: gitInfo.gitDir, includeLegacy: true };
175
+ filterDescription = gitInfo.gitDir;
176
+ }
177
+ else {
178
+ filterOptions = { workingDir: process.cwd(), includeLegacy: true };
179
+ filterDescription = process.cwd();
180
+ }
181
+ }
182
+ }
183
+ // Get total count of entries for proper numbering
184
+ const totalCount = await historyManager.getTotalCount(filterOptions);
185
+ // Get history entries
186
+ const entries = await historyManager.listHistory(limit, filterOptions);
187
+ // Handle empty history
188
+ if (entries.length === 0) {
189
+ if (filterOptions) {
190
+ logger.log(chalk.yellow('📋 No history found for this directory'));
191
+ logger.log(chalk.dim(`\nFiltering by: ${filterDescription}`));
192
+ logger.log(chalk.dim('\nUse --all-dir to show history from all directories'));
193
+ }
194
+ else {
195
+ logger.log(chalk.yellow('📋 No history found'));
196
+ logger.log(chalk.dim('\nRun some prompts to build your history:'));
197
+ logger.log(chalk.dim(' • pt - Interactive prompt selection'));
198
+ logger.log(chalk.dim(' • pt run <tool> - Run with specific tool'));
199
+ logger.log(chalk.dim(' • pt run - Run with default tool'));
200
+ }
201
+ return;
202
+ }
203
+ // Display header
204
+ if (filterOptions) {
205
+ logger.log(chalk.bold('\nPrompt History:') + chalk.dim(` (filtered by: ${filterDescription})`));
206
+ }
207
+ else {
208
+ logger.log(chalk.bold('\nPrompt History:') + chalk.dim(' (all directories)'));
209
+ }
210
+ logger.log(chalk.gray('─'.repeat(80)));
211
+ // Calculate starting number based on total count and entries shown
212
+ const startNum = totalCount - entries.length + 1;
213
+ // Display entries
214
+ entries.forEach((entry, index) => {
215
+ const num = startNum + index;
216
+ const date = formatDate(entry.timestamp);
217
+ const title = entry.title || 'Untitled';
218
+ const summary = createAutoSummary(entry);
219
+ logger.log(chalk.cyan(`${num}.`) + chalk.gray(` [${date}] `) + chalk.white(title));
220
+ logger.log(` ${chalk.gray(summary)}`);
221
+ logger.log('');
222
+ });
223
+ }
224
+ function formatDate(timestamp) {
225
+ const date = new Date(timestamp);
226
+ // Use local time methods to display in user's timezone
227
+ const year = date.getFullYear();
228
+ const month = String(date.getMonth() + 1).padStart(2, '0');
229
+ const day = String(date.getDate()).padStart(2, '0');
230
+ const hours = String(date.getHours()).padStart(2, '0');
231
+ const minutes = String(date.getMinutes()).padStart(2, '0');
232
+ return `${year}-${month}-${day} ${hours}:${minutes}`;
233
+ }
234
+ function processSummaryTemplate(summary, variables) {
235
+ try {
236
+ return summary.replace(/\{\{(\w+)\}\}/g, (_match, key) => {
237
+ return variables[key] !== undefined ? String(variables[key]) : `{{${key}}}`;
238
+ });
239
+ }
240
+ catch {
241
+ // If template processing fails, return the raw summary
242
+ return summary;
243
+ }
244
+ }
245
+ function formatVariables(variables) {
246
+ const formatted = [];
247
+ // Skip masked values and empty objects
248
+ const entries = Object.entries(variables).filter(([_, value]) => value !== '***' && value !== undefined && value !== null && value !== '');
249
+ // Format each variable based on its type
250
+ for (const [key, value] of entries) {
251
+ if (typeof value === 'string') {
252
+ // First, normalize the string by collapsing multiple spaces/newlines but preserving structure
253
+ // Replace multiple newlines with a space, but keep single spaces
254
+ const normalized = value
255
+ .replace(/\n+/g, ' ') // Replace newlines with spaces
256
+ .replace(/\s{2,}/g, ' ') // Replace multiple spaces with single space
257
+ .trim();
258
+ // Check if this variable is a file-related input based on its name
259
+ const isFileVariable = key.toLowerCase().includes('file') ||
260
+ key.toLowerCase().includes('path') ||
261
+ key.toLowerCase().includes('dir');
262
+ if (isFileVariable && (normalized.includes('/') || normalized.includes('\\'))) {
263
+ // For file variables, show just the filename
264
+ const filename = normalized.split(/[/\\]/).pop() || normalized;
265
+ formatted.push(`${key}: "${filename}"`);
266
+ }
267
+ else {
268
+ // Escape any quotes in the string to prevent display issues
269
+ const escaped = normalized.replace(/"/g, '\\"');
270
+ // Don't truncate individual variables here - let createAutoSummary handle it
271
+ formatted.push(`${key}: "${escaped}"`);
272
+ }
273
+ }
274
+ else if (typeof value === 'boolean') {
275
+ formatted.push(`${key}: ${value}`);
276
+ }
277
+ else if (typeof value === 'number') {
278
+ formatted.push(`${key}: ${value}`);
279
+ }
280
+ else if (Array.isArray(value)) {
281
+ formatted.push(`${key}: [${value.length} items]`);
282
+ }
283
+ else if (typeof value === 'object') {
284
+ formatted.push(`${key}: {...}`);
285
+ }
286
+ else {
287
+ formatted.push(`${key}: ${String(value)}`);
288
+ }
289
+ }
290
+ return formatted;
291
+ }
292
+ function createAutoSummary(entry) {
293
+ // Account for 3 spaces of indentation in the display
294
+ const maxSummaryLength = 77; // 80 - 3 spaces
295
+ let summary;
296
+ // First, try to show the most relevant user inputs (variables)
297
+ // This is what users care about most - the parameters they passed in
298
+ const varDisplay = formatVariables(entry.variables);
299
+ if (varDisplay.length > 0) {
300
+ // Show up to 2 variables in a concise format
301
+ summary = varDisplay.slice(0, 2).join(', ');
302
+ }
303
+ else if (entry.summary) {
304
+ // Fall back to summary field if no variables
305
+ summary = processSummaryTemplate(entry.summary, entry.variables);
306
+ }
307
+ else {
308
+ // Last resort: show a truncated version of the prompt
309
+ summary = entry.finalPrompt.split('\n')[0].trim();
310
+ }
311
+ // Ensure consistent truncation for alignment
312
+ if (summary.length > maxSummaryLength) {
313
+ return `${summary.substring(0, maxSummaryLength - 3)}...`;
314
+ }
315
+ return summary;
316
+ }
317
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function initCommand(): Promise<void>;
2
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAWA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAgJjD"}
@@ -0,0 +1,137 @@
1
+ import path from 'node:path';
2
+ import { confirm, input, select } from '@inquirer/prompts';
3
+ import chalk from 'chalk';
4
+ import fs from 'fs-extra';
5
+ import { getConfigPath, getDataDir } from '../config/global-paths.js';
6
+ import { DEFAULT_CONFIG } from '../types/config.js';
7
+ import { logger } from '../utils/logger.js';
8
+ import { detectInstalledTools, getToolByName } from '../utils/tool-detection.js';
9
+ export async function initCommand() {
10
+ const configPath = getConfigPath();
11
+ const dataDir = getDataDir();
12
+ // Check for existing config
13
+ if (await fs.pathExists(configPath)) {
14
+ const reconfigure = await confirm({
15
+ message: 'Global config already exists. Reconfigure?',
16
+ default: false
17
+ });
18
+ if (!reconfigure) {
19
+ return;
20
+ }
21
+ }
22
+ // Prompt for prompt directory
23
+ const defaultPromptDir = path.join(dataDir, 'prompts');
24
+ const promptDir = await input({
25
+ message: 'Where should prompts be stored?',
26
+ default: defaultPromptDir
27
+ });
28
+ // Ask about history
29
+ const enableHistory = await confirm({
30
+ message: 'Enable prompt history?',
31
+ default: true
32
+ });
33
+ let historyDir;
34
+ let annotationDir;
35
+ let enableOutputCapture = false;
36
+ let outputDir;
37
+ if (enableHistory) {
38
+ const defaultHistoryDir = path.join(dataDir, 'history');
39
+ historyDir = await input({
40
+ message: 'Where should history be stored?',
41
+ default: defaultHistoryDir
42
+ });
43
+ const enableAnnotations = await confirm({
44
+ message: 'Enable history annotations?',
45
+ default: true
46
+ });
47
+ if (enableAnnotations) {
48
+ annotationDir = await input({
49
+ message: 'Where should annotations be stored?',
50
+ default: historyDir
51
+ });
52
+ }
53
+ // Ask about output capture
54
+ enableOutputCapture = await confirm({
55
+ message: 'Capture command output?',
56
+ default: true
57
+ });
58
+ if (enableOutputCapture) {
59
+ const defaultOutputDir = path.join(dataDir, 'output');
60
+ outputDir = await input({
61
+ message: 'Where should captured output be stored?',
62
+ default: defaultOutputDir
63
+ });
64
+ }
65
+ }
66
+ // Create directories
67
+ const promptDirResolved = promptDir.startsWith('~')
68
+ ? path.join(process.env.HOME || '', promptDir.slice(2))
69
+ : path.resolve(promptDir);
70
+ await fs.ensureDir(promptDirResolved);
71
+ // Detect installed tools and prompt for default command
72
+ const installedTools = detectInstalledTools();
73
+ let defaultCmd;
74
+ let defaultCmdArgs;
75
+ let defaultCmdOptions;
76
+ let autoRun = false;
77
+ if (installedTools.length > 0) {
78
+ const toolChoices = [
79
+ ...installedTools.map(tool => ({
80
+ name: tool.displayName,
81
+ value: tool.name
82
+ })),
83
+ { name: 'None', value: 'none' }
84
+ ];
85
+ const selectedTool = await select({
86
+ message: 'Select a default AI tool to use with prompts:',
87
+ choices: toolChoices
88
+ });
89
+ if (selectedTool !== 'none') {
90
+ const toolConfig = getToolByName(selectedTool);
91
+ if (toolConfig) {
92
+ defaultCmd = toolConfig.command;
93
+ defaultCmdArgs = toolConfig.defaultArgs;
94
+ defaultCmdOptions = toolConfig.defaultOptions;
95
+ autoRun = true;
96
+ }
97
+ }
98
+ }
99
+ // Generate config
100
+ const config = {
101
+ promptDirs: [promptDir],
102
+ ...(historyDir && { historyDir }),
103
+ ...(annotationDir && { annotationDir }),
104
+ ...(defaultCmd && { defaultCmd }),
105
+ ...(defaultCmdArgs && defaultCmdArgs.length > 0 && { defaultCmdArgs }),
106
+ ...(defaultCmdOptions && Object.keys(defaultCmdOptions).length > 0 && { defaultCmdOptions }),
107
+ autoReview: DEFAULT_CONFIG.autoReview,
108
+ autoRun,
109
+ version: '8.0.0',
110
+ libraries: [],
111
+ };
112
+ if (enableOutputCapture && outputDir) {
113
+ config.outputCapture = {
114
+ enabled: true,
115
+ directory: outputDir,
116
+ maxSizeMB: 50,
117
+ retentionDays: 30
118
+ };
119
+ }
120
+ // Ensure config directory exists and save config
121
+ await fs.ensureDir(path.dirname(configPath));
122
+ await fs.writeJson(configPath, config, { spaces: 2 });
123
+ // Create data directories
124
+ if (historyDir) {
125
+ await fs.ensureDir(historyDir);
126
+ }
127
+ if (annotationDir && annotationDir !== historyDir) {
128
+ await fs.ensureDir(annotationDir);
129
+ }
130
+ if (enableOutputCapture && outputDir) {
131
+ await fs.ensureDir(outputDir);
132
+ }
133
+ logger.log(chalk.green('\u2713 Configuration created successfully!'));
134
+ logger.log(chalk.gray(` Config: ${configPath}`));
135
+ logger.log(chalk.gray(` Prompts: ${promptDir}`));
136
+ }
137
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { SimpleGit } from 'simple-git';
2
+ export declare function loadConfigFromDirectory(dir: string): Promise<string[] | undefined>;
3
+ export declare function validateGitUrl(url: string): void;
4
+ export declare function extractRepoName(url: string): string;
5
+ export interface InstallFromGitOptions {
6
+ name?: string;
7
+ git?: SimpleGit;
8
+ }
9
+ export declare function installFromGit(url: string, options?: InstallFromGitOptions): Promise<void>;
10
+ export declare function isNpmPackage(source: string): boolean;
11
+ export declare function validateNpmPackage(packageName: string): void;
12
+ export declare function installFromNpm(packageName: string): Promise<void>;
13
+ export declare function installCommand(source: string, options?: {
14
+ name?: string;
15
+ }): Promise<void>;
16
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAIA,OAAkB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQlD,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAsCxF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAwBhD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA6BnD;AAcD,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAkEpG;AAGD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CA8BpD;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAQ5D;AAGD,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCvE;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B/F"}