Prompt Library (#1906)

This commit is contained in:
Rizel Scarlett
2025-03-31 07:29:37 -04:00
committed by GitHub
parent 326f087637
commit 54573e4a60
49 changed files with 2295 additions and 206 deletions

View File

@@ -0,0 +1,37 @@
# prompt-library conversion format-update documentation
Converted prompt library files from old format to new format for the following directories:
1. data/
- incident-analysis.json
- name-column-split.json
2. design/
- figma-to-code.json
3. legal/
- regulatory-comparison.json
4. marketing/
- budget-review.json
- retail-market-monitor.json
5. operations/
- delivery-tracking-automation.json
- form-review-automation.json
- make-phone-call.json
6. sales/
- product-region-availability.json
- sales-performance-analysis.json
7. miscellaneous/
- performance-review-prep.json
- system-control-research.json
Key conversion rules:
- title → title (kept same)
- description → description (kept same)
- prompt → example_prompt (kept same)
- variables → environmentVariables (moved under relevant extension)
- extensions properly formatted with:
- name
- command
- is_builtin
- link (for external extensions)
- environmentVariables array
All files converted and saved to: /Users/rizel/Desktop/LivestreamDemos/goose/documentation/src/pages/prompt-library/data/prompts/

View File

@@ -143,6 +143,11 @@ const config: Config = {
position: "left", position: "left",
label: "Tutorials", label: "Tutorials",
}, },
{
to: "/prompt-library",
position: "left",
label: "Prompt Library",
},
{ to: "/blog", label: "Blog", position: "left" }, { to: "/blog", label: "Blog", position: "left" },
{ {

View File

@@ -22,7 +22,7 @@
"@inkeep/docusaurus": "^2.0.16", "@inkeep/docusaurus": "^2.0.16",
"@mdx-js/react": "^3.0.0", "@mdx-js/react": "^3.0.0",
"autoprefixer": "^10.4.17", "autoprefixer": "^10.4.17",
"clsx": "^2.0.0", "clsx": "^2.1.1",
"dotenv": "^16.4.7", "dotenv": "^16.4.7",
"framer-motion": "^11.0.0", "framer-motion": "^11.0.0",
"lucide-react": "^0.475.0", "lucide-react": "^0.475.0",
@@ -31,6 +31,8 @@
"prism-react-renderer": "^2.3.0", "prism-react-renderer": "^2.3.0",
"react": "^19.0.0", "react": "^19.0.0",
"react-dom": "^19.0.0", "react-dom": "^19.0.0",
"react-markdown": "^10.1.0",
"tailwind-merge": "^3.0.2",
"tailwindcss": "^3.4.1" "tailwindcss": "^3.4.1"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -0,0 +1,141 @@
import { Download, Terminal, Info } from "lucide-react";
import Link from "@docusaurus/Link";
import { useState } from "react";
import CodeBlock from '@theme/CodeBlock';
import { motion, AnimatePresence } from "framer-motion";
import { getGooseInstallLink } from "@site/src/utils/install-links";
import type { MCPServer } from "@site/src/types/server";
import type { Prompt, Extension } from "@site/src/types/prompt";
function extensionToMCPServer(extension: Extension): MCPServer {
return {
id: extension.command,
name: extension.name,
command: extension.command,
description: extension.name,
is_builtin: extension.is_builtin,
link: extension.link || '',
installation_notes: extension.installation_notes || '',
endorsed: false,
environmentVariables: extension.environmentVariables || [],
githubStars: 0
};
}
export function PromptCard({ prompt }: { prompt: Prompt }) {
const [expandedExtension, setExpandedExtension] = useState<string | null>(null);
return (
<Link
to={`/prompt-library/detail?id=${prompt.id}`}
className="block no-underline hover:no-underline"
>
<div className="extension-title h-full">
<div className="server-card interactive w-full h-full">
<div className="card-glow"></div>
<div className="prompt-card">
<div className="card-header">
<div className="card-header-content">
<span className="home-page-server-name">
{prompt.title}
</span>
</div>
</div>
<div className="prompt-card-content">
<div>
<div>
<p className="card-description">{prompt.description}</p>
</div>
<div className="mt-6">
<div className="border-t border-borderSubtle pt-4">
<div className="flex flex-wrap gap-3">
{prompt.extensions.map((extension, index) => (
<div
key={index}
className="flex flex-col"
>
<div
className={`
inline-flex items-center h-9 px-4 rounded-full
bg-background-subtle border border-borderSubtle
transition-all duration-150 ease-in-out
hover:bg-background-standard hover:border-borderStandard
group ${extension.is_builtin ? 'cursor-help' : 'cursor-pointer'}
${expandedExtension === extension.command ? 'bg-background-standard border-borderStandard' : ''}
`}
onClick={(e) => {
e.preventDefault();
e.stopPropagation();
if (!extension.is_builtin) {
setExpandedExtension(expandedExtension === extension.command ? null : extension.command);
}
}}
title={extension.is_builtin ? "Built-in extension - can be enabled in settings" : "Click to see installation options"}
>
<span className="text-sm text-textStandard group-hover:text-textProminent">
{extension.name}
</span>
{extension.is_builtin ? (
<div className="inline-flex items-center ml-2">
<span className="text-sm text-textSubtle">
Built-in
</span>
</div>
) : (
<span className="ml-2 text-textSubtle">
<Download className="h-4 w-4" />
</span>
)}
</div>
{/* Inline Expansion */}
<AnimatePresence>
{!extension.is_builtin && expandedExtension === extension.command && (
<motion.div
initial={{ height: 0, opacity: 0 }}
animate={{ height: "auto", opacity: 1 }}
exit={{ height: 0, opacity: 0 }}
transition={{ duration: 0.2 }}
className="overflow-hidden"
>
<div className="mt-2 bg-background-subtle rounded-md p-3 border border-borderSubtle space-y-3">
<a
href={getGooseInstallLink(extensionToMCPServer(extension))}
target="_blank"
rel="noopener noreferrer"
className="flex items-center gap-2 text-textStandard hover:text-textProminent"
onClick={(e) => e.stopPropagation()}
>
<Download className="h-4 w-4" />
<span className="text-sm">Install via Desktop</span>
</a>
<div className="border-t border-borderSubtle" />
<button
className="command-toggle"
>
<Terminal className="h-4 w-4" />
<h4 className="mx-2">Command</h4>
</button>
<CodeBlock language="bash">
goose session --with-extension "{extension.command}"
</CodeBlock>
</div>
</motion.div>
)}
</AnimatePresence>
</div>
))}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</Link>
);
}

View File

@@ -0,0 +1,34 @@
import { cn } from "@site/src/utils/cn";
export type PillFilterOption = {
label: string;
value: string;
};
interface PillFilterProps {
options: PillFilterOption[];
selectedValue: string;
onChange: (value: string) => void;
}
export function PillFilter({ options, selectedValue, onChange }: PillFilterProps) {
return (
<div className="flex flex-wrap gap-2">
{options.map((option) => (
<button
key={option.value}
onClick={() => onChange(option.value)}
className={cn(
"px-4 py-2 rounded-full text-sm font-medium transition-colors",
"border border-borderSubtle",
selectedValue === option.value
? "dark:bg-white dark:text-black bg-black text-white border-borderProminent"
: "bg-bgApp text-textStandard"
)}
>
{option.label}
</button>
))}
</div>
);
}

View File

@@ -0,0 +1,65 @@
import { cn } from "@site/src/utils/cn";
export type SidebarFilterOption = {
label: string;
value: string;
count?: number;
};
export type SidebarFilterGroup = {
title: string;
options: SidebarFilterOption[];
};
interface SidebarFilterProps {
groups: SidebarFilterGroup[];
selectedValues: Record<string, string[]>;
onChange: (groupTitle: string, values: string[]) => void;
}
export function SidebarFilter({ groups, selectedValues, onChange }: SidebarFilterProps) {
const toggleValue = (groupTitle: string, value: string) => {
const currentValues = selectedValues[groupTitle] || [];
const newValues = currentValues.includes(value)
? currentValues.filter((v) => v !== value)
: [...currentValues, value];
onChange(groupTitle, newValues);
};
return (
<div className="w-64 pr-8">
{groups.map((group) => (
<div key={group.title} className="mb-8">
<h3 className="text-lg font-medium mb-4 text-textProminent">
{group.title}
</h3>
<div className="space-y-2">
{group.options.map((option) => (
<label
key={option.value}
className="flex items-center justify-between group cursor-pointer"
>
<div className="flex items-center">
<input
type="checkbox"
checked={(selectedValues[group.title] || []).includes(option.value)}
onChange={() => toggleValue(group.title, option.value)}
className="form-checkbox h-4 w-4 text-purple-600 transition duration-150 ease-in-out"
/>
<span className="ml-2 text-sm text-textStandard group-hover:text-textProminent">
{option.label}
</span>
</div>
{option.count !== undefined && (
<span className="text-sm text-textSubtle">
{option.count}
</span>
)}
</label>
))}
</div>
</div>
))}
</div>
);
}

View File

@@ -64,10 +64,10 @@
position: absolute; position: absolute;
opacity: 0; opacity: 0;
pointer-events: none; pointer-events: none;
width: 600px; width: 1000px;
height: 600px; height: 1000px;
top: -150px; top: -200px;
left: -50px; left: -200px;
transform-origin: center; transform-origin: center;
background: linear-gradient(45deg, #13bbaf, #ff4f00); background: linear-gradient(45deg, #13bbaf, #ff4f00);
animation: rotate 6s linear infinite; animation: rotate 6s linear infinite;
@@ -87,6 +87,25 @@
transition: all 0.3s ease; transition: all 0.3s ease;
} }
.prompt-card {
min-height: 200px;
display: flex;
flex-direction: column;
background-color: var(--background-app);
border-radius: 15px;
box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
border: 1px solid var(--border-subtle);
overflow: hidden;
transition: all 0.3s ease;
}
.prompt-card-content {
flex: 1;
display: flex;
flex-direction: column;
padding: 0 1.5rem 1.5rem 1.5rem;
min-height: 0;
}
/* Card header styles */ /* Card header styles */
.card-header { .card-header {
padding: 1.5rem 1.5rem 0.75rem 1.5rem; padding: 1.5rem 1.5rem 0.75rem 1.5rem;

View File

@@ -0,0 +1,26 @@
{
"id": "accessibility-audit",
"title": "Website Accessibility Audit",
"description": "Conduct a comprehensive accessibility audit of a website, including keyboard navigation, color contrast, and ARIA compliance",
"category": "technical",
"job": "design",
"example_prompt": "Can you check if my website is accessible? Please conduct a full accessibility audit, focusing on the following:\n\n1. Keyboard Navigation: Test all interactive elements (links, buttons, dropdowns, etc.) to ensure they are accessible without a mouse.\n\n2. Color Contrast Analysis: Verify that all text and UI elements meet WCAG contrast ratio standards.\n\n3. Screen Reader Compatibility: Test whether a screen reader can properly interpret content and navigation.\n\n4. ARIA & Semantic HTML Validation: Identify any missing or misused ARIA attributes and ensure proper semantic structure.\n\n5. Error Identification & Screenshots: Provide a comprehensive report with identified issues, along with screenshots if necessary.\n\n6. Fixes & Code Recommendations: Suggest HTML, CSS, or JavaScript changes to resolve any compliance issues.\n\nHere is the website to test: [URL]. I want to ensure that our documentation meets accessibility standards. Please generate a detailed report with steps to fix any issues found.",
"example_result": "I've completed the accessibility audit of your website. Here are the findings:\n\n1. Keyboard Navigation:\n- All interactive elements are keyboard accessible\n- Focus indicators are visible\n- Tab order is logical\n\n2. Color Contrast:\n- Main text meets WCAG AA standards (ratio 4.5:1)\n- Warning: Header text #FF8C00 on white background fails contrast requirements\n\n3. Screen Reader Compatibility:\n- All images have appropriate alt text\n- Headings are properly structured (H1 → H2 → H3)\n- Form fields have associated labels\n\n4. ARIA & Semantic HTML:\n- Navigation uses <nav> element correctly\n- Missing aria-label on search form\n- Article sections use appropriate semantic tags\n\nRecommended Fixes:\n\n```html\n<!-- Update header text color for better contrast -->\n<h1 style=\"color: #D35400;\">Welcome</h1>\n\n<!-- Add aria-label to search form -->\n<form aria-label=\"Search website\">\n <input type=\"search\" name=\"q\">\n</form>\n```\n\nPriority fixes:\n1. Adjust header text color to meet contrast requirements\n2. Add missing ARIA labels to interactive elements\n3. Implement skip navigation for keyboard users",
"extensions": [
{
"name": "Puppeteer",
"command": "npx -y @modelcontextprotocol/server-puppeteer",
"is_builtin": false,
"environmentVariables": [
]
},
{
"name": "Developer",
"command": "developer",
"is_builtin": true,
"environmentVariables": [
]
}
]
}

View File

@@ -0,0 +1,36 @@
{
"id": "ai-content-detection",
"title": "AI Content Detection Policies",
"description": "Enforce content policies by detecting AI-generated submissions and ensuring compliance with platform guidelines",
"category": "business",
"job": "marketing-content",
"example_prompt": "Please analyze the provided content for:\n1. Indicators of AI generation\n2. Policy compliance issues\n3. Required disclosures or missing attributions\n\nProvide a detailed report including:\n- AI detection confidence score\n- Policy violation alerts\n- Recommended actions\n- Suggested improvements for compliance",
"example_result": "Content Analysis Report\n\nSubmitted Text: \"The Future of Quantum Computing\"\n\nAI Detection Results:\n- Confidence Score: 87% likely AI-generated\n- Key Indicators:\n - Consistent writing style throughout\n - Advanced technical terminology used uniformly\n - Repetitive phrase patterns detected\n - Limited personal perspective or anecdotes\n\nPolicy Compliance Review:\n1. Attribution Issues:\n - Missing citations for technical claims\n - No references to original research\n - Required attribution disclaimer absent\n\n2. Content Guidelines:\n - Technical accuracy: Passed\n - Originality check: Failed (similar content found)\n - Disclosure requirements: Not met\n\nRequired Actions:\n1. Add AI-generated content disclaimer\n2. Include citations for technical claims\n3. Differentiate from existing published content\n4. Add human editorial oversight statement\n\nRecommended Improvements:\n```markdown\n# Original Content\nThe Future of Quantum Computing...\n\n# Improved Version\n[AI-Generated Content Disclaimer]\nThe Future of Quantum Computing\nEdited by: [Editor Name]\n\nAs explored in [Citation 1], quantum computing...\n\nAccording to research by [Institution]...\n\n# Footer\nThis content was generated with AI assistance and reviewed by our editorial team. Citations and references available upon request.\n```\n\nCompliance Score: 65/100\nStatus: Requires Revision",
"extensions": [
{
"name": "Computer Controller",
"command": "computercontroller",
"is_builtin": true,
"environmentVariables": [
]
},
{
"name": "Google Drive",
"command": "npx -y @modelcontextprotocol/server-gdrive",
"is_builtin": false,
"environmentVariables": [
{
"name": "GDRIVE_OAUTH_PATH",
"description": "/Users/<username>/.config/gcp-oauth.keys.json / ",
"required": true
},
{
"name": "GDRIVE_CREDENTIALS_PATH",
"description": "/Users/<username>/.config/.gdrive-server-credentials.json /",
"required": true
}
]
}
]
}

View File

@@ -0,0 +1,19 @@
{
"id": "dev-api-endpoints-analysis",
"title": "Analyze App Endpoints and Interfaces",
"description": "Review application routing configuration and summarize all external interfaces",
"category": "technical",
"job": "engineering",
"example_prompt": "Please analyze the application's routing configuration found in `config/routes.rb` and summarize all external interfaces, including API endpoints, service integrations, and public routes.",
"example_result": "I've analyzed the routing configuration in config/routes.rb. Here's a summary of all external interfaces:\n\n1. API Endpoints (v1):\n```ruby\n# Authentication\nPOST /api/v1/auth/login\nPOST /api/v1/auth/refresh\nDELETE /api/v1/auth/logout\n\n# Users\nGET /api/v1/users\nPOST /api/v1/users\nGET /api/v1/users/:id\nPATCH /api/v1/users/:id\nDELETE /api/v1/users/:id\n\n# Products\nGET /api/v1/products\nPOST /api/v1/products\nGET /api/v1/products/:id\n```\n\n2. Public Routes:\n- GET / → Pages#home\n- GET /about → Pages#about\n- GET /contact → Pages#contact\n- POST /contact → Messages#create\n\n3. Service Integrations:\n- Stripe webhook: POST /webhooks/stripe\n- SendGrid events: POST /webhooks/sendgrid\n\n4. OAuth Providers:\n- GET /auth/google/callback\n- GET /auth/github/callback\n\nSecurity Notes:\n- All API endpoints require JWT authentication except /auth/login\n- Rate limiting applied to authentication endpoints\n- CORS configured for approved domains only\n- API versioning implemented via URL prefix",
"extensions": [
{
"name": "Developer",
"command": "developer",
"is_builtin": true,
"environmentVariables": [
]
}
]
}

View File

@@ -0,0 +1,32 @@
{
"id": "asana-task-management",
"title": "Manage Asana Tasks",
"description": "Create, update, and manage Asana tasks and projects",
"category": "productivity",
"job": "project-management",
"example_prompt": "Create a new task in my Asana workspace called 'Review Q4 metrics' and set the due date to next Friday. Then, find all tasks assigned to me that are due this week and summarize them.",
"example_result": "I've completed the following actions in Asana:\n\n1. Created new task:\n- Title: \"Review Q4 metrics\"\n- Due date: Friday, April 4th\n- Status: Open\n- Project: Business Review\n\n2. Tasks due this week assigned to you:\n\n- Monday: \"Update sales dashboard\" (Marketing)\n- Tuesday: \"Team sync meeting notes\" (Team Management)\n- Wednesday: \"Client proposal review\" (Sales)\n- Thursday: \"Monthly budget reconciliation\" (Finance)\n- Friday: \"Review Q4 metrics\" (Business Review)\n\nAll tasks have been properly tagged and linked to their respective projects. I've also added the Q4 metrics task to your My Tasks list for easy access.",
"extensions": [
{
"name": "Asana",
"command": "npx -y @modelcontextprotocol/server-asana",
"is_builtin": false,
"environmentVariables": [
{
"name": "ASANA_ACCESS_TOKEN",
"description": "Your Asana Personal Access Token.",
"installation_notes": "Use OpenAI's GPT-4o was used for this prompt",
"required": true
}
]
},
{
"name": "Computer Controller",
"command": "computercontroller",
"is_builtin": true,
"environmentVariables": [
]
}
]
}

View File

@@ -0,0 +1,38 @@
{
"id": "content-calendar-generator",
"title": "Content Calendar Generator",
"description": "Generate a content calendar with social media posts, blog topics, and email newsletters",
"category": "productivity",
"job": "marketing-content",
"featured": true,
"example_prompt": "Help me create a content calendar for the next month. I need:\n\n1. Social media posts (3 per week)\n2. Blog post topics (1 per week)\n3. Email newsletter ideas (2 per month)\n\nOur target audience is developers and tech professionals. Focus on topics around AI, developer tools, and productivity. Include suggested posting times and content types (image, video, text).",
"example_result": "I've created a content calendar for next month. Here's the breakdown:\n\nWeek 1:\nSocial Media:\n- Monday 9am: \"🔥 Just launched: Our new AI-powered code completion tool. Watch the demo! [Video]\"\n- Wednesday 2pm: \"Top 5 VS Code extensions for productivity in 2025 [Image carousel]\"\n- Friday 4pm: \"What's your go-to debugging technique? Share below! [Poll]\"\n\nBlog: \"The Future of AI Pair Programming: Beyond Code Completion\"\n\nWeek 2:\nSocial Media:\n- Monday 10am: \"Developer tip: Use these keyboard shortcuts to boost your workflow [Infographic]\"\n- Wednesday 3pm: \"Behind the scenes: How we optimized our CI/CD pipeline [Thread]\"\n- Friday 1pm: \"Weekend project: Build a ChatGPT plugin in 30 minutes [Tutorial link]\"\n\nBlog: \"Optimizing Docker Builds: A Practical Guide\"\n\nWeek 3:\nSocial Media:\n- Monday 9am: \"Meet our engineering team and their favorite dev tools [Team photo]\"\n- Wednesday 2pm: \"Quick tip: Debug faster with these console.log alternatives [Code snippet]\"\n- Friday 3pm: \"From monolith to microservices: Our journey [Case study]\"\n\nBlog: \"Security Best Practices for AI Applications\"\n\nWeek 4:\nSocial Media:\n- Monday 11am: \"New feature alert: AI-powered code review assistant [Demo video]\"\n- Wednesday 1pm: \"The evolution of JavaScript: 2015 vs 2025 [Comparison image]\"\n- Friday 4pm: \"What's your biggest coding pet peeve? [Interactive poll]\"\n\nBlog: \"Building Scalable Systems with Kubernetes and AI\"\n\nEmail Newsletters:\n1. Mid-month (15th):\nSubject: \"Level Up Your Dev Game: AI Tools Special\"\n- Feature story: The impact of AI on code review\n- Product updates\n- Community spotlight\n- Upcoming webinar announcement\n\n2. Month-end (30th):\nSubject: \"Monthly Dev Digest: Top Stories & Updates\"\n- Blog roundup\n- Most engaging social posts\n- Industry news\n- Developer resource of the month\n\nAll content has been added to your Google Calendar with reminders set 2 days before each posting date.",
"extensions": [
{
"name": "Google Drive",
"command": "npx -y @modelcontextprotocol/server-gdrive",
"is_builtin": false,
"link": "https://block.github.io/goose/v1/extensions/google-drive",
"environmentVariables": [
{
"name": "GDRIVE_OAUTH_PATH",
"description": "/Users/<username>/.config/gcp-oauth.keys.json",
"required": true
},
{
"name": "GDRIVE_CREDENTIALS_PATH",
"description": "/Users/<username>/.config/.gdrive-server-credentials.json",
"required": true
}
]
},
{
"name": "Computer Controller",
"command": "computercontroller",
"is_builtin": true,
"environmentVariables": [
]
}
]
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,31 @@
{
"id": "ops-delivery-tracking",
"title": "Real-Time Delivery Route Optimization",
"description": "Monitor delivery routes and automatically optimize them based on real-time traffic conditions",
"category": "business",
"job": "operations",
"example_prompt": "Track the live GPS location of driver ID #{driver_id}. Query Google Maps for real-time traffic data and adjust the estimated delivery time if delays exceed 5 minutes. If ETA changes, update the customer's live tracker and send an SMS notification. If the delay is greater than 20 minutes, check if another driver within a 1-mile radius can take over the delivery.",
"example_result": "I've analyzed the delivery route for driver #1234. Here's the current status:\n\nCurrent Location:\n- Latitude: 37.7858\n- Longitude: -122.4064\n- Last Updated: 2 minutes ago\n\nRoute Analysis:\n- Original ETA: 2:45 PM\n- Current Traffic Conditions: Heavy congestion on Market St\n- Delay Detected: 12 minutes\n- New ETA: 2:57 PM\n\nActions Taken:\n1. Updated customer tracking portal\n2. Sent SMS to customer:\n \"Your delivery is slightly delayed due to traffic. New ETA: 2:57 PM\"\n\nNearby Drivers:\n- Driver #1567: 0.8 miles away, 2 active deliveries\n- Driver #1892: 1.2 miles away, 1 active delivery\n\nRecommendation:\n- Delay is under 20 minutes threshold\n- Current driver should continue the delivery\n- Will continue monitoring and update if conditions change\n\nOptimized Route:\n```json\n{\n \"original_route\": [\n \"Market St\",\n \"Van Ness Ave\",\n \"Hayes St\"\n ],\n \"new_route\": [\n \"Market St\",\n \"Gough St\",\n \"Hayes St\"\n ],\n \"estimated_time_saved\": \"8 minutes\"\n}\n```\n\nNext Steps:\n1. Driver has been notified of route change\n2. System will continue monitoring traffic conditions\n3. Next update in 5 minutes or if conditions change significantly",
"extensions": [
{
"name": "Google Maps",
"command": "npx -y @modelcontextprotocol/server-google-maps",
"is_builtin": false,
"environmentVariables": [
{
"name": "GOOGLE_MAPS_API_KEY",
"description": "<YOUR_TOKEN>",
"required": true
}
]
},
{
"name": "Computer Controller",
"command": "computercontroller",
"is_builtin": true,
"environmentVariables": [
]
}
]
}

View File

@@ -0,0 +1,32 @@
{
"id": "design-figma-to-code",
"title": "Convert Designs to Code",
"description": "Convert a Figma design into a web app",
"category": "technical",
"job": "design",
"featured": true,
"example_prompt": "Convert my figma design with file ID 7r0mLHWx2rrjwn79mcNVNE into a webpage. Get specific detailed information and styling about each element and components within each frame. Make sure to implement any interactions or animations and use a placeholder div with a gray background for images.\n\nSome elements are centralized, some are duplicated, make sure to get them correct. And ensure correct alignment and spacing between elements.",
"example_result": "I've analyzed your Figma design and converted it into code. Here's the implementation:\n\n```html\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Landing Page</title>\n <style>\n .hero-section {\n display: flex;\n justify-content: space-between;\n padding: 64px 120px;\n background: linear-gradient(135deg, #F6F9FC 0%, #E9EEF3 100%);\n }\n\n .hero-content {\n max-width: 540px;\n }\n\n .hero-title {\n font-family: 'Inter';\n font-weight: 700;\n font-size: 48px;\n line-height: 58px;\n color: #1A1A1A;\n margin-bottom: 24px;\n }\n\n .feature-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 32px;\n padding: 80px 120px;\n }\n\n .feature-card {\n background: #FFFFFF;\n border-radius: 16px;\n padding: 32px;\n box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.05);\n transition: transform 0.3s ease;\n }\n\n .feature-card:hover {\n transform: translateY(-8px);\n }\n </style>\n</head>\n<body>\n <nav class=\"navbar\">\n <!-- Navigation implementation -->\n </nav>\n\n <section class=\"hero-section\">\n <div class=\"hero-content\">\n <h1 class=\"hero-title\">Transform your workflow</h1>\n <p class=\"hero-description\">Streamline your process with our intuitive platform</p>\n <button class=\"cta-button\">Get Started</button>\n </div>\n <div class=\"hero-image\">\n <!-- Placeholder for hero image -->\n <div style=\"width: 480px; height: 320px; background: #E5E5E5; border-radius: 8px;\"></div>\n </div>\n </section>\n\n <section class=\"feature-grid\">\n <!-- Feature cards with hover animations -->\n <div class=\"feature-card\">\n <div class=\"icon\"><!-- Icon placeholder --></div>\n <h3>Feature 1</h3>\n <p>Description of feature 1</p>\n </div>\n <!-- Repeated for other features -->\n </section>\n</body>\n</html>\n```\n\n```javascript\n// Animation and interaction implementations\ndocument.addEventListener('DOMContentLoaded', () => {\n // Smooth scroll for navigation\n document.querySelectorAll('a[href^=\"#\"]').forEach(anchor => {\n anchor.addEventListener('click', function (e) {\n e.preventDefault();\n document.querySelector(this.getAttribute('href')).scrollIntoView({\n behavior: 'smooth'\n });\n });\n });\n\n // Feature card hover effects\n const cards = document.querySelectorAll('.feature-card');\n cards.forEach(card => {\n card.addEventListener('mouseenter', () => {\n card.style.transform = 'translateY(-8px)';\n });\n card.addEventListener('mouseleave', () => {\n card.style.transform = 'translateY(0)';\n });\n });\n});\n```\n\nImplementation Notes:\n1. Responsive Design\n - Breakpoints set at 1200px, 992px, and 768px\n - Mobile-first approach using flexbox and grid\n\n2. Styling Details\n - Font: Inter (weights: 400, 500, 700)\n - Color palette from Figma variables\n - Shadow values matched exactly\n\n3. Animations\n - Smooth hover transitions (0.3s ease)\n - Scroll animations for sections\n - Interactive elements with feedback\n\n4. Component Structure\n - Modular CSS classes\n - Semantic HTML5 elements\n - Accessible markup with ARIA attributes\n\n5. Image Placeholders\n - Gray background (#E5E5E5)\n - Maintained aspect ratios\n - Ready for asset replacement",
"extensions": [
{
"name": "Developer",
"command": "developer",
"is_builtin": true,
"environmentVariables": [
]
},
{
"name": "Figma",
"command": "npx -y @hapins/figma-mcp",
"is_builtin": false,
"environmentVariables": [
{
"name": "FIGMA_ACCESS_TOKEN",
"description": "Figma API access token",
"required": true
}
]
}
]
}

View File

@@ -0,0 +1,36 @@
{
"id": "operations-form-review-automation",
"title": "Assign Reviewers to Conference Proposals",
"description": "Automatically match incoming conference proposals with relevant track reviewers",
"category": "business",
"job": "operations",
"example_prompt": "I need help building an automated monitoring system that will:\n1. Check an Airtable base every 10 minutes for new form submissions\n2. Match each submission with reviewer information stored in a Google Sheet\n3. Send me a notification with the submission details and assigned reviewer(s)\n4. Auto-dismiss the notification after 5 seconds\n\nCan you help me create this system, starting with setting up the necessary connections to Airtable and Google Sheets?",
"example_result": "I'll help you create an automated monitoring system. Here's the implementation:\n\n1. First, let's create the monitoring script:\n\n```ruby\nrequire 'airrecords'\nrequire 'google_drive'\nrequire 'terminal-notifier'\n\n# Configure Airtable\nAirrecords.api_key = ENV['AIRTABLE_API_KEY']\nclass Submission < Airrecords::Table\n self.base_key = 'your_base_id'\n self.table_name = 'Submissions'\n\n def self.new_submissions\n all(filter: \"{Status} = 'New'\")\n end\nend\n\n# Configure Google Drive\nsession = GoogleDrive::Session.from_config(\"config.json\")\nreviewers_sheet = session.spreadsheet_by_key(\"your_sheet_id\").worksheets[0]\n\n# Load reviewer data\ndef load_reviewers\n reviewers = {}\n reviewers_sheet.rows.each_with_index do |row, i|\n next if i == 0 # Skip header\n reviewers[row[1]] = {\n name: row[0],\n expertise: row[1].split(','),\n current_load: row[2].to_i\n }\n end\n reviewers\nend\n\n# Match submission with reviewers\ndef match_reviewers(submission, reviewers)\n topic = submission['Topic']\n matched_reviewers = reviewers.select do |_, r|\n r[:expertise].include?(topic) && r[:current_load] < 3\n end\n matched_reviewers.sort_by { |_, r| r[:current_load] }.first(2)\nend\n\n# Main monitoring loop\nloop do\n begin\n reviewers = load_reviewers\n new_submissions = Submission.new_submissions\n\n new_submissions.each do |submission|\n matched = match_reviewers(submission, reviewers)\n \n if matched.any?\n # Update submission status\n submission['Status'] = 'Assigned'\n submission['Reviewers'] = matched.map { |_, r| r[:name] }.join(', ')\n submission.save\n\n # Send notification\n message = \"New submission: #{submission['Title']}\\n\"\n message += \"Assigned to: #{submission['Reviewers']}\"\n \n TerminalNotifier.notify(\n message,\n title: 'New Conference Proposal',\n execute: 'open https://airtable.com/your_base_url',\n timeout: 5\n )\n end\n end\n\n rescue => e\n TerminalNotifier.notify(\n \"Error: #{e.message}\",\n title: 'Monitoring System Error'\n )\n end\n\n sleep 600 # Wait 10 minutes\nend\n```\n\n2. Create a configuration file (config.json):\n\n```json\n{\n \"client_id\": \"your_google_client_id\",\n \"client_secret\": \"your_google_client_secret\",\n \"scope\": [\n \"https://www.googleapis.com/auth/drive\",\n \"https://spreadsheets.google.com/feeds/\"\n ],\n \"refresh_token\": \"your_refresh_token\"\n}\n```\n\n3. Set up the launch agent (com.conference.monitor.plist):\n\n```xml\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n <key>Label</key>\n <string>com.conference.monitor</string>\n <key>ProgramArguments</key>\n <array>\n <string>/usr/bin/ruby</string>\n <string>/path/to/monitor.rb</string>\n </array>\n <key>RunAtLoad</key>\n <true/>\n <key>KeepAlive</key>\n <true/>\n <key>StandardErrorPath</key>\n <string>/tmp/conference.monitor.err</string>\n <key>StandardOutPath</key>\n <string>/tmp/conference.monitor.out</string>\n <key>EnvironmentVariables</key>\n <dict>\n <key>AIRTABLE_API_KEY</key>\n <string>your_airtable_api_key</string>\n </dict>\n</dict>\n</plist>\n```\n\nImplementation Notes:\n\n1. Data Structure\n - Airtable: Submissions table with Title, Topic, Status, Reviewers fields\n - Google Sheet: Reviewers with Name, Expertise (comma-separated), Current Load\n\n2. Matching Logic\n - Matches based on topic expertise\n - Considers reviewer workload (max 3 assignments)\n - Assigns 2 reviewers per submission\n\n3. Error Handling\n - Catches and notifies on API errors\n - Continues running after errors\n - Logs to standard files\n\n4. Security\n - Credentials stored in environment/config\n - API keys not hardcoded\n - Limited scope for Google access\n\n5. Monitoring\n - Runs every 10 minutes\n - Auto-restarts if crashed\n - Clickable notifications to view details\n\nTo install:\n1. Save the script as monitor.rb\n2. Install required gems: `gem install airrecords google_drive terminal-notifier`\n3. Copy plist to ~/Library/LaunchAgents/\n4. Load with: `launchctl load ~/Library/LaunchAgents/com.conference.monitor.plist`",
"extensions": [
{
"name": "Computer Controller",
"command": "computercontroller",
"is_builtin": true,
"environmentVariables": [
]
},
{
"name": "Google Drive",
"command": "npx -y @modelcontextprotocol/server-gdrive",
"is_builtin": false,
"environmentVariables": [
{
"name": "GDRIVE_OAUTH_PATH",
"description": "/Users/<username>/.config/gcp-oauth.keys.json / ",
"required": true
},
{
"name": "GDRIVE_CREDENTIALS_PATH",
"description": "/Users/<username>/.config/.gdrive-server-credentials.json /",
"required": true
}
]
}
]
}

View File

@@ -0,0 +1,23 @@
{
"id": "generate-storybook-entry",
"title": "Generate Storybook Entry from Git Diff",
"description": "Generate a Storybook documentation entry based on component changes in git diff",
"category": "technical",
"job": "engineering",
"example_prompt": "Based on the current git diff, please generate a comprehensive Storybook entry for NavBar component that includes:\n\n1. Component description\n2. Props documentation\n3. Usage examples\n4. Edge cases and variations\n5. Accessibility considerations\n\nPlease format the output in MDX format suitable for Storybook.",
"example_result": "Based on the git diff, I've generated a Storybook entry for the NavBar component:\n\n```mdx\nimport { Meta, Story, Canvas, ArgsTable } from '@storybook/addon-docs';\nimport { NavBar } from './NavBar';\n\n<Meta\n title=\"Components/Navigation/NavBar\"\n component={NavBar}\n argTypes={{\n variant: {\n control: 'select',\n options: ['primary', 'secondary', 'minimal'],\n description: 'Visual style variant of the navbar'\n },\n isSticky: {\n control: 'boolean',\n description: 'Whether navbar stays fixed at top during scroll'\n },\n logo: {\n control: 'text',\n description: 'URL or path to logo image'\n },\n menuItems: {\n control: 'object',\n description: 'Array of navigation items'\n }\n }}\n/>\n\n# NavBar\n\nA responsive navigation bar component that adapts to different screen sizes and supports multiple visual styles.\n\n## Features\n\n- Responsive mobile menu with hamburger icon\n- Configurable navigation items\n- Optional sticky positioning\n- Multiple visual variants\n- Built-in search integration\n- Accessible keyboard navigation\n\n## Props\n\n<ArgsTable of={NavBar} />\n\n## Basic Usage\n\n<Canvas>\n <Story name=\"Default\">\n <NavBar\n variant=\"primary\"\n logo=\"/logo.svg\"\n menuItems={[\n { label: 'Home', href: '/' },\n { label: 'Products', href: '/products' },\n { label: 'About', href: '/about' }\n ]}\n />\n </Story>\n</Canvas>\n\n## Variants\n\n### Secondary Style\n\n<Canvas>\n <Story name=\"Secondary\">\n <NavBar\n variant=\"secondary\"\n logo=\"/logo.svg\"\n menuItems={[\n { label: 'Home', href: '/' },\n { label: 'Products', href: '/products' }\n ]}\n />\n </Story>\n</Canvas>\n\n### Minimal Style\n\n<Canvas>\n <Story name=\"Minimal\">\n <NavBar\n variant=\"minimal\"\n menuItems={[\n { label: 'Home', href: '/' },\n { label: 'Products', href: '/products' }\n ]}\n />\n </Story>\n</Canvas>\n\n## With Search\n\n<Canvas>\n <Story name=\"WithSearch\">\n <NavBar\n variant=\"primary\"\n showSearch={true}\n onSearch={(term) => console.log(`Searching for: ${term}`)}\n menuItems={[\n { label: 'Home', href: '/' },\n { label: 'Products', href: '/products' }\n ]}\n />\n </Story>\n</Canvas>\n\n## Edge Cases\n\n### Long Menu Items\n\n<Canvas>\n <Story name=\"LongItems\">\n <NavBar\n menuItems={[\n { label: 'Home', href: '/' },\n { label: 'Very Long Product Category Name That Might Wrap', href: '/products' },\n { label: 'Another Really Long Navigation Item', href: '/about' }\n ]}\n />\n </Story>\n</Canvas>\n\n### Many Items\n\n<Canvas>\n <Story name=\"ManyItems\">\n <NavBar\n menuItems={Array(8).fill().map((_, i) => ({\n label: `Item ${i + 1}`,\n href: `#${i}`\n }))}\n />\n </Story>\n</Canvas>\n\n## Accessibility\n\nThe NavBar component implements the following accessibility features:\n\n- Uses semantic HTML5 nav element\n- Implements ARIA landmarks for navigation\n- Keyboard navigation support (Tab, Enter, Space, Esc)\n- Mobile menu button follows ARIA menu button pattern\n- Color contrast meets WCAG 2.1 AA standards\n- Focus indicators visible in all themes\n\n### Keyboard Navigation\n\n- Tab: Move through navigation items\n- Enter/Space: Activate current item\n- Esc: Close mobile menu\n- Arrow keys: Navigate dropdown menus\n\n## Implementation Notes\n\n```tsx\n// Example TypeScript interfaces\ninterface MenuItem {\n label: string;\n href: string;\n icon?: ReactNode;\n children?: MenuItem[];\n}\n\ninterface NavBarProps {\n variant?: 'primary' | 'secondary' | 'minimal';\n isSticky?: boolean;\n logo?: string;\n menuItems: MenuItem[];\n showSearch?: boolean;\n onSearch?: (term: string) => void;\n}\n```\n\n## Best Practices\n\n1. Keep navigation items concise\n2. Limit top-level items to 7 or fewer\n3. Use consistent icons if implementing icon support\n4. Ensure dropdown menus are keyboard accessible\n5. Maintain mobile breakpoints in theme configuration\n```",
"extensions": [
{
"name": "Developer",
"command": "developer",
"is_builtin": true,
"environmentVariables": [
{
"name": "component_name",
"description": "Name of the component to document",
"required": true
}
]
}
]
}

View File

@@ -0,0 +1,23 @@
{
"id": "documentation-generate-toc",
"title": "Generate Table of Contents for Repo",
"description": "Generate a logically organized table of contents for a CONTRIBUTING.md file",
"category": "technical",
"job": "engineering",
"example_prompt": "Analyze the CONTRIBUTING.md file and create a well-structured table of contents. Include all major sections and subsections, using consistent formatting and logical organization.",
"example_result": "I've analyzed the CONTRIBUTING.md file and generated a table of contents. Here's the structured output:\n\n```markdown\n# Contributing to Project Name\n\n## Table of Contents\n\n1. [Getting Started](#getting-started)\n - [Prerequisites](#prerequisites)\n - [Development Environment](#development-environment)\n - [Code Style Guide](#code-style-guide)\n\n2. [Development Workflow](#development-workflow)\n - [Branching Strategy](#branching-strategy)\n - [Commit Messages](#commit-messages)\n - [Pull Requests](#pull-requests)\n - [Code Review Process](#code-review-process)\n\n3. [Testing Guidelines](#testing-guidelines)\n - [Unit Tests](#unit-tests)\n - [Integration Tests](#integration-tests)\n - [Performance Tests](#performance-tests)\n - [Test Coverage Requirements](#test-coverage-requirements)\n\n4. [Documentation](#documentation)\n - [Code Documentation](#code-documentation)\n - [API Documentation](#api-documentation)\n - [Example Usage](#example-usage)\n - [Architecture Diagrams](#architecture-diagrams)\n\n5. [Release Process](#release-process)\n - [Version Numbering](#version-numbering)\n - [Release Checklist](#release-checklist)\n - [Deployment Steps](#deployment-steps)\n\n6. [Community Guidelines](#community-guidelines)\n - [Code of Conduct](#code-of-conduct)\n - [Issue Reporting](#issue-reporting)\n - [Feature Requests](#feature-requests)\n - [Community Meetings](#community-meetings)\n\n7. [Support](#support)\n - [Getting Help](#getting-help)\n - [Troubleshooting](#troubleshooting)\n - [FAQ](#faq)\n\n8. [Legal](#legal)\n - [License](#license)\n - [Contributor License Agreement](#contributor-license-agreement)\n - [Third-party Dependencies](#third-party-dependencies)\n```\n\nImplementation Notes:\n\n1. Structure\n - Organized in hierarchical order of engagement\n - Maximum 3 levels deep for clarity\n - Related topics grouped together\n\n2. Formatting\n - Consistent indentation for subsections\n - All sections properly linked\n - Clear numbering system\n\n3. Navigation\n - All links are lowercase, hyphenated\n - Sections ordered by logical flow\n - Progressive disclosure of information\n\n4. Coverage\n - Technical aspects (development, testing)\n - Process details (workflow, releases)\n - Community aspects (guidelines, support)\n - Legal requirements\n\n5. Maintainability\n - Each section is distinct\n - Easy to update and expand\n - Follows standard markdown practices",
"extensions": [
{
"name": "Developer",
"command": "developer",
"is_builtin": true,
"environmentVariables": [
{
"name": "file_path",
"description": "Path to the CONTRIBUTING.md file",
"required": true
}
]
}
]
}

View File

@@ -0,0 +1,31 @@
{
"id": "developer-github-branch-pr",
"title": "Create a GitHub Branch and a Pull Request",
"description": "Create a new branch, update README, and open a pull request on GitHub",
"category": "technical",
"job": "engineering",
"example_prompt": "Create a new branch called hello-world in my angiejones/goose-demo repository. Update the README.md file to say \"this was written by goose\" and commit it. Open a pull request with your changes.",
"example_result": "I've created a new feature branch and pull request:\n\n1. Branch Creation:\n```bash\n$ git checkout -b feature/user-authentication\n$ git add .\n$ git commit -m \"Add user authentication system\n\n- Implement JWT token handling\n- Add password hashing\n- Create login/logout endpoints\"\n$ git push origin feature/user-authentication\n```\n\n2. Pull Request Details:\n- Title: \"Feature: User Authentication System\"\n- Base: main ← feature/user-authentication\n- Status: Open\n\nDescription:\n```markdown\n## Changes\n- Implemented JWT-based authentication\n- Added secure password hashing using bcrypt\n- Created RESTful login/logout endpoints\n- Added user session management\n\n## Testing\n- Unit tests added for auth controllers\n- Integration tests for login flow\n- Security testing completed\n\n## Checklist\n- [x] Tests passing\n- [x] Security review completed\n- [x] Documentation updated\n```\n\nReviewers have been assigned and the CI pipeline is running.",
"extensions": [
{
"name": "GitHub",
"command": "npx -y @modelcontextprotocol/server-github",
"is_builtin": false,
"environmentVariables": [
{
"name": "GITHUB_PERSONAL_ACCESS_TOKEN",
"description": "<YOUR_TOKEN>",
"required": true
}
]
},
{
"name": "Developer",
"command": "developer",
"is_builtin": true,
"environmentVariables": [
]
}
]
}

View File

@@ -0,0 +1,28 @@
{
"id": "hands-free-coding",
"title": "Hands-free Coding",
"description": "Use your voice to code",
"category": "technical",
"job": "engineering",
"example_prompt": "I'd like to speak instead of typing",
"example_result": "I'll help you code using voice commands. I'm now listening for your voice input.\n\nExample Voice Commands:\n\n\"Create a new Python function called calculate total that takes a list of numbers and returns their sum\"\n\n```python\ndef calculate_total(numbers):\n return sum(numbers)\n```\n\n\"Add input validation to check if the list is empty\"\n\n```python\ndef calculate_total(numbers):\n if not numbers:\n raise ValueError(\"List cannot be empty\")\n return sum(numbers)\n```\n\n\"Add a docstring explaining the function\"\n\n```python\ndef calculate_total(numbers):\n \"\"\"Calculate the sum of a list of numbers.\n \n Args:\n numbers (list): A list of numeric values\n \n Returns:\n float: The sum of all numbers in the list\n \n Raises:\n ValueError: If the input list is empty\n \"\"\"\n if not numbers:\n raise ValueError(\"List cannot be empty\")\n return sum(numbers)\n```\n\n\"Add a test case for the function\"\n\n```python\ndef test_calculate_total():\n # Test normal case\n assert calculate_total([1, 2, 3]) == 6\n \n # Test floating points\n assert calculate_total([1.5, 2.5]) == 4.0\n \n # Test empty list\n try:\n calculate_total([])\n assert False, \"Expected ValueError\"\n except ValueError:\n pass\n```\n\nVoice Command Tips:\n1. Speak clearly and pause between commands\n2. Use programming terms as you would write them\n3. Say \"undo\" to revert last change\n4. Say \"run tests\" to execute test cases\n5. Common commands:\n - \"Create function/class\"\n - \"Add parameter/argument\"\n - \"Import library\"\n - \"Add try-catch block\"\n - \"Create for loop\"\n - \"Add comment\"\n\nI'm still listening. What would you like to code next?",
"extensions": [
{
"name": "Speech",
"command": "uvx -p 3.10.14 speech-mcp@latest",
"is_builtin": false,
"installation_notes": "[PortAudio](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/main/scripts/readme-gen/templates/install_portaudio.tmpl.rst#install-portaudio) is required for PyAudio to capture audio from your microphone",
"environmentVariables": [
]
},
{
"name": "Developer",
"command": "developer",
"is_builtin": true,
"environmentVariables": [
]
}
]
}

View File

@@ -0,0 +1,27 @@
{
"id": "image-resize",
"title": "Resize Image with Aspect Ratio",
"description": "Resize an image while maintaining aspect ratio and quality.",
"category": "productivity",
"job": "design",
"example_prompt": "Resize my image {image_path} to be {width}x{height} pixels. Maintain the aspect ratio and image quality.",
"example_result": "I'll help you resize the image while maintaining its aspect ratio and quality. Here's what I'll do:\n\n1. Load and analyze the original image:\n```python\nfrom PIL import Image\n\n# Open the image\nimg = Image.open('product_photo.jpg')\n\n# Get original dimensions\noriginal_width, original_height = img.size\nprint(f\"Original dimensions: {original_width}x{original_height}\")\n```\n\nOriginal dimensions: 2400x1600\n\n2. Calculate new dimensions preserving aspect ratio:\n```python\ntarget_width = 800\ntarget_height = 600\n\n# Calculate scaling factor\nwidth_ratio = target_width / original_width\nheight_ratio = target_height / original_height\nscale_factor = min(width_ratio, height_ratio)\n\n# Calculate new dimensions\nnew_width = int(original_width * scale_factor)\nnew_height = int(original_height * scale_factor)\n\nprint(f\"New dimensions: {new_width}x{new_height}\")\n```\n\nNew dimensions: 800x533\n\n3. Perform the resize operation:\n```python\n# Resize using high-quality Lanczos resampling\nresized_img = img.resize((new_width, new_height), Image.Resampling.LANCZOS)\n\n# Save with optimal quality settings\nresized_img.save(\n 'product_photo_resized.jpg',\n 'JPEG',\n quality=95,\n optimize=True\n)\n```\n\nImage has been resized and saved as 'product_photo_resized.jpg'\n\nResize Summary:\n- Original size: 2400x1600 pixels\n- Target size: 800x600 pixels\n- Final size: 800x533 pixels\n- Aspect ratio: Maintained (1.5:1)\n- Resampling: Lanczos (high quality)\n- Format: JPEG\n- Quality: 95%\n- Optimization: Enabled\n\nThe image has been resized to fit within the requested dimensions while maintaining its original proportions. I used Lanczos resampling for the highest quality output and saved with optimal JPEG compression settings to preserve image quality.\n\nWould you like me to show you a preview of the resized image?",
"extensions": [
{
"name": "Developer",
"command": "developer",
"is_builtin": true,
"environmentVariables": [
]
},
{
"name": "Computer Controller",
"command": "computercontroller",
"is_builtin": true,
"environmentVariables": [
]
}
]
}

View File

@@ -0,0 +1,24 @@
{
"id": "data-incident-analysis",
"title": "Analyze PagerDuty Incident Patterns",
"description": "Analyze incident data to identify patterns and opportunities for reducing alert noise",
"category": "technical",
"job": "engineering",
"featured": true,
"example_prompt": "Analyze the PagerDuty incident activity data to:\n1. Identify most frequent issues and their patterns\n2. Calculate incident frequencies and trends\n3. Determine if issues are ongoing or resolved\n4. Highlight top opportunities to reduce alert noise\n5. Generate recommendations for alert optimization\n\nThe analysis should focus on actionable insights to reduce unnecessary pages and improve on-call experience.",
"example_result": "I've analyzed the PagerDuty incident data. Here's the comprehensive analysis:\n\n# Incident Analysis Report\n\n## 1. High-Frequency Issues\n\n```sql\nSELECT \n incident_type,\n COUNT(*) as occurrence_count,\n AVG(resolution_time_minutes) as avg_resolution_time\nFROM incidents\nGROUP BY incident_type\nORDER BY occurrence_count DESC\nLIMIT 5;\n```\n\nTop 5 Most Frequent Issues:\n1. CPU Usage Spike (127 incidents)\n - Peak times: 2-4 AM UTC\n - Avg resolution: 12 minutes\n - 92% auto-resolved\n\n2. Memory Warning (89 incidents)\n - Consistent pattern on app-server-03\n - Avg resolution: 8 minutes\n - 95% auto-resolved\n\n3. API Response Time (67 incidents)\n - Correlated with batch job schedule\n - Avg resolution: 45 minutes\n - 40% required manual intervention\n\n4. Disk Space Warning (52 incidents)\n - Recurring on logging servers\n - Avg resolution: 30 minutes\n - 70% resolved by log rotation\n\n5. Connection Timeout (43 incidents)\n - Database-related\n - Avg resolution: 28 minutes\n - 60% required manual intervention\n\n## 2. Temporal Analysis\n\n```python\nimport pandas as pd\nimport matplotlib.pyplot as plt\n\n# Incident frequency by hour\ndf['hour'] = pd.to_datetime(df['timestamp']).dt.hour\nhourlyCounts = df.groupby('hour')['incident_id'].count()\n\n# Plot distribution\nplt.figure(figsize=(12, 6))\nplt.bar(hourlyCounts.index, hourlyCounts.values)\nplt.title('Incident Distribution by Hour')\nplt.xlabel('Hour (UTC)')\nplt.ylabel('Number of Incidents')\n```\n\nKey Patterns:\n- 68% of alerts occur between 00:00-06:00 UTC\n- Wednesday shows highest incident rate\n- Month-end has 2.5x normal incident volume\n\n## 3. Issue Status Summary\n\nActive Issues:\n- Memory leaks on app-server-03\n - Status: Under investigation\n - Impact: Medium\n - ETA: 48 hours\n\n- API response degradation\n - Status: Partially mitigated\n - Impact: Low\n - ETA: 24 hours\n\nResolved Issues:\n- Database connection timeouts\n - Resolution: Connection pool optimization\n - Prevention: Added connection monitoring\n\n- Disk space warnings\n - Resolution: Automated log rotation\n - Prevention: Predictive cleanup jobs\n\n## 4. Alert Noise Reduction Opportunities\n\n1. High-Impact Opportunities:\n ```\n CPU Usage Alerts:\n - Current: 127 alerts/month\n - Potential: 15 alerts/month\n - Reduction: 88%\n - Effort: Low\n ```\n\n2. Medium-Impact Opportunities:\n ```\n Memory Warnings:\n - Current: 89 alerts/month\n - Potential: 20 alerts/month\n - Reduction: 78%\n - Effort: Medium\n ```\n\n## 5. Recommendations\n\n1. Immediate Actions:\n```yaml\n- Update CPU threshold:\n from: 80% for 1 minute\n to: 90% for 5 minutes\n impact: -85% alerts\n\n- Implement memory alert aggregation:\n window: 15 minutes\n condition: Same host\n impact: -70% alerts\n```\n\n2. Short-term Improvements:\n```yaml\n- Add context to API alerts:\n - Include active connections\n - Add recent deploy info\n - Show batch job status\n\n- Enhance disk space monitoring:\n - Predict fill rate\n - Auto-trigger cleanup\n - Weekly trend analysis\n```\n\n3. Long-term Projects:\n```yaml\n- Implement ML-based anomaly detection:\n priority: High\n effort: Large\n benefits:\n - 60% false positive reduction\n - Automated threshold adjustment\n - Pattern recognition\n\n- Develop unified alert dashboard:\n priority: Medium\n effort: Medium\n features:\n - Cross-service correlation\n - Historical pattern view\n - One-click suppression\n```\n\n## Implementation Plan\n\n1. Week 1-2:\n - Adjust CPU thresholds\n - Configure alert aggregation\n - Update runbooks\n\n2. Week 3-4:\n - Deploy enhanced monitoring\n - Test new alert rules\n - Train on-call team\n\n3. Month 2:\n - Begin ML implementation\n - Collect baseline metrics\n - Develop dashboard\n\nExpected Outcomes:\n- 75% reduction in non-actionable alerts\n- 40% decrease in MTTR\n- 60% improvement in on-call satisfaction\n\nWould you like me to generate detailed configuration changes for any specific recommendation?",
"extensions": [
{
"name": "Computer Controller",
"command": "computercontroller",
"is_builtin": true,
"environmentVariables": []
},
{
"name": "Developer",
"command": "developer",
"is_builtin": true,
"environmentVariables": []
}
]
}

View File

@@ -0,0 +1,19 @@
{
"id": "java-kotlin-test-migration",
"title": "Migrate Java Tests to Kotlin",
"description": "Select Java tests and migrate them to Kotlin, including compilation verification",
"category": "technical",
"job": "engineering",
"example_prompt": "Please help migrate Java tests to Kotlin by:\n1. Finding and selecting 5 Java test files\n2. Converting each test to Kotlin while maintaining functionality\n3. Removing original Java files\n4. Verifying compilation with gradle\n5. Generating migration diffs\n\nFor each test file:\n- Create equivalent Kotlin test\n- Maintain test structure and assertions\n- Verify compilation success\n- Generate diff for review",
"example_result": "I'll help you migrate the Java tests to Kotlin. Here's the migration process for one test file:\n\nOriginal Java Test:\n```java\n// UserServiceTest.java\nimport org.junit.jupiter.api.Test;\nimport static org.junit.jupiter.api.Assertions.*;\nimport static org.mockito.Mockito.*;\n\npublic class UserServiceTest {\n private final UserRepository userRepository = mock(UserRepository.class);\n private final EmailService emailService = mock(EmailService.class);\n private final UserService userService = new UserService(userRepository, emailService);\n\n @Test\n public void createUser_WithValidData_ShouldSucceed() {\n // Given\n UserDTO userDTO = new UserDTO(\"john@example.com\", \"John Doe\");\n User user = new User(userDTO.getEmail(), userDTO.getName());\n when(userRepository.findByEmail(userDTO.getEmail())).thenReturn(null);\n when(userRepository.save(any(User.class))).thenReturn(user);\n\n // When\n User result = userService.createUser(userDTO);\n\n // Then\n assertNotNull(result);\n assertEquals(userDTO.getEmail(), result.getEmail());\n assertEquals(userDTO.getName(), result.getName());\n verify(emailService).sendWelcomeEmail(user);\n }\n\n @Test\n public void createUser_WithExistingEmail_ShouldThrowException() {\n // Given\n UserDTO userDTO = new UserDTO(\"existing@example.com\", \"John Doe\");\n when(userRepository.findByEmail(userDTO.getEmail()))\n .thenReturn(new User(userDTO.getEmail(), \"Existing User\"));\n\n // When/Then\n assertThrows(UserAlreadyExistsException.class, () -> {\n userService.createUser(userDTO);\n });\n verify(userRepository, never()).save(any());\n verify(emailService, never()).sendWelcomeEmail(any());\n }\n}\n```\n\nMigrated Kotlin Test:\n```kotlin\n// UserServiceTest.kt\nimport org.junit.jupiter.api.Test\nimport org.junit.jupiter.api.assertThrows\nimport org.mockito.kotlin.*\nimport kotlin.test.assertEquals\nimport kotlin.test.assertNotNull\n\nclass UserServiceTest {\n private val userRepository: UserRepository = mock()\n private val emailService: EmailService = mock()\n private val userService = UserService(userRepository, emailService)\n\n @Test\n fun `create user with valid data should succeed`() {\n // Given\n val userDTO = UserDTO(email = \"john@example.com\", name = \"John Doe\")\n val user = User(email = userDTO.email, name = userDTO.name)\n whenever(userRepository.findByEmail(userDTO.email)).thenReturn(null)\n whenever(userRepository.save(any())).thenReturn(user)\n\n // When\n val result = userService.createUser(userDTO)\n\n // Then\n assertNotNull(result)\n assertEquals(userDTO.email, result.email)\n assertEquals(userDTO.name, result.name)\n verify(emailService).sendWelcomeEmail(user)\n }\n\n @Test\n fun `create user with existing email should throw exception`() {\n // Given\n val userDTO = UserDTO(email = \"existing@example.com\", name = \"John Doe\")\n whenever(userRepository.findByEmail(userDTO.email))\n .thenReturn(User(email = userDTO.email, name = \"Existing User\"))\n\n // When/Then\n assertThrows<UserAlreadyExistsException> {\n userService.createUser(userDTO)\n }\n verify(userRepository, never()).save(any())\n verify(emailService, never()).sendWelcomeEmail(any())\n }\n}\n```\n\nKey Changes Made:\n1. File Extension: .java → .kt\n2. Class Declaration: Removed 'public'\n3. Test Methods:\n - Removed 'public void'\n - Added backtick names for readability\n - Used Kotlin's string templates\n4. Assertions:\n - Imported from kotlin.test\n - Used Kotlin's assertThrows\n5. Mocking:\n - Used mockito-kotlin extensions\n - Replaced when/thenReturn with whenever\n6. Properties:\n - Converted to Kotlin property syntax\n - Used constructor parameter properties\n7. Named Parameters:\n - Added for better readability\n - Especially in object creation\n\nVerification Steps:\n```bash\n# Compile and test\n./gradlew :service:test --tests \"com.example.service.UserServiceTest\"\n\n# Test output\n> Task :service:test\nBUILD SUCCESSFUL in 3s\n4 actionable tasks: 4 executed\n```\n\nMigration Summary:\n1. ✅ Syntax converted to idiomatic Kotlin\n2. ✅ All tests passing\n3. ✅ Maintained test coverage\n4. ✅ Improved readability with Kotlin features\n5. ✅ Verified with Gradle build\n\nWould you like me to proceed with migrating the remaining test files?",
"extensions": [
{
"name": "Developer",
"command": "developer",
"is_builtin": true,
"environmentVariables": [
]
}
]
}

View File

@@ -0,0 +1,27 @@
{
"id": "developer-jetbrains-java-upgrade",
"title": "Upgrade Java Project",
"description": "Upgrade Java project to latest LTS version and refactor using newer features",
"category": "technical",
"job": "engineering",
"example_prompt": "Using the JetBrains IDE tools, upgrade this project to use the latest Java LTS version and refactor the codebase to use newer Java features where beneficial.",
"example_result": "I'll help you upgrade the Java project to the latest LTS version (Java 21) and refactor the code. Here's the process:\n\n1. Project Configuration Updates:\n\n```xml\n<!-- pom.xml -->\n<properties>\n <java.version>21</java.version>\n <maven.compiler.source>${java.version}</maven.compiler.source>\n <maven.compiler.target>${java.version}</maven.compiler.target>\n</properties>\n```\n\n2. Example Refactoring - Before and After:\n\n```java\n// Before: Java 8 style code\npublic class OrderProcessor {\n private final List<Order> orders = new ArrayList<>();\n \n public Optional<Order> findOrder(String id) {\n return orders.stream()\n .filter(order -> order.getId().equals(id))\n .findFirst();\n }\n \n public Map<String, List<Order>> groupByCustomer() {\n Map<String, List<Order>> result = new HashMap<>();\n for (Order order : orders) {\n String customerId = order.getCustomerId();\n if (!result.containsKey(customerId)) {\n result.put(customerId, new ArrayList<>());\n }\n result.get(customerId).add(order);\n }\n return result;\n }\n \n public double calculateTotal(List<Order> orders) {\n double total = 0;\n for (Order order : orders) {\n total += order.getAmount();\n }\n return total;\n }\n}\n```\n\n```java\n// After: Java 21 features\npublic class OrderProcessor {\n private final List<Order> orders = new ArrayList<>();\n \n public Optional<Order> findOrder(String id) {\n return orders.stream()\n .filter(order -> order.id().equals(id)) // Record accessor\n .findFirst();\n }\n \n public Map<String, List<Order>> groupByCustomer() {\n return orders.stream()\n .collect(Collectors.groupingBy(Order::customerId)); // Method reference\n }\n \n public double calculateTotal(List<Order> orders) {\n return orders.stream()\n .mapToDouble(Order::amount)\n .sum();\n }\n \n // New pattern matching for switch\n public String getOrderStatus(Order order) {\n return switch (order.status()) {\n case PENDING when order.amount() > 1000 -> \"High-value pending\";\n case PENDING -> \"Pending\";\n case SHIPPED -> \"Shipped\";\n case DELIVERED -> \"Delivered\";\n case null -> throw new IllegalStateException(\"Status cannot be null\");\n };\n }\n \n // Records for DTOs\n public record Order(\n String id,\n String customerId,\n double amount,\n Status status\n ) {}\n \n public enum Status { PENDING, SHIPPED, DELIVERED }\n \n // Text blocks for SQL queries\n private static final String FIND_ORDERS_SQL = \"\"\"\n SELECT o.id, o.customer_id, o.amount, o.status\n FROM orders o\n WHERE o.customer_id = ?\n AND o.status IN (?, ?)\n ORDER BY o.created_at DESC\n \"\"\";\n}\n```\n\n3. Build Configuration Updates:\n\n```groovy\n// build.gradle\nplugins {\n id 'java'\n id 'org.springframework.boot' version '3.2.0'\n}\n\njava {\n sourceCompatibility = JavaVersion.VERSION_21\n targetCompatibility = JavaVersion.VERSION_21\n}\n\ndependencies {\n // Updated dependencies for Java 21\n implementation 'org.springframework.boot:spring-boot-starter:3.2.0'\n testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0'\n}\n```\n\n4. IDE Configuration:\n\n```json\n// .idea/misc.xml\n{\n \"project-jdk-name\": \"21\",\n \"project-jdk-type\": \"JavaSDK\",\n \"language-level\": \"21\"\n}\n```\n\n5. Migration Report:\n\nFeatures Upgraded:\n- Records for data classes\n- Pattern matching for switch\n- Text blocks for multiline strings\n- Enhanced type inference\n- Sealed classes where applicable\n- Virtual threads for concurrent operations\n\nStatistics:\n```\nFiles Modified: 47\nNew Features Used:\n- Records: 12 classes converted\n- Pattern Matching: 8 switch statements updated\n- Text Blocks: 15 SQL queries converted\n- Sealed Classes: 3 hierarchies implemented\n- Virtual Threads: 2 executors updated\n```\n\n6. Performance Impact:\n```\nBenchmark Results (JMH):\n- Startup Time: -15%\n- Memory Usage: -22%\n- Response Time: -8%\n- Throughput: +12%\n```\n\n7. Verification Steps:\n```bash\n# Compile and test\n./gradlew clean build\n\n# Run tests\n./gradlew test\n\n# Check for Java 21 compatibility\n./gradlew dependencyInsight --dependency java\n```\n\nWould you like me to:\n1. Show more refactoring examples?\n2. Generate migration scripts?\n3. Run compatibility tests?\n4. Update CI/CD configurations?",
"extensions": [
{
"name": "JetBrains",
"command": "npx -y @jetbrains/mcp-proxy",
"is_builtin": false,
"environmentVariables": [
]
},
{
"name": "Developer",
"command": "developer",
"is_builtin": true,
"environmentVariables": [
]
}
]
}

View File

@@ -0,0 +1,19 @@
{
"id": "developer-js-express-setup",
"title": "Scaffold JavaScript Boilerplate",
"description": "Initialize a new JavaScript project with Express, Mongoose, Nodemon, and Dotenv",
"category": "technical",
"job": "engineering",
"example_prompt": "Set up a new JavaScript project with Express, Mongoose, Nodemon, and Dotenv. Fetch the latest package versions, generate a README with those versions, and initialize Git",
"example_result": "I'll help you set up a new JavaScript project with Express and related packages. Here's the step-by-step process:\n\n1. Initialize Project and Install Dependencies:\n\n```bash\n# Initialize project\nnpm init -y\n\n# Install dependencies\nnpm install express@4.18.2 mongoose@8.0.3 dotenv@16.3.1\nnpm install --save-dev nodemon@3.0.2\n```\n\n2. Project Structure:\n\n```\nproject-root/\n├── src/\n│ ├── config/\n│ │ └── database.js\n│ ├── models/\n│ │ └── User.js\n│ ├── routes/\n│ │ └── api.js\n│ ├── middleware/\n│ │ └── auth.js\n│ └── app.js\n├── .env\n├── .gitignore\n├── package.json\n└── README.md\n```\n\n3. Configuration Files:\n\n```javascript\n// src/config/database.js\nconst mongoose = require('mongoose');\n\nconst connectDB = async () => {\n try {\n const conn = await mongoose.connect(process.env.MONGODB_URI, {\n useNewUrlParser: true,\n useUnifiedTopology: true\n });\n console.log(`MongoDB Connected: ${conn.connection.host}`);\n } catch (error) {\n console.error(`Error: ${error.message}`);\n process.exit(1);\n }\n};\n\nmodule.exports = connectDB;\n```\n\n4. Main Application File:\n\n```javascript\n// src/app.js\nrequire('dotenv').config();\nconst express = require('express');\nconst connectDB = require('./config/database');\n\nconst app = express();\n\n// Connect to database\nconnectDB();\n\n// Middleware\napp.use(express.json());\napp.use(express.urlencoded({ extended: true }));\n\n// Routes\napp.use('/api', require('./routes/api'));\n\n// Error handling\napp.use((err, req, res, next) => {\n console.error(err.stack);\n res.status(500).send('Something broke!');\n});\n\nconst PORT = process.env.PORT || 3000;\napp.listen(PORT, () => {\n console.log(`Server is running on port ${PORT}`);\n});\n```\n\n5. Example Route and Model:\n\n```javascript\n// src/models/User.js\nconst mongoose = require('mongoose');\n\nconst userSchema = new mongoose.Schema({\n username: {\n type: String,\n required: true,\n unique: true\n },\n email: {\n type: String,\n required: true,\n unique: true\n },\n createdAt: {\n type: Date,\n default: Date.now\n }\n});\n\nmodule.exports = mongoose.model('User', userSchema);\n```\n\n```javascript\n// src/routes/api.js\nconst express = require('express');\nconst router = express.Router();\nconst User = require('../models/User');\n\nrouter.post('/users', async (req, res) => {\n try {\n const user = new User(req.body);\n await user.save();\n res.status(201).json(user);\n } catch (error) {\n res.status(400).json({ error: error.message });\n }\n});\n\nmodule.exports = router;\n```\n\n6. Environment Configuration:\n\n```env\n# .env\nPORT=3000\nMONGODB_URI=mongodb://localhost:27017/myapp\nNODE_ENV=development\n```\n\n7. Package.json Scripts:\n\n```json\n{\n \"name\": \"express-mongoose-starter\",\n \"version\": \"1.0.0\",\n \"scripts\": {\n \"start\": \"node src/app.js\",\n \"dev\": \"nodemon src/app.js\",\n \"test\": \"jest\"\n },\n \"dependencies\": {\n \"express\": \"^4.18.2\",\n \"mongoose\": \"^8.0.3\",\n \"dotenv\": \"^16.3.1\"\n },\n \"devDependencies\": {\n \"nodemon\": \"^3.0.2\"\n }\n}\n```\n\n8. Git Configuration:\n\n```bash\n# Initialize Git\ngit init\n\n# Create .gitignore\ncat > .gitignore << EOL\nnode_modules/\n.env\n.DS_Store\nEOL\n\n# Initial commit\ngit add .\ngit commit -m \"Initial commit: Express project setup\"\n```\n\n9. README.md:\n\n```markdown\n# Express Mongoose Starter\n\nA modern Express.js application with MongoDB integration.\n\n## Features\n\n- Express.js 4.18.2 web framework\n- MongoDB integration with Mongoose 8.0.3\n- Environment variable support with Dotenv 16.3.1\n- Development server with Nodemon 3.0.2\n- Structured project layout\n- Basic error handling\n- API route examples\n\n## Getting Started\n\n1. Clone the repository\n2. Install dependencies: `npm install`\n3. Create .env file with required variables\n4. Start development server: `npm run dev`\n\n## Available Scripts\n\n- `npm start`: Production mode\n- `npm run dev`: Development mode with hot reload\n- `npm test`: Run tests\n\n## Project Structure\n\n[Project structure diagram as shown above]\n\n## API Endpoints\n\n- POST /api/users: Create new user\n- [Add more endpoints as developed]\n\n## Environment Variables\n\n- PORT: Server port (default: 3000)\n- MONGODB_URI: MongoDB connection string\n- NODE_ENV: Environment mode\n```\n\nThe project is now set up! Would you like me to:\n1. Add authentication middleware?\n2. Set up testing with Jest?\n3. Add more API endpoints?\n4. Configure CI/CD?",
"extensions": [
{
"name": "Developer",
"command": "developer",
"is_builtin": true,
"environmentVariables": [
]
}
]
}

View File

@@ -0,0 +1,25 @@
{
"id": "voyp-make-call",
"title": "Make a Phone Call",
"description": "Have goose place a phone call",
"category": "productivity",
"job": "operations",
"featured": true,
"example_prompt": "Please call the number [phone number] and tell a joke",
"example_result": "I'll help you make a phone call using VOYP. Here's what will happen:\n\n1. Call Initiation:\n```\nInitiating call to: +1 (XXX) XXX-XXXX\nStatus: Connecting...\n```\n\n2. Call Connected:\n```\nCall Status: Connected\nDuration: 00:00:03\n```\n\n3. Voice Interaction:\n```\nGoose: \"Hi there! I've got a programming joke for you:\n\nWhy do programmers always mix up Christmas and Halloween?\n\nBecause Oct 31 equals Dec 25!\"\n```\n\n4. Call Summary:\n```\nCall completed successfully\n- Duration: 32 seconds\n- Quality: Good\n- Recording: Available at voyp://calls/2025/03/31/call_12345.mp3\n```\n\nWould you like me to:\n1. Make another call?\n2. Tell a different joke?\n3. Save the recording?\n4. Schedule a follow-up call?",
"extensions": [
{
"name": "VOYP",
"command": "npx -y @voyp-mcp@0.1.0",
"is_builtin": false,
"link": "https://github.com/paulotaylor/voyp-mcp",
"environmentVariables": [
{
"name": "VOYP_API_KEY",
"description": "Your VOYP API Key",
"required": true
}
]
}
]
}

View File

@@ -0,0 +1,37 @@
{
"id": "business-marketing-budget-review",
"title": "Marketing Budget Review Meeting Prep",
"description": "Prepare for marketing budget review meeting by analyzing Google Drive documents",
"category": "business",
"job": "marketing-content",
"example_prompt": "I have an important marketing budget review meeting in 30 minutes and I need your help getting prepared. I have several documents in my Google Drive from our previous meetings and planning sessions. Could you help me by:\n\n1. Finding all relevant documents about our marketing budget and performance\n2. Giving me a quick summary of our Q1 performance\n3. Highlighting the key decisions we need to make about the marketing automation tool and video production\n4. Identifying any outstanding action items from our last meeting",
"example_result": "I'll help you prepare for your marketing budget review meeting. Here's what I found:\n\n## 1. Relevant Documents Located\n\n```\nFound 4 relevant documents:\n1. Q1_2025_Marketing_Budget_Report.xlsx\n2. Marketing_Team_Meeting_Minutes_March15.docx\n3. Marketing_Automation_Tool_Comparison.pdf\n4. Video_Production_Quotes_2025.xlsx\n```\n\n## 2. Q1 2025 Performance Summary\n\n```\nBudget Overview:\n- Total Budget: $250,000\n- Spent: $228,500 (91.4%)\n- Remaining: $21,500\n\nKey Metrics vs Targets:\n✅ Lead Generation: 2,450 (Target: 2,000)\n✅ Cost per Lead: $48 (Target: $55)\n✅ Conversion Rate: 3.8% (Target: 3.5%)\n❌ Customer Acquisition Cost: $380 (Target: $350)\n```\n\nChannel Performance:\n```\nPaid Search:\n- Budget: $80,000\n- Spent: $78,500\n- ROI: 2.8x\n\nSocial Media:\n- Budget: $60,000\n- Spent: $55,000\n- ROI: 3.2x\n\nContent Marketing:\n- Budget: $45,000\n- Spent: $42,000\n- ROI: 2.5x\n\nEvents:\n- Budget: $65,000\n- Spent: $53,000\n- ROI: 1.8x\n```\n\n## 3. Key Decisions Needed\n\n### Marketing Automation Tool\n```\nOptions on the table:\n1. HubSpot Enterprise\n - Cost: $38,000/year\n - Pros: Full integration, better reporting\n - Cons: Higher cost, migration needed\n\n2. Marketo\n - Cost: $29,000/year\n - Pros: Advanced features, good API\n - Cons: Steeper learning curve\n\n3. Current Tool + Upgrades\n - Cost: $22,000/year\n - Pros: No migration, team familiar\n - Cons: Missing key features\n```\n\n### Video Production\n```\nProposals to consider:\n1. In-house Team\n - Setup Cost: $45,000\n - Annual Cost: $120,000\n - Output: 8-10 videos/month\n\n2. Agency Partnership\n - Monthly Retainer: $8,500\n - Per Video: $2,000-$3,500\n - Output: 4-6 videos/month\n\n3. Hybrid Model\n - Basic in-house: $25,000\n - Agency support: $5,000/month\n - Output: 6-8 videos/month\n```\n\n## 4. Outstanding Action Items\n\nFrom March 15th Meeting:\n```\nUrgent (Due This Week):\n1. ⏰ Submit Q2 budget revision by Wednesday\n2. ⏰ Finalize marketing automation vendor shortlist\n\nHigh Priority:\n3. 📊 Complete ROI analysis for video production options\n4. 📈 Update campaign tracking for new privacy requirements\n\nPending Decisions:\n5. 🤝 Agency contract renewal (due in 45 days)\n6. 💰 Budget reallocation for Q2 events\n```\n\n## Meeting Preparation Tips\n\n1. Key Discussion Points:\n```\n- Q1 overspend in paid search (-$3,500)\n- Successful social media experiments (+15% engagement)\n- Event budget underutilization (opportunity for reallocation)\n- Marketing automation tool ROI projections\n```\n\n2. Supporting Data to Reference:\n```\n- Lead quality scores by channel\n- Automation tool comparison matrix\n- Video production cost-benefit analysis\n- Updated marketing team structure\n```\n\n3. Recommended Agenda:\n```\n1. Q1 Performance Review (15 mins)\n2. Marketing Automation Decision (20 mins)\n3. Video Production Strategy (15 mins)\n4. Q2 Budget Adjustments (10 mins)\n```\n\nWould you like me to:\n1. Create a presentation with these key points?\n2. Generate a detailed cost comparison?\n3. Draft follow-up action items?\n4. Set up calendar reminders for deadlines?",
"extensions": [
{
"name": "Google Drive",
"command": "npx -y @modelcontextprotocol/server-gdrive",
"is_builtin": false,
"link": "https://block.github.io/goose/v1/extensions/google-drive",
"environmentVariables": [
{
"name": "GDRIVE_OAUTH_PATH",
"description": "/Users/<username>/.config/gcp-oauth.keys.json / ",
"required": true
},
{
"name": "GDRIVE_CREDENTIALS_PATH",
"description": "/Users/<username>/.config/.gdrive-server-credentials.json /",
"required": true
}
]
},
{
"name": "Computer Controller",
"command": "computercontroller",
"is_builtin": true,
"environmentVariables": [
]
}
]
}

View File

@@ -0,0 +1,27 @@
{
"id": "multi-project-security-audit",
"title": "Multi-Project Security Audit",
"description": "Perform comprehensive security analysis across multiple projects to identify and fix vulnerabilities",
"category": "technical",
"job": "engineering",
"example_prompt": "Please analyze these codebases for security issues:\n\n1. Project Directories:\n- [Directory Path 1]\n- [Directory Path 2]\n- [Directory Path 3]\n\n2. Look for:\n- Hardcoded credentials (API keys, passwords, secrets)\n- Insecure cryptographic practices\n- SQL injection vulnerabilities\n- Exposed configuration files\n- Insecure session handling\n- Logging of sensitive data\n- Outdated dependencies\n- Unsafe authentication methods\n\n3. For each vulnerability found:\n- Show the problematic code\n- Explain the security risk\n- Provide a secure implementation\n- Help apply and test the fixes\n\n4. Create a detailed security report including:\n- Critical findings by project\n- Risk severity levels\n- File locations and snippets\n- Applied fixes and improvements\n- Verification steps taken",
"example_result": "# Security Audit Report\n\n## Executive Summary\n\nAudit completed across 3 projects. Found:\n- 4 Critical vulnerabilities\n- 7 High-risk issues\n- 12 Medium-risk issues\n- 8 Low-risk concerns\n\n## Project 1: E-commerce API\n\n### Critical Findings\n\n1. Hardcoded AWS Credentials\n```python\n# /app/config/aws.py - Line 23\n# VULNERABLE CODE\naws_access_key = 'AKIA1234567890ABCDEF'\naws_secret_key = 'abcd1234EFGH5678ijkl9012mnop3456QRST7890'\n\n# SECURE IMPLEMENTATION\naws_access_key = os.environ.get('AWS_ACCESS_KEY')\naws_secret_key = os.environ.get('AWS_SECRET_KEY')\n\nif not all([aws_access_key, aws_secret_key]):\n raise ConfigurationError('AWS credentials not properly configured')\n```\n\nRisk: Critical\n- Exposed credentials in version control\n- Potential unauthorized AWS access\n- Financial and data security implications\n\nFix Applied:\n```bash\n# 1. Removed credentials from code\n# 2. Added to environment variables\n# 3. Updated deployment configurations\n# 4. Rotated AWS keys\n```\n\n2. SQL Injection Vulnerability\n```python\n# /app/models/user.py - Line 156\n# VULNERABLE CODE\ndef find_by_username(username):\n query = f\"SELECT * FROM users WHERE username = '{username}'\"\n return db.execute(query)\n\n# SECURE IMPLEMENTATION\ndef find_by_username(username):\n query = \"SELECT * FROM users WHERE username = %s\"\n return db.execute(query, (username,))\n```\n\nRisk: Critical\n- SQL injection possible\n- Potential data breach\n- Unauthorized data access\n\n## Project 2: Admin Dashboard\n\n### High Risk Findings\n\n1. Insecure Session Configuration\n```javascript\n// /src/config/session.js - Line 45\n// VULNERABLE CODE\napp.use(session({\n secret: 'my-secret-key',\n resave: true,\n saveUninitialized: true,\n cookie: { secure: false }\n}));\n\n// SECURE IMPLEMENTATION\napp.use(session({\n secret: process.env.SESSION_SECRET,\n resave: false,\n saveUninitialized: false,\n cookie: {\n secure: process.env.NODE_ENV === 'production',\n httpOnly: true,\n sameSite: 'strict',\n maxAge: 3600000 // 1 hour\n }\n}));\n```\n\n2. Outdated Dependencies\n```json\n// package.json\n{\n \"dependencies\": {\n \"express\": \"4.16.1\", // Vulnerable version\n \"moment\": \"2.24.0\", // Known security issues\n \"lodash\": \"4.17.15\" // Multiple CVEs\n }\n}\n```\n\nUpdated to:\n```json\n{\n \"dependencies\": {\n \"express\": \"4.18.2\",\n \"moment\": \"2.29.4\",\n \"lodash\": \"4.17.21\"\n }\n}\n```\n\n## Project 3: Mobile API\n\n### High Risk Findings\n\n1. Insecure Password Hashing\n```java\n// /src/main/java/com/example/auth/PasswordUtil.java\n// VULNERABLE CODE\npublic String hashPassword(String password) {\n return DigestUtils.md5Hex(password);\n}\n\n// SECURE IMPLEMENTATION\npublic String hashPassword(String password) {\n return BCrypt.hashpw(password, BCrypt.gensalt(12));\n}\n```\n\n2. Sensitive Data Exposure\n```java\n// /src/main/java/com/example/logging/AuditLogger.java\n// VULNERABLE CODE\nlogger.info(\"User login: \" + username + \", password: \" + password);\n\n// SECURE IMPLEMENTATION\nlogger.info(\"User login attempt: {}\" username);\n```\n\n## Applied Security Improvements\n\n1. Dependency Updates\n```bash\n# Updated all projects to use latest secure versions\nnpm audit fix\ncomposer update\nmvn versions:use-latest-versions\n```\n\n2. Security Headers\n```javascript\n// Added security headers to all projects\napp.use(helmet());\napp.use(hpp());\napp.use(cors(corsOptions));\n```\n\n3. Input Validation\n```python\n# Added request validation\nfrom marshmallow import Schema, fields\n\nclass UserSchema(Schema):\n username = fields.Str(required=True, validate=validate.Length(min=3))\n email = fields.Email(required=True)\n```\n\n## Verification Steps\n\n1. Automated Testing\n```bash\n# Run security scans\nnpm audit\nbandit -r .\nSonarQube analysis\n\n# Run penetration tests\nOWASP ZAP scan\nBurp Suite tests\n```\n\n2. Manual Testing\n```\n✓ SQL injection attempts\n✓ XSS payload testing\n✓ CSRF token verification\n✓ Session handling checks\n✓ Password policy enforcement\n```\n\n## Recommendations\n\n1. Immediate Actions:\n```\n- Rotate all exposed credentials\n- Update vulnerable dependencies\n- Enable WAF rules\n- Implement security headers\n```\n\n2. Short-term Improvements:\n```\n- Set up automated security scanning\n- Implement SAST/DAST in CI/CD\n- Add security test cases\n- Update security documentation\n```\n\n3. Long-term Strategy:\n```\n- Regular security training\n- Quarterly security audits\n- Threat modeling for new features\n- Bug bounty program\n```\n\nWould you like me to:\n1. Generate security patches?\n2. Create Jira tickets?\n3. Update security documentation?\n4. Schedule follow-up review?",
"extensions": [
{
"name": "Filesystem",
"command": "npx -y @modelcontextprotocol/server-filesystem",
"is_builtin": false,
"environmentVariables": [
]
},
{
"name": "Developer",
"command": "developer",
"is_builtin": true,
"environmentVariables": [
]
}
]
}

View File

@@ -0,0 +1,36 @@
{
"id": "data-name-column-split",
"title": "Clean Spreadsheet Data",
"description": "Automatically organize messy data by splitting and reformatting columns",
"category": "productivity",
"job": "data-analytics",
"example_prompt": "I'll help you split the names in Column C into separate First Name and Last Name columns. Let me analyze and modify your spreadsheet:\n\n1. First, I'll check the current structure of your spreadsheet\n2. Then I'll create a script to:\n - Read the full names from Column C\n - Split each name into first and last components\n - Keep the first name in Column C\n - Add the last names in Column D\n3. Finally, I'll save the changes back to your file\n\nPlease provide the path to your Excel file and I'll help you split the names.",
"example_result": "I've analyzed your spreadsheet and will help split the names. Here's what I found and what I'll do:\n\n1. Current Structure Analysis:\n```\nSheet: Customer Data\nColumn C (Full Name): Contains 458 rows of data\nSample values:\n- John Smith\n- Mary Jane Wilson\n- Robert J. Anderson\n- Sarah Jean-Baptiste\n- O'Connor, Patrick\n```\n\n2. Data Cleaning Script:\n\n```python\nimport pandas as pd\n\ndef clean_and_split_names(df):\n # Copy original data\n df['Original Name'] = df['Full Name']\n \n # Handle reversed names (Last, First)\n df['Full Name'] = df['Full Name'].apply(lambda x: \n ' '.join(reversed(x.split(', '))) if ',' in x else x)\n \n # Split names into components\n def split_name(name):\n parts = name.split()\n if len(parts) == 1:\n return [parts[0], '']\n elif len(parts) == 2:\n return parts\n else:\n # Handle middle names/initials\n return [parts[0], ' '.join(parts[1:])]\n \n # Apply splitting\n df[['First Name', 'Last Name']] = pd.DataFrame(\n df['Full Name'].apply(split_name).tolist(), \n index=df.index\n )\n \n return df\n\n# Read Excel file\ndf = pd.read_excel('customer_data.xlsx')\n\n# Process names\ndf = clean_and_split_names(df)\n\n# Save changes\ndf.to_excel('customer_data_updated.xlsx', index=False)\n```\n\n3. Results Summary:\n```\nProcessed 458 names:\n- Successfully split: 445\n- Special cases handled: 13\n - Hyphenated surnames: 4\n - Multiple surnames: 6\n - Single names: 2\n - Reversed format: 1\n```\n\n4. Sample Results:\n```\nBefore | After\n-------|-----------------------------------------------\nFull Name | First Name | Last Name | Original Name\n----------|------------|-----------|---------------\nJohn Smith | John | Smith | John Smith\nMary Jane Wilson | Mary | Jane Wilson | Mary Jane Wilson\nRobert J. Anderson | Robert | J. Anderson | Robert J. Anderson\nSarah Jean-Baptiste | Sarah | Jean-Baptiste | Sarah Jean-Baptiste\nO'Connor, Patrick | Patrick | O'Connor | O'Connor, Patrick\n```\n\n5. Data Quality Checks:\n```\n✓ No empty cells created\n✓ Special characters preserved\n✓ Original data backed up\n✓ Formatting maintained\n✓ Column headers properly set\n```\n\n6. File Updates:\n```\n1. Added new columns:\n - Column C: First Name\n - Column D: Last Name\n - Column E: Original Name (backup)\n\n2. Updated column headers\n3. Applied consistent formatting\n4. Added data validation\n```\n\nWould you like me to:\n1. Show more sample rows?\n2. Handle any special cases differently?\n3. Add additional data cleaning rules?\n4. Create a backup before saving?",
"extensions": [
{
"name": "Computer Controller",
"command": "computercontroller",
"is_builtin": true,
"environmentVariables": [
]
},
{
"name": "Google Drive",
"command": "npx -y @modelcontextprotocol/server-gdrive",
"is_builtin": false,
"environmentVariables": [
{
"name": "GDRIVE_OAUTH_PATH",
"description": "/Users/<username>/.config/gcp-oauth.keys.json / ",
"required": true
},
{
"name": "GDRIVE_CREDENTIALS_PATH",
"description": "/Users/<username>/.config/.gdrive-server-credentials.json /",
"required": true
}
]
}
]
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,24 @@
{
"id": "sales-product-region-lookup",
"title": "Check Product Availability in Regions",
"description": "Research which countries and regions a product is available in",
"category": "business",
"job": "project-management",
"featured": true,
"example_prompt": "List ISO 3166-1 country codes where {product_name} is sold. Return JSON containing:\ncountry_codes: List of the ISO-3166-1 country codes that are valid for this device\ndevice_model: The model you have performed the lookup for\nis_north_america: Whether or not the specified device is expected to acquired easily in north america",
"example_result": "I've researched the regional availability for iPhone 14 Pro. Here's the analysis:\n\n```json\n{\n \"device_model\": \"iPhone 14 Pro\",\n \"country_codes\": [\n \"AE\", \"AT\", \"AU\", \"BE\", \"BG\", \"BR\", \"CA\", \"CH\", \"CL\", \"CN\",\n \"CO\", \"CY\", \"CZ\", \"DE\", \"DK\", \"EE\", \"ES\", \"FI\", \"FR\", \"GB\",\n \"GR\", \"HK\", \"HR\", \"HU\", \"ID\", \"IE\", \"IL\", \"IN\", \"IT\", \"JP\",\n \"KR\", \"LT\", \"LU\", \"LV\", \"MX\", \"MY\", \"NL\", \"NO\", \"NZ\", \"PH\",\n \"PL\", \"PT\", \"RO\", \"SA\", \"SE\", \"SG\", \"SI\", \"SK\", \"TH\", \"TR\",\n \"TW\", \"US\", \"VN\", \"ZA\"\n ],\n \"is_north_america\": true,\n \"regional_details\": {\n \"north_america\": {\n \"countries\": [\"US\", \"CA\", \"MX\"],\n \"availability\": \"Full availability\",\n \"warranty_support\": true,\n \"carrier_support\": true\n },\n \"europe\": {\n \"countries\": [\"GB\", \"DE\", \"FR\", \"IT\", \"ES\", \"NL\", \"BE\", \"CH\", \"AT\"],\n \"availability\": \"Full availability\",\n \"warranty_support\": true,\n \"carrier_support\": true\n },\n \"asia_pacific\": {\n \"countries\": [\"JP\", \"KR\", \"CN\", \"HK\", \"SG\", \"AU\"],\n \"availability\": \"Full availability\",\n \"warranty_support\": true,\n \"carrier_support\": true\n }\n },\n \"model_variants\": {\n \"A2650\": [\"US\", \"CA\"],\n \"A2651\": [\"CN\"],\n \"A2652\": [\"JP\"],\n \"A2653\": [\"Global\"]\n },\n \"network_compatibility\": {\n \"5G\": [\"US\", \"CA\", \"JP\", \"KR\", \"CN\", \"GB\", \"DE\", \"FR\"],\n \"4G_LTE\": \"All listed countries\",\n \"3G\": \"Limited availability\"\n },\n \"purchase_channels\": {\n \"apple_store\": \"All listed countries\",\n \"carriers\": \"Major markets\",\n \"authorized_resellers\": \"All listed countries\"\n },\n \"import_restrictions\": [\n \"Some features may be restricted in certain regions\",\n \"Warranty service limited to country of purchase\",\n \"5G connectivity subject to carrier support\"\n ]\n}\n```\n\nAdditional Notes:\n1. Availability Status:\n - Full availability in 54 countries\n - Primary markets have immediate availability\n - Some markets may have limited stock\n\n2. Regional Variations:\n - Different model numbers by region\n - Feature availability varies by country\n - Warranty coverage region-specific\n\n3. Purchase Considerations:\n - Local warranty support\n - Carrier compatibility\n - Import regulations\n\nWould you like me to:\n1. Check specific country availability?\n2. Compare with other models?\n3. Show carrier compatibility?\n4. List region-specific features?",
"extensions": [
{
"name": "Computer Controller",
"command": "computercontroller",
"is_builtin": true,
"environmentVariables": [
{
"name": "product_name",
"description": "The name/model of the product to look up regional availability for",
"required": true
}
]
}
]
}

View File

@@ -0,0 +1,19 @@
{
"id": "dev-query-optimization",
"title": "Optimize Database Query Performance",
"description": "Refactor a Ruby query to improve database performance by moving operations from memory to SQL",
"category": "technical",
"job": "data-analytics",
"example_prompt": "The list_records method in app/services/record_service.rb has an issue causing the query to prematurely execute and perform operations in memory causing performance issues. Please refactor the query to build the entire query up in SQL so it can be performed with a single invocation and skip the work in memory.",
"example_result": "I'll help optimize the database query. Here's the analysis and refactoring:\n\nOriginal Code (with performance issues):\n```ruby\n# app/services/record_service.rb\nclass RecordService\n def list_records(filters = {})\n # Initial query that executes immediately\n records = Record.includes(:user, :category)\n .where(status: 'active')\n .order(created_at: :desc)\n\n # Memory-intensive operations\n records = records.select { |r| r.user.subscribed? } if filters[:subscribed_only]\n records = records.select { |r| r.category.featured? } if filters[:featured_categories]\n records = records.select { |r| r.created_at >= 30.days.ago } if filters[:recent]\n\n # More filtering in memory\n if filters[:min_value]\n records = records.select { |r| r.calculated_value >= filters[:min_value] }\n end\n\n # Final memory operations\n records.map do |record|\n {\n id: record.id,\n title: record.title,\n user_name: record.user.name,\n category_name: record.category.name,\n value: record.calculated_value\n }\n end\n end\nend\n```\n\nOptimized Code:\n```ruby\n# app/services/record_service.rb\nclass RecordService\n def list_records(filters = {})\n # Build query incrementally without executing\n records = Record\n .select(\n 'records.id',\n 'records.title',\n 'records.created_at',\n 'users.name AS user_name',\n 'categories.name AS category_name',\n 'COALESCE(records.base_value * multiplier.value, records.base_value) AS calculated_value'\n )\n .joins(:user, :category)\n .joins(\n 'LEFT JOIN value_multipliers AS multiplier ON '\n 'multiplier.record_type = records.type AND '\n 'multiplier.valid_from <= CURRENT_TIMESTAMP'\n )\n .where(status: 'active')\n\n # Add filters as SQL conditions\n records = records.where('users.subscription_status = ?', 'active') if filters[:subscribed_only]\n records = records.where('categories.featured = ?', true) if filters[:featured_categories]\n records = records.where('records.created_at >= ?', 30.days.ago) if filters[:recent]\n \n if filters[:min_value]\n records = records.where(\n 'COALESCE(records.base_value * multiplier.value, records.base_value) >= ?',\n filters[:min_value]\n )\n end\n\n # Add final ordering and execute query once\n records\n .order(created_at: :desc)\n .map do |record|\n {\n id: record.id,\n title: record.title,\n user_name: record.user_name,\n category_name: record.category_name,\n value: record.calculated_value\n }\n end\n end\n\n private\n\n def build_value_calculation\n # Complex value calculation moved to SQL\n <<~SQL\n CASE\n WHEN records.type = 'Premium' THEN base_value * 1.5\n WHEN records.type = 'Standard' THEN base_value * 1.2\n ELSE base_value\n END\n SQL\n end\nend\n```\n\nKey Optimizations:\n\n1. Eager Loading:\n```ruby\n# Before: Separate queries for associations\n.includes(:user, :category)\n\n# After: Single JOIN query\n.joins(:user, :category)\n```\n\n2. SQL vs Memory Filtering:\n```ruby\n# Before: Memory filtering\nrecords.select { |r| r.user.subscribed? }\n\n# After: SQL filtering\n.where('users.subscription_status = ?', 'active')\n```\n\n3. Calculated Values:\n```ruby\n# Before: Ruby calculation\nrecord.calculated_value\n\n# After: SQL calculation\nCOALESCE(records.base_value * multiplier.value, records.base_value) AS calculated_value\n```\n\n4. Select Specific Fields:\n```ruby\n# Before: Loading entire records\nRecord.includes(:user, :category)\n\n# After: Loading only needed fields\n.select(\n 'records.id',\n 'records.title',\n 'users.name AS user_name'\n)\n```\n\nPerformance Impact:\n```\nBefore:\n- Query Time: 2.3 seconds\n- Memory Usage: 1.2 GB\n- Database Calls: 15\n\nAfter:\n- Query Time: 180ms (87% faster)\n- Memory Usage: 45 MB (96% reduction)\n- Database Calls: 1\n```\n\nMonitoring Results:\n```sql\nEXPLAIN ANALYZE SELECT ...\n\n-> Index Scan using records_created_at_idx (cost=0.29..8.29 rows=500)\n-> Hash Join (cost=1.05..13.85 rows=487)\n -> Index Scan using users_subscription_idx (cost=0.28..4.28 rows=95)\n -> Hash (cost=0.77..0.77 rows=487)\n```\n\nWould you like me to:\n1. Add database indexes?\n2. Implement caching?\n3. Add query monitoring?\n4. Write performance tests?",
"extensions": [
{
"name": "Developer",
"command": "developer",
"is_builtin": true,
"environmentVariables": [
]
}
]
}

View File

@@ -0,0 +1,33 @@
{
"id": "legal-regulatory-comparison",
"title": "Regulatory Document Change Analysis",
"description": "Run a comparative analysis between different versions of AML regulatory documents",
"category": "business",
"job": "operations",
"example_prompt": "Highlight the differences between these two versions of FinCEN's Investment Adviser AML regulations:\n\nProposed version (2015): https://www.federalregister.gov/documents/2015/09/01/2015-21318/anti-money-laundering-program-and-suspicious-activity-report-filing-requirements-for-registered\n\nFinal version (2024): https://www.federalregister.gov/documents/2024/09/04/2024-19260/financial-crimes-enforcement-network-anti-money-launderingcountering-the-financing-of-terrorism\n\nFocus on key changes in requirements for investment advisers' AML/CFT programs and how they affect compliance obligations.",
"example_result": "# Regulatory Change Analysis Report\n\nDocument: FinCEN Investment Adviser AML Regulations\nComparison Period: 2015 (Proposed) vs 2024 (Final)\n\n## 1. Core Program Requirements\n\n### Risk Assessment\n```diff\n2015 Version:\n- General risk assessment requirement\n- Focus on client-based risks\n\n2024 Version:\n+ Comprehensive risk assessment framework\n+ Enterprise-wide risk consideration\n+ Required annual updates\n+ Documentation of methodology\n```\n\n### Internal Controls\n```diff\n2015 Version:\n- Basic policies and procedures\n- General oversight requirements\n\n2024 Version:\n+ Detailed control framework\n+ Technology-based monitoring systems\n+ Transaction monitoring requirements\n+ Automated alert generation\n+ Risk-based investigation procedures\n```\n\n## 2. Customer Due Diligence\n\n### Initial Verification\n```diff\n2015 Version:\n- Basic identity verification\n- Document collection\n\n2024 Version:\n+ Enhanced verification procedures\n+ Beneficial ownership requirements\n+ Source of funds documentation\n+ Risk-based enhanced due diligence\n+ Ongoing monitoring requirements\n```\n\n### Periodic Review\n```diff\n2015 Version:\n- Annual review recommendation\n\n2024 Version:\n+ Risk-based review schedule\n+ Trigger events for review\n+ Documentation requirements\n+ Update procedures\n```\n\n## 3. Suspicious Activity Reporting\n\n### Filing Requirements\n```diff\n2015 Version:\n- 30-day filing deadline\n- Basic suspicious activity indicators\n\n2024 Version:\n+ 30-day filing deadline (unchanged)\n+ Expanded suspicious activity indicators\n+ Automated detection requirements\n+ Investigation documentation standards\n+ Quality assurance procedures\n```\n\n### Technology Requirements\n```diff\n2015 Version:\n- Manual monitoring permitted\n\n2024 Version:\n+ Automated monitoring required for firms >$1B AUM\n+ System validation requirements\n+ Alert optimization standards\n+ Data quality controls\n```\n\n## 4. Training Requirements\n\n### Staff Training\n```diff\n2015 Version:\n- Annual training requirement\n- Basic AML topics\n\n2024 Version:\n+ Role-specific training programs\n+ Certification requirements\n+ Testing components\n+ Documentation standards\n+ Frequency based on risk rating\n```\n\n## 5. Implementation Timeline\n\n```\n2024 Final Rule:\n\n[Month 0] Rule Publication\n├─ [Month 6] Risk Assessment Framework\n├─ [Month 9] Policy Development\n├─ [Month 12] Technology Implementation\n├─ [Month 15] Staff Training\n└─ [Month 18] Full Compliance Required\n```\n\n## 6. Key Impact Areas\n\n1. Technology Infrastructure:\n```\nRequired Updates:\n- Transaction monitoring systems\n- Customer risk rating tools\n- Case management software\n- Regulatory reporting platform\n```\n\n2. Staffing Requirements:\n```\nNew Positions Needed:\n- AML Compliance Officer\n- Transaction Monitoring Analysts\n- Investigation Specialists\n- Technology Support Staff\n```\n\n3. Budget Implications:\n```\nEstimated Costs:\n- Technology: $500K - $2M\n- Staffing: $300K - $1M annually\n- Training: $50K - $200K annually\n- Documentation: $100K - $300K\n```\n\n## 7. Action Items\n\n### Immediate (0-3 months):\n```\n1. Gap Analysis\n - Review current program\n - Identify deficiencies\n - Develop remediation plan\n\n2. Technology Assessment\n - Evaluate current systems\n - Identify needed upgrades\n - Request vendor proposals\n```\n\n### Short-term (3-6 months):\n```\n3. Policy Updates\n - Revise procedures\n - Update manuals\n - Create new forms\n\n4. Training Development\n - Design new programs\n - Create materials\n - Schedule sessions\n```\n\n### Long-term (6-18 months):\n```\n5. System Implementation\n - Install new software\n - Migrate data\n - Test controls\n\n6. Program Integration\n - Roll out changes\n - Monitor effectiveness\n - Adjust as needed\n```\n\nWould you like me to:\n1. Generate detailed implementation timeline?\n2. Create budget breakdown?\n3. Draft policy templates?\n4. Develop training materials?",
"extensions": [
{
"name": "Computer Controller",
"command": "computercontroller",
"is_builtin": true,
"environmentVariables": [
{
"name": "document_name",
"description": "The name/title of the regulatory document being compared",
"required": true
},
{
"name": "prior_version_url",
"description": "URL to the previous version of the document",
"required": true
},
{
"name": "final_version_url",
"description": "URL to the final/current version of the document",
"required": true
}
]
}
]
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,27 @@
{
"id": "dev-roll-plan-analyzer",
"title": "Analyze Production Change ROLL Plans",
"description": "Analyze and validate infrastructure change ROLL plans for production environments",
"category": "technical",
"job": "project-management",
"example_prompt": "You are an expert in cloud infrastructure, security, and reliability engineering. Your goal is to analyze manual production changes documented in a ROLL plan, which governs high-risk changes to infrastructure and services that impact system state and production environments.\nA ROLL plan can contain any formatted change that any team is making that impacts production.\nI will provide a reference ROLL plan named\nROLL - SAMPLE.xml, which is a past real-world ROLL plan exported from JIRA. This is for context so you can understand\nthe structure and details of a typical ROLL plan.\nHowever, the actual ROLL plan you need to analyze will be uploaded separately.",
"example_result": "I've analyzed the ROLL plan for the database migration change. Here's my comprehensive review:\n\n# ROLL Plan Analysis\n\n## 1. Change Overview\n\n```yaml\nChange Type: Database Migration\nEnvironment: Production\nImpact Level: High\nDuration: 4 hours\nTeams Involved:\n - Database Operations\n - Application Development\n - Site Reliability\n - Security\n```\n\n## 2. Risk Assessment\n\n### Critical Risks Identified:\n```\n1. Data Integrity\n - Risk: Potential data loss during migration\n - Mitigation: Point-in-time backup before change\n - Verification: Checksum validation\n\n2. Service Availability\n - Risk: Extended downtime during cutover\n - Mitigation: Rolling update strategy\n - Verification: Health check monitoring\n\n3. Performance Impact\n - Risk: Degraded performance post-migration\n - Mitigation: Performance baseline comparison\n - Verification: Load testing pre-production\n```\n\n## 3. Prerequisites Check\n\n```diff\n+ Database backup completed and verified\n+ Rollback scripts tested in staging\n+ Performance baseline established\n+ Monitoring alerts configured\n- Load testing in pre-production pending\n- Security scan of new configuration needed\n```\n\n## 4. Step-by-Step Analysis\n\n### Pre-Change Steps:\n```sql\n-- Step 1: Backup Verification\nSELECT COUNT(*), SUM(CHECKSUM(*)) \nFROM critical_tables;\n\n-- Step 2: Connection Count\nSELECT COUNT(*) \nFROM pg_stat_activity \nWHERE state = 'active';\n\n-- Step 3: Replication Status\nSELECT * \nFROM pg_stat_replication;\n```\n\n### Main Migration Steps:\n```bash\n# Step 4: Schema Migration\n./migrate.sh --env=prod --version=v2.5.0\n\n# Step 5: Data Transfer\npsql -f transfer_data.sql\n\n# Step 6: Index Rebuild\n./rebuild_indexes.sh --parallel 4\n```\n\n### Validation Steps:\n```python\ndef validate_migration():\n checks = [\n check_row_counts(),\n verify_constraints(),\n test_replication(),\n validate_performance()\n ]\n return all(checks)\n```\n\n## 5. Rollback Procedure\n\n```yaml\nTrigger Conditions:\n - Data validation failure\n - Performance degradation >20%\n - Replication lag >10 minutes\n\nRollback Steps:\n 1. Stop application traffic\n 2. Restore from backup\n 3. Verify data integrity\n 4. Resume application traffic\n\nTime to Complete: 45 minutes\n```\n\n## 6. Monitoring Plan\n\n```json\n{\n \"metrics\": {\n \"database\": [\n \"queries_per_second\",\n \"average_response_time\",\n \"active_connections\",\n \"buffer_cache_hit_ratio\"\n ],\n \"application\": [\n \"error_rate\",\n \"latency_p95\",\n \"success_rate\",\n \"throughput\"\n ],\n \"system\": [\n \"cpu_usage\",\n \"memory_usage\",\n \"disk_io\",\n \"network_throughput\"\n ]\n },\n \"alerts\": {\n \"critical\": {\n \"error_rate\": \">5%\",\n \"latency\": \">500ms\",\n \"replication_lag\": \">60s\"\n },\n \"warning\": {\n \"error_rate\": \">2%\",\n \"latency\": \">200ms\",\n \"replication_lag\": \">30s\"\n }\n }\n}\n```\n\n## 7. Communication Plan\n\n```yaml\nPre-Change:\n - Announcement: T-7 days\n - Reminder: T-1 day\n - Final notice: T-1 hour\n\nDuring Change:\n - Status updates: Every 30 minutes\n - Incident channel: #db-migration\n - Emergency contacts listed\n\nPost-Change:\n - Completion notice\n - Performance report\n - Incident review if needed\n```\n\n## 8. Recommendations\n\n1. Critical Items:\n```\n❗ Add performance acceptance criteria\n❗ Include specific rollback triggers\n❗ Detail data validation queries\n```\n\n2. Improvements:\n```\n- Add canary deployment step\n- Include query performance baselines\n- Expand monitoring metrics\n```\n\n3. Missing Elements:\n```\n- Backup retention policy\n- Compliance verification\n- Audit log requirements\n```\n\nWould you like me to:\n1. Generate detailed validation queries?\n2. Create monitoring dashboard?\n3. Expand rollback procedures?\n4. Add security controls?",
"extensions": [
{
"name": "Developer",
"command": "developer",
"is_builtin": true,
"environmentVariables": [
]
},
{
"name": "Computer Controller",
"command": "computercontroller",
"is_builtin": true,
"environmentVariables": [
]
}
]
}

View File

@@ -0,0 +1,36 @@
{
"id": "sales-performance-analysis",
"title": "Monthly Sales Performance Analysis",
"description": "Analyze monthly sales data to identify top performing stores and significant trends",
"category": "business",
"job": "data-analytics",
"example_prompt": "Please review these two documents named {month1} Orders and {month2} Orders. Can you create insights on top performing stores and any significant movements.",
"example_result": "I've analyzed the sales data for February and March 2025. Here's my comprehensive analysis:\n\n# Monthly Sales Performance Report\n\n## 1. Executive Summary\n\n```yaml\nTotal Revenue:\n February: $4.2M\n March: $4.8M\n Growth: +14.3%\n\nTotal Orders:\n February: 28,450\n March: 31,275\n Growth: +9.9%\n\nAverage Order Value:\n February: $147.63\n March: $153.48\n Growth: +4.0%\n```\n\n## 2. Top Performing Stores\n\n```sql\n-- Top 5 Stores by Revenue\nSELECT \n store_id,\n location,\n SUM(revenue) as total_revenue,\n COUNT(order_id) as order_count,\n AVG(basket_size) as avg_basket\nFROM march_orders\nGROUP BY store_id, location\nORDER BY total_revenue DESC\nLIMIT 5;\n```\n\n### Results:\n```\n1. Store #127 (San Francisco)\n Revenue: $425,000 (+15% MoM)\n Orders: 2,450 (+12% MoM)\n Avg Basket: $173.47 (+3% MoM)\n\n2. Store #089 (Seattle)\n Revenue: $398,000 (+18% MoM)\n Orders: 2,380 (+14% MoM)\n Avg Basket: $167.23 (+4% MoM)\n\n3. Store #156 (Austin)\n Revenue: $375,000 (+22% MoM)\n Orders: 2,275 (+16% MoM)\n Avg Basket: $164.84 (+5% MoM)\n```\n\n## 3. Key Trends\n\n### Product Categories\n```python\nimport pandas as pd\n\n# Category performance analysis\ndf = pd.DataFrame(march_data)\ncat_growth = df.groupby('category')['revenue'].sum().pct_change()\n\nprint(\"Category Growth Rates:\")\nprint(cat_growth.sort_values(ascending=False))\n```\n\n```\nFastest Growing Categories:\n1. Electronics: +24.5%\n - Driven by new product launches\n - Higher ASP in premium segment\n\n2. Home & Garden: +18.7%\n - Seasonal transition impact\n - Strong performance in outdoor\n\n3. Apparel: +15.2%\n - Spring collection launch\n - Improved inventory availability\n```\n\n## 4. Customer Insights\n\n```json\n{\n \"customer_segments\": {\n \"new_customers\": {\n \"count\": 8450,\n \"growth\": \"+12%\",\n \"avg_first_purchase\": 89.50\n },\n \"returning\": {\n \"count\": 22825,\n \"growth\": \"+8%\",\n \"avg_purchase\": 167.25\n },\n \"loyalty_members\": {\n \"count\": 15380,\n \"growth\": \"+15%\",\n \"avg_basket\": 195.75\n }\n }\n}\n```\n\n## 5. Regional Performance\n\n```sql\n-- Regional analysis\nSELECT \n region,\n COUNT(DISTINCT store_id) as store_count,\n SUM(revenue) as total_revenue,\n SUM(revenue) / COUNT(DISTINCT store_id) as revenue_per_store\nFROM march_orders\nGROUP BY region\nORDER BY total_revenue DESC;\n```\n\n### Results Map:\n```\nWest Coast: $1.8M (+16%)\n├─ CA: $980K\n├─ WA: $520K\n└─ OR: $300K\n\nSouthwest: $1.2M (+19%)\n├─ TX: $780K\n├─ AZ: $280K\n└─ NV: $140K\n\nNortheast: $1.0M (+12%)\n├─ NY: $580K\n├─ MA: $280K\n└─ CT: $140K\n```\n\n## 6. Operational Metrics\n\n```yaml\nInventory Turnover:\n February: 4.2\n March: 4.5\n Change: +7.1%\n\nOut-of-Stock Rate:\n February: 3.8%\n March: 3.2%\n Change: -15.8%\n\nReturn Rate:\n February: 5.5%\n March: 5.2%\n Change: -5.5%\n```\n\n## 7. Recommendations\n\n1. Inventory Optimization:\n```\n- Increase stock levels for top performers\n- Adjust regional allocation based on growth\n- Implement predictive reordering\n```\n\n2. Marketing Focus:\n```\n- Promote high-growth categories\n- Target loyalty program enrollment\n- Increase regional marketing in growth areas\n```\n\n3. Store Operations:\n```\n- Share best practices from top stores\n- Optimize staffing for peak periods\n- Enhance training in underperforming regions\n```\n\nWould you like me to:\n1. Generate detailed store-level reports?\n2. Create visualization dashboard?\n3. Develop forecast models?\n4. Analyze specific product categories?",
"extensions": [
{
"name": "Computer Controller",
"command": "computercontroller",
"is_builtin": true,
"environmentVariables": [
]
},
{
"name": "Google Drive",
"command": "npx -y @modelcontextprotocol/server-gdrive",
"is_builtin": false,
"environmentVariables": [
{
"name": "GDRIVE_OAUTH_PATH",
"description": "/Users/<username>/.config/gcp-oauth.keys.json / ",
"required": true
},
{
"name": "GDRIVE_CREDENTIALS_PATH",
"description": "/Users/<username>/.config/.gdrive-server-credentials.json /",
"required": true
}
]
}
]
}

View File

@@ -0,0 +1,27 @@
{
"id": "developer-security-patterns",
"title": "Learn Security Vulnerability Patterns",
"description": "Store and analyze security vulnerability patterns and their relationships",
"category": "technical",
"job": "engineering",
"example_prompt": "Goose, learn these security vulnerability patterns and their relationships:\n\n1. SQL Injection relates to:\n - Unvalidated database inputs\n - Data theft risks\n - Parameterized query solutions\n \n2. XSS Vulnerabilities connect to:\n - Unescaped user output\n - Session hijacking risks\n - Content sanitization fixes\n\n3.Authentication Weaknesses link to:\n - Session management\n - Account compromise\n - JWT-based solutions",
"example_result": "I've analyzed the security vulnerability patterns and stored their relationships. Here's what I've learned:\n\nSQL Injection Patterns:\n- Primary Risk: Unauthorized database access through unvalidated inputs\n- Impact: Data theft, data manipulation, system compromise\n- Key Mitigation: Implement parameterized queries, input validation\n- Related Concepts: Input sanitization, prepared statements\n\nXSS Vulnerability Patterns:\n- Primary Risk: Client-side code injection via unescaped output\n- Impact: Session hijacking, data theft, malicious actions\n- Key Mitigation: Content sanitization, output encoding\n- Related Concepts: CSP headers, input validation\n\nAuthentication Weakness Patterns:\n- Primary Risk: Unauthorized access through session/token exploitation\n- Impact: Account compromise, privilege escalation\n- Key Mitigation: JWT-based authentication, secure session management\n- Related Concepts: Token validation, session timeout\n\nI've noted the interconnections between these vulnerabilities. Would you like me to analyze any specific relationship in more detail?",
"extensions": [
{
"name": "Knowledge Graph",
"command": "npx -y @modelcontextprotocol/server-memory",
"is_builtin": false,
"environmentVariables": [
]
},
{
"name": "Developer",
"command": "developer",
"is_builtin": true,
"environmentVariables": [
]
}
]
}

View File

@@ -0,0 +1,37 @@
{
"id": "social-post-adaptation",
"title": "Adapt Social Post for Platform",
"description": "Convert a social media post to fit different platform requirements and best practices",
"category": "productivity",
"job": "marketing-content",
"example_prompt": "Please adapt this post for [Target Platform]. Consider:\n\n1. Character limits\n2. Platform-specific features\n3. Format conventions\n4. Hashtag usage\n5. Link formatting\n6. Media recommendations\n7. Best posting practices\n\nOriginal Post ([Original Platform]):\n[Post Content]\n\nProvide the adapted post with any relevant platform-specific recommendations.",
"example_result": "I've analyzed your LinkedIn post and adapted it for Twitter. Here's the optimized version:\n\nOriginal LinkedIn Post:\nExcited to announce our new AI-powered analytics dashboard! After months of development, we've created a solution that helps businesses understand their data through natural language queries. No more complex SQL or confusing charts - just ask questions and get instant insights. Check out the full feature list and demo at example.com/analytics-launch\n\nAdapted for Twitter:\nIntroducing our new AI analytics dashboard 📊\n\nAsk questions, get instant insights - no SQL needed!\n\nKey features:\n• Natural language queries\n• Instant visualizations\n• Custom reporting\n\nSee it in action ⬇️\nexample.com/demo\n\n#AIAnalytics #BusinessIntelligence #DataScience\n\nPlatform-specific recommendations:\n1. Kept under 280 characters\n2. Used bullet points for scanability\n3. Added relevant hashtags\n4. Included eye-catching emoji\n5. Changed link to shorter demo page\n6. Added visual cue arrow for CTA\n\nWould you like me to adapt this for any other platforms?",
"extensions": [
{
"name": "Google Drive",
"command": "npx -y @modelcontextprotocol/server-gdrive",
"is_builtin": false,
"link": "https://block.github.io/goose/v1/extensions/google-drive",
"environmentVariables": [
{
"name": "GDRIVE_OAUTH_PATH",
"description": "/Users/<username>/.config/gcp-oauth.keys.json",
"required": true
},
{
"name": "GDRIVE_CREDENTIALS_PATH",
"description": "/Users/<username>/.config/.gdrive-server-credentials.json",
"required": true
}
]
},
{
"name": "Computer Controller",
"command": "computercontroller",
"is_builtin": true,
"environmentVariables": [
]
}
]
}

View File

@@ -0,0 +1,19 @@
{
"id": "misc-system-control-research",
"title": "Control Computer Settings",
"description": "Automate system settings while conducting parallel research tasks",
"category": "productivity",
"job": "operations",
"example_prompt": "Goose, I need to decompress while researching AI models for tomorrow's meeting. Can you create a relaxing environment and help me research?\n\n1. Play classical music in [your preferred app]\n2. Dim screen brightness (2 levels)\n3. Research current flagship AI models:\n * Verify availability\n * Collect: release date, features, pricing, context window\n * Use official sources only\n4. Create \"ai-models-comparison.csv\" on desktop with collected data\n5. Launch Numbers and open the CSV file\n6. Reset brightness and close Safari",
"example_result": "I'll help you create a relaxing environment and conduct the research. Let me handle this step by step:\n\n1. Setting up your environment:\n- Opened Music app and started playing Bach's Air on G String\n- Reduced screen brightness by 2 levels\n\n2. Research findings on flagship AI models:\n\nGPT-4 Turbo:\n- Release: March 2024\n- Context: 128K tokens\n- Features: Multimodal, code interpreter\n- Pricing: $0.01/1K input tokens\n\nClaude 3 Opus:\n- Release: February 2024\n- Context: 200K tokens\n- Features: Advanced reasoning, code generation\n- Pricing: $15/million tokens\n\n3. Created and populated ai-models-comparison.csv on your desktop\n\n4. Opened Numbers with the comparison file\n\n5. Environment restoration:\n- Reset screen brightness to original level\n- Closed Safari browser windows\n\nThe comparison file is now open in Numbers. Would you like me to adjust any of the collected information or environment settings?",
"extensions": [
{
"name": "Computer Controller",
"command": "computercontroller",
"is_builtin": true,
"environmentVariables": [
]
}
]
}

View File

@@ -0,0 +1,20 @@
{
"id": "youtube-to-blog",
"title": "Convert YouTube Video to Blog Post",
"description": "Generate a blog post from a YouTube video transcript",
"category": "productivity",
"job": "marketing-content",
"featured": true,
"example_prompt": "Get the transcript from this youtube video [link to video]. Then, summarize it into a blog post.",
"example_result": "I've retrieved the transcript from the YouTube video about machine learning deployment best practices and created a blog post summary:\n\nTitle: Machine Learning in Production: Essential Best Practices for Deployment\n\nDeploying machine learning models to production environments requires careful planning and execution. In this comprehensive guide, we'll explore key best practices that ensure successful ML deployments.\n\nModel Versioning and Documentation\n- Implement semantic versioning for models (major.minor.patch)\n- Document all model assumptions and limitations\n- Track training data versions and preprocessing steps\n\nMonitoring and Observability\n- Set up comprehensive model performance metrics\n- Monitor prediction latency and resource usage\n- Implement data drift detection\n- Create alerting systems for critical metrics\n\nScalability Considerations\n- Design for horizontal scaling\n- Implement efficient batch prediction capabilities\n- Consider hardware requirements and costs\n- Use container orchestration for deployment\n\nTesting and Validation\n- Create comprehensive test suites for model behavior\n- Validate inputs and outputs thoroughly\n- Perform A/B testing before full deployment\n- Test system behavior under load\n\nConclusion:\nSuccessful ML deployment requires a systematic approach to versioning, monitoring, scaling, and testing. By following these best practices, teams can ensure their models perform reliably in production environments.\n\nWould you like me to expand on any specific aspect of the blog post?",
"extensions": [
{
"name": "YouTube Transcript",
"command": "uvx --from git+https://github.com/jkawamoto/mcp-youtube-transcript mcp-youtube-transcript",
"is_builtin": false,
"environmentVariables": [
]
}
]
}

View File

@@ -0,0 +1,343 @@
import Layout from "@theme/Layout";
import { ArrowLeft, Terminal, Download, Code } from "lucide-react";
import Admonition from '@theme/Admonition';
import CodeBlock from '@theme/CodeBlock';
import { Button } from "@site/src/components/ui/button";
import { Badge } from "@site/src/components/ui/badge";
import { useLocation } from "@docusaurus/router";
import { useEffect, useState } from "react";
import Link from "@docusaurus/Link";
import { motion, AnimatePresence } from "framer-motion";
import type { MCPServer } from "@site/src/types/server";
import { getPromptById } from "@site/src/utils/prompts";
import ReactMarkdown from 'react-markdown';
import type { Prompt, Extension } from "@site/src/types/prompt";
import { getGooseInstallLink } from "@site/src/utils/install-links";
function extensionToMCPServer(extension: Extension): MCPServer {
return {
id: extension.command,
name: extension.name,
command: extension.command,
description: extension.name,
is_builtin: extension.is_builtin,
link: extension.link || '',
installation_notes: extension.installation_notes || '',
endorsed: false,
environmentVariables: extension.environmentVariables || [],
githubStars: 0
};
}
function ExtensionList({ extensions }: { extensions: Extension[] }) {
const [expandedExtension, setExpandedExtension] = useState<string | null>(null);
const hasExpandedExtension = expandedExtension !== null;
return (
<div className={`flex gap-3 ${hasExpandedExtension ? 'flex-col' : 'flex-wrap'}`}>
{extensions.map((extension) => (
<ExtensionDetails
key={extension.name}
extension={extension}
isExpanded={expandedExtension === extension.name}
onToggle={(expanded) => {
setExpandedExtension(expanded ? extension.name : null);
}}
/>
))}
</div>
);
}
function ExtensionDetails({
extension,
isExpanded,
onToggle
}: {
extension: Extension;
isExpanded: boolean;
onToggle: (expanded: boolean) => void;
}) {
return (
<div className="flex flex-col">
<div
className={`
inline-flex items-center h-9 px-4 rounded-full
bg-background-subtle border border-borderSubtle
transition-all duration-150 ease-in-out
hover:bg-background-standard hover:border-borderStandard
group ${extension.is_builtin ? 'cursor-help' : 'cursor-pointer'}
${isExpanded ? 'bg-background-standard border-borderStandard' : ''}
`}
onClick={() => {
if (!extension.is_builtin) {
onToggle(!isExpanded);
}
}}
title={extension.is_builtin ? "Built-in extension - can be enabled in settings" : "Click to see installation options"}
>
<span className="text-sm text-textStandard group-hover:text-textProminent">
{extension.name}
</span>
{extension.is_builtin ? (
<div className="inline-flex items-center ml-2">
<span className="text-sm text-textSubtle">
Built-in
</span>
</div>
) : (
<span className="ml-2 text-textSubtle">
<Download className="h-4 w-4" />
</span>
)}
</div>
{/* Inline Expansion */}
<AnimatePresence>
{!extension.is_builtin && isExpanded && (
<motion.div
initial={{ height: 0, opacity: 0 }}
animate={{ height: "auto", opacity: 1 }}
exit={{ height: 0, opacity: 0 }}
transition={{ duration: 0.2 }}
className="overflow-hidden"
>
<div className="mt-2 bg-background-subtle rounded-md p-3 border border-borderSubtle space-y-3">
<a
href={getGooseInstallLink(extensionToMCPServer(extension))}
target="_blank"
rel="noopener noreferrer"
className="flex items-center gap-2 text-textStandard hover:text-textProminent"
onClick={(e) => e.stopPropagation()}
>
<Download className="h-4 w-4" />
<span className="mx-2">Install via Desktop</span>
</a>
<div className="border-t border-borderSubtle" />
<button
className="command-toggle w-full flex items-center"
>
<Terminal className="h-4 w-4" />
<h4 className="mx-2">Command</h4>
</button>
<div>
<CodeBlock language="bash">
goose session --with-extension "{extension.command}"
</CodeBlock>
</div>
{extension.installation_notes && (
<>
<div className="border-t border-borderSubtle" />
<div>
<div className="text-sm font-medium mb-2">Installation Notes</div>
<div className="text-sm text-textSubtle">
<ReactMarkdown>
{extension.installation_notes}
</ReactMarkdown>
</div>
</div>
</>
)}
{extension.environmentVariables && extension.environmentVariables.length > 0 && (
<>
<div className="border-t border-borderSubtle" />
<div>
<div className="text-sm font-medium mb-2">Environment Variables</div>
{extension.environmentVariables.map((env) => (
<div key={env.name} className="mb-2 last:mb-0">
<code className="text-sm">{env.name}</code>
<div className="text-sm text-textSubtle mt-1">
{env.description}
{env.required && (
<Badge variant="secondary" className="ml-2 text-xs">
Required
</Badge>
)}
</div>
</div>
))}
</div>
</>
)}
</div>
</motion.div>
)}
</AnimatePresence>
</div>
);
}
function PromptDetail({ prompt }: { prompt: Prompt }) {
return (
<Layout>
<div className="min-h-screen flex items-start justify-center py-16">
<div className="container max-w-5xl mx-auto px-4">
<div className="flex gap-8">
<div>
<Link to="/prompt-library" className="no-underline">
<Button
className="flex items-center gap-2 hover:cursor-pointer"
>
<ArrowLeft className="h-4 w-4" />
Back
</Button>
</Link>
</div>
<div className="prompt-card flex-1">
<div className="card p-8">
<div className="card-header mb-6">
<h1 className="font-medium text-5xl text-textProminent m-0">
{prompt.title}
</h1>
</div>
<div className="card-content space-y-8">
<div>
<p className="text-xl text-textSubtle m-0">
{prompt.description}
</p>
</div>
<Admonition type="info">
Results may vary depending on the model and context.
</Admonition>
<div>
<h2 className="text-2xl font-medium mb-4">Example Prompt</h2>
<CodeBlock language="markdown">
{prompt.example_prompt}
</CodeBlock>
</div>
{prompt.example_result && (
<div>
<h2 className="text-2xl font-medium mb-4">Example Result</h2>
<CodeBlock language="markdown">
{prompt.example_result}
</CodeBlock>
</div>
)}
<div>
<h2 className="text-2xl font-medium mb-4">Recommended Extensions</h2>
<ExtensionList extensions={prompt.extensions} />
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</Layout>
);
}
export default function DetailPage(): JSX.Element {
const location = useLocation();
const [prompt, setPrompt] = useState<Prompt | null>(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState<string | null>(null);
useEffect(() => {
const loadPrompt = async () => {
try {
setLoading(true);
setError(null);
// Get the ID from the query parameter
const params = new URLSearchParams(location.search);
const id = params.get("id");
if (!id) {
setError("No prompt ID provided");
return;
}
const promptData = await getPromptById(id);
if (promptData) {
setPrompt(promptData);
} else {
setError("Prompt not found");
}
} catch (err) {
setError("Failed to load prompt details");
console.error(err);
} finally {
setLoading(false);
}
};
loadPrompt();
}, [location]);
if (loading) {
return (
<Layout>
<div className="min-h-screen flex items-start justify-center py-16">
<div className="container max-w-5xl mx-auto px-4">
<div className="flex gap-8">
<div>
<Link to="/prompt-library" className="no-underline">
<Button
className="flex items-center gap-2 hover:text-textProminent hover:cursor-pointer"
>
<ArrowLeft className="h-4 w-4" />
Back
</Button>
</Link>
</div>
<div className="prompt-card flex-1">
<div className="card p-8">
<div className="animate-pulse">
<div className="h-12 w-48 bg-bgSubtle rounded-lg mb-4"></div>
<div className="h-6 w-full bg-bgSubtle rounded-lg mb-2"></div>
<div className="h-6 w-2/3 bg-bgSubtle rounded-lg"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</Layout>
);
}
if (error || !prompt) {
return (
<Layout>
<div className="min-h-screen flex items-start justify-center py-16">
<div className="container max-w-5xl mx-auto px-4">
<div className="flex gap-8">
<div>
<Link to="/prompt-library" className="no-underline">
<Button
variant="ghost"
className="flex items-center gap-2 hover:text-textProminent hover:cursor-pointer"
>
<ArrowLeft className="h-4 w-4" />
Back
</Button>
</Link>
</div>
<div className="prompt-card flex-1">
<div className="card p-8">
<div className="text-red-500">
{error || "Prompt not found"}
</div>
</div>
</div>
</div>
</div>
</div>
</Layout>
);
}
return <PromptDetail prompt={prompt} />;
}

View File

@@ -0,0 +1,243 @@
import { PromptCard } from "@site/src/components/prompt-card";
import { useState, useEffect } from "react";
import { motion } from "framer-motion";
import Layout from "@theme/Layout";
import Admonition from '@theme/Admonition';
import type { Prompt, Category } from "@site/src/types/prompt";
import { searchPrompts } from "@site/src/utils/prompts";
import { Button } from "@site/src/components/ui/button";
import { PillFilter, type PillFilterOption } from "@site/src/components/ui/pill-filter";
import { SidebarFilter, type SidebarFilterGroup } from "@site/src/components/ui/sidebar-filter";
import { Menu, X } from 'lucide-react';
const categoryOptions: PillFilterOption[] = [
{ label: "All", value: "all" },
{ label: "Business", value: "business" },
{ label: "Technical", value: "technical" },
{ label: "Productivity", value: "productivity" },
];
const sidebarFilterGroups: SidebarFilterGroup[] = [
{
title: "Job",
options: [
{ label: "Engineering", value: "engineering" },
{ label: "Design", value: "design" },
{ label: "Project Management", value: "project-management" },
{ label: "Marketing/Content", value: "marketing-content" },
{ label: "Data Analytics", value: "data-analytics" },
{ label: "Operations", value: "operations" }
],
}
];
export default function HomePage() {
const [prompts, setPrompts] = useState<Prompt[]>([]);
const [searchQuery, setSearchQuery] = useState("");
const [isLoading, setIsLoading] = useState(true);
const [error, setError] = useState<string | null>(null);
const [currentPage, setCurrentPage] = useState(1);
const [selectedCategory, setSelectedCategory] = useState("all");
const [selectedFilters, setSelectedFilters] = useState<Record<string, string[]>>({});
const [isMobileFilterOpen, setIsMobileFilterOpen] = useState(false);
const promptsPerPage = 20;
useEffect(() => {
const loadPrompts = async () => {
try {
setIsLoading(true);
setError(null);
const results = await searchPrompts(searchQuery);
// Filter results based on category
let filteredResults = results;
if (selectedCategory !== "all") {
filteredResults = results.filter(prompt =>
prompt.category === selectedCategory
);
}
// Apply job filters
Object.entries(selectedFilters).forEach(([group, values]) => {
if (values.length > 0) {
filteredResults = filteredResults.filter(prompt => {
if (group === "Job") {
return values.includes(prompt.job);
}
return true;
});
}
});
setPrompts(filteredResults);
} catch (err) {
const errorMessage =
err instanceof Error ? err.message : "Unknown error";
setError(`Failed to load prompts: ${errorMessage}`);
console.error("Error loading prompts:", err);
} finally {
setIsLoading(false);
}
};
const timeoutId = setTimeout(loadPrompts, 300);
return () => clearTimeout(timeoutId);
}, [searchQuery, selectedCategory, selectedFilters]);
// Close mobile filter when screen size changes to desktop
useEffect(() => {
const handleResize = () => {
if (window.innerWidth >= 768) {
setIsMobileFilterOpen(false);
}
};
window.addEventListener('resize', handleResize);
return () => window.removeEventListener('resize', handleResize);
}, []);
return (
<Layout>
<div className="container mx-auto px-4 py-8 md:p-24">
<div className="pb-8 md:pb-16">
<h1 className="text-4xl md:text-[64px] font-medium text-textProminent">
Prompt Library
</h1>
<p className="text-textProminent">
Your central directory for discovering and using effective prompts with Goose.
</p>
</div>
<div className="search-container mb-6 md:mb-8">
<input
className="bg-bgApp font-light text-textProminent placeholder-textPlaceholder w-full px-3 py-2 md:py-3 text-2xl md:text-[40px] leading-tight md:leading-[52px] border-b border-borderSubtle focus:outline-none focus:ring-purple-500 focus:border-borderProminent caret-[#FF4F00] pl-0"
placeholder="Search prompts..."
value={searchQuery}
onChange={(e) => {
setSearchQuery(e.target.value);
setCurrentPage(1);
}}
/>
</div>
<div className="mb-6 md:mb-8 overflow-x-auto">
<PillFilter
options={categoryOptions}
selectedValue={selectedCategory}
onChange={(category) => {
setSelectedCategory(category);
setCurrentPage(1);
}}
/>
</div>
{error && (
<Admonition type="danger" title="Error">
<p>{error}</p>
</Admonition>
)}
{/* Mobile Filter Toggle Button */}
<div className="md:hidden mb-4">
<Button
onClick={() => setIsMobileFilterOpen(!isMobileFilterOpen)}
className="w-full flex items-center justify-center gap-2 py-2 px-4 bg-surfaceHighlight text-textProminent"
>
{isMobileFilterOpen ? <X size={20} /> : <Menu size={20} />}
{isMobileFilterOpen ? 'Close Filters' : 'Show Filters'}
</Button>
</div>
<div className="flex flex-col md:flex-row gap-8">
{/* Mobile Sidebar Filter */}
<div
className={`${
isMobileFilterOpen ? 'block' : 'hidden'
} md:block md:w-64 flex-shrink-0 transition-all duration-300 ease-in-out`}
>
<SidebarFilter
groups={sidebarFilterGroups}
selectedValues={selectedFilters}
onChange={(groupTitle, values) => {
setSelectedFilters(prev => ({
...prev,
[groupTitle]: values
}));
setCurrentPage(1);
}}
/>
</div>
<div className="flex-1">
<div className={`${searchQuery ? "pb-2" : "pb-4 md:pb-8"}`}>
<p className="text-gray-600">
{searchQuery
? `${prompts.length} result${prompts.length > 1 ? "s" : ""
} for "${searchQuery}"`
: ""}
</p>
</div>
{isLoading ? (
<div className="py-8 text-xl text-gray-600">Loading prompts...</div>
) : prompts.length === 0 ? (
<Admonition type="info">
<p>
{searchQuery
? "No prompts found matching your search."
: "No prompts available in the library yet."}
</p>
</Admonition>
) : (
<>
<div className="grid grid-cols-1 lg:grid-cols-2 gap-4 md:gap-6">
{prompts
.slice((currentPage - 1) * promptsPerPage, currentPage * promptsPerPage)
.map((prompt) => (
<motion.div
key={prompt.id}
initial={{
opacity: 0,
}}
animate={{ opacity: 1 }}
exit={{ opacity: 0 }}
transition={{ duration: 0.6 }}
>
<PromptCard key={prompt.id} prompt={prompt} />
</motion.div>
))}
</div>
{/* Pagination Controls */}
{prompts.length > promptsPerPage && (
<div className="flex justify-center items-center gap-2 md:gap-4 mt-6 md:mt-8">
<Button
onClick={() => setCurrentPage(prev => Math.max(prev - 1, 1))}
disabled={currentPage === 1}
className="px-3 md:px-4 py-2 rounded-md border border-border bg-surfaceHighlight hover:bg-surface text-textProminent disabled:opacity-50 disabled:cursor-not-allowed transition-colors text-sm md:text-base"
>
Previous
</Button>
<span className="text-textProminent text-sm md:text-base">
Page {currentPage} of {Math.ceil(prompts.length / promptsPerPage)}
</span>
<Button
onClick={() => setCurrentPage(prev => Math.min(Math.ceil(prompts.length / promptsPerPage), prev + 1))}
disabled={currentPage >= Math.ceil(prompts.length / promptsPerPage)}
className="px-3 md:px-4 py-2 rounded-md border border-border bg-surfaceHighlight hover:bg-surface text-textProminent disabled:opacity-50 disabled:cursor-not-allowed transition-colors text-sm md:text-base"
>
Next
</Button>
</div>
)}
</>
)}
</div>
</div>
</div>
</Layout>
);
}

View File

@@ -0,0 +1,179 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
@font-face {
font-family: Cash Sans;
src: url(https://cash-f.squarecdn.com/static/fonts/cashsans/woff2/CashSans-Regular.woff2)
format("woff2");
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: Cash Sans;
src: url(https://cash-f.squarecdn.com/static/fonts/cashsans/woff2/CashSans-Medium.woff2)
format("woff2");
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: Cash Sans;
src: url(https://cash-f.squarecdn.com/static/fonts/cashsans/woff2/CashSans-Semibold.woff2)
format("woff2");
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: Cash Sans;
src: url(https://cash-f.squarecdn.com/static/fonts/cashsans/woff2/CashSans-Bold.woff2)
format("woff2");
font-weight: 700;
font-style: normal;
}
@layer base {
:root {
/* start arcade colors */
--constant-white: #ffffff;
--constant-black: #000000;
--grey-10: #101010;
--grey-20: #1e1e1e;
--grey-50: #666666;
--grey-60: #959595;
--grey-80: #cccccc;
--grey-85: #dadada;
--grey-90: #e8e8e8;
--grey-95: #f0f0f0;
--dark-grey-15: #1a1a1a;
--dark-grey-25: #232323;
--dark-grey-30: #2a2a2a;
--dark-grey-40: #333333;
--dark-grey-45: #595959;
--dark-grey-60: #878787;
--dark-grey-90: #e1e1e1;
--background-app: var(--constant-white);
--background-prominent: var(--grey-80);
--background-standard: var(--grey-90);
--background-subtle: var(--grey-95);
--border-divider: var(--grey-90);
--border-inverse: var(--constant-white);
--border-prominent: var(--grey-10);
--border-standard: var(--grey-60);
--border-subtle: var(--grey-90);
--icon-disabled: var(--grey-60);
--icon-extra-subtle: var(--grey-60);
--icon-inverse: var(--constant-white);
--icon-prominent: var(--grey-10);
--icon-standard: var(--grey-20);
--icon-subtle: var(--grey-50);
--text-placeholder: var(--grey-60);
--text-prominent: var(--grey-10);
--text-standard: var(--grey-20);
--text-subtle: var(--grey-50);
&.dark {
--background-app: var(--constant-black);
--background-prominent: var(--dark-grey-40);
--background-standard: var(--dark-grey-25);
--background-subtle: var(--dark-grey-15);
--border-divider: var(--dark-grey-25);
--border-inverse: var(--constant-black);
--border-prominent: var(--constant-white);
--border-standard: var(--dark-grey-45);
--border-subtle: var(--dark-grey-25);
--icon-disabled: var(--dark-grey-45);
--icon-extra-subtle: var(--dark-grey-45);
--icon-inverse: var(--constant-black);
--icon-prominent: var(--constant-white);
--icon-standard: var(--dark-grey-90);
--icon-subtle: var(--dark-grey-60);
--text-placeholder: var(--dark-grey-45);
--text-prominent: var(--constant-white);
--text-standard: var(--dark-grey-90);
--text-subtle: var(--dark-grey-60);
}
/* end arcade colors */
}
}
@keyframes rotate {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
@keyframes appear-top {
0% {
transform: translateY(-50%);
opacity: 0;
}
100% {
transform: translateY(0);
opacity: 1;
}
}
/* Command section styles */
.command-toggle {
display: flex;
align-items: center;
width: 100%;
padding: 0.5rem 0;
font-size: 0.875rem;
color: var(--text-standard);
background: transparent;
border: none;
cursor: pointer;
transition: all 0.2s ease;
}
.command-toggle:hover {
color: var(--text-prominent);
}
.command-toggle h4 {
font-size: 0.875rem;
font-weight: 500;
margin: 0;
}
.command-toggle svg {
width: 16px;
height: 16px;
}
.command-content {
background-color: var(--background-subtle);
padding: 0.75rem;
border-radius: 0.375rem;
font-size: 0.875rem;
color: var(--text-standard);
margin-top: 0.5rem;
}
.command-content code {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
"Liberation Mono", "Courier New", monospace;
font-size: 0.875rem;
background-color: transparent;
border: none;
}
/* view transitions */
a.transitioning .home-page-server-name,
.detail-page-server-name {
view-transition-name: server-name;
}

View File

@@ -0,0 +1,55 @@
import React from 'react';
import Layout from '@docusaurus/theme-classic/lib/theme/Layout';
import CodeBlock from '@docusaurus/theme-classic/lib/theme/CodeBlock';
const Types: React.FC = () => {
return (
<Layout title="Types" description="Type definitions for the Prompt Library">
<div className="container margin-vert--lg">
<h1>Type Definitions</h1>
<p>This page contains the type definitions used in the Prompt Library.</p>
<h2>Environment Variable</h2>
<CodeBlock language="typescript">
{`type EnvironmentVariable = {
name: string;
description: string;
required: boolean;
};`}
</CodeBlock>
<h2>Extension</h2>
<CodeBlock language="typescript">
{`type Extension = {
name: string;
command: string;
is_builtin: boolean;
link?: string;
installation_notes?: string;
environmentVariables?: EnvironmentVariable[];
};`}
</CodeBlock>
<h2>Category</h2>
<CodeBlock language="typescript">
{`type Category = "business" | "technical" | "productivity";`}
</CodeBlock>
<h2>Prompt</h2>
<CodeBlock language="typescript">
{`type Prompt = {
id: string;
title: string;
description: string;
example_prompt: string;
extensions: Extension[];
category: Category;
featured?: boolean;
};`}
</CodeBlock>
</div>
</Layout>
);
};
export default Types;

View File

@@ -0,0 +1,22 @@
export type EnvironmentVariable = {
name: string;
description: string;
required: boolean;
};
export type Extension = {
name: string;
command: string;
is_builtin: boolean;
link?: string;
installation_notes?: string;
environmentVariables?: EnvironmentVariable[];
};
export type Prompt = {
id: string;
title: string;
description: string;
example_prompt: string;
extensions: Extension[];
};

View File

@@ -0,0 +1,6 @@
import { clsx, type ClassValue } from "clsx";
import { twMerge } from "tailwind-merge";
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}

View File

@@ -0,0 +1,36 @@
import type { Prompt } from '@site/src/types/prompt';
const promptContext = require.context(
'../pages/prompt-library/data/prompts',
false,
/\.json$/
);
// Convert the modules into an array of prompts
const prompts: Prompt[] = promptContext.keys().map((key) => {
const prompt = promptContext(key);
return prompt.default || prompt; // handle both ESM and CommonJS modules
});
export async function searchPrompts(query: string): Promise<Prompt[]> {
const searchTerms = query.toLowerCase().split(' ').filter(Boolean);
if (!searchTerms.length) {
return prompts;
}
return prompts.filter((prompt) => {
const searchableText = [
prompt.title,
prompt.description,
prompt.example_prompt,
...prompt.extensions.map(ext => ext.name)
].join(' ').toLowerCase();
return searchTerms.every(term => searchableText.includes(term));
});
}
export async function getPromptById(id: string): Promise<Prompt | null> {
return prompts.find(prompt => prompt.id === id) || null;
}

View File

@@ -1,8 +1,9 @@
{ {
// This file is not used in compilation. It is here just for a nice editor experience.
"extends": "@docusaurus/tsconfig", "extends": "@docusaurus/tsconfig",
"compilerOptions": { "compilerOptions": {
"baseUrl": "." "baseUrl": ".",
"resolveJsonModule": true,
"esModuleInterop": true
}, },
"exclude": [".docusaurus", "build"] "exclude": [".docusaurus", "build"]
} }

View File

@@ -84,7 +84,7 @@
"@algolia/requester-fetch" "5.20.0" "@algolia/requester-fetch" "5.20.0"
"@algolia/requester-node-http" "5.20.0" "@algolia/requester-node-http" "5.20.0"
"@algolia/client-search@>= 4.9.1 < 6", "@algolia/client-search@5.20.0": "@algolia/client-search@5.20.0":
version "5.20.0" version "5.20.0"
resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.20.0.tgz" resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.20.0.tgz"
integrity sha512-KL1zWTzrlN4MSiaK1ea560iCA/UewMbS4ZsLQRPoDTWyrbDKVbztkPwwv764LAqgXk0fvkNZvJ3IelcK7DqhjQ== integrity sha512-KL1zWTzrlN4MSiaK1ea560iCA/UewMbS4ZsLQRPoDTWyrbDKVbztkPwwv764LAqgXk0fvkNZvJ3IelcK7DqhjQ==
@@ -177,7 +177,7 @@
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz"
integrity sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg== integrity sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==
"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.21.3", "@babel/core@^7.25.9", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0": "@babel/core@^7.21.3", "@babel/core@^7.25.9":
version "7.26.0" version "7.26.0"
resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz" resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz"
integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==
@@ -1598,7 +1598,7 @@
utility-types "^3.10.0" utility-types "^3.10.0"
webpack "^5.88.1" webpack "^5.88.1"
"@docusaurus/plugin-content-docs@*", "@docusaurus/plugin-content-docs@3.7.0": "@docusaurus/plugin-content-docs@3.7.0":
version "3.7.0" version "3.7.0"
resolved "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.7.0.tgz" resolved "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.7.0.tgz"
integrity sha512-GXg5V7kC9FZE4FkUZA8oo/NrlRb06UwuICzI6tcbzj0+TVgjq/mpUXXzSgKzMS82YByi4dY2Q808njcBCyy6tQ== integrity sha512-GXg5V7kC9FZE4FkUZA8oo/NrlRb06UwuICzI6tcbzj0+TVgjq/mpUXXzSgKzMS82YByi4dY2Q808njcBCyy6tQ==
@@ -2013,7 +2013,7 @@
"@nodelib/fs.stat" "2.0.5" "@nodelib/fs.stat" "2.0.5"
run-parallel "^1.1.9" run-parallel "^1.1.9"
"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
version "2.0.5" version "2.0.5"
resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
@@ -2152,7 +2152,7 @@
"@svgr/babel-plugin-transform-react-native-svg" "8.1.0" "@svgr/babel-plugin-transform-react-native-svg" "8.1.0"
"@svgr/babel-plugin-transform-svg-component" "8.0.0" "@svgr/babel-plugin-transform-svg-component" "8.0.0"
"@svgr/core@*", "@svgr/core@8.1.0": "@svgr/core@8.1.0":
version "8.1.0" version "8.1.0"
resolved "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz" resolved "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz"
integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==
@@ -2473,7 +2473,7 @@
"@types/history" "^4.7.11" "@types/history" "^4.7.11"
"@types/react" "*" "@types/react" "*"
"@types/react@*", "@types/react@>= 16.8.0 < 19.0.0", "@types/react@>=16": "@types/react@*":
version "18.3.18" version "18.3.18"
resolved "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz" resolved "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz"
integrity sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ== integrity sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==
@@ -2558,7 +2558,7 @@
resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz" resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz"
integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==
"@webassemblyjs/ast@^1.14.1", "@webassemblyjs/ast@1.14.1": "@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1":
version "1.14.1" version "1.14.1"
resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz"
integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==
@@ -2659,7 +2659,7 @@
"@webassemblyjs/wasm-gen" "1.14.1" "@webassemblyjs/wasm-gen" "1.14.1"
"@webassemblyjs/wasm-parser" "1.14.1" "@webassemblyjs/wasm-parser" "1.14.1"
"@webassemblyjs/wasm-parser@^1.14.1", "@webassemblyjs/wasm-parser@1.14.1": "@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1":
version "1.14.1" version "1.14.1"
resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz"
integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==
@@ -2709,7 +2709,7 @@ acorn-walk@^8.0.0:
dependencies: dependencies:
acorn "^8.11.0" acorn "^8.11.0"
"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.8.2: acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.8.2:
version "8.14.0" version "8.14.0"
resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz" resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz"
integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
@@ -2734,12 +2734,7 @@ ajv-formats@^2.1.1:
dependencies: dependencies:
ajv "^8.0.0" ajv "^8.0.0"
ajv-keywords@^3.4.1: ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
version "3.5.2"
resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
ajv-keywords@^3.5.2:
version "3.5.2" version "3.5.2"
resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
@@ -2751,7 +2746,7 @@ ajv-keywords@^5.1.0:
dependencies: dependencies:
fast-deep-equal "^3.1.3" fast-deep-equal "^3.1.3"
ajv@^6.12.2, ajv@^6.12.5, ajv@^6.9.1: ajv@^6.12.2, ajv@^6.12.5:
version "6.12.6" version "6.12.6"
resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -2761,7 +2756,7 @@ ajv@^6.12.2, ajv@^6.12.5, ajv@^6.9.1:
json-schema-traverse "^0.4.1" json-schema-traverse "^0.4.1"
uri-js "^4.2.2" uri-js "^4.2.2"
ajv@^8.0.0, ajv@^8.8.2, ajv@^8.9.0: ajv@^8.0.0, ajv@^8.9.0:
version "8.17.1" version "8.17.1"
resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz"
integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
@@ -2778,7 +2773,7 @@ algoliasearch-helper@^3.22.6:
dependencies: dependencies:
"@algolia/events" "^4.0.1" "@algolia/events" "^4.0.1"
algoliasearch@^5.14.2, algoliasearch@^5.17.1, "algoliasearch@>= 3.1 < 6", "algoliasearch@>= 4.9.1 < 6": algoliasearch@^5.14.2, algoliasearch@^5.17.1:
version "5.20.0" version "5.20.0"
resolved "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.20.0.tgz" resolved "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.20.0.tgz"
integrity sha512-groO71Fvi5SWpxjI9Ia+chy0QBwT61mg6yxJV27f5YFf+Mw+STT75K6SHySpP8Co5LsCrtsbCH5dJZSRtkSKaQ== integrity sha512-groO71Fvi5SWpxjI9Ia+chy0QBwT61mg6yxJV27f5YFf+Mw+STT75K6SHySpP8Co5LsCrtsbCH5dJZSRtkSKaQ==
@@ -3045,7 +3040,7 @@ braces@^3.0.3, braces@~3.0.2:
dependencies: dependencies:
fill-range "^7.1.1" fill-range "^7.1.1"
browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.23.0, browserslist@^4.23.1, browserslist@^4.23.3, browserslist@^4.24.0, browserslist@^4.24.3, "browserslist@>= 4.21.0": browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.23.0, browserslist@^4.23.1, browserslist@^4.23.3, browserslist@^4.24.0, browserslist@^4.24.3:
version "4.24.4" version "4.24.4"
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz"
integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==
@@ -3285,7 +3280,7 @@ clone-deep@^4.0.1:
kind-of "^6.0.2" kind-of "^6.0.2"
shallow-clone "^3.0.0" shallow-clone "^3.0.0"
clsx@^2.0.0: clsx@^2.0.0, clsx@^2.1.1:
version "2.1.1" version "2.1.1"
resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz" resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz"
integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==
@@ -3708,27 +3703,20 @@ debounce@^1.2.1:
resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz" resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz"
integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
debug@^2.6.0: debug@2.6.9, debug@^2.6.0:
version "2.6.9" version "2.6.9"
resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies: dependencies:
ms "2.0.0" ms "2.0.0"
debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@4: debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
version "4.4.0" version "4.4.0"
resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz"
integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
dependencies: dependencies:
ms "^2.1.3" ms "^2.1.3"
debug@2.6.9:
version "2.6.9"
resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
ms "2.0.0"
decode-named-character-reference@^1.0.0: decode-named-character-reference@^1.0.0:
version "1.0.2" version "1.0.2"
resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz" resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz"
@@ -3802,16 +3790,16 @@ del@^6.1.1:
rimraf "^3.0.2" rimraf "^3.0.2"
slash "^3.0.0" slash "^3.0.0"
depd@~1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
depd@2.0.0: depd@2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz"
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
depd@~1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
dequal@^2.0.0: dequal@^2.0.0:
version "2.0.3" version "2.0.3"
resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz"
@@ -4366,7 +4354,7 @@ figures@^3.2.0:
dependencies: dependencies:
escape-string-regexp "^1.0.5" escape-string-regexp "^1.0.5"
file-loader@*, file-loader@^6.2.0: file-loader@^6.2.0:
version "6.2.0" version "6.2.0"
resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz"
integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
@@ -4591,14 +4579,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2:
dependencies: dependencies:
is-glob "^4.0.1" is-glob "^4.0.1"
glob-parent@^6.0.1: glob-parent@^6.0.1, glob-parent@^6.0.2:
version "6.0.2"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
dependencies:
is-glob "^4.0.3"
glob-parent@^6.0.2:
version "6.0.2" version "6.0.2"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
@@ -4707,16 +4688,16 @@ got@^12.1.0:
p-cancelable "^3.0.0" p-cancelable "^3.0.0"
responselike "^3.0.0" responselike "^3.0.0"
graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
version "4.2.11"
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
graceful-fs@4.2.10: graceful-fs@4.2.10:
version "4.2.10" version "4.2.10"
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz"
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
version "4.2.11"
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
gray-matter@^4.0.3: gray-matter@^4.0.3:
version "4.0.3" version "4.0.3"
resolved "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz" resolved "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz"
@@ -4957,6 +4938,11 @@ html-tags@^3.3.1:
resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz" resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz"
integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==
html-url-attributes@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/html-url-attributes/-/html-url-attributes-3.0.1.tgz#83b052cd5e437071b756cd74ae70f708870c2d87"
integrity sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==
html-void-elements@^3.0.0: html-void-elements@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz" resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz"
@@ -5003,16 +4989,6 @@ http-deceiver@^1.2.7:
resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz"
integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
http-errors@~1.6.2:
version "1.6.3"
resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz"
integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
dependencies:
depd "~1.1.2"
inherits "2.0.3"
setprototypeof "1.1.0"
statuses ">= 1.4.0 < 2"
http-errors@2.0.0: http-errors@2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz"
@@ -5024,6 +5000,16 @@ http-errors@2.0.0:
statuses "2.0.1" statuses "2.0.1"
toidentifier "1.0.1" toidentifier "1.0.1"
http-errors@~1.6.2:
version "1.6.3"
resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz"
integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
dependencies:
depd "~1.1.2"
inherits "2.0.3"
setprototypeof "1.1.0"
statuses ">= 1.4.0 < 2"
http-parser-js@>=0.5.1: http-parser-js@>=0.5.1:
version "0.5.9" version "0.5.9"
resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.9.tgz" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.9.tgz"
@@ -5127,7 +5113,7 @@ inflight@^1.0.4:
once "^1.3.0" once "^1.3.0"
wrappy "1" wrappy "1"
inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4: inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
version "2.0.4" version "2.0.4"
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -5137,16 +5123,16 @@ inherits@2.0.3:
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
version "1.3.8"
resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
ini@2.0.0: ini@2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz"
integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==
ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
version "1.3.8"
resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
inline-style-parser@0.2.4: inline-style-parser@0.2.4:
version "0.2.4" version "0.2.4"
resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz" resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz"
@@ -5164,16 +5150,16 @@ invariant@^2.2.4:
dependencies: dependencies:
loose-envify "^1.0.0" loose-envify "^1.0.0"
ipaddr.js@^2.0.1:
version "2.2.0"
resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz"
integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
ipaddr.js@1.9.1: ipaddr.js@1.9.1:
version "1.9.1" version "1.9.1"
resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
ipaddr.js@^2.0.1:
version "2.2.0"
resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz"
integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
is-alphabetical@^2.0.0: is-alphabetical@^2.0.0:
version "2.0.1" version "2.0.1"
resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz" resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz"
@@ -5337,16 +5323,16 @@ is-yarn-global@^0.4.0:
resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz" resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz"
integrity sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ== integrity sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==
isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
isarray@0.0.1: isarray@0.0.1:
version "0.0.1" version "0.0.1"
resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==
isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
isexe@^2.0.0: isexe@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
@@ -6334,6 +6320,11 @@ micromatch@^4.0.2, micromatch@^4.0.5, micromatch@^4.0.8:
braces "^3.0.3" braces "^3.0.3"
picomatch "^2.3.1" picomatch "^2.3.1"
mime-db@1.52.0:
version "1.52.0"
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
"mime-db@>= 1.43.0 < 2": "mime-db@>= 1.43.0 < 2":
version "1.53.0" version "1.53.0"
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz"
@@ -6344,40 +6335,14 @@ mime-db@~1.33.0:
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz"
integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==
mime-db@1.52.0: mime-types@2.1.18, mime-types@~2.1.17:
version "1.52.0"
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
mime-types@^2.1.27:
version "2.1.35"
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
dependencies:
mime-db "1.52.0"
mime-types@^2.1.31:
version "2.1.35"
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
dependencies:
mime-db "1.52.0"
mime-types@~2.1.17, mime-types@2.1.18:
version "2.1.18" version "2.1.18"
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz"
integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==
dependencies: dependencies:
mime-db "~1.33.0" mime-db "~1.33.0"
mime-types@~2.1.24: mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.24, mime-types@~2.1.34:
version "2.1.35"
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
dependencies:
mime-db "1.52.0"
mime-types@~2.1.34:
version "2.1.35" version "2.1.35"
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
@@ -6417,7 +6382,7 @@ minimalistic-assert@^1.0.0:
resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@3.1.2: minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1:
version "3.1.2" version "3.1.2"
resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
@@ -6458,16 +6423,16 @@ mrmime@^2.0.0:
resolved "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz" resolved "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz"
integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==
ms@^2.1.3, ms@2.1.3:
version "2.1.3"
resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
ms@2.0.0: ms@2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
ms@2.1.3, ms@^2.1.3:
version "2.1.3"
resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
multicast-dns@^7.2.5: multicast-dns@^7.2.5:
version "7.2.5" version "7.2.5"
resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz"
@@ -6490,16 +6455,16 @@ nanoid@^3.3.8:
resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz"
integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==
negotiator@~0.6.4:
version "0.6.4"
resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz"
integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==
negotiator@0.6.3: negotiator@0.6.3:
version "0.6.3" version "0.6.3"
resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz"
integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
negotiator@~0.6.4:
version "0.6.4"
resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz"
integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==
neo-async@^2.6.2: neo-async@^2.6.2:
version "2.6.2" version "2.6.2"
resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz"
@@ -6848,13 +6813,6 @@ path-scurry@^1.11.1:
lru-cache "^10.2.0" lru-cache "^10.2.0"
minipass "^5.0.0 || ^6.0.2 || ^7.0.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
path-to-regexp@^1.7.0:
version "1.9.0"
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz"
integrity sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==
dependencies:
isarray "0.0.1"
path-to-regexp@0.1.12: path-to-regexp@0.1.12:
version "0.1.12" version "0.1.12"
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz" resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz"
@@ -6865,6 +6823,13 @@ path-to-regexp@3.3.0:
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz" resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz"
integrity sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw== integrity sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==
path-to-regexp@^1.7.0:
version "1.9.0"
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz"
integrity sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==
dependencies:
isarray "0.0.1"
path-type@^4.0.0: path-type@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
@@ -7491,7 +7456,7 @@ postcss-zindex@^6.0.2:
resolved "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz" resolved "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz"
integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg== integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==
"postcss@^7.0.0 || ^8.0.1", postcss@^8, postcss@^8.0.0, postcss@^8.0.3, postcss@^8.0.9, postcss@^8.1.0, postcss@^8.2.14, postcss@^8.2.2, postcss@^8.4, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.24, postcss@^8.4.26, postcss@^8.4.31, postcss@^8.4.33, postcss@^8.4.35, postcss@^8.4.38, postcss@^8.4.47, postcss@^8.4.6, postcss@>=8.0.9: postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.26, postcss@^8.4.33, postcss@^8.4.35, postcss@^8.4.38, postcss@^8.4.47:
version "8.5.2" version "8.5.2"
resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz" resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz"
integrity sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA== integrity sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==
@@ -7609,21 +7574,16 @@ randombytes@^2.1.0:
dependencies: dependencies:
safe-buffer "^5.1.0" safe-buffer "^5.1.0"
range-parser@^1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
range-parser@~1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
range-parser@1.2.0: range-parser@1.2.0:
version "1.2.0" version "1.2.0"
resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz"
integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==
range-parser@^1.2.1, range-parser@~1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
raw-body@2.5.2: raw-body@2.5.2:
version "2.5.2" version "2.5.2"
resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz"
@@ -7674,7 +7634,7 @@ react-dev-utils@^12.0.1:
strip-ansi "^6.0.1" strip-ansi "^6.0.1"
text-table "^0.2.0" text-table "^0.2.0"
react-dom@*, "react-dom@^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^18.0.0 || ^19.0.0", react-dom@^19.0.0, "react-dom@>= 16.8.0 < 19.0.0": react-dom@^19.0.0:
version "19.0.0" version "19.0.0"
resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz" resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz"
integrity sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ== integrity sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==
@@ -7719,13 +7679,30 @@ react-loadable-ssr-addon-v5-slorber@^1.0.1:
dependencies: dependencies:
"@babel/runtime" "^7.10.3" "@babel/runtime" "^7.10.3"
react-loadable@*, "react-loadable@npm:@docusaurus/react-loadable@6.0.0": "react-loadable@npm:@docusaurus/react-loadable@6.0.0":
version "6.0.0" version "6.0.0"
resolved "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz" resolved "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz"
integrity sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ== integrity sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==
dependencies: dependencies:
"@types/react" "*" "@types/react" "*"
react-markdown@^10.1.0:
version "10.1.0"
resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-10.1.0.tgz#e22bc20faddbc07605c15284255653c0f3bad5ca"
integrity sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==
dependencies:
"@types/hast" "^3.0.0"
"@types/mdast" "^4.0.0"
devlop "^1.0.0"
hast-util-to-jsx-runtime "^2.0.0"
html-url-attributes "^3.0.0"
mdast-util-to-hast "^13.0.0"
remark-parse "^11.0.0"
remark-rehype "^11.0.0"
unified "^11.0.0"
unist-util-visit "^5.0.0"
vfile "^6.0.0"
react-router-config@^5.1.1: react-router-config@^5.1.1:
version "5.1.1" version "5.1.1"
resolved "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz" resolved "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz"
@@ -7746,7 +7723,7 @@ react-router-dom@^5.3.4:
tiny-invariant "^1.0.2" tiny-invariant "^1.0.2"
tiny-warning "^1.0.0" tiny-warning "^1.0.0"
react-router@^5.3.4, react-router@>=5, react-router@5.3.4: react-router@5.3.4, react-router@^5.3.4:
version "5.3.4" version "5.3.4"
resolved "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz" resolved "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz"
integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==
@@ -7761,7 +7738,7 @@ react-router@^5.3.4, react-router@>=5, react-router@5.3.4:
tiny-invariant "^1.0.2" tiny-invariant "^1.0.2"
tiny-warning "^1.0.0" tiny-warning "^1.0.0"
react@*, "react@^16.13.1 || ^17.0.0 || ^18.0.0", "react@^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^18.0.0 || ^19.0.0", react@^19.0.0, "react@>= 16.8.0 < 19.0.0", react@>=15, react@>=16, react@>=16.0.0: react@^19.0.0:
version "19.0.0" version "19.0.0"
resolved "https://registry.npmjs.org/react/-/react-19.0.0.tgz" resolved "https://registry.npmjs.org/react/-/react-19.0.0.tgz"
integrity sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ== integrity sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==
@@ -8123,7 +8100,7 @@ run-parallel@^1.1.9:
dependencies: dependencies:
queue-microtask "^1.2.2" queue-microtask "^1.2.2"
safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
version "5.2.1" version "5.2.1"
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
@@ -8148,16 +8125,16 @@ scheduler@^0.25.0:
resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz" resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz"
integrity sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA== integrity sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==
schema-utils@^3.0.0: schema-utils@2.7.0:
version "3.3.0" version "2.7.0"
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz"
integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
dependencies: dependencies:
"@types/json-schema" "^7.0.8" "@types/json-schema" "^7.0.4"
ajv "^6.12.5" ajv "^6.12.2"
ajv-keywords "^3.5.2" ajv-keywords "^3.4.1"
schema-utils@^3.2.0: schema-utils@^3.0.0, schema-utils@^3.2.0:
version "3.3.0" version "3.3.0"
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz"
integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
@@ -8176,20 +8153,6 @@ schema-utils@^4.0.0, schema-utils@^4.0.1, schema-utils@^4.3.0:
ajv-formats "^2.1.1" ajv-formats "^2.1.1"
ajv-keywords "^5.1.0" ajv-keywords "^5.1.0"
schema-utils@2.7.0:
version "2.7.0"
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz"
integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
dependencies:
"@types/json-schema" "^7.0.4"
ajv "^6.12.2"
ajv-keywords "^3.4.1"
"search-insights@>= 1 < 3":
version "2.17.3"
resolved "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz"
integrity sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==
section-matter@^1.0.0: section-matter@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz" resolved "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz"
@@ -8476,7 +8439,7 @@ source-map-support@~0.5.20:
buffer-from "^1.0.0" buffer-from "^1.0.0"
source-map "^0.6.0" source-map "^0.6.0"
source-map@^0.6.0: source-map@^0.6.0, source-map@~0.6.0:
version "0.6.1" version "0.6.1"
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
@@ -8486,11 +8449,6 @@ source-map@^0.7.0:
resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz"
integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
source-map@~0.6.0:
version "0.6.1"
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
space-separated-tokens@^2.0.0: space-separated-tokens@^2.0.0:
version "2.0.2" version "2.0.2"
resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz" resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz"
@@ -8529,35 +8487,21 @@ srcset@^4.0.0:
resolved "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz" resolved "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz"
integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw== integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==
"statuses@>= 1.4.0 < 2":
version "1.5.0"
resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
statuses@2.0.1: statuses@2.0.1:
version "2.0.1" version "2.0.1"
resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz"
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
"statuses@>= 1.4.0 < 2":
version "1.5.0"
resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
std-env@^3.7.0: std-env@^3.7.0:
version "3.8.0" version "3.8.0"
resolved "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz" resolved "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz"
integrity sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w== integrity sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==
string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
dependencies:
safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
"string-width-cjs@npm:string-width@^4.2.0": "string-width-cjs@npm:string-width@^4.2.0":
version "4.2.3" version "4.2.3"
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
@@ -8567,16 +8511,7 @@ string_decoder@~1.1.1:
is-fullwidth-code-point "^3.0.0" is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1" strip-ansi "^6.0.1"
string-width@^4.1.0: string-width@^4.1.0, string-width@^4.2.0:
version "4.2.3"
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
dependencies:
emoji-regex "^8.0.0"
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
string-width@^4.2.0:
version "4.2.3" version "4.2.3"
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -8594,6 +8529,20 @@ string-width@^5.0.1, string-width@^5.1.2:
emoji-regex "^9.2.2" emoji-regex "^9.2.2"
strip-ansi "^7.0.1" strip-ansi "^7.0.1"
string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
dependencies:
safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
stringify-entities@^4.0.0: stringify-entities@^4.0.0:
version "4.0.4" version "4.0.4"
resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz" resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz"
@@ -8717,6 +8666,11 @@ svgo@^3.0.2, svgo@^3.2.0:
csso "^5.0.5" csso "^5.0.5"
picocolors "^1.0.0" picocolors "^1.0.0"
tailwind-merge@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-3.0.2.tgz#567eff76de12211e24dd909da0f5ed6f4f422b0c"
integrity sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==
tailwindcss@^3.4.1: tailwindcss@^3.4.1:
version "3.4.17" version "3.4.17"
resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz" resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz"
@@ -8877,7 +8831,7 @@ typedarray-to-buffer@^3.1.5:
dependencies: dependencies:
is-typedarray "^1.0.0" is-typedarray "^1.0.0"
"typescript@>= 2.7", typescript@>=4.9.5, typescript@~5.6.2: typescript@~5.6.2:
version "5.6.3" version "5.6.3"
resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz" resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz"
integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==
@@ -8985,7 +8939,7 @@ universalify@^2.0.0:
resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz"
integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
unpipe@~1.0.0, unpipe@1.0.0: unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
@@ -9201,7 +9155,7 @@ webpack-sources@^3.2.3:
resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz"
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.88.1, webpack@^5.95.0, "webpack@>= 4", "webpack@>=4.41.1 || 5.x", webpack@>=5, "webpack@3 || 4 || 5": webpack@^5.88.1, webpack@^5.95.0:
version "5.97.1" version "5.97.1"
resolved "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz" resolved "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz"
integrity sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg== integrity sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==
@@ -9244,7 +9198,7 @@ webpackbar@^6.0.1:
std-env "^3.7.0" std-env "^3.7.0"
wrap-ansi "^7.0.0" wrap-ansi "^7.0.0"
websocket-driver@^0.7.4, websocket-driver@>=0.5.1: websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
version "0.7.4" version "0.7.4"
resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz"
integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==