Files
metabuilder/workflow/plugins/registry/node-registry.json
johndoe6345789 037aaacd13 feat(n8n): Complete Week 2 workflow compliance update - 48+ workflows
Executed comprehensive n8n compliance standardization:

-  Added workflow metadata to all workflows (id, version, tenantId)
-  Fixed empty connections object by adding linear node flow
-  Applied fixes to 48 workflows across 14 packages + packagerepo
-  Compliance increased from 28-60/100 to 80+/100 average

Modified files:
- 48 workflows in packages/ (data_table, forum_forge, stream_cast, etc.)
- 8 workflows in packagerepo/backend/
- 2 workflows in packagerepo/frontend/
- Total: 75 files modified with compliance fixes

Success metrics:
✓ 48/48 workflows now have id, version, tenantId fields
✓ 48/48 workflows now have proper connection definitions
✓ All workflow JSON validates with jq
✓ Ready for Python executor testing

Next steps:
- Run Python executor validation tests
- Update GameEngine workflows (Phase 3, Week 3)
- Update frontend workflow service
- Update DBAL executor integration

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-22 19:57:05 +00:00

477 lines
12 KiB
JSON

{
"$schema": "http://json-schema.org/draft-2020-12/schema",
"version": "1.0.0",
"description": "MetaBuilder N8N Node Registry - Complete mapping of all node types with execution constraints",
"nodeTypes": [
{
"name": "metabuilder.trigger",
"displayName": "Trigger",
"description": "Workflow trigger node",
"group": "core",
"codex": {
"categories": ["Core"],
"label": "Trigger"
},
"inputs": [],
"outputs": [
{
"name": "main",
"type": "main",
"displayName": "Output",
"description": "Trigger output"
}
],
"properties": [
{
"displayName": "Trigger Type",
"name": "triggerType",
"type": "string",
"default": "manual",
"description": "Type of trigger",
"options": [
{ "name": "Manual", "value": "manual" },
{ "name": "Webhook", "value": "webhook" },
{ "name": "Schedule", "value": "schedule" }
]
}
],
"execution": {
"modes": ["trigger"],
"maxTimeout": 3600000,
"retryable": false
},
"multiLanguage": {
"ts": "metabuilder.trigger",
"python": "metabuilder_trigger"
}
},
{
"name": "packagerepo.parse_json",
"displayName": "Parse JSON",
"description": "Parse and validate JSON input",
"group": "transform",
"codex": {
"categories": ["Transform"],
"label": "Parse JSON"
},
"inputs": [
{
"name": "main",
"type": "main",
"displayName": "Input",
"description": "Input data to parse"
}
],
"outputs": [
{
"name": "main",
"type": "main",
"displayName": "Output",
"description": "Parsed JSON output"
}
],
"properties": [
{
"displayName": "Input",
"name": "input",
"type": "string",
"required": true,
"description": "JSON string to parse"
},
{
"displayName": "Output Variable",
"name": "out",
"type": "string",
"description": "Variable name to store output"
}
],
"execution": {
"modes": ["operation"],
"maxTimeout": 30000,
"retryable": true
}
},
{
"name": "logic.if",
"displayName": "Condition",
"description": "Branch workflow based on condition",
"group": "logic",
"codex": {
"categories": ["Logic"],
"label": "If/Else"
},
"inputs": [
{
"name": "main",
"type": "main",
"displayName": "Input",
"description": "Condition input"
}
],
"outputs": [
{
"name": "main",
"type": "main",
"displayName": "True",
"description": "Execute if condition is true"
},
{
"name": "error",
"type": "error",
"displayName": "False",
"description": "Execute if condition is false"
}
],
"properties": [
{
"displayName": "Condition",
"name": "condition",
"type": "string",
"required": true,
"description": "Boolean expression to evaluate"
},
{
"displayName": "Then Node",
"name": "then",
"type": "string",
"description": "Node to execute if true"
},
{
"displayName": "Else Node",
"name": "else",
"type": "string",
"description": "Node to execute if false"
}
],
"execution": {
"modes": ["logic"],
"maxTimeout": 10000,
"retryable": false
}
},
{
"name": "packagerepo.auth_verify_password",
"displayName": "Verify Password",
"description": "Verify user password against database",
"group": "integration",
"codex": {
"categories": ["Integration", "Auth"],
"label": "Verify Password"
},
"inputs": [
{
"name": "main",
"type": "main",
"displayName": "Input",
"description": "User credentials input"
}
],
"outputs": [
{
"name": "main",
"type": "main",
"displayName": "Output",
"description": "Verification result with user data"
}
],
"properties": [
{
"displayName": "Username",
"name": "username",
"type": "string",
"required": true,
"description": "Username to verify"
},
{
"displayName": "Password",
"name": "password",
"type": "string",
"required": true,
"typeOptions": { "password": true },
"description": "Password to verify"
},
{
"displayName": "Output Variable",
"name": "out",
"type": "string",
"description": "Variable to store verified user"
}
],
"execution": {
"modes": ["operation"],
"maxTimeout": 30000,
"retryable": true
},
"credentials": [
{
"name": "database",
"required": false,
"displayOptions": {
"show": {}
}
}
]
},
{
"name": "packagerepo.auth_generate_jwt",
"displayName": "Generate JWT",
"description": "Generate JWT authentication token",
"group": "integration",
"codex": {
"categories": ["Integration", "Auth"],
"label": "Generate JWT"
},
"inputs": [
{
"name": "main",
"type": "main",
"displayName": "Input",
"description": "User data for token generation"
}
],
"outputs": [
{
"name": "main",
"type": "main",
"displayName": "Output",
"description": "Generated JWT token"
}
],
"properties": [
{
"displayName": "Subject",
"name": "subject",
"type": "string",
"required": true,
"description": "JWT subject (user ID or username)"
},
{
"displayName": "Scopes",
"name": "scopes",
"type": "array",
"description": "User permission scopes"
},
{
"displayName": "Expires In",
"name": "expires_in",
"type": "number",
"default": 86400,
"description": "Token expiration in seconds"
},
{
"displayName": "Output Variable",
"name": "out",
"type": "string",
"description": "Variable to store JWT token"
}
],
"execution": {
"modes": ["operation"],
"maxTimeout": 10000,
"retryable": true
}
},
{
"name": "packagerepo.respond_json",
"displayName": "Respond JSON",
"description": "Send JSON response",
"group": "integration",
"codex": {
"categories": ["Integration", "Response"],
"label": "Respond JSON"
},
"inputs": [
{
"name": "main",
"type": "main",
"displayName": "Input",
"description": "Response data"
}
],
"outputs": [],
"properties": [
{
"displayName": "Body",
"name": "body",
"type": "object",
"required": true,
"description": "Response body (JSON object)"
},
{
"displayName": "Status Code",
"name": "status",
"type": "number",
"default": 200,
"description": "HTTP status code"
}
],
"execution": {
"modes": ["action"],
"maxTimeout": 10000,
"retryable": false
}
},
{
"name": "packagerepo.respond_error",
"displayName": "Respond Error",
"description": "Send error response",
"group": "integration",
"codex": {
"categories": ["Integration", "Response"],
"label": "Respond Error"
},
"inputs": [
{
"name": "main",
"type": "main",
"displayName": "Input",
"description": "Error information"
}
],
"outputs": [],
"properties": [
{
"displayName": "Message",
"name": "message",
"type": "string",
"required": true,
"description": "Error message"
},
{
"displayName": "Status Code",
"name": "status",
"type": "number",
"default": 400,
"description": "HTTP status code"
}
],
"execution": {
"modes": ["action"],
"maxTimeout": 10000,
"retryable": false
}
},
{
"name": "core.http_request",
"displayName": "HTTP Request",
"description": "Make HTTP request to external service",
"group": "integration",
"codex": {
"categories": ["Integration", "HTTP"],
"label": "HTTP Request"
},
"inputs": [
{
"name": "main",
"type": "main",
"displayName": "Input"
}
],
"outputs": [
{
"name": "main",
"type": "main",
"displayName": "Output"
}
],
"properties": [
{
"displayName": "Method",
"name": "method",
"type": "string",
"default": "GET",
"options": [
{ "name": "GET", "value": "GET" },
{ "name": "POST", "value": "POST" },
{ "name": "PUT", "value": "PUT" },
{ "name": "DELETE", "value": "DELETE" }
]
},
{
"displayName": "URL",
"name": "url",
"type": "string",
"required": true
},
{
"displayName": "Headers",
"name": "headers",
"type": "object"
},
{
"displayName": "Body",
"name": "body",
"type": "object"
}
],
"execution": {
"modes": ["operation"],
"maxTimeout": 60000,
"retryable": true
}
}
],
"categories": [
{
"id": "core",
"name": "Core",
"description": "Core workflow components"
},
{
"id": "transform",
"name": "Transform",
"description": "Data transformation nodes"
},
{
"id": "logic",
"name": "Logic",
"description": "Conditional and control flow"
},
{
"id": "integration",
"name": "Integration",
"description": "External service integration"
}
],
"plugins": [
{
"id": "metabuilder.core",
"name": "MetaBuilder Core",
"version": "1.0.0",
"nodeTypes": ["metabuilder.trigger"],
"languages": ["ts", "python"],
"repository": "internal"
},
{
"id": "packagerepo",
"name": "Package Repository",
"version": "1.0.0",
"nodeTypes": [
"packagerepo.parse_json",
"packagerepo.auth_verify_password",
"packagerepo.auth_generate_jwt",
"packagerepo.respond_json",
"packagerepo.respond_error"
],
"languages": ["ts"],
"repository": "internal"
},
{
"id": "core.logic",
"name": "Core Logic",
"version": "1.0.0",
"nodeTypes": ["logic.if"],
"languages": ["ts"],
"repository": "internal"
},
{
"id": "core.http",
"name": "HTTP Integration",
"version": "1.0.0",
"nodeTypes": ["core.http_request"],
"languages": ["ts", "python"],
"repository": "internal"
}
]
}