[{"data":1,"prerenderedAt":1506},["ShallowReactive",2],{"navigation":3,"copilot-navigation":552,"copilot-version":592,"mdc--4zkox4-key":674,"\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fexceptions":704,"\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fexceptions-surround":1501},[4,139,265,303,320,384,395,531],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":38},"Copilot","i-ri-sparkling-line","\u002Fdocs\u002Fcopilot","1.docs\u002F1.copilot",[10,21,39,60,85,122],{"title":11,"path":12,"stem":13,"children":14},"Getting Started","\u002Fdocs\u002Fcopilot\u002Fgetting-started","1.docs\u002F1.copilot\u002F1.getting-started\u002F1.index",[15,17],{"title":16,"path":12,"stem":13},"Introduction",{"title":18,"path":19,"stem":20},"Installation","\u002Fdocs\u002Fcopilot\u002Fgetting-started\u002Finstallation","1.docs\u002F1.copilot\u002F1.getting-started\u002F2.installation",{"title":22,"path":23,"stem":24,"children":25,"page":38},"Configuration","\u002Fdocs\u002Fcopilot\u002Fconfiguration","1.docs\u002F1.copilot\u002F2.configuration",[26,30,34],{"title":27,"path":28,"stem":29},"Global Configuration","\u002Fdocs\u002Fcopilot\u002Fconfiguration\u002Fglobal","1.docs\u002F1.copilot\u002F2.configuration\u002F1.global",{"title":31,"path":32,"stem":33},"View Button & Field Configuration","\u002Fdocs\u002Fcopilot\u002Fconfiguration\u002Flocal","1.docs\u002F1.copilot\u002F2.configuration\u002F2.local",{"title":35,"path":36,"stem":37},"System Prompt","\u002Fdocs\u002Fcopilot\u002Fconfiguration\u002Fsystem-prompt","1.docs\u002F1.copilot\u002F2.configuration\u002F3.system-prompt",false,{"title":40,"path":41,"stem":42,"children":43,"page":38},"Usage","\u002Fdocs\u002Fcopilot\u002Fusage","1.docs\u002F1.copilot\u002F3.usage",[44,48,52,56],{"title":45,"path":46,"stem":47},"Panel View Button","\u002Fdocs\u002Fcopilot\u002Fusage\u002Fview-button","1.docs\u002F1.copilot\u002F3.usage\u002F1.view-button",{"title":49,"path":50,"stem":51},"Toolbar Buttons","\u002Fdocs\u002Fcopilot\u002Fusage\u002Ftoolbar-buttons","1.docs\u002F1.copilot\u002F3.usage\u002F2.toolbar-buttons",{"title":53,"path":54,"stem":55},"Inline Suggestions","\u002Fdocs\u002Fcopilot\u002Fusage\u002Finline-suggestions","1.docs\u002F1.copilot\u002F3.usage\u002F3.inline-suggestions",{"title":57,"path":58,"stem":59},"Copilot Section","\u002Fdocs\u002Fcopilot\u002Fusage\u002Fsection","1.docs\u002F1.copilot\u002F3.usage\u002F4.section",{"title":61,"path":62,"stem":63,"children":64,"page":38},"Prompt Dialog","\u002Fdocs\u002Fcopilot\u002Fprompt-dialog","1.docs\u002F1.copilot\u002F4.prompt-dialog",[65,69,73,77,81],{"title":66,"path":67,"stem":68},"Field Placeholders","\u002Fdocs\u002Fcopilot\u002Fprompt-dialog\u002Fplaceholders","1.docs\u002F1.copilot\u002F4.prompt-dialog\u002F1.placeholders",{"title":70,"path":71,"stem":72},"Prompt Templates","\u002Fdocs\u002Fcopilot\u002Fprompt-dialog\u002Ftemplates","1.docs\u002F1.copilot\u002F4.prompt-dialog\u002F2.templates",{"title":74,"path":75,"stem":76},"File Attachments","\u002Fdocs\u002Fcopilot\u002Fprompt-dialog\u002Ffiles","1.docs\u002F1.copilot\u002F4.prompt-dialog\u002F3.files",{"title":78,"path":79,"stem":80},"Page References","\u002Fdocs\u002Fcopilot\u002Fprompt-dialog\u002Fpage-references","1.docs\u002F1.copilot\u002F4.prompt-dialog\u002F4.page-references",{"title":82,"path":83,"stem":84},"Skills","\u002Fdocs\u002Fcopilot\u002Fprompt-dialog\u002Fskills","1.docs\u002F1.copilot\u002F4.prompt-dialog\u002F5.skills",{"title":86,"path":87,"stem":88,"children":89},"PHP Classes","\u002Fdocs\u002Fcopilot\u002Fphp-classes","1.docs\u002F1.copilot\u002F5.php-classes\u002F1.index",[90,92,96,118],{"title":91,"path":87,"stem":88},"Overview",{"title":93,"path":94,"stem":95},"Client","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fclient","1.docs\u002F1.copilot\u002F5.php-classes\u002F2.client",{"title":97,"path":98,"stem":99,"children":100,"defaultOpen":38},"Providers","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fproviders","1.docs\u002F1.copilot\u002F5.php-classes\u002F3.providers\u002F1.index",[101,102,106,110,114],{"title":91,"path":98,"stem":99},{"title":103,"path":104,"stem":105},"OpenAIProvider","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fproviders\u002Fopenai","1.docs\u002F1.copilot\u002F5.php-classes\u002F3.providers\u002F2.openai",{"title":107,"path":108,"stem":109},"AnthropicProvider","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fproviders\u002Fanthropic","1.docs\u002F1.copilot\u002F5.php-classes\u002F3.providers\u002F3.anthropic",{"title":111,"path":112,"stem":113},"GeminiProvider","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fproviders\u002Fgemini","1.docs\u002F1.copilot\u002F5.php-classes\u002F3.providers\u002F4.gemini",{"title":115,"path":116,"stem":117},"MistralProvider","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fproviders\u002Fmistral","1.docs\u002F1.copilot\u002F5.php-classes\u002F3.providers\u002F5.mistral",{"title":119,"path":120,"stem":121},"Exceptions","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fexceptions","1.docs\u002F1.copilot\u002F5.php-classes\u002F4.exceptions",{"title":123,"path":124,"stem":125,"children":126,"page":38},"Advanced","\u002Fdocs\u002Fcopilot\u002Fadvanced","1.docs\u002F1.copilot\u002F6.advanced",[127,131,135],{"title":128,"path":129,"stem":130},"Blocks & Layouts","\u002Fdocs\u002Fcopilot\u002Fadvanced\u002Fblocks-and-layouts","1.docs\u002F1.copilot\u002F6.advanced\u002F1.blocks-and-layouts",{"title":132,"path":133,"stem":134},"Quick Reference","\u002Fdocs\u002Fcopilot\u002Fadvanced\u002Freference","1.docs\u002F1.copilot\u002F6.advanced\u002F2.reference",{"title":136,"path":137,"stem":138},"Troubleshooting","\u002Fdocs\u002Fcopilot\u002Fadvanced\u002Ftroubleshooting","1.docs\u002F1.copilot\u002F6.advanced\u002F3.troubleshooting",{"title":140,"icon":141,"path":142,"stem":143,"children":144,"page":38},"Content Translator","i-ri-translate","\u002Fdocs\u002Fcontent-translator","1.docs\u002F2.content-translator",[145,157,168,185,194,228,240],{"title":11,"path":146,"stem":147,"children":148},"\u002Fdocs\u002Fcontent-translator\u002Fgetting-started","1.docs\u002F2.content-translator\u002F1.getting-started\u002F1.index",[149,150,153],{"title":16,"path":146,"stem":147},{"title":18,"path":151,"stem":152},"\u002Fdocs\u002Fcontent-translator\u002Fgetting-started\u002Finstallation","1.docs\u002F2.content-translator\u002F1.getting-started\u002F2.installation",{"title":154,"path":155,"stem":156},"Migration","\u002Fdocs\u002Fcontent-translator\u002Fgetting-started\u002Fmigration","1.docs\u002F2.content-translator\u002F1.getting-started\u002F3.migration",{"title":22,"path":158,"stem":159,"children":160,"page":38},"\u002Fdocs\u002Fcontent-translator\u002Fconfiguration","1.docs\u002F2.content-translator\u002F2.configuration",[161,164],{"title":27,"path":162,"stem":163},"\u002Fdocs\u002Fcontent-translator\u002Fconfiguration\u002Fglobal","1.docs\u002F2.content-translator\u002F2.configuration\u002F1.global",{"title":165,"path":166,"stem":167},"View Button & Section Configuration","\u002Fdocs\u002Fcontent-translator\u002Fconfiguration\u002Flocal","1.docs\u002F2.content-translator\u002F2.configuration\u002F2.local",{"title":169,"path":170,"stem":171,"children":172,"page":38},"Translation Providers","\u002Fdocs\u002Fcontent-translator\u002Fproviders","1.docs\u002F2.content-translator\u002F3.providers",[173,177,181],{"title":174,"path":175,"stem":176},"DeepL","\u002Fdocs\u002Fcontent-translator\u002Fproviders\u002Fdeepl","1.docs\u002F2.content-translator\u002F3.providers\u002F1.deepl",{"title":178,"path":179,"stem":180},"AI Translation","\u002Fdocs\u002Fcontent-translator\u002Fproviders\u002Fai-translation","1.docs\u002F2.content-translator\u002F3.providers\u002F2.ai-translation",{"title":182,"path":183,"stem":184},"Custom Translator","\u002Fdocs\u002Fcontent-translator\u002Fproviders\u002Fcustom-translator","1.docs\u002F2.content-translator\u002F3.providers\u002F3.custom-translator",{"title":186,"path":187,"stem":188,"children":189,"page":38},"Panel","\u002Fdocs\u002Fcontent-translator\u002Fpanel","1.docs\u002F2.content-translator\u002F4.panel",[190],{"title":191,"path":192,"stem":193},"Translation Coverage","\u002Fdocs\u002Fcontent-translator\u002Fpanel\u002Ftranslation-coverage","1.docs\u002F2.content-translator\u002F4.panel\u002F1.translation-coverage",{"title":86,"path":195,"stem":196,"children":197},"\u002Fdocs\u002Fcontent-translator\u002Fphp-classes","1.docs\u002F2.content-translator\u002F5.php-classes\u002F1.index",[198,199,203,221,224],{"title":91,"path":195,"stem":196},{"title":200,"path":201,"stem":202},"Translator","\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Ftranslator","1.docs\u002F2.content-translator\u002F5.php-classes\u002F2.translator",{"title":204,"path":205,"stem":206,"children":207,"defaultOpen":38},"Strategies","\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Fstrategies","1.docs\u002F2.content-translator\u002F5.php-classes\u002F3.strategies\u002F1.index",[208,209,213,217],{"title":91,"path":205,"stem":206},{"title":210,"path":211,"stem":212},"DeepLStrategy","\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Fstrategies\u002Fdeepl-strategy","1.docs\u002F2.content-translator\u002F5.php-classes\u002F3.strategies\u002F2.deepl-strategy",{"title":214,"path":215,"stem":216},"CopilotAIStrategy","\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Fstrategies\u002Fcopilot-ai-strategy","1.docs\u002F2.content-translator\u002F5.php-classes\u002F3.strategies\u002F3.copilot-ai-strategy",{"title":218,"path":219,"stem":220},"CallableStrategy","\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Fstrategies\u002Fcallable-strategy","1.docs\u002F2.content-translator\u002F5.php-classes\u002F3.strategies\u002F4.callable-strategy",{"title":119,"path":222,"stem":223},"\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Fexceptions","1.docs\u002F2.content-translator\u002F5.php-classes\u002F4.exceptions",{"title":225,"path":226,"stem":227},"DeepL Client","\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Fdeepl-client","1.docs\u002F2.content-translator\u002F5.php-classes\u002F5.deepl-client",{"title":123,"path":229,"stem":230,"children":231,"page":38},"\u002Fdocs\u002Fcontent-translator\u002Fadvanced","1.docs\u002F2.content-translator\u002F6.advanced",[232,236],{"title":233,"path":234,"stem":235},"KirbyTags","\u002Fdocs\u002Fcontent-translator\u002Fadvanced\u002Fkirbytags","1.docs\u002F2.content-translator\u002F6.advanced\u002F1.kirbytags",{"title":237,"path":238,"stem":239},"Hooks","\u002Fdocs\u002Fcontent-translator\u002Fadvanced\u002Fhooks","1.docs\u002F2.content-translator\u002F6.advanced\u002F2.hooks",{"title":241,"path":242,"stem":243,"children":244,"page":38},"CLI & Automation","\u002Fdocs\u002Fcontent-translator\u002Fcli-automation","1.docs\u002F2.content-translator\u002F7.cli-automation",[245,249,253,257,261],{"title":246,"path":247,"stem":248},"Single Page","\u002Fdocs\u002Fcontent-translator\u002Fcli-automation\u002Fsingle-page","1.docs\u002F2.content-translator\u002F7.cli-automation\u002F1.single-page",{"title":250,"path":251,"stem":252},"Batch Pages","\u002Fdocs\u002Fcontent-translator\u002Fcli-automation\u002Fbatch-pages","1.docs\u002F2.content-translator\u002F7.cli-automation\u002F2.batch-pages",{"title":254,"path":255,"stem":256},"File Metadata","\u002Fdocs\u002Fcontent-translator\u002Fcli-automation\u002Ffile-metadata","1.docs\u002F2.content-translator\u002F7.cli-automation\u002F3.file-metadata",{"title":258,"path":259,"stem":260},"Janitor Integration","\u002Fdocs\u002Fcontent-translator\u002Fcli-automation\u002Fjanitor","1.docs\u002F2.content-translator\u002F7.cli-automation\u002F4.janitor",{"title":262,"path":263,"stem":264},"AI Strategy Override","\u002Fdocs\u002Fcontent-translator\u002Fcli-automation\u002Fai-strategy","1.docs\u002F2.content-translator\u002F7.cli-automation\u002F5.ai-strategy",{"title":266,"icon":267,"path":268,"stem":269,"children":270,"page":38},"SEO Audit","i-ri-seo-line","\u002Fdocs\u002Fseo-audit","1.docs\u002F3.seo-audit",[271,279,290],{"title":11,"path":272,"stem":273,"children":274},"\u002Fdocs\u002Fseo-audit\u002Fgetting-started","1.docs\u002F3.seo-audit\u002F1.getting-started\u002F1.index",[275,276],{"title":16,"path":272,"stem":273},{"title":18,"path":277,"stem":278},"\u002Fdocs\u002Fseo-audit\u002Fgetting-started\u002Finstallation","1.docs\u002F3.seo-audit\u002F1.getting-started\u002F2.installation",{"title":22,"path":280,"stem":281,"children":282,"page":38},"\u002Fdocs\u002Fseo-audit\u002Fconfiguration","1.docs\u002F3.seo-audit\u002F2.configuration",[283,286],{"title":27,"path":284,"stem":285},"\u002Fdocs\u002Fseo-audit\u002Fconfiguration\u002Fglobal","1.docs\u002F3.seo-audit\u002F2.configuration\u002F1.global",{"title":287,"path":288,"stem":289},"View Button & Section","\u002Fdocs\u002Fseo-audit\u002Fconfiguration\u002Flocal","1.docs\u002F3.seo-audit\u002F2.configuration\u002F2.local",{"title":291,"path":292,"stem":293,"children":294,"page":38},"Guide","\u002Fdocs\u002Fseo-audit\u002Fguide","1.docs\u002F3.seo-audit\u002F3.guide",[295,299],{"title":296,"path":297,"stem":298},"Assessments for SEO and Readability","\u002Fdocs\u002Fseo-audit\u002Fguide\u002Fassessments","1.docs\u002F3.seo-audit\u002F3.guide\u002F1.assessments",{"title":300,"path":301,"stem":302},"Audit URL","\u002Fdocs\u002Fseo-audit\u002Fguide\u002Faudit-url","1.docs\u002F3.seo-audit\u002F3.guide\u002F2.audit-url",{"title":304,"path":305,"stem":306,"children":307,"icon":319},"Live Preview","\u002Fdocs\u002Flive-preview","1.docs\u002F4.live-preview\u002F1.index",[308,309,312,316],{"title":11,"path":305,"stem":306},{"title":22,"path":310,"stem":311},"\u002Fdocs\u002Flive-preview\u002Fconfiguration","1.docs\u002F4.live-preview\u002F2.configuration",{"title":313,"path":314,"stem":315},"Preview Mode","\u002Fdocs\u002Flive-preview\u002Fpreview-mode","1.docs\u002F4.live-preview\u002F3.preview-mode",{"title":136,"path":317,"stem":318},"\u002Fdocs\u002Flive-preview\u002Ftroubleshooting","1.docs\u002F4.live-preview\u002F4.troubleshooting","i-ri-picture-in-picture-line",{"title":321,"icon":322,"path":323,"stem":324,"children":325,"page":38},"Headless","i-ri-code-block","\u002Fdocs\u002Fheadless","1.docs\u002F5.headless",[326,334,350,370,378],{"title":11,"path":327,"stem":328,"children":329},"\u002Fdocs\u002Fheadless\u002Fgetting-started","1.docs\u002F5.headless\u002F1.getting-started\u002F1.index",[330,331],{"title":16,"path":327,"stem":328},{"title":18,"path":332,"stem":333},"\u002Fdocs\u002Fheadless\u002Fgetting-started\u002Finstallation","1.docs\u002F5.headless\u002F1.getting-started\u002F2.installation",{"title":22,"path":335,"stem":336,"children":337,"page":38},"\u002Fdocs\u002Fheadless\u002Fconfiguration","1.docs\u002F5.headless\u002F2.configuration",[338,342,346],{"title":339,"path":340,"stem":341},"Authentication","\u002Fdocs\u002Fheadless\u002Fconfiguration\u002Fauthentication","1.docs\u002F5.headless\u002F2.configuration\u002F1.authentication",{"title":343,"path":344,"stem":345},"CORS","\u002Fdocs\u002Fheadless\u002Fconfiguration\u002Fcors","1.docs\u002F5.headless\u002F2.configuration\u002F2.cors",{"title":347,"path":348,"stem":349},"Panel Configuration","\u002Fdocs\u002Fheadless\u002Fconfiguration\u002Fpanel","1.docs\u002F5.headless\u002F2.configuration\u002F3.panel",{"title":40,"path":351,"stem":352,"children":353,"page":38},"\u002Fdocs\u002Fheadless\u002Fusage","1.docs\u002F5.headless\u002F3.usage",[354,358,362,366],{"title":355,"path":356,"stem":357},"KQL (Kirby Query Language)","\u002Fdocs\u002Fheadless\u002Fusage\u002Fkql","1.docs\u002F5.headless\u002F3.usage\u002F1.kql",{"title":359,"path":360,"stem":361},"JSON Templates","\u002Fdocs\u002Fheadless\u002Fusage\u002Fjson-templates","1.docs\u002F5.headless\u002F3.usage\u002F2.json-templates",{"title":363,"path":364,"stem":365},"Field Methods","\u002Fdocs\u002Fheadless\u002Fusage\u002Ffield-methods","1.docs\u002F5.headless\u002F3.usage\u002F3.field-methods",{"title":367,"path":368,"stem":369},"Page Methods","\u002Fdocs\u002Fheadless\u002Fusage\u002Fpage-methods","1.docs\u002F5.headless\u002F3.usage\u002F4.page-methods",{"title":123,"path":371,"stem":372,"children":373,"page":38},"\u002Fdocs\u002Fheadless\u002Fadvanced","1.docs\u002F5.headless\u002F4.advanced",[374],{"title":375,"path":376,"stem":377},"API Builder","\u002Fdocs\u002Fheadless\u002Fadvanced\u002Fapi-builder","1.docs\u002F5.headless\u002F4.advanced\u002F1.api-builder",{"title":154,"path":379,"stem":380,"children":381},"\u002Fdocs\u002Fheadless\u002Fmigration","1.docs\u002F5.headless\u002F5.migration\u002F1.index",[382],{"title":383,"path":379,"stem":380},"Version Migration",{"title":385,"path":386,"stem":387,"children":388,"icon":394},"Minimap","\u002Fdocs\u002Fminimap","1.docs\u002F6.minimap\u002F1.index",[389,390],{"title":11,"path":386,"stem":387},{"title":391,"path":392,"stem":393},"Fields Support","\u002Fdocs\u002Fminimap\u002Ffields-support","1.docs\u002F6.minimap\u002F2.fields-support","i-ri-timeline-view",{"title":396,"icon":397,"path":398,"stem":399,"children":400,"page":38},"Documentation","i-ri-book-open-line","\u002Fdocs","1.docs",[401,442,484,498,504,527],{"title":5,"icon":6,"path":7,"stem":8,"children":402,"page":38},[403,407,412,418,425,437],{"title":11,"path":12,"stem":13,"children":404},[405,406],{"title":16,"path":12,"stem":13},{"title":18,"path":19,"stem":20},{"title":22,"path":23,"stem":24,"children":408,"page":38},[409,410,411],{"title":27,"path":28,"stem":29},{"title":31,"path":32,"stem":33},{"title":35,"path":36,"stem":37},{"title":40,"path":41,"stem":42,"children":413,"page":38},[414,415,416,417],{"title":45,"path":46,"stem":47},{"title":49,"path":50,"stem":51},{"title":53,"path":54,"stem":55},{"title":57,"path":58,"stem":59},{"title":61,"path":62,"stem":63,"children":419,"page":38},[420,421,422,423,424],{"title":66,"path":67,"stem":68},{"title":70,"path":71,"stem":72},{"title":74,"path":75,"stem":76},{"title":78,"path":79,"stem":80},{"title":82,"path":83,"stem":84},{"title":86,"path":87,"stem":88,"children":426},[427,428,429,436],{"title":91,"path":87,"stem":88},{"title":93,"path":94,"stem":95},{"title":97,"path":98,"stem":99,"children":430,"defaultOpen":38},[431,432,433,434,435],{"title":91,"path":98,"stem":99},{"title":103,"path":104,"stem":105},{"title":107,"path":108,"stem":109},{"title":111,"path":112,"stem":113},{"title":115,"path":116,"stem":117},{"title":119,"path":120,"stem":121},{"title":123,"path":124,"stem":125,"children":438,"page":38},[439,440,441],{"title":128,"path":129,"stem":130},{"title":132,"path":133,"stem":134},{"title":136,"path":137,"stem":138},{"title":140,"icon":141,"path":142,"stem":143,"children":443,"page":38},[444,449,453,458,461,473,477],{"title":11,"path":146,"stem":147,"children":445},[446,447,448],{"title":16,"path":146,"stem":147},{"title":18,"path":151,"stem":152},{"title":154,"path":155,"stem":156},{"title":22,"path":158,"stem":159,"children":450,"page":38},[451,452],{"title":27,"path":162,"stem":163},{"title":165,"path":166,"stem":167},{"title":169,"path":170,"stem":171,"children":454,"page":38},[455,456,457],{"title":174,"path":175,"stem":176},{"title":178,"path":179,"stem":180},{"title":182,"path":183,"stem":184},{"title":186,"path":187,"stem":188,"children":459,"page":38},[460],{"title":191,"path":192,"stem":193},{"title":86,"path":195,"stem":196,"children":462},[463,464,465,471,472],{"title":91,"path":195,"stem":196},{"title":200,"path":201,"stem":202},{"title":204,"path":205,"stem":206,"children":466,"defaultOpen":38},[467,468,469,470],{"title":91,"path":205,"stem":206},{"title":210,"path":211,"stem":212},{"title":214,"path":215,"stem":216},{"title":218,"path":219,"stem":220},{"title":119,"path":222,"stem":223},{"title":225,"path":226,"stem":227},{"title":123,"path":229,"stem":230,"children":474,"page":38},[475,476],{"title":233,"path":234,"stem":235},{"title":237,"path":238,"stem":239},{"title":241,"path":242,"stem":243,"children":478,"page":38},[479,480,481,482,483],{"title":246,"path":247,"stem":248},{"title":250,"path":251,"stem":252},{"title":254,"path":255,"stem":256},{"title":258,"path":259,"stem":260},{"title":262,"path":263,"stem":264},{"title":266,"icon":267,"path":268,"stem":269,"children":485,"page":38},[486,490,494],{"title":11,"path":272,"stem":273,"children":487},[488,489],{"title":16,"path":272,"stem":273},{"title":18,"path":277,"stem":278},{"title":22,"path":280,"stem":281,"children":491,"page":38},[492,493],{"title":27,"path":284,"stem":285},{"title":287,"path":288,"stem":289},{"title":291,"path":292,"stem":293,"children":495,"page":38},[496,497],{"title":296,"path":297,"stem":298},{"title":300,"path":301,"stem":302},{"title":304,"path":305,"stem":306,"children":499,"icon":319},[500,501,502,503],{"title":11,"path":305,"stem":306},{"title":22,"path":310,"stem":311},{"title":313,"path":314,"stem":315},{"title":136,"path":317,"stem":318},{"title":321,"icon":322,"path":323,"stem":324,"children":505,"page":38},[506,510,515,521,524],{"title":11,"path":327,"stem":328,"children":507},[508,509],{"title":16,"path":327,"stem":328},{"title":18,"path":332,"stem":333},{"title":22,"path":335,"stem":336,"children":511,"page":38},[512,513,514],{"title":339,"path":340,"stem":341},{"title":343,"path":344,"stem":345},{"title":347,"path":348,"stem":349},{"title":40,"path":351,"stem":352,"children":516,"page":38},[517,518,519,520],{"title":355,"path":356,"stem":357},{"title":359,"path":360,"stem":361},{"title":363,"path":364,"stem":365},{"title":367,"path":368,"stem":369},{"title":123,"path":371,"stem":372,"children":522,"page":38},[523],{"title":375,"path":376,"stem":377},{"title":154,"path":379,"stem":380,"children":525},[526],{"title":383,"path":379,"stem":380},{"title":385,"path":386,"stem":387,"children":528,"icon":394},[529,530],{"title":11,"path":386,"stem":387},{"title":391,"path":392,"stem":393},{"title":532,"path":533,"stem":534,"children":535,"page":38},"Blog","\u002Fblog","blog",[536,540,544,548],{"title":537,"path":538,"stem":539},"Kirby Copilot v2.5 – Beyond Single Fields","\u002Fblog\u002Fcopilot-v25","blog\u002Fcopilot-v25",{"title":541,"path":542,"stem":543},"Kirby Copilot v3 – Your Quiet Co-Writer","\u002Fblog\u002Fcopilot-v3","blog\u002Fcopilot-v3",{"title":545,"path":546,"stem":547},"Going Open Source with Commercial Plugins","\u002Fblog\u002Fgoing-open-source","blog\u002Fgoing-open-source",{"title":549,"path":550,"stem":551},"Moving to Paddle","\u002Fblog\u002Fpaddle-migration","blog\u002Fpaddle-migration",[553,557,562,568,575,587],{"title":11,"path":12,"stem":13,"children":554},[555,556],{"title":16,"path":12,"stem":13},{"title":18,"path":19,"stem":20},{"title":22,"path":23,"stem":24,"children":558,"page":38},[559,560,561],{"title":27,"path":28,"stem":29},{"title":31,"path":32,"stem":33},{"title":35,"path":36,"stem":37},{"title":40,"path":41,"stem":42,"children":563,"page":38},[564,565,566,567],{"title":45,"path":46,"stem":47},{"title":49,"path":50,"stem":51},{"title":53,"path":54,"stem":55},{"title":57,"path":58,"stem":59},{"title":61,"path":62,"stem":63,"children":569,"page":38},[570,571,572,573,574],{"title":66,"path":67,"stem":68},{"title":70,"path":71,"stem":72},{"title":74,"path":75,"stem":76},{"title":78,"path":79,"stem":80},{"title":82,"path":83,"stem":84},{"title":86,"path":87,"stem":88,"children":576},[577,578,579,586],{"title":91,"path":87,"stem":88},{"title":93,"path":94,"stem":95},{"title":97,"path":98,"stem":99,"children":580,"defaultOpen":38},[581,582,583,584,585],{"title":91,"path":98,"stem":99},{"title":103,"path":104,"stem":105},{"title":107,"path":108,"stem":109},{"title":111,"path":112,"stem":113},{"title":115,"path":116,"stem":117},{"title":119,"path":120,"stem":121},{"title":123,"path":124,"stem":125,"children":588,"page":38},[589,590,591],{"title":128,"path":129,"stem":130},{"title":132,"path":133,"stem":134},{"title":136,"path":137,"stem":138},{"id":593,"title":594,"body":595,"date":666,"description":663,"extension":667,"meta":668,"navigation":669,"path":670,"seo":671,"stem":672,"__hash__":673},"versions\u002F2.copilot\u002Fchangelog\u002Fv3.8.0.md","v3.8.0",{"type":596,"value":597,"toc":662},"minimark",[598,605,611],[599,600,601],"tip",{},[602,603,604],"p",{},"Copilot's AI engine is now a first-class PHP API. Drive structured-output generation from CLI commands, model methods, or any custom workflow – the same provider stack that powers the Panel.",[602,606,607],{},[608,609,610],"strong",{},"🚀 Features",[612,613,614,626,639],"ul",{},[615,616,617,620,621,625],"li",{},[608,618,619],{},"PHP classes",": Generate text and structured JSON from any PHP context – no Panel required. See the ",[622,623,624],"a",{"href":87},"PHP classes documentation",".",[615,627,628,634,635,625],{},[608,629,630],{},[631,632,633],"code",{},"Client::generateObject()",": Generate JSON objects conforming to a JSON Schema across all supported providers with a single API. See the ",[622,636,638],{"href":637},"\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fclient#generateobject","client reference",[615,640,641,646,647,650,651,654,655,658,659,625],{},[608,642,643],{},[631,644,645],{},"ProviderException",": A dedicated exception class wraps upstream provider failures with ",[631,648,649],{},"provider",", ",[631,652,653],{},"httpCode",", and the original ",[631,656,657],{},"Throwable",". See the ",[622,660,661],{"href":120},"exceptions documentation",{"title":663,"searchDepth":664,"depth":664,"links":665},"",2,[],"2026-05-03","md",{},true,"\u002Fcopilot\u002Fchangelog\u002Fv3.8.0",{"title":594,"description":663},"2.copilot\u002Fchangelog\u002Fv3.8.0","fx4N6UG39S9yydNQ_1ixLWAdhCfX1k8-6jC_o60CZk0",{"data":675,"body":676},{},{"type":677,"children":678},"root",[679],{"type":680,"tag":602,"props":681,"children":682},"element",{},[683,686,694,696,703],{"type":684,"value":685},"text","We love Kirby – our plugins wouldn't exist without it. Help us improve: share feedback in ",{"type":680,"tag":622,"props":687,"children":691},{"href":688,"rel":689},"https:\u002F\u002Fgithub.com\u002Fkirby-tools\u002Fcommunity\u002Fdiscussions",[690],"nofollow",[692],{"type":684,"value":693},"Discussions",{"type":684,"value":695}," or report bugs via ",{"type":680,"tag":622,"props":697,"children":700},{"href":698,"rel":699},"https:\u002F\u002Fgithub.com\u002Fkirby-tools\u002Fcommunity\u002Fissues",[690],[701],{"type":684,"value":702},"Issues",{"type":684,"value":625},{"id":705,"title":119,"body":706,"description":1497,"extension":667,"meta":1498,"navigation":669,"path":120,"seo":1499,"stem":121,"__hash__":1500},"docs\u002F1.docs\u002F1.copilot\u002F5.php-classes\u002F4.exceptions.md",{"type":596,"value":707,"toc":1488},[708,711,778,784,794,1026,1031,1072,1085,1089,1092,1099,1102,1108,1112,1290,1296,1301,1307,1345,1425,1430,1440,1474,1484],[602,709,710],{},"The PHP API throws three Kirby-typed exceptions:",[712,713,714,730],"table",{},[715,716,717],"thead",{},[718,719,720,724,727],"tr",{},[721,722,723],"th",{},"Exception",[721,725,726],{},"Thrown by",[721,728,729],{},"Trigger",[731,732,733,745,760],"tbody",{},[718,734,735,740,742],{},[736,737,738],"td",{},[631,739,645],{},[736,741,97],{},[736,743,744],{},"Upstream call failed",[718,746,747,752,757],{},[736,748,749],{},[631,750,751],{},"AuthException",[736,753,754,755],{},"Providers, ",[631,756,93],{},[736,758,759],{},"Missing API key",[718,761,762,767,772],{},[736,763,764],{},[631,765,766],{},"InvalidArgumentException",[736,768,769],{},[631,770,771],{},"Resolver",[736,773,774,775,777],{},"Missing or unknown ",[631,776,649],{}," config",[779,780,782],"h2",{"id":781},"providerexception",[631,783,645],{},[602,785,786,789,790,793],{},[631,787,788],{},"JohannSchopplich\\Copilot\\AI\\Exception\\ProviderException"," extends ",[631,791,792],{},"Kirby\\Exception\\Exception",". Thrown when an upstream AI provider call fails.",[795,796,800],"pre",{"className":797,"code":798,"language":799,"meta":663,"style":663},"language-php shiki shiki-themes github-light github-light github-dark","final class ProviderException extends \\Kirby\\Exception\\Exception\n{\n    protected static string $defaultKey = 'copilot.ai.provider';\n    protected static int $defaultHttpCode = 502;\n\n    public function __construct(\n        ProviderName $providerName,\n        string $reason,\n        string|null $model = null,\n        string|null $responseId = null,\n        string|null $responseExcerpt = null,\n        int|null $httpCode = null,\n        Throwable|null $previous = null,\n    );\n}\n","php",[631,801,802,828,834,859,879,885,900,909,918,940,958,976,995,1014,1020],{"__ignoreMap":663},[803,804,807,811,814,818,821,825],"span",{"class":805,"line":806},"line",1,[803,808,810],{"class":809},"s8jYJ","final",[803,812,813],{"class":809}," class",[803,815,817],{"class":816},"snPdu"," ProviderException",[803,819,820],{"class":809}," extends",[803,822,824],{"class":823},"sBjJW"," \\Kirby\\Exception\\",[803,826,827],{"class":816},"Exception\n",[803,829,830],{"class":805,"line":664},[803,831,833],{"class":832},"sxrX7","{\n",[803,835,837,840,843,846,849,852,856],{"class":805,"line":836},3,[803,838,839],{"class":809},"    protected",[803,841,842],{"class":809}," static",[803,844,845],{"class":809}," string",[803,847,848],{"class":832}," $defaultKey ",[803,850,851],{"class":809},"=",[803,853,855],{"class":854},"sIIMD"," 'copilot.ai.provider'",[803,857,858],{"class":832},";\n",[803,860,862,864,866,869,872,874,877],{"class":805,"line":861},4,[803,863,839],{"class":809},[803,865,842],{"class":809},[803,867,868],{"class":809}," int",[803,870,871],{"class":832}," $defaultHttpCode ",[803,873,851],{"class":809},[803,875,876],{"class":823}," 502",[803,878,858],{"class":832},[803,880,882],{"class":805,"line":881},5,[803,883,884],{"emptyLinePlaceholder":669},"\n",[803,886,888,891,894,897],{"class":805,"line":887},6,[803,889,890],{"class":809},"    public",[803,892,893],{"class":809}," function",[803,895,896],{"class":823}," __construct",[803,898,899],{"class":832},"(\n",[803,901,903,906],{"class":805,"line":902},7,[803,904,905],{"class":823},"        ProviderName",[803,907,908],{"class":832}," $providerName,\n",[803,910,912,915],{"class":805,"line":911},8,[803,913,914],{"class":809},"        string",[803,916,917],{"class":832}," $reason,\n",[803,919,921,923,926,929,932,934,937],{"class":805,"line":920},9,[803,922,914],{"class":809},[803,924,925],{"class":832},"|",[803,927,928],{"class":809},"null",[803,930,931],{"class":832}," $model ",[803,933,851],{"class":809},[803,935,936],{"class":823}," null",[803,938,939],{"class":832},",\n",[803,941,943,945,947,949,952,954,956],{"class":805,"line":942},10,[803,944,914],{"class":809},[803,946,925],{"class":832},[803,948,928],{"class":809},[803,950,951],{"class":832}," $responseId ",[803,953,851],{"class":809},[803,955,936],{"class":823},[803,957,939],{"class":832},[803,959,961,963,965,967,970,972,974],{"class":805,"line":960},11,[803,962,914],{"class":809},[803,964,925],{"class":832},[803,966,928],{"class":809},[803,968,969],{"class":832}," $responseExcerpt ",[803,971,851],{"class":809},[803,973,936],{"class":823},[803,975,939],{"class":832},[803,977,979,982,984,986,989,991,993],{"class":805,"line":978},12,[803,980,981],{"class":809},"        int",[803,983,925],{"class":832},[803,985,928],{"class":809},[803,987,988],{"class":832}," $httpCode ",[803,990,851],{"class":809},[803,992,936],{"class":823},[803,994,939],{"class":832},[803,996,998,1001,1003,1005,1008,1010,1012],{"class":805,"line":997},13,[803,999,1000],{"class":823},"        Throwable",[803,1002,925],{"class":832},[803,1004,928],{"class":809},[803,1006,1007],{"class":832}," $previous ",[803,1009,851],{"class":809},[803,1011,936],{"class":823},[803,1013,939],{"class":832},[803,1015,1017],{"class":805,"line":1016},14,[803,1018,1019],{"class":832},"    );\n",[803,1021,1023],{"class":805,"line":1022},15,[803,1024,1025],{"class":832},"}\n",[1027,1028,1030],"h3",{"id":1029},"details-payload","Details Payload",[1032,1033,1034,1042,1052,1066],"field-group",{},[1035,1036,1039],"field",{"name":1037,"type":1038},"providerName","ProviderName",[602,1040,1041],{},"The provider that produced the error.",[1035,1043,1046],{"name":1044,"type":1045},"model","String | null",[602,1047,1048,1049,1051],{},"The model id used for the request, or ",[631,1050,928],{}," when the failure happened before model resolution.",[1035,1053,1055],{"name":1054,"type":1045},"responseId",[602,1056,1057,1058,1061,1062,1065],{},"Provider-specific response identifier (OpenAI's ",[631,1059,1060],{},"response.id",", Anthropic's ",[631,1063,1064],{},"message.id",").",[1035,1067,1069],{"name":1068,"type":1045},"responseExcerpt",[602,1070,1071],{},"First 200 characters of the response body, single-line, for log triage.",[602,1073,1074,1075,1078,1079,1081,1082,625],{},"The original upstream error is attached as ",[631,1076,1077],{},"previous",". The HTTP status (when available) is on the ",[631,1080,653],{}," constructor argument and accessible via ",[631,1083,1084],{},"getHttpCode()",[1027,1086,1088],{"id":1087},"message-format","Message Format",[602,1090,1091],{},"The exception message is built from the constructor arguments:",[795,1093,1097],{"className":1094,"code":1096,"language":684},[1095],"language-text","\u003Cprovider> provider error: \u003Creason> (model: \u003Cmodel>, request: \u003CresponseId>, response: \u003Cexcerpt>)\n",[631,1098,1096],{"__ignoreMap":663},[602,1100,1101],{},"Example:",[795,1103,1106],{"className":1104,"code":1105,"language":684},[1095],"openai provider error: request failed: Rate limit reached (model: gpt-5.4-mini, request: resp_abc123, response: Rate limit exceeded for organization …)\n",[631,1107,1105],{"__ignoreMap":663},[1027,1109,1111],{"id":1110},"catching","Catching",[795,1113,1115],{"className":797,"code":1114,"language":799,"meta":663,"style":663},"use JohannSchopplich\\Copilot\\AI\\Client;\nuse JohannSchopplich\\Copilot\\AI\\Exception\\ProviderException;\n\ntry {\n    $result = Client::instance()->generateObject($messages, $schema);\n} catch (ProviderException $error) {\n    $details = $error->getDetails();\n    \u002F\u002F [\n    \u002F\u002F   'providerName' => ProviderName::OpenAI,\n    \u002F\u002F   'model' => 'gpt-5.4-mini',\n    \u002F\u002F   'responseId' => 'resp_abc123',\n    \u002F\u002F   'responseExcerpt' => 'Rate limit exceeded …',\n    \u002F\u002F ]\n\n    $http = $error->getHttpCode(); \u002F\u002F 429\n    $upstream = $error->getPrevious(); \u002F\u002F OpenAI\\Exceptions\\RateLimitException\n}\n",[631,1116,1117,1127,1136,1140,1148,1176,1192,1210,1216,1221,1226,1231,1236,1241,1245,1265,1285],{"__ignoreMap":663},[803,1118,1119,1122,1125],{"class":805,"line":806},[803,1120,1121],{"class":809},"use",[803,1123,1124],{"class":823}," JohannSchopplich\\Copilot\\AI\\Client",[803,1126,858],{"class":832},[803,1128,1129,1131,1134],{"class":805,"line":664},[803,1130,1121],{"class":809},[803,1132,1133],{"class":823}," JohannSchopplich\\Copilot\\AI\\Exception\\ProviderException",[803,1135,858],{"class":832},[803,1137,1138],{"class":805,"line":836},[803,1139,884],{"emptyLinePlaceholder":669},[803,1141,1142,1145],{"class":805,"line":861},[803,1143,1144],{"class":809},"try",[803,1146,1147],{"class":832}," {\n",[803,1149,1150,1153,1155,1158,1161,1164,1167,1170,1173],{"class":805,"line":881},[803,1151,1152],{"class":832},"    $result ",[803,1154,851],{"class":809},[803,1156,1157],{"class":823}," Client",[803,1159,1160],{"class":809},"::",[803,1162,1163],{"class":816},"instance",[803,1165,1166],{"class":832},"()",[803,1168,1169],{"class":809},"->",[803,1171,1172],{"class":816},"generateObject",[803,1174,1175],{"class":832},"($messages, $schema);\n",[803,1177,1178,1181,1184,1187,1189],{"class":805,"line":887},[803,1179,1180],{"class":832},"} ",[803,1182,1183],{"class":809},"catch",[803,1185,1186],{"class":832}," (",[803,1188,645],{"class":823},[803,1190,1191],{"class":832}," $error) {\n",[803,1193,1194,1197,1199,1202,1204,1207],{"class":805,"line":902},[803,1195,1196],{"class":832},"    $details ",[803,1198,851],{"class":809},[803,1200,1201],{"class":832}," $error",[803,1203,1169],{"class":809},[803,1205,1206],{"class":816},"getDetails",[803,1208,1209],{"class":832},"();\n",[803,1211,1212],{"class":805,"line":911},[803,1213,1215],{"class":1214},"sCsY4","    \u002F\u002F [\n",[803,1217,1218],{"class":805,"line":920},[803,1219,1220],{"class":1214},"    \u002F\u002F   'providerName' => ProviderName::OpenAI,\n",[803,1222,1223],{"class":805,"line":942},[803,1224,1225],{"class":1214},"    \u002F\u002F   'model' => 'gpt-5.4-mini',\n",[803,1227,1228],{"class":805,"line":960},[803,1229,1230],{"class":1214},"    \u002F\u002F   'responseId' => 'resp_abc123',\n",[803,1232,1233],{"class":805,"line":978},[803,1234,1235],{"class":1214},"    \u002F\u002F   'responseExcerpt' => 'Rate limit exceeded …',\n",[803,1237,1238],{"class":805,"line":997},[803,1239,1240],{"class":1214},"    \u002F\u002F ]\n",[803,1242,1243],{"class":805,"line":1016},[803,1244,884],{"emptyLinePlaceholder":669},[803,1246,1247,1250,1252,1254,1256,1259,1262],{"class":805,"line":1022},[803,1248,1249],{"class":832},"    $http ",[803,1251,851],{"class":809},[803,1253,1201],{"class":832},[803,1255,1169],{"class":809},[803,1257,1258],{"class":816},"getHttpCode",[803,1260,1261],{"class":832},"(); ",[803,1263,1264],{"class":1214},"\u002F\u002F 429\n",[803,1266,1268,1271,1273,1275,1277,1280,1282],{"class":805,"line":1267},16,[803,1269,1270],{"class":832},"    $upstream ",[803,1272,851],{"class":809},[803,1274,1201],{"class":832},[803,1276,1169],{"class":809},[803,1278,1279],{"class":816},"getPrevious",[803,1281,1261],{"class":832},[803,1283,1284],{"class":1214},"\u002F\u002F OpenAI\\Exceptions\\RateLimitException\n",[803,1286,1288],{"class":805,"line":1287},17,[803,1289,1025],{"class":832},[602,1291,1292,1293,1295],{},"The default HTTP code 502 surfaces when an unhandled ",[631,1294,645],{}," bubbles up through the Panel's API proxy.",[779,1297,1299],{"id":1298},"authexception",[631,1300,751],{},[602,1302,1303,1306],{},[631,1304,1305],{},"Kirby\\Exception\\AuthException"," is thrown when an API key is missing.",[712,1308,1309,1318],{},[715,1310,1311],{},[718,1312,1313,1315],{},[721,1314,729],{},[721,1316,1317],{},"Message",[731,1319,1320,1334],{},[718,1321,1322,1329],{},[736,1323,1324,1325,1328],{},"Provider called without ",[631,1326,1327],{},"apiKey"," set",[736,1330,1331],{},[631,1332,1333],{},"Missing API key in \"johannschopplich.copilot.providers.\u003Cname>.apiKey\"",[718,1335,1336,1342],{},[736,1337,1338,1341],{},[631,1339,1340],{},"Client::requireApiKey()"," preflight check",[736,1343,1344],{},"Same message – preflight before kicking off long-running batch ops",[795,1346,1348],{"className":797,"code":1347,"language":799,"meta":663,"style":663},"use JohannSchopplich\\Copilot\\AI\\Client;\nuse Kirby\\Exception\\AuthException;\n\ntry {\n    $client = Client::instance();\n    $client->requireApiKey();\n} catch (AuthException $error) {\n    \u002F\u002F Show a config hint to the user\n}\n",[631,1349,1350,1358,1367,1371,1377,1392,1404,1416,1421],{"__ignoreMap":663},[803,1351,1352,1354,1356],{"class":805,"line":806},[803,1353,1121],{"class":809},[803,1355,1124],{"class":823},[803,1357,858],{"class":832},[803,1359,1360,1362,1365],{"class":805,"line":664},[803,1361,1121],{"class":809},[803,1363,1364],{"class":823}," Kirby\\Exception\\AuthException",[803,1366,858],{"class":832},[803,1368,1369],{"class":805,"line":836},[803,1370,884],{"emptyLinePlaceholder":669},[803,1372,1373,1375],{"class":805,"line":861},[803,1374,1144],{"class":809},[803,1376,1147],{"class":832},[803,1378,1379,1382,1384,1386,1388,1390],{"class":805,"line":881},[803,1380,1381],{"class":832},"    $client ",[803,1383,851],{"class":809},[803,1385,1157],{"class":823},[803,1387,1160],{"class":809},[803,1389,1163],{"class":816},[803,1391,1209],{"class":832},[803,1393,1394,1397,1399,1402],{"class":805,"line":887},[803,1395,1396],{"class":832},"    $client",[803,1398,1169],{"class":809},[803,1400,1401],{"class":816},"requireApiKey",[803,1403,1209],{"class":832},[803,1405,1406,1408,1410,1412,1414],{"class":805,"line":902},[803,1407,1180],{"class":832},[803,1409,1183],{"class":809},[803,1411,1186],{"class":832},[803,1413,751],{"class":823},[803,1415,1191],{"class":832},[803,1417,1418],{"class":805,"line":911},[803,1419,1420],{"class":1214},"    \u002F\u002F Show a config hint to the user\n",[803,1422,1423],{"class":805,"line":920},[803,1424,1025],{"class":832},[779,1426,1428],{"id":1427},"invalidargumentexception",[631,1429,766],{},[602,1431,1432,1435,1436,1439],{},[631,1433,1434],{},"Kirby\\Exception\\InvalidArgumentException"," is thrown by ",[631,1437,1438],{},"Resolver::fromKirbyOptions()"," for misconfiguration.",[712,1441,1442,1450],{},[715,1443,1444],{},[718,1445,1446,1448],{},[721,1447,729],{},[721,1449,1317],{},[731,1451,1452,1464],{},[718,1453,1454,1459],{},[736,1455,1456,1457,777],{},"Missing ",[631,1458,649],{},[736,1460,1461],{},[631,1462,1463],{},"Missing required option \"johannschopplich.copilot.provider\"",[718,1465,1466,1469],{},[736,1467,1468],{},"Unknown provider name",[736,1470,1471],{},[631,1472,1473],{},"Unknown provider \"\u003Cname>\" – set \"johannschopplich.copilot.provider\" to one of: openai, anthropic, google, mistral",[1475,1476,1479],"callout",{"color":1477,"icon":1478,"to":28},"info","i-ri-arrow-right-line",[602,1480,1481,1482,625],{},"For the full configuration reference, see ",[608,1483,27],{},[1485,1486,1487],"style",{},"html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":663,"searchDepth":664,"depth":664,"links":1489},[1490,1495,1496],{"id":781,"depth":664,"text":645,"children":1491},[1492,1493,1494],{"id":1029,"depth":836,"text":1030},{"id":1087,"depth":836,"text":1088},{"id":1110,"depth":836,"text":1111},{"id":1298,"depth":664,"text":751},{"id":1427,"depth":664,"text":766},"Catch upstream provider failures, missing API keys, and configuration errors with three typed exceptions.",{},{"title":119,"description":1497},"7-JLWky7VTMrTU2ratr3VTxbmbkra_CnhChumZ7qKxE",[1502,1504],{"title":115,"path":116,"stem":117,"description":1503,"children":-1},"European AI models for prose generation – structured output coverage is uneven, so prefer Gemini for blocks and layouts.",{"title":128,"path":129,"stem":130,"description":1505,"children":-1},"Turn Copilot into a page builder – generate structured content for built-in and custom blocks with schema-aware AI and real-time streaming.",1778009919280]