@lovrabet/cli 1.3.4 → 1.4.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/ai-setup/config.js +1 -1
- package/lib/api/api-doc-ui.js +1 -1
- package/lib/api/api-doc.js +1 -1
- package/lib/api/api-pull-ui.js +1 -1
- package/lib/api/fetch-model-list.js +1 -1
- package/lib/api/generate-api-file.js +1 -1
- package/lib/api/main.js +1 -1
- package/lib/api/pull-silent.js +1 -1
- package/lib/app-menu/app-menu-sync-ui.js +1 -1
- package/lib/app-menu/create-menu.js +1 -1
- package/lib/app-menu/get-local-pages.js +1 -1
- package/lib/app-menu/get-online-menu-list.js +1 -1
- package/lib/app-menu/use-get-online-menu-list.js +1 -1
- package/lib/app-menu/utils.js +1 -1
- package/lib/app-menu/valid-url.js +1 -1
- package/lib/app-menu-update-cdn/current-content.js +1 -1
- package/lib/app-menu-update-cdn/input-cdn-asset.js +1 -1
- package/lib/app-menu-update-cdn/main.js +1 -1
- package/lib/app-menu-update-cdn/update-menu-cdn-url.js +1 -1
- package/lib/auth/auth-server-ui.js +1 -1
- package/lib/auth/auth-server.js +1 -1
- package/lib/auth/constant.js +1 -1
- package/lib/auth/get-cookie.js +1 -1
- package/lib/auth/is-session-valid.js +1 -1
- package/lib/auth/logout.js +1 -1
- package/lib/cli-flags.js +1 -1
- package/lib/cli.js +1 -1
- package/lib/cmd/build-watch.js +1 -1
- package/lib/cmd/build.js +1 -1
- package/lib/cmd/logs.js +1 -1
- package/lib/cmd/preview.js +1 -1
- package/lib/cmd/start-execa.js +1 -1
- package/lib/cmd/start.js +1 -1
- package/lib/config/config-help.js +1 -1
- package/lib/config/main.js +1 -1
- package/lib/constant/domain.js +1 -1
- package/lib/constant/env.js +1 -1
- package/lib/create-app/enhanced-guided-create.js +1 -1
- package/lib/create-app/format-elapsed.js +1 -1
- package/lib/create-app/main.js +1 -1
- package/lib/create-app/non-interactive.js +1 -1
- package/lib/create-app/task-finished.js +1 -1
- package/lib/create-app/task-loading.js +1 -1
- package/lib/create-app/task-running.js +1 -1
- package/lib/create-app/task-time.js +1 -1
- package/lib/create-app/use-copy-project-template.js +1 -1
- package/lib/create-app/use-format-code.js +1 -1
- package/lib/create-app/use-install-dependencies.js +1 -1
- package/lib/help.js +1 -1
- package/lib/i18n/I18nProvider.js +1 -1
- package/lib/i18n/hooks.js +1 -1
- package/lib/i18n/index.js +1 -1
- package/lib/i18n/locales/en-US.js +1 -1
- package/lib/i18n/locales/zh-CN.js +1 -1
- package/lib/init/main.js +1 -1
- package/lib/mcp/McpInstallUI.js +1 -1
- package/lib/mcp/claude.js +1 -1
- package/lib/mcp/cursor.js +1 -1
- package/lib/mcp/main.js +1 -1
- package/lib/mcp/mcp-install-non-interactive.js +1 -1
- package/lib/mcp/mcp-installer.js +1 -1
- package/lib/skills/main.js +1 -1
- package/lib/skills/npx-skills-add.js +1 -0
- package/lib/ui/IDESelector.js +1 -1
- package/lib/ui/useIDESelection.js +1 -1
- package/lib/utils/ai_config.js +1 -1
- package/lib/utils/cdn-config.js +1 -1
- package/lib/utils/check-sdk-version.js +1 -1
- package/lib/utils/cli-version-check.js +1 -1
- package/lib/utils/config.js +1 -1
- package/lib/utils/copy-directory.js +1 -1
- package/lib/utils/file-utils.js +1 -1
- package/lib/utils/guides-cdn.js +1 -1
- package/lib/utils/http-client.js +1 -1
- package/lib/utils/logger.js +1 -1
- package/lib/utils/rules-cdn.js +1 -1
- package/lib/utils/sleep.js +1 -1
- package/lib/utils/template-replacer.js +1 -1
- package/package.json +5 -5
- package/sidecar/flags.json +10 -0
- package/templates/rules/lovrabet_rules.mdc.tpl +891 -0
- package/templates/skill/SKILL.md.tpl +120 -0
- package/lib/ai-setup/AISetupUI.js +0 -1
- package/lib/skills/SkillInstallUI.js +0 -1
- package/lib/skills/skill-install-non-interactive.js +0 -1
- package/lib/skills/skill-installer.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function a56_0x3fb4(_0xcc60cd,_0x487786){_0xcc60cd=_0xcc60cd-0x18f;var _0xec6eeb=a56_0xec6e();var _0x3fb42e=_0xec6eeb[_0xcc60cd];return _0x3fb42e;}var a56_0x5cc0a0=a56_0x3fb4;(function(_0x39b3ba,_0x249ba4){var _0x35bda8=a56_0x3fb4,_0x316f19=_0x39b3ba();while(!![]){try{var _0x4ab09f=parseInt(_0x35bda8(0x273))/0x1*(parseInt(_0x35bda8(0x220))/0x2)+-parseInt(_0x35bda8(0x2da))/0x3*(parseInt(_0x35bda8(0x26d))/0x4)+parseInt(_0x35bda8(0x272))/0x5+-parseInt(_0x35bda8(0x2e0))/0x6+-parseInt(_0x35bda8(0x25a))/0x7*(parseInt(_0x35bda8(0x28f))/0x8)+parseInt(_0x35bda8(0x279))/0x9*(-parseInt(_0x35bda8(0x1fb))/0xa)+-parseInt(_0x35bda8(0x20b))/0xb*(-parseInt(_0x35bda8(0x298))/0xc);if(_0x4ab09f===_0x249ba4)break;else _0x316f19['push'](_0x316f19['shift']());}catch(_0x5b3c99){_0x316f19['push'](_0x316f19['shift']());}}}(a56_0xec6e,0xbcaa4));export default{'common':{'success':'成功','error':'错误','warning':'警告','info':'信息','loading':'加载中...','cancel':'取消','confirm':'确认','next':a56_0x5cc0a0(0x22f),'previous':'上一步','finish':'完成'},'help':{'invalidCommand':a56_0x5cc0a0(0x1da),'usageHint':'使用','viewCommands':a56_0x5cc0a0(0x2f9)},'cli':{'usage':'使用','examples':'示例','description':'描述'},'init':{'inputAppCode':'请输入应用代码\x20(AppCode):','appCodeDesc':a56_0x5cc0a0(0x1c9),'fileExists':a56_0x5cc0a0(0x2a4),'creating':a56_0x5cc0a0(0x27c),'success':a56_0x5cc0a0(0x2e5),'appCodeLabel':a56_0x5cc0a0(0x235),'nextSteps':a56_0x5cc0a0(0x2be),'validation':{'required':a56_0x5cc0a0(0x2b7),'tooLong':a56_0x5cc0a0(0x1b6),'invalidFormat':a56_0x5cc0a0(0x261),'invalidCode':a56_0x5cc0a0(0x299)}},'create':{'projectNameLabel':a56_0x5cc0a0(0x21b),'appCodeLabel':a56_0x5cc0a0(0x270),'validation':{'required':a56_0x5cc0a0(0x1d2),'invalidChars':a56_0x5cc0a0(0x1d3),'tooLong':a56_0x5cc0a0(0x2cf),'dirExists':a56_0x5cc0a0(0x240),'noPermission':a56_0x5cc0a0(0x1ce),'projectName':{'tooLong':a56_0x5cc0a0(0x1a9),'invalidFormat':'项目名只能以字母或数字开头,且只包含字母、数字、-\x20和\x20_','invalid':a56_0x5cc0a0(0x1d4),'dirExistsShort':a56_0x5cc0a0(0x291)},'appCode':{'tooLong':a56_0x5cc0a0(0x24c),'invalidFormat':a56_0x5cc0a0(0x1d8),'invalid':a56_0x5cc0a0(0x20a)},'ide':{'required':'请至少选择一个\x20IDE'}},'common':{'yes':'是','no':'否','selectHint':a56_0x5cc0a0(0x2f5)},'steps':{'pullingApi':a56_0x5cc0a0(0x24e),'apiPullSuccess':a56_0x5cc0a0(0x20f),'apiPullFailed':a56_0x5cc0a0(0x2fe),'apiPullError':a56_0x5cc0a0(0x267),'updatingPackage':'*\x20正在更新\x20package.json\x20的\x20name\x20和\x20description\x20字段','packageUpdated':a56_0x5cc0a0(0x1e7),'configuringAppCode':a56_0x5cc0a0(0x2a7),'creatingConfig':'*\x20正在为项目\x20{{name}}\x20创建配置文件','configCreatedWithAppCode':a56_0x5cc0a0(0x2ef),'configCreated':a56_0x5cc0a0(0x19d),'configuringMcp':a56_0x5cc0a0(0x2c1),'mcpConfigComplete':a56_0x5cc0a0(0x1e5),'cleaningUp':'*\x20清理失败的项目目录:\x20{{dir}}','projectName':{'label':a56_0x5cc0a0(0x1c8)},'appCode':{'label':a56_0x5cc0a0(0x270),'notSet':a56_0x5cc0a0(0x294)},'apiPull':{'label':a56_0x5cc0a0(0x25e)},'lovrabetSetup':{'label':a56_0x5cc0a0(0x282),'ideCount':a56_0x5cc0a0(0x2a1)},'login':{'label':a56_0x5cc0a0(0x1e8),'loggedIn':a56_0x5cc0a0(0x265),'failed':a56_0x5cc0a0(0x1bf),'skipped':a56_0x5cc0a0(0x232)}},'title':a56_0x5cc0a0(0x2ab),'completedStep':a56_0x5cc0a0(0x213),'input':{'projectName':{'label':a56_0x5cc0a0(0x21c),'hint':a56_0x5cc0a0(0x1ca)},'appCode':{'label':a56_0x5cc0a0(0x1e2),'optional':a56_0x5cc0a0(0x1db),'hint':'绑定应用AppCode可自动配置\x20API,如:\x20app-c4c89304\x20(直接回车跳过)'}},'login':{'checking':a56_0x5cc0a0(0x230),'checkingStatus':'\x20检查中...','valid':'√\x20检测到有效登录状态','notDetected':a56_0x5cc0a0(0x243),'prompt':a56_0x5cc0a0(0x22b),'inProgress':a56_0x5cc0a0(0x1a8),'inProgressStatus':a56_0x5cc0a0(0x281)},'apiPull':{'confirm':a56_0x5cc0a0(0x2c2),'recommendation':a56_0x5cc0a0(0x1d1)},'lovrabetSetup':{'confirm':a56_0x5cc0a0(0x2d7),'selectIdeHint':'\x20\x20使用\x20←→\x20返回修改选择,回车确认\x20IDE','selectIdeTitle':'选择要配置的\x20IDE:','keyboardShortcuts':a56_0x5cc0a0(0x218),'inProgress':a56_0x5cc0a0(0x2c1),'mcpCompleted':a56_0x5cc0a0(0x1ec),'skillCompleted':a56_0x5cc0a0(0x219)},'creating':a56_0x5cc0a0(0x1fe),'display':{'projectName':a56_0x5cc0a0(0x239),'appCode':a56_0x5cc0a0(0x205)},'packageJson':{'updating':a56_0x5cc0a0(0x225),'updated':a56_0x5cc0a0(0x1e7)},'config':{'configuringAppCode':a56_0x5cc0a0(0x2a7),'creating':'*\x20正在为项目\x20{{name}}\x20创建配置文件','createdWithAppCode':a56_0x5cc0a0(0x2ef),'createdWithoutAppCode':a56_0x5cc0a0(0x19d)},'cleanup':{'inProgress':a56_0x5cc0a0(0x2ce)},'results':{'mcpComplete':a56_0x5cc0a0(0x1ec),'skillComplete':'✓\x20Skill\x20安装完成:','nextSteps':a56_0x5cc0a0(0x1e4)},'nextSteps':{'configureMcpAndSkill':a56_0x5cc0a0(0x2fb),'skill':a56_0x5cc0a0(0x2ed),'mcp':a56_0x5cc0a0(0x264),'startProject':'启动项目:','pullApi':a56_0x5cc0a0(0x26c),'configAppCode':'配置AppCode:'},'errors':{'createFailed':'×\x20项目创建失败:\x20{{error}}','cleanupFailed':a56_0x5cc0a0(0x2df),'depsInstallFailed':a56_0x5cc0a0(0x238)},'nonInteractive':{'creating':'*\x20正在创建项目\x20{{name}}...','templateCreated':a56_0x5cc0a0(0x192),'packageJsonUpdated':a56_0x5cc0a0(0x21e),'installingDeps':'\x20\x20正在安装依赖...','depsSkipped':a56_0x5cc0a0(0x27b),'codeFormatted':a56_0x5cc0a0(0x19f),'envConfigured':a56_0x5cc0a0(0x2f3),'success':'\x0a√\x20项目\x20{{name}}\x20创建成功!'},'tasks':{'copyFiles':a56_0x5cc0a0(0x1c7),'formatCode':a56_0x5cc0a0(0x229),'installDependencies':a56_0x5cc0a0(0x251)},'nextStepsAlt':{'startProject':a56_0x5cc0a0(0x210),'pullApi':a56_0x5cc0a0(0x25d),'configureLovrabet':a56_0x5cc0a0(0x2fb)}},'config':{'title':'项目配置','help':{'invalidCommand':'无效的命令,可用命令如下:','examples':'配置示例:','set':a56_0x5cc0a0(0x27a),'get':a56_0x5cc0a0(0x2db),'list':a56_0x5cc0a0(0x1ba),'exampleApp':'配置当前项目的\x20App\x20Code','exampleEnv':a56_0x5cc0a0(0x2f6),'exampleLocale':'设置显示语言\x20(zh/en)'},'validation':{'envInvalid':a56_0x5cc0a0(0x23a),'localeInvalid':a56_0x5cc0a0(0x1b5),'valueInvalid':a56_0x5cc0a0(0x292),'noValue':a56_0x5cc0a0(0x1f6),'saveFailed':a56_0x5cc0a0(0x24a)},'success':{'envSet':'✓\x20{{scope}}环境配置已设置为:\x20{{value}}','localeSet':a56_0x5cc0a0(0x297)},'scope':{'project':'项目','global':'全局'}},'api':{'title':a56_0x5cc0a0(0x2a5),'pull':a56_0x5cc0a0(0x216),'doc':a56_0x5cc0a0(0x268),'help':{'title':'lovrabet\x20api\x20-\x20API\x20相关操作','usage':'用法:','options':'选项:','optAppcode':a56_0x5cc0a0(0x195),'optOutput':a56_0x5cc0a0(0x274),'optEnv':a56_0x5cc0a0(0x256),'optDatasetcode':'指定要生成文档的数据集代码(多个用逗号分隔,仅\x20doc\x20命令)','optHelp':a56_0x5cc0a0(0x1e0),'examples':a56_0x5cc0a0(0x221),'pullDesc':'拉取并生成\x20API\x20配置文件','pullAppcode':a56_0x5cc0a0(0x2b3),'pullOutput':a56_0x5cc0a0(0x2fa),'pullEnv':a56_0x5cc0a0(0x2f8),'docDesc':a56_0x5cc0a0(0x1d7),'docAppcode':a56_0x5cc0a0(0x2b3),'docOutput':a56_0x5cc0a0(0x1f9),'docEnv':a56_0x5cc0a0(0x2f0),'docDataset':a56_0x5cc0a0(0x1f1),'docDatasets':a56_0x5cc0a0(0x2d2),'unknownCommand':a56_0x5cc0a0(0x29d),'availableCommands':a56_0x5cc0a0(0x2dc)},'common':{'noPositionalArgs':a56_0x5cc0a0(0x18f),'useAppcodeFlag':'请使用\x20--appcode\x20参数,例如:','noAppCode':a56_0x5cc0a0(0x2b2),'noAppCodeHint':a56_0x5cc0a0(0x237),'noAppCodeOption1':'\x20\x20\x201.\x20配置默认值:\x20lovrabet\x20config\x20set\x20appcode\x20<app-code>','noAppCodeOption2Pull':a56_0x5cc0a0(0x1c3),'noAppCodeOption2Doc':'\x20\x20\x202.\x20使用参数:\x20lovrabet\x20api\x20doc\x20--appcode\x20<app-code>','usingConfigAppCode':a56_0x5cc0a0(0x21d),'usingConfigAppCodeHint':a56_0x5cc0a0(0x1b4),'usingSpecifiedAppCode':a56_0x5cc0a0(0x1ad),'usingDefaultAppCode':a56_0x5cc0a0(0x2e9),'noAppCodeDefault':a56_0x5cc0a0(0x22c),'paramsInvalidJson':a56_0x5cc0a0(0x2cd),'paramsNotJson':a56_0x5cc0a0(0x212),'paramsError':a56_0x5cc0a0(0x28a),'datasetcodeEmpty':a56_0x5cc0a0(0x2c7),'onlyGenerateDatasets':a56_0x5cc0a0(0x242),'authExpired':a56_0x5cc0a0(0x254),'authRetry':'重新登录后再试','unknownError':'未知错误'},'pullUI':{'fetching':a56_0x5cc0a0(0x2b8),'successPull':a56_0x5cc0a0(0x23f),'duplicateInfo':a56_0x5cc0a0(0x1c2),'generatedFiles':a56_0x5cc0a0(0x1eb),'modelFile':a56_0x5cc0a0(0x2eb),'clientFile':'-\x20客户端实例文件','importHint':a56_0x5cc0a0(0x1a1),'pullFailed':a56_0x5cc0a0(0x2f2)},'docUI':{'fetchingDatasets':'正在获取数据集列表...','noDatasets':a56_0x5cc0a0(0x1d6),'datasetsNotFound':a56_0x5cc0a0(0x24d),'allDatasetsNotFound':a56_0x5cc0a0(0x197),'filteredDatasets':'*\x20从\x20{{total}}\x20个数据集中筛选出\x20{{count}}\x20个匹配的数据集','generatingDocs':a56_0x5cc0a0(0x1ed),'generatingFile':'正在生成\x20{{fileName}}.md\x20({{current}}/{{total}})','docComplete':a56_0x5cc0a0(0x1e3),'docFailed':a56_0x5cc0a0(0x2e2),'processedDatasets':a56_0x5cc0a0(0x255),'outputDir':a56_0x5cc0a0(0x1a7),'generatedDocs':'*\x20生成的文档文件:','failedDatasets':a56_0x5cc0a0(0x2e3),'docGenerateFailed':a56_0x5cc0a0(0x263)},'fetchModel':{'fetching':'正在从服务器拉取模型列表...\x20(环境:\x20{{env}})','httpError':'获取数据集失败,HTTP状态码:\x20{{status}}','fetchError':'获取数据集失败:\x20{{error}}'},'generateFile':{'noAppCode':a56_0x5cc0a0(0x2bd)},'docBatch':{'totalDatasets':a56_0x5cc0a0(0x211),'generating':a56_0x5cc0a0(0x1ea),'success':a56_0x5cc0a0(0x27d),'failed':a56_0x5cc0a0(0x2e1),'waiting':a56_0x5cc0a0(0x1f0),'docFormatError':'响应数据格式错误\x20({{datasetCode}}):缺少\x20data.markdown\x20字段','httpError':a56_0x5cc0a0(0x2c0)},'silent':{'invalidPrefix':a56_0x5cc0a0(0x1fa),'fetching':a56_0x5cc0a0(0x2b8),'generating':'*\x20开始生成\x20API\x20配置文件:','modelFileName':'\x20\x20\x20•\x20{{name}}.ts\x20-\x20模型配置文件','clientFileName':a56_0x5cc0a0(0x1e1),'processing':'*\x20正在处理\x20{{count}}\x20个数据集...','success':a56_0x5cc0a0(0x23f),'error':a56_0x5cc0a0(0x21f)}},'auth':{'title':'登录认证','login':{'success':{'title':a56_0x5cc0a0(0x1cb),'message':a56_0x5cc0a0(0x1a4),'manualClose':'无法自动关闭窗口,请手动关闭此标签页或窗口。'},'successCli':a56_0x5cc0a0(0x2ba),'inProgress':a56_0x5cc0a0(0x2cb),'browserPrompt':a56_0x5cc0a0(0x1b7),'pressEnter':'*\x20按回车开始登录。','pressQToExit':a56_0x5cc0a0(0x2ea)},'session':{'valid':a56_0x5cc0a0(0x29a)},'server':{'starting':a56_0x5cc0a0(0x246),'loginUrl':a56_0x5cc0a0(0x2ae),'openingBrowser':a56_0x5cc0a0(0x2bf),'manualOpenHint':'💡\x20如果浏览器没有自动打开,请手动复制上面的登录地址到浏览器中打开','browserOpened':a56_0x5cc0a0(0x204),'browserOpenFailed':'⚠️\x20\x20无法自动打开浏览器','manualCopyUrl':'🔗\x20请手动复制登录地址到浏览器:'},'logout':{'success':a56_0x5cc0a0(0x200),'notLoggedIn':'!\x20当前未登录'}},'menu':{'sync':a56_0x5cc0a0(0x26a),'update':a56_0x5cc0a0(0x1f7)},'mcp':{'cursor':a56_0x5cc0a0(0x2a2),'claude':'Claude\x20Code','error':{'unsupportedCommand':a56_0x5cc0a0(0x1b3),'missingAppcode':a56_0x5cc0a0(0x2e8)},'help':{'title':a56_0x5cc0a0(0x193),'availableCommands':a56_0x5cc0a0(0x1de),'command':{'install':a56_0x5cc0a0(0x1fc),'help':a56_0x5cc0a0(0x227)},'usage':{'help':a56_0x5cc0a0(0x22d),'install':'\x20\x20lovrabet\x20mcp\x20install\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20交互式选择并配置\x20MCP','installCursor':a56_0x5cc0a0(0x28c),'installClaude':a56_0x5cc0a0(0x22a)},'configMethods':'配置方式:','configMethodsInteractive':a56_0x5cc0a0(0x20d),'configMethodsInteractiveHint':a56_0x5cc0a0(0x1ff),'configMethodsDirect':'\x20\x20直接配置指定\x20IDE\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20-\x20使用\x20--ide\x20标志直接配置','configMethodsDirectCursor':a56_0x5cc0a0(0x22e),'configMethodsDirectClaude':a56_0x5cc0a0(0x1f2),'supportedIDEs':a56_0x5cc0a0(0x27f),'examples':a56_0x5cc0a0(0x1b8),'exampleInstall':a56_0x5cc0a0(0x1cd),'exampleInstallHint':'\x20\x20\x20\x20→\x20交互式选择\x20IDE','exampleInstallCursor':a56_0x5cc0a0(0x207),'exampleInstallCursorHint':a56_0x5cc0a0(0x25c),'configGuide':'配置指南:'},'select':{'chooseIDE':'\x0a请选择要配置\x20MCP\x20的\x20IDE:\x0a','cancel':a56_0x5cc0a0(0x217),'enterNumber':a56_0x5cc0a0(0x295),'prompt':'请选择:\x20','cancelled':a56_0x5cc0a0(0x286),'invalidChoice':'\x0a无效的选择,请输入\x201-{{count}}\x20之间的数字\x0a'},'installFlow':{'configuring':a56_0x5cc0a0(0x2b6),'error':a56_0x5cc0a0(0x260)},'cursorConfig':{'success':a56_0x5cc0a0(0x1e9),'configInfo':a56_0x5cc0a0(0x1b2),'usageHint':a56_0x5cc0a0(0x1f4),'restartRequired':'请重启\x20Cursor\x20以加载新的\x20MCP\x20配置。','error':'\x0a错误:\x20配置失败\x20-\x20{{error}}\x0a','rules':{'exists':'Cursor\x20Rules\x20文件已存在,跳过','created':a56_0x5cc0a0(0x293),'copyFailed':a56_0x5cc0a0(0x28d)},'updateExisting':a56_0x5cc0a0(0x2b5),'createNew':'创建新的\x20mcp.json\x20配置','written':a56_0x5cc0a0(0x289)},'claudeConfig':{'error':'\x0a错误:\x20配置失败\x20-\x20{{error}}\x0a','agents':{'exists':a56_0x5cc0a0(0x2e4),'created':a56_0x5cc0a0(0x1cc),'copyFailed':a56_0x5cc0a0(0x19a)},'manualCommand':a56_0x5cc0a0(0x199),'configInfo':a56_0x5cc0a0(0x1b2),'restartRequired':a56_0x5cc0a0(0x1a3),'commandGenerated':a56_0x5cc0a0(0x19e)},'other':{'configInfo':a56_0x5cc0a0(0x2ac),'configGuide':'详细配置指南:\x20https://help.yuntoo.com/mcp/config-guide','guideShown':a56_0x5cc0a0(0x2a0)},'config':{'env':a56_0x5cc0a0(0x29f)},'install':{'starting':a56_0x5cc0a0(0x228),'unknownIDE':a56_0x5cc0a0(0x1a6),'otherIDE':a56_0x5cc0a0(0x1bb),'success':'\x0a✓\x20{{ide}}\x20MCP\x20配置成功','failed':a56_0x5cc0a0(0x247),'completed':a56_0x5cc0a0(0x271),'manualActionRequired':a56_0x5cc0a0(0x258)},'ui':{'otherIDE':a56_0x5cc0a0(0x1bb),'otherIDEDescription':a56_0x5cc0a0(0x23c),'selectAtLeastOne':'请至少选择一个\x20IDE','selectedIDE':a56_0x5cc0a0(0x1f8),'count':a56_0x5cc0a0(0x202),'title':a56_0x5cc0a0(0x25f),'configuring':a56_0x5cc0a0(0x2a6),'completed':a56_0x5cc0a0(0x2b4),'partialManual':'⚠️\x20部分配置需要手动完成','failed':a56_0x5cc0a0(0x2a8),'manualRequired':'⚠️\x20配置需要手动完成','pressAnyKeyToExit':a56_0x5cc0a0(0x2b0),'unsupportedIDE':a56_0x5cc0a0(0x2c4)}},'aiSetup':{'error':{'missingAppcode':'需要先配置\x20appcode'},'mcp':{'cursor':{'success':'Cursor\x20MCP\x20配置成功','written':a56_0x5cc0a0(0x289),'error':a56_0x5cc0a0(0x215),'rules':{'created':a56_0x5cc0a0(0x293),'copyFailed':a56_0x5cc0a0(0x28d)}},'claude':{'commandGenerated':a56_0x5cc0a0(0x2fc),'manualCommand':a56_0x5cc0a0(0x28b),'configInfo':a56_0x5cc0a0(0x1b2),'env':a56_0x5cc0a0(0x20c),'restartRequired':a56_0x5cc0a0(0x253),'manualExecute':a56_0x5cc0a0(0x1d0),'agents':{'created':a56_0x5cc0a0(0x1cc),'copyFailed':a56_0x5cc0a0(0x19a)}},'other':{'name':'其他','title':a56_0x5cc0a0(0x2b1),'guideShown':a56_0x5cc0a0(0x2d3)},'unsupportedIDE':a56_0x5cc0a0(0x244)},'skill':{'unknownIDE':a56_0x5cc0a0(0x1a6),'installSuccess':'{{name}}\x20技能包安装成功','itemsCreated':a56_0x5cc0a0(0x241),'installFailed':a56_0x5cc0a0(0x2f4),'sharedCopied':a56_0x5cc0a0(0x284),'sharedCopyFailed':a56_0x5cc0a0(0x2c9),'manifestCreated':a56_0x5cc0a0(0x278)},'ui':{'selectAtLeastOne':a56_0x5cc0a0(0x2dd),'confirm':{'title':a56_0x5cc0a0(0x1dc),'mcpDescription':'•\x20MCP:\x20让\x20AI\x20直接访问\x20Lovrabet\x20数据集','skillDescription':'•\x20Skill:\x20安装研发最佳实践、Backend\x20Function\x20规范','yes':a56_0x5cc0a0(0x2b9),'no':a56_0x5cc0a0(0x250),'default':a56_0x5cc0a0(0x191)},'select':{'title':a56_0x5cc0a0(0x288),'mcpSection':a56_0x5cc0a0(0x1fd),'skillSection':a56_0x5cc0a0(0x2d5),'controls':a56_0x5cc0a0(0x198)},'installing':a56_0x5cc0a0(0x20e)}},'appMenu':{'error':{'missingAppCode':a56_0x5cc0a0(0x22c),'appCodeHint':{'title':a56_0x5cc0a0(0x237),'option1':a56_0x5cc0a0(0x252),'option2':'\x20\x20\x202.\x20配置默认值:\x20lovrabet\x20config\x20set\x20app\x20<app-code>'},'authExpired':a56_0x5cc0a0(0x254),'authValidationFailed':a56_0x5cc0a0(0x1dd),'httpStatus':a56_0x5cc0a0(0x224),'fetchFailed':a56_0x5cc0a0(0x201),'createHttpStatus':a56_0x5cc0a0(0x285),'createFailed':a56_0x5cc0a0(0x259)},'info':{'emptyMenuList':a56_0x5cc0a0(0x2ee)},'success':{'fetched':a56_0x5cc0a0(0x2bc),'created':a56_0x5cc0a0(0x257)},'fetching':{'online':a56_0x5cc0a0(0x2af),'daily':a56_0x5cc0a0(0x194)},'creating':{'single':a56_0x5cc0a0(0x29b),'batch':{'start':a56_0x5cc0a0(0x2ca),'completed':a56_0x5cc0a0(0x1a0)}},'sync':{'title':a56_0x5cc0a0(0x1c6),'table':{'menuName':a56_0x5cc0a0(0x248),'local':'本地','lovrabetPlatform':a56_0x5cc0a0(0x1f5)},'error':{'noMenuSelected':a56_0x5cc0a0(0x21a),'invalidJsUrl':a56_0x5cc0a0(0x226),'jsUrlUnreachable':a56_0x5cc0a0(0x1aa),'invalidCssUrl':a56_0x5cc0a0(0x280),'cssUrlUnreachable':a56_0x5cc0a0(0x28e),'createMenuFailed':'创建菜单失败','authHint':{'prefix':a56_0x5cc0a0(0x2c8),'suffix':a56_0x5cc0a0(0x2de)},'noLocalPages':'!\x20未找到本地页面,请先创建页面'},'step':{'selectedMenus':a56_0x5cc0a0(0x287),'selectedMenusCount':a56_0x5cc0a0(0x202),'jsUrl':a56_0x5cc0a0(0x2f1),'cssUrl':a56_0x5cc0a0(0x231),'selectMenus':a56_0x5cc0a0(0x2c3),'creating':a56_0x5cc0a0(0x222),'completed':a56_0x5cc0a0(0x206)},'operation':{'update':'更新','create':'新建'},'loading':{'fetchingMenuList':a56_0x5cc0a0(0x208)},'hotkeys':a56_0x5cc0a0(0x2e7),'input':{'jsUrl':{'label':a56_0x5cc0a0(0x2bb),'placeholder':'\x20输入项目的\x20JS\x20资源链接(https://...)'},'cssUrl':{'label':a56_0x5cc0a0(0x275),'placeholder':a56_0x5cc0a0(0x2e6)}}},'updateCdn':{'title':a56_0x5cc0a0(0x2d9),'error':{'invalidJsUrl':a56_0x5cc0a0(0x226),'jsUrlUnreachable':'JS\x20链接无法访问','invalidCssUrl':a56_0x5cc0a0(0x280),'cssUrlUnreachable':a56_0x5cc0a0(0x28e),'authHint':{'prefix':a56_0x5cc0a0(0x2c8),'suffix':a56_0x5cc0a0(0x2de)},'noCdnLinks':a56_0x5cc0a0(0x276),'updateFailed':a56_0x5cc0a0(0x236)},'loading':{'fetching':a56_0x5cc0a0(0x2d8),'syncing':'\x20资源正在同步中...'},'action':{'continue':'继续更新','cancel':a56_0x5cc0a0(0x1a5)},'success':{'updated':a56_0x5cc0a0(0x29e),'synced':a56_0x5cc0a0(0x2d6)},'updating':'正在更新菜单资源链接:\x20{{label}}\x20({{path}})','preview':{'title':a56_0x5cc0a0(0x190),'menuList':'待更新的菜单列表:','resourceLinks':a56_0x5cc0a0(0x234)},'input':{'title':a56_0x5cc0a0(0x203),'jsUrl':{'label':a56_0x5cc0a0(0x24b),'placeholder':'输入项目的\x20JS\x20资源链接(https://...)'},'cssUrl':{'label':a56_0x5cc0a0(0x283),'placeholder':a56_0x5cc0a0(0x209)}}}},'skill':{'install':'安装技能包','error':{'unsupportedCommand':'错误:\x20不支持的命令:\x20{{cmd}}','installFailed':a56_0x5cc0a0(0x196),'unknownPlatform':a56_0x5cc0a0(0x1be),'unknownIDE':'\x20\x20✗\x20未知的\x20IDE:\x20{{ide}}','noValidIDE':a56_0x5cc0a0(0x26e),'selectAtLeastOne':a56_0x5cc0a0(0x296)},'errorHint':{'availableCommands':a56_0x5cc0a0(0x1de),'installInteractive':'\x20\x20lovrabet\x20skill\x20install\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20交互式选择并安装技能包','installDirect':'\x20\x20lovrabet\x20skill\x20install\x20<ide>\x20\x20\x20\x20\x20#\x20直接安装指定\x20IDE\x20的技能包','showHelp':'\x20\x20lovrabet\x20skill\x20--help\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20显示帮助信息\x0a','usageExamples':a56_0x5cc0a0(0x19b),'exampleInteractive':a56_0x5cc0a0(0x214),'exampleDirect':a56_0x5cc0a0(0x2f7)},'select':{'title':a56_0x5cc0a0(0x1c4),'installAll':a56_0x5cc0a0(0x233),'cancel':'取消','inputFormat':a56_0x5cc0a0(0x2d0),'inputHint':a56_0x5cc0a0(0x1ef),'prompt':'请选择:\x20','cancelled':'\x0a已取消安装\x0a','noneSelected':'\x0a未选择任何\x20IDE,安装取消\x0a','selectedIDE':a56_0x5cc0a0(0x1f8),'count':a56_0x5cc0a0(0x202)},'cdn':{'fetching':a56_0x5cc0a0(0x1b1),'fetchingExtend':'正在从\x20CDN\x20拉取开发者指南(含扩展)...','fetchSuccess':'✓\x20拉取\x20{{count}}\x20个开发者指南','fetchFailed':a56_0x5cc0a0(0x1bd)},'installing':{'title':a56_0x5cc0a0(0x1bc),'progress':'正在安装技能包...','ide':a56_0x5cc0a0(0x2ec),'installed':a56_0x5cc0a0(0x25b),'created':a56_0x5cc0a0(0x2d1),'createdDir':a56_0x5cc0a0(0x29c),'createdManifest':a56_0x5cc0a0(0x23b)},'done':{'success':a56_0x5cc0a0(0x1ac),'successInline':a56_0x5cc0a0(0x1d5),'guidesLocation':'开发者指南位置:','guidesPath':a56_0x5cc0a0(0x1ab),'guidesPathInline':a56_0x5cc0a0(0x290),'pressAnyKey':a56_0x5cc0a0(0x2b0)},'generic':a56_0x5cc0a0(0x249),'help':{'title':'Lovrabet\x20Skill\x20-\x20开发者技能包安装工具','usage':a56_0x5cc0a0(0x269),'showHelp':'显示帮助信息','installInteractive':a56_0x5cc0a0(0x1f3),'installDirect':a56_0x5cc0a0(0x1df),'installAll':a56_0x5cc0a0(0x1e6),'installWithBff':a56_0x5cc0a0(0x1ae),'installMethods':a56_0x5cc0a0(0x277),'interactiveSelect':a56_0x5cc0a0(0x245),'interactiveKeys':a56_0x5cc0a0(0x23d),'directInstall':'\x20\x20直接安装指定\x20IDE\x20(支持多个)\x20\x20\x20\x20\x20\x20\x20-\x20使用\x20--ide\x20标志直接安装','bffWorkflow':a56_0x5cc0a0(0x1cf),'supportedIDEs':a56_0x5cc0a0(0x27f),'agentDesc':'其他\x20(通用模板)\x20(.agent/skills/)\x20-\x20兜底方案','allDesc':a56_0x5cc0a0(0x24f),'options':a56_0x5cc0a0(0x23e),'bffOption':a56_0x5cc0a0(0x1b0),'skillContents':a56_0x5cc0a0(0x1b9),'skillContentsList':a56_0x5cc0a0(0x2cc),'examples':a56_0x5cc0a0(0x1b8),'exampleInteractive':a56_0x5cc0a0(0x1c0),'exampleDirectDesc':a56_0x5cc0a0(0x26b),'exampleBffDesc':a56_0x5cc0a0(0x1c1),'exampleAllDesc':a56_0x5cc0a0(0x27e),'afterInstall':a56_0x5cc0a0(0x2aa),'afterInstallList':'\x20\x20-\x20IDE\x20特定配置文件\x20(.cursorrules,\x20.windsurf/,\x20.claude/,\x20.cline/,\x20.codex/,\x20.opencode/,\x20.qoder/,\x20.codebuddy/,\x20.trae/)\x0a\x20\x20-\x20.lovrabet/skill/.shared/guides/\x20\x20-\x20开发者技能指南','guidesLocationTitle':a56_0x5cc0a0(0x223)}},'logs':{'title':'日志','view':a56_0x5cc0a0(0x1d9),'clear':a56_0x5cc0a0(0x26f),'noLogs':'*\x20暂无日志记录','header':a56_0x5cc0a0(0x2ad),'time':a56_0x5cc0a0(0x266),'duration':a56_0x5cc0a0(0x1a2),'details':a56_0x5cc0a0(0x262),'cleared':a56_0x5cc0a0(0x1ee)},'start':{'starting':a56_0x5cc0a0(0x1c5)},'build':{'building':a56_0x5cc0a0(0x2c5)},'preview':{'previewing':a56_0x5cc0a0(0x2a3),'watchMode':a56_0x5cc0a0(0x2a9)},'ui':{'ideSelector':{'title':a56_0x5cc0a0(0x2c6),'hotkeys':a56_0x5cc0a0(0x2d4)}},'upgrade':{'cli':{'title':'↪\x20新版本可用','current':a56_0x5cc0a0(0x19c),'stable':a56_0x5cc0a0(0x2fd),'command':a56_0x5cc0a0(0x1af)},'sdk':{'title':'↪\x20SDK\x20版本更新','current':'\x20\x20\x20当前版本:\x20{{package}}@{{version}}','stable':a56_0x5cc0a0(0x2fd),'command':'\x20\x20\x20升级命令:\x20{{command}}'}}};function a56_0xec6e(){var _0x3cc118=['\x20\x20q.\x20取消\x0a','↑/↓:\x20移动\x20空格:\x20切换\x20a:\x20全选\x20i/r:\x20反选\x20Enter:\x20确认','✓\x20Skill\x20安装完成:','请至少选择一个菜单','项目名称','*\x20项目名:\x20','*\x20使用配置的应用AppCode:\x20{{appCode}}','\x20\x20√\x20package.json\x20已更新','×\x20API\x20配置拉取异常:\x20{{error}}','2YsPSWv','示例:','*\x20正在创建菜单...','开发者指南位置:','获取菜单列表失败,HTTP状态码:\x20{{status}}','*\x20正在更新\x20package.json\x20的\x20name\x20和\x20description\x20字段','请输入有效的\x20JS\x20https\x20链接','\x20\x20lovrabet\x20mcp\x20--help\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20显示帮助信息\x0a','开始配置\x20MCP','格式化代码','\x20\x20lovrabet\x20mcp\x20install\x20--claude\x20\x20\x20\x20直接配置\x20Claude\x20Code\x20MCP','*\x20是否要先登录以便拉取\x20API\x20配置?','未提供应用AppCode,且配置中也没有默认值','\x20\x20lovrabet\x20mcp\x20--help\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20显示帮助信息','\x20\x20\x20\x20$\x20lovrabet\x20mcp\x20install\x20--cursor\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20配置\x20Cursor','下一步','*\x20正在检查登录状态...','CSS\x20链接','跳过登录','全部安装','待更新的资源链接:','AppCode','更新菜单资源失败:\x20{{error}}','!\x20请使用以下方式之一:','依赖安装失败:\x20{{error}}','项目名称:\x20','环境配置值只能是\x20\x22online\x22\x20或\x20\x22daily\x22','✓\x20创建\x20.lovrabet/skill-manifest.json','其他\x20IDE\x20配置指引','\x20\x20\x20\x20→\x20使用\x20↑↓\x20移动光标,空格选中/取消,Enter\x20确认\x0a\x20\x20\x20\x20→\x20按\x20a\x20全选,按\x20i/r\x20反选,按\x20q\x20退出','选项:','√\x20成功拉取\x20{{datasetCount}}\x20个数据集,生成\x20{{modelCount}}\x20个模型','项目目录\x20{{name}}\x20已存在,请使用其他项目名','已创建\x20{{count}}\x20项','*\x20仅生成指定数据集的文档:\x20{{codes}}','!\x20未检测到有效登录','不支持的\x20MCP\x20IDE:\x20{{ide}}','\x20\x20交互式选择\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20-\x20显示\x20IDE\x20列表供选择,支持多选','🔐\x20正在启动登录服务...','\x0a✗\x20{{ide}}\x20MCP\x20配置失败:\x20{{error}}','菜单名称','通用模板','保存配置失败','JS\x20链接:\x20','应用AppCode长度不能超过\x20100\x20个字符','!\x20以下数据集代码不存在:\x20{{codes}}','*\x20正在拉取\x20API\x20配置...','安装所有\x20IDE\x20技能包(包括通用模板)','[N]\x20跳过,稍后手动配置','安装依赖','\x20\x20\x201.\x20直接指定:\x20lovrabet\x20api\x20pull\x20<app-code>','\x20\x20重启\x20Claude\x20Code\x20后生效\x0a','登录鉴权失败,登录已过期,请使用\x20lovrabet\x20auth\x20重新登录','*\x20共处理\x20{{count}}\x20个数据集','指定环境(如:daily、online)','菜单创建成功:','\x0a注意:部分配置需要手动执行命令,请按照上述说明操作','创建菜单失败:\x20{{error}}','10269bMfRDR','已安装\x20{{count}}\x20个目录','\x20\x20\x20\x20→\x20直接配置\x20Cursor\x20MCP\x20(写入\x20.cursor/mcp.json)','拉取API配置:\x20','拉取API配置','配置\x20Lovrabet\x20MCP\x20服务器','\x0a错误:\x20配置失败\x20-\x20{{error}}\x0a','应用代码只能包含字母、数字、-\x20和\x20_','\x20\x20\x20详情:\x20{{details}}','文档生成失败:\x20{{error}}','\x20\x20•\x20MCP\x20服务器:','已登录','\x20\x20\x20时间:\x20{{time}}','!\x20API\x20配置拉取异常,项目已创建,可稍后手动执行:\x20lovrabet\x20api\x20pull','生成文档','用法:','同步菜单','\x20\x20\x20\x20→\x20直接安装\x20Cursor\x20和\x20claude\x20code\x20技能包','拉取API配置:','755916EISDxL','\x0a没有有效的\x20IDE\x20需要安装\x0a','清空日志','应用AppCode','\x0a✓\x20MCP\x20配置完成\x20({{successCount}}/{{totalCount}}\x20成功)','139075aoopks','1163207HrAsLX','指定输出目录(pull:\x20./src/api/,doc:\x20./docs)','*\x20CSS\x20链接:\x20','!\x20未找到菜单资源链接','安装方式:','创建技能包\x20manifest','531QwWfaN','设置配置项','\x20\x20√\x20依赖安装跳过(非交互模式)','正在初始化配置文件...','✓\x20成功生成:\x20{{fileName}}.md','\x20\x20\x20\x20→\x20安装所有\x20IDE\x20技能包','支持的\x20IDE:','请输入有效的\x20CSS\x20https\x20链接','\x20登录中...','MCP\x20和\x20Skill','CSS\x20链接:\x20','共享技能文件复制成功','创建菜单失败,HTTP状态码:\x20{{status}}','\x0a已取消配置\x0a','已选择菜单','*\x20选择要配置的\x20IDE:','已写入\x20.cursor/mcp.json','\x20\x20错误:\x20{{error}}','\x0a📋\x20请执行以下命令配置\x20Claude\x20Code\x20MCP:\x0a','\x20\x20lovrabet\x20mcp\x20install\x20--cursor\x20\x20\x20\x20直接配置\x20Cursor\x20MCP','复制\x20Cursor\x20Rules\x20文件失败','CSS\x20链接无法访问','2192WiQiBZ','开发者指南位置:\x20.lovrabet/skill/.shared/guides/','目录\x20\x22{{name}}\x22\x20已存在','配置值无效或过长','创建\x20Cursor\x20Rules\x20文件','未设置','请输入编号选择\x20IDE:\x0a','请至少选择一个\x20IDE','✓\x20{{scope}}语言配置已设置为:\x20{{value}}','1360008okRhwu','应用代码不合法','√\x20当前为有效会话,无需重新登录。','正在创建菜单:\x20{{label}}\x20({{path}})','\x20\x20✓\x20创建\x20{{path}}/','未知的\x20api\x20命令','√\x20更新成功','环境:\x20{{env}}','其他\x20IDE\x20配置指引已显示','{{count}}\x20个\x20IDE','Cursor','正在预览项目...','当前目录已存在\x20.lovrabetrc\x20文件','API\x20管理','正在配置\x20MCP\x20服务器...','*\x20正在为项目\x20{{name}}\x20配置应用AppCode:\x20{{appCode}}','✗\x20配置失败','监听模式','安装后会在项目中创建:','*\x20创建新项目','配置信息:\x20appcode={{appcode}},\x20env={{env}}','*\x20Lovrabet\x20CLI\x20日志记录:\x0a','📍\x20登录地址:','正在获取线上菜单列表...\x20(appCode:\x20{{appCode}})','按任意键退出...','\x0a📋\x20其他\x20IDE\x20MCP\x20配置:\x0a','×\x20未配置\x20AppCode','使用指定的\x20appcode','✓\x20MCP\x20配置完成!','更新现有\x20mcp.json\x20配置','\x0a📦\x20正在配置\x20{{name}}\x20MCP...\x0a','应用代码不能为空','*\x20正在从服务器拉取\x20API\x20配置...\x20(环境:\x20{{env}})','[Y]\x20是,配置\x20AI\x20助手','登录成功!','*\x20JS\x20链接:\x20','成功获取\x20{{count}}\x20个线上菜单','请先通过\x20`lovrabet\x20config\x20set\x20app\x20<value>`\x20配置应用\x20Code','现在您可以使用\x20lovrabet\x20api\x20doc\x20和\x20lovrabet\x20api\x20pull\x20等命令了','🌐\x20正在尝试自动打开浏览器...','获取文档失败\x20({{datasetCode}}),HTTP状态码:\x20{{status}}','*\x20正在配置\x20Lovrabet\x20MCP\x20和\x20Skill...','*\x20是否要自动拉取\x20API\x20配置?','*\x20请选择要同步的菜单:','不支持的\x20IDE:\x20{{ide}}','正在构建项目...','请选择要配置的\x20IDE:','×\x20--datasetcode\x20参数不能为空','提示:使用\x20','共享技能文件复制失败','开始批量创建菜单,共\x20{{count}}\x20个','正在登录...','\x20\x20-\x20Filter\x20查询构建规范\x20(10\x20种常见错误对照)\x0a\x20\x20-\x20MCP\x20SQL\x20创建工作流\x20(5\x20步强制流程)\x0a\x20\x20-\x20AntD\x20UI\x20开发规范\x20(禁止\x20AI\x20味道)\x0a\x20\x20-\x20API\x20集成指南\x20(lovrabet\x20api\x20pull\x20流程)\x0a\x20\x20-\x20菜单管理指南\x20(menu\x20sync/update\x20流程)\x0a\x20\x20-\x20Backend\x20Function\x20脚本编写规范\x20(权限过滤、数据脱敏、业务逻辑)\x0a\x20\x20-\x20Backend\x20Function\x20同步工作流\x20(需\x20--dangerously-bff-save\x20启用)','×\x20--params\x20参数必须是一个有效的\x20JSON\x20对象','*\x20清理失败的项目目录:\x20{{dir}}','项目名过长,最多支持\x20100\x20个字符','输入格式:\x20输入编号,用空格分隔\x20(例如:\x201\x203\x205)','\x20\x20✓\x20创建\x20{{path}}','生成多个数据集的文档','配置指引已显示','↑/↓:\x20移动光标\x20空格:\x20切换选中\x20a:\x20全选\x20i/r:\x20反选\x20q:\x20退出\x20Enter:\x20确认','技能包\x20(研发规范指南)','菜单资源同步成功:\x20{{label}}','*\x20是否配置\x20Lovrabet\x20MCP\x20和\x20Skill?','\x20正在获取线上菜单资源链接...','*\x20请输入新的资源链接','3tikmwk','获取配置项','可用命令:','请至少选择一个配置项','\x20命令重新登录','清理项目目录失败','2335932JrAGUH','✗\x20失败:\x20{{fileName}}.md\x20-\x20{{error}}',',\x20失败\x20{{failCount}}\x20个','⚠️\x20以下数据集生成失败:','agents.md\x20文件已存在,跳过','成功在当前目录初始化\x20.lovrabetrc\x20文件','\x20输入项目的\x20CSS\x20资源链接(https://...)','↑/↓:\x20移动光标\x20空格:\x20切换选中\x20a:\x20全选\x20i/r:\x20反选\x20Enter:\x20确认','未找到\x20appcode\x20配置,请先运行\x20\x27lovrabet\x20init\x27\x20初始化项目配置','使用配置的应用AppCode:\x20{{appCode}}','按\x20“q”\x20退出。','-\x20模型配置文件\x20({{count}}\x20个模型)','\x0a📦\x20正在安装\x20{{name}}...\x0a','\x20\x20•\x20Skill:','服务端返回空菜单列表','√\x20配置文件已创建,应用AppCode:\x20{{appCode}}','指定环境生成文档','JS\x20链接','拉取\x20API\x20配置失败:\x20{{error}}','\x20\x20√\x20环境配置完成','{{name}}\x20技能包安装失败','\x20\x20使用\x20←→\x20选择,回车确认','设置环境\x20(online/daily)','\x20\x20lovrabet\x20skill\x20install\x20cursor\x20\x20\x20\x20#\x20直接安装\x20Cursor\x20技能包\x0a','指定环境拉取\x20API','查看可用命令。','指定输出目录','1.\x20配置\x20Lovrabet\x20MCP\x20和\x20Skill','Claude\x20Code\x20MCP\x20命令已生成','\x20\x20\x20稳定版本:\x20{{version}}','!\x20API\x20配置拉取失败,可稍后手动执行:\x20lovrabet\x20api\x20pull','❌\x20错误:不再支持位置参数方式','*\x20待更新的菜单&资源链接','Enter\x20默认:\x20是','\x20\x20√\x20项目模板已创建','Lovrabet\x20MCP\x20-\x20MCP\x20服务器配置工具','正在获取日常菜单列表...\x20(appCode:\x20{{appCode}})','指定应用代码','\x20\x20✗\x20安装\x20{{ide}}\x20失败:\x20{{error}}','指定的数据集代码都不存在:\x20{{codes}}','↑/↓:\x20移动\x20空格:\x20切换\x20a:\x20全选\x20q:\x20退出\x20Enter:\x20确认','请执行以下命令配置\x20Claude\x20Code\x20MCP:','复制\x20agents.md\x20文件失败','使用示例:','\x20\x20\x20当前\x20CLI\x20版本:\x20{{version}}','√\x20配置文件已创建,可稍后使用\x20\x27lovrabet\x20config\x20set\x20appcode\x20<app-code>\x27\x20配置','生成配置命令','\x20\x20√\x20代码已格式化','批量创建菜单完成,共\x20{{count}}\x20个','*\x20导入方式:','\x20\x20\x20耗时:\x20{{duration}}ms','重启\x20Claude\x20Code\x20后生效','登录成功,请返回命令行继续操作。当前窗口将在\x20{{seconds}}\x20秒内关闭。','取消更新','未知的\x20IDE:\x20{{ide}}','*\x20输出目录:\x20','*\x20正在登录,请前往浏览器完成登录...','项目名长度不能超过\x2050\x20个字符','JS\x20链接无法访问','\x20\x20.lovrabet/skill/.shared/guides/\x20-\x20详细开发指南\x0a','\x0a✓\x20技能包安装成功!共安装\x20{{count}}\x20个目录\x0a','使用指定的应用AppCode:\x20{{appCode}}','包含\x20Backend\x20Function\x20同步工作流','\x20\x20\x20升级命令:\x20{{command}}','\x20\x20--dangerously-bff-save\x20\x20\x20\x20包含\x20Backend\x20Function\x20同步工作流指南\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(需要\x20MCP\x20服务器启用相应\x20tools)','正在从\x20CDN\x20拉取开发者指南...','配置信息:','错误:\x20不支持的命令:\x20{{cmd}}','\x20\x20(注:\x20--appcode\x20参数与配置一致,将使用默认配置)','locale\x20配置值无效,支持的值:\x20zh,\x20en,\x20zh-CN,\x20en-US','应用代码长度不能超过\x20100\x20个字符','请前往浏览器完成登录。','示例:','技能包内容包括:','列出所有配置项','其他\x20IDE','安装\x20Lovrabet\x20技能包\x20-\x20选择\x20IDE','\x20\x20!\x20CDN\x20拉取失败,跳过指南安装:\x20{{error}}','⚠️\x20\x20未知的平台:\x20{{ide}},使用通用模板','登录失败','\x20\x20\x20\x20→\x20交互式选择\x20IDE','\x20\x20\x20\x20→\x20安装技能包并包含\x20Backend\x20Function\x20同步工作流','!\x20原始数据集\x20{{originalCount}}\x20个,过滤重复\x20{{duplicateCount}}\x20个','\x20\x20\x202.\x20使用参数:\x20lovrabet\x20api\x20pull\x20--appcode\x20<app-code>','\x0a请选择要安装技能包的\x20IDE\x20(可多选):\x0a','正在启动开发服务器...','*\x20同步菜单到\x20Lovrabet\x20平台','复制项目文件','项目名','应用代码用于标识您的项目,只能包含字母、数字、-\x20和\x20_','\x20直接回车确认,或输入自定义名称','登录成功','创建\x20agents.md\x20文件','\x20\x20$\x20lovrabet\x20mcp\x20install','无法在当前目录创建项目,请检查目录权限','\x20\x20包含\x20Backend\x20Function\x20同步工作流\x20\x20\x20-\x20使用\x20--dangerously-bff-save\x20标志','请手动执行:\x20{{command}}','\x20\x20推荐选择\x20Yes,可自动配置\x20API\x20接口','项目名不能为空','项目名包含非法字符,不允许使用:\x20<\x20>\x20:\x20\x22\x20|\x20?\x20*\x20及控制字符','项目名不合法','✓\x20技能包安装成功!共安装\x20{{count}}\x20个目录','未找到任何数据集','生成所有数据集的文档','应用AppCode只能包含字母、数字、连字符和下划线,且必须以字母或数字开头','查看日志','!\x20请指定一个有效的命令。','[可选]:\x20','是否同时配置\x20AI\x20助手?这将:','登录态校验失败,请使用\x20lovrabet\x20auth\x20重新登录','\x0a可用命令:','直接安装指定\x20IDE\x20的技能包','显示此帮助信息','\x20\x20\x20•\x20{{name}}.ts\x20-\x20客户端实例文件','*\x20应用AppCode\x20','√\x20文档生成完成!成功\x20{{successCount}}\x20个','🚀\x20接下来:','√\x20Lovrabet\x20MCP\x20和\x20Skill\x20配置完成','安装所有技能包','√\x20package.json\x20已更新:\x20name={{name}}','登录状态','\x0a✓\x20Cursor\x20MCP\x20配置成功!\x0a','[{{current}}/{{total}}]\x20正在生成:\x20{{fileName}}.md\x20({{name}})','*\x20已生成文件:','✓\x20MCP\x20服务器配置完成:','正在生成\x20{{count}}\x20个数据集的文档...','*\x20日志已清空','输入\x200\x20安装所有\x20IDE,输入\x20q\x20取消\x0a','等待\x203\x20秒...\x0a','只生成指定数据集的文档','\x20\x20\x20\x20$\x20lovrabet\x20mcp\x20install\x20--claude\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20配置\x20Claude\x20Code','交互式选择并安装技能包','现在您可以在\x20Cursor\x20中使用\x20Lovrabet\x20数据集\x20MCP\x20工具了。','Lovrabet平台','未提供配置值','更新菜单\x20CDN\x20资源','已选择\x20IDE','指定文档输出目录','×\x20文件前缀格式不正确。只能包含字母、数字、连字符和下划线,且必须以字母开头。','790okEbsn','\x20\x20lovrabet\x20mcp\x20install\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20交互式选择并配置\x20MCP','MCP\x20服务器\x20(AI\x20访问数据集)','*\x20正在创建项目...','\x20\x20\x20\x20→\x20输入编号选择\x20IDE','✓\x20已退出登录','获取菜单列表失败:\x20{{error}}','{{count}}\x20个','*\x20已输入的资源资源','✅\x20浏览器已自动打开,请在浏览器中完成登录','\x20|\x20应用AppCode:\x20','√\x20菜单创建完成','\x20\x20$\x20lovrabet\x20mcp\x20install\x20--cursor','\x20正在获取线上菜单列表...','输入项目的\x20CSS\x20资源链接(https://...)','应用AppCode不合法','55BCRdPm','\x20\x20环境:\x20{{env}}','\x20\x20\x20交互式选择\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20-\x20显示\x20IDE\x20列表供选择','正在配置\x20AI\x20助手...','√\x20API\x20配置拉取完成','启动项目:\x20','\x0a共有\x20{{count}}\x20个数据集需要生成文档\x0a','×\x20--params\x20参数不是有效的\x20JSON\x20格式','√\x20{{label}}:\x20','\x20\x20lovrabet\x20skill\x20install\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20交互式选择\x20IDE','Cursor\x20MCP\x20配置失败','拉取\x20API'];a56_0xec6e=function(){return _0x3cc118;};return a56_0xec6e();}
|
|
1
|
+
var a55_0x21aa73=a55_0x4343;function a55_0x4343(_0x203f46,_0x5af487){_0x203f46=_0x203f46-0x8f;var _0x108c67=a55_0x108c();var _0x43439d=_0x108c67[_0x203f46];return _0x43439d;}(function(_0x5dfbdb,_0x59bf94){var _0x48878b=a55_0x4343,_0x36482b=_0x5dfbdb();while(!![]){try{var _0x5c85e0=-parseInt(_0x48878b(0x14a))/0x1+-parseInt(_0x48878b(0x138))/0x2+-parseInt(_0x48878b(0x1f5))/0x3+-parseInt(_0x48878b(0x170))/0x4+parseInt(_0x48878b(0xf9))/0x5*(parseInt(_0x48878b(0x116))/0x6)+parseInt(_0x48878b(0x19e))/0x7*(-parseInt(_0x48878b(0x1e0))/0x8)+parseInt(_0x48878b(0x165))/0x9;if(_0x5c85e0===_0x59bf94)break;else _0x36482b['push'](_0x36482b['shift']());}catch(_0x15356a){_0x36482b['push'](_0x36482b['shift']());}}}(a55_0x108c,0xa0926));export default{'common':{'success':'成功','error':'错误','warning':'警告','info':'信息','loading':a55_0x21aa73(0x195),'cancel':'取消','confirm':'确认','next':a55_0x21aa73(0x201),'previous':'上一步','finish':'完成'},'help':{'invalidCommand':'!\x20请指定一个有效的命令。','usageHint':'使用','viewCommands':a55_0x21aa73(0x157)},'cli':{'usage':'使用','examples':'示例','description':'描述'},'init':{'inputAppCode':'请输入应用代码\x20(AppCode):','appCodeDesc':'应用代码用于标识您的项目,只能包含字母、数字、-\x20和\x20_','fileExists':a55_0x21aa73(0xe1),'creating':'正在初始化配置文件...','success':a55_0x21aa73(0xad),'appCodeLabel':a55_0x21aa73(0x93),'nextSteps':'现在您可以使用\x20lovrabet\x20api\x20doc\x20和\x20lovrabet\x20api\x20pull\x20等命令了','validation':{'required':'应用代码不能为空','tooLong':a55_0x21aa73(0x1fc),'invalidFormat':a55_0x21aa73(0x128),'invalidCode':a55_0x21aa73(0x1ea)}},'create':{'projectNameLabel':a55_0x21aa73(0xac),'appCodeLabel':a55_0x21aa73(0x143),'validation':{'required':a55_0x21aa73(0x112),'invalidChars':a55_0x21aa73(0x121),'tooLong':'项目名过长,最多支持\x20100\x20个字符','dirExists':a55_0x21aa73(0xec),'noPermission':a55_0x21aa73(0x11d),'projectName':{'tooLong':'项目名长度不能超过\x2050\x20个字符','invalidFormat':a55_0x21aa73(0x10c),'invalid':a55_0x21aa73(0x133),'dirExistsShort':a55_0x21aa73(0x191)},'appCode':{'tooLong':a55_0x21aa73(0x152),'invalidFormat':'应用AppCode只能包含字母、数字、连字符和下划线,且必须以字母或数字开头','invalid':a55_0x21aa73(0x13d)},'ide':{'required':a55_0x21aa73(0x1cc)}},'common':{'yes':'是','no':'否','selectHint':a55_0x21aa73(0xeb)},'steps':{'pullingApi':a55_0x21aa73(0x1a0),'apiPullSuccess':a55_0x21aa73(0xed),'apiPullFailed':a55_0x21aa73(0x1e3),'apiPullError':'!\x20API\x20配置拉取异常,项目已创建,可稍后手动执行:\x20lovrabet\x20api\x20pull','updatingPackage':a55_0x21aa73(0x13b),'packageUpdated':a55_0x21aa73(0x12e),'configuringAppCode':a55_0x21aa73(0xda),'creatingConfig':'*\x20正在为项目\x20{{name}}\x20创建配置文件','configCreatedWithAppCode':a55_0x21aa73(0xa3),'configCreated':a55_0x21aa73(0x1ab),'configuringMcp':a55_0x21aa73(0x1a4),'mcpConfigComplete':a55_0x21aa73(0x158),'cleaningUp':'*\x20清理失败的项目目录:\x20{{dir}}','projectName':{'label':a55_0x21aa73(0x1b7)},'appCode':{'label':a55_0x21aa73(0x143),'notSet':'未设置'},'apiPull':{'label':a55_0x21aa73(0x20d)},'lovrabetSetup':{'label':a55_0x21aa73(0x1c5),'ideCount':a55_0x21aa73(0x1d0)},'mcpSetup':{'label':a55_0x21aa73(0x14e)},'skillsMcpSetup':{'label':'Skills\x20和\x20MCP'},'login':{'label':'登录状态','loggedIn':a55_0x21aa73(0xb4),'failed':a55_0x21aa73(0xc7),'skipped':a55_0x21aa73(0x11b)}},'title':a55_0x21aa73(0x1f9),'completedStep':a55_0x21aa73(0xc3),'input':{'projectName':{'label':a55_0x21aa73(0x146),'hint':'\x20直接回车确认,或输入自定义名称'},'appCode':{'label':a55_0x21aa73(0xf2),'optional':a55_0x21aa73(0x11e),'hint':a55_0x21aa73(0x18a)}},'login':{'checking':a55_0x21aa73(0x19f),'checkingStatus':a55_0x21aa73(0xaa),'valid':a55_0x21aa73(0x196),'notDetected':a55_0x21aa73(0x135),'prompt':'*\x20是否要先登录以便拉取\x20API\x20配置?','inProgress':a55_0x21aa73(0x136),'inProgressStatus':a55_0x21aa73(0x1a2)},'apiPull':{'confirm':a55_0x21aa73(0x1c4),'recommendation':'\x20\x20推荐选择\x20Yes,可自动配置\x20API\x20接口'},'lovrabetSetup':{'confirm':'*\x20是否配置\x20Lovrabet\x20MCP\x20和\x20Skill?','selectIdeHint':a55_0x21aa73(0x13f),'selectIdeTitle':a55_0x21aa73(0xa4),'keyboardShortcuts':a55_0x21aa73(0x17e),'inProgress':a55_0x21aa73(0x1a4),'mcpCompleted':'✓\x20MCP\x20服务器配置完成:','skillCompleted':a55_0x21aa73(0x92)},'skillsMcpSetup':{'confirm':a55_0x21aa73(0x209),'hint':a55_0x21aa73(0x1cb),'skillsInProgress':'*\x20正在通过\x20npx\x20skills\x20安装\x20AI\x20Skills...','skillsSkipped':a55_0x21aa73(0xf6),'mcpInProgress':a55_0x21aa73(0xee),'completed':'Skills\x20安装和\x20MCP\x20配置完成'},'mcpSetup':{'confirm':'*\x20是否配置\x20Lovrabet\x20MCP\x20和\x20Skill?','hint':'配置\x20MCP\x20可让\x20AI\x20直接访问\x20Lovrabet\x20数据集','inProgress':'*\x20正在安装\x20Skills\x20和配置\x20MCP...','prompt':a55_0x21aa73(0xee),'completed':a55_0x21aa73(0xd2)},'creating':a55_0x21aa73(0x1d3),'display':{'projectName':a55_0x21aa73(0x206),'appCode':'\x20|\x20应用AppCode:\x20'},'packageJson':{'updating':a55_0x21aa73(0x13b),'updated':'√\x20package.json\x20已更新:\x20name={{name}}'},'config':{'configuringAppCode':a55_0x21aa73(0xda),'creating':a55_0x21aa73(0x1f1),'createdWithAppCode':a55_0x21aa73(0xa3),'createdWithoutAppCode':'√\x20配置文件已创建,可稍后使用\x20\x27lovrabet\x20config\x20set\x20appcode\x20<app-code>\x27\x20配置'},'cleanup':{'inProgress':a55_0x21aa73(0xf0)},'results':{'mcpComplete':'✓\x20MCP\x20服务器配置完成:','skillComplete':a55_0x21aa73(0x92),'nextSteps':a55_0x21aa73(0x1e8)},'nextSteps':{'configureMcpAndSkill':'1.\x20配置\x20Lovrabet\x20MCP\x20和\x20Skill','skill':a55_0x21aa73(0x178),'skillNpxHint':'\x20\x20亦可手动:\x20npx\x20-y\x20skills\x20add\x20lovrabet/lovrabet-skill\x20--skill\x20Lovrabet','mcp':a55_0x21aa73(0x132),'installSkill':a55_0x21aa73(0x1b9),'installMcp':'配置\x20MCP\x20服务器:\x20','startProject':a55_0x21aa73(0x8f),'pullApi':a55_0x21aa73(0x188),'configAppCode':a55_0x21aa73(0xe3)},'errors':{'createFailed':'×\x20项目创建失败:\x20{{error}}','cleanupFailed':a55_0x21aa73(0x114),'depsInstallFailed':a55_0x21aa73(0x1ff)},'nonInteractive':{'creating':a55_0x21aa73(0xd8),'templateCreated':'\x20\x20√\x20项目模板已创建','packageJsonUpdated':a55_0x21aa73(0x120),'installingDeps':a55_0x21aa73(0x10b),'depsSkipped':'\x20\x20√\x20依赖安装跳过(非交互模式)','codeFormatted':a55_0x21aa73(0x1e6),'envConfigured':a55_0x21aa73(0x15f),'success':a55_0x21aa73(0xa0)},'tasks':{'copyFiles':a55_0x21aa73(0x17b),'formatCode':'格式化代码','installDependencies':a55_0x21aa73(0xfc)},'nextStepsAlt':{'startProject':a55_0x21aa73(0x204),'pullApi':'拉取API配置:\x20','configureLovrabet':a55_0x21aa73(0x129)}},'config':{'title':a55_0x21aa73(0x1a9),'help':{'invalidCommand':a55_0x21aa73(0xd9),'examples':a55_0x21aa73(0xef),'set':a55_0x21aa73(0x16c),'get':'获取配置项','list':a55_0x21aa73(0x1d6),'exampleApp':a55_0x21aa73(0x187),'exampleEnv':a55_0x21aa73(0x192),'exampleLocale':a55_0x21aa73(0x147)},'validation':{'envInvalid':'环境配置值只能是\x20\x22production\x22\x20或\x20\x22daily\x22','localeInvalid':'locale\x20配置值无效,支持的值:\x20zh,\x20en,\x20zh-CN,\x20en-US','valueInvalid':a55_0x21aa73(0xab),'noValue':a55_0x21aa73(0x105),'saveFailed':a55_0x21aa73(0x118)},'success':{'envSet':a55_0x21aa73(0x1fa),'localeSet':a55_0x21aa73(0xca)},'scope':{'project':'项目','global':'全局'}},'api':{'title':'API\x20管理','pull':a55_0x21aa73(0x1e9),'doc':a55_0x21aa73(0xde),'help':{'title':'lovrabet\x20api\x20-\x20API\x20相关操作','usage':a55_0x21aa73(0x119),'options':a55_0x21aa73(0x200),'optAppcode':a55_0x21aa73(0x91),'optOutput':a55_0x21aa73(0x20e),'optEnv':a55_0x21aa73(0x202),'optDatasetcode':a55_0x21aa73(0xf5),'optHelp':'显示此帮助信息','examples':a55_0x21aa73(0x1cd),'pullDesc':a55_0x21aa73(0x1d8),'pullAppcode':'使用指定的\x20appcode','pullOutput':a55_0x21aa73(0x1c9),'pullEnv':a55_0x21aa73(0xbd),'docDesc':a55_0x21aa73(0x208),'docAppcode':a55_0x21aa73(0xd5),'docOutput':a55_0x21aa73(0xc4),'docEnv':a55_0x21aa73(0x103),'docDataset':a55_0x21aa73(0x1c7),'docDatasets':a55_0x21aa73(0x1fd),'unknownCommand':a55_0x21aa73(0xc8),'availableCommands':a55_0x21aa73(0x155)},'common':{'noPositionalArgs':a55_0x21aa73(0x15b),'useAppcodeFlag':a55_0x21aa73(0xe0),'noAppCode':'×\x20未配置\x20AppCode','noAppCodeHint':a55_0x21aa73(0x16e),'noAppCodeOption1':'\x20\x20\x201.\x20配置默认值:\x20lovrabet\x20config\x20set\x20appcode\x20<app-code>','noAppCodeOption2Pull':'\x20\x20\x202.\x20使用参数:\x20lovrabet\x20api\x20pull\x20--appcode\x20<app-code>','noAppCodeOption2Doc':a55_0x21aa73(0x163),'usingConfigAppCode':a55_0x21aa73(0xe7),'usingConfigAppCodeHint':a55_0x21aa73(0xcd),'usingSpecifiedAppCode':'使用指定的应用AppCode:\x20{{appCode}}','usingDefaultAppCode':a55_0x21aa73(0x1cf),'noAppCodeDefault':a55_0x21aa73(0x131),'paramsInvalidJson':a55_0x21aa73(0x179),'paramsNotJson':'×\x20--params\x20参数不是有效的\x20JSON\x20格式','paramsError':a55_0x21aa73(0xbe),'datasetcodeEmpty':a55_0x21aa73(0xbf),'onlyGenerateDatasets':a55_0x21aa73(0x1be),'authExpired':'登录鉴权失败,登录已过期,请使用\x20lovrabet\x20auth\x20重新登录','authRetry':a55_0x21aa73(0x1ad),'unknownError':'未知错误'},'pullUI':{'fetching':a55_0x21aa73(0x205),'successPull':a55_0x21aa73(0x9f),'duplicateInfo':a55_0x21aa73(0x9a),'generatedFiles':'*\x20已生成文件:','modelFile':a55_0x21aa73(0x1c2),'clientFile':'-\x20客户端实例文件','importHint':'*\x20导入方式:','pullFailed':'拉取\x20API\x20配置失败:\x20{{error}}'},'docUI':{'fetchingDatasets':a55_0x21aa73(0xb0),'noDatasets':'未找到任何数据集','datasetsNotFound':a55_0x21aa73(0x102),'allDatasetsNotFound':a55_0x21aa73(0xe9),'filteredDatasets':a55_0x21aa73(0xa5),'generatingDocs':'正在生成\x20{{count}}\x20个数据集的文档...','generatingFile':'正在生成\x20{{fileName}}.md\x20({{current}}/{{total}})','docComplete':a55_0x21aa73(0x1e1),'docFailed':a55_0x21aa73(0x186),'processedDatasets':a55_0x21aa73(0x1d9),'outputDir':a55_0x21aa73(0x1e4),'generatedDocs':a55_0x21aa73(0xc9),'failedDatasets':'⚠️\x20以下数据集生成失败:','docGenerateFailed':a55_0x21aa73(0x15c)},'fetchModel':{'fetching':a55_0x21aa73(0xb7),'httpError':a55_0x21aa73(0x20b),'fetchError':a55_0x21aa73(0x20c)},'generateFile':{'noAppCode':a55_0x21aa73(0x15a)},'docBatch':{'totalDatasets':a55_0x21aa73(0x1f0),'generating':'[{{current}}/{{total}}]\x20正在生成:\x20{{fileName}}.md\x20({{name}})','success':'✓\x20成功生成:\x20{{fileName}}.md','failed':a55_0x21aa73(0x12f),'waiting':a55_0x21aa73(0x111),'docFormatError':'响应数据格式错误\x20({{datasetCode}}):缺少\x20data.markdown\x20字段','httpError':'获取文档失败\x20({{datasetCode}}),HTTP状态码:\x20{{status}}'},'silent':{'invalidPrefix':a55_0x21aa73(0x1e2),'fetching':'*\x20正在从服务器拉取\x20API\x20配置...\x20(环境:\x20{{env}})','generating':'*\x20开始生成\x20API\x20配置文件:','modelFileName':a55_0x21aa73(0xb3),'clientFileName':'\x20\x20\x20•\x20{{name}}.ts\x20-\x20客户端实例文件','processing':'*\x20正在处理\x20{{count}}\x20个数据集...','success':'√\x20成功拉取\x20{{datasetCount}}\x20个数据集,生成\x20{{modelCount}}\x20个模型','error':a55_0x21aa73(0x1dd)}},'auth':{'title':a55_0x21aa73(0x1fe),'login':{'success':{'title':a55_0x21aa73(0x189),'message':a55_0x21aa73(0xa8),'manualClose':'无法自动关闭窗口,请手动关闭此标签页或窗口。'},'successCli':a55_0x21aa73(0x159),'inProgress':a55_0x21aa73(0x182),'browserPrompt':'请前往浏览器完成登录。','pressEnter':a55_0x21aa73(0x197),'pressQToExit':'按\x20“q”\x20退出。'},'session':{'valid':a55_0x21aa73(0x1f3)},'server':{'starting':a55_0x21aa73(0x18f),'loginUrl':a55_0x21aa73(0x17f),'openingBrowser':a55_0x21aa73(0xfa),'manualOpenHint':'💡\x20如果浏览器没有自动打开,请手动复制上面的登录地址到浏览器中打开','browserOpened':a55_0x21aa73(0x162),'browserOpenFailed':'⚠️\x20\x20无法自动打开浏览器','manualCopyUrl':a55_0x21aa73(0xb5)},'logout':{'success':'✓\x20已退出登录','notLoggedIn':a55_0x21aa73(0x14f)}},'menu':{'sync':a55_0x21aa73(0x1b4),'update':a55_0x21aa73(0x1b5)},'mcp':{'cursor':a55_0x21aa73(0x108),'claude':a55_0x21aa73(0xd1),'error':{'unsupportedCommand':a55_0x21aa73(0x96),'missingAppcode':'未找到\x20appcode\x20配置,请先运行\x20\x27lovrabet\x20init\x27\x20初始化项目配置'},'help':{'title':a55_0x21aa73(0x110),'availableCommands':a55_0x21aa73(0x1ba),'command':{'install':a55_0x21aa73(0xfb),'help':a55_0x21aa73(0x12c)},'usage':{'help':a55_0x21aa73(0xdb),'install':'\x20\x20lovrabet\x20mcp\x20install\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20交互式选择并配置\x20MCP','installCursor':'\x20\x20lovrabet\x20mcp\x20install\x20--cursor\x20\x20\x20\x20直接配置\x20Cursor\x20MCP','installClaude':a55_0x21aa73(0x151)},'configMethods':a55_0x21aa73(0x207),'configMethodsInteractive':a55_0x21aa73(0x1f4),'configMethodsInteractiveHint':'\x20\x20\x20\x20→\x20输入编号选择\x20IDE','configMethodsDirect':'\x20\x20直接配置指定\x20IDE\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20-\x20使用\x20--ide\x20标志直接配置','configMethodsDirectCursor':a55_0x21aa73(0x98),'configMethodsDirectClaude':'\x20\x20\x20\x20$\x20lovrabet\x20mcp\x20install\x20--claude\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20配置\x20Claude\x20Code','supportedIDEs':'支持的\x20IDE:','examples':a55_0x21aa73(0xd6),'exampleInstall':a55_0x21aa73(0xa6),'exampleInstallHint':a55_0x21aa73(0x1aa),'exampleInstallCursor':a55_0x21aa73(0x203),'exampleInstallCursorHint':a55_0x21aa73(0x142),'configGuide':a55_0x21aa73(0x109)},'select':{'chooseIDE':a55_0x21aa73(0x14c),'cancel':a55_0x21aa73(0x1a7),'enterNumber':a55_0x21aa73(0x13c),'prompt':a55_0x21aa73(0x1c3),'cancelled':'\x0a已取消配置\x0a','invalidChoice':a55_0x21aa73(0x16d)},'installFlow':{'configuring':a55_0x21aa73(0x171),'error':a55_0x21aa73(0x150)},'cursorConfig':{'success':a55_0x21aa73(0x19a),'configInfo':a55_0x21aa73(0x113),'usageHint':a55_0x21aa73(0x1c1),'restartRequired':a55_0x21aa73(0xb8),'error':a55_0x21aa73(0x150),'rules':{'exists':a55_0x21aa73(0x10a),'created':a55_0x21aa73(0x173),'copyFailed':a55_0x21aa73(0x107)},'updateExisting':a55_0x21aa73(0xa1),'createNew':a55_0x21aa73(0x16f),'written':'已写入\x20.cursor/mcp.json'},'claudeConfig':{'error':a55_0x21aa73(0x150),'agents':{'exists':a55_0x21aa73(0xcc),'created':a55_0x21aa73(0x20a),'copyFailed':'复制\x20agents.md\x20文件失败'},'manualCommand':a55_0x21aa73(0xcf),'configInfo':a55_0x21aa73(0x113),'restartRequired':a55_0x21aa73(0x144),'commandGenerated':a55_0x21aa73(0x148)},'other':{'configInfo':'配置信息:\x20appcode={{appcode}}{{envSuffix}}','configGuide':a55_0x21aa73(0x1fb),'guideShown':a55_0x21aa73(0x139)},'config':{'env':a55_0x21aa73(0x149)},'install':{'starting':a55_0x21aa73(0x1a1),'unknownIDE':a55_0x21aa73(0x1db),'otherIDE':'其他\x20IDE','success':'\x0a✓\x20{{ide}}\x20MCP\x20配置成功','failed':a55_0x21aa73(0xff),'completed':a55_0x21aa73(0xb9),'manualActionRequired':a55_0x21aa73(0xbb)},'ui':{'otherIDE':'其他\x20IDE','otherIDEDescription':a55_0x21aa73(0x12b),'selectAtLeastOne':a55_0x21aa73(0x1cc),'selectedIDE':a55_0x21aa73(0x1d1),'count':a55_0x21aa73(0x140),'title':a55_0x21aa73(0x18b),'configuring':a55_0x21aa73(0xdd),'completed':a55_0x21aa73(0x153),'partialManual':a55_0x21aa73(0xe5),'failed':'✗\x20配置失败','manualRequired':a55_0x21aa73(0x130),'pressAnyKeyToExit':a55_0x21aa73(0xd4),'unsupportedIDE':a55_0x21aa73(0xb2)}},'aiSetup':{'error':{'missingAppcode':'需要先配置\x20appcode'},'mcp':{'cursor':{'success':a55_0x21aa73(0xa7),'written':a55_0x21aa73(0x183),'error':a55_0x21aa73(0x1d4),'rules':{'created':a55_0x21aa73(0x173),'copyFailed':a55_0x21aa73(0x107)}},'claude':{'commandGenerated':'Claude\x20Code\x20MCP\x20命令已生成','manualCommand':a55_0x21aa73(0x1af),'configInfo':a55_0x21aa73(0x113),'env':a55_0x21aa73(0x1eb),'restartRequired':'\x20\x20重启\x20Claude\x20Code\x20后生效\x0a','manualExecute':'请手动执行:\x20{{command}}','agents':{'created':a55_0x21aa73(0x20a),'copyFailed':a55_0x21aa73(0x1a3)}},'other':{'name':'其他','title':a55_0x21aa73(0xea),'guideShown':'配置指引已显示'},'unsupportedIDE':'不支持的\x20MCP\x20IDE:\x20{{ide}}'},'skill':{'unknownIDE':a55_0x21aa73(0x1db),'installSuccess':'{{name}}\x20技能包安装成功','itemsCreated':a55_0x21aa73(0xf7),'installFailed':a55_0x21aa73(0x1b2),'sharedCopied':a55_0x21aa73(0x127),'sharedCopyFailed':a55_0x21aa73(0x16b),'manifestCreated':a55_0x21aa73(0x1ee),'npxSkippedMsg':a55_0x21aa73(0xc2),'npxOkMsg':'npx\x20skills\x20add\x20已完成','npxFailMsg':a55_0x21aa73(0x123),'agentNote':'通用模板由\x20skills/lovrabet/\x20提供,无需额外\x20IDE\x20规则文件','rulesAppliedMsg':a55_0x21aa73(0x1b3),'noRulesForIdeMsg':'该\x20IDE\x20无独立\x20rules\x20落盘(指南见\x20skills/lovrabet/)'},'ui':{'selectAtLeastOne':a55_0x21aa73(0x9d),'confirm':{'title':a55_0x21aa73(0x1dc),'mcpDescription':'•\x20MCP:\x20让\x20AI\x20直接访问\x20Lovrabet\x20数据集','skillDescription':a55_0x21aa73(0xdf),'yes':a55_0x21aa73(0x156),'no':a55_0x21aa73(0x1d2),'default':'Enter\x20默认:\x20是'},'select':{'title':a55_0x21aa73(0xfd),'mcpSection':'MCP\x20服务器\x20(AI\x20访问数据集)','skillSection':a55_0x21aa73(0x1de),'controls':a55_0x21aa73(0xce)},'installing':'正在配置\x20AI\x20助手...'}},'appMenu':{'error':{'missingAppCode':a55_0x21aa73(0x131),'appCodeHint':{'title':'!\x20请使用以下方式之一:','option1':a55_0x21aa73(0xb1),'option2':a55_0x21aa73(0x1ed)},'authExpired':a55_0x21aa73(0x9e),'authValidationFailed':'登录态校验失败,请使用\x20lovrabet\x20auth\x20重新登录','httpStatus':a55_0x21aa73(0xe8),'fetchFailed':a55_0x21aa73(0xa9),'createHttpStatus':a55_0x21aa73(0xe6),'createFailed':a55_0x21aa73(0x1c0)},'info':{'emptyMenuList':a55_0x21aa73(0x1b8)},'success':{'fetched':a55_0x21aa73(0x172),'created':a55_0x21aa73(0x1bc)},'fetching':{'online':a55_0x21aa73(0x169),'daily':a55_0x21aa73(0x13e)},'creating':{'single':a55_0x21aa73(0x9c),'batch':{'start':a55_0x21aa73(0xc1),'completed':a55_0x21aa73(0x124)}},'sync':{'title':a55_0x21aa73(0xc5),'table':{'menuName':a55_0x21aa73(0x18d),'local':'本地','lovrabetPlatform':a55_0x21aa73(0x19d)},'error':{'noMenuSelected':a55_0x21aa73(0x1ae),'invalidJsUrl':a55_0x21aa73(0x10e),'jsUrlUnreachable':a55_0x21aa73(0x1df),'invalidCssUrl':'请输入有效的\x20CSS\x20https\x20链接','cssUrlUnreachable':a55_0x21aa73(0xd7),'createMenuFailed':a55_0x21aa73(0x1bd),'authHint':{'prefix':'提示:使用\x20','suffix':a55_0x21aa73(0x122)},'noLocalPages':a55_0x21aa73(0x194)},'step':{'selectedMenus':a55_0x21aa73(0xf8),'selectedMenusCount':a55_0x21aa73(0x140),'jsUrl':a55_0x21aa73(0x1d7),'cssUrl':a55_0x21aa73(0x13a),'selectMenus':a55_0x21aa73(0x10d),'creating':a55_0x21aa73(0x1b6),'completed':a55_0x21aa73(0x12d)},'operation':{'update':'更新','create':'新建'},'loading':{'fetchingMenuList':a55_0x21aa73(0x106)},'hotkeys':a55_0x21aa73(0x141),'input':{'jsUrl':{'label':'*\x20JS\x20链接:\x20','placeholder':a55_0x21aa73(0x154)},'cssUrl':{'label':a55_0x21aa73(0x100),'placeholder':'\x20输入项目的\x20CSS\x20资源链接(https://...)'}}},'updateCdn':{'title':a55_0x21aa73(0x145),'error':{'invalidJsUrl':a55_0x21aa73(0x10e),'jsUrlUnreachable':a55_0x21aa73(0x1df),'invalidCssUrl':a55_0x21aa73(0x14d),'cssUrlUnreachable':'CSS\x20链接无法访问','authHint':{'prefix':a55_0x21aa73(0xbc),'suffix':a55_0x21aa73(0x122)},'noCdnLinks':'!\x20未找到菜单资源链接','updateFailed':a55_0x21aa73(0xe4)},'loading':{'fetching':a55_0x21aa73(0xba),'syncing':a55_0x21aa73(0x164)},'action':{'continue':a55_0x21aa73(0x177),'cancel':a55_0x21aa73(0x97)},'success':{'updated':a55_0x21aa73(0x1e5),'synced':a55_0x21aa73(0x1ce)},'updating':'正在更新菜单资源链接:\x20{{label}}\x20({{path}})','preview':{'title':a55_0x21aa73(0x11a),'menuList':'待更新的菜单列表:','resourceLinks':a55_0x21aa73(0x185)},'input':{'title':a55_0x21aa73(0x1d5),'jsUrl':{'label':a55_0x21aa73(0xf3),'placeholder':a55_0x21aa73(0xae)},'cssUrl':{'label':a55_0x21aa73(0xb6),'placeholder':a55_0x21aa73(0x199)}}}},'skill':{'error':{'unsupportedCommand':a55_0x21aa73(0x96),'installFailed':'\x20\x20✗\x20安装\x20{{ide}}\x20失败:\x20{{error}}','unknownPlatform':a55_0x21aa73(0x15d),'unknownIDE':'\x20\x20✗\x20未知的\x20IDE:\x20{{ide}}','noValidIDE':a55_0x21aa73(0x1f8),'selectAtLeastOne':a55_0x21aa73(0x1cc)},'errorHint':{'availableCommands':a55_0x21aa73(0x1ba),'installInteractive':a55_0x21aa73(0x12a),'installDirect':a55_0x21aa73(0x1ef),'showHelp':a55_0x21aa73(0x9b),'usageExamples':a55_0x21aa73(0x17a),'exampleInteractive':'\x20\x20lovrabet\x20skill\x20install\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20交互式选择\x20IDE','exampleDirect':'\x20\x20lovrabet\x20skill\x20install\x20cursor\x20\x20\x20\x20#\x20直接安装\x20Cursor\x20技能包\x0a'},'select':{'title':a55_0x21aa73(0xcb),'installAll':a55_0x21aa73(0x1e7),'cancel':'取消','inputFormat':a55_0x21aa73(0x18c),'inputHint':a55_0x21aa73(0x134),'prompt':a55_0x21aa73(0x1c3),'cancelled':a55_0x21aa73(0x11c),'noneSelected':a55_0x21aa73(0x181),'selectedIDE':a55_0x21aa73(0x1d1),'count':a55_0x21aa73(0x140)},'cdn':{'fetching':'正在从\x20CDN\x20拉取开发者指南...','fetchingExtend':a55_0x21aa73(0x17d),'fetchSuccess':a55_0x21aa73(0x11f),'fetchFailed':a55_0x21aa73(0x1c8)},'install':{'npxIntro':a55_0x21aa73(0xe2),'npxFailed':a55_0x21aa73(0x104),'npxSkippedEnv':a55_0x21aa73(0x117),'npxDone':a55_0x21aa73(0x161),'rulesFor':a55_0x21aa73(0x1f7),'rulesAppliedShort':a55_0x21aa73(0x18e),'rulesSkipShort':a55_0x21aa73(0x1f2)},'installing':{'title':a55_0x21aa73(0x115),'progress':a55_0x21aa73(0xdc),'progressNpx':a55_0x21aa73(0x1ca),'ide':'\x0a📦\x20正在安装\x20{{name}}...\x0a','installed':a55_0x21aa73(0x1ec),'created':a55_0x21aa73(0x94),'createdDir':a55_0x21aa73(0x176),'createdManifest':a55_0x21aa73(0xf1)},'done':{'success':a55_0x21aa73(0x95),'successInline':a55_0x21aa73(0x198),'successNpx':'\x0a✓\x20官方\x20skill\x20与规则处理完成\x0a','guidesLocation':'开发者指南位置:','guidesPath':a55_0x21aa73(0xa2),'guidesPathSkills':a55_0x21aa73(0x180),'guidesPathInline':a55_0x21aa73(0x1c6),'guidesPathInlineSkills':a55_0x21aa73(0x14b),'pressAnyKey':'按任意键退出...'},'generic':a55_0x21aa73(0x126),'help':{'title':a55_0x21aa73(0x174),'usage':'用法:','showHelp':a55_0x21aa73(0x1a6),'installInteractive':a55_0x21aa73(0x90),'installDirect':a55_0x21aa73(0x168),'installAll':'安装所有技能包','installWithBff':a55_0x21aa73(0xd0),'installMethods':a55_0x21aa73(0x101),'interactiveSelect':a55_0x21aa73(0xaf),'interactiveKeys':a55_0x21aa73(0x1bf),'directInstall':a55_0x21aa73(0x10f),'bffWorkflow':'\x20\x20包含\x20Backend\x20Function\x20同步工作流\x20\x20\x20-\x20使用\x20--enable-bff-save\x20标志(旧名\x20--dangerously-bff-save\x20仍可用)','sourceWorkflow':a55_0x21aa73(0x19b),'supportedIDEs':a55_0x21aa73(0x137),'agentDesc':a55_0x21aa73(0x99),'allDesc':a55_0x21aa73(0x1f6),'options':a55_0x21aa73(0x1ac),'bffOption':'\x20\x20--enable-bff-save\x20\x20\x20\x20包含\x20Backend\x20Function\x20同步工作流指南\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(需要\x20MCP\x20服务器启用相应\x20tools;旧名\x20--dangerously-bff-save\x20仍可用)','skillContents':'技能包内容包括:','skillContentsList':a55_0x21aa73(0x160),'examples':a55_0x21aa73(0xd6),'exampleInteractive':a55_0x21aa73(0x1aa),'exampleDirectDesc':a55_0x21aa73(0x16a),'exampleBffDesc':a55_0x21aa73(0x19c),'exampleAllDesc':'\x20\x20\x20\x20→\x20安装所有\x20IDE\x20技能包','afterInstall':'安装后会在项目中创建:','afterInstallList':a55_0x21aa73(0x193),'guidesLocationTitle':a55_0x21aa73(0xd3),'guidesLocationExample':'\x20\x20skills/lovrabet/guides/01-typescript-sdk.md','equivCommand':'等价命令:{{command}}','compactNote':a55_0x21aa73(0x175)}},'logs':{'title':'日志','view':'查看日志','clear':a55_0x21aa73(0x1da),'noLogs':a55_0x21aa73(0x1a5),'header':a55_0x21aa73(0x1a8),'time':a55_0x21aa73(0x166),'duration':a55_0x21aa73(0xfe),'details':a55_0x21aa73(0x1b0),'cleared':'*\x20日志已清空'},'start':{'starting':a55_0x21aa73(0x190)},'build':{'building':a55_0x21aa73(0xf4)},'preview':{'previewing':a55_0x21aa73(0x15e),'watchMode':a55_0x21aa73(0xc0)},'ui':{'ideSelector':{'title':a55_0x21aa73(0x1b1),'hotkeys':a55_0x21aa73(0x17c)}},'upgrade':{'cli':{'title':a55_0x21aa73(0x125),'current':a55_0x21aa73(0xc6),'stable':a55_0x21aa73(0x184),'command':'\x20\x20\x20升级命令:\x20{{command}}'},'sdk':{'title':a55_0x21aa73(0x167),'current':'\x20\x20\x20当前版本:\x20{{package}}@{{version}}','stable':a55_0x21aa73(0x184),'command':a55_0x21aa73(0x1bb)}}};function a55_0x108c(){var _0x436a85=['*\x20正在创建项目\x20{{name}}...','无效的命令,可用命令如下:','*\x20正在为项目\x20{{name}}\x20配置应用AppCode:\x20{{appCode}}','\x20\x20lovrabet\x20mcp\x20--help\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20显示帮助信息','正在安装技能包...','正在配置\x20MCP\x20服务器...','生成文档','•\x20Skill:\x20通过\x20npx\x20安装官方包并写入\x20Cursor/Claude\x20规则(需联网)','请使用\x20--appcode\x20参数,例如:','当前目录已存在\x20.lovrabetrc\x20文件','正在通过\x20npx\x20安装官方\x20skill(npx\x20-y\x20skills\x20add\x20lovrabet/lovrabet-skill\x20--skill\x20Lovrabet)...','配置AppCode:','更新菜单资源失败:\x20{{error}}','⚠️\x20部分配置需要手动完成','创建菜单失败,HTTP状态码:\x20{{status}}','*\x20使用配置的应用AppCode:\x20{{appCode}}','获取菜单列表失败,HTTP状态码:\x20{{status}}','指定的数据集代码都不存在:\x20{{codes}}','\x0a📋\x20其他\x20IDE\x20MCP\x20配置:\x0a','\x20\x20使用\x20←→\x20选择,回车确认','项目目录\x20{{name}}\x20已存在,请使用其他项目名','√\x20API\x20配置拉取完成','*\x20正在配置\x20MCP...','配置示例:','*\x20清理失败的项目目录:\x20{{dir}}','✓\x20创建\x20.lovrabet/skill-manifest.json','*\x20应用AppCode\x20','JS\x20链接:\x20','正在构建项目...','指定要生成文档的数据集代码(多个用逗号分隔,仅\x20doc\x20命令)','\x20\x20(已跳过\x20npx,假定\x20skills\x20已就绪)','已创建\x20{{count}}\x20项','已选择菜单','210tRvdfZ','🌐\x20正在尝试自动打开浏览器...','\x20\x20lovrabet\x20mcp\x20install\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20交互式选择并配置\x20MCP','安装依赖','*\x20选择要配置的\x20IDE:','\x20\x20\x20耗时:\x20{{duration}}ms','\x0a✗\x20{{ide}}\x20MCP\x20配置失败:\x20{{error}}','*\x20CSS\x20链接:\x20','安装方式:','!\x20以下数据集代码不存在:\x20{{codes}}','指定环境生成文档','npx\x20skills\x20add\x20失败:\x20{{error}}','未提供配置值','\x20正在获取线上菜单列表...','复制\x20Cursor\x20Rules\x20文件失败','Cursor','配置指南:','Cursor\x20Rules\x20文件已存在,跳过','\x20\x20正在安装依赖...','项目名只能以字母或数字开头,且只包含字母、数字、-\x20和\x20_','*\x20请选择要同步的菜单:','请输入有效的\x20JS\x20https\x20链接','\x20\x20直接安装指定\x20IDE\x20(支持多个)\x20\x20\x20\x20\x20\x20\x20-\x20使用\x20--ide\x20标志直接安装','Lovrabet\x20MCP\x20-\x20MCP\x20服务器配置工具','等待\x203\x20秒...\x0a','项目名不能为空','配置信息:','清理项目目录失败','安装\x20Lovrabet\x20技能包\x20-\x20选择\x20IDE','169548djmLqP','已跳过\x20npx(LOVRABET_SKIP_NPX_SKILLS=1),假定\x20skill\x20已就绪。','保存配置失败','用法:','*\x20待更新的菜单&资源链接','跳过登录','\x0a已取消安装\x0a','无法在当前目录创建项目,请检查目录权限','[可选]:\x20','✓\x20拉取\x20{{count}}\x20个开发者指南','\x20\x20√\x20package.json\x20已更新','项目名包含非法字符,不允许使用:\x20<\x20>\x20:\x20\x22\x20|\x20?\x20*\x20及控制字符','\x20命令重新登录','npx\x20skills\x20add\x20失败','批量创建菜单完成,共\x20{{count}}\x20个','↪\x20新版本可用','通用模板','共享技能文件复制成功','应用代码只能包含字母、数字、-\x20和\x20_','1.\x20配置\x20Lovrabet\x20MCP\x20和\x20Skill','\x20\x20lovrabet\x20skill\x20install\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20交互式选择并安装技能包','其他\x20IDE\x20配置指引','\x20\x20lovrabet\x20mcp\x20--help\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20显示帮助信息\x0a','√\x20菜单创建完成','√\x20package.json\x20已更新:\x20name={{name}}','✗\x20失败:\x20{{fileName}}.md\x20-\x20{{error}}','⚠️\x20配置需要手动完成','未提供应用AppCode,且配置中也没有默认值','\x20\x20•\x20MCP\x20服务器:','项目名不合法','输入\x200\x20安装所有\x20IDE,输入\x20q\x20取消\x0a','!\x20未检测到有效登录','*\x20正在登录,请前往浏览器完成登录...','支持的\x20IDE:','2473166yLnTZo','其他\x20IDE\x20配置指引已显示','CSS\x20链接','*\x20正在更新\x20package.json\x20的\x20name\x20和\x20description\x20字段','请输入编号选择\x20IDE:\x0a','应用AppCode不合法','正在获取日常菜单列表...\x20(appCode:\x20{{appCode}})','\x20\x20使用\x20←→\x20返回修改选择,回车确认\x20IDE','{{count}}\x20个','↑/↓:\x20移动光标\x20空格:\x20切换选中\x20a:\x20全选\x20i/r:\x20反选\x20Enter:\x20确认','\x20\x20\x20\x20→\x20直接配置\x20Cursor\x20MCP\x20(写入\x20.cursor/mcp.json)','应用AppCode','重启\x20Claude\x20Code\x20后生效','*\x20请输入新的资源链接','*\x20项目名:\x20','设置显示语言\x20(zh/en)','生成配置命令','环境:\x20{{env}}','287388tYqkrd','开发者指南:\x20skills/lovrabet/guides/','\x0a请选择要配置\x20MCP\x20的\x20IDE:\x0a','请输入有效的\x20CSS\x20https\x20链接','Skills\x20和\x20MCP','!\x20当前未登录','\x0a错误:\x20配置失败\x20-\x20{{error}}\x0a','\x20\x20lovrabet\x20mcp\x20install\x20--claude\x20\x20\x20\x20直接配置\x20Claude\x20Code\x20MCP','应用AppCode长度不能超过\x20100\x20个字符','✓\x20MCP\x20配置完成!','\x20输入项目的\x20JS\x20资源链接(https://...)','可用命令:','[Y]\x20是,配置\x20AI\x20助手','查看可用命令。','√\x20Lovrabet\x20MCP\x20和\x20Skill\x20配置完成','登录成功!','请先通过\x20`lovrabet\x20config\x20set\x20app\x20<value>`\x20配置应用\x20Code','❌\x20错误:不再支持位置参数方式','文档生成失败:\x20{{error}}','⚠️\x20\x20未知的平台:\x20{{ide}},使用通用模板','正在预览项目...','\x20\x20√\x20环境配置完成','\x20\x20-\x20Filter\x20查询构建规范\x20(10\x20种常见错误对照)\x0a\x20\x20-\x20MCP\x20SQL\x20创建工作流\x20(5\x20步强制流程)\x0a\x20\x20-\x20AntD\x20UI\x20开发规范\x20(禁止\x20AI\x20味道)\x0a\x20\x20-\x20API\x20集成指南\x20(lovrabet\x20api\x20pull\x20流程)\x0a\x20\x20-\x20菜单管理指南\x20(menu\x20sync/update\x20流程)\x0a\x20\x20-\x20Backend\x20Function\x20脚本编写规范\x20(权限过滤、数据脱敏、业务逻辑)\x0a\x20\x20-\x20Backend\x20Function\x20同步工作流\x20(需\x20--enable-bff-save\x20启用)','lovrabet\x20skill\x20已安装','✅\x20浏览器已自动打开,请在浏览器中完成登录','\x20\x20\x202.\x20使用参数:\x20lovrabet\x20api\x20doc\x20--appcode\x20<app-code>','\x20资源正在同步中...','32890437pHJFhG','\x20\x20\x20时间:\x20{{time}}','↪\x20SDK\x20版本更新','直接安装指定\x20IDE\x20的技能包','正在获取线上菜单列表...\x20(appCode:\x20{{appCode}})','\x20\x20\x20\x20→\x20直接安装\x20Cursor\x20和\x20claude\x20code\x20技能包','共享技能文件复制失败','设置配置项','\x0a无效的选择,请输入\x201-{{count}}\x20之间的数字\x0a','!\x20请使用以下方式之一:','创建新的\x20mcp.json\x20配置','4122852TkybTv','\x0a📦\x20正在配置\x20{{name}}\x20MCP...\x0a','成功获取\x20{{count}}\x20个线上菜单','创建\x20Cursor\x20Rules\x20文件','Lovrabet\x20Skill\x20-\x20开发者技能包安装工具','说明:由\x20npx\x20skills\x20选择\x20agent\x20并落盘;开发指南见\x20skills/lovrabet/guides/。','\x20\x20✓\x20创建\x20{{path}}/','继续更新','\x20\x20•\x20Skill(CLI\x20会执行\x20npx\x20skills\x20add\x20并写规则):','×\x20--params\x20参数必须是一个有效的\x20JSON\x20对象','使用示例:','复制项目文件','↑/↓:\x20移动光标\x20空格:\x20切换选中\x20a:\x20全选\x20i/r:\x20反选\x20q:\x20退出\x20Enter:\x20确认','正在从\x20CDN\x20拉取开发者指南(含扩展)...','↑/↓:\x20移动\x20空格:\x20切换\x20a:\x20全选\x20i/r:\x20反选\x20Enter:\x20确认','📍\x20登录地址:','\x20\x20skills/lovrabet/guides/\x20-\x20详细开发指南(由\x20npx\x20skills\x20add\x20安装)\x0a','\x0a未选择任何\x20IDE,安装取消\x0a','正在登录...','已写入\x20.cursor/mcp.json','\x20\x20\x20稳定版本:\x20{{version}}','待更新的资源链接:',',\x20失败\x20{{failCount}}\x20个','配置当前项目的\x20App\x20Code','拉取API配置:','登录成功','绑定应用AppCode可自动配置\x20API,如:\x20app-c4c89304\x20(直接回车跳过)','配置\x20Lovrabet\x20MCP\x20服务器','输入格式:\x20输入编号,用空格分隔\x20(例如:\x201\x203\x205)','菜单名称','已写入规则','🔐\x20正在启动登录服务...','正在启动开发服务器...','目录\x20\x22{{name}}\x22\x20已存在','设置环境\x20(production/daily)','\x20\x20-\x20skills/lovrabet/(npx\x20skills\x20add\x20安装的官方\x20skill)\x0a\x20\x20-\x20Cursor:\x20.cursor/rules/lovrabet_rules.mdc;Claude\x20Code:\x20agents.md(若适用)','!\x20未找到本地页面,请先创建页面','加载中...','√\x20检测到有效登录状态','*\x20按回车开始登录。','✓\x20技能包安装成功!共安装\x20{{count}}\x20个目录','输入项目的\x20CSS\x20资源链接(https://...)','\x0a✓\x20Cursor\x20MCP\x20配置成功!\x0a','\x20\x20指定\x20Skill\x20来源','\x20\x20\x20\x20→\x20安装技能包并包含\x20Backend\x20Function\x20同步工作流','Lovrabet平台','1680XuAiDl','*\x20正在检查登录状态...','*\x20正在拉取\x20API\x20配置...','开始配置\x20MCP','\x20登录中...','复制\x20agents.md\x20文件失败','*\x20正在配置\x20Lovrabet\x20MCP\x20和\x20Skill...','*\x20暂无日志记录','显示帮助信息','\x20\x20q.\x20取消\x0a','*\x20Lovrabet\x20CLI\x20日志记录:\x0a','项目配置','\x20\x20\x20\x20→\x20交互式选择\x20IDE','√\x20配置文件已创建,可稍后使用\x20\x27lovrabet\x20config\x20set\x20appcode\x20<app-code>\x27\x20配置','选项:','重新登录后再试','请至少选择一个菜单','\x0a📋\x20请执行以下命令配置\x20Claude\x20Code\x20MCP:\x0a','\x20\x20\x20详情:\x20{{details}}','请选择要配置的\x20IDE:','{{name}}\x20技能包安装失败','已处理\x20Cursor/Claude\x20规则文件(若不存在则创建)','同步菜单','更新菜单\x20CDN\x20资源','*\x20正在创建菜单...','项目名','服务端返回空菜单列表','安装\x20AI\x20Skills:\x20','\x0a可用命令:','\x20\x20\x20升级命令:\x20{{command}}','菜单创建成功:','创建菜单失败','*\x20仅生成指定数据集的文档:\x20{{codes}}','\x20\x20\x20\x20→\x20使用\x20↑↓\x20移动光标,空格选中/取消,Enter\x20确认\x0a\x20\x20\x20\x20→\x20按\x20a\x20全选,按\x20i/r\x20反选,按\x20q\x20退出','创建菜单失败:\x20{{error}}','现在您可以在\x20Cursor\x20中使用\x20Lovrabet\x20数据集\x20MCP\x20工具了。','-\x20模型配置文件\x20({{count}}\x20个模型)','请选择:\x20','*\x20是否要自动拉取\x20API\x20配置?','MCP\x20和\x20Skill','开发者指南位置:\x20.lovrabet/skill/guides/','只生成指定数据集的文档','\x20\x20!\x20CDN\x20拉取失败,跳过指南安装:\x20{{error}}','指定输出目录','正在运行\x20npx\x20skills\x20add\x20并写入规则...','选\x20Yes\x20后,npx\x20skills\x20将引导您选择\x20AI\x20助手并安装开发者技能包,随后自动配置\x20Cursor\x20MCP','请至少选择一个\x20IDE','示例:','菜单资源同步成功:\x20{{label}}','使用配置的应用AppCode:\x20{{appCode}}','{{count}}\x20个\x20IDE','已选择\x20IDE','[N]\x20跳过,稍后手动配置','*\x20正在创建项目...','Cursor\x20MCP\x20配置失败','*\x20已输入的资源资源','列出所有配置项','JS\x20链接','拉取并生成\x20API\x20配置文件','*\x20共处理\x20{{count}}\x20个数据集','清空日志','未知的\x20IDE:\x20{{ide}}','是否同时配置\x20AI\x20助手?这将:','×\x20API\x20配置拉取异常:\x20{{error}}','技能包\x20(研发规范指南)','JS\x20链接无法访问','42544hCyfin','√\x20文档生成完成!成功\x20{{successCount}}\x20个','×\x20文件前缀格式不正确。只能包含字母、数字、连字符和下划线,且必须以字母开头。','!\x20API\x20配置拉取失败,可稍后手动执行:\x20lovrabet\x20api\x20pull','*\x20输出目录:\x20','√\x20更新成功','\x20\x20√\x20代码已格式化','全部安装','🚀\x20接下来:','拉取\x20API','应用代码不合法','\x20\x20环境:\x20{{env}}','已安装\x20{{count}}\x20个目录','\x20\x20\x202.\x20配置默认值:\x20lovrabet\x20config\x20set\x20app\x20<app-code>','创建技能包\x20manifest','\x20\x20lovrabet\x20skill\x20install\x20<ide>\x20\x20\x20\x20\x20#\x20直接安装指定\x20IDE\x20的技能包','\x0a共有\x20{{count}}\x20个数据集需要生成文档\x0a','*\x20正在为项目\x20{{name}}\x20创建配置文件','规则已存在或未适用','√\x20当前为有效会话,无需重新登录。','\x20\x20\x20交互式选择\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20-\x20显示\x20IDE\x20列表供选择','1057869NYMsMu','安装所有\x20IDE\x20技能包(包括通用模板)','已为以下\x20IDE\x20处理规则文件:\x20{{ides}}','\x0a没有有效的\x20IDE\x20需要安装\x0a','*\x20创建新项目','✓\x20{{scope}}环境配置已设置为:\x20{{value}}','详细配置指南:\x20https://open.lovrabet.com/zh/docs/mcp/config-guide','应用代码长度不能超过\x20100\x20个字符','生成多个数据集的文档','登录认证','依赖安装失败:\x20{{error}}','选项:','下一步','指定环境(如:daily、production)','\x20\x20$\x20lovrabet\x20mcp\x20install\x20--cursor','启动项目:\x20','*\x20正在从服务器拉取\x20API\x20配置...\x20(环境:\x20{{env}})','项目名称:\x20','配置方式:','生成所有数据集的文档','*\x20是否安装\x20AI\x20Skills\x20并配置\x20MCP?','创建\x20agents.md\x20文件','获取数据集失败,HTTP状态码:\x20{{status}}','获取数据集失败:\x20{{error}}','拉取API配置','指定输出目录(pull:\x20./src/api/,doc:\x20./docs)','启动项目:','交互式选择并安装技能包','指定应用代码','✓\x20Skill\x20安装完成:','AppCode','\x20\x20✓\x20创建\x20{{path}}','\x0a✓\x20技能包安装成功!共安装\x20{{count}}\x20个目录\x0a','错误:\x20不支持的命令:\x20{{cmd}}','取消更新','\x20\x20\x20\x20$\x20lovrabet\x20mcp\x20install\x20--cursor\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20配置\x20Cursor','其他\x20(通用模板)\x20(.agent/skills/)\x20-\x20兜底方案','!\x20原始数据集\x20{{originalCount}}\x20个,过滤重复\x20{{duplicateCount}}\x20个','\x20\x20lovrabet\x20skill\x20--help\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20显示帮助信息\x0a','正在创建菜单:\x20{{label}}\x20({{path}})','请至少选择一个配置项','登录鉴权失败,登录已过期,请使用\x20lovrabet\x20auth\x20重新登录','√\x20成功拉取\x20{{datasetCount}}\x20个数据集,生成\x20{{modelCount}}\x20个模型','\x0a√\x20项目\x20{{name}}\x20创建成功!','更新现有\x20mcp.json\x20配置','\x20\x20.lovrabet/skill/guides/\x20-\x20详细开发指南\x0a','√\x20配置文件已创建,应用AppCode:\x20{{appCode}}','选择要配置的\x20IDE:','*\x20从\x20{{total}}\x20个数据集中筛选出\x20{{count}}\x20个匹配的数据集','\x20\x20$\x20lovrabet\x20mcp\x20install','Cursor\x20MCP\x20配置成功','登录成功,请返回命令行继续操作。当前窗口将在\x20{{seconds}}\x20秒内关闭。','获取菜单列表失败:\x20{{error}}','\x20检查中...','配置值无效或过长','项目名称','成功在当前目录初始化\x20.lovrabetrc\x20文件','输入项目的\x20JS\x20资源链接(https://...)','\x20\x20交互式选择\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20-\x20显示\x20IDE\x20列表供选择,支持多选','正在获取数据集列表...','\x20\x20\x201.\x20直接指定:\x20lovrabet\x20api\x20pull\x20<app-code>','不支持的\x20IDE:\x20{{ide}}','\x20\x20\x20•\x20{{name}}.ts\x20-\x20模型配置文件','已登录','🔗\x20请手动复制登录地址到浏览器:','CSS\x20链接:\x20','正在从服务器拉取模型列表...\x20(环境:\x20{{env}})','请重启\x20Cursor\x20以加载新的\x20MCP\x20配置。','\x0a✓\x20MCP\x20配置完成\x20({{successCount}}/{{totalCount}}\x20成功)','\x20正在获取线上菜单资源链接...','注意:部分配置需要手动执行命令,请按照上述说明操作','提示:使用\x20','指定环境拉取\x20API','\x20\x20错误:\x20{{error}}','×\x20--datasetcode\x20参数不能为空','监听模式','开始批量创建菜单,共\x20{{count}}\x20个','已跳过\x20npx(环境变量),假定官方\x20skill\x20已安装','√\x20{{label}}:\x20','指定文档输出目录','*\x20同步菜单到\x20Lovrabet\x20平台','\x20\x20\x20当前\x20CLI\x20版本:\x20{{version}}','登录失败','未知的\x20api\x20命令','*\x20生成的文档文件:','✓\x20{{scope}}语言配置已设置为:\x20{{value}}','\x0a请选择要安装技能包的\x20IDE\x20(可多选):\x0a','agents.md\x20文件已存在,跳过','\x20\x20(注:\x20--appcode\x20参数与配置一致,将使用默认配置)','↑/↓:\x20移动\x20空格:\x20切换\x20a:\x20全选\x20q:\x20退出\x20Enter:\x20确认','请执行以下命令配置\x20Claude\x20Code\x20MCP:','包含\x20Backend\x20Function\x20同步工作流','Claude\x20Code','Skills\x20和\x20MCP\x20配置完成','开发者指南位置:','按任意键退出...','使用指定的\x20appcode','示例:','CSS\x20链接无法访问'];a55_0x108c=function(){return _0x436a85;};return a55_0x108c();}
|
package/lib/init/main.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0xd08646,_0x246f3f){const _0x2cd0e5=a56_0x36cb,_0x32ebdd=_0xd08646();while(!![]){try{const _0x1c5b13=-parseInt(_0x2cd0e5(0x151))/0x1*(parseInt(_0x2cd0e5(0x15d))/0x2)+parseInt(_0x2cd0e5(0x147))/0x3+-parseInt(_0x2cd0e5(0x157))/0x4*(parseInt(_0x2cd0e5(0x148))/0x5)+-parseInt(_0x2cd0e5(0x145))/0x6*(parseInt(_0x2cd0e5(0x15b))/0x7)+parseInt(_0x2cd0e5(0x14d))/0x8+parseInt(_0x2cd0e5(0x13c))/0x9*(-parseInt(_0x2cd0e5(0x150))/0xa)+parseInt(_0x2cd0e5(0x14c))/0xb;if(_0x1c5b13===_0x246f3f)break;else _0x32ebdd['push'](_0x32ebdd['shift']());}catch(_0x127220){_0x32ebdd['push'](_0x32ebdd['shift']());}}}(a56_0x2ce3,0xec4fa));import{jsxs as a56_0x88591,jsx as a56_0x10b4f0}from'react/jsx-runtime';import{useState,useEffect}from'react';import{Box,Text,useInput}from'ink';import{existsSync,writeFileSync,readFileSync}from'node:fs';import{resolve,join,dirname}from'node:path';import{fileURLToPath}from'node:url';function a56_0x2ce3(){const _0x2c54df=['29904OWZfZB','cyan','2340444SDBwRz','1580YmEtfP','init.creating','common.error','init.validation.invalidCode','27828284nyIpfx','4189336OjnCRS','init.inputAppCode','string','2690WniXPD','4msDZgh','env','test','cwd','init.validation.required','stringify','12280jciOnA','length','utf8','production','1883hrYMPU','message','107852LmMPXE','column','delete','version','init','init.nextSteps','info','../..','1.0.0','init.fileExists','初始化项目配置文件成功','创建配置文件失败','package.json','red','exit','green','gray','11349BLjCuG','init.validation.invalidFormat','init.validation.tooLong','trim','init.appCodeDesc','\x20←\x20','toLocaleString','init.success','setLogPath'];a56_0x2ce3=function(){return _0x2c54df;};return a56_0x2ce3();}import{logger}from'../utils/logger.js';import{readConfig}from'../utils/config.js';import{useI18n}from'../i18n/hooks.js';function a56_0x36cb(_0x5c00d7,_0x25ed73){_0x5c00d7=_0x5c00d7-0x130;const _0x2ce3c4=a56_0x2ce3();let _0x36cb51=_0x2ce3c4[_0x5c00d7];return _0x36cb51;}export function Init({appcode:_0x17be12,env:_0x2b6345}){const _0x2c3664=a56_0x36cb,{t:_0x22e073}=useI18n(),[_0x16854f,_0x3d2623]=useState(null),[_0x537009,_0x5915ee]=useState(![]),[_0x5e5696,_0x4bc10e]=useState(!_0x17be12),[_0x1912aa,_0x2ac51c]=useState(''),[_0x27118d,_0x5d52ee]=useState(''),[_0xe23886,_0x455d3c]=useState(_0x17be12||''),[_0x1ef98c]=useState(_0x2b6345);function _0x4617d5(_0x3b88db){const _0x259747=a56_0x36cb;if(_0x3b88db[_0x259747(0x158)]===0x0)return{'valid':![],'message':''};if(_0x3b88db[_0x259747(0x158)]>0x64)return{'valid':![],'message':_0x22e073(_0x259747(0x13e))};const _0x4c30fa=/^[A-Za-z0-9_-]+$/;if(!_0x4c30fa[_0x259747(0x153)](_0x3b88db))return{'valid':![],'message':_0x22e073(_0x259747(0x13d))};return{'valid':!![]};}useInput((_0x590f2e,_0x43636c)=>{const _0x4387b9=a56_0x36cb;if(!_0x5e5696)return;if(_0x43636c['return']){if(_0x27118d||!_0x1912aa[_0x4387b9(0x13f)]()){_0x5d52ee(_0x22e073(_0x4387b9(0x155)));return;}const _0x2a4e0a=_0x1912aa[_0x4387b9(0x13f)](),{valid:_0x1dce08,message:_0xdeb25b}=_0x4617d5(_0x2a4e0a);if(!_0x1dce08){_0x5d52ee(_0xdeb25b||_0x22e073('init.validation.invalidCode'));return;}_0x455d3c(_0x2a4e0a),_0x4bc10e(![]);}else{if(_0x43636c['backspace']||_0x43636c[_0x4387b9(0x15f)])_0x2ac51c(_0x4f1ce9=>{const _0x2591a4=_0x4387b9,_0x25bd5e=_0x4f1ce9['slice'](0x0,-0x1);if(_0x25bd5e['length']===0x0)_0x5d52ee('');else{const {valid:_0x254b82,message:_0x533dea}=_0x4617d5(_0x25bd5e);_0x5d52ee(_0x254b82?'':_0x533dea||_0x22e073(_0x2591a4(0x14b)));}return _0x25bd5e;});else _0x43636c['ctrl']&&_0x590f2e==='c'?process[_0x4387b9(0x139)](0x0):_0x2ac51c(_0x48c373=>{const _0x4a42c3=_0x48c373+_0x590f2e,{valid:_0x7936a9,message:_0x111e18}=_0x4617d5(_0x4a42c3);return _0x5d52ee(_0x7936a9?'':_0x111e18||_0x22e073('init.validation.invalidCode')),_0x4a42c3;});}},{'isActive':_0x5e5696}),useEffect(()=>{const _0x53192c=a56_0x36cb;if(!_0xe23886||_0x5e5696)return;const _0x5459cd=resolve(process[_0x53192c(0x154)](),'.lovrabetrc');if(existsSync(_0x5459cd)){_0x3d2623(_0x22e073(_0x53192c(0x134))),setTimeout(()=>process[_0x53192c(0x139)](0x1),0x64);return;}try{const _0x1dae1a=fileURLToPath(import.meta.url),_0x24a5fc=resolve(dirname(_0x1dae1a),_0x53192c(0x132)),_0xd45214=join(_0x24a5fc,_0x53192c(0x137));let _0xd7e50=_0x53192c(0x133);try{const _0x2f9652=JSON['parse'](readFileSync(_0xd45214,_0x53192c(0x159)));_0xd7e50=_0x2f9652[_0x53192c(0x160)]||'1.0.0';}catch(_0x2ee98f){}const _0x1e9742=readConfig(),_0x49bf8b=typeof _0x1e9742[_0x53192c(0x152)]===_0x53192c(0x14f)?_0x1e9742[_0x53192c(0x152)]:undefined,{app:_0xed8675,appcode:_0x252693,..._0x673d01}=_0x1e9742,_0x26f148={..._0x673d01,'appcode':_0xe23886,'env':_0x1ef98c||_0x49bf8b||_0x53192c(0x15a),'createdAt':new Date()[_0x53192c(0x142)](),'version':_0xd7e50};writeFileSync(_0x5459cd,JSON[_0x53192c(0x156)](_0x26f148,null,0x2),{'encoding':'utf8','mode':0x180}),logger[_0x53192c(0x144)](process[_0x53192c(0x154)]()),logger[_0x53192c(0x131)]('init',_0x53192c(0x135),{'appcode':_0xe23886,'env':_0x26f148[_0x53192c(0x152)],'version':_0x26f148['version'],'configPath':_0x5459cd}),_0x5915ee(!![]),setTimeout(()=>process[_0x53192c(0x139)](0x0),0x64);}catch(_0x322d4c){logger['error'](_0x53192c(0x161),_0x53192c(0x136),{'error':_0x322d4c instanceof Error?_0x322d4c[_0x53192c(0x15c)]:String(_0x322d4c)}),_0x3d2623(_0x22e073(_0x53192c(0x14a))+':\x20'+(_0x322d4c instanceof Error?_0x322d4c[_0x53192c(0x15c)]:String(_0x322d4c))),setTimeout(()=>process[_0x53192c(0x139)](0x1),0x64);}},[_0xe23886,_0x5e5696,_0x1ef98c]);if(_0x16854f)return a56_0x10b4f0(Box,{'flexDirection':_0x2c3664(0x15e),'children':a56_0x88591(Text,{'color':'red','children':['✗\x20',_0x16854f]})});if(_0x5e5696)return a56_0x88591(Box,{'flexDirection':_0x2c3664(0x15e),'children':[a56_0x88591(Box,{'children':[a56_0x88591(Text,{'color':'cyan','children':[_0x22e073(_0x2c3664(0x14e)),'\x20']}),_0x1912aa?a56_0x10b4f0(Text,{'color':'green','children':_0x1912aa}):a56_0x10b4f0(Text,{'color':_0x2c3664(0x13b),'children':'_'}),_0x27118d&&a56_0x88591(Text,{'color':_0x2c3664(0x138),'children':[_0x2c3664(0x141),_0x27118d]})]}),!_0x27118d&&!_0x1912aa&&a56_0x10b4f0(Box,{'children':a56_0x10b4f0(Text,{'color':'gray','children':_0x22e073(_0x2c3664(0x140))})})]});if(_0x537009)return a56_0x88591(Box,{'flexDirection':_0x2c3664(0x15e),'children':[a56_0x88591(Text,{'color':_0x2c3664(0x13a),'children':['✓\x20',_0x22e073(_0x2c3664(0x143))]}),a56_0x88591(Text,{'color':_0x2c3664(0x146),'children':[_0x22e073('init.appCodeLabel'),':\x20',_0xe23886]}),a56_0x10b4f0(Text,{'children':_0x22e073(_0x2c3664(0x130))})]});return a56_0x10b4f0(Box,{'children':a56_0x10b4f0(Text,{'children':_0x22e073(_0x2c3664(0x149))})});}
|
package/lib/mcp/McpInstallUI.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x22e379,_0x213b7d){const _0x319818=a57_0x5173,_0x25eec2=_0x22e379();while(!![]){try{const _0x2ac9e1=-parseInt(_0x319818(0x91))/0x1*(parseInt(_0x319818(0xb4))/0x2)+-parseInt(_0x319818(0x86))/0x3*(parseInt(_0x319818(0x9e))/0x4)+-parseInt(_0x319818(0x8b))/0x5+-parseInt(_0x319818(0xab))/0x6*(parseInt(_0x319818(0x90))/0x7)+parseInt(_0x319818(0xaf))/0x8+parseInt(_0x319818(0xa6))/0x9*(parseInt(_0x319818(0xa7))/0xa)+parseInt(_0x319818(0x96))/0xb;if(_0x2ac9e1===_0x213b7d)break;else _0x25eec2['push'](_0x25eec2['shift']());}catch(_0x1d6bd9){_0x25eec2['push'](_0x25eec2['shift']());}}}(a57_0x5324,0x6dfc8));import{jsx as a57_0x12ce83,jsxs as a57_0xd56fed,Fragment as a57_0x227626}from'react/jsx-runtime';import{useState,useEffect,useMemo}from'react';import{Text,Box,useInput,useApp}from'ink';function a57_0x5173(_0x455af8,_0x501e8c){_0x455af8=_0x455af8-0x85;const _0x5324c9=a57_0x5324();let _0x5173ae=_0x5324c9[_0x455af8];return _0x5173ae;}function a57_0x5324(){const _0x7d68fb=['length','mcp.ui.selectedIDE','1354732dhPhve','column','setErrorMsg','getSelectedIDEs','size','manual','message','18885JYzllp','selectedIndexes','cyan','mcp.ui.configuring','error','3163260bHZQiz','mcp.ui.count','mcp.ui.manualRequired','name','every','36015jtSFFJ','1ivtiqZ','yellow','configuring','⚠️\x20','success','27813544tfTXHc','mcp.ui.title','value','mcp.ui.otherIDEDescription','green','from','ide','some','328YOmdWe','mcp.ui.failed','gray','mcp.ui.pressAnyKeyToExit','red','needsManualAction','handleKeyDown','find','18YTzTWJ','1941270dtiXRF','map','done','key','1026IwQTxw','mcp.ui.completed','selecting','mcp.ui.partialManual','1917992qWboIs','status','mcp.ui.selectAtLeastOne'];a57_0x5324=function(){return _0x7d68fb;};return a57_0x5324();}import{MCP_IDES,IDE_CONFIGS}from'../utils/ai_config.js';import{IDESelector,useIDESelection}from'../ui/IDESelector.js';import{installMcp}from'./mcp-installer.js';import{useI18n}from'../i18n/hooks.js';export function McpInstallUI({preselectedIDEs:preselectedIDEs=[],enableBffSave:_0x6d144d}){const _0x51bba7=a57_0x5173,{t:_0x294417}=useI18n(),{exit:_0x49e836}=useApp(),[_0xb202f0,_0x2e8364]=useState('selecting'),[_0x109e6e,_0x2dd878]=useState([]),[_0x4a9611,_0x449187]=useState([]),_0x369b2b=useMemo(()=>[...Array[_0x51bba7(0x9b)](MCP_IDES)['map'](_0x2c4942=>({'key':_0x2c4942,'name':IDE_CONFIGS[_0x2c4942][_0x51bba7(0x8e)],'description':IDE_CONFIGS[_0x2c4942]['description']})),{'key':'other','name':_0x294417('mcp.ui.otherIDE'),'description':_0x294417(_0x51bba7(0x99))}],[_0x294417]),_0x2c77eb=useIDESelection({'ideList':_0x369b2b,'preselectedIDEs':preselectedIDEs,'multiSelect':!![]});useEffect(()=>{const _0x5357a1=_0x51bba7;preselectedIDEs[_0x5357a1(0xb2)]>0x0&&_0x2c77eb[_0x5357a1(0x87)][_0x5357a1(0xb8)]>0x0&&_0x2b2bac();},[]),useInput((_0x33de5f,_0x2836c3)=>{const _0x4d1890=_0x51bba7;if(_0xb202f0===_0x4d1890(0xad)){if(_0x33de5f==='q'||_0x33de5f==='Q'){_0x49e836();return;}if(_0x2836c3['return']){if(_0x2c77eb[_0x4d1890(0x87)][_0x4d1890(0xb8)]===0x0){_0x2c77eb[_0x4d1890(0xb6)](_0x294417(_0x4d1890(0xb1)));return;}_0x2b2bac();return;}_0x2c77eb[_0x4d1890(0xa4)](_0x33de5f,_0x2836c3);}_0xb202f0===_0x4d1890(0xa9)&&_0x49e836();});async function _0x2b2bac(){const _0x399f8a=_0x51bba7,_0x4d3d5b=_0x2c77eb[_0x399f8a(0xb7)]();_0x2dd878([{'label':_0x294417(_0x399f8a(0xb3)),'value':_0x294417(_0x399f8a(0x8c),{'count':_0x2c77eb['selectedIndexes'][_0x399f8a(0xb8)]})}]),_0x2e8364(_0x399f8a(0x93));const _0x3d3fcc=await installMcp(_0x4d3d5b,_0x6d144d),_0x376c0a=_0x3d3fcc[_0x399f8a(0xa8)](_0x55baef=>({'ide':_0x369b2b[_0x399f8a(0xa5)](_0x211cea=>_0x211cea[_0x399f8a(0xaa)]===_0x55baef[_0x399f8a(0x9c)])?.[_0x399f8a(0x8e)]||_0x55baef[_0x399f8a(0x9c)],'status':_0x55baef[_0x399f8a(0xa3)]?_0x399f8a(0xb9):_0x55baef[_0x399f8a(0x95)]?_0x399f8a(0x95):_0x399f8a(0x8a),'message':_0x55baef[_0x399f8a(0x85)]}));_0x449187(_0x376c0a),_0x2e8364(_0x399f8a(0xa9)),setTimeout(()=>{_0x49e836();},0x1388);}return a57_0xd56fed(Box,{'flexDirection':_0x51bba7(0xb5),'marginTop':0x1,'children':[_0xb202f0==='selecting'&&a57_0x12ce83(IDESelector,{'ideList':_0x369b2b,'title':_0x294417(_0x51bba7(0x97)),'selection':_0x2c77eb}),_0xb202f0===_0x51bba7(0x93)&&a57_0xd56fed(a57_0x227626,{'children':[_0x109e6e[_0x51bba7(0xa8)]((_0x1b0eff,_0x5c33ef)=>a57_0xd56fed(Box,{'children':[a57_0xd56fed(Text,{'color':_0x51bba7(0x9a),'children':['√\x20',_0x1b0eff['label'],':\x20']}),a57_0x12ce83(Text,{'color':_0x51bba7(0x88),'children':_0x1b0eff[_0x51bba7(0x98)]})]},_0x5c33ef)),a57_0x12ce83(Box,{'marginTop':0x1,'children':a57_0x12ce83(Text,{'children':_0x294417(_0x51bba7(0x89))})})]}),_0xb202f0===_0x51bba7(0xa9)&&a57_0x12ce83(DoneStep,{'configResults':_0x4a9611})]});}function DoneStep({configResults:_0x4bb602}){const _0x406d82=a57_0x5173,{t:_0x2a76d6}=useI18n(),_0xec5543=_0x4bb602[_0x406d82(0x8f)](_0x275ce6=>_0x275ce6['status']===_0x406d82(0x95)),_0x471787=_0x4bb602[_0x406d82(0x9d)](_0x61e82f=>_0x61e82f[_0x406d82(0xb0)]==='manual'),_0x22810b=_0x4bb602[_0x406d82(0x9d)](_0x5eb1c0=>_0x5eb1c0[_0x406d82(0xb0)]===_0x406d82(0x8a));return a57_0xd56fed(Box,{'flexDirection':_0x406d82(0xb5),'children':[a57_0x12ce83(Box,{'marginTop':0x1,'marginBottom':0x1,'children':_0xec5543?a57_0x12ce83(Text,{'color':_0x406d82(0x9a),'bold':!![],'children':_0x2a76d6(_0x406d82(0xac))}):_0x471787?a57_0x12ce83(Text,{'color':_0x406d82(0x92),'bold':!![],'children':_0x2a76d6(_0x406d82(0xae))}):_0x22810b?a57_0x12ce83(Text,{'color':_0x406d82(0xa2),'bold':!![],'children':_0x2a76d6(_0x406d82(0x9f))}):a57_0x12ce83(Text,{'color':_0x406d82(0x92),'bold':!![],'children':_0x2a76d6(_0x406d82(0x8d))})}),_0x4bb602['map']((_0x19f25a,_0x631a3d)=>{const _0x18b8a9=_0x406d82,_0x460fbb=_0x19f25a[_0x18b8a9(0xb0)]===_0x18b8a9(0x95),_0x20d4f9=_0x19f25a[_0x18b8a9(0xb0)]===_0x18b8a9(0xb9);return a57_0xd56fed(Box,{'flexDirection':_0x18b8a9(0xb5),'marginBottom':0x1,'children':[a57_0x12ce83(Box,{'children':a57_0xd56fed(Text,{'bold':!![],'color':_0x460fbb?_0x18b8a9(0x9a):_0x20d4f9?_0x18b8a9(0x92):_0x18b8a9(0xa2),'children':[_0x460fbb?'✓\x20':_0x20d4f9?_0x18b8a9(0x94):'✗\x20',_0x19f25a[_0x18b8a9(0x9c)],':']})}),a57_0x12ce83(Box,{'paddingLeft':0x3,'flexDirection':_0x18b8a9(0xb5),'children':a57_0x12ce83(Text,{'color':'white','children':_0x19f25a[_0x18b8a9(0x85)]})})]},_0x631a3d);}),a57_0x12ce83(Box,{'marginTop':0x1,'children':a57_0x12ce83(Text,{'color':_0x406d82(0xa0),'children':_0x2a76d6(_0x406d82(0xa1))})})]});}
|
package/lib/mcp/claude.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x2ac250,_0x481e69){const _0xc826dd=a58_0x3053,_0x39e54c=_0x2ac250();while(!![]){try{const _0x4ad3c9=parseInt(_0xc826dd(0xcf))/0x1*(parseInt(_0xc826dd(0xd7))/0x2)+parseInt(_0xc826dd(0xd9))/0x3*(-parseInt(_0xc826dd(0xd3))/0x4)+-parseInt(_0xc826dd(0xd4))/0x5+parseInt(_0xc826dd(0xce))/0x6+parseInt(_0xc826dd(0xdb))/0x7*(parseInt(_0xc826dd(0xd6))/0x8)+parseInt(_0xc826dd(0xd8))/0x9*(parseInt(_0xc826dd(0xd5))/0xa)+-parseInt(_0xc826dd(0xd1))/0xb*(-parseInt(_0xc826dd(0xda))/0xc);if(_0x4ad3c9===_0x481e69)break;else _0x39e54c['push'](_0x39e54c['shift']());}catch(_0x56c66b){_0x39e54c['push'](_0x39e54c['shift']());}}}(a58_0x27d3,0xecc86));function a58_0x3053(_0x1c9d1a,_0x38a904){_0x1c9d1a=_0x1c9d1a-0xce;const _0x27d396=a58_0x27d3();let _0x305374=_0x27d396[_0x1c9d1a];return _0x305374;}import{configureClaudeMcp as a58_0x4a5457}from'./mcp-installer.js';function a58_0x27d3(){const _0x5e9b24=['8971065BSDqDf','19420GPnfYS','1328ApuMHT','2ykUhZu','4734mTKgHp','3azJPnx','11796HyJBQx','11879PnJpSH','cwd','error','log','4425852ejgNpi','302531UteMXD','exit','19547PqkVzu','message','5304332mbXxMZ'];a58_0x27d3=function(){return _0x5e9b24;};return a58_0x27d3();}import a58_0x565e0c from'../i18n/index.js';export async function configureClaudeMcp(){const _0x25b160=a58_0x3053,_0x1211f1=process[_0x25b160(0xdc)](),_0x5331b8=a58_0x4a5457(_0x1211f1);_0x5331b8['success']?(console[_0x25b160(0xde)]('\x0a📋\x20'+_0x5331b8['message']+'\x0a'),process['exit'](0x0)):(console[_0x25b160(0xdd)](a58_0x565e0c['t']('mcp.claudeConfig.error',{'error':_0x5331b8[_0x25b160(0xd2)]})),process[_0x25b160(0xd0)](0x1));}
|
package/lib/mcp/cursor.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x14e6de,_0x59964c){const _0x387803=a59_0x3749,_0x66868a=_0x14e6de();while(!![]){try{const _0x2b3a59=-parseInt(_0x387803(0x114))/0x1+-parseInt(_0x387803(0x11d))/0x2*(-parseInt(_0x387803(0x11b))/0x3)+-parseInt(_0x387803(0x11c))/0x4+parseInt(_0x387803(0x118))/0x5+parseInt(_0x387803(0x11a))/0x6+-parseInt(_0x387803(0x112))/0x7*(-parseInt(_0x387803(0x111))/0x8)+parseInt(_0x387803(0x117))/0x9;if(_0x2b3a59===_0x59964c)break;else _0x66868a['push'](_0x66868a['shift']());}catch(_0x1b0819){_0x66868a['push'](_0x66868a['shift']());}}}(a59_0x5bb1,0x79cc3));import{configureCursorMcp as a59_0x5d4605}from'./mcp-installer.js';function a59_0x5bb1(){const _0x607158=['44115XdEmYU','3772368meGSJT','122NUeYwL','message','log','cwd','275312LbAZga','35bhvkBM','error','848169stqcRK','mcp.cursorConfig.usageHint','exit','1777347FUGMkE','4618565RQRxCC','success','599238shqUrt'];a59_0x5bb1=function(){return _0x607158;};return a59_0x5bb1();}function a59_0x3749(_0x5179cc,_0x1f8ce3){_0x5179cc=_0x5179cc-0x10f;const _0x5bb15e=a59_0x5bb1();let _0x3749d8=_0x5bb15e[_0x5179cc];return _0x3749d8;}import a59_0xcee00c from'../i18n/index.js';export async function configureCursorMcp(){const _0x291b15=a59_0x3749,_0x56ace1=process[_0x291b15(0x110)](),_0x2f7c56=await a59_0x5d4605(_0x56ace1);_0x2f7c56[_0x291b15(0x119)]?(console['log'](a59_0xcee00c['t']('mcp.cursorConfig.success')),console['log'](a59_0xcee00c['t']('mcp.cursorConfig.configInfo')),console[_0x291b15(0x10f)]('\x20\x20'+_0x2f7c56['message']+'\x0a'),console[_0x291b15(0x10f)](a59_0xcee00c['t'](_0x291b15(0x115))),console[_0x291b15(0x10f)](a59_0xcee00c['t']('mcp.cursorConfig.restartRequired')),process[_0x291b15(0x116)](0x0)):(console[_0x291b15(0x113)](a59_0xcee00c['t']('mcp.cursorConfig.error',{'error':_0x2f7c56[_0x291b15(0x11e)]})),process['exit'](0x1));}
|
package/lib/mcp/main.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x36865c,_0x31e150){const _0x237a9a=a60_0xf727,_0x50b0a3=_0x36865c();while(!![]){try{const _0xed2e47=parseInt(_0x237a9a(0x1c9))/0x1*(parseInt(_0x237a9a(0x1d1))/0x2)+parseInt(_0x237a9a(0x1e8))/0x3+-parseInt(_0x237a9a(0x1ef))/0x4*(parseInt(_0x237a9a(0x1ed))/0x5)+-parseInt(_0x237a9a(0x1c8))/0x6+-parseInt(_0x237a9a(0x1ea))/0x7*(-parseInt(_0x237a9a(0x1d9))/0x8)+parseInt(_0x237a9a(0x1f7))/0x9*(-parseInt(_0x237a9a(0x1e6))/0xa)+parseInt(_0x237a9a(0x1dd))/0xb;if(_0xed2e47===_0x31e150)break;else _0x50b0a3['push'](_0x50b0a3['shift']());}catch(_0x185c0d){_0x50b0a3['push'](_0x50b0a3['shift']());}}}(a60_0x17fa,0x65941));import{installMcp}from'./mcp-installer.js';import{logger}from'../utils/logger.js';import{MCP_IDES,IDE_CONFIGS}from'../utils/ai_config.js';function a60_0x17fa(){const _0xaeae58=['toLowerCase','mcp.help.configMethodsDirectCursor','success','10FAYGUz','mcp.help.exampleInstallCursorHint','34560BhrzFe','\x20-\x20','2659573TfHirE','mcp.help.command.help','split','755DnIysI','mcp.error.unsupportedCommand','18996ZRmUdB','setLogPath','mcpCursor','mcp.help.configMethodsInteractive','description','mcp.help.availableCommands','mcp.help.exampleInstall','message','2363103AZtAgh','mcp.help.configGuide','mcp.help.usage.installCursor','mcp.help.exampleInstallHint','4286886mJTDzE','1LQKAFu','mcpClaude','help','mcp.help.examples','--help','exit','claude','mcp.help.title','1563734CJfzVy','mcp.help.usage.install','install','mcp.help.configMethodsInteractiveHint','mcp.help.exampleInstallCursor','\x0a\x20\x20\x20\x20$\x20lovrabet\x20mcp\x20install\x0a','has','ide','8oEqtiI','log','cwd','mcp.help.command.install','10305746NxXUwr','from','error','mcp.help.configMethodsDirect','mcp.help.configMethodsDirectClaude','name'];a60_0x17fa=function(){return _0xaeae58;};return a60_0x17fa();}import a60_0x23baed from'../i18n/index.js';export async function mcpCommand(_0x1ef2db,_0xb93011,_0x5b0736){const _0x34eea0=a60_0xf727;logger[_0x34eea0(0x1f0)](process[_0x34eea0(0x1db)]());if(_0x5b0736?.[_0x34eea0(0x1cb)]||_0x1ef2db===_0x34eea0(0x1cd)){showHelp();return;}_0x1ef2db!==_0x34eea0(0x1d3)&&(console[_0x34eea0(0x1df)](a60_0x23baed['t'](_0x34eea0(0x1ee),{'cmd':_0x1ef2db||'-'})),console['log'](a60_0x23baed['t'](_0x34eea0(0x1f4))),console[_0x34eea0(0x1da)](a60_0x23baed['t'](_0x34eea0(0x1dc))),console[_0x34eea0(0x1da)](a60_0x23baed['t'](_0x34eea0(0x1eb))),logger[_0x34eea0(0x1df)]('mcp',a60_0x23baed['t'](_0x34eea0(0x1ee),{'cmd':_0x1ef2db||'-'})),process[_0x34eea0(0x1ce)](0x1));let _0xb0d938;if(_0x5b0736?.[_0x34eea0(0x1f1)])_0xb0d938='cursor';else{if(_0x5b0736?.[_0x34eea0(0x1ca)])_0xb0d938=_0x34eea0(0x1cf);else{if(_0xb93011?.[0x0]){const _0xa70975=_0xb93011[0x0][_0x34eea0(0x1e3)]();MCP_IDES[_0x34eea0(0x1d7)](_0xa70975)&&(_0xb0d938=_0xa70975);}}}const _0x2271f0=_0xb0d938?[_0xb0d938]:[],_0x37a152=await installMcp(_0x2271f0,_0x5b0736?.['enableBffSave']);for(const _0x2df562 of _0x37a152){const _0x57b339=IDE_CONFIGS[_0x2df562[_0x34eea0(0x1d8)]]?.[_0x34eea0(0x1e2)]||_0x2df562[_0x34eea0(0x1d8)],_0x6e2dc7=_0x2df562['needsManualAction']?'⚠️':_0x2df562[_0x34eea0(0x1e5)]?'✓':'✗',_0x99cb36=_0x2df562[_0x34eea0(0x1e5)]?console[_0x34eea0(0x1da)]:console['error'];_0x99cb36(_0x6e2dc7+'\x20'+_0x57b339+':');const _0x3fe5bd=_0x2df562[_0x34eea0(0x1f6)][_0x34eea0(0x1ec)]('\x0a');for(const _0x30b5bc of _0x3fe5bd){_0x99cb36('\x20\x20'+_0x30b5bc);}console[_0x34eea0(0x1da)]('');}}function a60_0xf727(_0x1a3884,_0xba47d3){_0x1a3884=_0x1a3884-0x1c7;const _0x17fa44=a60_0x17fa();let _0xf72756=_0x17fa44[_0x1a3884];return _0xf72756;}function showHelp(){const _0x3fede7=a60_0xf727;console['log']('\x0a'+a60_0x23baed['t'](_0x3fede7(0x1d0))+'\x0a\x0a'+a60_0x23baed['t']('mcp.help.usage.help')+'\x0a'+a60_0x23baed['t'](_0x3fede7(0x1d2))+'\x0a'+a60_0x23baed['t'](_0x3fede7(0x1f9))+'\x0a'+a60_0x23baed['t']('mcp.help.usage.installClaude')+'\x0a\x0a'+a60_0x23baed['t']('mcp.help.configMethods')+'\x0a'+a60_0x23baed['t'](_0x3fede7(0x1f2))+_0x3fede7(0x1d6)+a60_0x23baed['t'](_0x3fede7(0x1d4))+'\x0a\x0a'+a60_0x23baed['t'](_0x3fede7(0x1e0))+'\x0a'+a60_0x23baed['t'](_0x3fede7(0x1e4))+'\x0a'+a60_0x23baed['t'](_0x3fede7(0x1e1))+'\x0a\x0a'+a60_0x23baed['t']('mcp.help.supportedIDEs')+'\x0a'+Array[_0x3fede7(0x1de)](MCP_IDES)['map']((_0x37d5a2,_0x3138c3)=>'\x20\x20'+(_0x3138c3+0x1)+'.\x20'+IDE_CONFIGS[_0x37d5a2][_0x3fede7(0x1e2)]+_0x3fede7(0x1e9)+IDE_CONFIGS[_0x37d5a2][_0x3fede7(0x1f3)])['join']('\x0a')+'\x0a\x0a'+a60_0x23baed['t'](_0x3fede7(0x1cc))+'\x0a'+a60_0x23baed['t'](_0x3fede7(0x1f5))+'\x0a'+a60_0x23baed['t'](_0x3fede7(0x1c7))+'\x0a\x0a'+a60_0x23baed['t'](_0x3fede7(0x1d5))+'\x0a'+a60_0x23baed['t'](_0x3fede7(0x1e7))+'\x0a\x0a'+a60_0x23baed['t'](_0x3fede7(0x1f8))+'\x0a\x20\x20https://open.lovrabet.com/en/docs/mcp/config-guide\x0a');}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a61_0x1fc606=a61_0x3599;function a61_0x6c01(){const _0x64c818=['1125pTHZXz','3drGogS','info','needsManualAction','mcp.install.completed','420fZaoPu','length','29464mDUvhd','⚠️\x20\x20','log','3216LMmJAq','cwd','ide','2443608XFNCaH','7005036AtGrPn','split','message','1dusEZn','169072wBhEGL','claude','4496415Lzfuza','error','mcp-install-non-interactive','success','some','7401520sqIFfX','11RFfcuT','setLogPath','mcp.install.manualActionRequired','cursor','mcp.install.starting'];a61_0x6c01=function(){return _0x64c818;};return a61_0x6c01();}(function(_0x580673,_0xf241d1){const _0xb37dc8=a61_0x3599,_0x506ec8=_0x580673();while(!![]){try{const _0x481d1a=parseInt(_0xb37dc8(0x82))/0x1*(parseInt(_0xb37dc8(0x83))/0x2)+parseInt(_0xb37dc8(0x91))/0x3*(parseInt(_0xb37dc8(0x9d))/0x4)+parseInt(_0xb37dc8(0x95))/0x5*(parseInt(_0xb37dc8(0x9a))/0x6)+-parseInt(_0xb37dc8(0x85))/0x7+-parseInt(_0xb37dc8(0x97))/0x8*(-parseInt(_0xb37dc8(0x90))/0x9)+-parseInt(_0xb37dc8(0x8a))/0xa+-parseInt(_0xb37dc8(0x8b))/0xb*(-parseInt(_0xb37dc8(0x9e))/0xc);if(_0x481d1a===_0xf241d1)break;else _0x506ec8['push'](_0x506ec8['shift']());}catch(_0x1dc752){_0x506ec8['push'](_0x506ec8['shift']());}}}(a61_0x6c01,0x622ad));import{installMcp}from'./mcp-installer.js';import{logger}from'../utils/logger.js';import a61_0xe0f317 from'../i18n/index.js';function a61_0x3599(_0x140874,_0x1b4229){_0x140874=_0x140874-0x81;const _0x6c0197=a61_0x6c01();let _0x3599a5=_0x6c0197[_0x140874];return _0x3599a5;}export async function installMcpNonInteractive(_0x3c9ff8,_0x444dc7,_0x2cf2b9=process[a61_0x1fc606(0x9b)]()){const _0x1b8dbd=a61_0x1fc606;logger[_0x1b8dbd(0x8c)](_0x2cf2b9),logger[_0x1b8dbd(0x92)](_0x1b8dbd(0x87),a61_0xe0f317['t'](_0x1b8dbd(0x8f)),{'ides':_0x3c9ff8,'enableBffSave':_0x444dc7});const _0x157722=await installMcp(_0x3c9ff8,_0x444dc7,_0x2cf2b9);for(const _0x1976cf of _0x157722){const _0x596a18=_0x1976cf[_0x1b8dbd(0x9c)]===_0x1b8dbd(0x8e)?a61_0xe0f317['t']('mcp.cursor'):_0x1976cf[_0x1b8dbd(0x9c)]===_0x1b8dbd(0x84)?a61_0xe0f317['t']('mcp.claude'):a61_0xe0f317['t']('mcp.install.otherIDE'),_0x5cf6f7=_0x1976cf[_0x1b8dbd(0x93)]?'⚠️':_0x1976cf[_0x1b8dbd(0x88)]?'✓':'✗',_0x1cb652=_0x1976cf['success']?console[_0x1b8dbd(0x99)]:console[_0x1b8dbd(0x86)];_0x1cb652(_0x5cf6f7+'\x20'+_0x596a18+':');const _0x5e5e21=_0x1976cf[_0x1b8dbd(0x81)][_0x1b8dbd(0x9f)]('\x0a');for(const _0x1480b6 of _0x5e5e21){_0x1cb652('\x20\x20'+_0x1480b6);}console[_0x1b8dbd(0x99)]('');}const _0x5ea7d1=_0x157722['filter'](_0x59b0e9=>_0x59b0e9[_0x1b8dbd(0x88)])[_0x1b8dbd(0x96)];console[_0x1b8dbd(0x99)](a61_0xe0f317['t'](_0x1b8dbd(0x94),{'successCount':_0x5ea7d1,'totalCount':_0x157722[_0x1b8dbd(0x96)]})),_0x157722[_0x1b8dbd(0x89)](_0x3205ca=>_0x3205ca['needsManualAction'])?(console[_0x1b8dbd(0x99)](''),console[_0x1b8dbd(0x99)](_0x1b8dbd(0x98)+a61_0xe0f317['t'](_0x1b8dbd(0x8d)))):console[_0x1b8dbd(0x99)]('');}
|
package/lib/mcp/mcp-installer.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const a63_0x28c0b8=a63_0x19dc;function a63_0x19dc(_0x22d3d4,_0x553c0d){_0x22d3d4=_0x22d3d4-0x1be;const _0x3cca98=a63_0x3cca();let _0x19dcec=_0x3cca98[_0x22d3d4];return _0x19dcec;}(function(_0x36ba09,_0x2d09c5){const _0x3ca706=a63_0x19dc,_0xa29aac=_0x36ba09();while(!![]){try{const _0x1277a5=-parseInt(_0x3ca706(0x1dc))/0x1*(-parseInt(_0x3ca706(0x1e7))/0x2)+-parseInt(_0x3ca706(0x1c0))/0x3*(-parseInt(_0x3ca706(0x1e8))/0x4)+parseInt(_0x3ca706(0x1be))/0x5+parseInt(_0x3ca706(0x1fc))/0x6*(-parseInt(_0x3ca706(0x1f2))/0x7)+-parseInt(_0x3ca706(0x1f0))/0x8+parseInt(_0x3ca706(0x1c3))/0x9*(parseInt(_0x3ca706(0x1eb))/0xa)+parseInt(_0x3ca706(0x1e0))/0xb*(-parseInt(_0x3ca706(0x1cb))/0xc);if(_0x1277a5===_0x2d09c5)break;else _0xa29aac['push'](_0xa29aac['shift']());}catch(_0x434393){_0xa29aac['push'](_0xa29aac['shift']());}}}(a63_0x3cca,0x4a643));import{existsSync,mkdirSync,writeFileSync,readFileSync}from'node:fs';import{join,dirname}from'node:path';import{fileURLToPath}from'node:url';import{readConfig}from'../utils/config.js';import{logger}from'../utils/logger.js';import{getRulesContent}from'../utils/rules-cdn.js';import a63_0x53f532 from'../i18n/index.js';const __dirname=dirname(fileURLToPath(import.meta.url));export const MCP_SERVER_NAME='lovrabet-dataset';export const MCP_COMMAND=a63_0x28c0b8(0x1ca);export const MCP_ARGS=[a63_0x28c0b8(0x1e3)];export function getAppConfig(){const _0x196d1b=a63_0x28c0b8,_0xe11415=readConfig(),_0x509a69=_0xe11415[_0x196d1b(0x1d5)]||_0xe11415[_0x196d1b(0x1ec)],_0x3dbfb2=_0xe11415[_0x196d1b(0x1f5)]||_0x196d1b(0x1dd);if(!_0x509a69)throw new Error(a63_0x53f532['t'](_0x196d1b(0x1d2)));return{'appcode':String(_0x509a69),'env':_0x3dbfb2};}export function buildMcpEnv(_0x2a75d6,_0x232297){const _0xe4f6de=a63_0x28c0b8,_0x2bcf75={'LOVRABET_APP_CODE':_0x2a75d6};return _0x232297!==_0xe4f6de(0x1dd)&&(_0x2bcf75[_0xe4f6de(0x1bf)]=_0x232297),_0x2bcf75;}function a63_0x3cca(){const _0x1cf5bb=['message','mcp-cursor','mcp.other.guideShown','852240BidCLr','\x20\x20\x20\x20\x20\x20\x22command\x22:\x20\x22npx\x22,','1199625nIGhyH','lovrabet_rules.mdc','mcp.cursorConfig.rules.created','env','\x0a\x20\x20','\x20\x20\x20\x20\x20\x20\x20\x20','mcp.config.env','mcp-claude','claude\x20mcp\x20add\x20','.cursor','6DdKcdb','utf8','\x20\x20}','\x20\x20\x20\x20\x20\x20\x22env\x22:\x20{','2827565jfdtqr','LOVRABET_ENV','185220iSbhaK','mcp.other.configInfo','mcpServers','405171XRXiUS','mcp.cursorConfig.success','push','AppCode:\x20','mcp.claudeConfig.configInfo','\x20\x20\x20\x20}','stringify','npx','555372WLWkkg','\x22LOVRABET_ENV\x22:\x20\x22','mcp.cursorConfig.error','parse','mcp.claudeConfig.manualCommand','mcp.cursorConfig.updateExisting','\x20\x20\x20\x20\x20\x20\x22args\x22:\x20[\x22@lovrabet/dataset-mcp-server@latest\x22],','mcp.error.missingAppcode','info','error','appcode','mcp.cursorConfig.restartRequired','mcp.claudeConfig.agents.copyFailed','mcp.cursorConfig.rules.copyFailed','agents.md','join','mcp.claudeConfig.agents.exists','1qvdjKt','online','mcp-install','rules','231kqzrNN','mcp.other.configGuide','utf-8','@lovrabet/dataset-mcp-server@latest','\x20\x20\x20\x20\x22lovrabet-dataset\x22:\x20{','\x20\x20\x20\x20\x20\x20}','mcp.claudeConfig.agents.created','684026OVtzJr','4mqsTxq','\x20-e\x20LOVRABET_APP_CODE=','mcp.claudeConfig.restartRequired','130ZFCUlO','app'];a63_0x3cca=function(){return _0x1cf5bb;};return a63_0x3cca();}export function buildMcpServerConfig(_0x28745b,_0x54e20a){return{'command':MCP_COMMAND,'args':MCP_ARGS,'env':buildMcpEnv(_0x28745b,_0x54e20a)};}export function buildClaudeMcpCommand(_0x176af0,_0x3b660d){const _0x2db7cd=a63_0x28c0b8,_0x27322a=_0x2db7cd(0x1fa)+MCP_SERVER_NAME+'\x20'+MCP_COMMAND+'\x20'+MCP_ARGS[_0x2db7cd(0x1da)]('\x20')+_0x2db7cd(0x1e9)+_0x176af0,_0xd34ec5=_0x3b660d!=='online'?'\x20-e\x20LOVRABET_ENV='+_0x3b660d:'';return''+_0x27322a+_0xd34ec5;}export async function copyCursorRules(_0x113115){const _0x5e3102=a63_0x28c0b8,_0x1c861e=join(_0x113115,_0x5e3102(0x1fb)),_0x772466=join(_0x1c861e,_0x5e3102(0x1df)),_0xfa52b7=join(_0x772466,_0x5e3102(0x1f3));if(existsSync(_0xfa52b7))return logger[_0x5e3102(0x1d3)](_0x5e3102(0x1de),a63_0x53f532['t']('mcp.cursorConfig.rules.exists'),{'path':_0xfa52b7}),![];try{ensureDir(_0x772466);const _0x952c91=await getRulesContent();return writeFileSync(_0xfa52b7,_0x952c91,_0x5e3102(0x1e2)),logger[_0x5e3102(0x1d3)](_0x5e3102(0x1de),a63_0x53f532['t'](_0x5e3102(0x1f4)),{'to':_0xfa52b7}),!![];}catch(_0x542cb2){return logger[_0x5e3102(0x1d4)](_0x5e3102(0x1de),a63_0x53f532['t'](_0x5e3102(0x1d8)),{'error':_0x542cb2 instanceof Error?_0x542cb2[_0x5e3102(0x1ed)]:String(_0x542cb2)}),![];}}export async function copyAgentsMd(_0x31acda){const _0x4ed5de=a63_0x28c0b8,_0x3a78f1=join(_0x31acda,_0x4ed5de(0x1d9));if(existsSync(_0x3a78f1))return logger[_0x4ed5de(0x1d3)]('mcp-install',a63_0x53f532['t'](_0x4ed5de(0x1db)),{'path':_0x3a78f1}),![];try{const _0x54b004=await getRulesContent();return writeFileSync(_0x3a78f1,_0x54b004,_0x4ed5de(0x1e2)),logger[_0x4ed5de(0x1d3)](_0x4ed5de(0x1de),a63_0x53f532['t'](_0x4ed5de(0x1e6)),{'to':_0x3a78f1}),!![];}catch(_0x3b320e){return logger[_0x4ed5de(0x1d4)]('mcp-install',a63_0x53f532['t'](_0x4ed5de(0x1d7)),{'error':_0x3b320e instanceof Error?_0x3b320e[_0x4ed5de(0x1ed)]:String(_0x3b320e)}),![];}}export async function configureCursorMcp(_0x1bb9c2){const _0xcd1349=a63_0x28c0b8;try{const {appcode:_0x5189d2,env:_0xabb212}=getAppConfig(),_0x27ec4b=join(_0x1bb9c2,_0xcd1349(0x1fb)),_0x2bb72f=join(_0x27ec4b,'mcp.json');ensureDir(_0x27ec4b);const _0xf43442=buildMcpServerConfig(_0x5189d2,_0xabb212);let _0x5ae0e3;if(existsSync(_0x2bb72f)){const _0x37698b=readFileSync(_0x2bb72f,_0xcd1349(0x1fd));_0x5ae0e3=JSON[_0xcd1349(0x1ce)](_0x37698b),!_0x5ae0e3[_0xcd1349(0x1c2)]&&(_0x5ae0e3[_0xcd1349(0x1c2)]={}),logger['info'](_0xcd1349(0x1ee),a63_0x53f532['t'](_0xcd1349(0x1d0)),{'path':_0x2bb72f,'appcode':_0x5189d2,'env':_0xabb212});}else _0x5ae0e3={'mcpServers':{}},logger['info']('mcp-cursor',a63_0x53f532['t']('mcp.cursorConfig.createNew'),{'path':_0x2bb72f,'appcode':_0x5189d2,'env':_0xabb212});_0x5ae0e3[_0xcd1349(0x1c2)][MCP_SERVER_NAME]=_0xf43442,writeFileSync(_0x2bb72f,JSON[_0xcd1349(0x1c9)](_0x5ae0e3,null,0x2),{'encoding':'utf8'});const _0x5da489=await copyCursorRules(_0x1bb9c2),_0x3a0d43=[a63_0x53f532['t']('mcp.cursorConfig.written'),'AppCode:\x20'+_0x5189d2];return _0xabb212!=='online'&&_0x3a0d43['push'](a63_0x53f532['t'](_0xcd1349(0x1f8),{'env':_0xabb212})),_0x3a0d43[_0xcd1349(0x1c5)](a63_0x53f532['t'](_0xcd1349(0x1d6))),_0x5da489&&_0x3a0d43[_0xcd1349(0x1c5)](a63_0x53f532['t']('mcp.cursorConfig.rules.created')),logger[_0xcd1349(0x1d3)](_0xcd1349(0x1ee),a63_0x53f532['t'](_0xcd1349(0x1c4)),{'appcode':_0x5189d2,'env':_0xabb212,'configPath':_0x2bb72f}),{'success':!![],'message':_0x3a0d43[_0xcd1349(0x1da)](_0xcd1349(0x1f6))};}catch(_0x427761){return logger[_0xcd1349(0x1d4)](_0xcd1349(0x1ee),a63_0x53f532['t'](_0xcd1349(0x1cd),{'error':_0x427761 instanceof Error?_0x427761[_0xcd1349(0x1ed)]:String(_0x427761)}),{'error':_0x427761 instanceof Error?_0x427761['message']:String(_0x427761)}),{'success':![],'message':_0x427761 instanceof Error?_0x427761[_0xcd1349(0x1ed)]:String(_0x427761)};}}export function configureClaudeMcp(_0x43b757){const _0x4be626=a63_0x28c0b8;try{const {appcode:_0x2419e,env:_0x38dde3}=getAppConfig();copyAgentsMd(_0x43b757);const _0x14f228=buildClaudeMcpCommand(_0x2419e,_0x38dde3),_0x313715=[a63_0x53f532['t'](_0x4be626(0x1cf)),''+_0x14f228,a63_0x53f532['t'](_0x4be626(0x1c7)),_0x4be626(0x1c6)+_0x2419e];return _0x38dde3!==_0x4be626(0x1dd)&&_0x313715[_0x4be626(0x1c5)](a63_0x53f532['t'](_0x4be626(0x1f8),{'env':_0x38dde3})),_0x313715['push'](a63_0x53f532['t'](_0x4be626(0x1ea))),logger['info'](_0x4be626(0x1f9),a63_0x53f532['t']('mcp.claudeConfig.commandGenerated'),{'appcode':_0x2419e,'env':_0x38dde3,'command':_0x14f228}),{'success':!![],'message':_0x313715['join'](_0x4be626(0x1f6)),'needsManualAction':!![]};}catch(_0x384971){return logger[_0x4be626(0x1d4)](_0x4be626(0x1f9),a63_0x53f532['t']('mcp.claudeConfig.error',{'error':_0x384971 instanceof Error?_0x384971[_0x4be626(0x1ed)]:String(_0x384971)}),{'error':_0x384971 instanceof Error?_0x384971[_0x4be626(0x1ed)]:String(_0x384971)}),{'success':![],'message':_0x384971 instanceof Error?_0x384971[_0x4be626(0x1ed)]:String(_0x384971)};}}export function showOtherMcpGuide(_0x17b455){const _0xc6f5ff=a63_0x28c0b8;try{const {appcode:_0x11d677,env:_0x4b68fc}=getAppConfig(),_0x756f24=buildMcpServerConfig(_0x11d677,_0x4b68fc),_0xf3a28a=['\x22LOVRABET_APP_CODE\x22:\x20\x22'+_0x11d677+'\x22'];_0x4b68fc!==_0xc6f5ff(0x1dd)&&_0xf3a28a[_0xc6f5ff(0x1c5)](_0xc6f5ff(0x1cc)+_0x4b68fc+'\x22');const _0x563943=[a63_0x53f532['t'](_0xc6f5ff(0x1c1),{'appcode':_0x11d677,'env':_0x4b68fc}),'{','\x20\x20\x22mcpServers\x22:\x20{',_0xc6f5ff(0x1e4),_0xc6f5ff(0x1f1),_0xc6f5ff(0x1d1),_0xc6f5ff(0x1ff),..._0xf3a28a['map'](_0x16f549=>_0xc6f5ff(0x1f7)+_0x16f549+','),_0xc6f5ff(0x1e5),_0xc6f5ff(0x1c8),_0xc6f5ff(0x1fe),'}',a63_0x53f532['t'](_0xc6f5ff(0x1e1))];return logger[_0xc6f5ff(0x1d3)](_0xc6f5ff(0x1de),a63_0x53f532['t'](_0xc6f5ff(0x1ef)),{'appcode':_0x11d677,'env':_0x4b68fc}),{'success':!![],'message':_0x563943[_0xc6f5ff(0x1da)]('\x0a'),'needsManualAction':!![]};}catch(_0x207243){return{'success':![],'message':_0x207243 instanceof Error?_0x207243['message']:String(_0x207243)};}}function ensureDir(_0x3ff991){!existsSync(_0x3ff991)&&mkdirSync(_0x3ff991,{'recursive':!![]});}
|
|
1
|
+
function a62_0x11b9(_0x57f8d3,_0x46d8b9){_0x57f8d3=_0x57f8d3-0xfa;const _0x92cef=a62_0x92ce();let _0x11b98a=_0x92cef[_0x57f8d3];return _0x11b98a;}const a62_0x3c8d4c=a62_0x11b9;(function(_0x5ac06b,_0x50ed3c){const _0x32ce9c=a62_0x11b9,_0x3a4dda=_0x5ac06b();while(!![]){try{const _0x5b8e64=parseInt(_0x32ce9c(0x103))/0x1+-parseInt(_0x32ce9c(0xfa))/0x2*(parseInt(_0x32ce9c(0x11b))/0x3)+parseInt(_0x32ce9c(0x12e))/0x4+-parseInt(_0x32ce9c(0x11e))/0x5*(-parseInt(_0x32ce9c(0x114))/0x6)+-parseInt(_0x32ce9c(0x126))/0x7+-parseInt(_0x32ce9c(0x113))/0x8*(parseInt(_0x32ce9c(0x104))/0x9)+-parseInt(_0x32ce9c(0x138))/0xa*(-parseInt(_0x32ce9c(0x112))/0xb);if(_0x5b8e64===_0x50ed3c)break;else _0x3a4dda['push'](_0x3a4dda['shift']());}catch(_0x3a03e4){_0x3a4dda['push'](_0x3a4dda['shift']());}}}(a62_0x92ce,0x47811));import{existsSync,mkdirSync,writeFileSync,readFileSync}from'node:fs';import{normalizeEnv}from'../constant/env.js';import{join,dirname}from'node:path';import{fileURLToPath}from'node:url';import{readConfig}from'../utils/config.js';import{logger}from'../utils/logger.js';import{getRulesContent}from'../utils/rules-cdn.js';import a62_0x1a07cc from'../i18n/index.js';const __dirname=dirname(fileURLToPath(import.meta.url));export const MCP_SERVER_NAME=a62_0x3c8d4c(0x12b);export const MCP_COMMAND=a62_0x3c8d4c(0x125);export const MCP_ARGS=['@lovrabet/dataset-mcp-server@latest'];export function getAppConfig(){const _0x5788bd=a62_0x3c8d4c,_0xb7ae5a=readConfig(),_0x3afb9f=_0xb7ae5a['appcode']||_0xb7ae5a[_0x5788bd(0x10d)],_0x538a18=normalizeEnv(_0xb7ae5a[_0x5788bd(0x10f)]||'production');if(!_0x3afb9f)throw new Error(a62_0x1a07cc['t'](_0x5788bd(0x13b)));return{'appcode':String(_0x3afb9f),'env':_0x538a18};}export function buildMcpEnv(_0x5d4969,_0x5afc4d){const _0x5592b9=a62_0x3c8d4c,_0xf876ec={'LOVRABET_APP_CODE':_0x5d4969};return _0x5afc4d!==_0x5592b9(0x127)&&(_0xf876ec['LOVRABET_ENV']=_0x5afc4d),_0xf876ec;}export function buildMcpArgs(_0x2783a8){const _0x1b47ff=a62_0x3c8d4c,_0x44e61b=[_0x1b47ff(0x11f)];return _0x2783a8&&_0x44e61b[_0x1b47ff(0x137)](_0x1b47ff(0x13e)),_0x44e61b;}function a62_0x92ce(){const _0x5cb705=['mcp-cursor','\x20\x20\x20\x20\x20\x20}','lovrabet-dataset','\x20-e\x20LOVRABET_ENV=','--------------------------------','1205264KRCscH','\x20\x20\x20\x20\x20\x20\x22env\x22:\x20{','rules','error','mcp-install','mcp.claudeConfig.commandGenerated','mcp.other.guideShown','mcp.claudeConfig.restartRequired','lovrabet_rules.mdc','push','230dwsDKd','other','mcp.cursorConfig.written','mcp.error.missingAppcode','claude\x20mcp\x20add\x20','mcp.cursorConfig.rules.copyFailed','--enable-bff-save','mcpServers','join','mcp.claudeConfig.error','609514rFRsHw','\x22LOVRABET_APP_CODE\x22:\x20\x22','utf-8','mcp.config.env','Unknown\x20IDE:\x20',',\x20env=','mcp.claudeConfig.configInfo','claude','mcp.claudeConfig.agents.exists','470364yadwhD','362763BqxOaN','mcp.json','\x20-e\x20LOVRABET_APP_CODE=','needsManualAction','mcp.other.configInfo','AppCode:\x20','.cursor','mcp.cursorConfig.restartRequired','utf8','app','cwd','env','cursor','stringify','269588EQZyjl','112NceEji','29022SoiGMO','mcp.cursorConfig.updateExisting','mcp.claudeConfig.manualCommand','\x20\x20\x20\x20\x22lovrabet-dataset\x22:\x20{','mcp-claude','map','\x20\x20}','3tGHiae','agents.md','info','410sFSKVU','@lovrabet/dataset-mcp-server@latest','success','\x20\x20\x20\x20\x20\x20\x22args\x22:\x20','message','\x20\x20\x20\x20}','\x20\x20\x20\x20\x20\x20\x22command\x22:\x20\x22npx\x22,','npx','3990434oUVdtP','production','mcp.cursorConfig.rules.created'];a62_0x92ce=function(){return _0x5cb705;};return a62_0x92ce();}export function buildMcpServerConfig(_0x5f42d1,_0x74d13f,_0x4ed101){return{'command':MCP_COMMAND,'args':buildMcpArgs(_0x4ed101),'env':buildMcpEnv(_0x5f42d1,_0x74d13f)};}export function buildClaudeMcpCommand(_0xbd2084,_0x5afe8d,_0x160e80){const _0x3d4a25=a62_0x3c8d4c,_0x311487=buildMcpArgs(_0x160e80),_0x441e74=_0x3d4a25(0x13c)+MCP_SERVER_NAME+'\x20'+MCP_COMMAND+'\x20'+_0x311487[_0x3d4a25(0x140)]('\x20')+_0x3d4a25(0x106)+_0xbd2084,_0x1cb005=_0x5afe8d!=='production'?_0x3d4a25(0x12c)+_0x5afe8d:'';return''+_0x441e74+_0x1cb005;}export async function copyCursorRules(_0x17ccdb){const _0x55f504=a62_0x3c8d4c,_0xda0c16=join(_0x17ccdb,_0x55f504(0x10a)),_0x4bebe6=join(_0xda0c16,_0x55f504(0x130)),_0x44268c=join(_0x4bebe6,_0x55f504(0x136));if(existsSync(_0x44268c))return logger[_0x55f504(0x11d)](_0x55f504(0x132),a62_0x1a07cc['t']('mcp.cursorConfig.rules.exists'),{'path':_0x44268c}),![];try{ensureDir(_0x4bebe6);const _0xb9d1a1=await getRulesContent();return writeFileSync(_0x44268c,_0xb9d1a1,_0x55f504(0xfc)),logger[_0x55f504(0x11d)](_0x55f504(0x132),a62_0x1a07cc['t'](_0x55f504(0x128)),{'to':_0x44268c}),!![];}catch(_0x4c4fd3){return logger[_0x55f504(0x131)](_0x55f504(0x132),a62_0x1a07cc['t'](_0x55f504(0x13d)),{'error':_0x4c4fd3 instanceof Error?_0x4c4fd3['message']:String(_0x4c4fd3)}),![];}}export async function copyAgentsMd(_0x1979f6){const _0x200da2=a62_0x3c8d4c,_0x4e991c=join(_0x1979f6,_0x200da2(0x11c));if(existsSync(_0x4e991c))return logger[_0x200da2(0x11d)](_0x200da2(0x132),a62_0x1a07cc['t'](_0x200da2(0x102)),{'path':_0x4e991c}),![];try{const _0x2b031b=await getRulesContent();return writeFileSync(_0x4e991c,_0x2b031b,'utf-8'),logger[_0x200da2(0x11d)](_0x200da2(0x132),a62_0x1a07cc['t']('mcp.claudeConfig.agents.created'),{'to':_0x4e991c}),!![];}catch(_0x454a7c){return logger['error'](_0x200da2(0x132),a62_0x1a07cc['t']('mcp.claudeConfig.agents.copyFailed'),{'error':_0x454a7c instanceof Error?_0x454a7c['message']:String(_0x454a7c)}),![];}}export async function configureCursorMcp(_0x1c0a9f,_0x2198ae){const _0x25f598=a62_0x3c8d4c;try{const {appcode:_0x11b47c,env:_0x56548e}=getAppConfig(),_0x2fb9c1=join(_0x1c0a9f,'.cursor'),_0x2ca145=join(_0x2fb9c1,_0x25f598(0x105));ensureDir(_0x2fb9c1);const _0x5d5a2a=buildMcpServerConfig(_0x11b47c,_0x56548e,_0x2198ae);let _0x3527eb;if(existsSync(_0x2ca145)){const _0x4f7830=readFileSync(_0x2ca145,_0x25f598(0x10c));_0x3527eb=JSON['parse'](_0x4f7830),!_0x3527eb['mcpServers']&&(_0x3527eb[_0x25f598(0x13f)]={}),logger[_0x25f598(0x11d)](_0x25f598(0x129),a62_0x1a07cc['t'](_0x25f598(0x115)),{'path':_0x2ca145,'appcode':_0x11b47c,'env':_0x56548e});}else _0x3527eb={'mcpServers':{}},logger[_0x25f598(0x11d)](_0x25f598(0x129),a62_0x1a07cc['t']('mcp.cursorConfig.createNew'),{'path':_0x2ca145,'appcode':_0x11b47c,'env':_0x56548e});_0x3527eb[_0x25f598(0x13f)][MCP_SERVER_NAME]=_0x5d5a2a,writeFileSync(_0x2ca145,JSON[_0x25f598(0x111)](_0x3527eb,null,0x2),{'encoding':'utf8'});const _0x1e7989=await copyCursorRules(_0x1c0a9f),_0x4401ee=[a62_0x1a07cc['t'](_0x25f598(0x13a)),_0x25f598(0x109)+_0x11b47c];return _0x56548e!==_0x25f598(0x127)&&_0x4401ee[_0x25f598(0x137)](a62_0x1a07cc['t'](_0x25f598(0xfd),{'env':_0x56548e})),_0x4401ee[_0x25f598(0x137)](a62_0x1a07cc['t'](_0x25f598(0x10b))),_0x1e7989&&_0x4401ee['push'](a62_0x1a07cc['t'](_0x25f598(0x128))),logger[_0x25f598(0x11d)](_0x25f598(0x129),a62_0x1a07cc['t']('mcp.cursorConfig.success'),{'appcode':_0x11b47c,'env':_0x56548e,'configPath':_0x2ca145}),{'success':!![],'message':_0x4401ee[_0x25f598(0x140)]('\x0a')};}catch(_0x4315fc){return logger[_0x25f598(0x131)]('mcp-cursor',a62_0x1a07cc['t']('mcp.cursorConfig.error',{'error':_0x4315fc instanceof Error?_0x4315fc[_0x25f598(0x122)]:String(_0x4315fc)}),{'error':_0x4315fc instanceof Error?_0x4315fc[_0x25f598(0x122)]:String(_0x4315fc)}),{'success':![],'message':_0x4315fc instanceof Error?_0x4315fc[_0x25f598(0x122)]:String(_0x4315fc)};}}export function configureClaudeMcp(_0x143d9a,_0x3eed85){const _0x1b1de1=a62_0x3c8d4c;try{const {appcode:_0xd9950a,env:_0x369afd}=getAppConfig();copyAgentsMd(_0x143d9a);const _0x5bd78e=buildMcpArgs(_0x3eed85),_0x21c2c4=_0x1b1de1(0x13c)+MCP_SERVER_NAME+'\x20'+MCP_COMMAND+'\x20'+_0x5bd78e[_0x1b1de1(0x140)]('\x20')+'\x20-e\x20LOVRABET_APP_CODE='+_0xd9950a,_0x5c275e=_0x369afd!==_0x1b1de1(0x127)?_0x1b1de1(0x12c)+_0x369afd:'',_0x37521d=''+_0x21c2c4+_0x5c275e,_0x5db4c=[a62_0x1a07cc['t'](_0x1b1de1(0x116)),_0x1b1de1(0x12d),''+_0x37521d,_0x1b1de1(0x12d),a62_0x1a07cc['t'](_0x1b1de1(0x100)),'AppCode:\x20'+_0xd9950a];return _0x369afd!=='production'&&_0x5db4c[_0x1b1de1(0x137)](a62_0x1a07cc['t']('mcp.config.env',{'env':_0x369afd})),_0x5db4c['push'](a62_0x1a07cc['t'](_0x1b1de1(0x135))),logger[_0x1b1de1(0x11d)](_0x1b1de1(0x118),a62_0x1a07cc['t'](_0x1b1de1(0x133)),{'appcode':_0xd9950a,'env':_0x369afd,'command':_0x37521d}),{'success':!![],'message':_0x5db4c[_0x1b1de1(0x140)]('\x0a'),'needsManualAction':!![]};}catch(_0x57af55){return logger[_0x1b1de1(0x131)](_0x1b1de1(0x118),a62_0x1a07cc['t'](_0x1b1de1(0x141),{'error':_0x57af55 instanceof Error?_0x57af55['message']:String(_0x57af55)}),{'error':_0x57af55 instanceof Error?_0x57af55[_0x1b1de1(0x122)]:String(_0x57af55)}),{'success':![],'message':_0x57af55 instanceof Error?_0x57af55['message']:String(_0x57af55)};}}export function showOtherMcpGuide(_0x3eb02e,_0x1a3283){const _0x5093fd=a62_0x3c8d4c;try{const {appcode:_0x197ee0,env:_0x5376f1}=getAppConfig(),_0x3ec771=buildMcpServerConfig(_0x197ee0,_0x5376f1,_0x1a3283),_0x123d96=buildMcpArgs(_0x1a3283),_0x45cf30=[_0x5093fd(0xfb)+_0x197ee0+'\x22'];_0x5376f1!=='production'&&_0x45cf30[_0x5093fd(0x137)]('\x22LOVRABET_ENV\x22:\x20\x22'+_0x5376f1+'\x22');const _0x2bf072=[a62_0x1a07cc['t'](_0x5093fd(0x108),{'appcode':_0x197ee0,'envSuffix':_0x5376f1!=='production'?_0x5093fd(0xff)+_0x5376f1:''}),'{','\x20\x20\x22mcpServers\x22:\x20{',_0x5093fd(0x117),_0x5093fd(0x124),_0x5093fd(0x121)+JSON[_0x5093fd(0x111)](_0x123d96)+',',_0x5093fd(0x12f),..._0x45cf30[_0x5093fd(0x119)](_0x546384=>'\x20\x20\x20\x20\x20\x20\x20\x20'+_0x546384+','),_0x5093fd(0x12a),_0x5093fd(0x123),_0x5093fd(0x11a),'}',a62_0x1a07cc['t']('mcp.other.configGuide')];return logger[_0x5093fd(0x11d)](_0x5093fd(0x132),a62_0x1a07cc['t'](_0x5093fd(0x134)),{'appcode':_0x197ee0,'env':_0x5376f1}),{'success':!![],'message':_0x2bf072[_0x5093fd(0x140)]('\x0a'),'needsManualAction':!![]};}catch(_0x6e4a36){return{'success':![],'message':_0x6e4a36 instanceof Error?_0x6e4a36[_0x5093fd(0x122)]:String(_0x6e4a36)};}}function ensureDir(_0x57ef9c){!existsSync(_0x57ef9c)&&mkdirSync(_0x57ef9c,{'recursive':!![]});}export async function installMcp(_0x3637b6,_0x113e45,_0x2739b2=process[a62_0x3c8d4c(0x10e)]()){const _0x17d753=a62_0x3c8d4c,_0x132944=[];for(const _0x2941da of _0x3637b6){try{let _0x2f5bfe;switch(_0x2941da){case _0x17d753(0x110):_0x2f5bfe=await configureCursorMcp(_0x2739b2,_0x113e45);break;case _0x17d753(0x101):_0x2f5bfe=configureClaudeMcp(_0x2739b2,_0x113e45);break;case _0x17d753(0x139):_0x2f5bfe=showOtherMcpGuide(_0x2739b2,_0x113e45);break;default:_0x2f5bfe={'success':![],'message':_0x17d753(0xfe)+_0x2941da};}_0x132944[_0x17d753(0x137)]({'ide':_0x2941da,'success':_0x2f5bfe[_0x17d753(0x120)],'message':_0x2f5bfe[_0x17d753(0x122)],'needsManualAction':_0x2f5bfe[_0x17d753(0x107)]});}catch(_0x4f7dea){_0x132944[_0x17d753(0x137)]({'ide':_0x2941da,'success':![],'message':_0x4f7dea instanceof Error?_0x4f7dea[_0x17d753(0x122)]:String(_0x4f7dea)});}}return _0x132944;}
|