{"record":{"id":"7c1383b6b7ca23d6","repo":"iflytek/astron-agent","slug":"failed-to-determine-multi-file-parameter-support-botid","errorCode":null,"errorMessage":"Failed to determine multi-file parameter support: botId={}","messagePattern":"Failed to determine multi-file parameter support: botId=(.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"console/backend/hub/src/main/java/com/iflytek/astron/console/hub/service/publish/impl/BotPublishServiceImpl.java","lineNumber":571,"sourceCode":"        } catch (Exception e) {\n            log.warn(\"Failed to get workflow config for market prepare: botId={}\", botId, e);\n        }\n\n        // Set bot basic info\n        marketData.setBotName(botDetail.getBotName());\n        marketData.setBotDescription(botDetail.getBotDesc());\n        marketData.setBotAvatar(null);\n\n        // Set multi-file parameter support based on extraInputsConfig\n        boolean isMultiFileParam = false;\n        try {\n            UserLangChainInfo chainInfo = userLangChainDataService.findOneByBotId(botId);\n            if (chainInfo != null && chainInfo.getExtraInputsConfig() != null) {\n                List<JSONObject> extraInputsConfig = JSONArray.parseArray(chainInfo.getExtraInputsConfig(), JSONObject.class);\n                isMultiFileParam = BotFileParamUtil.isMultiFileParam(botId, extraInputsConfig);\n            }\n        } catch (Exception e) {\n            log.warn(\"Failed to determine multi-file parameter support: botId={}\", botId, e);\n        }\n        marketData.setBotMultiFileParam(isMultiFileParam);\n\n        // Set suggested tags and categories\n        marketData.setSuggestedTags(List.of(\"AI Assistant\", \"Productivity Tool\"));\n        marketData.setCategoryOptions(List.of(\"Education\", \"Finance\", \"Healthcare\", \"Customer Service\"));\n\n        return marketData;\n    }\n\n    private McpPrepareDto getMcpPrepareData(Integer botId, BotDetailResponseDto botDetail, String currentUid, Long spaceId) {\n        log.info(\"Getting MCP prepare data: botId={}\", botId);\n\n        McpPrepareDto result = new McpPrepareDto();\n        result.setPublishType(ReleaseTypeEnum.MCP.name());\n\n        // TODO: Implement MCP prepare data logic\n        // For now, return basic structure","sourceCodeStart":553,"sourceCodeEnd":589,"githubUrl":"https://github.com/iflytek/astron-agent/blob/5e758547a83371a5a4b29dadf4ac03e8dd527635/console/backend/hub/src/main/java/com/iflytek/astron/console/hub/service/publish/impl/BotPublishServiceImpl.java#L553-L589","documentation":"A warn log when determining whether the bot supports multi-file parameters fails — e.g. parsing extraInputsConfig JSON or running BotFileParamUtil.isMultiFileParam throws. Defaults to the initial isMultiFileParam value (false) so the publish flow continues.","triggerScenarios":"findOneByBotId returns data with malformed extraInputsConfig JSON, or BotFileParamUtil throws on unexpected parameter structure.","commonSituations":"Legacy bots with old extra_inputs_config format; manually edited config JSON in DB; null/invalid array elements in the config.","solutions":["Inspect the logged stack trace to find the malformed config","Fix the extra_inputs_config JSON on the bot's langchain record","Harden BotFileParamUtil to tolerate unknown/legacy parameter shapes"],"exampleFix":"// before\nList<JSONObject> extraInputsConfig = JSONArray.parseArray(chainInfo.getExtraInputsConfig(), JSONObject.class);\n// after\nList<JSONObject> extraInputsConfig = parseLeniently(chainInfo.getExtraInputsConfig()); // skip invalid entries, log per-element errors","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":["json","config","parsing"],"backgroundTag":"json-parse-error","analyzedSha":"5e758547a83371a5a4b29dadf4ac03e8dd527635","analyzedAt":"2026-09-12T08:03:51.356Z","contentChangedAt":"2026-09-12T08:03:51.356Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}