{"_id":"@activadee/n8n-nodes-gradio-client","_rev":"14-61f064413fe01224a34db6ecbe1490ff","name":"@activadee/n8n-nodes-gradio-client","dist-tags":{"latest":"1.0.0","next":"1.0.0-next.2"},"versions":{"0.0.1":{"name":"@activadee/n8n-nodes-gradio-client","version":"0.0.1","keywords":["n8n-community-node-package","n8n","gradio","huggingface","ai"],"author":{"name":"Your Name","email":"your.email@example.com"},"license":"MIT","_id":"@activadee/n8n-nodes-gradio-client@0.0.1","maintainers":[{"name":"activadee","email":"info@activadee.xyz"}],"homepage":"https://github.com/activadee/n8n-nodes-gradio-client#readme","bugs":{"url":"https://github.com/activadee/n8n-nodes-gradio-client/issues"},"n8n":{"nodes":["dist/nodes/GradioClient/GradioClient.node.js"],"credentials":["dist/credentials/HuggingFaceApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"4fac928d551e2f86e5c50d155b455a5cac86936d","tarball":"https://registry.npmjs.org/@activadee/n8n-nodes-gradio-client/-/n8n-nodes-gradio-client-0.0.1.tgz","fileCount":28,"integrity":"sha512-RO5qD59u37K70Pn58A2TSX7D0pE9UPhh+MVK7NowiLt+kbU+zxo1wXLhhQzotVAwKgjrSuKZz/uPo10hT19ThA==","signatures":[{"sig":"MEQCIB/q8tmced5hrMCSFW55HxFWzRJsfKfQ4DPMS/1g86/5AiBEiJsqWi1TZTBDCWl11+o3fg/EY9LXa5vFDovwDOQaXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":418837},"main":"index.js","gitHead":"dcd122dc5d0aee7be0251ddbee50c145b27fe027","scripts":{"dev":"tsc --watch","build":"tsc","postbuild":"cp -r nodes/GradioClient/*.svg dist/nodes/GradioClient/","semantic-release":"semantic-release"},"_npmUser":{"name":"activadee","email":"info@activadee.xyz"},"repository":{"url":"git+https://github.com/activadee/n8n-nodes-gradio-client.git","type":"git"},"_npmVersion":"10.9.2","description":"n8n node for connecting to Gradio Spaces","directories":{},"_nodeVersion":"22.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^22.15.30","n8n-workflow":"^1.0.0","semantic-release":"^24.2.5","@semantic-release/git":"^10.0.1","@semantic-release/github":"^11.0.3","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"n8n-workflow":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-gradio-client_0.0.1_1749378917174_0.3788889389272969","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-next.1":{"name":"@activadee/n8n-nodes-gradio-client","version":"1.0.0-next.1","keywords":["n8n-community-node-package","n8n","gradio","huggingface","ai"],"license":"MIT","_id":"@activadee/n8n-nodes-gradio-client@1.0.0-next.1","maintainers":[{"name":"activadee","email":"info@activadee.xyz"}],"homepage":"https://github.com/activadee/n8n-nodes-gradio-client#readme","bugs":{"url":"https://github.com/activadee/n8n-nodes-gradio-client/issues"},"n8n":{"nodes":["dist/nodes/GradioClient/GradioClient.node.js"],"credentials":["dist/credentials/HuggingFaceApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"dae37edbad9741d9072f21e506c2102bb7300e6d","tarball":"https://registry.npmjs.org/@activadee/n8n-nodes-gradio-client/-/n8n-nodes-gradio-client-1.0.0-next.1.tgz","fileCount":24,"integrity":"sha512-FP77+0EUMMpQOr/+RwtnpnuHpRVo4uN+wcG2dhVW3v2CaX68QezQaDc/wkUQmtxalmXN+mPOp8a58HZ95PzDbA==","signatures":[{"sig":"MEUCIB6PCivgsE0a5dNTBmIz86uwItf3SGoJD6S+t/rWe67aAiEA2Uwlivjz3+MVKypZq4r5A05WU3Os2HHe7KXVW0RJVg4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":371448},"main":"index.js","gitHead":"84aa251844ecb976789649e358009442152fd0b5","scripts":{"dev":"tsc --watch","build":"tsc","postbuild":"cp -r nodes/GradioClient/*.svg dist/nodes/GradioClient/"},"_npmUser":{"name":"activadee","email":"info@activadee.xyz"},"repository":{"url":"git+https://github.com/activadee/n8n-nodes-gradio-client.git","type":"git"},"_npmVersion":"10.9.2","description":"n8n node for connecting to Gradio Spaces","directories":{},"_nodeVersion":"22.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"typescript":"^5.8.3","@types/node":"^22.15.30","n8n-workflow":"^1.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.3","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.0.3"},"peerDependencies":{"n8n-workflow":"^1.82.0"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-gradio-client_1.0.0-next.1_1749399928857_0.7239564834734229","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-next.2":{"name":"@activadee/n8n-nodes-gradio-client","version":"1.0.0-next.2","keywords":["n8n-community-node-package","n8n","gradio","huggingface","ai"],"license":"MIT","_id":"@activadee/n8n-nodes-gradio-client@1.0.0-next.2","maintainers":[{"name":"activadee","email":"info@activadee.xyz"}],"homepage":"https://github.com/activadee/n8n-nodes-gradio-client#readme","bugs":{"url":"https://github.com/activadee/n8n-nodes-gradio-client/issues"},"n8n":{"nodes":["dist/nodes/GradioClient/GradioClient.node.js"],"credentials":["dist/credentials/HuggingFaceApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"89895b5831a4b0943680ba50fc62857f77c10f03","tarball":"https://registry.npmjs.org/@activadee/n8n-nodes-gradio-client/-/n8n-nodes-gradio-client-1.0.0-next.2.tgz","fileCount":24,"integrity":"sha512-CdNinfaf8jS3fkAuwLx1I4zOyw8z9aS677ie8tmJPg/1CDLoFhiIl9YEyAoIm9t4B10RdKNmQhyjBd4aqBrICg==","signatures":[{"sig":"MEYCIQCEvTqhRmAjW/GwgYAloYWr07E+1HF+Iao0F9HAL5dT2QIhANGuEj6T0T6qKZBl2LrzpzYrSJxh4RW4d0L//HNlJx30","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":385201},"main":"index.js","gitHead":"551117614ded6ee237fb006f3cb98b289bddb78e","scripts":{"dev":"tsc --watch","build":"tsc","postbuild":"cp -r nodes/GradioClient/*.svg dist/nodes/GradioClient/"},"_npmUser":{"name":"activadee","email":"info@activadee.xyz"},"repository":{"url":"git+https://github.com/activadee/n8n-nodes-gradio-client.git","type":"git"},"_npmVersion":"10.9.2","description":"n8n node for connecting to Gradio Spaces","directories":{},"_nodeVersion":"22.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"typescript":"^5.8.3","@types/node":"^22.15.30","n8n-workflow":"^1.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.3","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@kilianpaquier/semantic-release-backmerge":"^1.6.16","@semantic-release/release-notes-generator":"^14.0.3"},"peerDependencies":{"n8n-workflow":"^1.82.0"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-gradio-client_1.0.0-next.2_1749401411687_0.011708078624477869","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@activadee/n8n-nodes-gradio-client","version":"1.0.0","description":"n8n node for connecting to Gradio Spaces","keywords":["n8n-community-node-package","n8n","gradio","huggingface","ai"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/activadee/n8n-nodes-gradio-client.git"},"publishConfig":{"access":"public"},"main":"index.js","scripts":{"build":"tsc","postbuild":"cp -r nodes/GradioClient/*.svg dist/nodes/GradioClient/","dev":"tsc --watch"},"n8n":{"n8nNodesApiVersion":1,"credentials":["dist/credentials/HuggingFaceApi.credentials.js"],"nodes":["dist/nodes/GradioClient/GradioClient.node.js"]},"devDependencies":{"@kilianpaquier/semantic-release-backmerge":"^1.6.16","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/git":"^10.0.1","@semantic-release/github":"^11.0.3","@semantic-release/npm":"^12.0.1","@semantic-release/release-notes-generator":"^14.0.3","@types/node":"^22.15.30","n8n-workflow":"^1.0.0","typescript":"^5.8.3"},"peerDependencies":{"n8n-workflow":"^1.82.0"},"_id":"@activadee/n8n-nodes-gradio-client@1.0.0","gitHead":"ad4a6bc6d2cd486007ede40ae162d6f43ed2a6ea","bugs":{"url":"https://github.com/activadee/n8n-nodes-gradio-client/issues"},"homepage":"https://github.com/activadee/n8n-nodes-gradio-client#readme","_nodeVersion":"22.15.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-gmmkuPiMidzlGmhvbAbN4BkSoT8+tUF3WGVQuiy18BH/aiDWn3tL4Dq0COuVRG/RJtUqq0fhTVjYwzoGapUXCw==","shasum":"93f98544f9f7dcbaadfa7ac6c4f64c9f90bc910b","tarball":"https://registry.npmjs.org/@activadee/n8n-nodes-gradio-client/-/n8n-nodes-gradio-client-1.0.0.tgz","fileCount":24,"unpackedSize":385194,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHFy5ApqMrCAY51A0Z/fhzKBoeLZBkT8ud9/Bt25MBTKAiEA8Wf5yvnym110nd5DYlX3huPsEWHuwoN1kHaleJAqGzg="}]},"_npmUser":{"name":"activadee","email":"info@activadee.xyz"},"directories":{},"maintainers":[{"name":"activadee","email":"info@activadee.xyz"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/n8n-nodes-gradio-client_1.0.0_1749402008141_0.4610067575895864"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-08T10:35:17.059Z","modified":"2025-06-08T17:00:08.538Z","0.0.1":"2025-06-08T10:35:17.405Z","0.1.0-beta.1":"2025-06-08T11:36:43.249Z","0.1.0":"2025-06-08T12:45:35.929Z","0.2.0":"2025-06-08T12:56:39.867Z","0.1.0-next.1":"2025-06-08T15:46:29.537Z","0.1.0-next.2":"2025-06-08T15:53:10.815Z","1.0.0-next.1":"2025-06-08T16:25:29.059Z","1.0.0-next.2":"2025-06-08T16:50:11.875Z","1.0.0":"2025-06-08T17:00:08.348Z"},"bugs":{"url":"https://github.com/activadee/n8n-nodes-gradio-client/issues"},"license":"MIT","homepage":"https://github.com/activadee/n8n-nodes-gradio-client#readme","keywords":["n8n-community-node-package","n8n","gradio","huggingface","ai"],"repository":{"type":"git","url":"git+https://github.com/activadee/n8n-nodes-gradio-client.git"},"description":"n8n node for connecting to Gradio Spaces","maintainers":[{"name":"activadee","email":"info@activadee.xyz"}],"readme":"# n8n-nodes-gradio-client\n\n[![npm version](https://img.shields.io/npm/v/@activadee/n8n-nodes-gradio-client.svg)](https://www.npmjs.com/package/@activadee/n8n-nodes-gradio-client)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nA comprehensive n8n community node that enables seamless integration with Gradio Spaces, allowing you to call AI models and APIs hosted on HuggingFace Spaces directly from your n8n workflows.\n\n## Features\n\n- 🚀 **Universal Gradio Support**: Call any Gradio Space API function with automatic endpoint discovery\n- 🔐 **HuggingFace Authentication**: Support for private spaces with API tokens\n- 📁 **File Upload Handling**: Seamless file uploads with automatic processing and metadata handling\n- ⚡ **Real-time Streaming**: Server-Sent Events (SSE) support for live AI model responses\n- 📊 **Smart API Discovery**: Automatic endpoint detection via OpenAPI specification with config fallback\n- 🛡️ **Comprehensive Error Handling**: Detailed error types with HTTP status mapping and recovery suggestions\n- 🔄 **Adaptive Retry Logic**: Exponential backoff retry mechanisms for robust API interactions\n- 🎯 **Production Ready**: Debug mode, configurable timeouts, and session management\n\n## Installation\n\n### For n8n Cloud/Self-hosted\n```bash\nnpm install @activadee/n8n-nodes-gradio-client\n```\n\n### For Local Development\n```bash\ncd ~/.n8n/custom\nnpm install @activadee/n8n-nodes-gradio-client\n```\n\n## Usage\n\n### Basic Function Call\n\n1. **Add the Gradio Client node** to your workflow\n2. **Configure the Space URL**: Enter the full URL (e.g., `https://username-spacename.hf.space`)\n3. **Set the API endpoint**: Specify the function name (e.g., `/predict`, `/generate`)\n4. **Provide input parameters**: Supply inputs as a JSON array matching the expected format\n\n### File Uploads\n\nFor models that require file inputs:\n\n1. **Enable file upload** in the File Upload Options\n2. **Specify parameter index**: Set which parameter position expects the file\n3. **Set binary property**: Configure the n8n binary property containing your file\n4. **Optional filename**: Provide a custom filename if needed\n\n### Authentication\n\nFor private HuggingFace Spaces:\n\n1. **Toggle authentication**: Enable \"Requires Authentication\"\n2. **Add HuggingFace credentials**: Configure your API token in n8n credentials\n3. **Automatic token handling**: The node automatically adds Bearer token to requests\n\n## Example Use Cases\n\n- **🎵 Text-to-Speech**: Generate audio from text using Chatterbox TTS or similar models\n- **🎨 Image Generation**: Create images with DALL-E, Stable Diffusion, or Midjourney spaces\n- **💬 LLM Inference**: Chat with Llama, Mistral, Claude, or other language models\n- **🔍 Document Analysis**: Process PDFs, images, or text with specialized AI models\n- **🎥 Video Processing**: Generate or analyze video content with AI models\n- **📝 Text Processing**: Summarization, translation, sentiment analysis, and more\n\n## Development\n\n### Prerequisites\n\n- Node.js 16+ \n- npm or yarn\n- n8n-workflow peer dependency\n\n### Project Structure\n\n```\nnodes/gradio/\n├── credentials/\n│   └── HuggingFaceApi.credentials.ts  # HuggingFace API credentials\n├── nodes/GradioClient/\n│   ├── GradioClient.node.ts          # Main node entry point\n│   ├── nodeDefinition.ts             # Node UI configuration\n│   ├── operations.ts                 # Business logic for API calls\n│   ├── client.ts                     # Gradio API client implementation\n│   ├── types.ts                      # TypeScript interfaces\n│   ├── utils.ts                      # Helper functions\n│   ├── errors.ts                     # Error handling classes\n│   ├── loadOptions.ts                # Dynamic option loading\n│   └── gradio.svg                    # Node icon\n├── package.json\n├── tsconfig.json\n└── README.md\n```\n\n### Development Commands\n\n```bash\n# Install dependencies\nnpm install\n\n# Build the project (compiles TypeScript to dist/)\nnpm run build\n\n# Development mode with file watching\nnpm run dev\n\n# Run semantic release (automated via CI)\nnpm run semantic-release\n```\n\n### Local Development Setup\n\n1. **Clone the repository**:\n   ```bash\n   git clone https://github.com/activadee/n8n-nodes-gradio-client.git\n   cd n8n-nodes-gradio-client\n   ```\n\n2. **Install dependencies**:\n   ```bash\n   npm install\n   ```\n\n3. **Build the project**:\n   ```bash\n   npm run build\n   ```\n\n4. **Link to your n8n installation**:\n   ```bash\n   # For global n8n installation\n   npm link\n   cd ~/.n8n/custom\n   npm link @activadee/n8n-nodes-gradio-client\n\n   # For local n8n development\n   cd path/to/your/n8n\n   npm link ../path/to/@activadee/n8n-nodes-gradio-client\n   ```\n\n5. **Start n8n** and the node will be available in the node palette\n\n### Development Workflow\n\n1. **Make changes** to TypeScript files in `nodes/GradioClient/`\n2. **Run build** with `npm run build` or use watch mode `npm run dev`\n3. **Test in n8n** by restarting your n8n instance\n4. **Commit changes** using conventional commit format\n5. **Create PR** - releases are automated via semantic-release\n\n### Testing\n\nCurrently, the project uses manual testing through n8n workflows. To test:\n\n1. **Build the project**: `npm run build`\n2. **Create test workflows** in n8n with various Gradio spaces\n3. **Test different scenarios**:\n   - Public spaces without authentication\n   - Private spaces with HuggingFace tokens\n   - File uploads and downloads\n   - Error handling and edge cases\n\n### Code Architecture\n\n#### Core Components\n\n- **GradioClient.node.ts**: Main n8n node implementation that handles execution flow\n- **nodeDefinition.ts**: Defines the node's UI properties and configuration options\n- **operations.ts**: Contains business logic for different operations (get info, call function)\n- **client.ts**: Low-level Gradio API client with polling and streaming support\n- **types.ts**: TypeScript interfaces and enums for type safety\n- **utils.ts**: Helper functions for URL cleaning, parameter normalization, etc.\n- **errors.ts**: Custom error classes for better error handling\n\n#### Key Features Implementation\n\n- **Polling Logic**: Implements intelligent polling for long-running Gradio functions\n- **File Handling**: Converts n8n binary data to Gradio-compatible file objects\n- **Authentication**: Handles HuggingFace API token integration\n- **Error Recovery**: Comprehensive error handling with retry mechanisms\n\n## Release Process\n\nThis project uses automated semantic versioning and releasing:\n\n- **Conventional Commits**: Use conventional commit format for automatic version bumping\n- **Automated Releases**: GitHub Actions automatically publishes to npm on main branch pushes\n- **Beta Releases**: Push to `beta` branch for pre-release versions\n- **Changelog**: Automatically generated changelog based on commit messages\n\n### Commit Message Format\n\n```\ntype(scope): description\n\nfeat: add new feature\nfix: bug fix\ndocs: documentation changes\nstyle: formatting changes\nrefactor: code refactoring\ntest: adding tests\nchore: maintenance tasks\n```\n\n## Contributing\n\n1. **Fork the repository**\n2. **Create a feature branch**: `git checkout -b feature/your-feature`\n3. **Make your changes** following the code style\n4. **Test thoroughly** with different Gradio spaces\n5. **Commit using conventional format**: `git commit -m \"feat: add new feature\"`\n6. **Push and create a Pull Request**\n\n## Troubleshooting\n\n### Common Issues\n\n**Authentication Errors**:\n- Verify HuggingFace API token is correct\n- Ensure the space requires authentication\n- Check token permissions\n\n**Timeout Errors**:\n- Increase timeout values for long-running models\n- Check if the Gradio space is responsive\n- Verify space URL is correct\n\n**File Upload Issues**:\n- Ensure binary data property exists\n- Check file parameter index matches the model's expected input\n- Verify file types are supported by the space\n\n**API Endpoint Not Found**:\n- Use \"Get Space Info\" operation to discover available endpoints\n- Check if the space is public and accessible\n- Verify the API name format (should start with `/`)\n\n## Support\n\n- 🐛 **Bug Reports**: [GitHub Issues](https://github.com/activadee/n8n-nodes-gradio-client/issues)\n- 💡 **Feature Requests**: [GitHub Discussions](https://github.com/activadee/n8n-nodes-gradio-client/discussions)\n- 📖 **Documentation**: [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)\n- 💬 **Community**: [n8n Discord](https://discord.gg/n8n)","readmeFilename":"README.md"}