@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.
- package/LICENSE +21 -0
- package/README.md +54 -29
- package/dist/annotations/annotation-analyzer.d.ts +17 -0
- package/dist/annotations/annotation-analyzer.d.ts.map +1 -0
- package/dist/annotations/annotation-analyzer.js +145 -0
- package/dist/annotations/annotation-analyzer.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +435 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/add.d.ts +5 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +164 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/annotate.d.ts +2 -0
- package/dist/commands/annotate.d.ts.map +1 -0
- package/dist/commands/annotate.js +99 -0
- package/dist/commands/annotate.js.map +1 -0
- package/dist/commands/base-command.d.ts +23 -0
- package/dist/commands/base-command.d.ts.map +1 -0
- package/dist/commands/base-command.js +41 -0
- package/dist/commands/base-command.js.map +1 -0
- package/dist/commands/cache.d.ts +9 -0
- package/dist/commands/cache.d.ts.map +1 -0
- package/dist/commands/cache.js +31 -0
- package/dist/commands/cache.js.map +1 -0
- package/dist/commands/config.d.ts +8 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +93 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/edit.d.ts +2 -0
- package/dist/commands/edit.d.ts.map +1 -0
- package/dist/commands/edit.js +35 -0
- package/dist/commands/edit.js.map +1 -0
- package/dist/commands/help.d.ts +2 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +26 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/history.d.ts +12 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +317 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +137 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/install.d.ts +16 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +263 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/review.d.ts +3 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +160 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/run.d.ts +32 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +367 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/uninstall.d.ts +2 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +45 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/update.d.ts +2 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +113 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/config/config-manager.d.ts +19 -0
- package/dist/config/config-manager.d.ts.map +1 -0
- package/dist/config/config-manager.js +221 -0
- package/dist/config/config-manager.js.map +1 -0
- package/dist/config/global-paths.d.ts +5 -0
- package/dist/config/global-paths.d.ts.map +1 -0
- package/dist/config/global-paths.js +16 -0
- package/dist/config/global-paths.js.map +1 -0
- package/dist/config/migration.d.ts +12 -0
- package/dist/config/migration.d.ts.map +1 -0
- package/dist/config/migration.js +270 -0
- package/dist/config/migration.js.map +1 -0
- package/dist/history/enhanced-history-manager.d.ts +27 -0
- package/dist/history/enhanced-history-manager.d.ts.map +1 -0
- package/dist/history/enhanced-history-manager.js +116 -0
- package/dist/history/enhanced-history-manager.js.map +1 -0
- package/dist/history/history-manager.d.ts +43 -0
- package/dist/history/history-manager.d.ts.map +1 -0
- package/dist/history/history-manager.js +229 -0
- package/dist/history/history-manager.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/input-types/file-search-prompt.d.ts +11 -0
- package/dist/prompts/input-types/file-search-prompt.d.ts.map +1 -0
- package/dist/prompts/input-types/file-search-prompt.js +53 -0
- package/dist/prompts/input-types/file-search-prompt.js.map +1 -0
- package/dist/prompts/input-types/review-file-prompt.d.ts +3 -0
- package/dist/prompts/input-types/review-file-prompt.d.ts.map +1 -0
- package/dist/prompts/input-types/review-file-prompt.js +9 -0
- package/dist/prompts/input-types/review-file-prompt.js.map +1 -0
- package/dist/schemas/config-schema.d.ts +1637 -0
- package/dist/schemas/config-schema.d.ts.map +1 -0
- package/dist/schemas/config-schema.js +136 -0
- package/dist/schemas/config-schema.js.map +1 -0
- package/dist/search/search-engine.d.ts +8 -0
- package/dist/search/search-engine.d.ts.map +1 -0
- package/dist/search/search-engine.js +53 -0
- package/dist/search/search-engine.js.map +1 -0
- package/dist/services/git-service.d.ts +28 -0
- package/dist/services/git-service.d.ts.map +1 -0
- package/dist/services/git-service.js +157 -0
- package/dist/services/git-service.js.map +1 -0
- package/dist/services/input-collector.d.ts +9 -0
- package/dist/services/input-collector.d.ts.map +1 -0
- package/dist/services/input-collector.js +162 -0
- package/dist/services/input-collector.js.map +1 -0
- package/dist/services/logging-service.d.ts +49 -0
- package/dist/services/logging-service.d.ts.map +1 -0
- package/dist/services/logging-service.js +203 -0
- package/dist/services/logging-service.js.map +1 -0
- package/dist/services/module-cache.d.ts +42 -0
- package/dist/services/module-cache.d.ts.map +1 -0
- package/dist/services/module-cache.js +205 -0
- package/dist/services/module-cache.js.map +1 -0
- package/dist/services/module-entry-builder.d.ts +20 -0
- package/dist/services/module-entry-builder.d.ts.map +1 -0
- package/dist/services/module-entry-builder.js +71 -0
- package/dist/services/module-entry-builder.js.map +1 -0
- package/dist/services/output-capture-service.d.ts +28 -0
- package/dist/services/output-capture-service.d.ts.map +1 -0
- package/dist/services/output-capture-service.js +348 -0
- package/dist/services/output-capture-service.js.map +1 -0
- package/dist/services/package-manager.d.ts +18 -0
- package/dist/services/package-manager.d.ts.map +1 -0
- package/dist/services/package-manager.js +141 -0
- package/dist/services/package-manager.js.map +1 -0
- package/dist/services/pattern-detector.d.ts +15 -0
- package/dist/services/pattern-detector.d.ts.map +1 -0
- package/dist/services/pattern-detector.js +228 -0
- package/dist/services/pattern-detector.js.map +1 -0
- package/dist/services/prompt-resolver.d.ts +32 -0
- package/dist/services/prompt-resolver.d.ts.map +1 -0
- package/dist/services/prompt-resolver.js +73 -0
- package/dist/services/prompt-resolver.js.map +1 -0
- package/dist/services/pupt-prompt-source.d.ts +16 -0
- package/dist/services/pupt-prompt-source.d.ts.map +1 -0
- package/dist/services/pupt-prompt-source.js +74 -0
- package/dist/services/pupt-prompt-source.js.map +1 -0
- package/dist/services/pupt-service.d.ts +33 -0
- package/dist/services/pupt-service.d.ts.map +1 -0
- package/dist/services/pupt-service.js +119 -0
- package/dist/services/pupt-service.js.map +1 -0
- package/dist/services/review-data-builder.d.ts +25 -0
- package/dist/services/review-data-builder.d.ts.map +1 -0
- package/dist/services/review-data-builder.js +333 -0
- package/dist/services/review-data-builder.js.map +1 -0
- package/dist/services/suggestion-generator.d.ts +11 -0
- package/dist/services/suggestion-generator.d.ts.map +1 -0
- package/dist/services/suggestion-generator.js +158 -0
- package/dist/services/suggestion-generator.js.map +1 -0
- package/dist/services/ui-service.d.ts +49 -0
- package/dist/services/ui-service.d.ts.map +1 -0
- package/dist/services/ui-service.js +196 -0
- package/dist/services/ui-service.js.map +1 -0
- package/dist/types/annotations.d.ts +50 -0
- package/dist/types/annotations.d.ts.map +1 -0
- package/dist/types/annotations.js +2 -0
- package/dist/types/annotations.js.map +1 -0
- package/dist/types/config.d.ts +110 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +12 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/history.d.ts +36 -0
- package/dist/types/history.d.ts.map +1 -0
- package/dist/types/history.js +2 -0
- package/dist/types/history.js.map +1 -0
- package/dist/types/patterns.d.ts +25 -0
- package/dist/types/patterns.d.ts.map +1 -0
- package/dist/types/patterns.js +2 -0
- package/dist/types/patterns.js.map +1 -0
- package/dist/types/prompt.d.ts +29 -0
- package/dist/types/prompt.d.ts.map +1 -0
- package/dist/types/prompt.js +24 -0
- package/dist/types/prompt.js.map +1 -0
- package/dist/types/review.d.ts +81 -0
- package/dist/types/review.d.ts.map +1 -0
- package/dist/types/review.js +2 -0
- package/dist/types/review.js.map +1 -0
- package/dist/ui/console-ui.d.ts +30 -0
- package/dist/ui/console-ui.d.ts.map +1 -0
- package/dist/ui/console-ui.js +88 -0
- package/dist/ui/console-ui.js.map +1 -0
- package/dist/ui/interactive-search.d.ts +8 -0
- package/dist/ui/interactive-search.d.ts.map +1 -0
- package/dist/ui/interactive-search.js +29 -0
- package/dist/ui/interactive-search.js.map +1 -0
- package/dist/utils/annotation-migration.d.ts +12 -0
- package/dist/utils/annotation-migration.d.ts.map +1 -0
- package/dist/utils/annotation-migration.js +88 -0
- package/dist/utils/annotation-migration.js.map +1 -0
- package/dist/utils/date-formatter.d.ts +10 -0
- package/dist/utils/date-formatter.d.ts.map +1 -0
- package/dist/utils/date-formatter.js +46 -0
- package/dist/utils/date-formatter.js.map +1 -0
- package/dist/utils/editor.d.ts +14 -0
- package/dist/utils/editor.d.ts.map +1 -0
- package/dist/utils/editor.js +52 -0
- package/dist/utils/editor.js.map +1 -0
- package/dist/utils/errors.d.ts +58 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +275 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/git-info.d.ts +10 -0
- package/dist/utils/git-info.d.ts.map +1 -0
- package/dist/utils/git-info.js +44 -0
- package/dist/utils/git-info.js.map +1 -0
- package/dist/utils/gitignore.d.ts +10 -0
- package/dist/utils/gitignore.d.ts.map +1 -0
- package/dist/utils/gitignore.js +72 -0
- package/dist/utils/gitignore.js.map +1 -0
- package/dist/utils/logger.d.ts +39 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +143 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/platform.d.ts +9 -0
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +45 -0
- package/dist/utils/platform.js.map +1 -0
- package/dist/utils/project-root.d.ts +22 -0
- package/dist/utils/project-root.d.ts.map +1 -0
- package/dist/utils/project-root.js +226 -0
- package/dist/utils/project-root.js.map +1 -0
- package/dist/utils/prompt-dir-resolver.d.ts +5 -0
- package/dist/utils/prompt-dir-resolver.d.ts.map +1 -0
- package/dist/utils/prompt-dir-resolver.js +25 -0
- package/dist/utils/prompt-dir-resolver.js.map +1 -0
- package/dist/utils/security.d.ts +5 -0
- package/dist/utils/security.d.ts.map +1 -0
- package/dist/utils/security.js +57 -0
- package/dist/utils/security.js.map +1 -0
- package/dist/utils/tool-detection.d.ts +14 -0
- package/dist/utils/tool-detection.d.ts.map +1 -0
- package/dist/utils/tool-detection.js +43 -0
- package/dist/utils/tool-detection.js.map +1 -0
- package/package.json +79 -7
- package/prompts/prompts/ad-hoc-long.prompt +60 -0
- package/prompts/prompts/ad-hoc.prompt +29 -0
- package/prompts/prompts/code-review.prompt +99 -0
- package/prompts/prompts/debugging-error-message.prompt +81 -0
- package/prompts/prompts/fix-github-actions.prompt +62 -0
- package/prompts/prompts/fix-test-errors.prompt +73 -0
- package/prompts/prompts/git-commit-comment.prompt +61 -0
- package/prompts/prompts/implementation-phase.prompt +53 -0
- package/prompts/prompts/implementation-plan.prompt +101 -0
- package/prompts/prompts/new-feature.prompt +89 -0
- package/prompts/prompts/new-project.prompt +9 -0
- package/prompts/prompts/one-shot-change.prompt +79 -0
- package/prompts/prompts/pupt-prompt-improvement.prompt +270 -0
- package/prompts/prompts/simple-test.prompt +8 -0
- package/prompts/prompts/update-design.prompt +71 -0
- 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 @@
|
|
|
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"}
|