Local branch had diverged from origin/master (sibling commits on the same base). Rewrote local history linearly on top of origin/master, folding in all local content: exa/hot-platform discovery hunters, leaks ledger, nightly sweep orchestrator, updated .gitignore and skill docs, plus the latest hunt output and vault state. Remote-only files (vault keys, channel scripts) were restored rather than dropped, so the resulting tree is a full union of both sides.
1 line
9.2 KiB
JSON
1 line
9.2 KiB
JSON
{"repo": "chenahuel/dashtestify", "files": {".env.example": {"36026fc22bbf4ff8ee5ae47bad95e8729400244d": {"t": 1785747114.0788956, "n": 1361, "h": "36cf6aad2dec267b", "c": "COINCAP_API_KEY=your_api_key_here\nSUPABASE_URL=https://your-supabase-url.supabase.co\nSUPABASE_KEY=your_supabase_key_here\nNEXT_PUBLIC_SUPABASE_URL=https://your-supabase-url.supabase.co\nNEXT_PUBLIC_SUPABASE_KEY=your_supabase_key_here\n\n# AI Provider API Keys\nOPENAI_API_KEY=your_openai_api_key_here\nGEMINI_API_KEY=your_gemini_api_key_here\nDEEPSEEK_API_KEY=your_deepseek_api_key_here\nCLAUDE_API_KEY=your_claude_api_key_here\nGROQ_API_KEY=your_groq_api_key_here\nOPENROUTER_API_KEY=your_openrouter_api_key_here\n\n# AI Provider Models (optional - will use default if not set)\n# Claude models: claude-opus-4-1, claude-sonnet-4-1, claude-haiku-4-5\n# Default: claude-haiku-4-5\nCLAUDE_MODEL=\n# OpenAI models: gpt-4o, gpt-4-turbo, gpt-4o-mini\n# Default: gpt-4o-mini\nOPENAI_MODEL=\n# Gemini models: gemini-2.0-flash-lite, gemini-2.0-flash, gemini-1.5-pro, gemini-1.5-flash, gemini-1.5-mini\n# Default: gemini-2.0-flash-lite\nGEMINI_MODEL=\n# Groq models: llama-3.3-70b-versatile, mixtral-8x7b-32768, llama-3.1-70b-versatile\n# Default: llama-3.3-70b-versatile\nGROQ_MODEL=\n# Deepseek models: deepseek-chat, deepseek-reasoner\n# Default: deepseek-chat\nDEEPSEEK_MODEL=\n# OpenRouter - Leave empty to auto-select a free model, or specify a model ID\n# Example: poolside/laguna-xs.2:free, meta-llama/llama-2-7b-chat:free\n# Default: Auto-selects first available free model\nOPENROUTER_MODEL="}, "69a836152e1d479fd69e8c14e9696368531fecf9": {"t": 1785770500.003412, "n": 1361, "h": "36cf6aad2dec267b", "c": "COINCAP_API_KEY=your_api_key_here\nSUPABASE_URL=https://your-supabase-url.supabase.co\nSUPABASE_KEY=your_supabase_key_here\nNEXT_PUBLIC_SUPABASE_URL=https://your-supabase-url.supabase.co\nNEXT_PUBLIC_SUPABASE_KEY=your_supabase_key_here\n\n# AI Provider API Keys\nOPENAI_API_KEY=your_openai_api_key_here\nGEMINI_API_KEY=your_gemini_api_key_here\nDEEPSEEK_API_KEY=your_deepseek_api_key_here\nCLAUDE_API_KEY=your_claude_api_key_here\nGROQ_API_KEY=your_groq_api_key_here\nOPENROUTER_API_KEY=your_openrouter_api_key_here\n\n# AI Provider Models (optional - will use default if not set)\n# Claude models: claude-opus-4-1, claude-sonnet-4-1, claude-haiku-4-5\n# Default: claude-haiku-4-5\nCLAUDE_MODEL=\n# OpenAI models: gpt-4o, gpt-4-turbo, gpt-4o-mini\n# Default: gpt-4o-mini\nOPENAI_MODEL=\n# Gemini models: gemini-2.0-flash-lite, gemini-2.0-flash, gemini-1.5-pro, gemini-1.5-flash, gemini-1.5-mini\n# Default: gemini-2.0-flash-lite\nGEMINI_MODEL=\n# Groq models: llama-3.3-70b-versatile, mixtral-8x7b-32768, llama-3.1-70b-versatile\n# Default: llama-3.3-70b-versatile\nGROQ_MODEL=\n# Deepseek models: deepseek-chat, deepseek-reasoner\n# Default: deepseek-chat\nDEEPSEEK_MODEL=\n# OpenRouter - Leave empty to auto-select a free model, or specify a model ID\n# Example: poolside/laguna-xs.2:free, meta-llama/llama-2-7b-chat:free\n# Default: Auto-selects first available free model\nOPENROUTER_MODEL="}, "01cee872ad182b06f4db8bb7af3cee651a3631d1": {"t": 1785770501.2033534, "n": 1401, "h": "dff73975979f0b7e", "c": "COINCAP_API_KEY=your_api_key_here\nSUPABASE_URL=https://your-supabase-url.supabase.co\nSUPABASE_KEY=your_supabase_key_here\nNEXT_PUBLIC_SUPABASE_URL=https://your-supabase-url.supabase.co\nNEXT_PUBLIC_SUPABASE_KEY=your_supabase_key_here\n\n# AI Provider API Keys\nOPENAI_API_KEY=your_openai_api_key_here\nGEMINI_API_KEY=your_gemini_api_key_here\nDEEPSEEK_API_KEY=your_deepseek_api_key_here\nCLAUDE_API_KEY=your_claude_api_key_here\nGROQ_API_KEY=your_groq_api_key_here\nOPENROUTER_API_KEY=your_openrouter_api_key_here\nCLAUDE_API_KEY=your_claude_api_key_here\n\n# AI Provider Models (optional - will use default if not set)\n# Claude models: claude-opus-4-1, claude-sonnet-4-1, claude-haiku-4-5\n# Default: claude-haiku-4-5\nCLAUDE_MODEL=\n# OpenAI models: gpt-4o, gpt-4-turbo, gpt-4o-mini\n# Default: gpt-4o-mini\nOPENAI_MODEL=\n# Gemini models: gemini-2.0-flash-lite, gemini-2.0-flash, gemini-1.5-pro, gemini-1.5-flash, gemini-1.5-mini\n# Default: gemini-2.0-flash-lite\nGEMINI_MODEL=\n# Groq models: llama-3.3-70b-versatile, mixtral-8x7b-32768, llama-3.1-70b-versatile\n# Default: llama-3.3-70b-versatile\nGROQ_MODEL=\n# Deepseek models: deepseek-chat, deepseek-reasoner\n# Default: deepseek-chat\nDEEPSEEK_MODEL=\n# OpenRouter - Leave empty to auto-select a free model, or specify a model ID\n# Example: poolside/laguna-xs.2:free, meta-llama/llama-2-7b-chat:free\n# Default: Auto-selects first available free model\nOPENROUTER_MODEL="}, "f5a4a7387f13519a871f41295c54a3ffc9d83c75": {"t": 1785770502.607009, "n": 519, "h": "7ed44cc574b3fe99", "c": "COINCAP_API_KEY=your_api_key_here\nSUPABASE_URL=https://your-supabase-url.supabase.co\nSUPABASE_KEY=your_supabase_key_here\nNEXT_PUBLIC_SUPABASE_URL=https://your-supabase-url.supabase.co\nNEXT_PUBLIC_SUPABASE_KEY=your_supabase_key_here\nOPENAI_API_KEY=your_openai_api_key_here\nGEMINI_API_KEY=your_gemini_api_key_here\nDEEPSEEK_API_KEY=your_deepseek_api_key_here\nCLAUDE_API_KEY=your_claude_api_key_here\nGROQ_API_KEY=your_groq_api_key_here\nOPENROUTER_API_KEY=your_openrouter_api_key_here\nCLAUDE_API_KEY=your_claude_api_key_here"}, "0f9edf2806a15eaf1550f429a7680a76658de580": {"t": 1785770504.4303815, "n": 479, "h": "c752cd33977612b7", "c": "COINCAP_API_KEY=your_api_key_here\nSUPABASE_URL=https://your-supabase-url.supabase.co\nSUPABASE_KEY=your_supabase_key_here\nNEXT_PUBLIC_SUPABASE_URL=https://your-supabase-url.supabase.co\nNEXT_PUBLIC_SUPABASE_KEY=your_supabase_key_here\nOPENAI_API_KEY=your_openai_api_key_here\nGEMINI_API_KEY=your_gemini_api_key_here\nDEEPSEEK_API_KEY=your_deepseek_api_key_here\nCLAUDE_API_KEY=your_claude_api_key_here\nGROQ_API_KEY=your_groq_api_key_here\nOPENROUTER_API_KEY=your_openrouter_api_key_here"}, "38ed4f658f0c2b0c10fdd9df214b3736ec4253c1": {"t": 1785770505.7370687, "n": 271, "h": "ff3c31be405cfa06", "c": "COINCAP_API_KEY=your_api_key_here\nSUPABASE_URL=https://your-supabase-url.supabase.co\nSUPABASE_KEY=your_supabase_key_here\nNEXT_PUBLIC_SUPABASE_URL=https://your-supabase-url.supabase.co\nNEXT_PUBLIC_SUPABASE_KEY=your_supabase_key_here\nOPENAI_API_KEY=your_openai_api_key_here"}, "458393cd498df57c7ed6e2fdf153acf270fb4918": {"t": 1785770507.4552467, "n": 92, "h": "c28d9b13d5b60cb8", "c": "# CoinCap v3 API key — get one at https://rest.coincap.io\nCOINCAP_API_KEY=your_api_key_here\n"}}, "scripts/ai/deepseek-provider.ts": {"36026fc22bbf4ff8ee5ae47bad95e8729400244d": {"t": 1786067736.0786533, "n": 2677, "h": "e53197ca0b245235", "c": "import {\n buildFailureAnalysisPrompt,\n FAILURE_ANALYSIS_JSON_SCHEMA,\n FAILURE_ANALYSIS_SYSTEM_PROMPT,\n parseFailureAnalysisResponse,\n} from \"./schema\";\nimport type { FailureAnalysis, FailureAnalysisInput, AiProviderName } from \"./types\";\n\ntype FetchLike = typeof fetch;\n\ntype DeepseekFailureAnalyzerOptions = {\n apiKey: string;\n model?: string;\n maxCompletionTokens?: number;\n fetchImpl?: FetchLike;\n};\n\ntype DeepseekChatCompletionResponse = {\n choices?: Array<{\n message?: {\n content?: string | null;\n refusal?: string | null;\n };\n }>;\n error?: {\n message?: string;\n };\n};\n\nexport function createDeepseekFailureAnalyzer(options: DeepseekFailureAnalyzerOptions) {\n const fetchImpl = options.fetchImpl ?? fetch;\n const apiKey = options.apiKey.trim();\n const model = options.model?.trim() || \"deepseek-chat\";\n const maxCompletionTokens = options.maxCompletionTokens ?? 1024;\n\n if (!apiKey) {\n throw new Error(\"DEEPSEEK_API_KEY is required to use the Deepseek provider.\");\n }\n\n return {\n provider: \"deepseek\" as AiProviderName,\n\n async analyzeFailure(failure: FailureAnalysisInput): Promise<FailureAnalysis> {\n const response = await fetchImpl(\"https://api.deepseek.com/v1/chat/completions\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n model,\n temperature: 0.2,\n max_completion_tokens: maxCompletionTokens,\n response_format: {\n type: \"json_schema\",\n json_schema: {\n name: \"playwright_failure_analysis\",\n strict: true,\n schema: FAILURE_ANALYSIS_JSON_SCHEMA,\n },\n },\n messages: [\n {\n role: \"system\",\n content: FAILURE_ANALYSIS_SYSTEM_PROMPT,\n },\n {\n role: \"user\",\n content: buildFailureAnalysisPrompt(failure),\n },\n ],\n }),\n });\n\n const payload = (await response.json()) as DeepseekChatCompletionResponse;\n\n if (!response.ok) {\n throw new Error(\n payload.error?.message || `Deepseek request failed with status ${response.status}`,\n );\n }\n\n const completion = payload.choices?.[0]?.message;\n\n if (!completion) {\n throw new Error(\"Deepseek returned an empty completion.\");\n }\n\n if (completion.refusal) {\n throw new Error(`Deepseek refused to analyze the failure: ${completion.refusal}`);\n }\n\n return parseFailureAnalysisResponse(completion.content ?? \"{}\");\n },\n };\n}\n"}}}} |