[{"data":1,"prerenderedAt":1664},["ShallowReactive",2],{"navigation":3,"copilot-navigation":552,"copilot-version":592,"mdc--4zkox4-key":674,"\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fclient":704,"\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fclient-surround":1659},[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":93,"body":706,"description":1655,"extension":667,"meta":1656,"navigation":669,"path":94,"seo":1657,"stem":95,"__hash__":1658},"docs\u002F1.docs\u002F1.copilot\u002F5.php-classes\u002F2.client.md",{"type":596,"value":707,"toc":1642},[708,718,885,890,1132,1136,1142,1177,1207,1215,1221,1247,1259,1266,1272,1293,1300,1307,1330,1333,1337,1476,1490,1494,1503,1621,1625,1638],[602,709,710,711,713,714,717],{},"Generate AI content from PHP with one method call. The ",[631,712,93],{}," resolves your configured provider from ",[631,715,716],{},"johannschopplich.copilot"," options and dispatches text or structured-output requests – the same path the Panel uses.",[719,720,724],"pre",{"className":721,"code":722,"language":723,"meta":663,"style":663},"language-php shiki shiki-themes github-light github-light github-dark","use JohannSchopplich\\Copilot\\AI\\Client;\n\n$result = Client::instance()->generateObject(\n    messages: [\n        ['role' => 'user', 'content' => \"What's 2+2?\"],\n    ],\n    schema: ['type' => 'object', 'properties' => ['answer' => ['type' => 'integer']], 'required' => ['answer']],\n);\n","php",[631,725,726,743,748,779,788,817,823,879],{"__ignoreMap":663},[727,728,731,735,739],"span",{"class":729,"line":730},"line",1,[727,732,734],{"class":733},"s8jYJ","use",[727,736,738],{"class":737},"sBjJW"," JohannSchopplich\\Copilot\\AI\\Client",[727,740,742],{"class":741},"sxrX7",";\n",[727,744,745],{"class":729,"line":664},[727,746,747],{"emptyLinePlaceholder":669},"\n",[727,749,751,754,757,760,763,767,770,773,776],{"class":729,"line":750},3,[727,752,753],{"class":741},"$result ",[727,755,756],{"class":733},"=",[727,758,759],{"class":737}," Client",[727,761,762],{"class":733},"::",[727,764,766],{"class":765},"snPdu","instance",[727,768,769],{"class":741},"()",[727,771,772],{"class":733},"->",[727,774,775],{"class":765},"generateObject",[727,777,778],{"class":741},"(\n",[727,780,782,785],{"class":729,"line":781},4,[727,783,784],{"class":765},"    messages",[727,786,787],{"class":741},": [\n",[727,789,791,794,798,801,804,806,809,811,814],{"class":729,"line":790},5,[727,792,793],{"class":741},"        [",[727,795,797],{"class":796},"sIIMD","'role'",[727,799,800],{"class":733}," =>",[727,802,803],{"class":796}," 'user'",[727,805,650],{"class":741},[727,807,808],{"class":796},"'content'",[727,810,800],{"class":733},[727,812,813],{"class":796}," \"What's 2+2?\"",[727,815,816],{"class":741},"],\n",[727,818,820],{"class":729,"line":819},6,[727,821,822],{"class":741},"    ],\n",[727,824,826,829,832,835,837,840,842,845,847,850,853,855,857,859,861,864,867,870,872,874,876],{"class":729,"line":825},7,[727,827,828],{"class":765},"    schema",[727,830,831],{"class":741},": [",[727,833,834],{"class":796},"'type'",[727,836,800],{"class":733},[727,838,839],{"class":796}," 'object'",[727,841,650],{"class":741},[727,843,844],{"class":796},"'properties'",[727,846,800],{"class":733},[727,848,849],{"class":741}," [",[727,851,852],{"class":796},"'answer'",[727,854,800],{"class":733},[727,856,849],{"class":741},[727,858,834],{"class":796},[727,860,800],{"class":733},[727,862,863],{"class":796}," 'integer'",[727,865,866],{"class":741},"]], ",[727,868,869],{"class":796},"'required'",[727,871,800],{"class":733},[727,873,849],{"class":741},[727,875,852],{"class":796},[727,877,878],{"class":741},"]],\n",[727,880,882],{"class":729,"line":881},8,[727,883,884],{"class":741},");\n",[886,887,889],"h2",{"id":888},"construction","Construction",[891,892,894,940,1013],"tabs",{":default-value":893},"singleton",[895,896,898,931],"tabs-item",{"label":897,"value":893},"Singleton",[719,899,901],{"className":721,"code":900,"language":723,"meta":663,"style":663},"use JohannSchopplich\\Copilot\\AI\\Client;\n\n$client = Client::instance();\n",[631,902,903,911,915],{"__ignoreMap":663},[727,904,905,907,909],{"class":729,"line":730},[727,906,734],{"class":733},[727,908,738],{"class":737},[727,910,742],{"class":741},[727,912,913],{"class":729,"line":664},[727,914,747],{"emptyLinePlaceholder":669},[727,916,917,920,922,924,926,928],{"class":729,"line":750},[727,918,919],{"class":741},"$client ",[727,921,756],{"class":733},[727,923,759],{"class":737},[727,925,762],{"class":733},[727,927,766],{"class":765},[727,929,930],{"class":741},"();\n",[602,932,933,934,936,937,625],{},"The singleton reads ",[631,935,716],{}," options once and caches the resolved provider until you call ",[631,938,939],{},"Client::reset()",[895,941,944,1006],{"label":942,"value":943},"Manual","manual",[719,945,947],{"className":721,"code":946,"language":723,"meta":663,"style":663},"use JohannSchopplich\\Copilot\\AI\\Client;\nuse JohannSchopplich\\Copilot\\AI\\Resolver;\n\n$client = new Client(\n    resolver: Resolver::fromKirbyOptions(),\n);\n",[631,948,949,957,966,970,983,1002],{"__ignoreMap":663},[727,950,951,953,955],{"class":729,"line":730},[727,952,734],{"class":733},[727,954,738],{"class":737},[727,956,742],{"class":741},[727,958,959,961,964],{"class":729,"line":664},[727,960,734],{"class":733},[727,962,963],{"class":737}," JohannSchopplich\\Copilot\\AI\\Resolver",[727,965,742],{"class":741},[727,967,968],{"class":729,"line":750},[727,969,747],{"emptyLinePlaceholder":669},[727,971,972,974,976,979,981],{"class":729,"line":781},[727,973,919],{"class":741},[727,975,756],{"class":733},[727,977,978],{"class":733}," new",[727,980,759],{"class":737},[727,982,778],{"class":741},[727,984,985,988,991,994,996,999],{"class":729,"line":790},[727,986,987],{"class":765},"    resolver",[727,989,990],{"class":741},": ",[727,992,993],{"class":737},"Resolver",[727,995,762],{"class":733},[727,997,998],{"class":765},"fromKirbyOptions",[727,1000,1001],{"class":741},"(),\n",[727,1003,1004],{"class":729,"line":819},[727,1005,884],{"class":741},[602,1007,1008,1009,1012],{},"A fresh resolution against changed config – useful when an ",[631,1010,1011],{},"apiKey"," closure depends on the current Panel user.",[895,1014,1017,1129],{"label":1015,"value":1016},"Override","override",[719,1018,1020],{"className":721,"code":1019,"language":723,"meta":663,"style":663},"use JohannSchopplich\\Copilot\\AI\\Client;\nuse JohannSchopplich\\Copilot\\AI\\Providers\\OpenAIProvider;\nuse JohannSchopplich\\Copilot\\AI\\ProviderConfig;\n\n$provider = new OpenAIProvider(new ProviderConfig(\n    apiKey: 'sk-test-xxx',\n    model: 'gpt-5.4-mini',\n));\n\n$client = new Client(providerOverride: $provider);\n",[631,1021,1022,1030,1039,1048,1052,1075,1088,1100,1105,1110],{"__ignoreMap":663},[727,1023,1024,1026,1028],{"class":729,"line":730},[727,1025,734],{"class":733},[727,1027,738],{"class":737},[727,1029,742],{"class":741},[727,1031,1032,1034,1037],{"class":729,"line":664},[727,1033,734],{"class":733},[727,1035,1036],{"class":737}," JohannSchopplich\\Copilot\\AI\\Providers\\OpenAIProvider",[727,1038,742],{"class":741},[727,1040,1041,1043,1046],{"class":729,"line":750},[727,1042,734],{"class":733},[727,1044,1045],{"class":737}," JohannSchopplich\\Copilot\\AI\\ProviderConfig",[727,1047,742],{"class":741},[727,1049,1050],{"class":729,"line":781},[727,1051,747],{"emptyLinePlaceholder":669},[727,1053,1054,1057,1059,1061,1064,1067,1070,1073],{"class":729,"line":790},[727,1055,1056],{"class":741},"$provider ",[727,1058,756],{"class":733},[727,1060,978],{"class":733},[727,1062,1063],{"class":737}," OpenAIProvider",[727,1065,1066],{"class":741},"(",[727,1068,1069],{"class":733},"new",[727,1071,1072],{"class":737}," ProviderConfig",[727,1074,778],{"class":741},[727,1076,1077,1080,1082,1085],{"class":729,"line":819},[727,1078,1079],{"class":765},"    apiKey",[727,1081,990],{"class":741},[727,1083,1084],{"class":796},"'sk-test-xxx'",[727,1086,1087],{"class":741},",\n",[727,1089,1090,1093,1095,1098],{"class":729,"line":825},[727,1091,1092],{"class":765},"    model",[727,1094,990],{"class":741},[727,1096,1097],{"class":796},"'gpt-5.4-mini'",[727,1099,1087],{"class":741},[727,1101,1102],{"class":729,"line":881},[727,1103,1104],{"class":741},"));\n",[727,1106,1108],{"class":729,"line":1107},9,[727,1109,747],{"emptyLinePlaceholder":669},[727,1111,1113,1115,1117,1119,1121,1123,1126],{"class":729,"line":1112},10,[727,1114,919],{"class":741},[727,1116,756],{"class":733},[727,1118,978],{"class":733},[727,1120,759],{"class":737},[727,1122,1066],{"class":741},[727,1124,1125],{"class":765},"providerOverride",[727,1127,1128],{"class":741},": $provider);\n",[602,1130,1131],{},"Bypass the resolver entirely. Intended for tests and one-off scripts.",[886,1133,1135],{"id":1134},"methods","Methods",[1137,1138,1140],"h3",{"id":1139},"generateobject",[631,1141,775],{},[719,1143,1145],{"className":721,"code":1144,"language":723,"meta":663,"style":663},"public function generateObject(array $messages, array $schema): array\n",[631,1146,1147],{"__ignoreMap":663},[727,1148,1149,1152,1155,1158,1160,1163,1166,1168,1171,1174],{"class":729,"line":730},[727,1150,1151],{"class":733},"public",[727,1153,1154],{"class":733}," function",[727,1156,1157],{"class":765}," generateObject",[727,1159,1066],{"class":741},[727,1161,1162],{"class":733},"array",[727,1164,1165],{"class":741}," $messages, ",[727,1167,1162],{"class":733},[727,1169,1170],{"class":741}," $schema)",[727,1172,1173],{"class":733},":",[727,1175,1176],{"class":733}," array\n",[1178,1179,1180,1200],"field-group",{},[1181,1182,1185],"field",{"name":1183,"type":1184},"messages","list\u003Carray{role: string, content: string}>",[602,1186,1187,1188,1191,1192,1195,1196,1199],{},"Chat messages. The first ",[631,1189,1190],{},"system"," message is forwarded; the rest become ",[631,1193,1194],{},"user"," \u002F ",[631,1197,1198],{},"assistant"," turns.",[1181,1201,1204],{"name":1202,"type":1203},"schema","array\u003Cstring, mixed>",[602,1205,1206],{},"JSON Schema for the response. The provider enforces it via the appropriate structured-output mechanism for its API.",[602,1208,1209,1210,1214],{},"Returns the decoded JSON response as an associative array. Throws ",[622,1211,1212],{"href":120},[631,1213,645],{}," on any failure.",[1137,1216,1218],{"id":1217},"generatetext",[631,1219,1220],{},"generateText",[719,1222,1224],{"className":721,"code":1223,"language":723,"meta":663,"style":663},"public function generateText(array $messages): string\n",[631,1225,1226],{"__ignoreMap":663},[727,1227,1228,1230,1232,1235,1237,1239,1242,1244],{"class":729,"line":730},[727,1229,1151],{"class":733},[727,1231,1154],{"class":733},[727,1233,1234],{"class":765}," generateText",[727,1236,1066],{"class":741},[727,1238,1162],{"class":733},[727,1240,1241],{"class":741}," $messages)",[727,1243,1173],{"class":733},[727,1245,1246],{"class":733}," string\n",[1178,1248,1249],{},[1181,1250,1251],{"name":1183,"type":1184},[602,1252,1187,1253,1191,1255,1195,1257,1199],{},[631,1254,1190],{},[631,1256,1194],{},[631,1258,1198],{},[602,1260,1261,1262,1214],{},"Returns the response text as a plain string. Throws ",[622,1263,1264],{"href":120},[631,1265,645],{},[1137,1267,1269],{"id":1268},"requireapikey",[631,1270,1271],{},"requireApiKey",[719,1273,1275],{"className":721,"code":1274,"language":723,"meta":663,"style":663},"public function requireApiKey(): void\n",[631,1276,1277],{"__ignoreMap":663},[727,1278,1279,1281,1283,1286,1288,1290],{"class":729,"line":730},[727,1280,1151],{"class":733},[727,1282,1154],{"class":733},[727,1284,1285],{"class":765}," requireApiKey",[727,1287,769],{"class":741},[727,1289,1173],{"class":733},[727,1291,1292],{"class":733}," void\n",[602,1294,1295,1296,1299],{},"Asserts that the active provider has an API key configured. Throws ",[631,1297,1298],{},"Kirby\\Exception\\AuthException"," with a message pointing to the missing config path. Useful as a preflight before kicking off a long batch operation.",[1137,1301,1303,1306],{"id":1302},"reset-static",[631,1304,1305],{},"reset"," (static)",[719,1308,1310],{"className":721,"code":1309,"language":723,"meta":663,"style":663},"public static function reset(): void\n",[631,1311,1312],{"__ignoreMap":663},[727,1313,1314,1316,1319,1321,1324,1326,1328],{"class":729,"line":730},[727,1315,1151],{"class":733},[727,1317,1318],{"class":733}," static",[727,1320,1154],{"class":733},[727,1322,1323],{"class":765}," reset",[727,1325,769],{"class":741},[727,1327,1173],{"class":733},[727,1329,1292],{"class":733},[602,1331,1332],{},"Clear the cached singleton. Call this in tests that swap config between cases.",[886,1334,1336],{"id":1335},"error-handling","Error Handling",[719,1338,1340],{"className":721,"code":1339,"language":723,"meta":663,"style":663},"use JohannSchopplich\\Copilot\\AI\\Client;\nuse JohannSchopplich\\Copilot\\AI\\Exception\\ProviderException;\nuse Kirby\\Exception\\AuthException;\n\ntry {\n    $client = Client::instance();\n    $client->requireApiKey();\n\n    $result = $client->generateObject($messages, $schema);\n} catch (AuthException $error) {\n    \u002F\u002F Missing API key\n} catch (ProviderException $error) {\n    \u002F\u002F Upstream failure – $error->getDetails() carries provider\u002Fmodel\u002Fresponse context\n}\n",[631,1341,1342,1350,1359,1368,1372,1380,1395,1406,1410,1427,1444,1451,1464,1470],{"__ignoreMap":663},[727,1343,1344,1346,1348],{"class":729,"line":730},[727,1345,734],{"class":733},[727,1347,738],{"class":737},[727,1349,742],{"class":741},[727,1351,1352,1354,1357],{"class":729,"line":664},[727,1353,734],{"class":733},[727,1355,1356],{"class":737}," JohannSchopplich\\Copilot\\AI\\Exception\\ProviderException",[727,1358,742],{"class":741},[727,1360,1361,1363,1366],{"class":729,"line":750},[727,1362,734],{"class":733},[727,1364,1365],{"class":737}," Kirby\\Exception\\AuthException",[727,1367,742],{"class":741},[727,1369,1370],{"class":729,"line":781},[727,1371,747],{"emptyLinePlaceholder":669},[727,1373,1374,1377],{"class":729,"line":790},[727,1375,1376],{"class":733},"try",[727,1378,1379],{"class":741}," {\n",[727,1381,1382,1385,1387,1389,1391,1393],{"class":729,"line":819},[727,1383,1384],{"class":741},"    $client ",[727,1386,756],{"class":733},[727,1388,759],{"class":737},[727,1390,762],{"class":733},[727,1392,766],{"class":765},[727,1394,930],{"class":741},[727,1396,1397,1400,1402,1404],{"class":729,"line":825},[727,1398,1399],{"class":741},"    $client",[727,1401,772],{"class":733},[727,1403,1271],{"class":765},[727,1405,930],{"class":741},[727,1407,1408],{"class":729,"line":881},[727,1409,747],{"emptyLinePlaceholder":669},[727,1411,1412,1415,1417,1420,1422,1424],{"class":729,"line":1107},[727,1413,1414],{"class":741},"    $result ",[727,1416,756],{"class":733},[727,1418,1419],{"class":741}," $client",[727,1421,772],{"class":733},[727,1423,775],{"class":765},[727,1425,1426],{"class":741},"($messages, $schema);\n",[727,1428,1429,1432,1435,1438,1441],{"class":729,"line":1112},[727,1430,1431],{"class":741},"} ",[727,1433,1434],{"class":733},"catch",[727,1436,1437],{"class":741}," (",[727,1439,1440],{"class":737},"AuthException",[727,1442,1443],{"class":741}," $error) {\n",[727,1445,1447],{"class":729,"line":1446},11,[727,1448,1450],{"class":1449},"sCsY4","    \u002F\u002F Missing API key\n",[727,1452,1454,1456,1458,1460,1462],{"class":729,"line":1453},12,[727,1455,1431],{"class":741},[727,1457,1434],{"class":733},[727,1459,1437],{"class":741},[727,1461,645],{"class":737},[727,1463,1443],{"class":741},[727,1465,1467],{"class":729,"line":1466},13,[727,1468,1469],{"class":1449},"    \u002F\u002F Upstream failure – $error->getDetails() carries provider\u002Fmodel\u002Fresponse context\n",[727,1471,1473],{"class":729,"line":1472},14,[727,1474,1475],{"class":741},"}\n",[1477,1478,1481],"callout",{"color":1479,"icon":1480,"to":120},"info","i-ri-arrow-right-line",[602,1482,1483,1484,1486,1487,1489],{},"See ",[608,1485,119],{}," for the full ",[631,1488,645],{}," payload.",[886,1491,1493],{"id":1492},"forcing-a-provider-for-one-call","Forcing a Provider for One Call",[602,1495,1496,1497,1500,1501,1173],{},"The resolver always dispatches to the provider set at ",[631,1498,1499],{},"johannschopplich.copilot.provider",". To force a different one for a single call, use ",[631,1502,1125],{},[719,1504,1506],{"className":721,"code":1505,"language":723,"meta":663,"style":663},"use JohannSchopplich\\Copilot\\AI\\Client;\nuse JohannSchopplich\\Copilot\\AI\\Providers\\AnthropicProvider;\nuse JohannSchopplich\\Copilot\\AI\\Resolver;\nuse JohannSchopplich\\Copilot\\AI\\ProviderName;\n\n$config = Resolver::fromKirbyOptions()->forProvider(ProviderName::Anthropic);\n$client = new Client(providerOverride: new AnthropicProvider($config));\n\n$result = $client->generateObject($messages, $schema);\n",[631,1507,1508,1516,1525,1533,1542,1546,1579,1603,1607],{"__ignoreMap":663},[727,1509,1510,1512,1514],{"class":729,"line":730},[727,1511,734],{"class":733},[727,1513,738],{"class":737},[727,1515,742],{"class":741},[727,1517,1518,1520,1523],{"class":729,"line":664},[727,1519,734],{"class":733},[727,1521,1522],{"class":737}," JohannSchopplich\\Copilot\\AI\\Providers\\AnthropicProvider",[727,1524,742],{"class":741},[727,1526,1527,1529,1531],{"class":729,"line":750},[727,1528,734],{"class":733},[727,1530,963],{"class":737},[727,1532,742],{"class":741},[727,1534,1535,1537,1540],{"class":729,"line":781},[727,1536,734],{"class":733},[727,1538,1539],{"class":737}," JohannSchopplich\\Copilot\\AI\\ProviderName",[727,1541,742],{"class":741},[727,1543,1544],{"class":729,"line":790},[727,1545,747],{"emptyLinePlaceholder":669},[727,1547,1548,1551,1553,1556,1558,1560,1562,1564,1567,1569,1572,1574,1577],{"class":729,"line":819},[727,1549,1550],{"class":741},"$config ",[727,1552,756],{"class":733},[727,1554,1555],{"class":737}," Resolver",[727,1557,762],{"class":733},[727,1559,998],{"class":765},[727,1561,769],{"class":741},[727,1563,772],{"class":733},[727,1565,1566],{"class":765},"forProvider",[727,1568,1066],{"class":741},[727,1570,1571],{"class":737},"ProviderName",[727,1573,762],{"class":733},[727,1575,1576],{"class":737},"Anthropic",[727,1578,884],{"class":741},[727,1580,1581,1583,1585,1587,1589,1591,1593,1595,1597,1600],{"class":729,"line":825},[727,1582,919],{"class":741},[727,1584,756],{"class":733},[727,1586,978],{"class":733},[727,1588,759],{"class":737},[727,1590,1066],{"class":741},[727,1592,1125],{"class":765},[727,1594,990],{"class":741},[727,1596,1069],{"class":733},[727,1598,1599],{"class":737}," AnthropicProvider",[727,1601,1602],{"class":741},"($config));\n",[727,1604,1605],{"class":729,"line":881},[727,1606,747],{"emptyLinePlaceholder":669},[727,1608,1609,1611,1613,1615,1617,1619],{"class":729,"line":1107},[727,1610,753],{"class":741},[727,1612,756],{"class":733},[727,1614,1419],{"class":741},[727,1616,772],{"class":733},[727,1618,775],{"class":765},[727,1620,1426],{"class":741},[886,1622,1624],{"id":1623},"use-from-a-sister-plugin","Use From a Sister Plugin",[602,1626,1627,1628,1630,1631,1633,1634,1637],{},"The Copilot AI strategy in ",[622,1629,140],{"href":142}," is a working example of consuming ",[631,1632,633],{}," from another plugin. See ",[622,1635,1636],{"href":263},"the AI Strategy CLI script"," for a complete page-translation workflow that selects the AI strategy at call time.",[1639,1640,1641],"style",{},"html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}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 .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}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":1643},[1644,1645,1652,1653,1654],{"id":888,"depth":664,"text":889},{"id":1134,"depth":664,"text":1135,"children":1646},[1647,1648,1649,1650],{"id":1139,"depth":750,"text":775},{"id":1217,"depth":750,"text":1220},{"id":1268,"depth":750,"text":1271},{"id":1302,"depth":750,"text":1651},"reset (static)",{"id":1335,"depth":664,"text":1336},{"id":1492,"depth":664,"text":1493},{"id":1623,"depth":664,"text":1624},"Generate text or structured JSON from any PHP context with one method call – CLI commands, hooks, custom controllers.",{},{"title":93,"description":1655},"CvCtcbG2BGHDL4OAdyO7YPOMP2lQjkJCa0yFWkc8MR4",[1660,1662],{"title":91,"path":87,"stem":88,"description":1661,"children":-1},"Drive Copilot from PHP – the same provider stack the Panel uses, available to CLI commands, hooks, and custom workflows.",{"title":91,"path":98,"stem":99,"description":1663,"children":-1},"Switch between OpenAI, Anthropic, Gemini, or Mistral – or plug in your own provider – without changing your call sites.",1778009919231]