@vybestack/llxprt-code-core 0.1.19 → 0.1.20
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/README.md +9 -0
- package/dist/src/auth/anthropic-device-flow.d.ts +1 -1
- package/dist/src/auth/anthropic-device-flow.js +4 -2
- package/dist/src/auth/anthropic-device-flow.js.map +1 -1
- package/dist/src/code_assist/setup.js +49 -15
- package/dist/src/code_assist/setup.js.map +1 -1
- package/dist/src/config/config.d.ts +9 -6
- package/dist/src/config/config.js +24 -21
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/core/client.d.ts +3 -1
- package/dist/src/core/client.js +22 -6
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/contentGenerator.js +0 -2
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +0 -1
- package/dist/src/core/coreToolScheduler.js +0 -3
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/geminiChat.js +57 -5
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.js +158 -3
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/prompts.js +19 -2
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/filters/EmojiFilter.d.ts +122 -0
- package/dist/src/filters/EmojiFilter.js +327 -0
- package/dist/src/filters/EmojiFilter.js.map +1 -0
- package/dist/src/ide/detect-ide.d.ts +2 -0
- package/dist/src/ide/detect-ide.js +18 -2
- package/dist/src/ide/detect-ide.js.map +1 -1
- package/dist/src/ide/ide-installer.js +1 -26
- package/dist/src/ide/ide-installer.js.map +1 -1
- package/dist/src/ide/ideContext.d.ts +6 -6
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/oauth-provider.d.ts +0 -1
- package/dist/src/mcp/oauth-provider.js +2 -3
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/prompt-config/defaults/core-defaults.js +190 -6
- package/dist/src/prompt-config/defaults/core-defaults.js.map +1 -1
- package/dist/src/prompt-config/defaults/provider-defaults.js +162 -6
- package/dist/src/prompt-config/defaults/provider-defaults.js.map +1 -1
- package/dist/src/prompt-config/defaults/providers/anthropic/core.md +81 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/glob.md +34 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/list-directory.md +11 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/read-file.md +14 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/read-many-files.md +31 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/replace.md +41 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/run-shell-command.md +32 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/save-memory.md +35 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/search-file-content.md +44 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/todo-write.md +45 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/write-file.md +11 -0
- package/dist/src/prompt-config/defaults/tool-defaults.js +163 -6
- package/dist/src/prompt-config/defaults/tool-defaults.js.map +1 -1
- package/dist/src/prompt-config/prompt-service.d.ts +1 -1
- package/dist/src/prompt-config/prompt-service.js +5 -3
- package/dist/src/prompt-config/prompt-service.js.map +1 -1
- package/dist/src/providers/LoggingProviderWrapper.js +0 -12
- package/dist/src/providers/LoggingProviderWrapper.js.map +1 -1
- package/dist/src/providers/ProviderContentGenerator.d.ts +2 -2
- package/dist/src/providers/ProviderContentGenerator.js +5 -3
- package/dist/src/providers/ProviderContentGenerator.js.map +1 -1
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.js +1 -1
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.js.map +1 -1
- package/dist/src/providers/anthropic/AnthropicProvider.d.ts +1 -1
- package/dist/src/providers/anthropic/AnthropicProvider.js +95 -33
- package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
- package/dist/src/providers/gemini/GeminiProvider.d.ts +0 -5
- package/dist/src/providers/gemini/GeminiProvider.js +0 -25
- package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
- package/dist/src/providers/openai/OpenAIProvider.js +2 -1
- package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
- package/dist/src/providers/openai/parseResponsesStream.js +6 -6
- package/dist/src/providers/openai/parseResponsesStream.js.map +1 -1
- package/dist/src/services/todo-context-tracker.d.ts +1 -1
- package/dist/src/services/todo-context-tracker.js +5 -3
- package/dist/src/services/todo-context-tracker.js.map +1 -1
- package/dist/src/settings/SettingsService.js.map +1 -1
- package/dist/src/settings/types.d.ts +16 -0
- package/dist/src/telemetry/integration.test.circular.js +2 -40
- package/dist/src/telemetry/integration.test.circular.js.map +1 -1
- package/dist/src/telemetry/loggers.js +0 -20
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/sdk.d.ts +1 -1
- package/dist/src/telemetry/sdk.js +13 -29
- package/dist/src/telemetry/sdk.js.map +1 -1
- package/dist/src/test-utils/tools.js +2 -2
- package/dist/src/test-utils/tools.js.map +1 -1
- package/dist/src/tools/edit.js +85 -20
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/glob.js +2 -2
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/grep.js +2 -2
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/ls.d.ts +3 -22
- package/dist/src/tools/ls.js +84 -113
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/mcp-client.js +2 -2
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +3 -5
- package/dist/src/tools/mcp-tool.js +41 -18
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/memoryTool.d.ts +9 -13
- package/dist/src/tools/memoryTool.js +124 -117
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/read-file.js +2 -2
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-many-files.d.ts +4 -6
- package/dist/src/tools/read-many-files.js +118 -110
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/shell.d.ts +7 -14
- package/dist/src/tools/shell.js +120 -116
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/todo-pause.js +2 -2
- package/dist/src/tools/todo-pause.js.map +1 -1
- package/dist/src/tools/todo-read.js +8 -8
- package/dist/src/tools/todo-read.js.map +1 -1
- package/dist/src/tools/todo-write.js +2 -2
- package/dist/src/tools/todo-write.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +5 -0
- package/dist/src/tools/tool-registry.js +13 -2
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tools.d.ts +16 -15
- package/dist/src/tools/tools.js +19 -18
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/web-fetch.d.ts +4 -7
- package/dist/src/tools/web-fetch.js +81 -82
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-search.js +23 -5
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/write-file.d.ts +2 -1
- package/dist/src/tools/write-file.js +85 -24
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/utils/errorParsing.d.ts +8 -0
- package/dist/src/utils/errorParsing.js +109 -0
- package/dist/src/utils/errorParsing.js.map +1 -0
- package/dist/src/utils/filesearch/fileSearch.js +1 -1
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
- package/dist/src/utils/filesearch/result-cache.d.ts +1 -2
- package/dist/src/utils/filesearch/result-cache.js +1 -3
- package/dist/src/utils/filesearch/result-cache.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.js +1 -1
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/quotaErrorDetection.d.ts +1 -5
- package/dist/src/utils/quotaErrorDetection.js.map +1 -1
- package/package.json +2 -2
- package/dist/src/core/modelCheck.d.ts +0 -14
- package/dist/src/core/modelCheck.js +0 -62
- package/dist/src/core/modelCheck.js.map +0 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +0 -48
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +0 -577
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +0 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +0 -58
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +0 -157
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +0 -1
|
@@ -6,6 +6,87 @@
|
|
|
6
6
|
import { logToolCall, ToolErrorType, } from '../index.js';
|
|
7
7
|
import { convertToFunctionResponse } from './coreToolScheduler.js';
|
|
8
8
|
import { ToolCallDecision } from '../telemetry/types.js';
|
|
9
|
+
import { EmojiFilter } from '../filters/EmojiFilter.js';
|
|
10
|
+
/**
|
|
11
|
+
* Global emoji filter instance for reuse across tool calls
|
|
12
|
+
*/
|
|
13
|
+
let emojiFilter = null;
|
|
14
|
+
/**
|
|
15
|
+
* Gets or creates the emoji filter instance based on current configuration
|
|
16
|
+
* Always checks current configuration to ensure filter is up-to-date
|
|
17
|
+
*/
|
|
18
|
+
function getOrCreateFilter(config) {
|
|
19
|
+
// Get emojifilter from ephemeral settings or default to 'auto'
|
|
20
|
+
const mode = config.getEphemeralSetting('emojifilter') || 'auto';
|
|
21
|
+
/**
|
|
22
|
+
* @requirement REQ-004.1 - Silent filtering in auto mode
|
|
23
|
+
* Use mode directly from settings
|
|
24
|
+
*/
|
|
25
|
+
const filterMode = mode;
|
|
26
|
+
// Always create a new filter to ensure current configuration is applied
|
|
27
|
+
// Tool execution is infrequent enough that this performance cost is acceptable
|
|
28
|
+
const filterConfig = { mode: filterMode };
|
|
29
|
+
emojiFilter = new EmojiFilter(filterConfig);
|
|
30
|
+
return emojiFilter;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Filters file modification tool arguments
|
|
34
|
+
*/
|
|
35
|
+
function filterFileModificationArgs(filter, toolName, args) {
|
|
36
|
+
// Never filter file paths - they might legitimately contain emojis
|
|
37
|
+
// Only filter the content being written to files
|
|
38
|
+
if (toolName === 'edit_file' ||
|
|
39
|
+
toolName === 'edit' ||
|
|
40
|
+
toolName === 'replace') {
|
|
41
|
+
const oldString = args?.old_string;
|
|
42
|
+
const newString = args?.new_string;
|
|
43
|
+
// CRITICAL: Never filter old_string - it must match exactly what's in the file
|
|
44
|
+
// Only filter new_string to prevent emojis from being written
|
|
45
|
+
const newResult = filter.filterFileContent(newString, toolName);
|
|
46
|
+
if (newResult.blocked) {
|
|
47
|
+
return {
|
|
48
|
+
filtered: null,
|
|
49
|
+
emojiDetected: true,
|
|
50
|
+
blocked: true,
|
|
51
|
+
error: 'Cannot write emojis to code files',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
filtered: {
|
|
56
|
+
...args,
|
|
57
|
+
// Preserve file_path unchanged - never filter paths
|
|
58
|
+
file_path: args.file_path,
|
|
59
|
+
// MUST preserve old_string exactly for matching
|
|
60
|
+
old_string: oldString,
|
|
61
|
+
// Filter new_string to remove emojis
|
|
62
|
+
new_string: newResult.filtered,
|
|
63
|
+
},
|
|
64
|
+
emojiDetected: newResult.emojiDetected,
|
|
65
|
+
blocked: false,
|
|
66
|
+
systemFeedback: newResult.systemFeedback,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
if (toolName === 'write_file' || toolName === 'create_file') {
|
|
70
|
+
const content = args.content;
|
|
71
|
+
const result = filter.filterFileContent(content, toolName);
|
|
72
|
+
if (result.blocked) {
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
filtered: {
|
|
77
|
+
...args,
|
|
78
|
+
// Preserve file_path unchanged - never filter paths
|
|
79
|
+
file_path: args.file_path,
|
|
80
|
+
content: result.filtered,
|
|
81
|
+
},
|
|
82
|
+
emojiDetected: result.emojiDetected,
|
|
83
|
+
blocked: false,
|
|
84
|
+
systemFeedback: result.systemFeedback,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
// Fallback for other tools
|
|
88
|
+
return filter.filterToolArgs(args);
|
|
89
|
+
}
|
|
9
90
|
/**
|
|
10
91
|
* Executes a single tool call non-interactively.
|
|
11
92
|
* It does not handle confirmations, multiple calls, or live updates.
|
|
@@ -49,9 +130,78 @@ export async function executeToolCall(config, toolCallRequest, toolRegistry, abo
|
|
|
49
130
|
};
|
|
50
131
|
}
|
|
51
132
|
try {
|
|
133
|
+
// Get emoji filter instance
|
|
134
|
+
const filter = getOrCreateFilter(config);
|
|
135
|
+
// Check if this is a search tool that should bypass filtering
|
|
136
|
+
const isSearchTool = [
|
|
137
|
+
'shell',
|
|
138
|
+
'bash',
|
|
139
|
+
'exec',
|
|
140
|
+
'run_shell_command',
|
|
141
|
+
'grep',
|
|
142
|
+
'search_file_content',
|
|
143
|
+
'glob',
|
|
144
|
+
'find',
|
|
145
|
+
'ls',
|
|
146
|
+
'list_directory',
|
|
147
|
+
'read_file',
|
|
148
|
+
'read_many_files',
|
|
149
|
+
].includes(toolCallRequest.name);
|
|
150
|
+
let filteredArgs = toolCallRequest.args;
|
|
151
|
+
let systemFeedback;
|
|
152
|
+
// Search tools need unfiltered access for finding emojis
|
|
153
|
+
if (!isSearchTool) {
|
|
154
|
+
// Check if this is a file modification tool
|
|
155
|
+
const isFileModTool = [
|
|
156
|
+
'edit_file',
|
|
157
|
+
'edit',
|
|
158
|
+
'write_file',
|
|
159
|
+
'create_file',
|
|
160
|
+
'replace',
|
|
161
|
+
'replace_all',
|
|
162
|
+
].includes(toolCallRequest.name);
|
|
163
|
+
// Filter tool arguments
|
|
164
|
+
let filterResult;
|
|
165
|
+
if (isFileModTool) {
|
|
166
|
+
filterResult = filterFileModificationArgs(filter, toolCallRequest.name, toolCallRequest.args);
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
filterResult = filter.filterToolArgs(toolCallRequest.args);
|
|
170
|
+
}
|
|
171
|
+
// Handle blocking in error mode
|
|
172
|
+
if (filterResult.blocked) {
|
|
173
|
+
const durationMs = Date.now() - startTime;
|
|
174
|
+
logToolCall(config, {
|
|
175
|
+
'event.name': 'tool_call',
|
|
176
|
+
'event.timestamp': new Date().toISOString(),
|
|
177
|
+
function_name: toolCallRequest.name,
|
|
178
|
+
function_args: toolCallRequest.args,
|
|
179
|
+
duration_ms: durationMs,
|
|
180
|
+
success: false,
|
|
181
|
+
error: filterResult.error,
|
|
182
|
+
prompt_id: toolCallRequest.prompt_id,
|
|
183
|
+
});
|
|
184
|
+
return {
|
|
185
|
+
callId: toolCallRequest.callId,
|
|
186
|
+
responseParts: {
|
|
187
|
+
functionResponse: {
|
|
188
|
+
id: toolCallRequest.callId,
|
|
189
|
+
name: toolCallRequest.name,
|
|
190
|
+
response: { error: filterResult.error },
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
resultDisplay: filterResult.error || 'Tool execution blocked',
|
|
194
|
+
error: new Error(filterResult.error || 'Tool execution blocked'),
|
|
195
|
+
errorType: ToolErrorType.INVALID_TOOL_PARAMS,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
// Use filtered arguments
|
|
199
|
+
filteredArgs = filterResult.filtered;
|
|
200
|
+
systemFeedback = filterResult.systemFeedback;
|
|
201
|
+
}
|
|
52
202
|
// Directly execute without confirmation or live output handling
|
|
53
203
|
const effectiveAbortSignal = abortSignal ?? new AbortController().signal;
|
|
54
|
-
const toolResult = await tool.buildAndExecute(
|
|
204
|
+
const toolResult = await tool.buildAndExecute(filteredArgs, effectiveAbortSignal);
|
|
55
205
|
const tool_output = toolResult.llmContent;
|
|
56
206
|
const tool_display = toolResult.returnDisplay;
|
|
57
207
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -84,10 +234,15 @@ export async function executeToolCall(config, toolCallRequest, toolRegistry, abo
|
|
|
84
234
|
metadata,
|
|
85
235
|
decision: ToolCallDecision.AUTO_ACCEPT,
|
|
86
236
|
});
|
|
87
|
-
|
|
237
|
+
// Add system feedback for warn mode if emojis were detected and filtered
|
|
238
|
+
let finalLlmContent = tool_output;
|
|
239
|
+
if (systemFeedback) {
|
|
240
|
+
finalLlmContent = `${tool_output}\n\n<system-reminder>\n${systemFeedback}\n</system-reminder>`;
|
|
241
|
+
}
|
|
242
|
+
const finalResponse = convertToFunctionResponse(toolCallRequest.name, toolCallRequest.callId, finalLlmContent);
|
|
88
243
|
return {
|
|
89
244
|
callId: toolCallRequest.callId,
|
|
90
|
-
responseParts:
|
|
245
|
+
responseParts: finalResponse,
|
|
91
246
|
resultDisplay: tool_display,
|
|
92
247
|
error: toolResult.error === undefined
|
|
93
248
|
? undefined
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nonInteractiveToolExecutor.js","sourceRoot":"","sources":["../../../src/core/nonInteractiveToolExecutor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,WAAW,EAGX,aAAa,GAGd,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"nonInteractiveToolExecutor.js","sourceRoot":"","sources":["../../../src/core/nonInteractiveToolExecutor.ts"],"names":[],"mappings":"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"}
|
package/dist/src/core/prompts.js
CHANGED
|
@@ -8,6 +8,7 @@ import os from 'node:os';
|
|
|
8
8
|
import process from 'node:process';
|
|
9
9
|
import { isGitRepository } from '../utils/gitUtils.js';
|
|
10
10
|
import { PromptService } from '../prompt-config/prompt-service.js';
|
|
11
|
+
import { getSettingsService } from '../settings/settingsServiceInstance.js';
|
|
11
12
|
// Singleton instance of PromptService
|
|
12
13
|
let promptService = null;
|
|
13
14
|
let promptServiceInitialized = false;
|
|
@@ -62,7 +63,7 @@ function getToolNameMapping() {
|
|
|
62
63
|
/**
|
|
63
64
|
* Build PromptContext from current environment and parameters
|
|
64
65
|
*/
|
|
65
|
-
function buildPromptContext(model, tools) {
|
|
66
|
+
function buildPromptContext(model, tools, provider) {
|
|
66
67
|
const environment = {
|
|
67
68
|
isGitRepository: isGitRepository(process.cwd()),
|
|
68
69
|
isSandboxed: !!process.env.SANDBOX,
|
|
@@ -86,8 +87,24 @@ function buildPromptContext(model, tools) {
|
|
|
86
87
|
if (enabledTools.length === 0) {
|
|
87
88
|
enabledTools.push('Ls', 'Edit', 'Glob', 'Grep', 'ReadFile', 'ReadManyFiles', 'Shell', 'WriteFile', 'Memory', 'TodoRead', 'TodoWrite', 'WebFetch', 'WebSearch');
|
|
88
89
|
}
|
|
90
|
+
// Use provider if explicitly passed, otherwise get from settings or default to gemini
|
|
91
|
+
let resolvedProvider = provider || 'gemini';
|
|
92
|
+
// If provider wasn't explicitly passed, try to get it from settings
|
|
93
|
+
if (!provider) {
|
|
94
|
+
try {
|
|
95
|
+
const settingsService = getSettingsService();
|
|
96
|
+
const activeProvider = settingsService.get('activeProvider');
|
|
97
|
+
if (activeProvider) {
|
|
98
|
+
resolvedProvider = activeProvider;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch (_error) {
|
|
102
|
+
// If we can't get settings (e.g., during tests), use default
|
|
103
|
+
// Don't log in production to avoid noise
|
|
104
|
+
}
|
|
105
|
+
}
|
|
89
106
|
return {
|
|
90
|
-
provider:
|
|
107
|
+
provider: resolvedProvider,
|
|
91
108
|
model: model || 'gemini-1.5-pro',
|
|
92
109
|
enabledTools,
|
|
93
110
|
environment,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/core/prompts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/core/prompts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAM5E,sCAAsC;AACtC,IAAI,aAAa,GAAyB,IAAI,CAAC;AAC/C,IAAI,wBAAwB,GAAG,KAAK,CAAC;AACrC,IAAI,wBAAwB,GAAyB,IAAI,CAAC;AAE1D;;GAEG;AACH,KAAK,UAAU,uBAAuB;IACpC,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9B,wBAAwB,GAAG,CAAC,KAAK,IAAI,EAAE;YACrC,MAAM,OAAO,GACX,OAAO,CAAC,GAAG,CAAC,kBAAkB;gBAC9B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAChD,aAAa,GAAG,IAAI,aAAa,CAAC;gBAChC,OAAO;gBACP,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM;aACxC,CAAC,CAAC;YACH,MAAM,aAAa,CAAC,UAAU,EAAE,CAAC;YACjC,wBAAwB,GAAG,IAAI,CAAC;QAClC,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IACD,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB;IAC7B,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9B,MAAM,uBAAuB,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,aAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB;IACzB,OAAO;QACL,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,MAAM;QACZ,mBAAmB,EAAE,MAAM;QAC3B,SAAS,EAAE,UAAU;QACrB,eAAe,EAAE,eAAe;QAChC,iBAAiB,EAAE,OAAO;QAC1B,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,UAAU;QACrB,UAAU,EAAE,WAAW;QACvB,SAAS,EAAE,UAAU;QACrB,iBAAiB,EAAE,WAAW;KAC/B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CACzB,KAAc,EACd,KAAgB,EAChB,QAAiB;IAEjB,MAAM,WAAW,GAAsB;QACrC,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/C,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO;QAClC,eAAe,EAAE,KAAK;KACvB,CAAC;IAEF,yBAAyB;IACzB,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,cAAc,EAAE,CAAC;QAC3C,WAAW,CAAC,WAAW,GAAG,gBAAgB,CAAC;IAC7C,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/B,WAAW,CAAC,WAAW,GAAG,SAAS,CAAC;IACtC,CAAC;IAED,8BAA8B;IAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;QACzC,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,gCAAgC;IAChC,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,MAAM,YAAY,GAChB,KAAK,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEpE,8CAA8C;IAC9C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,YAAY,CAAC,IAAI,CACf,IAAI,EACJ,MAAM,EACN,MAAM,EACN,MAAM,EACN,UAAU,EACV,eAAe,EACf,OAAO,EACP,WAAW,EACX,QAAQ,EACR,UAAU,EACV,WAAW,EACX,UAAU,EACV,WAAW,CACZ,CAAC;IACJ,CAAC;IAED,sFAAsF;IACtF,IAAI,gBAAgB,GAAG,QAAQ,IAAI,QAAQ,CAAC;IAE5C,oEAAoE;IACpE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;YAC7C,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAW,CAAC;YACvE,IAAI,cAAc,EAAE,CAAC;gBACnB,gBAAgB,GAAG,cAAc,CAAC;YACpC,CAAC;QACH,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,6DAA6D;YAC7D,yCAAyC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,gBAAgB;QAC1B,KAAK,EAAE,KAAK,IAAI,gBAAgB;QAChC,YAAY;QACZ,WAAW;KACZ,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,UAAmB,EACnB,KAAc,EACd,KAAgB;IAEhB,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACjD,OAAO,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,MAAM,uBAAuB,EAAE,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDR,CAAC,IAAI,EAAE,CAAC;AACT,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EmojiFilter - Filters emojis from text content based on configuration
|
|
3
|
+
* Implementation stub based on pseudocode lines 01-186
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Emoji filter modes
|
|
7
|
+
*/
|
|
8
|
+
export type EmojiFilterMode = 'allowed' | 'auto' | 'warn' | 'error';
|
|
9
|
+
/**
|
|
10
|
+
* Configuration for emoji filtering behavior
|
|
11
|
+
* @requirement REQ-004.1 - Silent filtering in auto mode
|
|
12
|
+
*/
|
|
13
|
+
export interface FilterConfiguration {
|
|
14
|
+
mode: EmojiFilterMode;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Result of emoji filtering operation
|
|
18
|
+
*/
|
|
19
|
+
export interface FilterResult {
|
|
20
|
+
filtered: string | object | null;
|
|
21
|
+
emojiDetected: boolean;
|
|
22
|
+
blocked: boolean;
|
|
23
|
+
error?: string;
|
|
24
|
+
systemFeedback?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* EmojiFilter class for filtering emojis from various content types
|
|
28
|
+
* @pseudocode lines 01-186
|
|
29
|
+
*/
|
|
30
|
+
export declare class EmojiFilter {
|
|
31
|
+
private patterns;
|
|
32
|
+
private conversions;
|
|
33
|
+
private buffer;
|
|
34
|
+
private config;
|
|
35
|
+
/**
|
|
36
|
+
* Creates new EmojiFilter instance
|
|
37
|
+
* @param config Filter configuration
|
|
38
|
+
* @pseudocode lines 07-12
|
|
39
|
+
*/
|
|
40
|
+
constructor(config: FilterConfiguration);
|
|
41
|
+
/**
|
|
42
|
+
* Filters text content for emojis
|
|
43
|
+
* @param text Text to filter
|
|
44
|
+
* @returns Filter result with processed text
|
|
45
|
+
* @pseudocode lines 14-45
|
|
46
|
+
*/
|
|
47
|
+
filterText(text: string): FilterResult;
|
|
48
|
+
/**
|
|
49
|
+
* Filters streaming text chunks for emojis
|
|
50
|
+
* @param chunk Text chunk to filter
|
|
51
|
+
* @returns Filter result with processed chunk
|
|
52
|
+
* @pseudocode lines 47-60
|
|
53
|
+
*/
|
|
54
|
+
filterStreamChunk(chunk: string): FilterResult;
|
|
55
|
+
/**
|
|
56
|
+
* Filters tool arguments for emojis
|
|
57
|
+
* @param args Tool arguments object
|
|
58
|
+
* @returns Filter result with processed arguments
|
|
59
|
+
* @pseudocode lines 62-95
|
|
60
|
+
*/
|
|
61
|
+
filterToolArgs(args: object): FilterResult;
|
|
62
|
+
/**
|
|
63
|
+
* Filters file content for emojis
|
|
64
|
+
* @param content File content to filter
|
|
65
|
+
* @param toolName Name of the tool writing the file
|
|
66
|
+
* @returns Filter result with processed content
|
|
67
|
+
* @pseudocode lines 97-128
|
|
68
|
+
*/
|
|
69
|
+
filterFileContent(content: string, toolName: string): FilterResult;
|
|
70
|
+
/**
|
|
71
|
+
* Flushes remaining buffered content
|
|
72
|
+
* @returns Remaining filtered content
|
|
73
|
+
* @pseudocode lines 130-138
|
|
74
|
+
*/
|
|
75
|
+
flushBuffer(): string;
|
|
76
|
+
/**
|
|
77
|
+
* Detects if text contains emojis
|
|
78
|
+
* @param text Text to check
|
|
79
|
+
* @returns True if emojis detected
|
|
80
|
+
* @pseudocode lines 140-147
|
|
81
|
+
*/
|
|
82
|
+
private detectEmojis;
|
|
83
|
+
/**
|
|
84
|
+
* Applies emoji-to-text conversions
|
|
85
|
+
* @param text Text to convert
|
|
86
|
+
* @returns Text with emojis converted
|
|
87
|
+
* @pseudocode lines 149-155
|
|
88
|
+
*/
|
|
89
|
+
private applyConversions;
|
|
90
|
+
/**
|
|
91
|
+
* Removes decorative emojis from text
|
|
92
|
+
* @param text Text to clean
|
|
93
|
+
* @returns Text with decorative emojis removed
|
|
94
|
+
* @pseudocode lines 157-163
|
|
95
|
+
*/
|
|
96
|
+
private removeDecorativeEmojis;
|
|
97
|
+
/**
|
|
98
|
+
* Finds last safe boundary to avoid splitting multi-byte characters
|
|
99
|
+
* @param text Text to analyze
|
|
100
|
+
* @returns Safe boundary position or -1 if none found
|
|
101
|
+
* @pseudocode lines 165-180
|
|
102
|
+
*/
|
|
103
|
+
private findLastSafeBoundary;
|
|
104
|
+
/**
|
|
105
|
+
* Compiles emoji detection patterns
|
|
106
|
+
* @returns Array of compiled regex patterns
|
|
107
|
+
* @pseudocode line 09
|
|
108
|
+
*/
|
|
109
|
+
private compileEmojiPatterns;
|
|
110
|
+
/**
|
|
111
|
+
* Loads emoji-to-text conversion map
|
|
112
|
+
* @returns Map of emoji conversions
|
|
113
|
+
* @pseudocode line 10
|
|
114
|
+
*/
|
|
115
|
+
private loadConversionMap;
|
|
116
|
+
/**
|
|
117
|
+
* Recursively filters emojis from object properties
|
|
118
|
+
* @param obj Object to filter
|
|
119
|
+
* @returns Filtered object
|
|
120
|
+
*/
|
|
121
|
+
private deepFilterObject;
|
|
122
|
+
}
|