Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions ProjectGraphAgent/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "project-graph-agent",
"version": "1.0.1494",
"description": "Jsonnet-driven project control system for AI agents - Integrated with Agent Plugins Platform v1.0.1494",
"version": "1.0.1529",
"description": "Jsonnet-driven project control system for AI agents - Integrated with Agent Plugins Platform v1.0.1529",
"main": "scripts/graph_generator.mjs",
"type": "module",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion chrome-extension/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "chrome-extension",
"version": "0.5.1512",
"version": "0.5.1547",
"description": "chrome extension - core settings",
"type": "module",
"private": true,
Expand Down
56 changes: 51 additions & 5 deletions chrome-extension/public/offscreen.js
Original file line number Diff line number Diff line change
Expand Up @@ -224,13 +224,13 @@ const LOG_LEVELS = {
DEBUG: 3
};

// Текущий уровень логирования (ОТКЛЮЧЕНО для максимальной экономии токенов)
let currentLogLevel = 999; // Уровень выше всех возможных, полностью отключает логирование
// Текущий уровень логирования (ВКЛЮЧЕНО для диагностики промптов LLM)
let currentLogLevel = 3; // DEBUG уровень для вывода текста промптов

// Флаги для разных типов логирования (все отключены для экономии токенов)
// Флаги для разных типов логирования (PYODIDE включен для диагностики промптов)
const LOG_FLAGS = {
CHUNKING: false,
PYODIDE: false,
PYODIDE: true,
EXECUTION: false,
CHANNEL: false,
SYSTEM: false,
Expand Down Expand Up @@ -687,6 +687,26 @@ async function initializePyodide() {
.then(response => response.text())
.then(data => pyodide.toPy(data));
},

readExtensionFile: async (filePath) => {
try {
const jsFilePath = filePath.toJs ? filePath.toJs() : filePath;
const fullUrl = chrome.runtime.getURL(jsFilePath);
const response = await fetch(fullUrl);

if (!response.ok) {
throw new Error(`Failed to load file: ${response.status} ${response.statusText}`);
}

const content = await response.text();
return pyodide.toPy(content);
} catch (error) {
console.error('Error reading extension file:', error);
// Return error as Pyodide object
return pyodide.toPy({ error: error.message });
}
},

llm_call: async (modelAlias, options) => {
// logDebug('PYODIDE', 'llm_call called:', { modelAlias, options: options?.toJs ? options.toJs() : options });

Expand Down Expand Up @@ -844,10 +864,17 @@ async function initializePyodide() {
}

// 4. Подготовка данных для прямого запроса к Gemini API (для платформенных LLM)
const promptText = jsOptions.prompt || jsOptions.message || JSON.stringify(jsOptions);
console.log('[LLM_PROMPT_DEBUG] ===== PROMPT TEXT FOR GEMINI API =====');
console.log('[LLM_PROMPT_DEBUG] Full prompt text:', promptText);
console.log('[LLM_PROMPT_DEBUG] Prompt length:', promptText.length);
console.log('[LLM_PROMPT_DEBUG] Prompt source: jsOptions.prompt:', !!jsOptions.prompt, 'jsOptions.message:', !!jsOptions.message);
console.log('[LLM_PROMPT_DEBUG] ===== END PROMPT TEXT =====');

const requestBody = {
contents: [{
parts: [{
text: jsOptions.prompt || jsOptions.message || JSON.stringify(jsOptions)
text: promptText
}]
}],
generationConfig: {
Expand Down Expand Up @@ -1107,6 +1134,25 @@ async function initializePyodide() {
consoleLog: (message) => {
console.log(`[PYTHON_LOG] ${message}`);
return true;
},

// Функция для получения сохраненных промптов из localStorage
getStoredPrompts: () => {
try {
const storageKey = 'plugin-ozon-analyzer-settings';
const stored = localStorage.getItem(storageKey);
if (stored) {
const parsed = JSON.parse(stored);
console.log('[JS_BRIDGE] Retrieved prompts from localStorage:', parsed);
return pyodide.toPy(parsed);
} else {
console.log('[JS_BRIDGE] No prompts found in localStorage');
return pyodide.toPy({});
}
} catch (error) {
console.error('[JS_BRIDGE] Error retrieving prompts from localStorage:', error);
return pyodide.toPy({});
}
}
};

Expand Down
Binary file not shown.
8 changes: 4 additions & 4 deletions chrome-extension/public/plugins/ozon-analyzer/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@
"basic_analysis": {
"ru": {
"type": "text",
"default": "Ты - токсиколог и химик-косметолог с 15-летним опытом. Твоя задача: провести КРИТИЧЕСКИЙ анализ косметического продукта, разоблачая маркетинговые уловки.\n\n ДАННЫЕ:\n Описание: {description}\n Состав: {composition}\n\n ОБЯЗАТЕЛЬНАЯ МЕТОДОЛОГИЯ АНАЛИЗА:\n\n 1. ПРОВЕРКА МАРКЕТИНГОВЫХ ЗАЯВЛЕНИЙ:\n - Термины типа \"3D/4D/5D\", \"революционный\", \"инновационный\" - ТРЕБУЮТ доказательств\n - Для каждого заявления (\"лифтинг\", \"против морщин\"):\n * Найди КОНКРЕТНЫЙ активный компонент\n * Оцени его ПОЗИЦИЮ в списке (начало = высокая концентрация, конец = маркетинг)\n * Укажи ЭФФЕКТИВНУЮ концентрацию из исследований vs вероятную в продукте\n\n 2. ТОКСИКОЛОГИЧЕСКИЙ СКРИНИНГ (приоритет №1):\n - Проверь КАЖДЫЙ компонент на:\n * Формальдегид-релизеры (DMDM Hydantoin, Quaternium-15, и т.д.)\n * Парабены (особенно butyl-, propyl-)\n * Устаревшие УФ-фильтры (Octinoxate, Oxybenzone)\n * Потенциальные эндокринные дизрапторы\n - Если найдено ≥3 проблемных компонента → оценка НЕ МОЖЕТ быть >5/10\n\n 3. РЕАЛИСТИЧНАЯ ОЦЕНКА ПЕПТИДОВ/АКТИВОВ:\n - Palmitoyl Tripeptide-38: эффективен при 2-4%, если в середине списка → скорее <1% → эффект минимален\n - Collagen/Elastin: молекулы НЕ проникают, работают только как пленка\n - Hyaluronic acid: увлажняет ПОВЕРХНОСТНО, НЕ разглаживает глубокие морщины\n\n 4. СРАВНЕНИЕ С СОВРЕМЕННЫМИ СТАНДАРТАМИ:\n - Современная косметика = без парабенов, с новыми консервантами\n - Устаревшие формулы → снижение оценки на 2-3 балла\n\n 5. ШКАЛА ОЦЕНКИ (СТРОГАЯ):\n - 9-10: Идеальный состав, доказанные активы в высоких концентрациях, без токсичных компонентов\n - 7-8: Хороший состав, минимум проблемных компонентов\n - 5-6: Средний продукт, есть проблемные компоненты ИЛИ активы в низких дозах\n - 3-4: Устаревшая формула, много токсичных компонентов, маркетинговые заявления не подтверждены\n - 1-2: Опасный или полностью бесполезный продукт\n\n КРИТИЧЕСКИ ВАЖНО:\n - Будь СКЕПТИЧЕН к маркетингу\n - НЕ завышай оценку из вежливости\n - Если состав устаревший (парабены + формальдегид-релизеры) → максимум 5/10\n - Если заявления не подтверждены активами в ДОСТАТОЧНОЙ концентрации → снижай оценку\n\n ФОРМАТ ОТВЕТА - ТОЛЬКО JSON:\n {{\n \"score\": число_от_1_до_10,\n \"reasoning\": \"ДЕТАЛЬНЫЙ анализ:\n 1. Проверка маркетинга: [разбери каждое заявление]\n 2. Токсикологический профиль: [перечисли ВСЕ проблемные компоненты]\n 3. Реальная эффективность активов: [концентрации vs заявления]\n 4. Сравнение с современными стандартами: [почему устарел/актуален]\n 5. Итоговый вердикт: [честное заключение]\",\n \"confidence\": число_от_0_до_1,\n \"red_flags\": [\"список всех токсичных/проблемных компонентов\"],\n \"marketing_lies\": [\"список не подтвержденных маркетинговых заявлений\"]\n }}\n\n ЯЗЫК: Русский, технический стиль с примерами.",
"default": "prompts/basic_analysis.ru.default.txt",
"label": {
"ru": "Базовый промпт (русский)",
"en": "Basic Prompt (Russian)"
Expand All @@ -113,7 +113,7 @@
},
"en": {
"type": "text",
"default": "верни слово basic_analysis_en_default и полное название и версию твоей LLM (например, Gemini flash lite или Gemini 2.5 Pro)",
"default": "prompts/basic_analysis.en.default.txt",
"label": {
"ru": "Базовый промпт (английский)",
"en": "Basic Prompt (English)"
Expand All @@ -132,7 +132,7 @@
"deep_analysis": {
"ru": {
"type": "text",
"default": "верни слово deep_analysis_ru_default и полное название и версию твоей LLM (например, Gemini flash lite или Gemini 2.5 Pro)",
"default": "prompts/deep_analysis.ru.default.txt",
"label": {
"ru": "Промпт глубокого анализа (русский)",
"en": "Deep Analysis Prompt (Russian)"
Expand All @@ -145,7 +145,7 @@
},
"en": {
"type": "text",
"default": "верни слово deep_analysis_en_default и полное название и версию твоей LLM (например, Gemini flash lite или Gemini 2.5 Pro)",
"default": "prompts/deep_analysis.en.default.txt",
"label": {
"ru": "Промпт глубокого анализа (английский)",
"en": "Deep Analysis Prompt (English)"
Expand Down
Loading
Loading