Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/adamy_botwire.json
T

1 line
13 KiB
JSON

{"repo": "adamy/botwire", "files": {"src/BotWire.AspNetCore/OpenAIProviderOptions.cs": {"58da4715b0a5614f658773718cb849a930d56bf4": {"t": 1785746215.1749732, "n": 1912, "h": "cdbdcb7d6fe0d4c4", "c": "// BotWire\n// Copyright (C) 2026 Object IT Limited\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see <https://www.gnu.org/licenses/>.\n\nusing System.ComponentModel.DataAnnotations;\n\nnamespace BotWire.AspNetCore;\n\n/// <summary>Configuration for a single OpenAI or OpenAI-compatible provider endpoint.</summary>\npublic sealed class OpenAIProviderOptions\n{\n /// <summary>API key for the provider.</summary>\n [Required]\n public string ApiKey { get; set; } = \"\";\n\n /// <summary>Model identifier, e.g. <c>gpt-4o</c> or <c>text-embedding-3-small</c>.</summary>\n [Required]\n public string Model { get; set; } = \"\";\n\n /// <summary>\n /// Optional base URL for OpenAI-compatible endpoints, e.g. <c>https://api.deepseek.com/v1</c>.\n /// When <see langword=\"null\"/>, the default OpenAI endpoint is used.\n /// </summary>\n public string? BaseUrl { get; set; }\n\n /// <summary>\n /// Sampling temperature for chat completions. Defaults to <c>0.2</c> — low, so a KB-grounded\n /// support bot answers consistently instead of occasionally drifting or escalating an\n /// answerable question. Raise it for more varied wording. Set <see langword=\"null\"/> to omit\n /// the parameter entirely and use the provider's own default.\n /// </summary>\n public float? Temperature { get; set; } = 0.2f;\n}\n"}, "d90ed307f6841c0be4e42650bbaa335391c041f9": {"t": 1785760670.5004795, "n": 1912, "h": "cdbdcb7d6fe0d4c4", "c": "// BotWire\n// Copyright (C) 2026 Object IT Limited\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see <https://www.gnu.org/licenses/>.\n\nusing System.ComponentModel.DataAnnotations;\n\nnamespace BotWire.AspNetCore;\n\n/// <summary>Configuration for a single OpenAI or OpenAI-compatible provider endpoint.</summary>\npublic sealed class OpenAIProviderOptions\n{\n /// <summary>API key for the provider.</summary>\n [Required]\n public string ApiKey { get; set; } = \"\";\n\n /// <summary>Model identifier, e.g. <c>gpt-4o</c> or <c>text-embedding-3-small</c>.</summary>\n [Required]\n public string Model { get; set; } = \"\";\n\n /// <summary>\n /// Optional base URL for OpenAI-compatible endpoints, e.g. <c>https://api.deepseek.com/v1</c>.\n /// When <see langword=\"null\"/>, the default OpenAI endpoint is used.\n /// </summary>\n public string? BaseUrl { get; set; }\n\n /// <summary>\n /// Sampling temperature for chat completions. Defaults to <c>0.2</c> — low, so a KB-grounded\n /// support bot answers consistently instead of occasionally drifting or escalating an\n /// answerable question. Raise it for more varied wording. Set <see langword=\"null\"/> to omit\n /// the parameter entirely and use the provider's own default.\n /// </summary>\n public float? Temperature { get; set; } = 0.2f;\n}\n"}, "456003a73580cd245067fe521e3f6d3da881594d": {"t": 1785760672.8295574, "n": 1468, "h": "9b5f5147dfbb2b28", "c": "// BotWire\n// Copyright (C) 2026 Object IT Limited\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see <https://www.gnu.org/licenses/>.\n\nusing System.ComponentModel.DataAnnotations;\n\nnamespace BotWire.AspNetCore;\n\n/// <summary>Configuration for a single OpenAI or OpenAI-compatible provider endpoint.</summary>\npublic sealed class OpenAIProviderOptions\n{\n /// <summary>API key for the provider.</summary>\n [Required]\n public string ApiKey { get; set; } = \"\";\n\n /// <summary>Model identifier, e.g. <c>gpt-4o</c> or <c>text-embedding-3-small</c>.</summary>\n [Required]\n public string Model { get; set; } = \"\";\n\n /// <summary>\n /// Optional base URL for OpenAI-compatible endpoints, e.g. <c>https://api.deepseek.com/v1</c>.\n /// When <see langword=\"null\"/>, the default OpenAI endpoint is used.\n /// </summary>\n public string? BaseUrl { get; set; }\n}\n"}}, "NUGET.md": {"58da4715b0a5614f658773718cb849a930d56bf4": {"t": 1785747166.0654275, "n": 2329, "h": "884c24145ab7a3b7", "c": "# BotWire\n\n**A 24/7 AI customer-support bot for your .NET app — self-hosted, bring-your-own-key, no SaaS fees.**\n\nDrop one package into your ASP.NET Core site, point it at your FAQ, and ship a support assistant that answers customers instantly from *your* docs — and quietly opens a human ticket the moment one is actually needed. You supply an OpenAI-compatible API key, so your only running cost is model tokens (pennies per conversation on `gpt-4o-mini` or DeepSeek).\n\n## Two lines to wire it up\n\n```csharp\nbuilder.Services.AddBotWire(opts =>\n{\n opts.TopicDescription = \"Online store customer support\";\n opts.Documents = [\"docs/faq.md\"];\n opts.ChatProvider = new OpenAIProviderOptions { ApiKey = \"sk-...\", Model = \"gpt-4o-mini\" };\n});\n\napp.MapBotWire();\n```\n\nEmbed the zero-dependency widget on any page:\n\n```html\n<script src=\"/botwire/widget.js\"></script>\n<botwire-widget data-endpoint=\"/support\" data-title=\"Acme Support\"></botwire-widget>\n```\n\n## What you get\n\n- **Grounded answers.** Replies come only from the Markdown knowledge base you supply — no hallucinated policies, prices, or promises.\n- **Knows when to get a human.** Collects contact details and raises a support ticket (emailed to your team) instead of guessing.\n- **Streaming chat widget.** ~12 KB Web Component, Shadow DOM, no framework, one `<script>` tag.\n- **Multilingual.** Replies in the customer's language; you pick the language your team reads tickets in.\n- **Production guards.** PII + prompt-injection filters, five-dimension rate limiting (concurrency, per-minute, per-session, per-IP/hour, daily token budget), and an optional NDJSON audit log.\n- **Bring your own model.** OpenAI, DeepSeek, Groq, or any OpenAI-compatible endpoint.\n\n## Packages\n\n| Package | Use it for |\n|---|---|\n| **BotWire.AspNetCore** | The full stack — start here. Endpoints, widget, guards, DI. |\n| **BotWire.Core** | The engine alone (RAG, escalation, guards) with no ASP.NET dependency. |\n| **BotWire.Channels.Email** | SMTP delivery of escalated tickets (MailKit). |\n| **BotWire.Redis** | Redis-backed sessions + distributed rate limiting for multi-container deployments. |\n\n## License\n\nAGPL-3.0-or-later. Commercial licenses available for proprietary use.\n\n📖 **Full docs, configuration reference, and screenshots:** https://github.com/adamy/BotWire\n"}, "9d5c53174e78a5824b9e5fb8a53ebd80712d38a7": {"t": 1785760670.2812307, "n": 2329, "h": "884c24145ab7a3b7", "c": "# BotWire\n\n**A 24/7 AI customer-support bot for your .NET app — self-hosted, bring-your-own-key, no SaaS fees.**\n\nDrop one package into your ASP.NET Core site, point it at your FAQ, and ship a support assistant that answers customers instantly from *your* docs — and quietly opens a human ticket the moment one is actually needed. You supply an OpenAI-compatible API key, so your only running cost is model tokens (pennies per conversation on `gpt-4o-mini` or DeepSeek).\n\n## Two lines to wire it up\n\n```csharp\nbuilder.Services.AddBotWire(opts =>\n{\n opts.TopicDescription = \"Online store customer support\";\n opts.Documents = [\"docs/faq.md\"];\n opts.ChatProvider = new OpenAIProviderOptions { ApiKey = \"sk-...\", Model = \"gpt-4o-mini\" };\n});\n\napp.MapBotWire();\n```\n\nEmbed the zero-dependency widget on any page:\n\n```html\n<script src=\"/botwire/widget.js\"></script>\n<botwire-widget data-endpoint=\"/support\" data-title=\"Acme Support\"></botwire-widget>\n```\n\n## What you get\n\n- **Grounded answers.** Replies come only from the Markdown knowledge base you supply — no hallucinated policies, prices, or promises.\n- **Knows when to get a human.** Collects contact details and raises a support ticket (emailed to your team) instead of guessing.\n- **Streaming chat widget.** ~12 KB Web Component, Shadow DOM, no framework, one `<script>` tag.\n- **Multilingual.** Replies in the customer's language; you pick the language your team reads tickets in.\n- **Production guards.** PII + prompt-injection filters, five-dimension rate limiting (concurrency, per-minute, per-session, per-IP/hour, daily token budget), and an optional NDJSON audit log.\n- **Bring your own model.** OpenAI, DeepSeek, Groq, or any OpenAI-compatible endpoint.\n\n## Packages\n\n| Package | Use it for |\n|---|---|\n| **BotWire.AspNetCore** | The full stack — start here. Endpoints, widget, guards, DI. |\n| **BotWire.Core** | The engine alone (RAG, escalation, guards) with no ASP.NET dependency. |\n| **BotWire.Channels.Email** | SMTP delivery of escalated tickets (MailKit). |\n| **BotWire.Redis** | Redis-backed sessions + distributed rate limiting for multi-container deployments. |\n\n## License\n\nAGPL-3.0-or-later. Commercial licenses available for proprietary use.\n\n📖 **Full docs, configuration reference, and screenshots:** https://github.com/adamy/BotWire\n"}, "fba4d7b0fb9f7c72c77885718a81ed7db69b16ac": {"t": 1785760673.644878, "n": 2222, "h": "729b264a97131e9a", "c": "# BotWire\n\n**A 24/7 AI customer-support bot for your .NET app — self-hosted, bring-your-own-key, no SaaS fees.**\n\nDrop one package into your ASP.NET Core site, point it at your FAQ, and ship a support assistant that answers customers instantly from *your* docs — and quietly opens a human ticket the moment one is actually needed. You supply an OpenAI-compatible API key, so your only running cost is model tokens (pennies per conversation on `gpt-4o-mini` or DeepSeek).\n\n## Two lines to wire it up\n\n```csharp\nbuilder.Services.AddBotWire(opts =>\n{\n opts.TopicDescription = \"Online store customer support\";\n opts.Documents = [\"docs/faq.md\"];\n opts.ChatProvider = new OpenAIProviderOptions { ApiKey = \"sk-...\", Model = \"gpt-4o-mini\" };\n});\n\napp.MapBotWire();\n```\n\nEmbed the zero-dependency widget on any page:\n\n```html\n<script src=\"/botwire/widget.js\"></script>\n<botwire-widget data-endpoint=\"/support\" data-title=\"Acme Support\"></botwire-widget>\n```\n\n## What you get\n\n- **Grounded answers.** Replies come only from the Markdown knowledge base you supply — no hallucinated policies, prices, or promises.\n- **Knows when to get a human.** Collects contact details and raises a support ticket (emailed to your team) instead of guessing.\n- **Streaming chat widget.** ~12 KB Web Component, Shadow DOM, no framework, one `<script>` tag.\n- **Multilingual.** Replies in the customer's language; you pick the language your team reads tickets in.\n- **Production guards.** PII + prompt-injection filters, five-dimension rate limiting (concurrency, per-minute, per-session, per-IP/hour, daily token budget), and an optional NDJSON audit log.\n- **Bring your own model.** OpenAI, DeepSeek, Groq, or any OpenAI-compatible endpoint.\n\n## Packages\n\n| Package | Use it for |\n|---|---|\n| **BotWire.AspNetCore** | The full stack — start here. Endpoints, widget, guards, DI. |\n| **BotWire.Core** | The engine alone (RAG, escalation, guards) with no ASP.NET dependency. |\n| **BotWire.Channels.Email** | SMTP delivery of escalated tickets (MailKit). |\n\n## License\n\nAGPL-3.0-or-later. Commercial licenses available for proprietary use.\n\n📖 **Full docs, configuration reference, and screenshots:** https://github.com/adamy/BotWire\n"}}}}