Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save nishantharcot/5f10c3825b8f65c6b0e8c6890fbf57e6 to your computer and use it in GitHub Desktop.

Select an option

Save nishantharcot/5f10c3825b8f65c6b0e8c6890fbf57e6 to your computer and use it in GitHub Desktop.
yantra-webbuilder v1.0.17 marketplace patch part 2: aieditor-metadata-schema.json
diff -urN before/dist/aieditor-metadata-schema.json after/dist/aieditor-metadata-schema.json
--- before/dist/aieditor-metadata-schema.json 1970-01-01 05:30:00
+++ after/dist/aieditor-metadata-schema.json 2026-06-29 20:47:22
@@ -0,0 +1,3289 @@
+[
+ {
+ "schemaId": "aieditor-code-extractor",
+ "formId": "PLACEHOLDER_FORM_ID",
+ "type": "Multi Form",
+ "contributes": {},
+ "configurationNodes": [
+ {
+ "type": "form-metadata",
+ "properties": {
+ "id": "PLACEHOLDER_FORM_ID",
+ "title": "AI Editor Form Code Extractor",
+ "schemaId": "stepper-form",
+ "type": "Multi Form",
+ "formId": "aieditor-code-extractor-mfb219ez",
+ "integrationConfigurationId": null,
+ "preGeneratedFormSteps": [
+ {
+ "title": "Template Details",
+ "description": "",
+ "elements": [
+ {
+ "type": "dropdown",
+ "id": "templateTarget",
+ "label": "Template Target",
+ "required": false,
+ "description": "",
+ "default": "nextjs-db",
+ "options": [
+ {
+ "key": "nextjs-db",
+ "value": "Next.js + DB",
+ "label": "Next.js + DB"
+ },
+ {
+ "key": "nextjs-github",
+ "value": "Next.js + GitHub",
+ "label": "Next.js + GitHub"
+ },
+ {
+ "key": "vite-db",
+ "value": "Vite + DB",
+ "label": "Vite + DB"
+ },
+ {
+ "key": "vite-github",
+ "value": "Vite + GitHub",
+ "label": "Vite + GitHub"
+ }
+ ],
+ "enumNames": [
+ "Next.js + DB",
+ "Next.js + GitHub",
+ "Vite + DB",
+ "Vite + GitHub"
+ ]
+ },
+ {
+ "type": "singleline",
+ "id": "inngestEventName",
+ "label": "Inngest Event Name",
+ "required": true,
+ "minLength": 1
+ },
+ {
+ "type": "singleline",
+ "id": "title",
+ "label": "Title",
+ "required": true,
+ "description": ""
+ },
+ {
+ "type": "dropdown",
+ "id": "credentials",
+ "label": "Credentials",
+ "required": false,
+ "description": "Credentials required for this AI editor template.",
+ "dropdownType": "resource",
+ "loadOptionsFunc": "onFocus",
+ "dropdownSelectionType": "multi",
+ "loadOptionsResourceId": "credentialTemplates",
+ "resourceId": "credentialTemplates",
+ "loadOptionsTrigger": "onClick",
+ "triggerEvent": "onClick"
+ }
+ ]
+ },
+ {
+ "title": "Template Schema",
+ "description": "",
+ "elements": [
+ {
+ "type": "singleline",
+ "id": "channelId",
+ "label": "Channel ID",
+ "required": false,
+ "description": ""
+ },
+ {
+ "type": "dropdown",
+ "id": "channelType",
+ "label": "Channel Type",
+ "required": false,
+ "description": "",
+ "default": "AIASSISTANT",
+ "options": [
+ {
+ "key": "SERVICE",
+ "value": "Service",
+ "label": "Service"
+ },
+ {
+ "key": "AIASSISTANT",
+ "value": "AI Assistant",
+ "label": "AI Assistant"
+ },
+ {
+ "key": "CHANNEL",
+ "value": "Channel",
+ "label": "Channel"
+ },
+ {
+ "key": "DIRECT",
+ "value": "Direct",
+ "label": "Direct"
+ },
+ {
+ "key": "PRIVATE",
+ "value": "Private",
+ "label": "Private"
+ },
+ {
+ "key": "PUBLIC",
+ "value": "Public",
+ "label": "Public"
+ },
+ {
+ "key": "GROUP",
+ "value": "Group",
+ "label": "Group"
+ },
+ {
+ "key": "VISITOR",
+ "value": "Visitor",
+ "label": "Visitor"
+ }
+ ]
+ },
+ {
+ "type": "singleline",
+ "id": "projectId",
+ "label": "Project ID",
+ "required": false,
+ "description": ""
+ },
+ {
+ "type": "singleline",
+ "id": "createdBy",
+ "label": "Created By",
+ "required": false,
+ "description": ""
+ },
+ {
+ "type": "singleline",
+ "id": "orgId",
+ "label": "Organization ID",
+ "required": false,
+ "description": ""
+ },
+ {
+ "type": "group",
+ "id": "post",
+ "label": "Post",
+ "required": [
+ "props"
+ ],
+ "description": "",
+ "children": [
+ {
+ "type": "singleline",
+ "id": "id",
+ "label": "Post ID",
+ "required": false,
+ "description": "",
+ "minLength": 1
+ },
+ {
+ "type": "singleline",
+ "id": "author",
+ "label": "Author (User ID)",
+ "required": false,
+ "description": ""
+ },
+ {
+ "type": "singleline",
+ "id": "creator",
+ "label": "Creator (User ID)",
+ "required": false,
+ "description": ""
+ },
+ {
+ "type": "singleline",
+ "id": "channel",
+ "label": "Channel (ID)",
+ "required": false,
+ "description": ""
+ },
+ {
+ "type": "singleline",
+ "id": "parentId",
+ "label": "Parent ID",
+ "required": false,
+ "description": ""
+ },
+ {
+ "type": "singleline",
+ "id": "message",
+ "label": "Message",
+ "required": false,
+ "description": ""
+ },
+ {
+ "type": "singleline",
+ "id": "type",
+ "label": "Post Type",
+ "required": false,
+ "description": ""
+ },
+ {
+ "type": "group",
+ "id": "props",
+ "label": "Props",
+ "required": [
+ "fragment"
+ ],
+ "description": "",
+ "children": [
+ {
+ "type": "dropdown",
+ "id": "role",
+ "label": "Role",
+ "required": false,
+ "description": "",
+ "default": "ASSISTANT",
+ "options": [
+ {
+ "key": "USER",
+ "value": "User",
+ "label": "User"
+ },
+ {
+ "key": "ASSISTANT",
+ "value": "Assistant",
+ "label": "Assistant"
+ }
+ ],
+ "enumNames": [
+ "User",
+ "Assistant"
+ ]
+ },
+ {
+ "type": "singleline",
+ "id": "projectId",
+ "label": "Project ID",
+ "required": false,
+ "description": ""
+ },
+ {
+ "type": "singleline",
+ "id": "template",
+ "label": "Template",
+ "required": false,
+ "description": "",
+ "default": "vite-react"
+ },
+ {
+ "type": "checkbox",
+ "id": "sendNotificationWithProjectId",
+ "label": "Send Notification With Project ID",
+ "required": false,
+ "checkboxType": "single",
+ "description": "",
+ "default": true
+ },
+ {
+ "type": "group",
+ "id": "fragment",
+ "label": "Fragment",
+ "required": [],
+ "description": "",
+ "children": [
+ {
+ "type": "singleline",
+ "id": "sandboxUrl",
+ "label": "Sandbox URL",
+ "required": false,
+ "description": ""
+ },
+ {
+ "type": "singleline",
+ "id": "title",
+ "label": "Title",
+ "required": false,
+ "description": "",
+ "default": "AI Editor Form Code Extractor"
+ },
+ {
+ "type": "singleline",
+ "id": "summary",
+ "label": "Task Summary",
+ "required": false,
+ "description": ""
+ },
+ {
+ "type": "checkboxes",
+ "id": "canvasLayers",
+ "label": "Canvas Layers",
+ "required": false,
+ "description": "",
+ "uniqueItems": true
+ },
+ {
+ "type": "dropdown",
+ "id": "type",
+ "label": "Result Type",
+ "required": false,
+ "description": "",
+ "default": "RESULT",
+ "options": [
+ {
+ "key": "RESULT",
+ "value": "RESULT",
+ "label": "RESULT"
+ },
+ {
+ "key": "ERROR",
+ "value": "ERROR",
+ "label": "ERROR"
+ }
+ ],
+ "enumNames": [
+ "RESULT",
+ "ERROR"
+ ]
+ },
+ {
+ "type": "singleline",
+ "id": "messageId",
+ "label": "Message ID",
+ "required": false,
+ "description": ""
+ },
+ {
+ "type": "checkbox",
+ "id": "isError",
+ "label": "Is Error",
+ "required": false,
+ "checkboxType": "single",
+ "description": "",
+ "default": false
+ },
+ {
+ "type": "group",
+ "id": "files",
+ "label": "Files (path -> content)",
+ "required": false,
+ "description": "",
+ "children": []
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "singleline",
+ "id": "hashTags",
+ "label": "Hashtags",
+ "required": false,
+ "description": ""
+ },
+ {
+ "type": "checkboxes",
+ "id": "filenames",
+ "label": "Filenames",
+ "required": false,
+ "description": "",
+ "uniqueItems": true
+ },
+ {
+ "type": "checkboxes",
+ "id": "fields",
+ "label": "Custom Fields",
+ "required": false,
+ "description": "",
+ "uniqueItems": true
+ },
+ {
+ "type": "singleline",
+ "id": "editedBy",
+ "label": "Edited By (User ID)",
+ "required": false,
+ "description": ""
+ },
+ {
+ "type": "singleline",
+ "id": "createdAt",
+ "label": "Created At",
+ "required": false,
+ "description": "ISO 8601 with milliseconds and offset",
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{2}:\\d{2}$"
+ },
+ {
+ "type": "singleline",
+ "id": "updatedAt",
+ "label": "Updated At",
+ "required": false,
+ "description": "ISO 8601 with milliseconds and offset",
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{2}:\\d{2}$"
+ },
+ {
+ "type": "checkbox",
+ "id": "hasReactions",
+ "label": "Has Reactions",
+ "required": false,
+ "checkboxType": "single",
+ "description": "",
+ "default": false
+ }
+ ]
+ },
+ {
+ "type": "group",
+ "id": "additionalProperties",
+ "label": "Additional Properties",
+ "required": [
+ "modelConfig"
+ ],
+ "description": "",
+ "children": [
+ {
+ "type": "group",
+ "id": "modelConfig",
+ "label": "Model Configuration",
+ "required": [],
+ "description": "",
+ "children": [
+ {
+ "type": "singleline",
+ "id": "provider",
+ "label": "Provider",
+ "required": false,
+ "description": "",
+ "default": "anthropic"
+ },
+ {
+ "type": "singleline",
+ "id": "model",
+ "label": "Model",
+ "required": false,
+ "description": "",
+ "default": "claude-sonnet-4-5-20250929"
+ },
+ {
+ "type": "singleline",
+ "id": "apiKey",
+ "label": "API Key",
+ "required": false,
+ "description": ""
+ },
+ {
+ "type": "singleline",
+ "id": "template",
+ "label": "Template",
+ "required": false,
+ "description": "",
+ "default": "vite-react"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "Template Setup",
+ "description": "",
+ "elements": [
+ {
+ "type": "group",
+ "id": "configuration",
+ "label": "Template Setup",
+ "required": [],
+ "description": "",
+ "children": [
+ {
+ "type": "singleline",
+ "id": "formExtensionE2BViteReactTemplateId",
+ "label": "E2B Vite React Template ID",
+ "required": false,
+ "description": "E2B template id for Vite React.",
+ "placeholder": "e.g. 0w7z3d6bosdvqni2xtuf"
+ },
+ {
+ "type": "singleline",
+ "id": "formExtensionE2BVueTemplateId",
+ "label": "E2B Vue Template ID",
+ "required": false,
+ "description": "E2B template id for Vue.",
+ "placeholder": "e.g. grp7jqsey9ei22ap659k"
+ },
+ {
+ "type": "singleline",
+ "id": "formExtensionE2BClaudeTemplateId",
+ "label": "E2B Claude Template ID",
+ "required": false,
+ "description": "E2B template id for Claude.",
+ "placeholder": "e.g. 3qua6mjt7gp4t1ijqi3t"
+ },
+ {
+ "type": "singleline",
+ "id": "formExtensionE2BTemplateId",
+ "label": "E2B Template ID",
+ "required": false,
+ "description": "Default E2B template id.",
+ "placeholder": "e.g. ycbh59ksxbspv1t4jmb7"
+ },
+ {
+ "type": "singleline",
+ "id": "formExtensionE2BDomain",
+ "label": "E2B Domain",
+ "required": false,
+ "description": "E2B domain.",
+ "placeholder": "e.g. yarntra.com"
+ },
+ {
+ "type": "singleline",
+ "id": "formExtensionE2BAPIKey",
+ "label": "E2B API Key",
+ "required": false,
+ "description": "E2B API key.",
+ "placeholder": ""
+ },
+ {
+ "type": "singleline",
+ "id": "formExtensionGithubToken",
+ "label": "GitHub Token",
+ "required": false,
+ "description": "GitHub personal access token.",
+ "placeholder": ""
+ },
+ {
+ "type": "singleline",
+ "id": "formExtensionGithubOrg",
+ "label": "GitHub Organization",
+ "required": false,
+ "description": "GitHub org/user name.",
+ "placeholder": "e.g. my-org"
+ },
+ {
+ "type": "singleline",
+ "id": "formExtensionGithubReactBase",
+ "label": "React Base Repo URL",
+ "required": false,
+ "description": "Base repository URL used for GitHub targets.",
+ "placeholder": "e.g. https://github.com/my-org/react-visual-base"
+ },
+ {
+ "type": "singleline",
+ "id": "formExtensionModelConfigAPIKey",
+ "label": "Model Provider API Key",
+ "required": false,
+ "description": "API key for the selected model provider (if required).",
+ "placeholder": ""
+ },
+ {
+ "type": "singleline",
+ "id": "formExtensionSandboxId",
+ "label": "Sandbox ID",
+ "required": false,
+ "description": "E2B sandbox ID for execution environment.",
+ "placeholder": "e.g. sbx-xxxxxxxx"
+ },
+ {
+ "type": "singleline",
+ "id": "formExtensionSnapshotId",
+ "label": "Snapshot ID",
+ "required": false,
+ "description": "E2B snapshot ID for pre-configured environment.",
+ "placeholder": "e.g. snap-xxxxxxxx"
+ },
+ {
+ "type": "singleline",
+ "id": "formExtensionGitCloneUrl",
+ "label": "Git Clone URL",
+ "required": false,
+ "description": "Repository URL to clone (optional).",
+ "placeholder": "e.g. https://github.com/user/repo.git"
+ },
+ {
+ "type": "checkbox",
+ "id": "formExtensionShouldClone",
+ "label": "Should Clone Repository",
+ "required": false,
+ "checkboxType": "single",
+ "description": "Flag to enable/disable repository cloning (default: false).",
+ "default": false
+ },
+ {
+ "type": "singleline",
+ "id": "formExtensionTemplatePreviewUrl",
+ "label": "Template Preview URL",
+ "required": false,
+ "description": "Optional URL used to preview the generated template (e.g. deployed demo or sandbox link).",
+ "placeholder": "e.g. https://preview.example.com/my-template"
+ },
+ {
+ "type": "singleline",
+ "id": "formExtensionSupabaseUrl",
+ "label": "Supabase URL",
+ "required": false,
+ "description": "Optional Supabase project URL for the generated template.",
+ "placeholder": "e.g. https://abc123def.supabase.co"
+ },
+ {
+ "type": "singleline",
+ "id": "formExtensionSupabasePublishableKey",
+ "label": "Supabase Publishable Key",
+ "required": false,
+ "description": "Optional Supabase publishable key for the generated template.",
+ "placeholder": "e.g. sb_publishable_..."
+ },
+ {
+ "type": "singleline",
+ "id": "formExtensionSupabaseProjectId",
+ "label": "Supabase Project ID",
+ "required": false,
+ "description": "Optional Supabase project ID for the generated template.",
+ "placeholder": "e.g. vuxfjhbhvyeaslauqlhs"
+ },
+ {
+ "type": "singleline",
+ "id": "formExtensionSupabaseAccessToken",
+ "label": "Supabase Access Token",
+ "required": false,
+ "description": "Optional Supabase access token for the generated template.",
+ "placeholder": "e.g. sbp_..."
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "Website Demo",
+ "description": "",
+ "elements": [
+ {
+ "type": "group",
+ "id": "demo",
+ "label": "Website Demo",
+ "required": [],
+ "description": "",
+ "children": [
+ {
+ "type": "dropdown",
+ "id": "headerStyle",
+ "label": "Header Style",
+ "required": false,
+ "description": "Header visual style and behavior over the hero section.",
+ "default": "transparentOverHero",
+ "options": [
+ {
+ "key": "transparentOverHero",
+ "value": "transparentOverHero",
+ "label": "Transparent Over Hero"
+ },
+ {
+ "key": "solid",
+ "value": "solid",
+ "label": "Solid"
+ },
+ {
+ "key": "blur",
+ "value": "blur",
+ "label": "Blur"
+ },
+ {
+ "key": "invertedOnScroll",
+ "value": "invertedOnScroll",
+ "label": "Inverted On Scroll"
+ }
+ ],
+ "enumNames": [
+ "Transparent Over Hero",
+ "Solid",
+ "Blur",
+ "Inverted On Scroll"
+ ]
+ },
+ {
+ "type": "dropdown",
+ "id": "headerPosition",
+ "label": "Header Position",
+ "required": false,
+ "description": "Header layout behavior on the page.",
+ "default": "fixed",
+ "options": [
+ {
+ "key": "fixed",
+ "value": "fixed",
+ "label": "Fixed"
+ },
+ {
+ "key": "sticky",
+ "value": "sticky",
+ "label": "Sticky"
+ },
+ {
+ "key": "static",
+ "value": "static",
+ "label": "Static"
+ }
+ ],
+ "enumNames": [
+ "Fixed",
+ "Sticky",
+ "Static"
+ ]
+ },
+ {
+ "type": "singleline",
+ "id": "headerBgColor",
+ "label": "Header Background Color",
+ "required": false,
+ "description": "Header background color (hex). Separate from page background.",
+ "widget": "ColorWidget",
+ "placeholder": "#FFFFFF",
+ "default": "#FFFFFF"
+ },
+ {
+ "type": "singleline",
+ "id": "headerTextColor",
+ "label": "Header Text Color",
+ "required": false,
+ "description": "Header text color (hex).",
+ "widget": "ColorWidget",
+ "placeholder": "#1F2937",
+ "default": "#1F2937"
+ },
+ {
+ "type": "singleline",
+ "id": "headerActiveLinkColor",
+ "label": "Header Active Link Color",
+ "required": false,
+ "description": "Header active link color (hex).",
+ "widget": "ColorWidget",
+ "placeholder": "#F2B04C",
+ "default": "#F2B04C"
+ },
+ {
+ "type": "singleline",
+ "id": "headerScrolledBgColor",
+ "label": "Header Scrolled Background Color",
+ "required": false,
+ "description": "Header background color (hex) after scrolling past the hero.",
+ "widget": "ColorWidget",
+ "placeholder": "#FFFFFF",
+ "default": "#FFFFFF"
+ },
+ {
+ "type": "singleline",
+ "id": "headerScrolledTextColor",
+ "label": "Header Scrolled Text Color",
+ "required": false,
+ "description": "Header text color (hex) after scrolling past the hero.",
+ "widget": "ColorWidget",
+ "placeholder": "#1F2937",
+ "default": "#1F2937"
+ },
+ {
+ "type": "singleline",
+ "id": "headerBorderColor",
+ "label": "Header Border Color",
+ "required": false,
+ "description": "Optional header bottom border color (hex).",
+ "widget": "ColorWidget",
+ "placeholder": "#E5E7EB",
+ "default": ""
+ },
+ {
+ "type": "singleline",
+ "id": "title",
+ "label": "Title",
+ "required": false,
+ "description": "Title used for the generated demo website."
+ },
+ {
+ "type": "multiline",
+ "id": "description",
+ "label": "Description",
+ "required": false,
+ "description": "Short description/tagline for the landing page hero section."
+ },
+ {
+ "type": "dropdown",
+ "id": "heroOverlay",
+ "label": "Hero Overlay",
+ "required": false,
+ "description": "Optional overlay over the hero background image.",
+ "default": "gradient",
+ "options": [
+ {
+ "key": "none",
+ "value": "none",
+ "label": "None"
+ },
+ {
+ "key": "gradient",
+ "value": "gradient",
+ "label": "Gradient"
+ },
+ {
+ "key": "solid",
+ "value": "solid",
+ "label": "Solid"
+ }
+ ],
+ "enumNames": [
+ "None",
+ "Gradient",
+ "Solid"
+ ]
+ },
+ {
+ "type": "singleline",
+ "id": "heroOverlayColor",
+ "label": "Hero Overlay Color",
+ "required": false,
+ "description": "Overlay color (hex).",
+ "widget": "ColorWidget",
+ "placeholder": "#0B1220",
+ "default": "#0B1220"
+ },
+ {
+ "type": "number",
+ "id": "heroOverlayOpacity",
+ "label": "Hero Overlay Opacity",
+ "required": false,
+ "description": "Overlay opacity from 0 to 1.",
+ "default": 0.45
+ },
+ {
+ "type": "singleline",
+ "id": "heroTextColor",
+ "label": "Hero Text Color",
+ "required": false,
+ "description": "Hero text color (hex). Useful when header is transparent over hero.",
+ "widget": "ColorWidget",
+ "placeholder": "#F7F3EE",
+ "default": "#F7F3EE"
+ },
+ {
+ "type": "singleline",
+ "id": "heroImageUrl",
+ "label": "Landing Page Image URL",
+ "required": false,
+ "description": "Hero/cover image URL for the landing page."
+ },
+ {
+ "type": "dropdown",
+ "id": "menuAlignment",
+ "label": "Menu Alignment",
+ "required": false,
+ "description": "How the header content is aligned (logo, links, CTAs).",
+ "default": "split",
+ "options": [
+ {
+ "key": "left",
+ "value": "left",
+ "label": "Left"
+ },
+ {
+ "key": "center",
+ "value": "center",
+ "label": "Center"
+ },
+ {
+ "key": "right",
+ "value": "right",
+ "label": "Right"
+ },
+ {
+ "key": "split",
+ "value": "split",
+ "label": "Split (Logo Left, Links Right)"
+ }
+ ],
+ "enumNames": [
+ "Left",
+ "Center",
+ "Right",
+ "Split (Logo Left, Links Right)"
+ ]
+ },
+ {
+ "type": "singleline",
+ "id": "logoText",
+ "label": "Logo Text",
+ "required": false,
+ "description": "Text logo shown in the header.",
+ "default": "Form Builder"
+ },
+ {
+ "type": "singleline",
+ "id": "logoImageUrl",
+ "label": "Logo Image URL",
+ "required": false,
+ "description": "Optional image logo URL. If provided, used instead of Logo Text."
+ },
+ {
+ "type": "singleline",
+ "id": "ctaPrimaryLabel",
+ "label": "Primary CTA Label",
+ "required": false,
+ "description": "Primary call-to-action button label.",
+ "default": "Get started"
+ },
+ {
+ "type": "singleline",
+ "id": "ctaPrimaryHref",
+ "label": "Primary CTA Link",
+ "required": false,
+ "description": "Primary call-to-action link (href).",
+ "default": "#cta"
+ },
+ {
+ "type": "dropdown",
+ "id": "ctaPrimaryStyle",
+ "label": "Primary CTA Style",
+ "required": false,
+ "description": "Primary CTA visual style.",
+ "default": "filled",
+ "options": [
+ {
+ "key": "filled",
+ "value": "filled",
+ "label": "Filled"
+ },
+ {
+ "key": "outline",
+ "value": "outline",
+ "label": "Outline"
+ }
+ ],
+ "enumNames": [
+ "Filled",
+ "Outline"
+ ]
+ },
+ {
+ "type": "singleline",
+ "id": "ctaSecondaryLabel",
+ "label": "Secondary CTA Label",
+ "required": false,
+ "description": "Optional secondary CTA label.",
+ "default": "View demo"
+ },
+ {
+ "type": "singleline",
+ "id": "ctaSecondaryHref",
+ "label": "Secondary CTA Link",
+ "required": false,
+ "description": "Optional secondary CTA link (href).",
+ "default": "#features"
+ },
+ {
+ "type": "chips",
+ "id": "menuItems",
+ "label": "Menu Items",
+ "required": false,
+ "description": "Top navigation items (e.g. Home, Features, Pricing, Contact).",
+ "uniqueItems": true,
+ "default": [
+ "Home",
+ "Features",
+ "How it works",
+ "FAQ",
+ "Get started"
+ ]
+ },
+ {
+ "type": "chips",
+ "id": "sectionOrder",
+ "label": "Section Order",
+ "required": false,
+ "description": "Layout order for sections (by section id).",
+ "uniqueItems": true,
+ "default": [
+ "hero",
+ "features",
+ "howItWorks",
+ "testimonials",
+ "faq",
+ "cta",
+ "footer"
+ ]
+ },
+ {
+ "type": "singleline",
+ "id": "themePrimaryColor",
+ "label": "Theme Primary Color",
+ "required": false,
+ "description": "Primary brand color (hex, e.g. #2563EB).",
+ "widget": "ColorWidget",
+ "placeholder": "#F2B04C",
+ "default": "#F2B04C"
+ },
+ {
+ "type": "singleline",
+ "id": "themeAccentColor",
+ "label": "Theme Accent Color",
+ "required": false,
+ "description": "Accent color used for highlights (hex, e.g. #22C55E).",
+ "widget": "ColorWidget",
+ "placeholder": "#5A4635",
+ "default": "#5A4635"
+ },
+ {
+ "type": "singleline",
+ "id": "themeBackgroundColor",
+ "label": "Theme Background Color",
+ "required": false,
+ "description": "Background color (hex, e.g. #0B1220).",
+ "widget": "ColorWidget",
+ "placeholder": "#F7F3EE",
+ "default": "#F7F3EE"
+ },
+ {
+ "type": "multiline",
+ "id": "menuContent",
+ "label": "Menu Content (JSON)",
+ "required": false,
+ "description": "One-page sections for the demo site. Edit this to match your Menu Items so navigation scrolls correctly. Provide JSON as { sections: [{ id, label, headline, body, variant, media, layout, theme, items }] }.",
+ "default": "{\n \"sections\": [\n {\n \"id\": \"hero\",\n \"label\": \"Home\",\n \"headline\": \"AIEditor Form Code Extractor\",\n \"body\": \"Generate a working website starter (Next.js/Vite, DB/GitHub) from structured form data — then preview it instantly.\",\n \"variant\": \"hero\",\n \"layout\": \"twoCol\",\n \"theme\": \"light\",\n \"media\": { \"imageUrl\": \"\" },\n \"items\": [\n { \"label\": \"Next.js or Vite\", \"value\": \"Choose your stack\" },\n { \"label\": \"DB or GitHub\", \"value\": \"Pick deployment flow\" },\n { \"label\": \"Live preview\", \"value\": \"See it instantly\" }\n ]\n },\n {\n \"id\": \"features\",\n \"label\": \"Features\",\n \"headline\": \"What you get\",\n \"body\": \"A realistic landing-page layout with sections, navigation, and a configurable header (transparent over hero → solid after scroll).\",\n \"variant\": \"features\",\n \"layout\": \"cards\",\n \"theme\": \"light\",\n \"items\": [\n { \"title\": \"Structured inputs\", \"description\": \"Control header style, colors, CTAs, and section order.\" },\n { \"title\": \"One-page navigation\", \"description\": \"Menu items scroll to matching section ids.\" },\n { \"title\": \"Section variants\", \"description\": \"Hero, features, steps, testimonials, FAQ, CTA, footer.\" }\n ]\n },\n {\n \"id\": \"howItWorks\",\n \"label\": \"How it works\",\n \"headline\": \"From form → demo site\",\n \"body\": \"A simple 3-step flow to generate and preview a site.\",\n \"variant\": \"steps\",\n \"layout\": \"steps\",\n \"theme\": \"light\",\n \"items\": [\n { \"title\": \"Pick a template\", \"description\": \"Select Next/Vite and DB/GitHub.\" },\n { \"title\": \"Fill in details\", \"description\": \"Provide metadata, schema, and demo layout hints.\" },\n { \"title\": \"Generate & preview\", \"description\": \"Get a runnable project and see it immediately.\" }\n ]\n },\n {\n \"id\": \"testimonials\",\n \"label\": \"Testimonials\",\n \"headline\": \"Teams ship faster\",\n \"body\": \"A couple of believable quotes make the layout feel real.\",\n \"variant\": \"testimonials\",\n \"layout\": \"cards\",\n \"theme\": \"light\",\n \"items\": [\n { \"quote\": \"We went from idea to preview in minutes.\", \"name\": \"Amina R.\", \"role\": \"Product\" },\n { \"quote\": \"The header + sections feel like a real landing page.\", \"name\": \"Omar K.\", \"role\": \"Engineering\" }\n ]\n },\n {\n \"id\": \"faq\",\n \"label\": \"FAQ\",\n \"headline\": \"Questions, answered\",\n \"body\": \"Keep it short and scannable.\",\n \"variant\": \"faq\",\n \"layout\": \"twoCol\",\n \"theme\": \"light\",\n \"items\": [\n { \"q\": \"Can I reorder sections?\", \"a\": \"Yes — use sectionOrder and keep ids aligned with menu items.\" },\n { \"q\": \"Can the header change after scroll?\", \"a\": \"Yes — configure scrolled colors and invertedOnScroll.\" },\n { \"q\": \"Can sections include media?\", \"a\": \"Yes — provide media.imageUrl or icon hints per section.\" }\n ]\n },\n {\n \"id\": \"cta\",\n \"label\": \"Get started\",\n \"headline\": \"Ready to generate?\",\n \"body\": \"Use the CTAs to drive users to the next step.\",\n \"variant\": \"cta\",\n \"layout\": \"twoCol\",\n \"theme\": \"light\"\n },\n {\n \"id\": \"footer\",\n \"label\": \"Footer\",\n \"headline\": \"\",\n \"body\": \"© 2026 Form Builder. All rights reserved.\",\n \"variant\": \"footer\",\n \"layout\": \"twoCol\",\n \"theme\": \"light\"\n }\n ]\n}\n"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "type": "form",
+ "properties": {
+ "required": [
+ "aiEditorFormCodeExtractor.inngestEventName"
+ ],
+ "aiEditorFormCodeExtractor.meta": {
+ "title": "AI Editor Form Code Extractor",
+ "description": "",
+ "type": "object",
+ "position": 0
+ },
+ "aiEditorFormCodeExtractor.required": [
+ "title",
+ "post",
+ "additionalProperties"
+ ],
+ "aiEditorFormCodeExtractor.templateTarget": {
+ "type": "string",
+ "title": "Template Target",
+ "description": "Select which template to use (Next/Vite × DB/GitHub).",
+ "default": "nextjs-db",
+ "enum": [
+ "nextjs-db",
+ "nextjs-github",
+ "vite-db",
+ "vite-github"
+ ],
+ "enumNames": [
+ "Next.js + DB",
+ "Next.js + GitHub",
+ "Vite + DB",
+ "Vite + GitHub"
+ ]
+ },
+ "aiEditorFormCodeExtractor.inngestEventName": {
+ "type": "string",
+ "title": "Inngest Event Name",
+ "description": "Auto-filled based on Template Target selection.",
+ "default": "aicode/code-agent-trigger",
+ "readOnly": true,
+ "minLength": 1
+ },
+ "aiEditorFormCodeExtractor.title": {
+ "type": "string",
+ "title": "Title",
+ "description": "",
+ "default": ""
+ },
+ "aiEditorFormCodeExtractor.credentials": {
+ "type": "string",
+ "title": "Credentials",
+ "description": "Credentials required for this AI editor template.",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.channelId": {
+ "type": "string",
+ "title": "Channel ID",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.channelType": {
+ "type": "string",
+ "title": "Channel Type",
+ "description": "",
+ "default": "AIASSISTANT",
+ "enum": [
+ "SERVICE",
+ "AIASSISTANT",
+ "CHANNEL",
+ "DIRECT",
+ "PRIVATE",
+ "PUBLIC",
+ "GROUP",
+ "VISITOR"
+ ],
+ "enumNames": [
+ "Service",
+ "AI Assistant",
+ "Channel",
+ "Direct",
+ "Private",
+ "Public",
+ "Group",
+ "Visitor"
+ ]
+ },
+ "aiEditorFormCodeExtractor.projectId": {
+ "type": "string",
+ "title": "Project ID",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.createdBy": {
+ "type": "string",
+ "title": "Created By",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.orgId": {
+ "type": "string",
+ "title": "Organization ID",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.post.meta": {
+ "title": "Post",
+ "description": "",
+ "type": "object",
+ "position": 5
+ },
+ "aiEditorFormCodeExtractor.post.required": [
+ "props"
+ ],
+ "aiEditorFormCodeExtractor.post.id": {
+ "type": "string",
+ "title": "Post ID",
+ "description": "",
+ "minLength": 1
+ },
+ "aiEditorFormCodeExtractor.post.author": {
+ "type": "string",
+ "title": "Author (User ID)",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.post.creator": {
+ "type": "string",
+ "title": "Creator (User ID)",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.post.channel": {
+ "type": "string",
+ "title": "Channel (ID)",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.post.parentId": {
+ "type": "string",
+ "title": "Parent ID",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.post.message": {
+ "type": "string",
+ "title": "Message",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.post.type": {
+ "type": "string",
+ "title": "Post Type",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.post.props.meta": {
+ "title": "Props",
+ "description": "",
+ "type": "object",
+ "position": 7
+ },
+ "aiEditorFormCodeExtractor.post.props.required": [
+ "fragment"
+ ],
+ "aiEditorFormCodeExtractor.post.props.role": {
+ "type": "string",
+ "title": "Role",
+ "description": "",
+ "default": "ASSISTANT",
+ "enum": [
+ "USER",
+ "ASSISTANT"
+ ],
+ "enumNames": [
+ "User",
+ "Assistant"
+ ]
+ },
+ "aiEditorFormCodeExtractor.post.props.projectId": {
+ "type": "string",
+ "title": "Project ID",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.post.props.template": {
+ "type": "string",
+ "title": "Template",
+ "description": "",
+ "default": "vite-react"
+ },
+ "aiEditorFormCodeExtractor.post.props.sendNotificationWithProjectId": {
+ "type": "boolean",
+ "title": "Send Notification With Project ID",
+ "description": "",
+ "default": true
+ },
+ "aiEditorFormCodeExtractor.post.props.fragment.meta": {
+ "title": "Fragment",
+ "description": "",
+ "type": "object",
+ "position": 4
+ },
+ "aiEditorFormCodeExtractor.post.props.fragment.required": [],
+ "aiEditorFormCodeExtractor.post.props.fragment.sandboxUrl": {
+ "type": "string",
+ "title": "Sandbox URL",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.post.props.fragment.title": {
+ "type": "string",
+ "title": "Title",
+ "description": "",
+ "default": "AI Editor Form Code Extractor"
+ },
+ "aiEditorFormCodeExtractor.post.props.fragment.summary": {
+ "type": "string",
+ "title": "Task Summary",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.post.props.fragment.canvasLayers": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "uniqueItems": true,
+ "title": "Canvas Layers",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.post.props.fragment.type": {
+ "type": "string",
+ "title": "Result Type",
+ "description": "",
+ "default": "RESULT",
+ "enum": [
+ "RESULT",
+ "ERROR"
+ ],
+ "enumNames": [
+ "RESULT",
+ "ERROR"
+ ]
+ },
+ "aiEditorFormCodeExtractor.post.props.fragment.messageId": {
+ "type": "string",
+ "title": "Message ID",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.post.props.fragment.isError": {
+ "type": "boolean",
+ "title": "Is Error",
+ "description": "",
+ "default": false
+ },
+ "aiEditorFormCodeExtractor.post.props.fragment.files.meta": {
+ "title": "Files (path -> content)",
+ "description": "",
+ "type": "object",
+ "position": 7
+ },
+ "aiEditorFormCodeExtractor.post.hashTags": {
+ "type": "string",
+ "title": "Hashtags",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.post.filenames": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "uniqueItems": true,
+ "title": "Filenames",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.post.fields": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "uniqueItems": true,
+ "title": "Custom Fields",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.post.editedBy": {
+ "type": "string",
+ "title": "Edited By (User ID)",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.post.createdAt": {
+ "type": "string",
+ "title": "Created At",
+ "description": "ISO 8601 with milliseconds and offset",
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{2}:\\d{2}$"
+ },
+ "aiEditorFormCodeExtractor.post.updatedAt": {
+ "type": "string",
+ "title": "Updated At",
+ "description": "ISO 8601 with milliseconds and offset",
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{2}:\\d{2}$"
+ },
+ "aiEditorFormCodeExtractor.post.hasReactions": {
+ "type": "boolean",
+ "title": "Has Reactions",
+ "description": "",
+ "default": false
+ },
+ "aiEditorFormCodeExtractor.additionalProperties.meta": {
+ "title": "Additional Properties",
+ "description": "",
+ "type": "object",
+ "position": 6
+ },
+ "aiEditorFormCodeExtractor.additionalProperties.required": [
+ "modelConfig"
+ ],
+ "aiEditorFormCodeExtractor.additionalProperties.modelConfig.meta": {
+ "title": "Model Configuration",
+ "description": "",
+ "type": "object",
+ "position": 0
+ },
+ "aiEditorFormCodeExtractor.additionalProperties.modelConfig.required": [],
+ "aiEditorFormCodeExtractor.additionalProperties.modelConfig.provider": {
+ "type": "string",
+ "title": "Provider",
+ "description": "",
+ "default": "anthropic"
+ },
+ "aiEditorFormCodeExtractor.additionalProperties.modelConfig.model": {
+ "type": "string",
+ "title": "Model",
+ "description": "",
+ "default": "claude-sonnet-4-5-20250929"
+ },
+ "aiEditorFormCodeExtractor.additionalProperties.modelConfig.apiKey": {
+ "type": "string",
+ "title": "API Key",
+ "description": ""
+ },
+ "aiEditorFormCodeExtractor.additionalProperties.modelConfig.template": {
+ "type": "string",
+ "title": "Template",
+ "description": "",
+ "default": "vite-react"
+ },
+ "aiEditorFormCodeExtractor.aiEditorFormCodeExtractor.meta": {
+ "title": "aiEditorFormCodeExtractor",
+ "description": "",
+ "type": "object",
+ "position": 7
+ },
+ "aiEditorFormCodeExtractor.configuration.meta": {
+ "title": "Template Setup",
+ "description": "",
+ "type": "object",
+ "position": 8
+ },
+ "aiEditorFormCodeExtractor.configuration.required": [],
+ "aiEditorFormCodeExtractor.configuration.formExtensionE2BViteReactTemplateId": {
+ "type": "string",
+ "title": "E2B Vite React Template ID",
+ "description": "E2B template id for Vite React.",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionE2BVueTemplateId": {
+ "type": "string",
+ "title": "E2B Vue Template ID",
+ "description": "E2B template id for Vue.",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionE2BClaudeTemplateId": {
+ "type": "string",
+ "title": "E2B Claude Template ID",
+ "description": "E2B template id for Claude.",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionE2BTemplateId": {
+ "type": "string",
+ "title": "E2B Template ID",
+ "description": "Default E2B template id.",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionE2BDomain": {
+ "type": "string",
+ "title": "E2B Domain",
+ "description": "E2B domain.",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionE2BAPIKey": {
+ "type": "string",
+ "title": "E2B API Key",
+ "description": "E2B API key.",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionGithubToken": {
+ "type": "string",
+ "title": "GitHub Token",
+ "description": "GitHub personal access token.",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionGithubOrg": {
+ "type": "string",
+ "title": "GitHub Organization",
+ "description": "GitHub org/user name.",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionGithubReactBase": {
+ "type": "string",
+ "title": "React Base Repo URL",
+ "description": "Base repository URL used for GitHub targets.",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionModelConfigAPIKey": {
+ "type": "string",
+ "title": "Model Provider API Key",
+ "description": "API key for the selected model provider (if required).",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionSandboxId": {
+ "type": "string",
+ "title": "Sandbox ID",
+ "description": "E2B sandbox ID for execution environment.",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionSnapshotId": {
+ "type": "string",
+ "title": "Snapshot ID",
+ "description": "E2B snapshot ID for pre-configured environment.",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionGitCloneUrl": {
+ "type": "string",
+ "title": "Git Clone URL",
+ "description": "Repository URL to clone (optional).",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionShouldClone": {
+ "type": "boolean",
+ "title": "Should Clone Repository",
+ "description": "Flag to enable/disable repository cloning (default: false).",
+ "default": false,
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionTemplatePreviewUrl": {
+ "type": "string",
+ "title": "Template Preview URL",
+ "description": "Optional URL used to preview the generated template (e.g. deployed demo or sandbox link).",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionSupabaseUrl": {
+ "type": "string",
+ "title": "Supabase URL",
+ "description": "Optional Supabase project URL for the generated template.",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionSupabasePublishableKey": {
+ "type": "string",
+ "title": "Supabase Publishable Key",
+ "description": "Optional Supabase publishable key for the generated template.",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionSupabaseProjectId": {
+ "type": "string",
+ "title": "Supabase Project ID",
+ "description": "Optional Supabase project ID for the generated template.",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionSupabaseAccessToken": {
+ "type": "string",
+ "title": "Supabase Access Token",
+ "description": "Optional Supabase access token for the generated template.",
+ "default": "",
+ "scope": 3
+ },
+ "aiEditorFormCodeExtractor.demo.meta": {
+ "title": "Website Demo",
+ "description": "",
+ "type": "object",
+ "position": 9
+ },
+ "aiEditorFormCodeExtractor.demo.required": [],
+ "aiEditorFormCodeExtractor.demo.headerStyle": {
+ "type": "string",
+ "title": "Header Style",
+ "description": "Header visual style and behavior over the hero section.",
+ "default": "transparentOverHero",
+ "enum": [
+ "transparentOverHero",
+ "solid",
+ "blur",
+ "invertedOnScroll"
+ ],
+ "enumNames": [
+ "Transparent Over Hero",
+ "Solid",
+ "Blur",
+ "Inverted On Scroll"
+ ]
+ },
+ "aiEditorFormCodeExtractor.demo.headerPosition": {
+ "type": "string",
+ "title": "Header Position",
+ "description": "Header layout behavior on the page.",
+ "default": "fixed",
+ "enum": [
+ "fixed",
+ "sticky",
+ "static"
+ ],
+ "enumNames": [
+ "Fixed",
+ "Sticky",
+ "Static"
+ ]
+ },
+ "aiEditorFormCodeExtractor.demo.headerBgColor": {
+ "type": "string",
+ "title": "Header Background Color",
+ "description": "Header background color (hex). Separate from page background.",
+ "default": "#FFFFFF"
+ },
+ "aiEditorFormCodeExtractor.demo.headerTextColor": {
+ "type": "string",
+ "title": "Header Text Color",
+ "description": "Header text color (hex).",
+ "default": "#1F2937"
+ },
+ "aiEditorFormCodeExtractor.demo.headerActiveLinkColor": {
+ "type": "string",
+ "title": "Header Active Link Color",
+ "description": "Header active link color (hex).",
+ "default": "#F2B04C"
+ },
+ "aiEditorFormCodeExtractor.demo.headerScrolledBgColor": {
+ "type": "string",
+ "title": "Header Scrolled Background Color",
+ "description": "Header background color (hex) after scrolling past the hero.",
+ "default": "#FFFFFF"
+ },
+ "aiEditorFormCodeExtractor.demo.headerScrolledTextColor": {
+ "type": "string",
+ "title": "Header Scrolled Text Color",
+ "description": "Header text color (hex) after scrolling past the hero.",
+ "default": "#1F2937"
+ },
+ "aiEditorFormCodeExtractor.demo.headerBorderColor": {
+ "type": "string",
+ "title": "Header Border Color",
+ "description": "Optional header bottom border color (hex).",
+ "default": ""
+ },
+ "aiEditorFormCodeExtractor.demo.title": {
+ "type": "string",
+ "title": "Title",
+ "description": "Title used for the generated demo website.",
+ "default": ""
+ },
+ "aiEditorFormCodeExtractor.demo.description": {
+ "type": "string",
+ "title": "Description",
+ "description": "Short description/tagline for the landing page hero section.",
+ "default": ""
+ },
+ "aiEditorFormCodeExtractor.demo.heroOverlay": {
+ "type": "string",
+ "title": "Hero Overlay",
+ "description": "Optional overlay over the hero background image.",
+ "default": "gradient",
+ "enum": [
+ "none",
+ "gradient",
+ "solid"
+ ],
+ "enumNames": [
+ "None",
+ "Gradient",
+ "Solid"
+ ]
+ },
+ "aiEditorFormCodeExtractor.demo.heroOverlayColor": {
+ "type": "string",
+ "title": "Hero Overlay Color",
+ "description": "Overlay color (hex).",
+ "default": "#0B1220"
+ },
+ "aiEditorFormCodeExtractor.demo.heroOverlayOpacity": {
+ "type": "number",
+ "title": "Hero Overlay Opacity",
+ "description": "Overlay opacity from 0 to 1.",
+ "default": 0.45,
+ "minimum": 0,
+ "maximum": 1
+ },
+ "aiEditorFormCodeExtractor.demo.heroTextColor": {
+ "type": "string",
+ "title": "Hero Text Color",
+ "description": "Hero text color (hex). Useful when header is transparent over hero.",
+ "default": "#F7F3EE"
+ },
+ "aiEditorFormCodeExtractor.demo.heroImageUrl": {
+ "type": "string",
+ "title": "Landing Page Image URL",
+ "description": "Hero/cover image URL for the landing page.",
+ "default": ""
+ },
+ "aiEditorFormCodeExtractor.demo.menuAlignment": {
+ "type": "string",
+ "title": "Menu Alignment",
+ "description": "How the header content is aligned (logo, links, CTAs).",
+ "default": "split",
+ "enum": [
+ "left",
+ "center",
+ "right",
+ "split"
+ ],
+ "enumNames": [
+ "Left",
+ "Center",
+ "Right",
+ "Split (Logo Left, Links Right)"
+ ]
+ },
+ "aiEditorFormCodeExtractor.demo.logoText": {
+ "type": "string",
+ "title": "Logo Text",
+ "description": "Text logo shown in the header.",
+ "default": "Form Builder"
+ },
+ "aiEditorFormCodeExtractor.demo.logoImageUrl": {
+ "type": "string",
+ "title": "Logo Image URL",
+ "description": "Optional image logo URL. If provided, used instead of Logo Text.",
+ "default": ""
+ },
+ "aiEditorFormCodeExtractor.demo.ctaPrimaryLabel": {
+ "type": "string",
+ "title": "Primary CTA Label",
+ "description": "Primary call-to-action button label.",
+ "default": "Get started"
+ },
+ "aiEditorFormCodeExtractor.demo.ctaPrimaryEnabled": {
+ "type": "boolean",
+ "title": "Show Primary CTA",
+ "description": "Toggle the primary call-to-action button.",
+ "default": true
+ },
+ "aiEditorFormCodeExtractor.demo.ctaPrimaryHref": {
+ "type": "string",
+ "title": "Primary CTA Link",
+ "description": "Primary call-to-action link (href).",
+ "default": "#cta"
+ },
+ "aiEditorFormCodeExtractor.demo.ctaPrimaryStyle": {
+ "type": "string",
+ "title": "Primary CTA Style",
+ "description": "Primary CTA visual style.",
+ "default": "filled",
+ "enum": [
+ "filled",
+ "outline"
+ ],
+ "enumNames": [
+ "Filled",
+ "Outline"
+ ]
+ },
+ "aiEditorFormCodeExtractor.demo.ctaSecondaryLabel": {
+ "type": "string",
+ "title": "Secondary CTA Label",
+ "description": "Optional secondary CTA label.",
+ "default": "View demo"
+ },
+ "aiEditorFormCodeExtractor.demo.ctaSecondaryEnabled": {
+ "type": "boolean",
+ "title": "Show Secondary CTA",
+ "description": "Toggle the secondary call-to-action button.",
+ "default": true
+ },
+ "aiEditorFormCodeExtractor.demo.ctaSecondaryHref": {
+ "type": "string",
+ "title": "Secondary CTA Link",
+ "description": "Optional secondary CTA link (href).",
+ "default": "#features"
+ },
+ "aiEditorFormCodeExtractor.demo.alternateSectionBackgrounds": {
+ "type": "boolean",
+ "title": "Alternate Section Backgrounds",
+ "description": "If enabled, sections will alternate between a tinted background and a base background for better visual separation.",
+ "default": true
+ },
+ "aiEditorFormCodeExtractor.demo.alternateSectionTintColor": {
+ "type": "string",
+ "title": "Alt Section Tint Color",
+ "description": "Tinted background color used for alternating sections (hex).",
+ "default": "#F7F3EE"
+ },
+ "aiEditorFormCodeExtractor.demo.alternateSectionBaseColor": {
+ "type": "string",
+ "title": "Alt Section Base Color",
+ "description": "Base background color used for alternating sections (hex).",
+ "default": "#FFFFFF"
+ },
+ "aiEditorFormCodeExtractor.demo.menuItems": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "uniqueItems": true,
+ "title": "Menu Items",
+ "description": "Top navigation labels. These should match the section labels in Menu Content (JSON) for one-page scroll navigation.",
+ "default": [
+ "Home",
+ "Features",
+ "How it works",
+ "FAQ",
+ "Get started"
+ ]
+ },
+ "aiEditorFormCodeExtractor.demo.sectionOrder": {
+ "type": "array",
+ "title": "Section Order",
+ "description": "Layout order for sections (by section id).",
+ "items": {
+ "type": "string"
+ },
+ "uniqueItems": true,
+ "default": [
+ "hero",
+ "features",
+ "howItWorks",
+ "testimonials",
+ "faq",
+ "cta",
+ "footer"
+ ]
+ },
+ "aiEditorFormCodeExtractor.demo.themePrimaryColor": {
+ "type": "string",
+ "title": "Theme Primary Color",
+ "description": "Primary brand color (hex, e.g. #2563EB).",
+ "default": "#F2B04C"
+ },
+ "aiEditorFormCodeExtractor.demo.themeAccentColor": {
+ "type": "string",
+ "title": "Theme Accent Color",
+ "description": "Accent color used for highlights (hex, e.g. #22C55E).",
+ "default": "#5A4635"
+ },
+ "aiEditorFormCodeExtractor.demo.themeBackgroundColor": {
+ "type": "string",
+ "title": "Theme Background Color",
+ "description": "Background color (hex, e.g. #0B1220).",
+ "default": "#F7F3EE"
+ },
+ "aiEditorFormCodeExtractor.demo.menuContent": {
+ "type": "string",
+ "title": "Menu Content (JSON)",
+ "description": "One-page sections for the demo site. Keep section labels aligned with Menu Items so navigation scrolls correctly. Provide JSON as { sections: [{ id, label, headline, body, variant, media, layout, theme, items }] }.",
+ "default": "{\n \"sections\": [\n {\n \"id\": \"hero\",\n \"label\": \"Home\",\n \"headline\": \"AIEditor Form Code Extractor\",\n \"body\": \"Generate a working website starter (Next.js/Vite, DB/GitHub) from structured form data — then preview it instantly.\",\n \"variant\": \"hero\",\n \"layout\": \"twoCol\",\n \"theme\": \"light\",\n \"media\": { \"imageUrl\": \"\" },\n \"items\": [\n { \"label\": \"Next.js or Vite\", \"value\": \"Choose your stack\" },\n { \"label\": \"DB or GitHub\", \"value\": \"Pick deployment flow\" },\n { \"label\": \"Live preview\", \"value\": \"See it instantly\" }\n ]\n },\n {\n \"id\": \"features\",\n \"label\": \"Features\",\n \"headline\": \"What you get\",\n \"body\": \"A realistic landing-page layout with sections, navigation, and a configurable header (transparent over hero → solid after scroll).\",\n \"variant\": \"features\",\n \"layout\": \"cards\",\n \"theme\": \"light\",\n \"items\": [\n { \"title\": \"Structured inputs\", \"description\": \"Control header style, colors, CTAs, and section order.\" },\n { \"title\": \"One-page navigation\", \"description\": \"Menu items scroll to matching section ids.\" },\n { \"title\": \"Section variants\", \"description\": \"Hero, features, steps, testimonials, FAQ, CTA, footer.\" }\n ]\n },\n {\n \"id\": \"howItWorks\",\n \"label\": \"How it works\",\n \"headline\": \"From form → demo site\",\n \"body\": \"A simple 3-step flow to generate and preview a site.\",\n \"variant\": \"steps\",\n \"layout\": \"steps\",\n \"theme\": \"light\",\n \"items\": [\n { \"title\": \"Pick a template\", \"description\": \"Select Next/Vite and DB/GitHub.\" },\n { \"title\": \"Fill in details\", \"description\": \"Provide metadata, schema, and demo layout hints.\" },\n { \"title\": \"Generate & preview\", \"description\": \"Get a runnable project and see it immediately.\" }\n ]\n },\n {\n \"id\": \"testimonials\",\n \"label\": \"Testimonials\",\n \"headline\": \"Teams ship faster\",\n \"body\": \"A couple of believable quotes make the layout feel real.\",\n \"variant\": \"testimonials\",\n \"layout\": \"cards\",\n \"theme\": \"light\",\n \"items\": [\n { \"quote\": \"We went from idea to preview in minutes.\", \"name\": \"Amina R.\", \"role\": \"Product\" },\n { \"quote\": \"The header + sections feel like a real landing page.\", \"name\": \"Omar K.\", \"role\": \"Engineering\" }\n ]\n },\n {\n \"id\": \"faq\",\n \"label\": \"FAQ\",\n \"headline\": \"Questions, answered\",\n \"body\": \"Keep it short and scannable.\",\n \"variant\": \"faq\",\n \"layout\": \"twoCol\",\n \"theme\": \"light\",\n \"items\": [\n { \"q\": \"Can I reorder sections?\", \"a\": \"Yes — use sectionOrder and keep ids aligned with menu items.\" },\n { \"q\": \"Can the header change after scroll?\", \"a\": \"Yes — configure scrolled colors and invertedOnScroll.\" },\n { \"q\": \"Can sections include media?\", \"a\": \"Yes — provide media.imageUrl or icon hints per section.\" }\n ]\n },\n {\n \"id\": \"cta\",\n \"label\": \"Get started\",\n \"headline\": \"Ready to generate?\",\n \"body\": \"Use the CTAs to drive users to the next step.\",\n \"variant\": \"cta\",\n \"layout\": \"twoCol\",\n \"theme\": \"light\"\n },\n {\n \"id\": \"footer\",\n \"label\": \"Footer\",\n \"headline\": \"\",\n \"body\": \"© 2026 Form Builder. All rights reserved.\",\n \"variant\": \"footer\",\n \"layout\": \"twoCol\",\n \"theme\": \"light\"\n }\n ]\n}\n"
+ }
+ }
+ },
+ {
+ "type": "formUI",
+ "properties": {
+ "aiEditorFormCodeExtractor.templateTarget": {
+ "ui:widget": "select",
+ "ui:enumOptions": [
+ {
+ "value": "nextjs-db",
+ "label": "Next.js + DB"
+ },
+ {
+ "value": "nextjs-github",
+ "label": "Next.js + GitHub"
+ },
+ {
+ "value": "vite-db",
+ "label": "Vite + DB"
+ },
+ {
+ "value": "vite-github",
+ "label": "Vite + GitHub"
+ }
+ ]
+ },
+ "aiEditorFormCodeExtractor.inngestEventName": {
+ "ui:widget": "text",
+ "ui:readonly": true
+ },
+ "aiEditorFormCodeExtractor.title": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.credentials": {
+ "ui:widget": "resourceSelect",
+ "ui:options": {
+ "resourceId": "credentialTemplates",
+ "dropdownSelectionType": "multi",
+ "loadOptionsTrigger": "onClick",
+ "showSelectedChips": true,
+ "translator": "(data) => { if (!data || !Array.isArray(data)) return []; return data.map(item => ({ label: item.label || item.name || item.id, value: item.value || item.id, icon: item.icon || \"\" })); }"
+ },
+ "ui:placeholder": "Select credentials (optional)",
+ "ui:required": false
+ },
+ "aiEditorFormCodeExtractor.channelId": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.channelType": {
+ "ui:widget": "select",
+ "ui:enumOptions": [
+ {
+ "value": "SERVICE",
+ "label": "Service"
+ },
+ {
+ "value": "AIASSISTANT",
+ "label": "AI Assistant"
+ },
+ {
+ "value": "CHANNEL",
+ "label": "Channel"
+ },
+ {
+ "value": "DIRECT",
+ "label": "Direct"
+ },
+ {
+ "value": "PRIVATE",
+ "label": "Private"
+ },
+ {
+ "value": "PUBLIC",
+ "label": "Public"
+ },
+ {
+ "value": "GROUP",
+ "label": "Group"
+ },
+ {
+ "value": "VISITOR",
+ "label": "Visitor"
+ }
+ ]
+ },
+ "aiEditorFormCodeExtractor.projectId": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.createdBy": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.orgId": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.post.id": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.post.author": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.post.creator": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.post.channel": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.post.parentId": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.post.message": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.post.type": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.post.props.role": {
+ "ui:widget": "select",
+ "ui:enumOptions": [
+ {
+ "value": "USER",
+ "label": "User"
+ },
+ {
+ "value": "ASSISTANT",
+ "label": "Assistant"
+ }
+ ]
+ },
+ "aiEditorFormCodeExtractor.post.props.projectId": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.post.props.template": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.post.props.sendNotificationWithProjectId": {
+ "ui:widget": "checkbox"
+ },
+ "aiEditorFormCodeExtractor.post.props.fragment.sandboxUrl": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.post.props.fragment.title": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.post.props.fragment.summary": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.post.props.fragment.canvasLayers": {
+ "ui:widget": "checkboxes",
+ "ui:options": {
+ "enumOptions": []
+ }
+ },
+ "aiEditorFormCodeExtractor.post.props.fragment.type": {
+ "ui:widget": "select",
+ "ui:enumOptions": [
+ {
+ "value": "RESULT",
+ "label": "RESULT"
+ },
+ {
+ "value": "ERROR",
+ "label": "ERROR"
+ }
+ ]
+ },
+ "aiEditorFormCodeExtractor.post.props.fragment.messageId": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.post.props.fragment.isError": {
+ "ui:widget": "checkbox"
+ },
+ "aiEditorFormCodeExtractor.post.hashTags": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.post.filenames": {
+ "ui:widget": "checkboxes",
+ "ui:options": {
+ "enumOptions": []
+ }
+ },
+ "aiEditorFormCodeExtractor.post.fields": {
+ "ui:widget": "checkboxes",
+ "ui:options": {
+ "enumOptions": []
+ }
+ },
+ "aiEditorFormCodeExtractor.post.editedBy": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.post.createdAt": {
+ "ui:widget": "text",
+ "ui:description": "ISO 8601 with milliseconds and offset"
+ },
+ "aiEditorFormCodeExtractor.post.updatedAt": {
+ "ui:widget": "text",
+ "ui:description": "ISO 8601 with milliseconds and offset"
+ },
+ "aiEditorFormCodeExtractor.post.hasReactions": {
+ "ui:widget": "checkbox"
+ },
+ "aiEditorFormCodeExtractor.additionalProperties.modelConfig.provider": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.additionalProperties.modelConfig.model": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.additionalProperties.modelConfig.apiKey": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.additionalProperties.modelConfig.template": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.configuration": {
+ "ui:widget": "group"
+ },
+ "aiEditorFormCodeExtractor.demo": {
+ "ui:widget": "group"
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionE2BViteReactTemplateId": {
+ "ui:widget": "text",
+ "ui:description": "E2B template id for Vite React.",
+ "ui:placeholder": "e.g. 0w7z3d6bosdvqni2xtuf"
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionE2BVueTemplateId": {
+ "ui:widget": "text",
+ "ui:description": "E2B template id for Vue.",
+ "ui:placeholder": "e.g. grp7jqsey9ei22ap659k"
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionE2BClaudeTemplateId": {
+ "ui:widget": "text",
+ "ui:description": "E2B template id for Claude.",
+ "ui:placeholder": "e.g. 3qua6mjt7gp4t1ijqi3t"
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionE2BTemplateId": {
+ "ui:widget": "text",
+ "ui:description": "Default E2B template id.",
+ "ui:placeholder": "e.g. ycbh59ksxbspv1t4jmb7"
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionE2BDomain": {
+ "ui:widget": "text",
+ "ui:description": "E2B domain.",
+ "ui:placeholder": "e.g. yarntra.com"
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionE2BAPIKey": {
+ "ui:widget": "text",
+ "ui:description": "E2B API key."
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionGithubToken": {
+ "ui:widget": "text",
+ "ui:description": "GitHub personal access token."
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionGithubOrg": {
+ "ui:widget": "text",
+ "ui:description": "GitHub org/user name.",
+ "ui:placeholder": "e.g. my-org"
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionGithubReactBase": {
+ "ui:widget": "text",
+ "ui:description": "Base repository URL used for GitHub targets.",
+ "ui:placeholder": "e.g. https://github.com/my-org/react-visual-base"
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionModelConfigAPIKey": {
+ "ui:widget": "text",
+ "ui:description": "API key for the selected model provider (if required)."
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionSandboxId": {
+ "ui:widget": "text",
+ "ui:description": "E2B sandbox ID for execution environment.",
+ "ui:placeholder": "e.g. sbx-xxxxxxxx"
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionSnapshotId": {
+ "ui:widget": "text",
+ "ui:description": "E2B snapshot ID for pre-configured environment.",
+ "ui:placeholder": "e.g. snap-xxxxxxxx"
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionGitCloneUrl": {
+ "ui:widget": "text",
+ "ui:description": "Repository URL to clone (optional).",
+ "ui:placeholder": "e.g. https://github.com/user/repo.git"
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionShouldClone": {
+ "ui:widget": "checkbox",
+ "ui:description": "Flag to enable/disable repository cloning (default: false)."
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionTemplatePreviewUrl": {
+ "ui:widget": "text",
+ "ui:description": "Optional URL used to preview the generated template (e.g. deployed demo or sandbox link).",
+ "ui:placeholder": "e.g. https://preview.example.com/my-template"
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionSupabaseUrl": {
+ "ui:widget": "text",
+ "ui:description": "Optional Supabase project URL for the generated template.",
+ "ui:placeholder": "e.g. https://abc123def.supabase.co"
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionSupabasePublishableKey": {
+ "ui:widget": "text",
+ "ui:description": "Optional Supabase publishable key for the generated template.",
+ "ui:placeholder": "e.g. sb_publishable_..."
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionSupabaseProjectId": {
+ "ui:widget": "text",
+ "ui:description": "Optional Supabase project ID for the generated template.",
+ "ui:placeholder": "e.g. vuxfjhbhvyeaslauqlhs"
+ },
+ "aiEditorFormCodeExtractor.configuration.formExtensionSupabaseAccessToken": {
+ "ui:widget": "text",
+ "ui:description": "Optional Supabase access token for the generated template.",
+ "ui:placeholder": "e.g. sbp_..."
+ },
+ "aiEditorFormCodeExtractor.demo.headerStyle": {
+ "ui:widget": "select",
+ "ui:enumOptions": [
+ {
+ "value": "transparentOverHero",
+ "label": "Transparent Over Hero"
+ },
+ {
+ "value": "solid",
+ "label": "Solid"
+ },
+ {
+ "value": "blur",
+ "label": "Blur"
+ },
+ {
+ "value": "invertedOnScroll",
+ "label": "Inverted On Scroll"
+ }
+ ]
+ },
+ "aiEditorFormCodeExtractor.demo.headerPosition": {
+ "ui:widget": "select",
+ "ui:enumOptions": [
+ {
+ "value": "fixed",
+ "label": "Fixed"
+ },
+ {
+ "value": "sticky",
+ "label": "Sticky"
+ },
+ {
+ "value": "static",
+ "label": "Static"
+ }
+ ]
+ },
+ "aiEditorFormCodeExtractor.demo.headerBgColor": {
+ "ui:widget": "ColorWidget",
+ "ui:placeholder": "#FFFFFF"
+ },
+ "aiEditorFormCodeExtractor.demo.headerTextColor": {
+ "ui:widget": "ColorWidget",
+ "ui:placeholder": "#1F2937"
+ },
+ "aiEditorFormCodeExtractor.demo.headerActiveLinkColor": {
+ "ui:widget": "ColorWidget",
+ "ui:placeholder": "#F2B04C"
+ },
+ "aiEditorFormCodeExtractor.demo.headerScrolledBgColor": {
+ "ui:widget": "ColorWidget",
+ "ui:placeholder": "#FFFFFF"
+ },
+ "aiEditorFormCodeExtractor.demo.headerScrolledTextColor": {
+ "ui:widget": "ColorWidget",
+ "ui:placeholder": "#1F2937"
+ },
+ "aiEditorFormCodeExtractor.demo.headerBorderColor": {
+ "ui:widget": "ColorWidget",
+ "ui:placeholder": "#E5E7EB"
+ },
+ "aiEditorFormCodeExtractor.demo.title": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.demo.description": {
+ "ui:widget": "textarea"
+ },
+ "aiEditorFormCodeExtractor.demo.heroOverlay": {
+ "ui:widget": "select",
+ "ui:enumOptions": [
+ {
+ "value": "none",
+ "label": "None"
+ },
+ {
+ "value": "gradient",
+ "label": "Gradient"
+ },
+ {
+ "value": "solid",
+ "label": "Solid"
+ }
+ ]
+ },
+ "aiEditorFormCodeExtractor.demo.heroOverlayColor": {
+ "ui:widget": "ColorWidget",
+ "ui:placeholder": "#0B1220"
+ },
+ "aiEditorFormCodeExtractor.demo.heroOverlayOpacity": {
+ "ui:widget": "updown"
+ },
+ "aiEditorFormCodeExtractor.demo.heroTextColor": {
+ "ui:widget": "ColorWidget",
+ "ui:placeholder": "#F7F3EE"
+ },
+ "aiEditorFormCodeExtractor.demo.heroImageUrl": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.demo.menuAlignment": {
+ "ui:widget": "select",
+ "ui:enumOptions": [
+ {
+ "value": "left",
+ "label": "Left"
+ },
+ {
+ "value": "center",
+ "label": "Center"
+ },
+ {
+ "value": "right",
+ "label": "Right"
+ },
+ {
+ "value": "split",
+ "label": "Split (Logo Left, Links Right)"
+ }
+ ]
+ },
+ "aiEditorFormCodeExtractor.demo.logoText": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.demo.logoImageUrl": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.demo.ctaPrimaryLabel": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.demo.ctaPrimaryEnabled": {
+ "ui:widget": "checkbox"
+ },
+ "aiEditorFormCodeExtractor.demo.ctaPrimaryHref": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.demo.ctaPrimaryStyle": {
+ "ui:widget": "select",
+ "ui:enumOptions": [
+ {
+ "value": "filled",
+ "label": "Filled"
+ },
+ {
+ "value": "outline",
+ "label": "Outline"
+ }
+ ]
+ },
+ "aiEditorFormCodeExtractor.demo.ctaSecondaryLabel": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.demo.ctaSecondaryEnabled": {
+ "ui:widget": "checkbox"
+ },
+ "aiEditorFormCodeExtractor.demo.ctaSecondaryHref": {
+ "ui:widget": "text"
+ },
+ "aiEditorFormCodeExtractor.demo.alternateSectionBackgrounds": {
+ "ui:widget": "checkbox"
+ },
+ "aiEditorFormCodeExtractor.demo.alternateSectionTintColor": {
+ "ui:widget": "ColorWidget",
+ "ui:placeholder": "#F7F3EE"
+ },
+ "aiEditorFormCodeExtractor.demo.alternateSectionBaseColor": {
+ "ui:widget": "ColorWidget",
+ "ui:placeholder": "#FFFFFF"
+ },
+ "aiEditorFormCodeExtractor.demo.menuItems": {
+ "ui:widget": "chips",
+ "ui:options": {
+ "enumOptions": []
+ }
+ },
+ "aiEditorFormCodeExtractor.demo.sectionOrder": {
+ "ui:widget": "chips",
+ "ui:options": {
+ "enumOptions": []
+ }
+ },
+ "aiEditorFormCodeExtractor.demo.themePrimaryColor": {
+ "ui:widget": "ColorWidget",
+ "ui:placeholder": "#F2B04C"
+ },
+ "aiEditorFormCodeExtractor.demo.themeAccentColor": {
+ "ui:widget": "ColorWidget",
+ "ui:placeholder": "#5A4635"
+ },
+ "aiEditorFormCodeExtractor.demo.themeBackgroundColor": {
+ "ui:widget": "ColorWidget",
+ "ui:placeholder": "#F7F3EE"
+ },
+ "aiEditorFormCodeExtractor.demo.menuContent": {
+ "ui:widget": "textarea",
+ "ui:options": {
+ "rows": 12
+ }
+ }
+ }
+ },
+ {
+ "type": "definitions"
+ },
+ {
+ "type": "connections",
+ "properties": {
+ "type": "connections",
+ "properties.steps": []
+ }
+ },
+ {
+ "type": "customButtons"
+ },
+ {
+ "type": "resources",
+ "properties": {
+ "credentialTemplates.id": "credentialTemplates",
+ "credentialTemplates.name": "credentialTemplates",
+ "credentialTemplates.type": "graphql",
+ "credentialTemplates.selectedSource": "graphql",
+ "credentialTemplates.description": "Loads credential templates via internal GraphQL (GetPageSettings)",
+ "credentialTemplates.config.graphql.endpoint": "",
+ "credentialTemplates.config.graphql.query": "query GetPageSettings($resourceUri: URIInput!, $options: PageSettingsOptionsInput) {\n pageSettings(resourceUri: $resourceUri, options: $options) {\n settings\n resourceUri\n target\n keys\n subjects {\n ... on ApplicationConfiguration { resource target contents keys overrides { keys contents identifiers } }\n ... on UserConfiguration { resource target contents keys overrides { keys contents identifiers } }\n ... on MachineConfiguration { resource target contents keys overrides { keys contents identifiers } }\n ... on OrganizationConfiguration { resource target contents keys overrides { keys contents identifiers } }\n ... on OrganizationResourceConfiguration { resource target contents keys overrides { keys contents identifiers } }\n }\n }\n}",
+ "credentialTemplates.config.graphql.variables.0.key": "resourceUri",
+ "credentialTemplates.config.graphql.variables.0.value": "cdecode://default/{{apolloClient.orgId}}#uiSettings",
+ "credentialTemplates.config.graphql.variables.1.key": "options",
+ "credentialTemplates.config.graphql.variables.1.value": "{\"schemaId\":\"uiLayout\",\"configKey\":\"credential.templates\",\"includeMarketplace\":true}",
+ "credentialTemplates.config.graphql.urlParameters": [],
+ "credentialTemplates.config.graphql.headers": [],
+ "credentialTemplates.config.graphql.cookies": [],
+ "credentialTemplates.config.graphql.runBehavior.mode": "automatic",
+ "credentialTemplates.config.graphql.transformResults": "({ data }) => {\n if (!data || !data.pageSettings) return [];\n var results = [];\n function extractFromObj(obj) {\n if (!obj || typeof obj !== \"object\") return;\n var groups = Object.keys(obj);\n for (var g = 0; g < groups.length; g++) {\n var groupData = obj[groups[g]];\n if (!groupData || typeof groupData !== \"object\") continue;\n var keys = Object.keys(groupData);\n for (var k = 0; k < keys.length; k++) {\n var tpl = groupData[keys[k]];\n if (tpl && tpl.templateName && tpl.enable !== \"false\" && tpl.enabled !== false) {\n var entry = { label: tpl.templateName, value: keys[k] };\n if (tpl.formIcon) { entry.icon = tpl.formIcon; }\n results.push(entry);\n }\n }\n }\n }\n if (data.pageSettings.settings && typeof data.pageSettings.settings === \"object\") {\n extractFromObj(data.pageSettings.settings);\n }\n if (data.pageSettings.subjects && Array.isArray(data.pageSettings.subjects)) {\n for (var i = 0; i < data.pageSettings.subjects.length; i++) {\n var contents = data.pageSettings.subjects[i] && data.pageSettings.subjects[i].contents;\n extractFromObj(contents);\n }\n }\n return results.sort(function(a, b) { return a.label.localeCompare(b.label); });\n}",
+ "credentialTemplates.config.graphql.useInternalLink": true,
+ "credentialTemplates.key": "credentialTemplates"
+ }
+ },
+ {
+ "type": "inngest",
+ "properties.generatedCode.submit": "async ({ event, step }) => {\n const formId = event?.data?.eventData?.formData?.formId;\n const formData = event.data.eventData.formData;\n const fieldMetadata = event.data.eventData.fieldMetadata;\n const extensionId = event.data.eventData.extensionId;\n delete event.data.eventData.formData.formId;\n\n const eventResult = await step.sendEvent('dispatch', {\n name: 'aieditor-form-code-extractor-dispatcher/trigger',\n data: {\n source: 'aieditor-code-extractor-sample',\n timestamp: new Date().toISOString(),\n eventData: {\n formData,\n fieldMetadata,\n formId,\n extensionId\n }\n }\n });\n\n return {\n functionId: 'aieditor-form-code-extractor-sample',\n submit: eventResult,\n timestamp: new Date().toISOString()\n };\n}",
+ "properties.raw.submit.functionID": "aieditor-form-code-extractor-sample",
+ "properties.raw.submit.functionName": "AIEditor Form Code Extractor (Sample Submit)",
+ "properties.raw.submit.functionDescription": "Routes the submit to the global AIEditor code-extractor dispatcher.",
+ "properties.raw.submit.enabled": true,
+ "properties.raw.submit.displaySubmitButton": true,
+ "properties.raw.submit.events.0": "app.event",
+ "properties.raw.submit.steps.0.id": "aieditor-submit",
+ "properties.raw.submit.steps.0.name": "Submit to Form Table",
+ "properties.raw.submit.steps.0.type": "sendEvent",
+ "properties.raw.submit.steps.0.code": "async ({ event, step }) => {\n const formId = event?.data?.eventData?.formData?.formId;\n const formData = event.data.eventData.formData;\n const fieldMetadata = event.data.eventData.fieldMetadata;\n const extensionId = event.data.eventData.extensionId;\n delete event.data.eventData.formData.formId;\n\n const eventResult = await step.sendEvent('dispatch', {\n name: 'aieditor-form-code-extractor-dispatcher/trigger',\n data: {\n source: 'aieditor-code-extractor-sample',\n timestamp: new Date().toISOString(),\n eventData: {\n formData,\n fieldMetadata,\n formId,\n extensionId\n }\n }\n });\n\n return {\n functionId: 'aieditor-form-code-extractor-sample',\n submit: eventResult,\n timestamp: new Date().toISOString()\n };\n}",
+ "properties.raw.submit.selectedStep.code": "async ({ event, step }) => {\n const formId = event?.data?.eventData?.formData?.formId;\n const formData = event.data.eventData.formData;\n const fieldMetadata = event.data.eventData.fieldMetadata;\n const extensionId = event.data.eventData.extensionId;\n delete event.data.eventData.formData.formId;\n\n const eventResult = await step.sendEvent('dispatch', {\n name: 'aieditor-form-code-extractor-dispatcher/trigger',\n data: {\n source: 'aieditor-code-extractor-sample',\n timestamp: new Date().toISOString(),\n eventData: {\n formData,\n fieldMetadata,\n formId,\n extensionId\n }\n }\n });\n\n return {\n functionId: 'aieditor-form-code-extractor-sample',\n submit: eventResult,\n timestamp: new Date().toISOString()\n };\n}"
+ },
+ {
+ "type": "formData"
+ }
+ ]
+ },
+ {
+ "schemaId": "uiLayout",
+ "type": "Contribution",
+ "formId": "",
+ "configurationNodes": [
+ {
+ "type": "form-metadata",
+ "properties": {
+ "title": "codeAssistant",
+ "schemaId": "uiLayout",
+ "contributionPoint": "marketplace",
+ "namespace": "aieditor-form-code-extractor",
+ "preGeneratedFormSteps": [
+ {
+ "title": "marketplace",
+ "description": "",
+ "elements": [
+ {
+ "type": "group",
+ "label": "templates",
+ "required": [],
+ "description": "",
+ "children": [
+ {
+ "type": "group",
+ "label": "codeAssistant",
+ "required": [],
+ "description": "",
+ "children": [
+ {
+ "type": "group",
+ "label": "aieditor-form-code-extractor",
+ "required": [],
+ "description": "",
+ "children": [
+ {
+ "type": "singleline",
+ "label": "templateName",
+ "required": false,
+ "placeholder": "Enter template name",
+ "default": "aieditor-code-extractor",
+ "scope": 3,
+ "hidden": false,
+ "widget": "text"
+ },
+ {
+ "type": "singleline",
+ "label": "projectType",
+ "required": false,
+ "placeholder": "e.g., Provisioning, Deployment",
+ "default": "multi",
+ "scope": 3,
+ "hidden": false,
+ "widget": "text"
+ },
+ {
+ "type": "multiline",
+ "label": "description",
+ "required": false,
+ "description": "Brief description of what this template does",
+ "placeholder": "Describe what this template does",
+ "default": "Create Vite/Next.js AIEditor code-extractor forms for DB or GitHub.",
+ "scope": 3,
+ "hidden": false,
+ "widget": "textarea"
+ },
+ {
+ "type": "checkboxes",
+ "label": "tags",
+ "required": false,
+ "description": "Tags for categorization (e.g., tenant, provisioning, cloud)",
+ "placeholder": "Add tags (press Enter)",
+ "uniqueItems": true,
+ "default": [
+ "aieditor",
+ "code-extractor"
+ ],
+ "scope": 3,
+ "hidden": false,
+ "widget": "chips"
+ },
+ {
+ "type": "checkboxes",
+ "label": "keywords",
+ "required": false,
+ "description": "Keywords for AI search and discovery (e.g., setup, deploy, configure)",
+ "placeholder": "Add keywords (press Enter)",
+ "uniqueItems": true,
+ "default": [
+ "vite",
+ "nextjs",
+ "github",
+ "db"
+ ],
+ "scope": 3,
+ "hidden": false,
+ "widget": "chips"
+ },
+ {
+ "type": "switch",
+ "label": "enabled",
+ "required": false,
+ "default": true,
+ "scope": 3,
+ "hidden": false,
+ "widget": "switch"
+ },
+ {
+ "type": "singleline",
+ "label": "formId",
+ "required": false,
+ "description": "Auto-generated identifier for this form template",
+ "default": "aieditor-code-extractor-mfb219ez",
+ "scope": 3,
+ "hidden": false,
+ "widget": "text"
+ },
+ {
+ "type": "singleline",
+ "label": "formExtensionId",
+ "required": false,
+ "description": "Auto-generated extension identifier for this form template",
+ "default": "PLACEHOLDER_EXT_UUID",
+ "scope": 3,
+ "hidden": false,
+ "widget": "text"
+ },
+ {
+ "type": "singleline",
+ "label": "formIcon",
+ "required": false,
+ "description": "Optional icon for this template",
+ "placeholder": "Enter icon (optional)",
+ "default": "",
+ "scope": 3,
+ "hidden": false,
+ "widget": "text"
+ },
+ {
+ "type": "singleline",
+ "label": "formFunctionId",
+ "required": false,
+ "description": "Optional icon for this template",
+ "placeholder": "Enter icon (optional)",
+ "default": "aieditor-form-code-extractor-sample",
+ "scope": 3,
+ "hidden": false,
+ "widget": "text",
+ "configElementKey": "formFunctionId"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "type": "form",
+ "properties": {
+ "required": [],
+ "marketplace.meta": {
+ "title": "marketplace",
+ "description": "",
+ "type": "object",
+ "position": 0
+ },
+ "marketplace.required": [
+ "templates"
+ ],
+ "marketplace.templates.meta": {
+ "title": "templates",
+ "description": "",
+ "type": "object",
+ "position": 0
+ },
+ "marketplace.templates.required": [
+ "codeAssistant"
+ ],
+ "marketplace.templates.codeAssistant.meta": {
+ "title": "codeAssistant",
+ "description": "",
+ "type": "object",
+ "position": 0
+ },
+ "marketplace.templates.codeAssistant.required": [
+ "aieditor-form-code-extractor"
+ ],
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.meta": {
+ "title": "aieditor-form-code-extractor",
+ "description": "",
+ "type": "object",
+ "position": 0
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.required": [],
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.templateName": {
+ "type": "string",
+ "title": "templateName",
+ "description": "",
+ "default": "aieditor-code-extractor",
+ "scope": 3
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.projectType": {
+ "type": "string",
+ "title": "projectType",
+ "description": "",
+ "default": "multi",
+ "scope": 3
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.description": {
+ "type": "string",
+ "title": "description",
+ "description": "Brief description of what this template does",
+ "default": "Create Vite/Next.js AIEditor code-extractor forms for DB or GitHub.",
+ "scope": 3
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "uniqueItems": true,
+ "title": "tags",
+ "description": "Tags for categorization (e.g., tenant, provisioning, cloud)",
+ "default": [
+ "aieditor",
+ "code-extractor"
+ ],
+ "scope": 3
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.keywords": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "uniqueItems": true,
+ "title": "keywords",
+ "description": "Keywords for AI search and discovery (e.g., setup, deploy, configure)",
+ "default": [
+ "vite",
+ "nextjs",
+ "github",
+ "db"
+ ],
+ "scope": 3
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.enabled": {
+ "type": "boolean",
+ "title": "enabled",
+ "default": true,
+ "scope": 3
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.formId": {
+ "type": "string",
+ "title": "formId",
+ "default": "PLACEHOLDER_FORM_ID",
+ "scope": 3
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.formExtensionId": {
+ "type": "string",
+ "title": "formExtensionId",
+ "default": "PLACEHOLDER_EXT_UUID",
+ "scope": 3
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.formIcon": {
+ "type": "string",
+ "title": "formIcon",
+ "default": "",
+ "scope": 3
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.formFunctionId": {
+ "type": "string",
+ "title": "formFunctionId",
+ "default": "aieditor-form-code-extractor-sample",
+ "scope": 3
+ }
+ }
+ },
+ {
+ "type": "formUI",
+ "properties": {
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.templateName": {
+ "ui:widget": "text",
+ "ui:placeholder": "Enter template name"
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.projectType": {
+ "ui:widget": "text",
+ "ui:placeholder": "e.g., Provisioning, Deployment"
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.description": {
+ "ui:widget": "textarea",
+ "ui:placeholder": "Describe what this template does",
+ "ui:description": "Brief description of what this template does"
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.tags": {
+ "ui:widget": "chips",
+ "ui:options": {
+ "enumOptions": []
+ },
+ "ui:placeholder": "Add tags (press Enter)",
+ "ui:description": "Tags for categorization (e.g., tenant, provisioning, cloud)"
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.keywords": {
+ "ui:widget": "chips",
+ "ui:options": {
+ "enumOptions": []
+ },
+ "ui:placeholder": "Add keywords (press Enter)",
+ "ui:description": "Keywords for AI search and discovery (e.g., setup, deploy, configure)"
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.enabled": {
+ "ui:widget": "switch"
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.formId": {
+ "ui:widget": "text",
+ "ui:description": "Auto-generated identifier for this form template"
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.formExtensionId": {
+ "ui:widget": "text",
+ "ui:description": "Auto-generated extension identifier for this form template"
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.formIcon": {
+ "ui:widget": "text",
+ "ui:placeholder": "Enter icon (optional)",
+ "ui:description": "Optional icon for this template"
+ },
+ "marketplace.templates.codeAssistant.aieditor-form-code-extractor.formFunctionId": {
+ "ui:widget": "text",
+ "ui:placeholder": "Enter icon (optional)",
+ "ui:description": "Optional icon for this template"
+ }
+ }
+ },
+ {
+ "type": "definitions"
+ },
+ {
+ "type": "connections",
+ "properties": {
+ "type": "connections",
+ "properties.steps.0": "marketplace"
+ }
+ },
+ {
+ "type": "customButtons"
+ },
+ {
+ "type": "resources"
+ },
+ {
+ "type": "formData"
+ }
+ ],
+ "contributes": {}
+ },
+ {
+ "schemaId": "configuration",
+ "type": "Contribution",
+ "formId": "",
+ "configurationNodes": [
+ {
+ "type": "form-metadata",
+ "properties": {
+ "title": "aieditor-form-code-extractor",
+ "schemaId": "configuration",
+ "contributionPoint": "configuration.appSettings",
+ "templateType": "aieditor",
+ "namespace": "aieditor-form-code-extractor",
+ "preGeneratedFormSteps": [
+ {
+ "title": "appSettings",
+ "description": "",
+ "elements": [
+ {
+ "type": "group",
+ "label": "settings",
+ "required": [],
+ "description": "",
+ "children": [
+ {
+ "type": "group",
+ "label": "aieditor",
+ "required": [],
+ "description": "",
+ "children": [
+ {
+ "type": "group",
+ "label": "aieditor-form-code-extractor",
+ "required": [],
+ "description": "",
+ "children": [
+ {
+ "type": "singleline",
+ "label": "E2B Vite React Template ID",
+ "title": "E2B Vite React Template ID",
+ "required": false,
+ "description": "E2B template id for Vite React.",
+ "default": "",
+ "scope": 3,
+ "configElementKey": "formExtensionE2BViteReactTemplateId",
+ "placeholder": "e.g. 0w7z3d6bosdvqni2xtuf"
+ },
+ {
+ "type": "singleline",
+ "label": "E2B Vue Template ID",
+ "title": "E2B Vue Template ID",
+ "required": false,
+ "description": "E2B template id for Vue.",
+ "default": "",
+ "scope": 3,
+ "configElementKey": "formExtensionE2BVueTemplateId",
+ "placeholder": "e.g. grp7jqsey9ei22ap659k"
+ },
+ {
+ "type": "singleline",
+ "label": "E2B Claude Template ID",
+ "title": "E2B Claude Template ID",
+ "required": false,
+ "description": "E2B template id for Claude.",
+ "default": "",
+ "scope": 3,
+ "configElementKey": "formExtensionE2BClaudeTemplateId",
+ "placeholder": "e.g. 3qua6mjt7gp4t1ijqi3t"
+ },
+ {
+ "type": "singleline",
+ "label": "E2B Template ID",
+ "title": "E2B Template ID",
+ "required": false,
+ "description": "Default E2B template id.",
+ "default": "",
+ "scope": 3,
+ "configElementKey": "formExtensionE2BTemplateId",
+ "placeholder": "e.g. ycbh59ksxbspv1t4jmb7"
+ },
+ {
+ "type": "singleline",
+ "label": "E2B Domain",
+ "title": "E2B Domain",
+ "required": false,
+ "description": "E2B domain.",
+ "default": "",
+ "scope": 3,
+ "configElementKey": "formExtensionE2BDomain",
+ "placeholder": "e.g. yarntra.com"
+ },
+ {
+ "type": "singleline",
+ "label": "E2B API Key",
+ "title": "E2B API Key",
+ "required": false,
+ "description": "E2B API key.",
+ "default": "",
+ "scope": 3,
+ "configElementKey": "formExtensionE2BAPIKey"
+ },
+ {
+ "type": "singleline",
+ "label": "GitHub Token",
+ "title": "GitHub Token",
+ "required": false,
+ "description": "GitHub personal access token.",
+ "default": "",
+ "scope": 3,
+ "configElementKey": "formExtensionGithubToken"
+ },
+ {
+ "type": "singleline",
+ "label": "GitHub Organization",
+ "title": "GitHub Organization",
+ "required": false,
+ "description": "GitHub org/user name.",
+ "default": "",
+ "scope": 3,
+ "configElementKey": "formExtensionGithubOrg",
+ "placeholder": "e.g. my-org"
+ },
+ {
+ "type": "singleline",
+ "label": "React Base Repo URL",
+ "title": "React Base Repo URL",
+ "required": false,
+ "description": "Base repository URL used for GitHub targets.",
+ "default": "",
+ "scope": 3,
+ "configElementKey": "formExtensionGithubReactBase",
+ "placeholder": "e.g. https://github.com/my-org/react-visual-base"
+ },
+ {
+ "type": "singleline",
+ "label": "Model Provider API Key",
+ "title": "Model Provider API Key",
+ "required": false,
+ "description": "API key for the selected model provider (if required).",
+ "default": "",
+ "scope": 3,
+ "configElementKey": "formExtensionModelConfigAPIKey"
+ },
+ {
+ "type": "singleline",
+ "label": "Sandbox ID",
+ "title": "Sandbox ID",
+ "required": false,
+ "description": "E2B sandbox ID for execution environment.",
+ "default": "",
+ "scope": 3,
+ "configElementKey": "formExtensionSandboxId",
+ "placeholder": "e.g. sbx-xxxxxxxx"
+ },
+ {
+ "type": "singleline",
+ "label": "Snapshot ID",
+ "title": "Snapshot ID",
+ "required": false,
+ "description": "E2B snapshot ID for pre-configured environment.",
+ "default": "",
+ "scope": 3,
+ "configElementKey": "formExtensionSnapshotId",
+ "placeholder": "e.g. snap-xxxxxxxx"
+ },
+ {
+ "type": "singleline",
+ "label": "Git Clone URL",
+ "title": "Git Clone URL",
+ "required": false,
+ "description": "Repository URL to clone (optional).",
+ "default": "",
+ "scope": 3,
+ "configElementKey": "formExtensionGitCloneUrl",
+ "placeholder": "e.g. https://github.com/user/repo.git"
+ },
+ {
+ "type": "checkbox",
+ "label": "Should Clone Repository",
+ "title": "Should Clone Repository",
+ "required": false,
+ "checkboxType": "single",
+ "description": "Flag to enable/disable repository cloning (default: false).",
+ "default": false,
+ "scope": 3,
+ "configElementKey": "formExtensionShouldClone"
+ },
+ {
+ "type": "singleline",
+ "label": "Template Preview URL",
+ "title": "Template Preview URL",
+ "required": false,
+ "description": "Optional URL used to preview the generated template (e.g. deployed demo or sandbox link).",
+ "default": "",
+ "scope": 3,
+ "configElementKey": "formExtensionTemplatePreviewUrl",
+ "placeholder": "e.g. https://preview.example.com/my-template"
+ },
+ {
+ "type": "singleline",
+ "label": "Supabase URL",
+ "title": "Supabase URL",
+ "required": false,
+ "description": "Optional Supabase project URL for the generated template.",
+ "default": "",
+ "scope": 3,
+ "configElementKey": "formExtensionSupabaseUrl",
+ "placeholder": "e.g. https://abc123def.supabase.co"
+ },
+ {
+ "type": "singleline",
+ "label": "Supabase Publishable Key",
+ "title": "Supabase Publishable Key",
+ "required": false,
+ "description": "Optional Supabase publishable key for the generated template.",
+ "default": "",
+ "scope": 3,
+ "configElementKey": "formExtensionSupabasePublishableKey",
+ "placeholder": "e.g. sb_publishable_..."
+ },
+ {
+ "type": "singleline",
+ "label": "Supabase Project ID",
+ "title": "Supabase Project ID",
+ "required": false,
+ "description": "Optional Supabase project ID for the generated template.",
+ "default": "",
+ "scope": 3,
+ "configElementKey": "formExtensionSupabaseProjectId",
+ "placeholder": "e.g. vuxfjhbhvyeaslauqlhs"
+ },
+ {
+ "type": "singleline",
+ "label": "Supabase Access Token",
+ "title": "Supabase Access Token",
+ "required": false,
+ "description": "Optional Supabase access token for the generated template.",
+ "default": "",
+ "scope": 3,
+ "configElementKey": "formExtensionSupabaseAccessToken",
+ "placeholder": "e.g. sbp_..."
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "type": "form",
+ "properties": {
+ "required": [],
+ "appSettings.meta": {
+ "title": "appSettings",
+ "description": "",
+ "type": "object",
+ "position": 0
+ },
+ "appSettings.required": [
+ "settings"
+ ],
+ "appSettings.settings.meta": {
+ "title": "settings",
+ "description": "",
+ "type": "object",
+ "position": 0
+ },
+ "appSettings.settings.required": [
+ "aieditor"
+ ],
+ "appSettings.settings.aieditor.meta": {
+ "title": "aieditor",
+ "description": "",
+ "type": "object",
+ "position": 0
+ },
+ "appSettings.settings.aieditor.required": [
+ "aieditor-form-code-extractor"
+ ],
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.meta": {
+ "title": "aieditor-form-code-extractor",
+ "description": "",
+ "type": "object",
+ "position": 0
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.required": [],
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionE2BViteReactTemplateId": {
+ "type": "string",
+ "title": "E2B Vite React Template ID",
+ "description": "E2B template id for Vite React.",
+ "default": "",
+ "scope": 3
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionE2BVueTemplateId": {
+ "type": "string",
+ "title": "E2B Vue Template ID",
+ "description": "E2B template id for Vue.",
+ "default": "",
+ "scope": 3
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionE2BClaudeTemplateId": {
+ "type": "string",
+ "title": "E2B Claude Template ID",
+ "description": "E2B template id for Claude.",
+ "default": "",
+ "scope": 3
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionE2BTemplateId": {
+ "type": "string",
+ "title": "E2B Template ID",
+ "description": "Default E2B template id.",
+ "default": "",
+ "scope": 3
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionE2BDomain": {
+ "type": "string",
+ "title": "E2B Domain",
+ "description": "E2B domain.",
+ "default": "",
+ "scope": 3
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionE2BAPIKey": {
+ "type": "string",
+ "title": "E2B API Key",
+ "description": "E2B API key.",
+ "default": "",
+ "scope": 3
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionGithubToken": {
+ "type": "string",
+ "title": "GitHub Token",
+ "description": "GitHub personal access token.",
+ "default": "",
+ "scope": 3
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionGithubOrg": {
+ "type": "string",
+ "title": "GitHub Organization",
+ "description": "GitHub org/user name.",
+ "default": "",
+ "scope": 3
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionGithubReactBase": {
+ "type": "string",
+ "title": "React Base Repo URL",
+ "description": "Base repository URL used for GitHub targets.",
+ "default": "",
+ "scope": 3
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionModelConfigAPIKey": {
+ "type": "string",
+ "title": "Model Provider API Key",
+ "description": "API key for the selected model provider (if required).",
+ "default": "",
+ "scope": 3
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionSandboxId": {
+ "type": "string",
+ "title": "Sandbox ID",
+ "description": "E2B sandbox ID for execution environment.",
+ "default": "",
+ "scope": 3
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionSnapshotId": {
+ "type": "string",
+ "title": "Snapshot ID",
+ "description": "E2B snapshot ID for pre-configured environment.",
+ "default": "",
+ "scope": 3
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionGitCloneUrl": {
+ "type": "string",
+ "title": "Git Clone URL",
+ "description": "Repository URL to clone (optional).",
+ "default": "",
+ "scope": 3
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionShouldClone": {
+ "type": "boolean",
+ "title": "Should Clone Repository",
+ "description": "Flag to enable/disable repository cloning (default: false).",
+ "default": false,
+ "scope": 3
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionTemplatePreviewUrl": {
+ "type": "string",
+ "title": "Template Preview URL",
+ "description": "Optional URL used to preview the generated template (e.g. deployed demo or sandbox link).",
+ "default": "",
+ "scope": 3
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionSupabaseUrl": {
+ "type": "string",
+ "title": "Supabase URL",
+ "description": "Optional Supabase project URL for the generated template.",
+ "default": "",
+ "scope": 3
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionSupabasePublishableKey": {
+ "type": "string",
+ "title": "Supabase Publishable Key",
+ "description": "Optional Supabase publishable key for the generated template.",
+ "default": "",
+ "scope": 3
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionSupabaseProjectId": {
+ "type": "string",
+ "title": "Supabase Project ID",
+ "description": "Optional Supabase project ID for the generated template.",
+ "default": "",
+ "scope": 3
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionSupabaseAccessToken": {
+ "type": "string",
+ "title": "Supabase Access Token",
+ "description": "Optional Supabase access token for the generated template.",
+ "default": "",
+ "scope": 3
+ }
+ }
+ },
+ {
+ "type": "formUI",
+ "properties": {
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionE2BViteReactTemplateId": {
+ "ui:widget": "text",
+ "ui:description": "E2B template id for Vite React.",
+ "ui:placeholder": "e.g. 0w7z3d6bosdvqni2xtuf"
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionE2BVueTemplateId": {
+ "ui:widget": "text",
+ "ui:description": "E2B template id for Vue.",
+ "ui:placeholder": "e.g. grp7jqsey9ei22ap659k"
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionE2BClaudeTemplateId": {
+ "ui:widget": "text",
+ "ui:description": "E2B template id for Claude.",
+ "ui:placeholder": "e.g. 3qua6mjt7gp4t1ijqi3t"
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionE2BTemplateId": {
+ "ui:widget": "text",
+ "ui:description": "Default E2B template id.",
+ "ui:placeholder": "e.g. ycbh59ksxbspv1t4jmb7"
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionE2BDomain": {
+ "ui:widget": "text",
+ "ui:description": "E2B domain.",
+ "ui:placeholder": "e.g. yarntra.com"
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionE2BAPIKey": {
+ "ui:widget": "text",
+ "ui:description": "E2B API key."
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionGithubToken": {
+ "ui:widget": "text",
+ "ui:description": "GitHub personal access token."
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionGithubOrg": {
+ "ui:widget": "text",
+ "ui:description": "GitHub org/user name.",
+ "ui:placeholder": "e.g. my-org"
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionGithubReactBase": {
+ "ui:widget": "text",
+ "ui:description": "Base repository URL used for GitHub targets.",
+ "ui:placeholder": "e.g. https://github.com/my-org/react-visual-base"
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionModelConfigAPIKey": {
+ "ui:widget": "text",
+ "ui:description": "API key for the selected model provider (if required)."
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionSandboxId": {
+ "ui:widget": "text",
+ "ui:description": "E2B sandbox ID for execution environment.",
+ "ui:placeholder": "e.g. sbx-xxxxxxxx"
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionSnapshotId": {
+ "ui:widget": "text",
+ "ui:description": "E2B snapshot ID for pre-configured environment.",
+ "ui:placeholder": "e.g. snap-xxxxxxxx"
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionGitCloneUrl": {
+ "ui:widget": "text",
+ "ui:description": "Repository URL to clone (optional).",
+ "ui:placeholder": "e.g. https://github.com/user/repo.git"
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionShouldClone": {
+ "ui:widget": "checkbox",
+ "ui:description": "Flag to enable/disable repository cloning (default: false)."
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionTemplatePreviewUrl": {
+ "ui:widget": "text",
+ "ui:description": "Optional URL used to preview the generated template (e.g. deployed demo or sandbox link).",
+ "ui:placeholder": "e.g. https://preview.example.com/my-template"
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionSupabaseUrl": {
+ "ui:widget": "text",
+ "ui:description": "Optional Supabase project URL for the generated template.",
+ "ui:placeholder": "e.g. https://abc123def.supabase.co"
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionSupabasePublishableKey": {
+ "ui:widget": "text",
+ "ui:description": "Optional Supabase publishable key for the generated template.",
+ "ui:placeholder": "e.g. sb_publishable_..."
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionSupabaseProjectId": {
+ "ui:widget": "text",
+ "ui:description": "Optional Supabase project ID for the generated template.",
+ "ui:placeholder": "e.g. vuxfjhbhvyeaslauqlhs"
+ },
+ "appSettings.settings.aieditor.aieditor-form-code-extractor.formExtensionSupabaseAccessToken": {
+ "ui:widget": "text",
+ "ui:description": "Optional Supabase access token for the generated template.",
+ "ui:placeholder": "e.g. sbp_..."
+ }
+ }
+ },
+ {
+ "type": "definitions"
+ },
+ {
+ "type": "connections",
+ "properties": {
+ "type": "connections",
+ "properties.steps.0": "appSettings"
+ }
+ },
+ {
+ "type": "customButtons"
+ },
+ {
+ "type": "resources"
+ },
+ {
+ "type": "formData"
+ }
+ ],
+ "contributes": {}
+ }
+]
\ No newline at end of file
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment