@involvex/super-agent-cli 0.0.45 → 0.0.47
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/bunfig.toml +43 -0
- package/dist/index.js +9 -15
- package/dist/super-agent-cli.exe +0 -0
- package/package.json +4 -1
- package/.grok/settings.json +0 -3
- package/.super-agent/settings.json +0 -23
- package/dist/agent/grok-agent.d.ts +0 -54
- package/dist/agent/grok-agent.js +0 -638
- package/dist/agent/grok-agent.js.map +0 -1
- package/dist/agent/index.d.ts +0 -14
- package/dist/agent/index.js +0 -139
- package/dist/agent/index.js.map +0 -1
- package/dist/agent/super-agent.d.ts +0 -54
- package/dist/agent/super-agent.js +0 -638
- package/dist/agent/super-agent.js.map +0 -1
- package/dist/commands/mcp.d.ts +0 -2
- package/dist/commands/mcp.js +0 -247
- package/dist/commands/mcp.js.map +0 -1
- package/dist/core/client.d.ts +0 -49
- package/dist/core/client.js +0 -81
- package/dist/core/client.js.map +0 -1
- package/dist/core/tools.d.ts +0 -8
- package/dist/core/tools.js +0 -351
- package/dist/core/tools.js.map +0 -1
- package/dist/grok/client.d.ts +0 -49
- package/dist/grok/client.js +0 -81
- package/dist/grok/client.js.map +0 -1
- package/dist/grok/tools.d.ts +0 -8
- package/dist/grok/tools.js +0 -351
- package/dist/grok/tools.js.map +0 -1
- package/dist/hooks/use-enhanced-input.d.ts +0 -37
- package/dist/hooks/use-enhanced-input.js +0 -228
- package/dist/hooks/use-enhanced-input.js.map +0 -1
- package/dist/hooks/use-input-handler.d.ts +0 -34
- package/dist/hooks/use-input-handler.js +0 -607
- package/dist/hooks/use-input-handler.js.map +0 -1
- package/dist/hooks/use-input-history.d.ts +0 -9
- package/dist/hooks/use-input-history.js +0 -62
- package/dist/hooks/use-input-history.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js.map +0 -1
- package/dist/mcp/client.d.ts +0 -29
- package/dist/mcp/client.js +0 -127
- package/dist/mcp/client.js.map +0 -1
- package/dist/mcp/config.d.ts +0 -13
- package/dist/mcp/config.js +0 -45
- package/dist/mcp/config.js.map +0 -1
- package/dist/mcp/transports.d.ts +0 -51
- package/dist/mcp/transports.js +0 -229
- package/dist/mcp/transports.js.map +0 -1
- package/dist/tools/bash.d.ts +0 -10
- package/dist/tools/bash.js +0 -76
- package/dist/tools/bash.js.map +0 -1
- package/dist/tools/confirmation-tool.d.ts +0 -16
- package/dist/tools/confirmation-tool.js +0 -77
- package/dist/tools/confirmation-tool.js.map +0 -1
- package/dist/tools/index.d.ts +0 -6
- package/dist/tools/index.js +0 -7
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/morph-editor.d.ts +0 -36
- package/dist/tools/morph-editor.js +0 -324
- package/dist/tools/morph-editor.js.map +0 -1
- package/dist/tools/search.d.ts +0 -69
- package/dist/tools/search.js +0 -307
- package/dist/tools/search.js.map +0 -1
- package/dist/tools/text-editor.d.ts +0 -26
- package/dist/tools/text-editor.js +0 -583
- package/dist/tools/text-editor.js.map +0 -1
- package/dist/tools/todo-tool.d.ts +0 -20
- package/dist/tools/todo-tool.js +0 -134
- package/dist/tools/todo-tool.js.map +0 -1
- package/dist/types/index.d.ts +0 -30
- package/dist/types/index.js +0 -2
- package/dist/types/index.js.map +0 -1
- package/dist/ui/app.d.ts +0 -6
- package/dist/ui/app.js +0 -76
- package/dist/ui/app.js.map +0 -1
- package/dist/ui/components/api-key-input.d.ts +0 -6
- package/dist/ui/components/api-key-input.js +0 -70
- package/dist/ui/components/api-key-input.js.map +0 -1
- package/dist/ui/components/chat-history.d.ts +0 -7
- package/dist/ui/components/chat-history.js +0 -136
- package/dist/ui/components/chat-history.js.map +0 -1
- package/dist/ui/components/chat-input.d.ts +0 -8
- package/dist/ui/components/chat-input.js +0 -47
- package/dist/ui/components/chat-input.js.map +0 -1
- package/dist/ui/components/chat-interface.d.ts +0 -7
- package/dist/ui/components/chat-interface.js +0 -213
- package/dist/ui/components/chat-interface.js.map +0 -1
- package/dist/ui/components/command-suggestions.d.ts +0 -16
- package/dist/ui/components/command-suggestions.js +0 -18
- package/dist/ui/components/command-suggestions.js.map +0 -1
- package/dist/ui/components/confirmation-dialog.d.ts +0 -10
- package/dist/ui/components/confirmation-dialog.js +0 -70
- package/dist/ui/components/confirmation-dialog.js.map +0 -1
- package/dist/ui/components/diff-renderer.d.ts +0 -13
- package/dist/ui/components/diff-renderer.js +0 -200
- package/dist/ui/components/diff-renderer.js.map +0 -1
- package/dist/ui/components/loading-spinner.d.ts +0 -7
- package/dist/ui/components/loading-spinner.js +0 -52
- package/dist/ui/components/loading-spinner.js.map +0 -1
- package/dist/ui/components/mcp-status.d.ts +0 -4
- package/dist/ui/components/mcp-status.js +0 -37
- package/dist/ui/components/mcp-status.js.map +0 -1
- package/dist/ui/components/model-selection.d.ts +0 -11
- package/dist/ui/components/model-selection.js +0 -9
- package/dist/ui/components/model-selection.js.map +0 -1
- package/dist/ui/shared/max-sized-box.d.ts +0 -8
- package/dist/ui/shared/max-sized-box.js +0 -6
- package/dist/ui/shared/max-sized-box.js.map +0 -1
- package/dist/ui/utils/code-colorizer.d.ts +0 -2
- package/dist/ui/utils/code-colorizer.js +0 -7
- package/dist/ui/utils/code-colorizer.js.map +0 -1
- package/dist/ui/utils/colors.d.ts +0 -14
- package/dist/ui/utils/colors.js +0 -15
- package/dist/ui/utils/colors.js.map +0 -1
- package/dist/ui/utils/markdown-renderer.d.ts +0 -3
- package/dist/ui/utils/markdown-renderer.js +0 -23
- package/dist/ui/utils/markdown-renderer.js.map +0 -1
- package/dist/utils/confirmation-service.d.ts +0 -33
- package/dist/utils/confirmation-service.js +0 -110
- package/dist/utils/confirmation-service.js.map +0 -1
- package/dist/utils/custom-instructions.d.ts +0 -1
- package/dist/utils/custom-instructions.js +0 -23
- package/dist/utils/custom-instructions.js.map +0 -1
- package/dist/utils/model-config.d.ts +0 -28
- package/dist/utils/model-config.js +0 -42
- package/dist/utils/model-config.js.map +0 -1
- package/dist/utils/settings-manager.d.ts +0 -99
- package/dist/utils/settings-manager.js +0 -286
- package/dist/utils/settings-manager.js.map +0 -1
- package/dist/utils/settings.d.ts +0 -1
- package/dist/utils/settings.js +0 -4
- package/dist/utils/settings.js.map +0 -1
- package/dist/utils/text-utils.d.ts +0 -80
- package/dist/utils/text-utils.js +0 -191
- package/dist/utils/text-utils.js.map +0 -1
- package/dist/utils/token-counter.d.ts +0 -33
- package/dist/utils/token-counter.js +0 -79
- package/dist/utils/token-counter.js.map +0 -1
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
import * as path from "path";
|
|
2
|
-
import * as os from "os";
|
|
3
|
-
import * as fs from "fs";
|
|
4
|
-
/**
|
|
5
|
-
* Current settings version - increment this when adding new models or changing settings structure
|
|
6
|
-
* This triggers automatic migration for existing users
|
|
7
|
-
*/
|
|
8
|
-
const SETTINGS_VERSION = 2;
|
|
9
|
-
/**
|
|
10
|
-
* Default values for user settings
|
|
11
|
-
*/
|
|
12
|
-
const DEFAULT_USER_SETTINGS = {
|
|
13
|
-
baseURL: "https://api.x.ai/v1",
|
|
14
|
-
defaultModel: "grok-code-fast-1",
|
|
15
|
-
models: [
|
|
16
|
-
// Super Agent 4.1 Fast models (2M context, latest - November 2025)
|
|
17
|
-
"grok-4-1-fast-reasoning",
|
|
18
|
-
"grok-4-1-fast-non-reasoning",
|
|
19
|
-
// Grok 4 Fast models (2M context)
|
|
20
|
-
"grok-4-fast-reasoning",
|
|
21
|
-
"grok-4-fast-non-reasoning",
|
|
22
|
-
// Grok 4 flagship (256K context)
|
|
23
|
-
"grok-4",
|
|
24
|
-
"grok-4-latest",
|
|
25
|
-
// Grok Code (optimized for coding, 256K context)
|
|
26
|
-
"grok-code-fast-1",
|
|
27
|
-
// Super Agent 3 models (131K context)
|
|
28
|
-
"grok-3",
|
|
29
|
-
"grok-3-latest",
|
|
30
|
-
"grok-3-fast",
|
|
31
|
-
"grok-3-mini",
|
|
32
|
-
"grok-3-mini-fast",
|
|
33
|
-
],
|
|
34
|
-
};
|
|
35
|
-
/**
|
|
36
|
-
* Default values for project settings
|
|
37
|
-
*/
|
|
38
|
-
const DEFAULT_PROJECT_SETTINGS = {
|
|
39
|
-
model: "grok-code-fast-1",
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* Unified settings manager that handles both user-level and project-level settings
|
|
43
|
-
*/
|
|
44
|
-
export class SettingsManager {
|
|
45
|
-
static instance;
|
|
46
|
-
userSettingsPath;
|
|
47
|
-
projectSettingsPath;
|
|
48
|
-
constructor() {
|
|
49
|
-
// User settings path: ~/.super-agent/user-settings.json
|
|
50
|
-
this.userSettingsPath = path.join(os.homedir(), ".super-agent", "user-settings.json");
|
|
51
|
-
// Project settings path: .super-agent/settings.json (in current working directory)
|
|
52
|
-
this.projectSettingsPath = path.join(process.cwd(), ".super-agent", "settings.json");
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Get singleton instance
|
|
56
|
-
*/
|
|
57
|
-
static getInstance() {
|
|
58
|
-
if (!SettingsManager.instance) {
|
|
59
|
-
SettingsManager.instance = new SettingsManager();
|
|
60
|
-
}
|
|
61
|
-
return SettingsManager.instance;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Ensure directory exists for a given file path
|
|
65
|
-
*/
|
|
66
|
-
ensureDirectoryExists(filePath) {
|
|
67
|
-
const dir = path.dirname(filePath);
|
|
68
|
-
if (!fs.existsSync(dir)) {
|
|
69
|
-
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Load user settings from ~/.super-agent/user-settings.json
|
|
74
|
-
*/
|
|
75
|
-
loadUserSettings() {
|
|
76
|
-
try {
|
|
77
|
-
if (!fs.existsSync(this.userSettingsPath)) {
|
|
78
|
-
// Create default user settings if file doesn't exist
|
|
79
|
-
const newSettings = {
|
|
80
|
-
...DEFAULT_USER_SETTINGS,
|
|
81
|
-
settingsVersion: SETTINGS_VERSION,
|
|
82
|
-
};
|
|
83
|
-
this.saveUserSettings(newSettings);
|
|
84
|
-
return newSettings;
|
|
85
|
-
}
|
|
86
|
-
const content = fs.readFileSync(this.userSettingsPath, "utf-8");
|
|
87
|
-
const settings = JSON.parse(content);
|
|
88
|
-
// Check if migration is needed
|
|
89
|
-
const currentVersion = settings.settingsVersion || 1;
|
|
90
|
-
if (currentVersion < SETTINGS_VERSION) {
|
|
91
|
-
const migratedSettings = this.migrateSettings(settings, currentVersion);
|
|
92
|
-
this.saveUserSettings(migratedSettings);
|
|
93
|
-
return migratedSettings;
|
|
94
|
-
}
|
|
95
|
-
// Merge with defaults to ensure all required fields exist
|
|
96
|
-
return { ...DEFAULT_USER_SETTINGS, ...settings };
|
|
97
|
-
}
|
|
98
|
-
catch (error) {
|
|
99
|
-
console.warn("Failed to load user settings:", error instanceof Error ? error.message : "Unknown error");
|
|
100
|
-
return { ...DEFAULT_USER_SETTINGS };
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Migrate settings from an older version to the current version
|
|
105
|
-
*/
|
|
106
|
-
migrateSettings(settings, fromVersion) {
|
|
107
|
-
let migrated = { ...settings };
|
|
108
|
-
// Migration from version 1 to 2: Add new Super Agent 4.1 and Grok 4 Fast models
|
|
109
|
-
if (fromVersion < 2) {
|
|
110
|
-
const defaultModels = DEFAULT_USER_SETTINGS.models || [];
|
|
111
|
-
const existingModels = new Set(migrated.models || []);
|
|
112
|
-
// Add any new models that don't exist in user's current list
|
|
113
|
-
const newModels = defaultModels.filter(model => !existingModels.has(model));
|
|
114
|
-
// Prepend new models to the list (newest models first)
|
|
115
|
-
migrated.models = [...newModels, ...(migrated.models || [])];
|
|
116
|
-
}
|
|
117
|
-
// Add future migrations here:
|
|
118
|
-
// if (fromVersion < 3) { ... }
|
|
119
|
-
migrated.settingsVersion = SETTINGS_VERSION;
|
|
120
|
-
return migrated;
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Save user settings to ~/.super-agent/user-settings.json
|
|
124
|
-
*/
|
|
125
|
-
saveUserSettings(settings) {
|
|
126
|
-
try {
|
|
127
|
-
this.ensureDirectoryExists(this.userSettingsPath);
|
|
128
|
-
// Read existing settings directly to avoid recursion
|
|
129
|
-
let existingSettings = { ...DEFAULT_USER_SETTINGS };
|
|
130
|
-
if (fs.existsSync(this.userSettingsPath)) {
|
|
131
|
-
try {
|
|
132
|
-
const content = fs.readFileSync(this.userSettingsPath, "utf-8");
|
|
133
|
-
const parsed = JSON.parse(content);
|
|
134
|
-
existingSettings = { ...DEFAULT_USER_SETTINGS, ...parsed };
|
|
135
|
-
}
|
|
136
|
-
catch (error) {
|
|
137
|
-
// If file is corrupted, use defaults
|
|
138
|
-
console.warn("Corrupted user settings file, using defaults");
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
const mergedSettings = { ...existingSettings, ...settings };
|
|
142
|
-
fs.writeFileSync(this.userSettingsPath, JSON.stringify(mergedSettings, null, 2), { mode: 0o600 });
|
|
143
|
-
}
|
|
144
|
-
catch (error) {
|
|
145
|
-
console.error("Failed to save user settings:", error instanceof Error ? error.message : "Unknown error");
|
|
146
|
-
throw error;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Update a specific user setting
|
|
151
|
-
*/
|
|
152
|
-
updateUserSetting(key, value) {
|
|
153
|
-
const settings = { [key]: value };
|
|
154
|
-
this.saveUserSettings(settings);
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Get a specific user setting
|
|
158
|
-
*/
|
|
159
|
-
getUserSetting(key) {
|
|
160
|
-
const settings = this.loadUserSettings();
|
|
161
|
-
return settings[key];
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Load project settings from .super-agent/settings.json
|
|
165
|
-
*/
|
|
166
|
-
loadProjectSettings() {
|
|
167
|
-
try {
|
|
168
|
-
if (!fs.existsSync(this.projectSettingsPath)) {
|
|
169
|
-
// Create default project settings if file doesn't exist
|
|
170
|
-
this.saveProjectSettings(DEFAULT_PROJECT_SETTINGS);
|
|
171
|
-
return { ...DEFAULT_PROJECT_SETTINGS };
|
|
172
|
-
}
|
|
173
|
-
const content = fs.readFileSync(this.projectSettingsPath, "utf-8");
|
|
174
|
-
const settings = JSON.parse(content);
|
|
175
|
-
// Merge with defaults
|
|
176
|
-
return { ...DEFAULT_PROJECT_SETTINGS, ...settings };
|
|
177
|
-
}
|
|
178
|
-
catch (error) {
|
|
179
|
-
console.warn("Failed to load project settings:", error instanceof Error ? error.message : "Unknown error");
|
|
180
|
-
return { ...DEFAULT_PROJECT_SETTINGS };
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Save project settings to .super-agent/settings.json
|
|
185
|
-
*/
|
|
186
|
-
saveProjectSettings(settings) {
|
|
187
|
-
try {
|
|
188
|
-
this.ensureDirectoryExists(this.projectSettingsPath);
|
|
189
|
-
// Read existing settings directly to avoid recursion
|
|
190
|
-
let existingSettings = { ...DEFAULT_PROJECT_SETTINGS };
|
|
191
|
-
if (fs.existsSync(this.projectSettingsPath)) {
|
|
192
|
-
try {
|
|
193
|
-
const content = fs.readFileSync(this.projectSettingsPath, "utf-8");
|
|
194
|
-
const parsed = JSON.parse(content);
|
|
195
|
-
existingSettings = { ...DEFAULT_PROJECT_SETTINGS, ...parsed };
|
|
196
|
-
}
|
|
197
|
-
catch (error) {
|
|
198
|
-
// If file is corrupted, use defaults
|
|
199
|
-
console.warn("Corrupted project settings file, using defaults");
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
const mergedSettings = { ...existingSettings, ...settings };
|
|
203
|
-
fs.writeFileSync(this.projectSettingsPath, JSON.stringify(mergedSettings, null, 2));
|
|
204
|
-
}
|
|
205
|
-
catch (error) {
|
|
206
|
-
console.error("Failed to save project settings:", error instanceof Error ? error.message : "Unknown error");
|
|
207
|
-
throw error;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Update a specific project setting
|
|
212
|
-
*/
|
|
213
|
-
updateProjectSetting(key, value) {
|
|
214
|
-
const settings = { [key]: value };
|
|
215
|
-
this.saveProjectSettings(settings);
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Get a specific project setting
|
|
219
|
-
*/
|
|
220
|
-
getProjectSetting(key) {
|
|
221
|
-
const settings = this.loadProjectSettings();
|
|
222
|
-
return settings[key];
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Get the current model with proper fallback logic:
|
|
226
|
-
* 1. Project-specific model setting
|
|
227
|
-
* 2. User's default model
|
|
228
|
-
* 3. System default
|
|
229
|
-
*/
|
|
230
|
-
getCurrentModel() {
|
|
231
|
-
const projectModel = this.getProjectSetting("model");
|
|
232
|
-
if (projectModel) {
|
|
233
|
-
return projectModel;
|
|
234
|
-
}
|
|
235
|
-
const userDefaultModel = this.getUserSetting("defaultModel");
|
|
236
|
-
if (userDefaultModel) {
|
|
237
|
-
return userDefaultModel;
|
|
238
|
-
}
|
|
239
|
-
return DEFAULT_PROJECT_SETTINGS.model || "grok-code-fast-1";
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Set the current model for the project
|
|
243
|
-
*/
|
|
244
|
-
setCurrentModel(model) {
|
|
245
|
-
this.updateProjectSetting("model", model);
|
|
246
|
-
}
|
|
247
|
-
/**
|
|
248
|
-
* Get available models list from user settings
|
|
249
|
-
*/
|
|
250
|
-
getAvailableModels() {
|
|
251
|
-
const models = this.getUserSetting("models");
|
|
252
|
-
return models || DEFAULT_USER_SETTINGS.models || [];
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* Get API key from user settings or environment
|
|
256
|
-
*/
|
|
257
|
-
getApiKey() {
|
|
258
|
-
// First check environment variable
|
|
259
|
-
const envApiKey = process.env.SUPER_AGENT_API_KEY;
|
|
260
|
-
if (envApiKey) {
|
|
261
|
-
return envApiKey;
|
|
262
|
-
}
|
|
263
|
-
// Then check user settings
|
|
264
|
-
return this.getUserSetting("apiKey");
|
|
265
|
-
}
|
|
266
|
-
/**
|
|
267
|
-
* Get base URL from user settings or environment
|
|
268
|
-
*/
|
|
269
|
-
getBaseURL() {
|
|
270
|
-
// First check environment variable
|
|
271
|
-
const envBaseURL = process.env.SUPER_AGENT_BASE_URL;
|
|
272
|
-
if (envBaseURL) {
|
|
273
|
-
return envBaseURL;
|
|
274
|
-
}
|
|
275
|
-
// Then check user settings
|
|
276
|
-
const userBaseURL = this.getUserSetting("baseURL");
|
|
277
|
-
return (userBaseURL || DEFAULT_USER_SETTINGS.baseURL || "https://api.x.ai/v1");
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
/**
|
|
281
|
-
* Convenience function to get the singleton instance
|
|
282
|
-
*/
|
|
283
|
-
export function getSettingsManager() {
|
|
284
|
-
return SettingsManager.getInstance();
|
|
285
|
-
}
|
|
286
|
-
//# sourceMappingURL=settings-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"settings-manager.js","sourceRoot":"","sources":["../../src/utils/settings-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/settings.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { getSettingsManager, UserSettings, ProjectSettings, } from "./settings-manager";
|
package/dist/utils/settings.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/utils/settings.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,uFAAuF;AAEvF,OAAO,EACL,kBAAkB,GAGnB,MAAM,oBAAoB,CAAC"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Text manipulation utilities for terminal input handling
|
|
3
|
-
* Inspired by Gemini CLI's text processing capabilities
|
|
4
|
-
*/
|
|
5
|
-
export interface TextPosition {
|
|
6
|
-
index: number;
|
|
7
|
-
line: number;
|
|
8
|
-
column: number;
|
|
9
|
-
}
|
|
10
|
-
export interface TextSelection {
|
|
11
|
-
start: number;
|
|
12
|
-
end: number;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Check if a character is a word boundary
|
|
16
|
-
*/
|
|
17
|
-
export declare function isWordBoundary(char: string | undefined): boolean;
|
|
18
|
-
/**
|
|
19
|
-
* Find the start of the current word at the given position
|
|
20
|
-
*/
|
|
21
|
-
export declare function findWordStart(text: string, position: number): number;
|
|
22
|
-
/**
|
|
23
|
-
* Find the end of the current word at the given position
|
|
24
|
-
*/
|
|
25
|
-
export declare function findWordEnd(text: string, position: number): number;
|
|
26
|
-
/**
|
|
27
|
-
* Move cursor to the previous word boundary
|
|
28
|
-
*/
|
|
29
|
-
export declare function moveToPreviousWord(text: string, position: number): number;
|
|
30
|
-
/**
|
|
31
|
-
* Move cursor to the next word boundary
|
|
32
|
-
*/
|
|
33
|
-
export declare function moveToNextWord(text: string, position: number): number;
|
|
34
|
-
/**
|
|
35
|
-
* Delete the word before the cursor
|
|
36
|
-
*/
|
|
37
|
-
export declare function deleteWordBefore(text: string, position: number): {
|
|
38
|
-
text: string;
|
|
39
|
-
position: number;
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* Delete the word after the cursor
|
|
43
|
-
*/
|
|
44
|
-
export declare function deleteWordAfter(text: string, position: number): {
|
|
45
|
-
text: string;
|
|
46
|
-
position: number;
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* Get the current line and column from text position
|
|
50
|
-
*/
|
|
51
|
-
export declare function getTextPosition(text: string, index: number): TextPosition;
|
|
52
|
-
/**
|
|
53
|
-
* Move to the beginning of the current line
|
|
54
|
-
*/
|
|
55
|
-
export declare function moveToLineStart(text: string, position: number): number;
|
|
56
|
-
/**
|
|
57
|
-
* Move to the end of the current line
|
|
58
|
-
*/
|
|
59
|
-
export declare function moveToLineEnd(text: string, position: number): number;
|
|
60
|
-
/**
|
|
61
|
-
* Handle proper Unicode-aware character deletion
|
|
62
|
-
*/
|
|
63
|
-
export declare function deleteCharBefore(text: string, position: number): {
|
|
64
|
-
text: string;
|
|
65
|
-
position: number;
|
|
66
|
-
};
|
|
67
|
-
/**
|
|
68
|
-
* Handle proper Unicode-aware character deletion forward
|
|
69
|
-
*/
|
|
70
|
-
export declare function deleteCharAfter(text: string, position: number): {
|
|
71
|
-
text: string;
|
|
72
|
-
position: number;
|
|
73
|
-
};
|
|
74
|
-
/**
|
|
75
|
-
* Insert text at the given position with proper Unicode handling
|
|
76
|
-
*/
|
|
77
|
-
export declare function insertText(text: string, position: number, insert: string): {
|
|
78
|
-
text: string;
|
|
79
|
-
position: number;
|
|
80
|
-
};
|
package/dist/utils/text-utils.js
DELETED
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Text manipulation utilities for terminal input handling
|
|
3
|
-
* Inspired by Gemini CLI's text processing capabilities
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Check if a character is a word boundary
|
|
7
|
-
*/
|
|
8
|
-
export function isWordBoundary(char) {
|
|
9
|
-
if (!char) {
|
|
10
|
-
return true;
|
|
11
|
-
}
|
|
12
|
-
return /\s/.test(char) || /[^\w]/.test(char);
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Find the start of the current word at the given position
|
|
16
|
-
*/
|
|
17
|
-
export function findWordStart(text, position) {
|
|
18
|
-
if (position <= 0) {
|
|
19
|
-
return 0;
|
|
20
|
-
}
|
|
21
|
-
let pos = position - 1;
|
|
22
|
-
while (pos > 0 && !isWordBoundary(text[pos])) {
|
|
23
|
-
pos--;
|
|
24
|
-
}
|
|
25
|
-
// If we stopped at a word boundary, move forward to the actual word start
|
|
26
|
-
if (pos > 0 && isWordBoundary(text[pos])) {
|
|
27
|
-
pos++;
|
|
28
|
-
}
|
|
29
|
-
return pos;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Find the end of the current word at the given position
|
|
33
|
-
*/
|
|
34
|
-
export function findWordEnd(text, position) {
|
|
35
|
-
if (position >= text.length) {
|
|
36
|
-
return text.length;
|
|
37
|
-
}
|
|
38
|
-
let pos = position;
|
|
39
|
-
while (pos < text.length && !isWordBoundary(text[pos])) {
|
|
40
|
-
pos++;
|
|
41
|
-
}
|
|
42
|
-
return pos;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Move cursor to the previous word boundary
|
|
46
|
-
*/
|
|
47
|
-
export function moveToPreviousWord(text, position) {
|
|
48
|
-
if (position <= 0) {
|
|
49
|
-
return 0;
|
|
50
|
-
}
|
|
51
|
-
let pos = position - 1;
|
|
52
|
-
// Skip whitespace
|
|
53
|
-
while (pos > 0 && isWordBoundary(text[pos])) {
|
|
54
|
-
pos--;
|
|
55
|
-
}
|
|
56
|
-
// Find start of the word
|
|
57
|
-
while (pos > 0 && !isWordBoundary(text[pos - 1])) {
|
|
58
|
-
pos--;
|
|
59
|
-
}
|
|
60
|
-
return pos;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Move cursor to the next word boundary
|
|
64
|
-
*/
|
|
65
|
-
export function moveToNextWord(text, position) {
|
|
66
|
-
if (position >= text.length) {
|
|
67
|
-
return text.length;
|
|
68
|
-
}
|
|
69
|
-
let pos = position;
|
|
70
|
-
// Skip current word
|
|
71
|
-
while (pos < text.length && !isWordBoundary(text[pos])) {
|
|
72
|
-
pos++;
|
|
73
|
-
}
|
|
74
|
-
// Skip whitespace
|
|
75
|
-
while (pos < text.length && isWordBoundary(text[pos])) {
|
|
76
|
-
pos++;
|
|
77
|
-
}
|
|
78
|
-
return pos;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Delete the word before the cursor
|
|
82
|
-
*/
|
|
83
|
-
export function deleteWordBefore(text, position) {
|
|
84
|
-
const wordStart = moveToPreviousWord(text, position);
|
|
85
|
-
const newText = text.slice(0, wordStart) + text.slice(position);
|
|
86
|
-
return {
|
|
87
|
-
text: newText,
|
|
88
|
-
position: wordStart,
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Delete the word after the cursor
|
|
93
|
-
*/
|
|
94
|
-
export function deleteWordAfter(text, position) {
|
|
95
|
-
const wordEnd = moveToNextWord(text, position);
|
|
96
|
-
const newText = text.slice(0, position) + text.slice(wordEnd);
|
|
97
|
-
return {
|
|
98
|
-
text: newText,
|
|
99
|
-
position,
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Get the current line and column from text position
|
|
104
|
-
*/
|
|
105
|
-
export function getTextPosition(text, index) {
|
|
106
|
-
const lines = text.slice(0, index).split("\n");
|
|
107
|
-
return {
|
|
108
|
-
index,
|
|
109
|
-
line: lines.length - 1,
|
|
110
|
-
column: lines[lines.length - 1].length,
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Move to the beginning of the current line
|
|
115
|
-
*/
|
|
116
|
-
export function moveToLineStart(text, position) {
|
|
117
|
-
const beforeCursor = text.slice(0, position);
|
|
118
|
-
const lastNewlineIndex = beforeCursor.lastIndexOf("\n");
|
|
119
|
-
return lastNewlineIndex === -1 ? 0 : lastNewlineIndex + 1;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Move to the end of the current line
|
|
123
|
-
*/
|
|
124
|
-
export function moveToLineEnd(text, position) {
|
|
125
|
-
const afterCursor = text.slice(position);
|
|
126
|
-
const nextNewlineIndex = afterCursor.indexOf("\n");
|
|
127
|
-
return nextNewlineIndex === -1 ? text.length : position + nextNewlineIndex;
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Handle proper Unicode-aware character deletion
|
|
131
|
-
*/
|
|
132
|
-
export function deleteCharBefore(text, position) {
|
|
133
|
-
if (position <= 0) {
|
|
134
|
-
return { text, position };
|
|
135
|
-
}
|
|
136
|
-
// Handle surrogate pairs and combining characters
|
|
137
|
-
let deleteCount = 1;
|
|
138
|
-
const charBefore = text.charAt(position - 1);
|
|
139
|
-
// Check for high surrogate (first part of surrogate pair)
|
|
140
|
-
if (position >= 2) {
|
|
141
|
-
const charBeforeBefore = text.charAt(position - 2);
|
|
142
|
-
if (charBeforeBefore >= "\uD800" &&
|
|
143
|
-
charBeforeBefore <= "\uDBFF" &&
|
|
144
|
-
charBefore >= "\uDC00" &&
|
|
145
|
-
charBefore <= "\uDFFF") {
|
|
146
|
-
deleteCount = 2;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
const newText = text.slice(0, position - deleteCount) + text.slice(position);
|
|
150
|
-
return {
|
|
151
|
-
text: newText,
|
|
152
|
-
position: position - deleteCount,
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Handle proper Unicode-aware character deletion forward
|
|
157
|
-
*/
|
|
158
|
-
export function deleteCharAfter(text, position) {
|
|
159
|
-
if (position >= text.length) {
|
|
160
|
-
return { text, position };
|
|
161
|
-
}
|
|
162
|
-
// Handle surrogate pairs and combining characters
|
|
163
|
-
let deleteCount = 1;
|
|
164
|
-
const charAfter = text.charAt(position);
|
|
165
|
-
// Check for high surrogate (first part of surrogate pair)
|
|
166
|
-
if (position + 1 < text.length) {
|
|
167
|
-
const charAfterAfter = text.charAt(position + 1);
|
|
168
|
-
if (charAfter >= "\uD800" &&
|
|
169
|
-
charAfter <= "\uDBFF" &&
|
|
170
|
-
charAfterAfter >= "\uDC00" &&
|
|
171
|
-
charAfterAfter <= "\uDFFF") {
|
|
172
|
-
deleteCount = 2;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
const newText = text.slice(0, position) + text.slice(position + deleteCount);
|
|
176
|
-
return {
|
|
177
|
-
text: newText,
|
|
178
|
-
position,
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Insert text at the given position with proper Unicode handling
|
|
183
|
-
*/
|
|
184
|
-
export function insertText(text, position, insert) {
|
|
185
|
-
const newText = text.slice(0, position) + insert + text.slice(position);
|
|
186
|
-
return {
|
|
187
|
-
text: newText,
|
|
188
|
-
position: position + insert.length,
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
//# sourceMappingURL=text-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"text-utils.js","sourceRoot":"","sources":["../../src/utils/text-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
export declare class TokenCounter {
|
|
2
|
-
private encoder;
|
|
3
|
-
constructor(model?: string);
|
|
4
|
-
/**
|
|
5
|
-
* Count tokens in a string
|
|
6
|
-
*/
|
|
7
|
-
countTokens(text: string): number;
|
|
8
|
-
/**
|
|
9
|
-
* Count tokens in messages array (for chat completions)
|
|
10
|
-
*/
|
|
11
|
-
countMessageTokens(messages: Array<{
|
|
12
|
-
role: string;
|
|
13
|
-
content: string | null;
|
|
14
|
-
[key: string]: any;
|
|
15
|
-
}>): number;
|
|
16
|
-
/**
|
|
17
|
-
* Estimate tokens for streaming content
|
|
18
|
-
* This is an approximation since we don't have the full response yet
|
|
19
|
-
*/
|
|
20
|
-
estimateStreamingTokens(accumulatedContent: string): number;
|
|
21
|
-
/**
|
|
22
|
-
* Clean up resources
|
|
23
|
-
*/
|
|
24
|
-
dispose(): void;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Format token count for display (e.g., 1.2k for 1200)
|
|
28
|
-
*/
|
|
29
|
-
export declare function formatTokenCount(count: number): string;
|
|
30
|
-
/**
|
|
31
|
-
* Create a token counter instance
|
|
32
|
-
*/
|
|
33
|
-
export declare function createTokenCounter(model?: string): TokenCounter;
|