fix(web): enable JSON_OBJECT type support in console UI#28
Conversation
WalkthroughThis pull request refactors JSON schema validation in the configuration modal by restructuring the schema placeholder to use explicit object-type definitions, adding runtime validation to ensure schemas are valid objects, handling empty schemas appropriately, and introducing localized error messages across 22 language files for invalid JSON schemas and non-object types. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~22 minutes Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@web/app/components/app/configuration/config-var/config-modal/index.tsx`:
- Around line 131-140: The function that validates JSON currently returns the
undefined identifier "True", causing a compile error; update the success branch
in the block that computes isEmpty and parses JSON (the JSON.parse(value) branch
around isEmpty and handlePayloadChange('json_schema')) to return the boolean
literal true (lowercase) instead of True, keeping the existing
handlePayloadChange('json_schema')(value) call and preserving the try/catch
flow.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (24)
web/app/components/app/configuration/config-var/config-modal/config.tsweb/app/components/app/configuration/config-var/config-modal/index.tsxweb/i18n/ar-TN/app-debug.jsonweb/i18n/de-DE/app-debug.jsonweb/i18n/en-US/app-debug.jsonweb/i18n/es-ES/app-debug.jsonweb/i18n/fa-IR/app-debug.jsonweb/i18n/fr-FR/app-debug.jsonweb/i18n/hi-IN/app-debug.jsonweb/i18n/id-ID/app-debug.jsonweb/i18n/it-IT/app-debug.jsonweb/i18n/ja-JP/app-debug.jsonweb/i18n/ko-KR/app-debug.jsonweb/i18n/pl-PL/app-debug.jsonweb/i18n/pt-BR/app-debug.jsonweb/i18n/ro-RO/app-debug.jsonweb/i18n/ru-RU/app-debug.jsonweb/i18n/sl-SI/app-debug.jsonweb/i18n/th-TH/app-debug.jsonweb/i18n/tr-TR/app-debug.jsonweb/i18n/uk-UA/app-debug.jsonweb/i18n/vi-VN/app-debug.jsonweb/i18n/zh-Hans/app-debug.jsonweb/i18n/zh-Hant/app-debug.json
🔇 Additional comments (28)
web/i18n/ro-RO/app-debug.json (1)
309-310: LGTM!The Romanian translations for the new JSON Schema validation error messages are accurate and grammatically correct.
web/i18n/en-US/app-debug.json (1)
309-310: LGTM!The English source messages for JSON Schema validation errors are clear, concise, and technically accurate.
web/i18n/hi-IN/app-debug.json (1)
309-310: LGTM!The Hindi translations for the JSON Schema validation error messages are appropriate and convey the intended meaning correctly.
web/i18n/zh-Hant/app-debug.json (1)
309-310: LGTM!The Traditional Chinese translations are accurate and use appropriate locale-specific quotation marks (「」) for the "object" type reference.
web/i18n/pl-PL/app-debug.json (1)
309-310: LGTM!The Polish translations are accurate and use proper grammatical declension (e.g., "JSON-em" in instrumental case).
web/i18n/th-TH/app-debug.json (1)
309-310: LGTM!The Thai translations for the JSON Schema validation error messages are appropriate and convey the intended meaning correctly.
web/i18n/tr-TR/app-debug.json (1)
309-310: LGTM!The Turkish translations for the new JSON Schema validation error messages are properly formatted with correct JSON escaping for the embedded "object" string literal.
web/i18n/de-DE/app-debug.json (1)
309-310: LGTM!The German translations for the JSON Schema validation error messages are correctly formatted with proper JSON escaping.
web/i18n/ja-JP/app-debug.json (1)
309-310: LGTM!The Japanese translations for the JSON Schema validation error messages are correctly formatted with proper JSON escaping.
web/i18n/zh-Hans/app-debug.json (1)
309-310: LGTM!The Simplified Chinese translations for the JSON Schema validation error messages are correctly formatted with proper JSON escaping.
web/i18n/sl-SI/app-debug.json (1)
309-310: LGTM!The Slovenian translations for the JSON Schema validation error messages are correctly formatted with proper JSON escaping.
web/i18n/fr-FR/app-debug.json (1)
309-310: LGTM!The French translations for the JSON Schema validation error messages are correctly formatted with proper JSON escaping.
web/app/components/app/configuration/config-var/config-modal/config.ts (1)
10-27: LGTM! Well-structured JSON Schema placeholder.The refactored
jsonConfigPlaceHoldernow represents a proper JSON Schema with explicittype: 'object'at the top level, demonstrating nested object properties (bar.sub), and consistent schema attributes (required,additionalProperties). This provides a clear example for users configuring JSON object types.web/i18n/uk-UA/app-debug.json (1)
309-310: LGTM!The Ukrainian translations for the new JSON schema validation error messages are accurate and properly formatted with correctly escaped quotes.
web/i18n/es-ES/app-debug.json (1)
309-310: LGTM!The Spanish translations for the JSON schema validation error messages are accurate and properly formatted.
web/i18n/ru-RU/app-debug.json (1)
309-310: LGTM!The Russian translations for the JSON schema validation error messages are accurate with correct grammatical gender agreement and properly escaped quotes.
web/i18n/ko-KR/app-debug.json (1)
309-310: LGTM!The Korean translations for the JSON schema validation error messages are accurate with natural Korean phrasing and appropriate retention of technical terms in English.
web/i18n/id-ID/app-debug.json (1)
309-310: LGTM!The Indonesian translations for the JSON schema validation error messages are accurate and properly formatted.
web/i18n/vi-VN/app-debug.json (1)
309-310: LGTM — localized validation messages added.web/i18n/it-IT/app-debug.json (1)
309-310: LGTM — localized validation messages added.web/i18n/pt-BR/app-debug.json (1)
309-310: LGTM — localized validation messages added.web/i18n/fa-IR/app-debug.json (1)
309-310: LGTM — localized validation messages added.web/i18n/ar-TN/app-debug.json (1)
309-310: LGTM — localized validation messages added.web/app/components/app/configuration/config-var/config-modal/index.tsx (5)
31-31: LGTM — import cleanup for JSON schema placeholder.
86-86: LGTM — JSON schema formatting simplification.
179-184: LGTM — jsonObject type now available for non-basic apps.
237-246: LGTM — empty JSON schema normalization helper.
249-327: LGTM — payload normalization and JSON object validation flow.
✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.
| const isEmpty = value == null || value.trim() === '' | ||
| if (isEmpty) { | ||
| handlePayloadChange('json_schema')(undefined) | ||
| return null | ||
| } | ||
| try { | ||
| const v = JSON.parse(value) | ||
| const res = { | ||
| ...jsonObjectWrap, | ||
| properties: v, | ||
| } | ||
| handlePayloadChange('json_schema')(JSON.stringify(res, null, 2)) | ||
| handlePayloadChange('json_schema')(value) | ||
| return True | ||
| } |
There was a problem hiding this comment.
Fix invalid boolean literal (True).
True is undefined in TS/JS, causing a compile error and making every valid JSON fall into the catch. Use true.
🛠️ Proposed fix
- return True
+ return true📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| const isEmpty = value == null || value.trim() === '' | |
| if (isEmpty) { | |
| handlePayloadChange('json_schema')(undefined) | |
| return null | |
| } | |
| try { | |
| const v = JSON.parse(value) | |
| const res = { | |
| ...jsonObjectWrap, | |
| properties: v, | |
| } | |
| handlePayloadChange('json_schema')(JSON.stringify(res, null, 2)) | |
| handlePayloadChange('json_schema')(value) | |
| return True | |
| } | |
| const isEmpty = value == null || value.trim() === '' | |
| if (isEmpty) { | |
| handlePayloadChange('json_schema')(undefined) | |
| return null | |
| } | |
| try { | |
| const v = JSON.parse(value) | |
| handlePayloadChange('json_schema')(value) | |
| return true | |
| } |
🤖 Prompt for AI Agents
In `@web/app/components/app/configuration/config-var/config-modal/index.tsx`
around lines 131 - 140, The function that validates JSON currently returns the
undefined identifier "True", causing a compile error; update the success branch
in the block that computes isEmpty and parses JSON (the JSON.parse(value) branch
around isEmpty and handlePayloadChange('json_schema')) to return the boolean
literal true (lowercase) instead of True, keeping the existing
handlePayloadChange('json_schema')(value) call and preserving the try/catch
flow.
Benchmark PR from agentic-review-benchmarks#2
Summary by CodeRabbit
Bug Fixes
Localization
✏️ Tip: You can customize this high-level summary in your review settings.