pupt 2.2.0 → 2.2.1
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/prompts/input-types/file-search-prompt.js +2 -2
- package/dist/prompts/input-types/file-search-prompt.js.map +1 -1
- package/package.json +2 -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/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/add-summary.prompt +0 -54
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { search } from '@inquirer/prompts';
|
|
2
|
-
import { FileSearchEngine } from '
|
|
2
|
+
import { FileSearchEngine } from 'pupt-lib';
|
|
3
3
|
export async function fileSearchPrompt(config) {
|
|
4
|
-
const searchEngine =
|
|
4
|
+
const searchEngine = await FileSearchEngine.create({ basePath: config.basePath || '.', filter: config.filter });
|
|
5
5
|
return await search({
|
|
6
6
|
message: config.message,
|
|
7
7
|
source: async (input, { signal }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-search-prompt.js","sourceRoot":"","sources":["../../../src/prompts/input-types/file-search-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"file-search-prompt.js","sourceRoot":"","sources":["../../../src/prompts/input-types/file-search-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAY5C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAwB;IAC7D,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAEhH,OAAO,MAAM,MAAM,CAAS;QAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,KAAK,EAAE,KAAyB,EAAE,EAAE,MAAM,EAA2B,EAAE,EAAE;YAC/E,uDAAuD;YACvD,+CAA+C;YAE/C,kDAAkD;YAClD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;gBACjF,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBAChC,MAAM,SAAS,GAAG,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBACpD,OAAO;wBACL,IAAI,EAAE,SAAS,CAAC,OAAO;wBACvB,KAAK,EAAE,SAAS,CAAC,KAAK;wBACtB,WAAW,EAAE,SAAS,CAAC,WAAW;qBACnC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;YAED,gDAAgD;YAChD,4EAA4E;YAC5E,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAEzD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACjC,MAAM,SAAS,GAAG,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACpD,OAAO;oBACL,IAAI,EAAE,SAAS,CAAC,OAAO;oBACvB,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,WAAW,EAAE,SAAS,CAAC,WAAW;iBACnC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,2EAA2E;YAC3E,4DAA4D;YAC5D,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACjC,MAAM,eAAe,GAAG,YAAY,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC/D,MAAM,YAAY,GAAG,YAAY,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;gBAEzE,qDAAqD;gBACrD,MAAM,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC;gBAEnF,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC1B,yCAAyC;oBACzC,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,sBAAsB,KAAK,EAAE;wBACnC,KAAK,EAAE,YAAY;wBACnB,WAAW,EAAE,iCAAiC;qBAC/C,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pupt",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.1",
|
|
4
4
|
"description": "Powerful Universal Prompt Tool - your faithful prompt companion",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -104,12 +104,11 @@
|
|
|
104
104
|
"execa": "^9.6.0",
|
|
105
105
|
"fs-extra": "^11.3.1",
|
|
106
106
|
"glob": "^11.0.3",
|
|
107
|
-
"minimatch": "^10.0.3",
|
|
108
107
|
"minisearch": "^7.1.2",
|
|
109
108
|
"ora": "^8.2.0",
|
|
110
109
|
"pino": "^9.9.0",
|
|
111
110
|
"pino-pretty": "^13.1.1",
|
|
112
|
-
"pupt-lib": "^1.3.
|
|
111
|
+
"pupt-lib": "^1.3.5",
|
|
113
112
|
"simple-git": "^3.28.0",
|
|
114
113
|
"strip-ansi": "^7.1.0",
|
|
115
114
|
"uuid": "^11.1.0",
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { type Theme } from '@inquirer/core';
|
|
2
|
-
import type { PartialDeep } from '@inquirer/type';
|
|
3
|
-
interface FilePromptConfig {
|
|
4
|
-
message: string;
|
|
5
|
-
basePath?: string;
|
|
6
|
-
filter?: string;
|
|
7
|
-
default?: string;
|
|
8
|
-
theme?: PartialDeep<Theme>;
|
|
9
|
-
}
|
|
10
|
-
export declare const filePrompt: import("@inquirer/type").Prompt<string, FilePromptConfig>;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=file-prompt.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-prompt.d.ts","sourceRoot":"","sources":["../../../src/prompts/input-types/file-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,KAAK,EACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAYlD,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,2DAmKrB,CAAC"}
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { createPrompt, useState, useKeypress, usePrefix, isEnterKey, isBackspaceKey, makeTheme, } from '@inquirer/core';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import path from 'node:path';
|
|
4
|
-
import { listFilesWithCache, sortFilesByModTime, filterFilesByPattern, expandPath, resolveFilePath, } from '../../utils/file-utils.js';
|
|
5
|
-
import { Trie, completeFilePath } from '../../utils/trie.js';
|
|
6
|
-
export const filePrompt = createPrompt((config, done) => {
|
|
7
|
-
const { message, basePath = './', filter = '', default: defaultValue = '' } = config;
|
|
8
|
-
const theme = makeTheme(config.theme);
|
|
9
|
-
const prefix = usePrefix({ theme });
|
|
10
|
-
const [input, setInput] = useState(defaultValue);
|
|
11
|
-
const [cursorPosition, setCursorPosition] = useState(defaultValue.length);
|
|
12
|
-
const [suggestions, setSuggestions] = useState([]);
|
|
13
|
-
const [selectedSuggestion, setSelectedSuggestion] = useState(0);
|
|
14
|
-
const [error, setError] = useState(null);
|
|
15
|
-
const getCurrentPath = () => {
|
|
16
|
-
const expandedInput = expandPath(input);
|
|
17
|
-
const resolvedPath = resolveFilePath(expandedInput, basePath);
|
|
18
|
-
// If input ends with a separator, it's a directory
|
|
19
|
-
if (input.endsWith(path.sep)) {
|
|
20
|
-
return resolvedPath;
|
|
21
|
-
}
|
|
22
|
-
// Otherwise, use the directory part of the path
|
|
23
|
-
const dirPath = path.dirname(resolvedPath);
|
|
24
|
-
// Ensure we have a valid path
|
|
25
|
-
return dirPath || basePath;
|
|
26
|
-
};
|
|
27
|
-
const getBaseName = () => {
|
|
28
|
-
if (input.endsWith(path.sep)) {
|
|
29
|
-
return '';
|
|
30
|
-
}
|
|
31
|
-
return path.basename(input);
|
|
32
|
-
};
|
|
33
|
-
useKeypress((key) => {
|
|
34
|
-
if (isEnterKey(key)) {
|
|
35
|
-
if (suggestions.length > 0 && selectedSuggestion >= 0) {
|
|
36
|
-
// Use selected suggestion
|
|
37
|
-
const selected = suggestions[selectedSuggestion];
|
|
38
|
-
let newPath;
|
|
39
|
-
// If input ends with a separator, we're in a directory
|
|
40
|
-
if (input.endsWith(path.sep)) {
|
|
41
|
-
newPath = input + selected;
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
const currentDir = path.dirname(input);
|
|
45
|
-
newPath = currentDir === '.' ? selected : path.join(currentDir, selected);
|
|
46
|
-
}
|
|
47
|
-
const expandedPath = expandPath(newPath);
|
|
48
|
-
const finalPath = resolveFilePath(expandedPath, basePath);
|
|
49
|
-
done(finalPath);
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
// Submit current input
|
|
53
|
-
const expandedInput = expandPath(input);
|
|
54
|
-
const finalPath = resolveFilePath(expandedInput, basePath);
|
|
55
|
-
done(finalPath);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
else if (key.name === 'tab') {
|
|
59
|
-
// Tab completion
|
|
60
|
-
try {
|
|
61
|
-
const currentPath = getCurrentPath();
|
|
62
|
-
if (!currentPath) {
|
|
63
|
-
throw new Error('Invalid path');
|
|
64
|
-
}
|
|
65
|
-
const files = listFilesWithCache(currentPath);
|
|
66
|
-
const sortedFiles = sortFilesByModTime(files);
|
|
67
|
-
const filteredFiles = filter ? filterFilesByPattern(sortedFiles, filter) : sortedFiles;
|
|
68
|
-
// Build trie with file names
|
|
69
|
-
const trie = new Trie();
|
|
70
|
-
const fileNames = filteredFiles.map(f => f.isDirectory ? f.name + path.sep : f.name);
|
|
71
|
-
fileNames.forEach(name => trie.insert(name));
|
|
72
|
-
// Complete based on current input
|
|
73
|
-
const baseName = getBaseName();
|
|
74
|
-
const result = completeFilePath(baseName, fileNames);
|
|
75
|
-
if (result.suggestions.length === 0 && result.completed !== baseName) {
|
|
76
|
-
// Single match - complete it
|
|
77
|
-
const currentDir = path.dirname(input);
|
|
78
|
-
const completed = currentDir === '.' ? result.completed : path.join(currentDir, result.completed);
|
|
79
|
-
setInput(completed);
|
|
80
|
-
setCursorPosition(completed.length);
|
|
81
|
-
setSuggestions([]);
|
|
82
|
-
}
|
|
83
|
-
else if (result.suggestions.length > 0) {
|
|
84
|
-
// Multiple matches - show suggestions
|
|
85
|
-
setSuggestions(result.suggestions);
|
|
86
|
-
setSelectedSuggestion(0);
|
|
87
|
-
// Complete to common prefix
|
|
88
|
-
if (result.completed !== baseName) {
|
|
89
|
-
const currentDir = path.dirname(input);
|
|
90
|
-
const completed = currentDir === '.' ? result.completed : path.join(currentDir, result.completed);
|
|
91
|
-
setInput(completed);
|
|
92
|
-
setCursorPosition(completed.length);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
setError(null);
|
|
96
|
-
}
|
|
97
|
-
catch (err) {
|
|
98
|
-
setError(err instanceof Error ? err.message : 'Error listing files');
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
else if (key.name === 'up' && suggestions.length > 0) {
|
|
102
|
-
setSelectedSuggestion(Math.max(0, selectedSuggestion - 1));
|
|
103
|
-
}
|
|
104
|
-
else if (key.name === 'down' && suggestions.length > 0) {
|
|
105
|
-
setSelectedSuggestion(Math.min(suggestions.length - 1, selectedSuggestion + 1));
|
|
106
|
-
}
|
|
107
|
-
else if (key.name === 'escape') {
|
|
108
|
-
setSuggestions([]);
|
|
109
|
-
setSelectedSuggestion(0);
|
|
110
|
-
}
|
|
111
|
-
else if (isBackspaceKey(key)) {
|
|
112
|
-
if (cursorPosition > 0) {
|
|
113
|
-
const newInput = input.slice(0, cursorPosition - 1) + input.slice(cursorPosition);
|
|
114
|
-
setInput(newInput);
|
|
115
|
-
setCursorPosition(cursorPosition - 1);
|
|
116
|
-
setSuggestions([]);
|
|
117
|
-
setSelectedSuggestion(0);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
else if (key.name === 'left') {
|
|
121
|
-
setCursorPosition(Math.max(0, cursorPosition - 1));
|
|
122
|
-
}
|
|
123
|
-
else if (key.name === 'right') {
|
|
124
|
-
setCursorPosition(Math.min(input.length, cursorPosition + 1));
|
|
125
|
-
}
|
|
126
|
-
else if (key.name === 'home') {
|
|
127
|
-
setCursorPosition(0);
|
|
128
|
-
}
|
|
129
|
-
else if (key.name === 'end') {
|
|
130
|
-
setCursorPosition(input.length);
|
|
131
|
-
}
|
|
132
|
-
else if (key.name && !key.ctrl && key.name.length === 1) {
|
|
133
|
-
// Regular character input
|
|
134
|
-
const newInput = input.slice(0, cursorPosition) + key.name + input.slice(cursorPosition);
|
|
135
|
-
setInput(newInput);
|
|
136
|
-
setCursorPosition(cursorPosition + 1);
|
|
137
|
-
setSuggestions([]);
|
|
138
|
-
setSelectedSuggestion(0);
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
// Build display
|
|
142
|
-
let display = `${prefix} ${theme.style.message(message, 'idle')} `;
|
|
143
|
-
// Show input with cursor
|
|
144
|
-
const beforeCursor = input.slice(0, cursorPosition);
|
|
145
|
-
const afterCursor = input.slice(cursorPosition);
|
|
146
|
-
const inputDisplay = theme.style.answer(beforeCursor + '│' + afterCursor);
|
|
147
|
-
display += inputDisplay;
|
|
148
|
-
if (error) {
|
|
149
|
-
display += '\n' + theme.style.error(` ! ${error}`);
|
|
150
|
-
}
|
|
151
|
-
if (suggestions.length > 0) {
|
|
152
|
-
display += '\n' + chalk.dim(' Suggestions:');
|
|
153
|
-
suggestions.forEach((suggestion, index) => {
|
|
154
|
-
const isSelected = index === selectedSuggestion;
|
|
155
|
-
const marker = isSelected ? '❯' : ' ';
|
|
156
|
-
const text = isSelected
|
|
157
|
-
? theme.style.highlight(suggestion)
|
|
158
|
-
: chalk.dim(suggestion);
|
|
159
|
-
display += '\n ' + marker + ' ' + text;
|
|
160
|
-
});
|
|
161
|
-
display += '\n' + chalk.dim(' (Use ↑↓ to navigate, Tab to complete, Enter to select)');
|
|
162
|
-
}
|
|
163
|
-
return display;
|
|
164
|
-
});
|
|
165
|
-
//# sourceMappingURL=file-prompt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-prompt.js","sourceRoot":"","sources":["../../../src/prompts/input-types/file-prompt.ts"],"names":[],"mappings":"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"}
|