@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,221 @@
1
+ import path from 'node:path';
2
+ import { cosmiconfig } from 'cosmiconfig';
3
+ import fs from 'fs-extra';
4
+ import { ConfigFileSchema, ConfigSchema } from '../schemas/config-schema.js';
5
+ import { DEFAULT_CONFIG } from '../types/config.js';
6
+ import { migrateAnnotationsToJson } from '../utils/annotation-migration.js';
7
+ import { createError, ErrorCategory, errors } from '../utils/errors.js';
8
+ import { logger } from '../utils/logger.js';
9
+ import { getHomePath } from '../utils/platform.js';
10
+ import { getConfigDir, getConfigPath, getDataDir } from './global-paths.js';
11
+ import { migrateConfig } from './migration.js';
12
+ function getExplorer() {
13
+ const configDir = getConfigDir();
14
+ return cosmiconfig('pt', {
15
+ searchPlaces: [
16
+ 'config.json',
17
+ 'config.yaml',
18
+ 'config.yml',
19
+ 'config.js',
20
+ 'config.cjs',
21
+ ],
22
+ stopDir: configDir,
23
+ });
24
+ }
25
+ function validateConfig(config) {
26
+ // First validate that it's a valid config file format (any version)
27
+ const fileResult = ConfigFileSchema.safeParse(config);
28
+ if (!fileResult.success) {
29
+ const { issues } = fileResult.error;
30
+ const firstIssue = issues[0];
31
+ // Handle union errors by looking for the most specific error
32
+ let specificIssue = firstIssue;
33
+ if (firstIssue.code === 'invalid_union' && 'unionErrors' in firstIssue) {
34
+ // Try to find a more specific error in union errors
35
+ // Look for errors that match the actual config fields (not old schema fields)
36
+ const cfg = config;
37
+ const unionIssue = firstIssue;
38
+ for (const unionError of unionIssue.unionErrors) {
39
+ if (unionError.issues && unionError.issues.length > 0) {
40
+ const issue = unionError.issues[0];
41
+ if (issue.path && issue.path.length > 0) {
42
+ const fieldName = issue.path[0];
43
+ // Check if this field exists in the actual config
44
+ if (fieldName in cfg) {
45
+ specificIssue = issue;
46
+ break;
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }
52
+ // Create user-friendly error messages
53
+ if (specificIssue.path && specificIssue.path.length > 0) {
54
+ const field = specificIssue.path.join('.');
55
+ throw errors.invalidConfig(field, specificIssue.message, 'invalid value');
56
+ }
57
+ else {
58
+ throw errors.invalidConfig('format', 'valid JSON', 'invalid JSON');
59
+ }
60
+ }
61
+ }
62
+ async function runMigrateConfig(config, filepath) {
63
+ const cfg = config;
64
+ // Check if migration is needed
65
+ if (migrateConfig.needsMigration(cfg)) {
66
+ // Create backup before migration
67
+ if (filepath && await fs.pathExists(filepath)) {
68
+ try {
69
+ await migrateConfig.createBackup(filepath);
70
+ }
71
+ catch (error) {
72
+ // Backup failed, but continue with migration
73
+ logger.warn(`Warning: Could not create backup of config file: ${error instanceof Error ? error.message : String(error)}`);
74
+ }
75
+ }
76
+ // Apply migration
77
+ const migrated = migrateConfig(cfg);
78
+ // Validate the migrated config with the current schema
79
+ const result = ConfigSchema.safeParse(migrated);
80
+ if (!result.success) {
81
+ const firstIssue = result.error.issues[0];
82
+ throw createError({
83
+ message: `Configuration migration failed: ${firstIssue.message}`,
84
+ code: 'MIGRATION_FAILED',
85
+ category: ErrorCategory.CONFIG_ERROR,
86
+ suggestions: [
87
+ { text: 'Check your configuration file for invalid values' },
88
+ { text: 'Try removing the config file and running "pt init" to start fresh' }
89
+ ],
90
+ icon: '\u2699\uFE0F'
91
+ });
92
+ }
93
+ // Save migrated config back to disk
94
+ if (filepath && filepath.endsWith('.json')) {
95
+ await fs.writeJson(filepath, migrated, { spaces: 2 });
96
+ }
97
+ return migrated;
98
+ }
99
+ // Validate existing config is valid for current version
100
+ const result = ConfigSchema.safeParse(cfg);
101
+ if (!result.success) {
102
+ // Try to migrate even if needsMigration returned false
103
+ const migrated = migrateConfig(cfg);
104
+ const retryResult = ConfigSchema.safeParse(migrated);
105
+ if (retryResult.success) {
106
+ return migrated;
107
+ }
108
+ // Still invalid after migration attempt
109
+ const firstIssue = retryResult.error.issues[0];
110
+ const { message } = firstIssue;
111
+ throw errors.invalidConfig('validation', 'valid configuration', message);
112
+ }
113
+ return result.data;
114
+ }
115
+ function expandPath(filepath, configDir) {
116
+ if (filepath.startsWith('~/')) {
117
+ return path.join(getHomePath(), filepath.slice(2));
118
+ }
119
+ // If the path is already absolute, return it as is
120
+ if (path.isAbsolute(filepath)) {
121
+ return filepath;
122
+ }
123
+ // If we have a config directory, resolve relative paths from there
124
+ if (configDir) {
125
+ return path.resolve(configDir, filepath);
126
+ }
127
+ // Otherwise resolve from current working directory
128
+ return path.resolve(filepath);
129
+ }
130
+ function expandPaths(config, configDir) {
131
+ const expanded = { ...config };
132
+ // Expand prompt directories
133
+ if (config.promptDirs) {
134
+ expanded.promptDirs = config.promptDirs.map(dir => expandPath(dir, configDir));
135
+ }
136
+ // Expand history directory
137
+ if (config.historyDir) {
138
+ expanded.historyDir = expandPath(config.historyDir, configDir);
139
+ }
140
+ // Expand annotation directory
141
+ if (config.annotationDir) {
142
+ expanded.annotationDir = expandPath(config.annotationDir, configDir);
143
+ }
144
+ // Expand helper paths
145
+ if (config.helpers) {
146
+ expanded.helpers = {};
147
+ for (const [name, helper] of Object.entries(config.helpers)) {
148
+ expanded.helpers[name] = { ...helper };
149
+ if (helper.type === 'file' && helper.path) {
150
+ expanded.helpers[name].path = expandPath(helper.path, configDir);
151
+ }
152
+ }
153
+ }
154
+ // Expand output capture directory
155
+ if (config.outputCapture && config.outputCapture.directory) {
156
+ expanded.outputCapture = {
157
+ ...config.outputCapture,
158
+ directory: expandPath(config.outputCapture.directory, configDir)
159
+ };
160
+ }
161
+ return expanded;
162
+ }
163
+ async function load(startDir) {
164
+ const result = await loadWithPath(startDir);
165
+ return result.config;
166
+ }
167
+ async function loadWithPath(_startDir) {
168
+ const configDir = getConfigDir();
169
+ const explorer = getExplorer();
170
+ // Search from the global config directory (not CWD)
171
+ const result = await explorer.search(configDir);
172
+ if (!result || !result.config) {
173
+ // Create default config with all defaults
174
+ const dataDir = getDataDir();
175
+ const defaultConfig = {
176
+ promptDirs: [path.join(dataDir, 'prompts')],
177
+ ...DEFAULT_CONFIG
178
+ };
179
+ return {
180
+ config: expandPaths(defaultConfig),
181
+ filepath: undefined,
182
+ configDir: undefined
183
+ };
184
+ }
185
+ // Validate the loaded config
186
+ validateConfig(result.config);
187
+ // Check if migration is needed
188
+ const migrated = await runMigrateConfig(result.config, result.filepath);
189
+ // Get the directory containing the config file
190
+ const resolvedConfigDir = path.dirname(result.filepath);
191
+ // Expand paths relative to the config file directory
192
+ const expandedConfig = expandPaths(migrated, resolvedConfigDir);
193
+ // Migrate annotation files if needed
194
+ if (expandedConfig.annotationDir) {
195
+ try {
196
+ await migrateAnnotationsToJson(expandedConfig.annotationDir);
197
+ }
198
+ catch (error) {
199
+ logger.warn(`Failed to migrate annotation files: ${error instanceof Error ? error.message : String(error)}`);
200
+ }
201
+ }
202
+ return {
203
+ config: expandedConfig,
204
+ filepath: result.filepath,
205
+ configDir: resolvedConfigDir
206
+ };
207
+ }
208
+ /**
209
+ * Save a config object to the global config path.
210
+ */
211
+ async function save(config) {
212
+ const configPath = getConfigPath();
213
+ await fs.ensureDir(path.dirname(configPath));
214
+ await fs.writeJson(configPath, config, { spaces: 2 });
215
+ }
216
+ export const ConfigManager = {
217
+ load,
218
+ loadWithPath,
219
+ save,
220
+ };
221
+ //# sourceMappingURL=config-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../src/config/config-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function getConfigDir(): string;
2
+ export declare function getDataDir(): string;
3
+ export declare function getCacheDir(): string;
4
+ export declare function getConfigPath(): string;
5
+ //# sourceMappingURL=global-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-paths.d.ts","sourceRoot":"","sources":["../../src/config/global-paths.ts"],"names":[],"mappings":"AAMA,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
@@ -0,0 +1,16 @@
1
+ import path from 'node:path';
2
+ import envPaths from 'env-paths';
3
+ const platformPaths = envPaths('pupt', { suffix: '' });
4
+ export function getConfigDir() {
5
+ return process.env.PUPT_CONFIG_DIR || platformPaths.config;
6
+ }
7
+ export function getDataDir() {
8
+ return process.env.PUPT_DATA_DIR || platformPaths.data;
9
+ }
10
+ export function getCacheDir() {
11
+ return process.env.PUPT_CACHE_DIR || platformPaths.cache;
12
+ }
13
+ export function getConfigPath() {
14
+ return path.join(getConfigDir(), 'config.json');
15
+ }
16
+ //# sourceMappingURL=global-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-paths.js","sourceRoot":"","sources":["../../src/config/global-paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,QAAQ,MAAM,WAAW,CAAC;AAEjC,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;AAEvD,MAAM,UAAU,YAAY;IAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,aAAa,CAAC,MAAM,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,aAAa,CAAC,KAAK,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Config } from '../types/config.js';
2
+ interface ConfigMigration {
3
+ version: string;
4
+ migrate: (config: Record<string, unknown>) => Record<string, unknown>;
5
+ }
6
+ export declare const migrations: ConfigMigration[];
7
+ export declare const migrateConfig: ((config: Record<string, unknown>) => Config) & {
8
+ needsMigration(config: Record<string, unknown>): boolean;
9
+ createBackup(configPath: string): Promise<void>;
10
+ };
11
+ export {};
12
+ //# sourceMappingURL=migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../src/config/migration.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAI5C,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvE;AAED,eAAO,MAAM,UAAU,EAAE,eAAe,EA2NvC,CAAC;AAEF,eAAO,MAAM,aAAa,YACP,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM;2BA4CxB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;6BAkCzB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAkBxD,CAAC"}
@@ -0,0 +1,270 @@
1
+ import path from 'node:path';
2
+ import fs from 'fs-extra';
3
+ import { DateFormats } from '../utils/date-formatter.js';
4
+ import { getDataDir } from './global-paths.js';
5
+ export const migrations = [
6
+ {
7
+ version: '3.0.0',
8
+ migrate: (config) => {
9
+ const migrated = { ...config };
10
+ // Handle v1 format: promptDirectory -> promptDirs
11
+ if ('promptDirectory' in config) {
12
+ const pd = config.promptDirectory;
13
+ migrated.promptDirs = Array.isArray(pd) ? pd : [pd];
14
+ delete migrated.promptDirectory;
15
+ }
16
+ // Handle v1 format: historyDirectory -> historyDir
17
+ if ('historyDirectory' in config) {
18
+ migrated.historyDir = config.historyDirectory;
19
+ delete migrated.historyDirectory;
20
+ }
21
+ // Handle v1 format: annotationDirectory -> annotationDir
22
+ if ('annotationDirectory' in config) {
23
+ migrated.annotationDir = config.annotationDirectory;
24
+ delete migrated.annotationDirectory;
25
+ }
26
+ // Rename fields
27
+ if ('codingTool' in config) {
28
+ migrated.defaultCmd = config.codingTool;
29
+ delete migrated.codingTool;
30
+ }
31
+ if ('codingToolArgs' in config) {
32
+ migrated.defaultCmdArgs = config.codingToolArgs;
33
+ delete migrated.codingToolArgs;
34
+ }
35
+ if ('codingToolOptions' in config) {
36
+ migrated.defaultCmdOptions = config.codingToolOptions;
37
+ delete migrated.codingToolOptions;
38
+ }
39
+ // Add new fields with defaults
40
+ migrated.version = '3.0.0';
41
+ migrated.autoReview = migrated.autoReview ?? true;
42
+ migrated.autoRun = migrated.autoRun ?? false;
43
+ migrated.gitPromptDir = migrated.gitPromptDir ?? '.git-prompts';
44
+ delete migrated.handlebarsExtensions;
45
+ // Set defaults for renamed fields if they don't exist
46
+ migrated.defaultCmd = migrated.defaultCmd ?? 'claude';
47
+ migrated.defaultCmdArgs = migrated.defaultCmdArgs ?? [];
48
+ migrated.defaultCmdOptions = migrated.defaultCmdOptions ?? {
49
+ 'Continue with last context?': '--continue'
50
+ };
51
+ // Ensure required fields exist
52
+ migrated.promptDirs = migrated.promptDirs ?? ['./.prompts'];
53
+ // Preserve outputCapture settings
54
+ if ('outputCapture' in config) {
55
+ migrated.outputCapture = config.outputCapture;
56
+ }
57
+ return migrated;
58
+ }
59
+ },
60
+ {
61
+ version: '4.0.0',
62
+ migrate: (config) => {
63
+ const migrated = { ...config };
64
+ // Update version
65
+ migrated.version = '4.0.0';
66
+ // Add output capture defaults if not present
67
+ if (!migrated.outputCapture) {
68
+ migrated.outputCapture = {
69
+ enabled: false,
70
+ directory: '.pt-output',
71
+ maxSizeMB: 50,
72
+ retentionDays: 30
73
+ };
74
+ }
75
+ // Remove auto-annotation config (feature removed)
76
+ delete migrated.autoAnnotate;
77
+ // Preserve v3 defaults if not set
78
+ migrated.autoReview = migrated.autoReview ?? true;
79
+ migrated.autoRun = migrated.autoRun ?? false;
80
+ return migrated;
81
+ }
82
+ },
83
+ {
84
+ version: '5.0.0',
85
+ migrate: (config) => {
86
+ const migrated = { ...config };
87
+ // Update version
88
+ migrated.version = '5.0.0';
89
+ // Remove deprecated features
90
+ delete migrated.autoAnnotate;
91
+ delete migrated.handlebarsExtensions;
92
+ // Add pupt-lib integration defaults
93
+ migrated.libraries = migrated.libraries ?? [];
94
+ return migrated;
95
+ }
96
+ },
97
+ {
98
+ version: '6.0.0',
99
+ migrate: (config) => {
100
+ const migrated = { ...config };
101
+ // Update version
102
+ migrated.version = '6.0.0';
103
+ // Migrate targetLlm to environment.llm.provider
104
+ if ('targetLlm' in config && config.targetLlm) {
105
+ const existingEnv = migrated.environment ?? {};
106
+ const existingLlm = existingEnv.llm ?? {};
107
+ migrated.environment = {
108
+ ...existingEnv,
109
+ llm: {
110
+ ...existingLlm,
111
+ provider: existingLlm.provider ?? config.targetLlm,
112
+ }
113
+ };
114
+ delete migrated.targetLlm;
115
+ }
116
+ return migrated;
117
+ }
118
+ },
119
+ {
120
+ version: '7.0.0',
121
+ migrate: (config) => {
122
+ const migrated = { ...config };
123
+ // Update version
124
+ migrated.version = '7.0.0';
125
+ // Migrate Amazon Q ('q') to Kiro CLI ('kiro-cli')
126
+ if (migrated.defaultCmd === 'q') {
127
+ migrated.defaultCmd = 'kiro-cli';
128
+ migrated.defaultCmdArgs = ['chat'];
129
+ }
130
+ return migrated;
131
+ }
132
+ },
133
+ {
134
+ version: '8.0.0',
135
+ migrate: (config) => {
136
+ const migrated = { ...config };
137
+ // Update version
138
+ migrated.version = '8.0.0';
139
+ // Remove deprecated fields
140
+ delete migrated.gitPromptDir;
141
+ delete migrated.codingTool;
142
+ delete migrated.codingToolArgs;
143
+ delete migrated.codingToolOptions;
144
+ delete migrated.targetLlm;
145
+ // Update default paths to global paths
146
+ const dataDir = getDataDir();
147
+ // Update promptDirs: replace old local defaults with global default
148
+ const promptDirs = migrated.promptDirs;
149
+ if (!promptDirs || promptDirs.length === 0 ||
150
+ (promptDirs.length === 1 && (promptDirs[0] === './.prompts' ||
151
+ promptDirs[0] === '.prompts'))) {
152
+ migrated.promptDirs = [path.join(dataDir, 'prompts')];
153
+ }
154
+ // Update historyDir: replace old local defaults with global default
155
+ const historyDir = migrated.historyDir;
156
+ if (!historyDir || historyDir === './.pthistory' || historyDir === '.pthistory') {
157
+ migrated.historyDir = path.join(dataDir, 'history');
158
+ }
159
+ // Update annotationDir: replace old local defaults with global default
160
+ const annotationDir = migrated.annotationDir;
161
+ if (!annotationDir || annotationDir === './.pthistory' || annotationDir === '.pthistory') {
162
+ migrated.annotationDir = path.join(dataDir, 'history');
163
+ }
164
+ // Update outputCapture: enable by default, update directory
165
+ const outputCapture = migrated.outputCapture;
166
+ if (outputCapture) {
167
+ outputCapture.enabled = true;
168
+ const captureDir = outputCapture.directory;
169
+ if (!captureDir || captureDir === '.pt-output' || captureDir === './.pt-output') {
170
+ outputCapture.directory = path.join(dataDir, 'output');
171
+ }
172
+ }
173
+ else {
174
+ migrated.outputCapture = {
175
+ enabled: true,
176
+ directory: path.join(dataDir, 'output'),
177
+ maxSizeMB: 50,
178
+ retentionDays: 30,
179
+ };
180
+ }
181
+ // Convert old string[] libraries to empty LibraryEntry[]
182
+ const { libraries } = migrated;
183
+ if (Array.isArray(libraries) && libraries.length > 0 && typeof libraries[0] === 'string') {
184
+ migrated.libraries = [];
185
+ }
186
+ return migrated;
187
+ }
188
+ }
189
+ ];
190
+ export const migrateConfig = Object.assign(function (config) {
191
+ // Apply migrations in sequence
192
+ let migrated = { ...config };
193
+ // Start with the appropriate migration based on current version
194
+ const currentVersion = config.version;
195
+ if (!currentVersion || currentVersion < '3.0.0') {
196
+ // Apply v3 migration first
197
+ migrated = migrations[0].migrate(migrated);
198
+ }
199
+ // Apply v4 migration if version is old OR if required v4 fields are missing
200
+ if (!migrated.version || migrated.version < '4.0.0' ||
201
+ (migrated.version === '4.0.0' && !migrated.outputCapture)) {
202
+ // Apply v4 migration
203
+ migrated = migrations[1].migrate(migrated);
204
+ }
205
+ // Apply v5 migration if version is old
206
+ if (!migrated.version || migrated.version < '5.0.0') {
207
+ migrated = migrations[2].migrate(migrated);
208
+ }
209
+ // Apply v6 migration if version is old or targetLlm exists
210
+ if (!migrated.version || migrated.version < '6.0.0' || 'targetLlm' in migrated) {
211
+ migrated = migrations[3].migrate(migrated);
212
+ }
213
+ // Apply v7 migration if version is old or defaultCmd is 'q'
214
+ if (!migrated.version || migrated.version < '7.0.0' || migrated.defaultCmd === 'q') {
215
+ migrated = migrations[4].migrate(migrated);
216
+ }
217
+ // Apply v8 migration if version is old or deprecated fields exist
218
+ if (!migrated.version || migrated.version < '8.0.0' ||
219
+ 'gitPromptDir' in migrated || 'targetLlm' in migrated ||
220
+ 'codingTool' in migrated) {
221
+ migrated = migrations[5].migrate(migrated);
222
+ }
223
+ return migrated;
224
+ }, {
225
+ needsMigration(config) {
226
+ // Check if config has old v1 field names
227
+ if ('promptDirectory' in config || 'historyDirectory' in config || 'annotationDirectory' in config) {
228
+ return true;
229
+ }
230
+ // Check if config has old field names
231
+ if ('codingTool' in config || 'codingToolArgs' in config || 'codingToolOptions' in config) {
232
+ return true;
233
+ }
234
+ // Check if targetLlm exists (should be migrated to environment.llm.provider)
235
+ if ('targetLlm' in config) {
236
+ return true;
237
+ }
238
+ // Check if defaultCmd is 'q' (Amazon Q renamed to Kiro CLI)
239
+ if (config.defaultCmd === 'q') {
240
+ return true;
241
+ }
242
+ // Check if gitPromptDir exists (removed in v8)
243
+ if ('gitPromptDir' in config) {
244
+ return true;
245
+ }
246
+ // Check if version is missing or old
247
+ if (!config.version || config.version < '8.0.0') {
248
+ return true;
249
+ }
250
+ return false;
251
+ },
252
+ async createBackup(configPath) {
253
+ const backupPath = `${configPath}.backup`;
254
+ // If backup already exists, create timestamped backup
255
+ if (await fs.pathExists(backupPath)) {
256
+ const now = new Date();
257
+ const dateStr = DateFormats.YYYYMMDD(now);
258
+ const hours = String(now.getHours()).padStart(2, '0');
259
+ const minutes = String(now.getMinutes()).padStart(2, '0');
260
+ const seconds = String(now.getSeconds()).padStart(2, '0');
261
+ const timestamp = `${dateStr}${hours}${minutes}${seconds}`;
262
+ const timestampedBackup = `${configPath}.backup.${timestamp}`;
263
+ await fs.copy(configPath, timestampedBackup);
264
+ }
265
+ else {
266
+ await fs.copy(configPath, backupPath);
267
+ }
268
+ }
269
+ });
270
+ //# sourceMappingURL=migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/config/migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { EnhancedHistoryEntry } from '../types/history.js';
2
+ import { HistoryManager } from './history-manager.js';
3
+ interface EnhancedHistorySaveOptions {
4
+ templatePath: string;
5
+ templateContent: string;
6
+ variables: Map<string, unknown>;
7
+ finalPrompt: string;
8
+ title?: string;
9
+ summary?: string;
10
+ timestamp?: Date;
11
+ startTime?: Date;
12
+ endTime?: Date;
13
+ command?: string;
14
+ exitCode?: number | null;
15
+ outputFile?: string;
16
+ outputSize?: number;
17
+ executionTime?: number;
18
+ }
19
+ export declare class EnhancedHistoryManager extends HistoryManager {
20
+ private enhancedHistoryDir;
21
+ constructor(enhancedHistoryDir: string);
22
+ listHistory(limit?: number): Promise<EnhancedHistoryEntry[]>;
23
+ getHistoryEntry(index: number): Promise<EnhancedHistoryEntry | null>;
24
+ savePrompt(options: EnhancedHistorySaveOptions): Promise<string>;
25
+ }
26
+ export {};
27
+ //# sourceMappingURL=enhanced-history-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhanced-history-manager.d.ts","sourceRoot":"","sources":["../../src/history/enhanced-history-manager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAI3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,UAAU,0BAA0B;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,sBAAuB,SAAQ,cAAc;IAC5C,OAAO,CAAC,kBAAkB;gBAAlB,kBAAkB,EAAE,MAAM;IAIxC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAO5D,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAIpE,UAAU,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,MAAM,CAAC;CAqGvE"}