pupt 2.2.0 → 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/dist/cli.js +94 -58
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts +4 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +60 -11
- package/dist/commands/add.js.map +1 -1
- 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 +1 -2
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +30 -57
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/edit.d.ts.map +1 -1
- package/dist/commands/edit.js +5 -2
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/init-refactored.d.ts.map +1 -1
- package/dist/commands/init-refactored.js +0 -3
- package/dist/commands/init-refactored.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +59 -68
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.d.ts +9 -9
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +76 -178
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +3 -1
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/run.d.ts +2 -0
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +13 -9
- package/dist/commands/run.js.map +1 -1
- 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 +3 -10
- package/dist/config/config-manager.d.ts.map +1 -1
- package/dist/config/config-manager.js +23 -140
- package/dist/config/config-manager.js.map +1 -1
- 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.map +1 -1
- package/dist/config/migration.js +69 -1
- package/dist/config/migration.js.map +1 -1
- package/dist/prompts/input-types/file-search-prompt.js +2 -2
- package/dist/prompts/input-types/file-search-prompt.js.map +1 -1
- package/dist/schemas/config-schema.d.ts +863 -196
- package/dist/schemas/config-schema.d.ts.map +1 -1
- package/dist/schemas/config-schema.js +51 -27
- package/dist/schemas/config-schema.js.map +1 -1
- package/dist/services/input-collector.d.ts.map +1 -1
- package/dist/services/input-collector.js +7 -1
- package/dist/services/input-collector.js.map +1 -1
- 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 +67 -0
- package/dist/services/module-entry-builder.js.map +1 -0
- package/dist/services/output-capture-service.d.ts.map +1 -1
- package/dist/services/output-capture-service.js +2 -1
- package/dist/services/output-capture-service.js.map +1 -1
- 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/prompt-resolver.d.ts +2 -2
- package/dist/services/prompt-resolver.d.ts.map +1 -1
- package/dist/services/prompt-resolver.js +9 -10
- package/dist/services/prompt-resolver.js.map +1 -1
- 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 +73 -0
- package/dist/services/pupt-prompt-source.js.map +1 -0
- package/dist/services/pupt-service.d.ts +11 -25
- package/dist/services/pupt-service.d.ts.map +1 -1
- package/dist/services/pupt-service.js +31 -179
- package/dist/services/pupt-service.js.map +1 -1
- package/dist/services/review-data-builder.d.ts +4 -1
- package/dist/services/review-data-builder.d.ts.map +1 -1
- package/dist/services/review-data-builder.js +4 -2
- package/dist/services/review-data-builder.js.map +1 -1
- package/dist/types/config.d.ts +35 -19
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +3 -4
- package/dist/types/config.js.map +1 -1
- 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 +24 -0
- package/dist/utils/prompt-dir-resolver.js.map +1 -0
- package/package.json +3 -3
- package/dist/prompts/input-types/file-prompt.d.ts +0 -12
- package/dist/prompts/input-types/file-prompt.d.ts.map +0 -1
- package/dist/prompts/input-types/file-prompt.js +0 -165
- package/dist/prompts/input-types/file-prompt.js.map +0 -1
- package/dist/schemas/prompt-schema.d.ts +0 -920
- package/dist/schemas/prompt-schema.d.ts.map +0 -1
- package/dist/schemas/prompt-schema.js +0 -110
- package/dist/schemas/prompt-schema.js.map +0 -1
- package/dist/search/file-search-engine.d.ts +0 -37
- package/dist/search/file-search-engine.d.ts.map +0 -1
- package/dist/search/file-search-engine.js +0 -184
- package/dist/search/file-search-engine.js.map +0 -1
- package/dist/services/file-system-service.d.ts +0 -43
- package/dist/services/file-system-service.d.ts.map +0 -1
- package/dist/services/file-system-service.js +0 -269
- package/dist/services/file-system-service.js.map +0 -1
- package/dist/utils/file-utils.d.ts +0 -17
- package/dist/utils/file-utils.d.ts.map +0 -1
- package/dist/utils/file-utils.js +0 -88
- package/dist/utils/file-utils.js.map +0 -1
- package/dist/utils/path-utils.d.ts +0 -42
- package/dist/utils/path-utils.d.ts.map +0 -1
- package/dist/utils/path-utils.js +0 -139
- package/dist/utils/path-utils.js.map +0 -1
- package/dist/utils/prompt-format.d.ts +0 -27
- package/dist/utils/prompt-format.d.ts.map +0 -1
- package/dist/utils/prompt-format.js +0 -28
- package/dist/utils/prompt-format.js.map +0 -1
- package/dist/utils/trie.d.ts +0 -19
- package/dist/utils/trie.d.ts.map +0 -1
- package/dist/utils/trie.js +0 -84
- package/dist/utils/trie.js.map +0 -1
- package/prompts/ad-hoc-long.prompt +0 -60
- package/prompts/ad-hoc.prompt +0 -29
- package/prompts/add-summary.prompt +0 -54
- package/prompts/code-review.prompt +0 -99
- package/prompts/debugging-error-message.prompt +0 -81
- package/prompts/fix-github-actions.prompt +0 -62
- package/prompts/fix-test-errors.prompt +0 -73
- package/prompts/git-commit-comment.prompt +0 -61
- package/prompts/implementation-phase.prompt +0 -53
- package/prompts/implementation-plan.prompt +0 -101
- package/prompts/new-feature.prompt +0 -89
- package/prompts/new-project.prompt +0 -9
- package/prompts/one-shot-change.prompt +0 -79
- package/prompts/pupt-prompt-improvement.prompt +0 -270
- package/prompts/simple-test.prompt +0 -8
- package/prompts/update-design.prompt +0 -71
- package/prompts/update-documentation.prompt +0 -6
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
import fs from 'fs-extra';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import os from 'node:os';
|
|
4
|
-
import { glob } from 'glob';
|
|
5
|
-
import { minimatch } from 'minimatch';
|
|
6
|
-
import MiniSearch from 'minisearch';
|
|
7
|
-
export class FileSystemService {
|
|
8
|
-
cache = new Map();
|
|
9
|
-
searchIndex = null;
|
|
10
|
-
searchIndexPath = null;
|
|
11
|
-
options;
|
|
12
|
-
constructor(options = {}) {
|
|
13
|
-
this.options = {
|
|
14
|
-
cacheTimeout: options.cacheTimeout ?? 5000,
|
|
15
|
-
excludePatterns: options.excludePatterns ?? [
|
|
16
|
-
'node_modules/**',
|
|
17
|
-
'.git/**',
|
|
18
|
-
'dist/**',
|
|
19
|
-
'coverage/**'
|
|
20
|
-
]
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
expandPath(inputPath) {
|
|
24
|
-
if (!inputPath)
|
|
25
|
-
return '';
|
|
26
|
-
// Handle home directory expansion
|
|
27
|
-
if (inputPath.startsWith('~/')) {
|
|
28
|
-
return path.join(os.homedir(), inputPath.slice(2));
|
|
29
|
-
}
|
|
30
|
-
// Resolve relative paths
|
|
31
|
-
return path.resolve(inputPath);
|
|
32
|
-
}
|
|
33
|
-
normalizePath(input) {
|
|
34
|
-
if (!input)
|
|
35
|
-
return '';
|
|
36
|
-
// Expand home directory first
|
|
37
|
-
let normalized = input;
|
|
38
|
-
if (normalized.startsWith('~')) {
|
|
39
|
-
normalized = normalized.replace(/^~/, os.homedir());
|
|
40
|
-
}
|
|
41
|
-
// Normalize separators for the current platform
|
|
42
|
-
if (process.platform === 'win32') {
|
|
43
|
-
// On Windows, convert forward slashes to backslashes
|
|
44
|
-
normalized = normalized.replace(/\//g, path.sep);
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
// On Unix, convert backslashes to forward slashes
|
|
48
|
-
normalized = normalized.replace(/\\/g, path.sep);
|
|
49
|
-
}
|
|
50
|
-
// Use path.normalize to clean up the path
|
|
51
|
-
return path.normalize(normalized);
|
|
52
|
-
}
|
|
53
|
-
resolveSearchPath(query) {
|
|
54
|
-
// Handle empty query
|
|
55
|
-
if (!query) {
|
|
56
|
-
return { searchPath: '.', searchTerm: '' };
|
|
57
|
-
}
|
|
58
|
-
// Find the last separator position
|
|
59
|
-
let lastSepIndex = -1;
|
|
60
|
-
for (let i = query.length - 1; i >= 0; i--) {
|
|
61
|
-
if (query[i] === '/' || query[i] === '\\') {
|
|
62
|
-
lastSepIndex = i;
|
|
63
|
-
break;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
if (lastSepIndex === -1) {
|
|
67
|
-
// No separator - searching in current directory
|
|
68
|
-
return { searchPath: '.', searchTerm: query };
|
|
69
|
-
}
|
|
70
|
-
// Split at the last separator
|
|
71
|
-
const searchPath = query.substring(0, lastSepIndex) || '.';
|
|
72
|
-
const searchTerm = query.substring(lastSepIndex + 1);
|
|
73
|
-
return { searchPath, searchTerm };
|
|
74
|
-
}
|
|
75
|
-
async listFiles(directory, options = {}) {
|
|
76
|
-
const cacheKey = `list:${directory}:${JSON.stringify(options)}`;
|
|
77
|
-
const cached = this.getFromCache(cacheKey);
|
|
78
|
-
if (cached)
|
|
79
|
-
return cached;
|
|
80
|
-
const expandedDir = this.expandPath(directory);
|
|
81
|
-
try {
|
|
82
|
-
const entries = await fs.readdir(expandedDir, { withFileTypes: true });
|
|
83
|
-
const files = [];
|
|
84
|
-
for (const entry of entries) {
|
|
85
|
-
// Skip hidden files unless explicitly included
|
|
86
|
-
if (!options.includeHidden && entry.name.startsWith('.')) {
|
|
87
|
-
continue;
|
|
88
|
-
}
|
|
89
|
-
const fullPath = path.join(expandedDir, entry.name);
|
|
90
|
-
const stats = await fs.stat(fullPath);
|
|
91
|
-
const fileInfo = {
|
|
92
|
-
name: entry.name,
|
|
93
|
-
path: fullPath,
|
|
94
|
-
relativePath: path.relative(process.cwd(), fullPath),
|
|
95
|
-
isDirectory: entry.isDirectory(),
|
|
96
|
-
size: stats.size,
|
|
97
|
-
modified: stats.mtime,
|
|
98
|
-
};
|
|
99
|
-
// Apply pattern filter if provided
|
|
100
|
-
if (options.pattern) {
|
|
101
|
-
if (fileInfo.isDirectory || minimatch(fileInfo.name, options.pattern)) {
|
|
102
|
-
files.push(fileInfo);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
files.push(fileInfo);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
// Sort files: directories first, then by modification time
|
|
110
|
-
files.sort((a, b) => {
|
|
111
|
-
if (a.isDirectory && !b.isDirectory)
|
|
112
|
-
return -1;
|
|
113
|
-
if (!a.isDirectory && b.isDirectory)
|
|
114
|
-
return 1;
|
|
115
|
-
return b.modified.getTime() - a.modified.getTime();
|
|
116
|
-
});
|
|
117
|
-
this.setCache(cacheKey, files);
|
|
118
|
-
return files;
|
|
119
|
-
}
|
|
120
|
-
catch (error) {
|
|
121
|
-
if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {
|
|
122
|
-
throw new Error(`Directory not found: ${directory}`);
|
|
123
|
-
}
|
|
124
|
-
throw error;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
async searchFiles(directory, query) {
|
|
128
|
-
// Build or update search index if needed
|
|
129
|
-
if (!this.searchIndex || this.searchIndexPath !== directory) {
|
|
130
|
-
await this.buildSearchIndex(directory);
|
|
131
|
-
}
|
|
132
|
-
if (!this.searchIndex) {
|
|
133
|
-
return [];
|
|
134
|
-
}
|
|
135
|
-
const results = this.searchIndex.search(query, {
|
|
136
|
-
fuzzy: 0.2,
|
|
137
|
-
prefix: true,
|
|
138
|
-
boost: { name: 2 }
|
|
139
|
-
});
|
|
140
|
-
return results.map(result => {
|
|
141
|
-
const fileInfo = this.searchIndex.getStoredFields(result.id);
|
|
142
|
-
return fileInfo;
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
async glob(directory, pattern, options = {}) {
|
|
146
|
-
const cacheKey = `glob:${directory}:${pattern}:${JSON.stringify(options)}`;
|
|
147
|
-
const cached = this.getFromCache(cacheKey);
|
|
148
|
-
if (cached)
|
|
149
|
-
return cached;
|
|
150
|
-
const expandedDir = this.expandPath(directory);
|
|
151
|
-
const globOptions = {
|
|
152
|
-
cwd: expandedDir,
|
|
153
|
-
ignore: options.ignore || this.options.excludePatterns,
|
|
154
|
-
follow: options.followSymlinks ?? false,
|
|
155
|
-
absolute: false
|
|
156
|
-
};
|
|
157
|
-
const matches = await glob(pattern, globOptions);
|
|
158
|
-
const files = [];
|
|
159
|
-
for (const match of matches) {
|
|
160
|
-
const fullPath = path.join(expandedDir, match);
|
|
161
|
-
try {
|
|
162
|
-
const stats = await fs.stat(fullPath);
|
|
163
|
-
files.push({
|
|
164
|
-
name: path.basename(match),
|
|
165
|
-
path: fullPath,
|
|
166
|
-
relativePath: match,
|
|
167
|
-
isDirectory: stats.isDirectory(),
|
|
168
|
-
size: stats.size,
|
|
169
|
-
modified: stats.mtime
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
catch {
|
|
173
|
-
// Skip files that can't be accessed
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
this.setCache(cacheKey, files);
|
|
177
|
-
return files;
|
|
178
|
-
}
|
|
179
|
-
async buildSearchIndex(directory) {
|
|
180
|
-
const files = await this.listFilesRecursive(directory);
|
|
181
|
-
this.searchIndex = new MiniSearch({
|
|
182
|
-
fields: ['name', 'relativePath'],
|
|
183
|
-
storeFields: ['name', 'path', 'relativePath', 'isDirectory', 'size', 'modified'],
|
|
184
|
-
searchOptions: {
|
|
185
|
-
boost: { name: 2 },
|
|
186
|
-
fuzzy: 0.2
|
|
187
|
-
}
|
|
188
|
-
});
|
|
189
|
-
// Add numeric IDs to files
|
|
190
|
-
const filesWithIds = files.map((file, index) => ({
|
|
191
|
-
...file,
|
|
192
|
-
id: index.toString()
|
|
193
|
-
}));
|
|
194
|
-
this.searchIndex.addAll(filesWithIds);
|
|
195
|
-
this.searchIndexPath = directory;
|
|
196
|
-
}
|
|
197
|
-
async listFilesRecursive(directory) {
|
|
198
|
-
const allFiles = [];
|
|
199
|
-
const expandedDir = this.expandPath(directory);
|
|
200
|
-
const walk = async (dir) => {
|
|
201
|
-
try {
|
|
202
|
-
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
203
|
-
for (const entry of entries) {
|
|
204
|
-
// Skip hidden files and excluded patterns
|
|
205
|
-
if (entry.name.startsWith('.'))
|
|
206
|
-
continue;
|
|
207
|
-
const fullPath = path.join(dir, entry.name);
|
|
208
|
-
const relativePath = path.relative(expandedDir, fullPath);
|
|
209
|
-
// Skip excluded patterns
|
|
210
|
-
let skip = false;
|
|
211
|
-
for (const pattern of this.options.excludePatterns) {
|
|
212
|
-
if (minimatch(relativePath, pattern)) {
|
|
213
|
-
skip = true;
|
|
214
|
-
break;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
if (skip)
|
|
218
|
-
continue;
|
|
219
|
-
const stats = await fs.stat(fullPath);
|
|
220
|
-
allFiles.push({
|
|
221
|
-
name: entry.name,
|
|
222
|
-
path: fullPath,
|
|
223
|
-
relativePath,
|
|
224
|
-
isDirectory: entry.isDirectory(),
|
|
225
|
-
size: stats.size,
|
|
226
|
-
modified: stats.mtime
|
|
227
|
-
});
|
|
228
|
-
if (entry.isDirectory()) {
|
|
229
|
-
await walk(fullPath);
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
catch {
|
|
234
|
-
// Skip directories that can't be accessed
|
|
235
|
-
}
|
|
236
|
-
};
|
|
237
|
-
await walk(expandedDir);
|
|
238
|
-
return allFiles;
|
|
239
|
-
}
|
|
240
|
-
getFromCache(key) {
|
|
241
|
-
const cached = this.cache.get(key);
|
|
242
|
-
if (!cached)
|
|
243
|
-
return null;
|
|
244
|
-
const age = Date.now() - cached.timestamp;
|
|
245
|
-
if (age > this.options.cacheTimeout) {
|
|
246
|
-
this.cache.delete(key);
|
|
247
|
-
return null;
|
|
248
|
-
}
|
|
249
|
-
return cached.data;
|
|
250
|
-
}
|
|
251
|
-
setCache(key, data) {
|
|
252
|
-
this.cache.set(key, { data, timestamp: Date.now() });
|
|
253
|
-
// Clean up old cache entries if too many
|
|
254
|
-
if (this.cache.size > 100) {
|
|
255
|
-
const entries = Array.from(this.cache.entries());
|
|
256
|
-
entries.sort((a, b) => a[1].timestamp - b[1].timestamp);
|
|
257
|
-
// Remove oldest 20 entries
|
|
258
|
-
for (let i = 0; i < 20; i++) {
|
|
259
|
-
this.cache.delete(entries[i][0]);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
clearCache() {
|
|
264
|
-
this.cache.clear();
|
|
265
|
-
this.searchIndex = null;
|
|
266
|
-
this.searchIndexPath = null;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
//# sourceMappingURL=file-system-service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-system-service.js","sourceRoot":"","sources":["../../src/services/file-system-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
interface FileInfo {
|
|
2
|
-
name: string;
|
|
3
|
-
path: string;
|
|
4
|
-
isDirectory: boolean;
|
|
5
|
-
mtime: Date;
|
|
6
|
-
}
|
|
7
|
-
interface ListFilesOptions {
|
|
8
|
-
includeHidden?: boolean;
|
|
9
|
-
}
|
|
10
|
-
export declare function listFiles(dirPath: string, options?: ListFilesOptions): FileInfo[];
|
|
11
|
-
export declare function sortFilesByModTime(files: FileInfo[]): FileInfo[];
|
|
12
|
-
export declare function filterFilesByPattern(files: FileInfo[], pattern: string): FileInfo[];
|
|
13
|
-
export declare function listFilesWithCache(dirPath: string, options?: ListFilesOptions): FileInfo[];
|
|
14
|
-
export declare function resolveFilePath(input: string, basePath: string): string;
|
|
15
|
-
export declare function expandPath(inputPath: string): string;
|
|
16
|
-
export {};
|
|
17
|
-
//# sourceMappingURL=file-utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../src/utils/file-utils.ts"],"names":[],"mappings":"AAIA,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,IAAI,CAAC;CACb;AAED,UAAU,gBAAgB;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,QAAQ,EAAE,CA+BrF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAShE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,CAcnF;AAKD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,QAAQ,EAAE,CAY9F;AAMD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMvE;AAMD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQpD"}
|
package/dist/utils/file-utils.js
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import { minimatch } from 'minimatch';
|
|
4
|
-
export function listFiles(dirPath, options = {}) {
|
|
5
|
-
const { includeHidden = false } = options;
|
|
6
|
-
try {
|
|
7
|
-
const entries = fs.readdirSync(dirPath, { withFileTypes: true });
|
|
8
|
-
const files = [];
|
|
9
|
-
for (const entry of entries) {
|
|
10
|
-
// Skip hidden files unless explicitly included
|
|
11
|
-
if (!includeHidden && entry.name.startsWith('.')) {
|
|
12
|
-
continue;
|
|
13
|
-
}
|
|
14
|
-
const fullPath = path.join(dirPath, entry.name);
|
|
15
|
-
const stats = fs.statSync(fullPath);
|
|
16
|
-
files.push({
|
|
17
|
-
name: entry.name,
|
|
18
|
-
path: fullPath,
|
|
19
|
-
isDirectory: entry.isDirectory(),
|
|
20
|
-
mtime: stats.mtime,
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
return files;
|
|
24
|
-
}
|
|
25
|
-
catch (error) {
|
|
26
|
-
if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {
|
|
27
|
-
throw new Error(`Directory not found: ${dirPath}`);
|
|
28
|
-
}
|
|
29
|
-
throw error;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
export function sortFilesByModTime(files) {
|
|
33
|
-
return [...files].sort((a, b) => {
|
|
34
|
-
// Directories always come first
|
|
35
|
-
if (a.isDirectory && !b.isDirectory)
|
|
36
|
-
return -1;
|
|
37
|
-
if (!a.isDirectory && b.isDirectory)
|
|
38
|
-
return 1;
|
|
39
|
-
// Then sort by modification time (newest first)
|
|
40
|
-
return b.mtime.getTime() - a.mtime.getTime();
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
export function filterFilesByPattern(files, pattern) {
|
|
44
|
-
if (!pattern || pattern === '') {
|
|
45
|
-
return files;
|
|
46
|
-
}
|
|
47
|
-
return files.filter(file => {
|
|
48
|
-
// Always include directories for navigation
|
|
49
|
-
if (file.isDirectory) {
|
|
50
|
-
return true;
|
|
51
|
-
}
|
|
52
|
-
// Match files against the pattern
|
|
53
|
-
return minimatch(file.name, pattern);
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
const fileCache = new Map();
|
|
57
|
-
const CACHE_TTL = 5000; // 5 seconds
|
|
58
|
-
export function listFilesWithCache(dirPath, options = {}) {
|
|
59
|
-
const cacheKey = `${dirPath}:${JSON.stringify(options)}`;
|
|
60
|
-
const cached = fileCache.get(cacheKey);
|
|
61
|
-
if (cached && Date.now() - cached.timestamp < CACHE_TTL) {
|
|
62
|
-
return cached.files;
|
|
63
|
-
}
|
|
64
|
-
const files = listFiles(dirPath, options);
|
|
65
|
-
fileCache.set(cacheKey, { files, timestamp: Date.now() });
|
|
66
|
-
return files;
|
|
67
|
-
}
|
|
68
|
-
function _clearFileCache() {
|
|
69
|
-
fileCache.clear();
|
|
70
|
-
}
|
|
71
|
-
export function resolveFilePath(input, basePath) {
|
|
72
|
-
if (path.isAbsolute(input)) {
|
|
73
|
-
return input;
|
|
74
|
-
}
|
|
75
|
-
return path.resolve(basePath, input);
|
|
76
|
-
}
|
|
77
|
-
function _getParentDirectory(filePath) {
|
|
78
|
-
return path.dirname(filePath);
|
|
79
|
-
}
|
|
80
|
-
export function expandPath(inputPath) {
|
|
81
|
-
// Handle home directory expansion
|
|
82
|
-
if (inputPath.startsWith('~/')) {
|
|
83
|
-
const homeDir = process.env.HOME || process.env.USERPROFILE || '';
|
|
84
|
-
return path.join(homeDir, inputPath.slice(2));
|
|
85
|
-
}
|
|
86
|
-
return inputPath;
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=file-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../src/utils/file-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAatC,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,UAA4B,EAAE;IACvE,MAAM,EAAE,aAAa,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,KAAK,GAAe,EAAE,CAAC;QAE7B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,+CAA+C;YAC/C,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjD,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEpC,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;gBAChC,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAiB;IAClD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9B,gCAAgC;QAChC,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,WAAW;YAAE,OAAO,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW;YAAE,OAAO,CAAC,CAAC;QAE9C,gDAAgD;QAChD,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAiB,EAAE,OAAe;IACrE,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACzB,4CAA4C;QAC5C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,kCAAkC;QAClC,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoD,CAAC;AAC9E,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,YAAY;AAEpC,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,UAA4B,EAAE;IAChF,MAAM,QAAQ,GAAG,GAAG,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;IACzD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEvC,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;QACxD,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAE1D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe;IACtB,SAAS,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,QAAgB;IAC7D,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,SAAiB;IAC1C,kCAAkC;IAClC,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAClE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Utilities for converting paths to portable format for config files.
|
|
3
|
-
*
|
|
4
|
-
* When saving configs, absolute paths should be converted to portable formats:
|
|
5
|
-
* - Paths under project root → ${projectRoot}/...
|
|
6
|
-
* - Paths under home directory → ~/...
|
|
7
|
-
* - Already relative paths → kept as-is
|
|
8
|
-
* - Other absolute paths → kept as-is with warning
|
|
9
|
-
*/
|
|
10
|
-
export interface ContractPathsOptions {
|
|
11
|
-
/** Directory to resolve relative paths from (typically config file location) */
|
|
12
|
-
configDir?: string;
|
|
13
|
-
/** Whether to warn about non-portable absolute paths */
|
|
14
|
-
warnOnAbsolute?: boolean;
|
|
15
|
-
}
|
|
16
|
-
export interface ContractPathsResult {
|
|
17
|
-
/** The contracted path */
|
|
18
|
-
path: string;
|
|
19
|
-
/** Whether a warning was issued */
|
|
20
|
-
warned: boolean;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Contract a single path to a portable format.
|
|
24
|
-
*
|
|
25
|
-
* Priority:
|
|
26
|
-
* 1. Already relative paths → keep as-is
|
|
27
|
-
* 2. Paths under project root → ${projectRoot}/...
|
|
28
|
-
* 3. Paths under home directory → ~/...
|
|
29
|
-
* 4. Other absolute paths → keep as-is (with optional warning)
|
|
30
|
-
*/
|
|
31
|
-
export declare function contractPath(filepath: string, options?: ContractPathsOptions): ContractPathsResult;
|
|
32
|
-
/**
|
|
33
|
-
* Check if a path is absolute and could be made portable.
|
|
34
|
-
* Used for warning users on config load.
|
|
35
|
-
*/
|
|
36
|
-
export declare function isNonPortableAbsolutePath(filepath: string, configDir?: string): boolean;
|
|
37
|
-
/**
|
|
38
|
-
* Warn about non-portable paths in a config.
|
|
39
|
-
* Call this when loading a config to alert users.
|
|
40
|
-
*/
|
|
41
|
-
export declare function warnAboutNonPortablePaths(paths: (string | undefined)[], configFilePath?: string): void;
|
|
42
|
-
//# sourceMappingURL=path-utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"path-utils.d.ts","sourceRoot":"","sources":["../../src/utils/path-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA4BH,MAAM,WAAW,oBAAoB;IACnC,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CAuDrB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CA8BvF;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,EAC7B,cAAc,CAAC,EAAE,MAAM,GACtB,IAAI,CAkBN"}
|
package/dist/utils/path-utils.js
DELETED
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Utilities for converting paths to portable format for config files.
|
|
3
|
-
*
|
|
4
|
-
* When saving configs, absolute paths should be converted to portable formats:
|
|
5
|
-
* - Paths under project root → ${projectRoot}/...
|
|
6
|
-
* - Paths under home directory → ~/...
|
|
7
|
-
* - Already relative paths → kept as-is
|
|
8
|
-
* - Other absolute paths → kept as-is with warning
|
|
9
|
-
*/
|
|
10
|
-
import path from 'node:path';
|
|
11
|
-
import fs from 'node:fs';
|
|
12
|
-
import os from 'node:os';
|
|
13
|
-
import { findProjectRoot } from './project-root.js';
|
|
14
|
-
import { logger } from './logger.js';
|
|
15
|
-
/**
|
|
16
|
-
* Resolve symlinks in a path, even if the leaf segments don't exist.
|
|
17
|
-
* Walks up to the nearest existing ancestor, resolves it, then re-appends
|
|
18
|
-
* the non-existent tail. This handles macOS /var -> /private/var symlink
|
|
19
|
-
* differences when the target path (e.g. a prompt directory) hasn't been
|
|
20
|
-
* created yet.
|
|
21
|
-
*/
|
|
22
|
-
function safeRealpath(p) {
|
|
23
|
-
try {
|
|
24
|
-
return fs.realpathSync(p);
|
|
25
|
-
}
|
|
26
|
-
catch {
|
|
27
|
-
const parent = path.dirname(p);
|
|
28
|
-
if (parent === p) {
|
|
29
|
-
// Reached filesystem root — nothing more to resolve
|
|
30
|
-
return p;
|
|
31
|
-
}
|
|
32
|
-
return path.join(safeRealpath(parent), path.basename(p));
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Contract a single path to a portable format.
|
|
37
|
-
*
|
|
38
|
-
* Priority:
|
|
39
|
-
* 1. Already relative paths → keep as-is
|
|
40
|
-
* 2. Paths under project root → ${projectRoot}/...
|
|
41
|
-
* 3. Paths under home directory → ~/...
|
|
42
|
-
* 4. Other absolute paths → keep as-is (with optional warning)
|
|
43
|
-
*/
|
|
44
|
-
export function contractPath(filepath, options = {}) {
|
|
45
|
-
const { configDir = process.cwd(), warnOnAbsolute = true } = options;
|
|
46
|
-
// Already relative path - keep as-is
|
|
47
|
-
if (!path.isAbsolute(filepath)) {
|
|
48
|
-
return { path: filepath, warned: false };
|
|
49
|
-
}
|
|
50
|
-
// Already uses ${projectRoot} or ~ - keep as-is
|
|
51
|
-
if (filepath.includes('${projectRoot}') || filepath.startsWith('~/')) {
|
|
52
|
-
return { path: filepath, warned: false };
|
|
53
|
-
}
|
|
54
|
-
const homeDir = os.homedir();
|
|
55
|
-
const projectRoot = findProjectRoot(configDir);
|
|
56
|
-
// Resolve symlinks for comparison (handles macOS /var -> /private/var)
|
|
57
|
-
const resolvedPath = safeRealpath(filepath);
|
|
58
|
-
// Check if path is under project root (prefer this over home)
|
|
59
|
-
if (projectRoot) {
|
|
60
|
-
const resolvedProjectRoot = safeRealpath(projectRoot);
|
|
61
|
-
if (resolvedPath.startsWith(resolvedProjectRoot + path.sep) || resolvedPath === resolvedProjectRoot) {
|
|
62
|
-
const relativePath = path.relative(resolvedProjectRoot, resolvedPath);
|
|
63
|
-
// Use forward slashes for cross-platform compatibility in config
|
|
64
|
-
const portablePath = relativePath.split(path.sep).join('/');
|
|
65
|
-
return {
|
|
66
|
-
path: portablePath ? `\${projectRoot}/${portablePath}` : '${projectRoot}',
|
|
67
|
-
warned: false
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
// Check if path is under home directory
|
|
72
|
-
const resolvedHomeDir = safeRealpath(homeDir);
|
|
73
|
-
if (resolvedPath.startsWith(resolvedHomeDir + path.sep) || resolvedPath === resolvedHomeDir) {
|
|
74
|
-
const relativePath = path.relative(resolvedHomeDir, resolvedPath);
|
|
75
|
-
// Use forward slashes for cross-platform compatibility
|
|
76
|
-
const portablePath = relativePath.split(path.sep).join('/');
|
|
77
|
-
return {
|
|
78
|
-
path: portablePath ? `~/${portablePath}` : '~',
|
|
79
|
-
warned: false
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
// Absolute path outside project and home - keep as-is but warn
|
|
83
|
-
if (warnOnAbsolute) {
|
|
84
|
-
logger.warn(`Path "${filepath}" is absolute and outside the project root. ` +
|
|
85
|
-
`This path will not be portable across machines. ` +
|
|
86
|
-
`Consider using a relative path, ~/..., or \${projectRoot}/...`);
|
|
87
|
-
}
|
|
88
|
-
return { path: filepath, warned: true };
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Check if a path is absolute and could be made portable.
|
|
92
|
-
* Used for warning users on config load.
|
|
93
|
-
*/
|
|
94
|
-
export function isNonPortableAbsolutePath(filepath, configDir) {
|
|
95
|
-
// Not absolute - it's fine
|
|
96
|
-
if (!path.isAbsolute(filepath)) {
|
|
97
|
-
return false;
|
|
98
|
-
}
|
|
99
|
-
// Uses portable variables - it's fine
|
|
100
|
-
if (filepath.includes('${projectRoot}') || filepath.startsWith('~/')) {
|
|
101
|
-
return false;
|
|
102
|
-
}
|
|
103
|
-
const homeDir = os.homedir();
|
|
104
|
-
const projectRoot = findProjectRoot(configDir || process.cwd());
|
|
105
|
-
const resolvedPath = safeRealpath(filepath);
|
|
106
|
-
// Check if it could be made portable
|
|
107
|
-
if (projectRoot) {
|
|
108
|
-
const resolvedProjectRoot = safeRealpath(projectRoot);
|
|
109
|
-
if (resolvedPath.startsWith(resolvedProjectRoot + path.sep)) {
|
|
110
|
-
return true; // Could use ${projectRoot}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
const resolvedHomeDir = safeRealpath(homeDir);
|
|
114
|
-
if (resolvedPath.startsWith(resolvedHomeDir + path.sep)) {
|
|
115
|
-
return true; // Could use ~/
|
|
116
|
-
}
|
|
117
|
-
// Absolute but can't be made portable - still flag it
|
|
118
|
-
return true;
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Warn about non-portable paths in a config.
|
|
122
|
-
* Call this when loading a config to alert users.
|
|
123
|
-
*/
|
|
124
|
-
export function warnAboutNonPortablePaths(paths, configFilePath) {
|
|
125
|
-
const configDir = configFilePath ? path.dirname(configFilePath) : process.cwd();
|
|
126
|
-
const nonPortable = [];
|
|
127
|
-
for (const p of paths) {
|
|
128
|
-
if (p && isNonPortableAbsolutePath(p, configDir)) {
|
|
129
|
-
nonPortable.push(p);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
if (nonPortable.length > 0) {
|
|
133
|
-
logger.warn(`Your config contains absolute paths that may not be portable:\n` +
|
|
134
|
-
nonPortable.map(p => ` - ${p}`).join('\n') + '\n' +
|
|
135
|
-
`These will be converted to portable format next time the config is saved.\n` +
|
|
136
|
-
`To fix manually, use relative paths, ~/..., or \${projectRoot}/...`);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
//# sourceMappingURL=path-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"path-utils.js","sourceRoot":"","sources":["../../src/utils/path-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Prompt format types supported by pupt.
|
|
3
|
-
*
|
|
4
|
-
* - `jsx`: Build-time JSX, imported as ES modules (.tsx/.jsx files)
|
|
5
|
-
* - `jsx-runtime`: Runtime-parsed JSX via createPromptFromSource (.prompt files)
|
|
6
|
-
*/
|
|
7
|
-
export type PromptFormat = 'jsx' | 'jsx-runtime';
|
|
8
|
-
/**
|
|
9
|
-
* File extensions recognized as pupt-lib JSX prompt formats.
|
|
10
|
-
*/
|
|
11
|
-
export declare const PUPT_LIB_EXTENSIONS: string[];
|
|
12
|
-
/**
|
|
13
|
-
* All file extensions recognized as prompt files.
|
|
14
|
-
*/
|
|
15
|
-
export declare const ALL_PROMPT_EXTENSIONS: string[];
|
|
16
|
-
/**
|
|
17
|
-
* Detect the prompt format based on file extension.
|
|
18
|
-
*
|
|
19
|
-
* @param filePath - Path or filename to check
|
|
20
|
-
* @returns The detected prompt format
|
|
21
|
-
*/
|
|
22
|
-
export declare function detectPromptFormat(filePath: string): PromptFormat;
|
|
23
|
-
/**
|
|
24
|
-
* Check if a file is a pupt-lib prompt format.
|
|
25
|
-
*/
|
|
26
|
-
export declare function isPuptLibFormat(filePath: string): boolean;
|
|
27
|
-
//# sourceMappingURL=prompt-format.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-format.d.ts","sourceRoot":"","sources":["../../src/utils/prompt-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,aAAa,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,mBAAmB,UAA8B,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,qBAAqB,UAA2B,CAAC;AAE9D;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAKjE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGzD"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* File extensions recognized as pupt-lib JSX prompt formats.
|
|
3
|
-
*/
|
|
4
|
-
export const PUPT_LIB_EXTENSIONS = ['.tsx', '.jsx', '.prompt'];
|
|
5
|
-
/**
|
|
6
|
-
* All file extensions recognized as prompt files.
|
|
7
|
-
*/
|
|
8
|
-
export const ALL_PROMPT_EXTENSIONS = [...PUPT_LIB_EXTENSIONS];
|
|
9
|
-
/**
|
|
10
|
-
* Detect the prompt format based on file extension.
|
|
11
|
-
*
|
|
12
|
-
* @param filePath - Path or filename to check
|
|
13
|
-
* @returns The detected prompt format
|
|
14
|
-
*/
|
|
15
|
-
export function detectPromptFormat(filePath) {
|
|
16
|
-
if (filePath.endsWith('.tsx') || filePath.endsWith('.jsx')) {
|
|
17
|
-
return 'jsx';
|
|
18
|
-
}
|
|
19
|
-
return 'jsx-runtime';
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Check if a file is a pupt-lib prompt format.
|
|
23
|
-
*/
|
|
24
|
-
export function isPuptLibFormat(filePath) {
|
|
25
|
-
const format = detectPromptFormat(filePath);
|
|
26
|
-
return format === 'jsx' || format === 'jsx-runtime';
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=prompt-format.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-format.js","sourceRoot":"","sources":["../../src/utils/prompt-format.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,mBAAmB,CAAC,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,aAAa,CAAC;AACtD,CAAC"}
|