From ffc1f319c14d9cbd63490e9cb7c250d56339300a Mon Sep 17 00:00:00 2001 From: aspectrr Date: Wed, 3 Dec 2025 09:56:50 -0500 Subject: [PATCH 1/2] feat: add pplx to run --- manifest.json | 268 ++++++++++++++++++++++++++++++++------ source/utils/constants.ts | 4 +- source/utils/registry.ts | 98 +++++++------- 3 files changed, 280 insertions(+), 90 deletions(-) diff --git a/manifest.json b/manifest.json index 378da5b..54ed17c 100644 --- a/manifest.json +++ b/manifest.json @@ -1,50 +1,85 @@ { "name": "Steel Registry", "description": "A collection of examples for using Steel", - "version": "441018c", + "version": "a363798", "groups": [ { "id": "playwright-starter", - "title": "Using Playwright with Steel", + "title": "Playwright", "accentColor": "blue", "category": "BROWSER_AUTOMATION", "description": "A starter project for using Playwright with Steel", - "flags": ["cli", "guide", "playground"] + "flags": ["cli", "guide", "playground"], + "thumbnail": "https://registry.steel-edge.net/playwright-starter/thumbnail.webp?v=a363798" }, { "id": "puppeteer-starter", - "title": "Using Puppeteer with Steel", + "title": "Puppeteer", "accentColor": "yellow", "category": "BROWSER_AUTOMATION", "description": "A starter project for using Puppeteer with Steel", - "flags": ["cli", "guide", "playground"] + "flags": ["cli", "guide", "playground"], + "thumbnail": "https://registry.steel-edge.net/puppeteer-starter/thumbnail.webp?v=a363798" }, { "id": "oai-computer-use", - "title": "Using Steel with OpenAI's Computer Use API", + "title": "OpenAIs Computer Use", "accentColor": "orange", "category": "AI_AUTOMATION", "description": "Create a browser automation agent with Steel and OpenAI's Computer Use Assistant.", - "flags": ["cli", "playground"] + "flags": ["cli", "guide", "playground"], + "thumbnail": "https://registry.steel-edge.net/oai-computer-use/thumbnail.webp?v=a363798" }, { "id": "claude-computer-use", - "title": "Using Steel with Claude's Computer Use API", + "title": "Claudes Computer Use", "accentColor": "purple", "category": "AI_AUTOMATION", "description": "Create a browser automation agent with Steel and Claude's Computer Use API.", - "flags": ["cli", "playground"] + "flags": ["cli", "guide", "playground"], + "thumbnail": "https://registry.steel-edge.net/claude-computer-use/thumbnail.webp?v=a363798" }, { "id": "stagehand-starter", - "title": "Using Steel with Stagehand for AI-Powered Automations", + "title": "Stagehand", "accentColor": "green", "category": "AI_AUTOMATION", "description": "A starter project demonstrating how to use Steel with Stagehand for AI-powered browser automations.", - "flags": ["cli", "playground"] + "flags": ["cli", "guide", "playground"], + "thumbnail": "https://registry.steel-edge.net/stagehand-starter/thumbnail.webp?v=a363798" } ], "examples": [ + { + "slug": "steel-agent-kit-starter", + "id": "steel-agent-kit-starter", + "title": "Using Steel with Agent Kit", + "category": "AI_AGENTS", + "stack": "nodejs", + "description": "A starter demonstrating how to use Steel with Agent Kit.", + "flags": ["cli", "playground"], + "directory": "examples/steel-agent-kit-starter", + "language": "typescript", + "docs": "", + "shorthand": "agent-kit", + "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-agent-kit-starter", + "template": "templates/steel-agent-kit-starter.tar.gz" + }, + { + "slug": "steel-agno-starter", + "id": "steel-agno-starter", + "title": "Using Steel with Agno", + "category": "AI_AGENTS", + "stack": "python", + "description": "A starter demonstrating how to use Steel with Agno.", + "flags": ["cli", "playground"], + "directory": "examples/steel-agno-starter", + "language": "python", + "docs": "", + "shorthand": "agno", + "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-agno-starter", + "template": "templates/steel-agno-starter.tar.gz" + }, { "slug": "steel-auth-context-starter", "id": "steel-auth-context-starter", @@ -57,13 +92,29 @@ "directory": "examples/steel-auth-context-starter", "language": "typescript", "shorthand": "auth", + "docs": "https://docs.steel.dev/overview/guides/reusing-contexts-auth", "template": "templates/steel-auth-context-starter.tar.gz" }, + { + "slug": "steel-browser-use-captcha-solver-starter", + "id": "steel-browser-use-captcha-solver-starter", + "title": "Browser-use using Steel Captcha Solver", + "accentColor": "green", + "category": "AI_AGENTS", + "stack": "python", + "description": "Build an AI Agent that can solve captchas using Steel", + "flags": ["cli", "playground"], + "directory": "examples/steel-browser-use-captcha-solver-starter", + "language": "python", + "shorthand": "browser-use-captcha-solver", + "docs": "https://docs.steel.dev/integrations/browser-use/captcha-solving", + "template": "templates/steel-browser-use-captcha-solver-starter.tar.gz" + }, { "slug": "steel-browser-use-starter", "id": "steel-browser-use-starter", - "title": "Using Steel with Browser Use", - "accentColor": "purple", + "title": "Browser Use", + "accentColor": "red", "category": "AI_AGENTS", "stack": "python", "description": "Build an AI Agent with Steel and browser-use", @@ -71,7 +122,12 @@ "directory": "examples/steel-browser-use-starter", "language": "python", "shorthand": "browser-use", - "template": "templates/steel-browser-use-starter.tar.gz" + "docs": "https://docs.steel.dev/overview/integrations/browser-use/overview", + "playgroundLink": "", + "replitLink": "", + "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-browser-use-starter", + "template": "templates/steel-browser-use-starter.tar.gz", + "thumbnail": "https://registry.steel-edge.net/steel-browser-use-starter/thumbnail.webp?v=a363798" }, { "slug": "steel-claude-computer-use-node-starter", @@ -81,12 +137,17 @@ "category": "AI_AUTOMATION", "stack": "nodejs", "description": "A starter project demonstrating how to use Steel with Anthropic's Claude Computer Use API in Node.js to create a browser automation agent.", - "flags": ["cli", "playground"], + "flags": ["cli", "guide", "playground"], "directory": "examples/steel-claude-computer-use-node-starter", "groupId": "claude-computer-use", "language": "typescript", "shorthand": "claude-cua", - "template": "templates/steel-claude-computer-use-node-starter.tar.gz" + "docs": "https://docs.steel.dev/overview/integrations/claude-computer-use/quickstart-tsnode", + "playgroundLink": "", + "replitLink": "", + "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-claude-computer-use-node-starter", + "template": "templates/steel-claude-computer-use-node-starter.tar.gz", + "thumbnail": "https://registry.steel-edge.net/claude-computer-use/thumbnail.webp?v=a363798" }, { "slug": "steel-claude-computer-use-python-starter", @@ -96,12 +157,17 @@ "category": "AI_AUTOMATION", "stack": "python", "description": "A starter project demonstrating how to use Steel with Anthropic's Claude Computer Use API in Python to create a browser automation agent.", - "flags": ["cli", "playground"], + "flags": ["cli", "guide", "playground"], "directory": "examples/steel-claude-computer-use-python-starter", "groupId": "claude-computer-use", "language": "python", "shorthand": "claude-cua-py", - "template": "templates/steel-claude-computer-use-python-starter.tar.gz" + "docs": "https://docs.steel.dev/overview/integrations/claude-computer-use/quickstart-python", + "playgroundLink": "", + "replitLink": "", + "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-claude-computer-use-python-starter", + "template": "templates/steel-claude-computer-use-python-starter.tar.gz", + "thumbnail": "https://registry.steel-edge.net/claude-computer-use/thumbnail.webp?v=a363798" }, { "slug": "steel-credentials-starter", @@ -115,8 +181,39 @@ "directory": "examples/steel-credentials-starter", "language": "typescript", "shorthand": "creds", + "docs": "https://docs.steel.dev/overview/credentials-api/overview", "template": "templates/steel-credentials-starter.tar.gz" }, + { + "slug": "steel-crew-ai-starter", + "id": "steel-crew-ai-starter", + "title": "Using Steel with CrewAI", + "category": "AI_AGENTS", + "stack": "python", + "description": "A starter demonstrating how to use Steel with CrewAI", + "flags": ["cli", "playground"], + "directory": "examples/steel-crew-ai-starter", + "language": "python", + "docs": "", + "shorthand": "crew-ai", + "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-crew-ai-starter", + "template": "templates/steel-crew-ai-starter.tar.gz" + }, + { + "slug": "steel-extensions-starter", + "id": "steel-extensions-starter", + "title": "Using the Steel Extensions API with GitHub Stats", + "accentColor": "green", + "category": "BROWSER_AUTOMATION", + "stack": "nodejs", + "description": "A starter project for using the Steel Extensions API with a GitHub Stats extension, Playwright on Node.js & TypeScript.", + "flags": ["cli", "playground"], + "directory": "examples/steel-extensions-starter", + "language": "typescript", + "shorthand": "extensions", + "docs": "https://docs.steel.dev/overview/extensions-api/overview", + "template": "templates/steel-extensions-starter.tar.gz" + }, { "slug": "steel-files-api-starter", "id": "steel-files-api-starter", @@ -125,25 +222,46 @@ "category": "BROWSER_AUTOMATION", "stack": "nodejs", "description": "A starter project for using the Steel Files API with Playwright on Node.js & TypeScript.", - "flags": ["cli", "playground"], + "flags": ["cli"], "directory": "examples/steel-files-api-starter", "language": "typescript", "shorthand": "files", + "docs": "https://docs.steel.dev/overview/files-api/overview", "template": "templates/steel-files-api-starter.tar.gz" }, { "slug": "steel-magnitude-starter", "id": "steel-magnitude-starter", - "title": "Using Steel with Magnitude", + "title": "Magnitude", "accentColor": "blue", "category": "AI_AUTOMATION", "stack": "nodejs", - "description": "A starter project demonstrating how to use Steel with Magnitude in Node.js & TypeScript for AI-powered browser automations.", - "flags": ["cli", "playground"], + "description": "Build an AI Agent with Steel and Magnitude", + "flags": ["cli", "guide", "playground"], "directory": "examples/steel-magnitude-starter", "language": "typescript", "shorthand": "magnitude", - "template": "templates/steel-magnitude-starter.tar.gz" + "docs": "https://docs.steel.dev/overview/integrations/magnitude/quickstart", + "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-magnitude-starter", + "template": "templates/steel-magnitude-starter.tar.gz", + "thumbnail": "https://registry.steel-edge.net/steel-magnitude-starter/thumbnail.webp?v=a363798" + }, + { + "slug": "steel-notte-starter", + "id": "steel-notte-starter", + "title": "Notte", + "accentColor": "purple", + "category": "AI_AUTOMATION", + "stack": "python", + "description": "Build an AI Agent with Steel and Notte", + "flags": ["cli", "guide"], + "directory": "examples/steel-notte-starter", + "language": "python", + "shorthand": "notte", + "docs": "https://docs.steel.dev/overview/integrations/notte/quickstart-python", + "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-notte-starter", + "template": "templates/steel-notte-starter.tar.gz", + "thumbnail": "https://registry.steel-edge.net/steel-notte-starter/thumbnail.webp?v=a363798" }, { "slug": "steel-oai-computer-use-node-starter", @@ -153,12 +271,17 @@ "category": "AI_AGENTS", "stack": "nodejs", "description": "A starter project for integrating Steel with OpenAI's Computer Use Assistant API to create a browser automation agent.", - "flags": ["cli", "playground"], + "flags": ["cli", "guide", "playground"], "directory": "examples/steel-oai-computer-use-node-starter", "groupId": "oai-computer-use", "language": "typescript", "shorthand": "oai-cua", - "template": "templates/steel-oai-computer-use-node-starter.tar.gz" + "docs": "https://docs.steel.dev/overview/integrations/openai-computer-use/quickstart-tsnode", + "playgroundLink": "", + "replitLink": "", + "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-oai-computer-use-node-starter", + "template": "templates/steel-oai-computer-use-node-starter.tar.gz", + "thumbnail": "https://registry.steel-edge.net/oai-computer-use/thumbnail.webp?v=a363798" }, { "slug": "steel-oai-computer-use-python-starter", @@ -168,12 +291,36 @@ "category": "AI_AGENTS", "stack": "python", "description": "A starter project for integrating Steel with OpenAI's Computer Use Assistant API to create a browser automation agent.", - "flags": ["cli", "playground"], + "flags": ["cli", "guide", "playground"], "directory": "examples/steel-oai-computer-use-python-starter", "groupId": "oai-computer-use", "language": "python", "shorthand": "oai-cua-py", - "template": "templates/steel-oai-computer-use-python-starter.tar.gz" + "docs": "https://docs.steel.dev/overview/integrations/openai-computer-use/quickstart-python", + "playgroundLink": "", + "replitLink": "", + "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-oai-computer-use-python-starter", + "template": "templates/steel-oai-computer-use-python-starter.tar.gz", + "thumbnail": "https://registry.steel-edge.net/oai-computer-use/thumbnail.webp?v=a363798" + }, + { + "slug": "steel-perplexity-clone", + "id": "steel-perplexity-clone", + "title": "Build a Perplexity‑style Search Engine", + "description": "Search with Brave, scrape with Steel, and synthesize with OpenAI using a TypeScript CLI", + "accentColor": "blue", + "category": "AI_AUTOMATION", + "stack": "nodejs", + "language": "typescript", + "shorthand": "perplexity", + "directory": "examples/steel-perplexity-clone", + "groupId": "perplexity-clone", + "flags": ["guide", "playground", "cli"], + "docs": "https://docs.steel.dev/overview/guides/perplexity", + "playgroundLink": "", + "replitLink": "", + "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-perplexity-clone", + "template": "templates/steel-perplexity-clone.tar.gz" }, { "slug": "steel-playwright-python-starter", @@ -188,7 +335,12 @@ "groupId": "playwright-starter", "language": "python", "shorthand": "playwright-py", - "template": "templates/steel-playwright-python-starter.tar.gz" + "docs": "https://docs.steel.dev/overview/guides/connect-with-playwright-python", + "playgroundLink": "", + "replitLink": "", + "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-playwright-python-starter", + "template": "templates/steel-playwright-python-starter.tar.gz", + "thumbnail": "https://registry.steel-edge.net/playwright-starter/thumbnail.webp?v=a363798" }, { "slug": "steel-playwright-starter-js", @@ -198,12 +350,14 @@ "category": "BROWSER_AUTOMATION", "stack": "nodejs", "description": "A starter project for using Playwright with Steel on Node.js.", - "flags": ["cli", "playground"], + "flags": ["cli"], "directory": "examples/steel-playwright-starter-js", "groupId": "playwright-starter", "language": "javascript", "shorthand": "playwright-js", - "template": "templates/steel-playwright-starter-js.tar.gz" + "docs": "https://docs.steel.dev/overview/guides/connect-with-playwright-node", + "template": "templates/steel-playwright-starter-js.tar.gz", + "thumbnail": "https://registry.steel-edge.net/playwright-starter/thumbnail.webp?v=a363798" }, { "slug": "steel-playwright-starter", @@ -218,7 +372,27 @@ "groupId": "playwright-starter", "language": "typescript", "shorthand": "playwright", - "template": "templates/steel-playwright-starter.tar.gz" + "docs": "https://docs.steel.dev/overview/guides/connect-with-playwright-node", + "playgroundLink": "", + "replitLink": "", + "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-playwright-starter", + "template": "templates/steel-playwright-starter.tar.gz", + "thumbnail": "https://registry.steel-edge.net/playwright-starter/thumbnail.webp?v=a363798" + }, + { + "slug": "steel-profiles-starter", + "id": "steel-profiles-starter", + "title": "Using the Steel Profiles API to authenticate at Steel.dev", + "accentColor": "purple", + "category": "BROWSER_AUTOMATION", + "stack": "nodejs", + "description": "A starter project for using the Steel Profiles API to authenticate and reuse the context, Playwright on Node.js & TypeScript.", + "flags": ["cli", "playground"], + "directory": "examples/steel-profiles-starter", + "language": "typescript", + "shorthand": "profiles", + "docs": "https://docs.steel.dev/overview/profiles-api/overview", + "template": "templates/steel-profiles-starter.tar.gz" }, { "slug": "steel-puppeteer-starter-js", @@ -233,7 +407,9 @@ "groupId": "puppeteer-starter", "language": "javascript", "shorthand": "puppeteer-js", - "template": "templates/steel-puppeteer-starter-js.tar.gz" + "docs": "https://docs.steel.dev/overview/guides/connect-with-puppeteer", + "template": "templates/steel-puppeteer-starter-js.tar.gz", + "thumbnail": "https://registry.steel-edge.net/puppeteer-starter/thumbnail.webp?v=a363798" }, { "slug": "steel-puppeteer-starter", @@ -248,7 +424,12 @@ "groupId": "puppeteer-starter", "language": "typescript", "shorthand": "puppeteer", - "template": "templates/steel-puppeteer-starter.tar.gz" + "docs": "https://docs.steel.dev/overview/guides/connect-with-puppeteer", + "playgroundLink": "", + "replitLink": "", + "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-puppeteer-starter", + "template": "templates/steel-puppeteer-starter.tar.gz", + "thumbnail": "https://registry.steel-edge.net/puppeteer-starter/thumbnail.webp?v=a363798" }, { "slug": "steel-selenium-starter", @@ -258,10 +439,11 @@ "category": "BROWSER_AUTOMATION", "stack": "python", "description": "A starter project for using Selenium with Steel on Python.", - "flags": ["cli", "playground"], + "flags": ["cli"], "directory": "examples/steel-selenium-starter", "language": "python", "shorthand": "selenium", + "docs": "https://docs.steel.dev/overview/guides/connect-with-selenium", "template": "templates/steel-selenium-starter.tar.gz" }, { @@ -272,12 +454,17 @@ "category": "AI_AUTOMATION", "stack": "nodejs", "description": "A starter project demonstrating how to use Steel with Stagehand in Node.js & TypeScript for AI-powered browser automations.", - "flags": ["cli", "playground"], + "flags": ["cli", "guide", "playground"], "directory": "examples/steel-stagehand-node-starter", "groupId": "stagehand-starter", "language": "typescript", "shorthand": "stagehand", - "template": "templates/steel-stagehand-node-starter.tar.gz" + "docs": "https://docs.steel.dev/overview/integrations/stagehand/quickstart-tsnode", + "playgroundLink": "", + "replitLink": "", + "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-stagehand-node-starter", + "template": "templates/steel-stagehand-node-starter.tar.gz", + "thumbnail": "https://registry.steel-edge.net/stagehand-starter/thumbnail.webp?v=a363798" }, { "slug": "steel-stagehand-python-starter", @@ -287,12 +474,17 @@ "category": "AI_AUTOMATION", "stack": "python", "description": "A starter project demonstrating how to use Steel with Stagehand in Python for AI-powered browser automations.", - "flags": ["cli", "playground"], + "flags": ["cli", "guide", "playground"], "directory": "examples/steel-stagehand-python-starter", "groupId": "stagehand-starter", "language": "python", "shorthand": "stagehand-py", - "template": "templates/steel-stagehand-python-starter.tar.gz" + "docs": "https://docs.steel.dev/overview/integrations/stagehand/quickstart-python", + "playgroundLink": "", + "replitLink": "", + "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-stagehand-python-starter", + "template": "templates/steel-stagehand-python-starter.tar.gz", + "thumbnail": "https://registry.steel-edge.net/stagehand-starter/thumbnail.webp?v=a363798" } ] } diff --git a/source/utils/constants.ts b/source/utils/constants.ts index e19073d..f1e2960 100644 --- a/source/utils/constants.ts +++ b/source/utils/constants.ts @@ -1,6 +1,6 @@ import path from 'path'; import os from 'os'; -import type {TemplateOptions, Template} from './types.js'; +import type {Template} from './types.js'; import {loadManifest, convertManifestToTemplates} from './registry.js'; export const LOGIN_URL = 'https://app.steel.dev/sign-in'; @@ -19,8 +19,10 @@ export const ENV_VAR_MAP = { openai_key: 'OPENAI_API_KEY', anthropic_key: 'ANTHROPIC_API_KEY', gemini_key: 'GEMINI_API_KEY', + brave_key: 'BRAVE_API_KEY', api_url: 'STEEL_API_URL', task: 'TASK', + query: 'QUERY', }; let _templates: Template[] | null = null; diff --git a/source/utils/registry.ts b/source/utils/registry.ts index b07b143..277a6ae 100644 --- a/source/utils/registry.ts +++ b/source/utils/registry.ts @@ -11,6 +11,42 @@ const __dirname = path.dirname(__filename); const REGISTRY_BASE_URL = 'https://registry.steel-edge.net'; const MANIFEST_PATH = path.resolve(__dirname, '../../manifest.json'); +const BASE_ENV: EnvVar[] = [ + {value: 'STEEL_API_KEY', label: 'Steel API key'}, + {value: 'STEEL_CONNECT_URL', label: 'Steel Connect URL'}, + {value: 'STEEL_API_URL', label: 'Steel API URL'}, +]; + +// If needing to add more environment variables, add them here for specific examples +const CATEGORY_ENV_MAP: Record = { + openai: [ + {value: 'OPENAI_API_KEY', label: 'OpenAI API key', required: true}, + {value: 'TASK', label: 'Task for the agent'}, + ], + claude: [ + {value: 'ANTHROPIC_API_KEY', label: 'Anthropic API key', required: true}, + {value: 'TASK', label: 'Task for the agent'}, + ], + anthropic: [ + {value: 'ANTHROPIC_API_KEY', label: 'Anthropic API key', required: true}, + {value: 'TASK', label: 'Task for the agent'}, + ], + magnitude: [ + {value: 'ANTHROPIC_API_KEY', label: 'Anthropic API key', required: true}, + ], + notte: [{value: 'GEMINI_API_KEY', label: 'Gemini API key', required: true}], + stagehand: [ + {value: 'OPENAI_API_KEY', label: 'OpenAI API key', required: true}, + ], + perplexity: [ + {value: 'BRAVE_API_KEY', label: 'Brave API key', required: true}, + {value: 'OPENAI_API_KEY', label: 'OpenAI API key', required: true}, + {value: 'QUERY', label: 'Query to search for', required: true}, + ], +}; + +type EnvVar = {value: string; label: string; required?: boolean}; + type ManifestGroup = { id: string; title: string; @@ -61,7 +97,7 @@ export function convertManifestToTemplates(manifest: Manifest): Template[] { alias: example.slug, label: example.title, value: example.id, - language: mapLanguage(example.language, example.stack), + language: mapLanguage(example.language), category: example.category, accentColor: example.accentColor, groupId: example.groupId, @@ -77,66 +113,26 @@ export function convertManifestToTemplates(manifest: Manifest): Template[] { }); } -function mapLanguage(language: string, stack: string): string { +function mapLanguage(language: string): string { if (language === 'typescript') return 'TS'; if (language === 'javascript') return 'JS'; if (language === 'python') return 'PY'; return language.toUpperCase(); } -function getEnvironmentVariables( - example: ManifestExample, -): {value: string; label: string; required?: boolean}[] { - const baseEnv: {value: string; label: string; required?: boolean}[] = [ - {value: 'STEEL_API_KEY', label: 'Steel API key'}, - {value: 'STEEL_CONNECT_URL', label: 'Steel Connect URL'}, - {value: 'STEEL_API_URL', label: 'Steel API URL'}, - ]; - +function getEnvironmentVariables(example: ManifestExample): EnvVar[] { if ( - example.category === 'AI_AGENTS' || - example.category === 'AI_AUTOMATION' + example.category !== 'AI_AGENTS' && + example.category !== 'AI_AUTOMATION' ) { - if (example.id.includes('oai') || example.id.includes('openai')) { - baseEnv.push({ - value: 'OPENAI_API_KEY', - label: 'OpenAI API key', - required: true, - }); - baseEnv.push({value: 'TASK', label: 'Task for the agent'}); - } - if (example.id.includes('claude') || example.id.includes('anthropic')) { - baseEnv.push({ - value: 'ANTHROPIC_API_KEY', - label: 'Anthropic API key', - required: true, - }); - baseEnv.push({value: 'TASK', label: 'Task for the agent'}); - } - if (example.id.includes('magnitude')) { - baseEnv.push({ - value: 'ANTHROPIC_API_KEY', - label: 'Anthropic API key', - required: true, - }); - } - if (example.id.includes('notte')) { - baseEnv.push({ - value: 'GEMINI_API_KEY', - label: 'Gemini API key', - required: true, - }); - } - if (example.id.includes('stagehand')) { - baseEnv.push({ - value: 'OPENAI_API_KEY', - label: 'OpenAI API key', - required: true, - }); - } + return [...BASE_ENV]; } - return baseEnv; + const extraEnv = Object.entries(CATEGORY_ENV_MAP) + .filter(([key]) => example.id.includes(key)) + .flatMap(([, envs]) => envs); + + return [...BASE_ENV, ...extraEnv]; } function getDependencyCommands(example: ManifestExample) { From 64f27a3fd8aaa62a273698c6916863cfc57c1ede Mon Sep 17 00:00:00 2001 From: aspectrr Date: Wed, 3 Dec 2025 16:43:22 -0500 Subject: [PATCH 2/2] chore: update manifest --- manifest.json | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/manifest.json b/manifest.json index 54ed17c..a23b69c 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "name": "Steel Registry", "description": "A collection of examples for using Steel", - "version": "a363798", + "version": "48170c9", "groups": [ { "id": "playwright-starter", @@ -10,7 +10,7 @@ "category": "BROWSER_AUTOMATION", "description": "A starter project for using Playwright with Steel", "flags": ["cli", "guide", "playground"], - "thumbnail": "https://registry.steel-edge.net/playwright-starter/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/playwright-starter/thumbnail.webp?v=48170c9" }, { "id": "puppeteer-starter", @@ -19,7 +19,7 @@ "category": "BROWSER_AUTOMATION", "description": "A starter project for using Puppeteer with Steel", "flags": ["cli", "guide", "playground"], - "thumbnail": "https://registry.steel-edge.net/puppeteer-starter/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/puppeteer-starter/thumbnail.webp?v=48170c9" }, { "id": "oai-computer-use", @@ -28,7 +28,7 @@ "category": "AI_AUTOMATION", "description": "Create a browser automation agent with Steel and OpenAI's Computer Use Assistant.", "flags": ["cli", "guide", "playground"], - "thumbnail": "https://registry.steel-edge.net/oai-computer-use/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/oai-computer-use/thumbnail.webp?v=48170c9" }, { "id": "claude-computer-use", @@ -37,7 +37,7 @@ "category": "AI_AUTOMATION", "description": "Create a browser automation agent with Steel and Claude's Computer Use API.", "flags": ["cli", "guide", "playground"], - "thumbnail": "https://registry.steel-edge.net/claude-computer-use/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/claude-computer-use/thumbnail.webp?v=48170c9" }, { "id": "stagehand-starter", @@ -46,7 +46,7 @@ "category": "AI_AUTOMATION", "description": "A starter project demonstrating how to use Steel with Stagehand for AI-powered browser automations.", "flags": ["cli", "guide", "playground"], - "thumbnail": "https://registry.steel-edge.net/stagehand-starter/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/stagehand-starter/thumbnail.webp?v=48170c9" } ], "examples": [ @@ -127,7 +127,7 @@ "replitLink": "", "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-browser-use-starter", "template": "templates/steel-browser-use-starter.tar.gz", - "thumbnail": "https://registry.steel-edge.net/steel-browser-use-starter/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/steel-browser-use-starter/thumbnail.webp?v=48170c9" }, { "slug": "steel-claude-computer-use-node-starter", @@ -147,7 +147,7 @@ "replitLink": "", "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-claude-computer-use-node-starter", "template": "templates/steel-claude-computer-use-node-starter.tar.gz", - "thumbnail": "https://registry.steel-edge.net/claude-computer-use/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/claude-computer-use/thumbnail.webp?v=48170c9" }, { "slug": "steel-claude-computer-use-python-starter", @@ -167,7 +167,7 @@ "replitLink": "", "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-claude-computer-use-python-starter", "template": "templates/steel-claude-computer-use-python-starter.tar.gz", - "thumbnail": "https://registry.steel-edge.net/claude-computer-use/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/claude-computer-use/thumbnail.webp?v=48170c9" }, { "slug": "steel-credentials-starter", @@ -244,7 +244,7 @@ "docs": "https://docs.steel.dev/overview/integrations/magnitude/quickstart", "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-magnitude-starter", "template": "templates/steel-magnitude-starter.tar.gz", - "thumbnail": "https://registry.steel-edge.net/steel-magnitude-starter/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/steel-magnitude-starter/thumbnail.webp?v=48170c9" }, { "slug": "steel-notte-starter", @@ -261,7 +261,7 @@ "docs": "https://docs.steel.dev/overview/integrations/notte/quickstart-python", "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-notte-starter", "template": "templates/steel-notte-starter.tar.gz", - "thumbnail": "https://registry.steel-edge.net/steel-notte-starter/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/steel-notte-starter/thumbnail.webp?v=48170c9" }, { "slug": "steel-oai-computer-use-node-starter", @@ -281,7 +281,7 @@ "replitLink": "", "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-oai-computer-use-node-starter", "template": "templates/steel-oai-computer-use-node-starter.tar.gz", - "thumbnail": "https://registry.steel-edge.net/oai-computer-use/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/oai-computer-use/thumbnail.webp?v=48170c9" }, { "slug": "steel-oai-computer-use-python-starter", @@ -301,7 +301,7 @@ "replitLink": "", "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-oai-computer-use-python-starter", "template": "templates/steel-oai-computer-use-python-starter.tar.gz", - "thumbnail": "https://registry.steel-edge.net/oai-computer-use/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/oai-computer-use/thumbnail.webp?v=48170c9" }, { "slug": "steel-perplexity-clone", @@ -340,7 +340,7 @@ "replitLink": "", "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-playwright-python-starter", "template": "templates/steel-playwright-python-starter.tar.gz", - "thumbnail": "https://registry.steel-edge.net/playwright-starter/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/playwright-starter/thumbnail.webp?v=48170c9" }, { "slug": "steel-playwright-starter-js", @@ -357,7 +357,7 @@ "shorthand": "playwright-js", "docs": "https://docs.steel.dev/overview/guides/connect-with-playwright-node", "template": "templates/steel-playwright-starter-js.tar.gz", - "thumbnail": "https://registry.steel-edge.net/playwright-starter/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/playwright-starter/thumbnail.webp?v=48170c9" }, { "slug": "steel-playwright-starter", @@ -377,7 +377,7 @@ "replitLink": "", "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-playwright-starter", "template": "templates/steel-playwright-starter.tar.gz", - "thumbnail": "https://registry.steel-edge.net/playwright-starter/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/playwright-starter/thumbnail.webp?v=48170c9" }, { "slug": "steel-profiles-starter", @@ -409,7 +409,7 @@ "shorthand": "puppeteer-js", "docs": "https://docs.steel.dev/overview/guides/connect-with-puppeteer", "template": "templates/steel-puppeteer-starter-js.tar.gz", - "thumbnail": "https://registry.steel-edge.net/puppeteer-starter/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/puppeteer-starter/thumbnail.webp?v=48170c9" }, { "slug": "steel-puppeteer-starter", @@ -429,7 +429,7 @@ "replitLink": "", "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-puppeteer-starter", "template": "templates/steel-puppeteer-starter.tar.gz", - "thumbnail": "https://registry.steel-edge.net/puppeteer-starter/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/puppeteer-starter/thumbnail.webp?v=48170c9" }, { "slug": "steel-selenium-starter", @@ -464,7 +464,7 @@ "replitLink": "", "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-stagehand-node-starter", "template": "templates/steel-stagehand-node-starter.tar.gz", - "thumbnail": "https://registry.steel-edge.net/stagehand-starter/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/stagehand-starter/thumbnail.webp?v=48170c9" }, { "slug": "steel-stagehand-python-starter", @@ -484,7 +484,7 @@ "replitLink": "", "githubLink": "https://github.com/steel-dev/steel-cookbook/tree/main/examples/steel-stagehand-python-starter", "template": "templates/steel-stagehand-python-starter.tar.gz", - "thumbnail": "https://registry.steel-edge.net/stagehand-starter/thumbnail.webp?v=a363798" + "thumbnail": "https://registry.steel-edge.net/stagehand-starter/thumbnail.webp?v=48170c9" } ] }