[{"data":1,"prerenderedAt":1395},["ShallowReactive",2],{"navigation_docs":3,"-apps-use-mcp-app":282,"-apps-use-mcp-app-surround":1390},[4,40,70,99,122,156,189,253],{"title":5,"path":6,"stem":7,"children":8,"page":39},"入门指南","\u002Fgetting-started","1.getting-started",[9,14,19,24,29,34],{"title":10,"path":11,"stem":12,"icon":13},"简介","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-book-open",{"title":15,"path":16,"stem":17,"icon":18},"安装","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"配置","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F3.configuration","i-lucide-settings",{"title":25,"path":26,"stem":27,"icon":28},"Inspector","\u002Fgetting-started\u002Finspector","1.getting-started\u002F4.inspector","i-lucide-circuit-board",{"title":30,"path":31,"stem":32,"icon":33},"Connection","\u002Fgetting-started\u002Fconnection","1.getting-started\u002F5.connection","i-lucide-plug",{"title":35,"path":36,"stem":37,"icon":38},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F6.agent-skills","i-lucide-sparkles",false,{"title":41,"path":42,"stem":43,"children":44,"page":39},"工具","\u002Ftools","2.tools",[45,50,55,60,65],{"title":46,"path":47,"stem":48,"icon":49},"概览","\u002Ftools\u002Foverview","2.tools\u002F0.overview","i-lucide-wrench",{"title":51,"path":52,"stem":53,"icon":54},"Schema, handler & returns","\u002Ftools\u002Fschema-handler","2.tools\u002F1.schema-handler","i-lucide-braces",{"title":56,"path":57,"stem":58,"icon":59},"注释与输入示例","\u002Ftools\u002Fannotations","2.tools\u002F2.annotations","i-lucide-badge-info",{"title":61,"path":62,"stem":63,"icon":64},"错误与缓存","\u002Ftools\u002Ferrors-caching","2.tools\u002F3.errors-caching","i-lucide-shield",{"title":66,"path":67,"stem":68,"icon":69},"分组、文件与动态注册","\u002Ftools\u002Fgroups-organization","2.tools\u002F4.groups-organization","i-lucide-tags",{"title":71,"path":72,"stem":73,"children":74,"page":39},"资源","\u002Fresources","3.resources",[75,79,84,89,94],{"title":46,"path":76,"stem":77,"icon":78},"\u002Fresources\u002Foverview","3.resources\u002F0.overview","i-lucide-package",{"title":80,"path":81,"stem":82,"icon":83},"静态资源与结构","\u002Fresources\u002Fstatic-and-structure","3.resources\u002F1.static-and-structure","i-lucide-file-stack",{"title":85,"path":86,"stem":87,"icon":88},"模板与处理程序","\u002Fresources\u002Ftemplates-and-handlers","3.resources\u002F2.templates-and-handlers","i-lucide-git-branch",{"title":90,"path":91,"stem":92,"icon":93},"元数据、内容与错误","\u002Fresources\u002Fcontent-metadata-errors","3.resources\u002F3.content-metadata-errors","i-lucide-layers",{"title":95,"path":96,"stem":97,"icon":98},"分组与组织","\u002Fresources\u002Forganization","3.resources\u002F4.organization","i-lucide-folder-tree",{"title":100,"path":101,"stem":102,"children":103,"page":39},"提示词","\u002Fprompts","4.prompts",[104,108,113,117],{"title":46,"path":105,"stem":106,"icon":107},"\u002Fprompts\u002Foverview","4.prompts\u002F0.overview","i-lucide-message-square",{"title":109,"path":110,"stem":111,"icon":112},"编写与结构","\u002Fprompts\u002Fauthoring","4.prompts\u002F1.authoring","i-lucide-pen-line",{"title":114,"path":115,"stem":116,"icon":93},"输入、处理器与消息","\u002Fprompts\u002Finput-handler-messages","4.prompts\u002F2.input-handler-messages",{"title":118,"path":119,"stem":120,"icon":121},"模式与高级用法","\u002Fprompts\u002Fpatterns-advanced","4.prompts\u002F3.patterns-advanced","i-lucide-line-chart",{"title":123,"path":124,"stem":125,"children":126,"page":39},"处理器","\u002Fhandlers","5.handlers",[127,131,136,141,146,151],{"title":46,"path":128,"stem":129,"icon":130},"\u002Fhandlers\u002Foverview","5.handlers\u002F0.overview","i-lucide-server",{"title":132,"path":133,"stem":134,"icon":135},"默认与自定义处理器","\u002Fhandlers\u002Fdefault-and-custom","5.handlers\u002F1.default-and-custom","i-lucide-toggle-left",{"title":137,"path":138,"stem":139,"icon":140},"结构与选项","\u002Fhandlers\u002Fstructure-and-options","5.handlers\u002F2.structure-and-options","i-lucide-sliders-horizontal",{"title":142,"path":143,"stem":144,"icon":145},"示例与路由","\u002Fhandlers\u002Fexamples-routing","5.handlers\u002F3.examples-routing","i-lucide-route",{"title":147,"path":148,"stem":149,"icon":150},"分享与实践","\u002Fhandlers\u002Fsharing-practices","5.handlers\u002F4.sharing-practices","i-lucide-share-2",{"title":152,"path":153,"stem":154,"icon":155},"多处理器组织","\u002Fhandlers\u002Forganization","5.handlers\u002F5.organization","i-lucide-network",{"title":157,"path":158,"stem":159,"children":160,"page":39},"应用","\u002Fapps","6.apps",[161,165,170,175,179,184],{"title":46,"path":162,"stem":163,"icon":164},"\u002Fapps\u002Foverview","6.apps\u002F0.overview","i-lucide-app-window",{"title":166,"path":167,"stem":168,"icon":169},"编写与 defineMcpApp","\u002Fapps\u002Fauthoring","6.apps\u002F1.authoring","i-lucide-code-2",{"title":171,"path":172,"stem":173,"icon":174},"useMcpApp() 桥接","\u002Fapps\u002Fuse-mcp-app","6.apps\u002F2.use-mcp-app","i-lucide-message-circle",{"title":176,"path":177,"stem":178,"icon":64},"CSP 与构建流水线","\u002Fapps\u002Fcsp-and-wiring","6.apps\u002F3.csp-and-wiring",{"title":180,"path":181,"stem":182,"icon":183},"测试与发布","\u002Fapps\u002Ftesting-publishing","6.apps\u002F4.testing-publishing","i-lucide-rocket",{"title":185,"path":186,"stem":187,"icon":188},"模式与限制","\u002Fapps\u002Fpatterns-reference","6.apps\u002F5.patterns-reference","i-lucide-book-marked",{"title":190,"path":191,"stem":192,"children":193,"page":39},"进阶主题","\u002Fadvanced","7.advanced",[194,199,204,209,214,218,223,228,233,238,243,248],{"title":195,"path":196,"stem":197,"icon":198},"自定义路径","\u002Fadvanced\u002Fcustom-paths","7.advanced\u002F1.custom-paths","i-lucide-folder",{"title":200,"path":201,"stem":202,"icon":203},"日志","\u002Fadvanced\u002Flogging","7.advanced\u002F10.logging","i-lucide-scroll-text",{"title":205,"path":206,"stem":207,"icon":208},"MCP Apps 内部机制","\u002Fadvanced\u002Fmcp-apps-internals","7.advanced\u002F11.mcp-apps-internals","i-lucide-cog",{"title":210,"path":211,"stem":212,"icon":213},"列出定义","\u002Fadvanced\u002Flisting-definitions","7.advanced\u002F12.listing-definitions","i-lucide-list",{"title":215,"path":216,"stem":217,"icon":64},"Middleware","\u002Fadvanced\u002Fmiddleware","7.advanced\u002F2.middleware",{"title":219,"path":220,"stem":221,"icon":222},"TypeScript","\u002Fadvanced\u002Ftypescript","7.advanced\u002F3.typescript","i-lucide-type",{"title":224,"path":225,"stem":226,"icon":227},"Hooks","\u002Fadvanced\u002Fhooks","7.advanced\u002F4.hooks","i-lucide-webhook",{"title":229,"path":230,"stem":231,"icon":232},"MCP 评估","\u002Fadvanced\u002Fevals","7.advanced\u002F5.evals","i-lucide-flask-conical",{"title":234,"path":235,"stem":236,"icon":237},"会话","\u002Fadvanced\u002Fsessions","7.advanced\u002F6.sessions","i-lucide-database",{"title":239,"path":240,"stem":241,"icon":242},"动态定义","\u002Fadvanced\u002Fdynamic-definitions","7.advanced\u002F7.dynamic-definitions","i-lucide-toggle-right",{"title":244,"path":245,"stem":246,"icon":247},"代码模式 (Code Mode)","\u002Fadvanced\u002Fcode-mode","7.advanced\u002F8.code-mode","i-lucide-code",{"title":249,"path":250,"stem":251,"icon":252},"启发式询问","\u002Fadvanced\u002Felicitation","7.advanced\u002F9.elicitation","i-lucide-message-square-quote",{"title":254,"path":255,"stem":256,"children":257,"page":39},"示例","\u002Fexamples","8.examples",[258,263,268,273,278],{"title":259,"path":260,"stem":261,"icon":262},"身份验证","\u002Fexamples\u002Fauthentication","8.examples\u002F1.authentication","i-lucide-shield-check",{"title":264,"path":265,"stem":266,"icon":267},"API 集成","\u002Fexamples\u002Fapi-integration","8.examples\u002F2.api-integration","i-lucide-globe",{"title":269,"path":270,"stem":271,"icon":272},"常见模式","\u002Fexamples\u002Fcommon-patterns","8.examples\u002F3.common-patterns","i-lucide-lightbulb",{"title":274,"path":275,"stem":276,"icon":277},"文件操作","\u002Fexamples\u002Ffile-operations","8.examples\u002F4.file-operations","i-lucide-file",{"title":279,"path":280,"stem":281,"icon":107},"提示词示例","\u002Fexamples\u002Fprompt-examples","8.examples\u002F5.prompt-examples",{"id":283,"title":171,"body":284,"description":1381,"extension":1382,"links":1383,"meta":1384,"navigation":1385,"path":172,"seo":1386,"stem":173,"__hash__":1389},"docs\u002F6.apps\u002F2.use-mcp-app.md",{"type":285,"value":286,"toc":1369},"minimark",[287,295,304,443,446,457,490,598,604,614,793,1001,1013,1020,1023,1108,1115,1124,1131,1136,1268,1271,1277,1284,1355,1365],[288,289,291],"h2",{"id":290},"usemcpapp",[292,293,294],"code",{},"useMcpApp()",[296,297,298,299,303],"p",{},"唯一的客户端组合式函数，",[300,301,302],"strong",{},"会自动导入到每个 MCP App SFC 中","。它返回 iframe 与主机通信所需的一切：",[305,306,311],"pre",{"className":307,"code":308,"language":309,"meta":310,"style":310},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const {\n  data,         \u002F\u002F Ref\u003CT | null>          — 从 structuredContent 水合而来，由 callTool 刷新\n  loading,      \u002F\u002F Ref\u003Cboolean>           — 在首个有效载荷到达前始终为 true\n  error,        \u002F\u002F Ref\u003CError | null>      — 桥接 \u002F 传输 \u002F 有效载荷错误\n  pending,      \u002F\u002F Ref\u003Cboolean>           — 当 callTool() 正在执行时为 true\n  hostContext,  \u002F\u002F Ref\u003CHostContext | null> — 主题、显示模式、区域设置，…\n  callTool,     \u002F\u002F (name, params?) => Promise\u003CT | null> — 重新调用任意 MCP 工具\n  sendPrompt,   \u002F\u002F (prompt: string) => void              — 向聊天中发送一条消息\n  openLink,     \u002F\u002F (url: string) => void                 — 请求主机打开一个 URL\n} = useMcpApp\u003CMyPayload>()\n","ts","",[292,312,313,326,340,351,362,373,384,395,406,417],{"__ignoreMap":310},[314,315,318,322],"span",{"class":316,"line":317},"line",1,[314,319,321],{"class":320},"spNyl","const",[314,323,325],{"class":324},"sMK4o"," {\n",[314,327,329,333,336],{"class":316,"line":328},2,[314,330,332],{"class":331},"sTEyZ","  data",[314,334,335],{"class":324},",",[314,337,339],{"class":338},"sHwdD","         \u002F\u002F Ref\u003CT | null>          — 从 structuredContent 水合而来，由 callTool 刷新\n",[314,341,343,346,348],{"class":316,"line":342},3,[314,344,345],{"class":331},"  loading",[314,347,335],{"class":324},[314,349,350],{"class":338},"      \u002F\u002F Ref\u003Cboolean>           — 在首个有效载荷到达前始终为 true\n",[314,352,354,357,359],{"class":316,"line":353},4,[314,355,356],{"class":331},"  error",[314,358,335],{"class":324},[314,360,361],{"class":338},"        \u002F\u002F Ref\u003CError | null>      — 桥接 \u002F 传输 \u002F 有效载荷错误\n",[314,363,365,368,370],{"class":316,"line":364},5,[314,366,367],{"class":331},"  pending",[314,369,335],{"class":324},[314,371,372],{"class":338},"      \u002F\u002F Ref\u003Cboolean>           — 当 callTool() 正在执行时为 true\n",[314,374,376,379,381],{"class":316,"line":375},6,[314,377,378],{"class":331},"  hostContext",[314,380,335],{"class":324},[314,382,383],{"class":338},"  \u002F\u002F Ref\u003CHostContext | null> — 主题、显示模式、区域设置，…\n",[314,385,387,390,392],{"class":316,"line":386},7,[314,388,389],{"class":331},"  callTool",[314,391,335],{"class":324},[314,393,394],{"class":338},"     \u002F\u002F (name, params?) => Promise\u003CT | null> — 重新调用任意 MCP 工具\n",[314,396,398,401,403],{"class":316,"line":397},8,[314,399,400],{"class":331},"  sendPrompt",[314,402,335],{"class":324},[314,404,405],{"class":338},"   \u002F\u002F (prompt: string) => void              — 向聊天中发送一条消息\n",[314,407,409,412,414],{"class":316,"line":408},9,[314,410,411],{"class":331},"  openLink",[314,413,335],{"class":324},[314,415,416],{"class":338},"     \u002F\u002F (url: string) => void                 — 请求主机打开一个 URL\n",[314,418,420,423,426,430,433,437,440],{"class":316,"line":419},10,[314,421,422],{"class":324},"}",[314,424,425],{"class":324}," =",[314,427,429],{"class":428},"s2Zo4"," useMcpApp",[314,431,432],{"class":324},"\u003C",[314,434,436],{"class":435},"sBMFI","MyPayload",[314,438,439],{"class":324},">",[314,441,442],{"class":331},"()\n",[296,444,445],{},"将你的有效载荷类型作为泛型传入，以便下游获得完整推断。",[447,448,450,453,454],"h3",{"id":449},"data-和-loading",[292,451,452],{},"data"," 和 ",[292,455,456],{},"loading",[296,458,459,460,463,464,466,467,470,471,473,474,477,478,481,482,485,486,489],{},"当处理程序返回 ",[292,461,462],{},"structuredContent"," 时，",[292,465,452],{}," 在",[300,468,469],{},"首次渲染时就已经填充","。",[292,472,456],{}," 初始为 ",[292,475,476],{},"true","，在首个有效载荷到达后变为 ",[292,479,480],{},"false","。对于进行中的 ",[292,483,484],{},"callTool()"," 刷新，请使用 ",[292,487,488],{},"pending","：",[305,491,495],{"className":492,"code":493,"language":494,"meta":310,"style":310},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Ctemplate>\n  \u003Csection v-if=\"loading\" class=\"skeleton\" \u002F>\n  \u003Csection v-else-if=\"data\" class=\"content\">\n    {{ data.swatches.length }} 个色板，来自 {{ data.base }}\n  \u003C\u002Fsection>\n\u003C\u002Ftemplate>\n","vue",[292,496,497,508,545,575,580,589],{"__ignoreMap":310},[314,498,499,501,505],{"class":316,"line":317},[314,500,432],{"class":324},[314,502,504],{"class":503},"swJcz","template",[314,506,507],{"class":324},">\n",[314,509,510,513,516,519,522,525,528,530,533,535,537,540,542],{"class":316,"line":328},[314,511,512],{"class":324},"  \u003C",[314,514,515],{"class":503},"section",[314,517,518],{"class":320}," v-if",[314,520,521],{"class":324},"=",[314,523,524],{"class":324},"\"",[314,526,456],{"class":527},"sfazB",[314,529,524],{"class":324},[314,531,532],{"class":320}," class",[314,534,521],{"class":324},[314,536,524],{"class":324},[314,538,539],{"class":527},"skeleton",[314,541,524],{"class":324},[314,543,544],{"class":324}," \u002F>\n",[314,546,547,549,551,554,556,558,560,562,564,566,568,571,573],{"class":316,"line":342},[314,548,512],{"class":324},[314,550,515],{"class":503},[314,552,553],{"class":320}," v-else-if",[314,555,521],{"class":324},[314,557,524],{"class":324},[314,559,452],{"class":527},[314,561,524],{"class":324},[314,563,532],{"class":320},[314,565,521],{"class":324},[314,567,524],{"class":324},[314,569,570],{"class":527},"content",[314,572,524],{"class":324},[314,574,507],{"class":324},[314,576,577],{"class":316,"line":353},[314,578,579],{"class":331},"    {{ data.swatches.length }} 个色板，来自 {{ data.base }}\n",[314,581,582,585,587],{"class":316,"line":364},[314,583,584],{"class":324},"  \u003C\u002F",[314,586,515],{"class":503},[314,588,507],{"class":324},[314,590,591,594,596],{"class":316,"line":375},[314,592,593],{"class":324},"\u003C\u002F",[314,595,504],{"class":503},[314,597,507],{"class":324},[447,599,601],{"id":600},"hostcontext",[292,602,603],{},"hostContext",[296,605,606,607,610,611,489],{},"在 ",[292,608,609],{},"ui\u002Finitialize"," 握手期间，主机会向 iframe 传递一个上下文对象。用它来",[300,612,613],{},"适配深色模式、全屏或固定的 iframe 尺寸",[305,615,617],{"className":307,"code":616,"language":309,"meta":310,"style":310},"interface HostContext {\n  theme?: 'light' | 'dark'\n  displayMode?: 'inline' | 'fullscreen' | 'pip'\n  containerDimensions?: { width?: number, height?: number, maxWidth?: number, maxHeight?: number }\n  locale?: string\n  timeZone?: string\n  platform?: 'web' | 'desktop' | 'mobile'\n}\n",[292,618,619,629,657,689,737,747,756,788],{"__ignoreMap":310},[314,620,621,624,627],{"class":316,"line":317},[314,622,623],{"class":320},"interface",[314,625,626],{"class":435}," HostContext",[314,628,325],{"class":324},[314,630,631,634,637,640,643,646,649,651,654],{"class":316,"line":328},[314,632,633],{"class":503},"  theme",[314,635,636],{"class":324},"?:",[314,638,639],{"class":324}," '",[314,641,642],{"class":527},"light",[314,644,645],{"class":324},"'",[314,647,648],{"class":324}," |",[314,650,639],{"class":324},[314,652,653],{"class":527},"dark",[314,655,656],{"class":324},"'\n",[314,658,659,662,664,666,669,671,673,675,678,680,682,684,687],{"class":316,"line":342},[314,660,661],{"class":503},"  displayMode",[314,663,636],{"class":324},[314,665,639],{"class":324},[314,667,668],{"class":527},"inline",[314,670,645],{"class":324},[314,672,648],{"class":324},[314,674,639],{"class":324},[314,676,677],{"class":527},"fullscreen",[314,679,645],{"class":324},[314,681,648],{"class":324},[314,683,639],{"class":324},[314,685,686],{"class":527},"pip",[314,688,656],{"class":324},[314,690,691,694,696,699,702,704,707,709,712,714,716,718,721,723,725,727,730,732,734],{"class":316,"line":353},[314,692,693],{"class":503},"  containerDimensions",[314,695,636],{"class":324},[314,697,698],{"class":324}," {",[314,700,701],{"class":503}," width",[314,703,636],{"class":324},[314,705,706],{"class":435}," number",[314,708,335],{"class":324},[314,710,711],{"class":503}," height",[314,713,636],{"class":324},[314,715,706],{"class":435},[314,717,335],{"class":324},[314,719,720],{"class":503}," maxWidth",[314,722,636],{"class":324},[314,724,706],{"class":435},[314,726,335],{"class":324},[314,728,729],{"class":503}," maxHeight",[314,731,636],{"class":324},[314,733,706],{"class":435},[314,735,736],{"class":324}," }\n",[314,738,739,742,744],{"class":316,"line":364},[314,740,741],{"class":503},"  locale",[314,743,636],{"class":324},[314,745,746],{"class":435}," string\n",[314,748,749,752,754],{"class":316,"line":375},[314,750,751],{"class":503},"  timeZone",[314,753,636],{"class":324},[314,755,746],{"class":435},[314,757,758,761,763,765,768,770,772,774,777,779,781,783,786],{"class":316,"line":386},[314,759,760],{"class":503},"  platform",[314,762,636],{"class":324},[314,764,639],{"class":324},[314,766,767],{"class":527},"web",[314,769,645],{"class":324},[314,771,648],{"class":324},[314,773,639],{"class":324},[314,775,776],{"class":527},"desktop",[314,778,645],{"class":324},[314,780,648],{"class":324},[314,782,639],{"class":324},[314,784,785],{"class":527},"mobile",[314,787,656],{"class":324},[314,789,790],{"class":316,"line":397},[314,791,792],{"class":324},"}\n",[305,794,796],{"className":492,"code":795,"language":494,"meta":310,"style":310},"\u003Cscript setup lang=\"ts\">\nconst { hostContext } = useMcpApp()\nconst isDark = computed(() => hostContext.value?.theme === 'dark')\nconst isFullscreen = computed(() => hostContext.value?.displayMode === 'fullscreen')\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cmain :data-theme=\"isDark ? 'dark' : 'light'\" :data-mode=\"isFullscreen ? 'fullscreen' : 'inline'\">\n    …\n  \u003C\u002Fmain>\n\u003C\u002Ftemplate>\n",[292,797,798,821,838,886,924,932,938,946,979,984,992],{"__ignoreMap":310},[314,799,800,802,805,808,811,813,815,817,819],{"class":316,"line":317},[314,801,432],{"class":324},[314,803,804],{"class":503},"script",[314,806,807],{"class":320}," setup",[314,809,810],{"class":320}," lang",[314,812,521],{"class":324},[314,814,524],{"class":324},[314,816,309],{"class":527},[314,818,524],{"class":324},[314,820,507],{"class":324},[314,822,823,825,827,830,832,834,836],{"class":316,"line":328},[314,824,321],{"class":320},[314,826,698],{"class":324},[314,828,829],{"class":331}," hostContext ",[314,831,422],{"class":324},[314,833,425],{"class":324},[314,835,429],{"class":428},[314,837,442],{"class":331},[314,839,840,842,845,847,850,853,856,859,862,865,868,871,874,877,879,881,883],{"class":316,"line":342},[314,841,321],{"class":320},[314,843,844],{"class":331}," isDark ",[314,846,521],{"class":324},[314,848,849],{"class":428}," computed",[314,851,852],{"class":331},"(",[314,854,855],{"class":324},"()",[314,857,858],{"class":320}," =>",[314,860,861],{"class":331}," hostContext",[314,863,864],{"class":324},".",[314,866,867],{"class":331},"value",[314,869,870],{"class":324},"?.",[314,872,873],{"class":331},"theme ",[314,875,876],{"class":324},"===",[314,878,639],{"class":324},[314,880,653],{"class":527},[314,882,645],{"class":324},[314,884,885],{"class":331},")\n",[314,887,888,890,893,895,897,899,901,903,905,907,909,911,914,916,918,920,922],{"class":316,"line":353},[314,889,321],{"class":320},[314,891,892],{"class":331}," isFullscreen ",[314,894,521],{"class":324},[314,896,849],{"class":428},[314,898,852],{"class":331},[314,900,855],{"class":324},[314,902,858],{"class":320},[314,904,861],{"class":331},[314,906,864],{"class":324},[314,908,867],{"class":331},[314,910,870],{"class":324},[314,912,913],{"class":331},"displayMode ",[314,915,876],{"class":324},[314,917,639],{"class":324},[314,919,677],{"class":527},[314,921,645],{"class":324},[314,923,885],{"class":331},[314,925,926,928,930],{"class":316,"line":364},[314,927,593],{"class":324},[314,929,804],{"class":503},[314,931,507],{"class":324},[314,933,934],{"class":316,"line":375},[314,935,937],{"emptyLinePlaceholder":936},true,"\n",[314,939,940,942,944],{"class":316,"line":386},[314,941,432],{"class":324},[314,943,504],{"class":503},[314,945,507],{"class":324},[314,947,948,950,953,956,958,960,963,965,968,970,972,975,977],{"class":316,"line":397},[314,949,512],{"class":324},[314,951,952],{"class":503},"main",[314,954,955],{"class":320}," :data-theme",[314,957,521],{"class":324},[314,959,524],{"class":324},[314,961,962],{"class":527},"isDark ? 'dark' : 'light'",[314,964,524],{"class":324},[314,966,967],{"class":320}," :data-mode",[314,969,521],{"class":324},[314,971,524],{"class":324},[314,973,974],{"class":527},"isFullscreen ? 'fullscreen' : 'inline'",[314,976,524],{"class":324},[314,978,507],{"class":324},[314,980,981],{"class":316,"line":408},[314,982,983],{"class":331},"    …\n",[314,985,986,988,990],{"class":316,"line":419},[314,987,584],{"class":324},[314,989,952],{"class":503},[314,991,507],{"class":324},[314,993,995,997,999],{"class":316,"line":994},11,[314,996,593],{"class":324},[314,998,504],{"class":503},[314,1000,507],{"class":324},[1002,1003,1006,1008,1009,1012],"callout",{"color":1004,"icon":1005},"info","i-lucide-info",[292,1007,603],{}," 在第一次绘制时为 ",[292,1010,1011],{},"null","，会在握手后填充（通常 \u003C50 ms）。请始终在模板中使用回退值。",[447,1014,1016,1019],{"id":1015},"sendpromptprompt-后续跟进",[292,1017,1018],{},"sendPrompt(prompt)"," — 后续跟进",[296,1021,1022],{},"将消息发送到聊天中，就像用户亲自输入了一样。然后 LLM 会像处理任何其他请求一样路由它——包括调用另一个 MCP App：",[305,1024,1026],{"className":492,"code":1025,"language":494,"meta":310,"style":310},"\u003Cbutton @click=\"sendPrompt(`Use ${swatch.name} (${swatch.hex}) as the brand colour.`)\">\n  使用此颜色\n\u003C\u002Fbutton>\n",[292,1027,1028,1095,1100],{"__ignoreMap":310},[314,1029,1030,1032,1035,1038,1041,1043,1045,1048,1050,1053,1056,1059,1062,1064,1067,1069,1072,1074,1076,1078,1081,1083,1086,1088,1091,1093],{"class":316,"line":317},[314,1031,432],{"class":324},[314,1033,1034],{"class":503},"button",[314,1036,1037],{"class":324}," @",[314,1039,1040],{"class":320},"click",[314,1042,521],{"class":324},[314,1044,524],{"class":324},[314,1046,1047],{"class":428},"sendPrompt",[314,1049,852],{"class":331},[314,1051,1052],{"class":324},"`",[314,1054,1055],{"class":527},"Use ",[314,1057,1058],{"class":324},"${",[314,1060,1061],{"class":331},"swatch",[314,1063,864],{"class":324},[314,1065,1066],{"class":331},"name",[314,1068,422],{"class":324},[314,1070,1071],{"class":527}," (",[314,1073,1058],{"class":324},[314,1075,1061],{"class":331},[314,1077,864],{"class":324},[314,1079,1080],{"class":331},"hex",[314,1082,422],{"class":324},[314,1084,1085],{"class":527},") as the brand colour.",[314,1087,1052],{"class":324},[314,1089,1090],{"class":331},")",[314,1092,524],{"class":324},[314,1094,507],{"class":324},[314,1096,1097],{"class":316,"line":328},[314,1098,1099],{"class":331},"  使用此颜色\n",[314,1101,1102,1104,1106],{"class":316,"line":342},[314,1103,593],{"class":324},[314,1105,1034],{"class":503},[314,1107,507],{"class":324},[296,1109,1110,1111,1114],{},"主机会像用户输入了一样接收该提示。LLM 可能会回复、调用另一个工具，或者响应时打开另一个 MCP App——",[300,1112,1113],{},"应用到应用的工作流"," 就由这个原语自然实现。",[1002,1116,1119,1120,1123],{"color":1117,"icon":1118},"warning","i-lucide-triangle-alert","后续跟进是尽力而为。实现了 ",[292,1121,1122],{},"ui\u002Fmessage"," 的主机可以顺畅转发提示。ChatGPT 会确认请求，但并不总是将下一个工具以内联方式重新渲染（这是上游限制）。",[447,1125,1127,1130],{"id":1126},"calltoolname-params-原地刷新",[292,1128,1129],{},"callTool(name, params)"," — 原地刷新",[296,1132,1133,1134,489],{},"从 iframe 中重新调用任意 MCP 工具。结果会自动替换 ",[292,1135,452],{},[305,1137,1139],{"className":492,"code":1138,"language":494,"meta":310,"style":310},"\u003Cscript setup lang=\"ts\">\nconst { data, pending, callTool } = useMcpApp\u003CPalettePayload>()\n\nasync function refresh(base: string) {\n  await callTool('color-picker', { base })\n}\n\u003C\u002Fscript>\n",[292,1140,1141,1161,1195,1199,1226,1256,1260],{"__ignoreMap":310},[314,1142,1143,1145,1147,1149,1151,1153,1155,1157,1159],{"class":316,"line":317},[314,1144,432],{"class":324},[314,1146,804],{"class":503},[314,1148,807],{"class":320},[314,1150,810],{"class":320},[314,1152,521],{"class":324},[314,1154,524],{"class":324},[314,1156,309],{"class":527},[314,1158,524],{"class":324},[314,1160,507],{"class":324},[314,1162,1163,1165,1167,1170,1172,1175,1177,1180,1182,1184,1186,1188,1191,1193],{"class":316,"line":328},[314,1164,321],{"class":320},[314,1166,698],{"class":324},[314,1168,1169],{"class":331}," data",[314,1171,335],{"class":324},[314,1173,1174],{"class":331}," pending",[314,1176,335],{"class":324},[314,1178,1179],{"class":331}," callTool ",[314,1181,422],{"class":324},[314,1183,425],{"class":324},[314,1185,429],{"class":428},[314,1187,432],{"class":324},[314,1189,1190],{"class":435},"PalettePayload",[314,1192,439],{"class":324},[314,1194,442],{"class":331},[314,1196,1197],{"class":316,"line":342},[314,1198,937],{"emptyLinePlaceholder":936},[314,1200,1201,1204,1207,1210,1212,1216,1219,1222,1224],{"class":316,"line":353},[314,1202,1203],{"class":320},"async",[314,1205,1206],{"class":320}," function",[314,1208,1209],{"class":428}," refresh",[314,1211,852],{"class":324},[314,1213,1215],{"class":1214},"sHdIc","base",[314,1217,1218],{"class":324},":",[314,1220,1221],{"class":435}," string",[314,1223,1090],{"class":324},[314,1225,325],{"class":324},[314,1227,1228,1232,1235,1237,1239,1242,1244,1246,1248,1251,1254],{"class":316,"line":364},[314,1229,1231],{"class":1230},"s7zQu","  await",[314,1233,1234],{"class":428}," callTool",[314,1236,852],{"class":503},[314,1238,645],{"class":324},[314,1240,1241],{"class":527},"color-picker",[314,1243,645],{"class":324},[314,1245,335],{"class":324},[314,1247,698],{"class":324},[314,1249,1250],{"class":331}," base",[314,1252,1253],{"class":324}," }",[314,1255,885],{"class":503},[314,1257,1258],{"class":316,"line":375},[314,1259,792],{"class":324},[314,1261,1262,1264,1266],{"class":316,"line":386},[314,1263,593],{"class":324},[314,1265,804],{"class":503},[314,1267,507],{"class":324},[296,1269,1270],{},"可将其用于筛选、分页、刷新按钮——任何无需完整聊天往返即可更改查询的操作。",[447,1272,1274],{"id":1273},"openlinkurl",[292,1275,1276],{},"openLink(url)",[296,1278,1279,1280,1283],{},"沙盒 iframe 不能打开窗口。",[292,1281,1282],{},"openLink"," 会请求主机替你完成此操作（例如在新的浏览器标签页中打开预订确认页面）：",[305,1285,1287],{"className":492,"code":1286,"language":494,"meta":310,"style":310},"\u003Cbutton @click=\"openLink(`https:\u002F\u002Fexample.com\u002Fcolors\u002F${swatch.hex.slice(1)}`)\">\n  在网页中查看\n\u003C\u002Fbutton>\n",[292,1288,1289,1342,1347],{"__ignoreMap":310},[314,1290,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1312,1314,1316,1318,1320,1322,1325,1327,1331,1333,1336,1338,1340],{"class":316,"line":317},[314,1292,432],{"class":324},[314,1294,1034],{"class":503},[314,1296,1037],{"class":324},[314,1298,1040],{"class":320},[314,1300,521],{"class":324},[314,1302,524],{"class":324},[314,1304,1282],{"class":428},[314,1306,852],{"class":331},[314,1308,1052],{"class":324},[314,1310,1311],{"class":527},"https:\u002F\u002Fexample.com\u002Fcolors\u002F",[314,1313,1058],{"class":324},[314,1315,1061],{"class":331},[314,1317,864],{"class":324},[314,1319,1080],{"class":331},[314,1321,864],{"class":324},[314,1323,1324],{"class":428},"slice",[314,1326,852],{"class":331},[314,1328,1330],{"class":1329},"sbssI","1",[314,1332,1090],{"class":331},[314,1334,1335],{"class":324},"}`",[314,1337,1090],{"class":331},[314,1339,524],{"class":324},[314,1341,507],{"class":324},[314,1343,1344],{"class":316,"line":328},[314,1345,1346],{"class":331},"  在网页中查看\n",[314,1348,1349,1351,1353],{"class":316,"line":342},[314,1350,593],{"class":324},[314,1352,1034],{"class":503},[314,1354,507],{"class":324},[1002,1356,1357,1358,1361,1362,470],{"color":1004,"icon":1005},"如果你还需要从 iframe 中 ",[292,1359,1360],{},"fetch()"," 该目标，请将目标主机添加到 ",[292,1363,1364],{},"csp.connectDomains",[1366,1367,1368],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":310,"searchDepth":328,"depth":328,"links":1370},[1371],{"id":290,"depth":328,"text":294,"children":1372},[1373,1375,1376,1378,1380],{"id":449,"depth":342,"text":1374},"data 和 loading",{"id":600,"depth":342,"text":603},{"id":1015,"depth":342,"text":1377},"sendPrompt(prompt) — 后续跟进",{"id":1126,"depth":342,"text":1379},"callTool(name, params) — 原地刷新",{"id":1273,"depth":342,"text":1276},"来自 iframe 内部的 data、hostContext、sendPrompt、callTool 和 openLink。","md",null,{},{"icon":174},{"title":1387,"description":1388},"MCP Apps — useMcpApp","MCP App iframe 的客户端桥接 — 加载状态、主机上下文和主机操作。","vGxj8wStM1QqZxgZGgx4j7Zq8bvnHbkhYzZIdyeraYw",[1391,1393],{"title":166,"path":167,"stem":168,"description":1392,"icon":169,"children":-1},"SFC 位置、快速开始、defineMcpApp 宏、服务器处理器，以及共享类型。",{"title":176,"path":177,"stem":178,"description":1394,"icon":64,"children":-1},"内容安全策略、允许列表域名，以及 HTML bundle 的生成方式。",1778659578953]