[{"data":1,"prerenderedAt":3591},["ShallowReactive",2],{"navigation_docs":3,"docs-page:\u002Freference\u002Fplugin-manifest\u002Fdependencies":1849,"docs-surround:\u002Freference\u002Fplugin-manifest\u002Fdependencies":3586},[4,72,214,304,947,1040,1230,1504,1590,1701,1830],{"title":5,"path":6,"stem":7,"children":8,"icon":71},"Get started","\u002Fgetting-started","01.getting-started\u002F00.index",[9,10,15,20,25,36],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","01.getting-started\u002F01.introduction","i-ph-house",{"title":16,"path":17,"stem":18,"icon":19},"Quickstart","\u002Fgetting-started\u002Fquickstart","01.getting-started\u002F02.quickstart","i-ph-rocket-launch",{"title":21,"path":22,"stem":23,"icon":24},"Concepts","\u002Fgetting-started\u002Fconcepts","01.getting-started\u002F03.concepts","i-ph-book-open",{"title":26,"path":27,"stem":28,"children":29,"icon":31},"Install","\u002Fgetting-started\u002Finstall","01.getting-started\u002F04.install\u002F00.index",[30,32],{"title":26,"path":27,"stem":28,"icon":31},"i-ph-download-simple",{"title":33,"path":34,"stem":35},"Prepare the Linux sandbox","\u002Fgetting-started\u002Finstall\u002Flinux-sandbox","01.getting-started\u002F04.install\u002F01.linux-sandbox",{"title":37,"path":38,"stem":39,"children":40,"icon":42},"Web UI","\u002Fgetting-started\u002Fweb-ui","01.getting-started\u002F05.web-ui\u002F00.index",[41,43,47,51,55,59,63,67],{"title":37,"path":38,"stem":39,"icon":42},"i-ph-monitor",{"title":44,"path":45,"stem":46},"Choose a tenant","\u002Fgetting-started\u002Fweb-ui\u002Ftenants","01.getting-started\u002F05.web-ui\u002F01.tenants",{"title":48,"path":49,"stem":50},"Find a page","\u002Fgetting-started\u002Fweb-ui\u002Fnavigation","01.getting-started\u002F05.web-ui\u002F02.navigation",{"title":52,"path":53,"stem":54},"Use the chat drawer","\u002Fgetting-started\u002Fweb-ui\u002Fchats","01.getting-started\u002F05.web-ui\u002F03.chats",{"title":56,"path":57,"stem":58},"Create and edit records","\u002Fgetting-started\u002Fweb-ui\u002Fforms","01.getting-started\u002F05.web-ui\u002F04.forms",{"title":60,"path":61,"stem":62},"Keyboard and accessibility","\u002Fgetting-started\u002Fweb-ui\u002Faccessibility","01.getting-started\u002F05.web-ui\u002F05.accessibility",{"title":64,"path":65,"stem":66},"Accounts and permissions","\u002Fgetting-started\u002Fweb-ui\u002Faccounts","01.getting-started\u002F05.web-ui\u002F06.accounts",{"title":68,"path":69,"stem":70},"Console page directory","\u002Fgetting-started\u002Fweb-ui\u002Fpage-directory","01.getting-started\u002F05.web-ui\u002F07.page-directory",false,{"title":21,"path":73,"stem":74,"children":75,"icon":71},"\u002Fconcepts","02.concepts\u002F00.index",[76,77,82,87,92,123,128,143,166,185,204,209],{"title":21,"path":73,"stem":74},{"title":78,"path":79,"stem":80,"icon":81},"Architecture","\u002Fconcepts\u002Farchitecture","02.concepts\u002F01.architecture","i-ph-planet",{"title":83,"path":84,"stem":85,"icon":86},"Jobs and durability","\u002Fconcepts\u002Fjobs","02.concepts\u002F02.jobs","i-ph-infinity",{"title":88,"path":89,"stem":90,"icon":91},"Routing","\u002Fconcepts\u002Frouting","02.concepts\u002F03.routing","i-ph-path",{"title":93,"path":94,"stem":95,"children":96,"icon":98},"Security model","\u002Fconcepts\u002Fsecurity","02.concepts\u002F04.security\u002F00.index",[97,99,103,107,111,115,119],{"title":93,"path":94,"stem":95,"icon":98},"i-ph-shield-check",{"title":100,"path":101,"stem":102},"Node identity and tenant secrets","\u002Fconcepts\u002Fsecurity\u002Fidentity-and-secrets","02.concepts\u002F04.security\u002F01.identity-and-secrets",{"title":104,"path":105,"stem":106},"Plugin processes and operator exemptions","\u002Fconcepts\u002Fsecurity\u002Fplugins","02.concepts\u002F04.security\u002F02.plugins",{"title":108,"path":109,"stem":110},"Sandbox tiers and routing","\u002Fconcepts\u002Fsecurity\u002Fsandbox-tiers","02.concepts\u002F04.security\u002F03.sandbox-tiers",{"title":112,"path":113,"stem":114},"Sandbox egress rules","\u002Fconcepts\u002Fsecurity\u002Fegress","02.concepts\u002F04.security\u002F04.egress",{"title":116,"path":117,"stem":118},"Protected files and sandbox limits","\u002Fconcepts\u002Fsecurity\u002Fprotected-files","02.concepts\u002F04.security\u002F05.protected-files",{"title":120,"path":121,"stem":122},"Security assurance","\u002Fconcepts\u002Fsecurity\u002Fassurance","02.concepts\u002F04.security\u002F06.assurance",{"title":124,"path":125,"stem":126,"icon":127},"Temporal","\u002Fconcepts\u002Ftemporal","02.concepts\u002F05.temporal","i-ph-clock",{"title":129,"path":130,"stem":131,"children":132,"icon":134},"Limits and scaling","\u002Fconcepts\u002Flimits-and-scaling","02.concepts\u002F06.limits-and-scaling\u002F00.index",[133,135,139],{"title":129,"path":130,"stem":131,"icon":134},"i-ph-gauge",{"title":136,"path":137,"stem":138},"Tenant and queue limits","\u002Fconcepts\u002Flimits-and-scaling\u002Flimits","02.concepts\u002F06.limits-and-scaling\u002F01.limits",{"title":140,"path":141,"stem":142},"Capacity measurements","\u002Fconcepts\u002Flimits-and-scaling\u002Fmeasurements","02.concepts\u002F06.limits-and-scaling\u002F02.measurements",{"title":144,"path":145,"stem":146,"children":147,"icon":149},"Threat model","\u002Fconcepts\u002Fthreat-model","02.concepts\u002F07.threat-model\u002F00.index",[148,150,154,158,162],{"title":144,"path":145,"stem":146,"icon":149},"i-ph-crosshair",{"title":151,"path":152,"stem":153},"Trust boundaries and compromise","\u002Fconcepts\u002Fthreat-model\u002Ftrust-boundaries","02.concepts\u002F07.threat-model\u002F01.trust-boundaries",{"title":155,"path":156,"stem":157},"Harness and tool boundaries","\u002Fconcepts\u002Fthreat-model\u002Fharness-tools","02.concepts\u002F07.threat-model\u002F02.harness-tools",{"title":159,"path":160,"stem":161},"Known security gaps","\u002Fconcepts\u002Fthreat-model\u002Fknown-gaps","02.concepts\u002F07.threat-model\u002F03.known-gaps",{"title":163,"path":164,"stem":165},"Origins, sequences and tool results","\u002Fconcepts\u002Fthreat-model\u002Forigins-and-results","02.concepts\u002F07.threat-model\u002F04.origins-and-results",{"title":167,"path":168,"stem":169,"children":170,"icon":172},"Outbound connections","\u002Fconcepts\u002Foutbound-connections","02.concepts\u002F08.outbound-connections\u002F00.index",[171,173,177,181],{"title":167,"path":168,"stem":169,"icon":172},"i-ph-arrow-square-out",{"title":174,"path":175,"stem":176},"Server outbound connections","\u002Fconcepts\u002Foutbound-connections\u002Fserver","02.concepts\u002F08.outbound-connections\u002F01.server",{"title":178,"path":179,"stem":180},"Node and plugin outbound connections","\u002Fconcepts\u002Foutbound-connections\u002Fnodes-and-plugins","02.concepts\u002F08.outbound-connections\u002F02.nodes-and-plugins",{"title":182,"path":183,"stem":184},"Addresses a model provider fetches","\u002Fconcepts\u002Foutbound-connections\u002Fprovider-fetches","02.concepts\u002F08.outbound-connections\u002F03.provider-fetches",{"title":186,"path":187,"stem":188,"children":189,"icon":191},"Run receipts","\u002Fconcepts\u002Frun-receipts","02.concepts\u002F09.run-receipts\u002F00.index",[190,192,196,200],{"title":186,"path":187,"stem":188,"icon":191},"i-ph-receipt",{"title":193,"path":194,"stem":195},"Authority envelopes and delegation","\u002Fconcepts\u002Frun-receipts\u002Fauthority","02.concepts\u002F09.run-receipts\u002F01.authority",{"title":197,"path":198,"stem":199},"Call bindings and budget charges","\u002Fconcepts\u002Frun-receipts\u002Fcalls-and-charges","02.concepts\u002F09.run-receipts\u002F02.calls-and-charges",{"title":201,"path":202,"stem":203},"Verify run receipts offline","\u002Fconcepts\u002Frun-receipts\u002Fverify","02.concepts\u002F09.run-receipts\u002F03.verify",{"title":205,"path":206,"stem":207,"icon":208},"Delegation and identity","\u002Fconcepts\u002Fdelegation-and-identity","02.concepts\u002F10.delegation-and-identity","i-ph-identification-badge",{"title":210,"path":211,"stem":212,"icon":213},"How a tool call is decided","\u002Fconcepts\u002Fhow-a-tool-call-is-decided","02.concepts\u002F11.how-a-tool-call-is-decided","i-ph-list-checks",{"title":215,"path":216,"stem":217,"children":218,"icon":71},"Run","\u002Fagents","03.agents\u002F00.index",[219,221,226,231,236,240,245,250,268,299],{"title":220,"path":216,"stem":217},"Run agents",{"title":222,"path":223,"stem":224,"icon":225},"Run jobs","\u002Fagents\u002Frun-jobs","03.agents\u002F01.run-jobs","i-ph-play",{"title":227,"path":228,"stem":229,"icon":230},"Job history","\u002Fagents\u002Fhistory","03.agents\u002F02.history","i-ph-clock-counter-clockwise",{"title":232,"path":233,"stem":234,"icon":235},"Long jobs","\u002Fagents\u002Flong-jobs","03.agents\u002F03.long-jobs","i-ph-hourglass-medium",{"title":237,"path":238,"stem":239,"icon":235},"Waiting for events","\u002Fagents\u002Fwaiting-for-events","03.agents\u002F04.waiting-for-events",{"title":241,"path":242,"stem":243,"icon":244},"Delegation","\u002Fagents\u002Fdelegation","03.agents\u002F05.delegation","i-ph-git-fork",{"title":246,"path":247,"stem":248,"icon":249},"Colleagues and the board","\u002Fagents\u002Fcolleagues","03.agents\u002F06.colleagues","i-ph-chats-circle",{"title":251,"path":252,"stem":253,"children":254,"icon":249},"Conversations","\u002Fagents\u002Fconversations","03.agents\u002F07.conversations\u002F00.index",[255,256,260,264],{"title":251,"path":252,"stem":253,"icon":249},{"title":257,"path":258,"stem":259},"Conversation access and history","\u002Fagents\u002Fconversations\u002Faccess-and-history","03.agents\u002F07.conversations\u002F02.access-and-history",{"title":261,"path":262,"stem":263},"Use conversations from an app","\u002Fagents\u002Fconversations\u002Fapps","03.agents\u002F07.conversations\u002F03.apps",{"title":265,"path":266,"stem":267},"Hand off a conversation and use Ask","\u002Fagents\u002Fconversations\u002Fhandoffs-and-ask","03.agents\u002F07.conversations\u002F04.handoffs-and-ask",{"title":269,"path":270,"stem":271,"children":272,"icon":274},"Decide an approval","\u002Fagents\u002Fapprovals","03.agents\u002F08.approvals\u002F00.index",[273,275,279,283,287,291,295],{"title":269,"path":270,"stem":271,"icon":274},"i-ph-hand-palm",{"title":276,"path":277,"stem":278},"Configure approval ownership and deadlines","\u002Fagents\u002Fapprovals\u002Fconfigure","03.agents\u002F08.approvals\u002F02.configure",{"title":280,"path":281,"stem":282},"How approval decisions bind a call","\u002Fagents\u002Fapprovals\u002Fsecurity","03.agents\u002F08.approvals\u002F03.security",{"title":284,"path":285,"stem":286},"Edit an approval or allow repeated calls","\u002Fagents\u002Fapprovals\u002Fedits-and-repeat-calls","03.agents\u002F08.approvals\u002F04.edits-and-repeat-calls",{"title":288,"path":289,"stem":290},"Resolve loop, budget and recovery waits","\u002Fagents\u002Fapprovals\u002Frecovery","03.agents\u002F08.approvals\u002F05.recovery",{"title":292,"path":293,"stem":294},"Review approval statistics and test cards","\u002Fagents\u002Fapprovals\u002Fstatistics","03.agents\u002F08.approvals\u002F06.statistics",{"title":296,"path":297,"stem":298},"Decide approvals from an app","\u002Fagents\u002Fapprovals\u002Fapps","03.agents\u002F08.approvals\u002F07.apps",{"title":300,"path":301,"stem":302,"icon":303},"Asking people","\u002Fagents\u002Fasking-people","03.agents\u002F09.asking-people","i-ph-chat-circle-dots",{"title":305,"path":306,"stem":307,"children":308,"icon":71},"Build","\u002Fbuild","04.build\u002F00.index",[309,310,655,844],{"title":305,"path":306,"stem":307},{"title":311,"path":312,"stem":313,"children":314,"icon":71},"Plugins","\u002Fbuild\u002Fplugins","04.build\u002F01.plugins\u002F00.index",[315,316,321,352,357,362,367,378,397,412,417,422,427,442,447,452,457,472,476,481,492,497,502,640],{"title":311,"path":312,"stem":313},{"title":317,"path":318,"stem":319,"icon":320},"What a plugin is","\u002Fbuild\u002Fplugins\u002Foverview","04.build\u002F01.plugins\u002F01.overview","i-ph-puzzle-piece",{"title":322,"path":323,"stem":324,"children":325,"icon":327},"Install a plugin","\u002Fbuild\u002Fplugins\u002Finstall","04.build\u002F01.plugins\u002F02.install\u002F00.index",[326,328,332,336,340,344,348],{"title":322,"path":323,"stem":324,"icon":327},"i-ph-package",{"title":329,"path":330,"stem":331,"icon":327},"Review an install","\u002Fbuild\u002Fplugins\u002Finstall\u002Freview","04.build\u002F01.plugins\u002F02.install\u002F01.review",{"title":333,"path":334,"stem":335,"icon":327},"Install from a source","\u002Fbuild\u002Fplugins\u002Finstall\u002Fsources","04.build\u002F01.plugins\u002F02.install\u002F02.sources",{"title":337,"path":338,"stem":339,"icon":327},"Update a plugin","\u002Fbuild\u002Fplugins\u002Finstall\u002Fupdate","04.build\u002F01.plugins\u002F02.install\u002F03.update",{"title":341,"path":342,"stem":343,"icon":327},"Roll out a plugin","\u002Fbuild\u002Fplugins\u002Finstall\u002Frollouts","04.build\u002F01.plugins\u002F02.install\u002F04.rollouts",{"title":345,"path":346,"stem":347,"icon":327},"Grant access between plugins","\u002Fbuild\u002Fplugins\u002Finstall\u002Fgrants","04.build\u002F01.plugins\u002F02.install\u002F05.grants",{"title":349,"path":350,"stem":351,"icon":327},"Retire or remove a plugin","\u002Fbuild\u002Fplugins\u002Finstall\u002Fretire-and-remove","04.build\u002F01.plugins\u002F02.install\u002F06.retire-and-remove",{"title":353,"path":354,"stem":355,"icon":356},"Configure an installed plugin","\u002Fbuild\u002Fplugins\u002Fconfigure","04.build\u002F01.plugins\u002F03.configure","i-ph-sliders-horizontal",{"title":358,"path":359,"stem":360,"icon":361},"Sets","\u002Fbuild\u002Fplugins\u002Fsets","04.build\u002F01.plugins\u002F04.sets","i-ph-stack",{"title":363,"path":364,"stem":365,"icon":366},"Your first plugin","\u002Fbuild\u002Fplugins\u002Ffirst-plugin","04.build\u002F01.plugins\u002F05.first-plugin","i-ph-hammer",{"title":368,"path":369,"stem":370,"children":371,"icon":373},"Structure a plugin","\u002Fbuild\u002Fplugins\u002Fstructure","04.build\u002F01.plugins\u002F06.structure\u002F00.index",[372,374],{"title":368,"path":369,"stem":370,"icon":373},"i-ph-tree-structure",{"title":375,"path":376,"stem":377,"icon":373},"Plugin structure rules","\u002Fbuild\u002Fplugins\u002Fstructure\u002Flint-rules","04.build\u002F01.plugins\u002F06.structure\u002F01.lint-rules",{"title":379,"path":380,"stem":381,"children":382,"icon":384},"Develop a plugin","\u002Fbuild\u002Fplugins\u002Fdevelop-and-test","04.build\u002F01.plugins\u002F07.develop-and-test\u002F00.index",[383,385,389,393],{"title":379,"path":380,"stem":381,"icon":384},"i-ph-flask",{"title":386,"path":387,"stem":388,"icon":384},"Check a plugin candidate","\u002Fbuild\u002Fplugins\u002Fdevelop-and-test\u002Fcandidate-checks","04.build\u002F01.plugins\u002F07.develop-and-test\u002F01.candidate-checks",{"title":390,"path":391,"stem":392,"icon":384},"Lint and test a plugin","\u002Fbuild\u002Fplugins\u002Fdevelop-and-test\u002Flint-and-tests","04.build\u002F01.plugins\u002F07.develop-and-test\u002F02.lint-and-tests",{"title":394,"path":395,"stem":396,"icon":384},"Run failure drills","\u002Fbuild\u002Fplugins\u002Fdevelop-and-test\u002Ftests-and-drills","04.build\u002F01.plugins\u002F07.develop-and-test\u002F03.tests-and-drills",{"title":398,"path":399,"stem":400,"children":401,"icon":403},"Build in Studio","\u002Fbuild\u002Fplugins\u002Fstudio","04.build\u002F01.plugins\u002F08.studio\u002F00.index",[402,404,408],{"title":398,"path":399,"stem":400,"icon":403},"i-ph-code",{"title":405,"path":406,"stem":407,"icon":403},"Test and explain a draft","\u002Fbuild\u002Fplugins\u002Fstudio\u002Ftest-and-explain","04.build\u002F01.plugins\u002F08.studio\u002F01.test-and-explain",{"title":409,"path":410,"stem":411,"icon":403},"Release a workspace plugin","\u002Fbuild\u002Fplugins\u002Fstudio\u002Frelease","04.build\u002F01.plugins\u002F08.studio\u002F02.release",{"title":413,"path":414,"stem":415,"icon":416},"The build kit","\u002Fbuild\u002Fplugins\u002Fclaude-code","04.build\u002F01.plugins\u002F09.claude-code","i-ph-sparkle",{"title":418,"path":419,"stem":420,"icon":421},"Example: support triage","\u002Fbuild\u002Fplugins\u002Fexample-support-triage","04.build\u002F01.plugins\u002F10.example-support-triage","i-ph-lifebuoy",{"title":423,"path":424,"stem":425,"icon":426},"Publish and version","\u002Fbuild\u002Fplugins\u002Fpublish","04.build\u002F01.plugins\u002F11.publish","i-ph-tag",{"title":428,"path":429,"stem":430,"children":431,"icon":433},"List a plugin","\u002Fbuild\u002Fplugins\u002Flist-a-plugin","04.build\u002F01.plugins\u002F12.list-a-plugin\u002F00.index",[432,434,438],{"title":428,"path":429,"stem":430,"icon":433},"i-ph-storefront",{"title":435,"path":436,"stem":437,"icon":433},"Hub review checks","\u002Fbuild\u002Fplugins\u002Flist-a-plugin\u002Freview","04.build\u002F01.plugins\u002F12.list-a-plugin\u002F01.review",{"title":439,"path":440,"stem":441,"icon":433},"Maintain a listing","\u002Fbuild\u002Fplugins\u002Flist-a-plugin\u002Fmaintain","04.build\u002F01.plugins\u002F12.list-a-plugin\u002F02.maintain",{"title":443,"path":444,"stem":445,"icon":446},"The catalog","\u002Fbuild\u002Fplugins\u002Fcatalog","04.build\u002F01.plugins\u002F13.catalog","i-ph-books",{"title":448,"path":449,"stem":450,"icon":451},"Folders, bundles and OCI","\u002Fbuild\u002Fplugins\u002Fsources","04.build\u002F01.plugins\u002F14.sources","i-ph-archive",{"title":453,"path":454,"stem":455,"icon":456},"The workspace","\u002Fbuild\u002Fplugins\u002Fworkspace","04.build\u002F01.plugins\u002F15.workspace","i-ph-folder-notch-open",{"title":458,"path":459,"stem":460,"children":461,"icon":463},"Use a plugin index","\u002Fbuild\u002Fplugins\u002Findexes","04.build\u002F01.plugins\u002F16.indexes\u002F00.index",[462,464,468],{"title":458,"path":459,"stem":460,"icon":463},"i-ph-seal-check",{"title":465,"path":466,"stem":467,"icon":463},"Read index version records","\u002Fbuild\u002Fplugins\u002Findexes\u002Fversion-records","04.build\u002F01.plugins\u002F16.indexes\u002F01.version-records",{"title":469,"path":470,"stem":471,"icon":463},"Manage plugin indexes","\u002Fbuild\u002Fplugins\u002Findexes\u002Fmanage","04.build\u002F01.plugins\u002F16.indexes\u002F02.manage",{"title":473,"path":474,"stem":475,"icon":327},"Existing MCP packages","\u002Fbuild\u002Fplugins\u002Fpackages","04.build\u002F01.plugins\u002F17.packages",{"title":477,"path":478,"stem":479,"icon":480},"MCP servers from container images","\u002Fbuild\u002Fplugins\u002Fcontainer-images","04.build\u002F01.plugins\u002F18.container-images","i-ph-cube",{"title":482,"path":483,"stem":484,"children":485,"icon":487},"Import agent plugins","\u002Fbuild\u002Fplugins\u002Fclaude-code-and-agent-plugins","04.build\u002F01.plugins\u002F19.claude-code-and-agent-plugins\u002F00.index",[486,488],{"title":482,"path":483,"stem":484,"icon":487},"i-ph-arrow-square-in",{"title":489,"path":490,"stem":491,"icon":487},"Import from registries","\u002Fbuild\u002Fplugins\u002Fclaude-code-and-agent-plugins\u002Fmarketplaces","04.build\u002F01.plugins\u002F19.claude-code-and-agent-plugins\u002F01.marketplaces",{"title":493,"path":494,"stem":495,"icon":496},"GitHub","\u002Fbuild\u002Fplugins\u002Fgithub","04.build\u002F01.plugins\u002F20.github","i-ph-github-logo",{"title":498,"path":499,"stem":500,"icon":501},"Known vulnerabilities","\u002Fbuild\u002Fplugins\u002Fvulnerabilities","04.build\u002F01.plugins\u002F21.vulnerabilities","i-ph-shield-warning",{"title":503,"path":504,"stem":505,"children":506,"icon":71},"Verified plugins","\u002Fbuild\u002Fplugins\u002Fverified","04.build\u002F01.plugins\u002F22.verified\u002F01.index",[507,508,513,518,523,528,533,538,543,548,553,558,580,585,589,594,599,604,608,612,617,622,626],{"title":503,"path":504,"stem":505,"icon":463},{"title":509,"path":510,"stem":511,"icon":512},"ai.oz0\u002Fweb","\u002Fbuild\u002Fplugins\u002Fverified\u002Fweb","04.build\u002F01.plugins\u002F22.verified\u002F02.web","i-ph-globe",{"title":514,"path":515,"stem":516,"icon":517},"ai.oz0\u002Fnet-diag","\u002Fbuild\u002Fplugins\u002Fverified\u002Fnet-diag","04.build\u002F01.plugins\u002F22.verified\u002F03.net-diag","i-ph-network",{"title":519,"path":520,"stem":521,"icon":522},"ai.oz0\u002Fcve-triage","\u002Fbuild\u002Fplugins\u002Fverified\u002Fcve-triage","04.build\u002F01.plugins\u002F22.verified\u002F04.cve-triage","i-ph-bug",{"title":524,"path":525,"stem":526,"icon":527},"ai.oz0\u002Fhost-health","\u002Fbuild\u002Fplugins\u002Fverified\u002Fhost-health","04.build\u002F01.plugins\u002F22.verified\u002F05.host-health","i-ph-heartbeat",{"title":529,"path":530,"stem":531,"icon":532},"ai.oz0\u002Fpr-reviewer","\u002Fbuild\u002Fplugins\u002Fverified\u002Fpr-reviewer","04.build\u002F01.plugins\u002F22.verified\u002F06.pr-reviewer","i-ph-git-pull-request",{"title":534,"path":535,"stem":536,"icon":537},"Slack","\u002Fbuild\u002Fplugins\u002Fverified\u002Fslack","04.build\u002F01.plugins\u002F22.verified\u002F07.slack","i-ph-slack-logo",{"title":539,"path":540,"stem":541,"icon":542},"Discord","\u002Fbuild\u002Fplugins\u002Fverified\u002Fdiscord","04.build\u002F01.plugins\u002F22.verified\u002F08.discord","i-ph-discord-logo",{"title":544,"path":545,"stem":546,"icon":547},"Microsoft Teams","\u002Fbuild\u002Fplugins\u002Fverified\u002Fteams","04.build\u002F01.plugins\u002F22.verified\u002F09.teams","i-ph-microsoft-teams-logo",{"title":549,"path":550,"stem":551,"icon":552},"ai.oz0\u002Fai-spend","\u002Fbuild\u002Fplugins\u002Fverified\u002Fai-spend","04.build\u002F01.plugins\u002F22.verified\u002F10.ai-spend","i-ph-coins",{"title":554,"path":555,"stem":556,"icon":557},"ai.oz0\u002Fa2a-remote","\u002Fbuild\u002Fplugins\u002Fverified\u002Fa2a-remote","04.build\u002F01.plugins\u002F22.verified\u002F11.a2a-remote","i-ph-arrows-left-right",{"title":559,"path":560,"stem":561,"children":562,"icon":98},"Guardrails","\u002Fbuild\u002Fplugins\u002Fverified\u002Fguardrails","04.build\u002F01.plugins\u002F22.verified\u002F12.guardrails\u002F00.index",[563,564,568,572,576],{"title":559,"path":560,"stem":561,"icon":98},{"title":565,"path":566,"stem":567,"icon":98},"Configure guardrails","\u002Fbuild\u002Fplugins\u002Fverified\u002Fguardrails\u002Fsettings","04.build\u002F01.plugins\u002F22.verified\u002F12.guardrails\u002F01.settings",{"title":569,"path":570,"stem":571,"icon":98},"Check classified text","\u002Fbuild\u002Fplugins\u002Fverified\u002Fguardrails\u002Fclassified-text","04.build\u002F01.plugins\u002F22.verified\u002F12.guardrails\u002F02.classified-text",{"title":573,"path":574,"stem":575,"icon":98},"Check shell commands","\u002Fbuild\u002Fplugins\u002Fverified\u002Fguardrails\u002Fcommands","04.build\u002F01.plugins\u002F22.verified\u002F12.guardrails\u002F03.commands",{"title":577,"path":578,"stem":579,"icon":98},"Guardrail coverage and limits","\u002Fbuild\u002Fplugins\u002Fverified\u002Fguardrails\u002Fintent-and-limits","04.build\u002F01.plugins\u002F22.verified\u002F12.guardrails\u002F04.intent-and-limits",{"title":581,"path":582,"stem":583,"icon":584},"ai.oz0\u002Fmemory","\u002Fbuild\u002Fplugins\u002Fverified\u002Fmemory","04.build\u002F01.plugins\u002F22.verified\u002F13.memory","i-ph-brain",{"title":586,"path":587,"stem":588,"icon":416},"ai.oz0\u002Fsetup-assistant","\u002Fbuild\u002Fplugins\u002Fverified\u002Fsetup-assistant","04.build\u002F01.plugins\u002F22.verified\u002F14.setup-assistant",{"title":590,"path":591,"stem":592,"icon":593},"ai.oz0\u002Fpublic-access","\u002Fbuild\u002Fplugins\u002Fverified\u002Fpublic-access","04.build\u002F01.plugins\u002F22.verified\u002F15.public-access","i-ph-files",{"title":595,"path":596,"stem":597,"icon":598},"ai.oz0\u002Femail","\u002Fbuild\u002Fplugins\u002Fverified\u002Femail","04.build\u002F01.plugins\u002F22.verified\u002F16.email","i-ph-envelope-simple",{"title":600,"path":601,"stem":602,"icon":603},"Atlassian Cloud","\u002Fbuild\u002Fplugins\u002Fverified\u002Fatlassian","04.build\u002F01.plugins\u002F22.verified\u002F17.atlassian","i-ph-kanban",{"title":605,"path":606,"stem":607,"icon":603},"Atlassian Data Center","\u002Fbuild\u002Fplugins\u002Fverified\u002Fatlassian-dc","04.build\u002F01.plugins\u002F22.verified\u002F18.atlassian-dc",{"title":609,"path":610,"stem":611,"icon":421},"ServiceNow","\u002Fbuild\u002Fplugins\u002Fverified\u002Fservicenow","04.build\u002F01.plugins\u002F22.verified\u002F19.servicenow",{"title":613,"path":614,"stem":615,"icon":616},"GitLab","\u002Fbuild\u002Fplugins\u002Fverified\u002Fgitlab","04.build\u002F01.plugins\u002F22.verified\u002F20.gitlab","i-ph-git-merge",{"title":618,"path":619,"stem":620,"icon":621},"Support triage","\u002Fbuild\u002Fplugins\u002Fverified\u002Fsupport-triage","04.build\u002F01.plugins\u002F22.verified\u002F21.support-triage","i-ph-ticket",{"title":623,"path":624,"stem":625,"icon":361},"Essentials","\u002Fbuild\u002Fplugins\u002Fverified\u002Fessentials","04.build\u002F01.plugins\u002F22.verified\u002F22.essentials",{"title":627,"path":628,"stem":629,"children":630,"icon":532},"Plugin improver","\u002Fbuild\u002Fplugins\u002Fverified\u002Fplugin-improver","04.build\u002F01.plugins\u002F22.verified\u002F23.plugin-improver\u002F00.index",[631,632,636],{"title":627,"path":628,"stem":629,"icon":532},{"title":633,"path":634,"stem":635,"icon":532},"How an improvement runs","\u002Fbuild\u002Fplugins\u002Fverified\u002Fplugin-improver\u002Fjob-lifecycle","04.build\u002F01.plugins\u002F22.verified\u002F23.plugin-improver\u002F01.job-lifecycle",{"title":637,"path":638,"stem":639,"icon":532},"Improver limits and records","\u002Fbuild\u002Fplugins\u002Fverified\u002Fplugin-improver\u002Flimits-and-records","04.build\u002F01.plugins\u002F22.verified\u002F23.plugin-improver\u002F02.limits-and-records",{"title":641,"path":642,"stem":643,"children":644,"icon":646},"Plugin size limits","\u002Fbuild\u002Fplugins\u002Flimits","04.build\u002F01.plugins\u002F23.limits\u002F00.index",[645,647,651],{"title":641,"path":642,"stem":643,"icon":646},"i-ph-ruler",{"title":648,"path":649,"stem":650,"icon":646},"Documentation limits","\u002Fbuild\u002Fplugins\u002Flimits\u002Fdocumentation","04.build\u002F01.plugins\u002F23.limits\u002F01.documentation",{"title":652,"path":653,"stem":654,"icon":646},"Artifact and index limits","\u002Fbuild\u002Fplugins\u002Flimits\u002Fartifacts","04.build\u002F01.plugins\u002F23.limits\u002F02.artifacts",{"title":656,"path":657,"stem":658,"children":659,"icon":71},"Parts","\u002Fbuild\u002Fparts","04.build\u002F02.parts\u002F00.index",[660,662,667,672,690,721,726,730,741,756,761,776,791,814,818,823,828,839],{"title":661,"path":657,"stem":658},"Plugin parts",{"title":663,"path":664,"stem":665,"icon":666},"Agents","\u002Fbuild\u002Fparts\u002Fagents","04.build\u002F02.parts\u002F01.agents","i-ph-robot",{"title":668,"path":669,"stem":670,"icon":671},"What an agent combines","\u002Fbuild\u002Fparts\u002Fwhat-an-agent-combines","04.build\u002F02.parts\u002F02.what-an-agent-combines","i-ph-intersect-three",{"title":673,"path":674,"stem":675,"children":676,"icon":646},"Agent contracts","\u002Fbuild\u002Fparts\u002Fcontracts-and-limits","04.build\u002F02.parts\u002F03.contracts-and-limits\u002F00.index",[677,678,682,686],{"title":673,"path":674,"stem":675,"icon":646},{"title":679,"path":680,"stem":681,"icon":646},"Agent failure kinds","\u002Fbuild\u002Fparts\u002Fcontracts-and-limits\u002Ffailures","04.build\u002F02.parts\u002F03.contracts-and-limits\u002F01.failures",{"title":683,"path":684,"stem":685,"icon":646},"Agent limits","\u002Fbuild\u002Fparts\u002Fcontracts-and-limits\u002Flimits","04.build\u002F02.parts\u002F03.contracts-and-limits\u002F02.limits",{"title":687,"path":688,"stem":689,"icon":646},"Agent budgets","\u002Fbuild\u002Fparts\u002Fcontracts-and-limits\u002Fbudgets","04.build\u002F02.parts\u002F03.contracts-and-limits\u002F03.budgets",{"title":691,"path":692,"stem":693,"children":694,"icon":696},"Write a tool","\u002Fbuild\u002Fparts\u002Ftools","04.build\u002F02.parts\u002F04.tools\u002F00.index",[695,697,701,705,709,713,717],{"title":691,"path":692,"stem":693,"icon":696},"i-ph-wrench",{"title":698,"path":699,"stem":700,"icon":696},"Describe tool functions","\u002Fbuild\u002Fparts\u002Ftools\u002Fdefinitions","04.build\u002F02.parts\u002F04.tools\u002F01.definitions",{"title":702,"path":703,"stem":704,"icon":696},"Return results and files","\u002Fbuild\u002Fparts\u002Ftools\u002Fresults-and-files","04.build\u002F02.parts\u002F04.tools\u002F02.results-and-files",{"title":706,"path":707,"stem":708,"icon":696},"Handle tool call lifecycle","\u002Fbuild\u002Fparts\u002Ftools\u002Fcall-lifecycle","04.build\u002F02.parts\u002F04.tools\u002F03.call-lifecycle",{"title":710,"path":711,"stem":712,"icon":696},"Pin tool definitions","\u002Fbuild\u002Fparts\u002Ftools\u002Fsnapshots","04.build\u002F02.parts\u002F04.tools\u002F04.snapshots",{"title":714,"path":715,"stem":716,"icon":696},"Call a model from a tool","\u002Fbuild\u002Fparts\u002Ftools\u002Fmodel-calls","04.build\u002F02.parts\u002F04.tools\u002F05.model-calls",{"title":718,"path":719,"stem":720,"icon":696},"Tool labels and approvals","\u002Fbuild\u002Fparts\u002Ftools\u002Fpolicy","04.build\u002F02.parts\u002F04.tools\u002F06.policy",{"title":722,"path":723,"stem":724,"icon":725},"TypeScript tools","\u002Fbuild\u002Fparts\u002Ftypescript-tools","04.build\u002F02.parts\u002F05.typescript-tools","i-ph-file-code",{"title":727,"path":728,"stem":729,"icon":725},"Import an OpenAPI document","\u002Fbuild\u002Fparts\u002Fopenapi-import","04.build\u002F02.parts\u002F06.openapi-import",{"title":731,"path":732,"stem":733,"children":734,"icon":736},"Write and load skills","\u002Fbuild\u002Fparts\u002Fskills","04.build\u002F02.parts\u002F07.skills\u002F00.index",[735,737],{"title":731,"path":732,"stem":733,"icon":736},"i-ph-graduation-cap",{"title":738,"path":739,"stem":740,"icon":736},"Review skill use and proposals","\u002Fbuild\u002Fparts\u002Fskills\u002Fusage-and-proposals","04.build\u002F02.parts\u002F07.skills\u002F01.usage-and-proposals",{"title":742,"path":743,"stem":744,"children":745,"icon":747},"Write a flow","\u002Fbuild\u002Fparts\u002Fflows","04.build\u002F02.parts\u002F08.flows\u002F00.index",[746,748,752],{"title":742,"path":743,"stem":744,"icon":747},"i-ph-flow-arrow",{"title":749,"path":750,"stem":751,"icon":747},"Flow steps and expressions","\u002Fbuild\u002Fparts\u002Fflows\u002Fsteps-and-expressions","04.build\u002F02.parts\u002F08.flows\u002F01.steps-and-expressions",{"title":753,"path":754,"stem":755,"icon":747},"Expose and explain flows","\u002Fbuild\u002Fparts\u002Fflows\u002Fflow-tools","04.build\u002F02.parts\u002F08.flows\u002F02.flow-tools",{"title":757,"path":758,"stem":759,"icon":760},"Hooks","\u002Fbuild\u002Fparts\u002Fhooks","04.build\u002F02.parts\u002F09.hooks","i-ph-anchor",{"title":762,"path":763,"stem":764,"children":765,"icon":767},"Declare an event source","\u002Fbuild\u002Fparts\u002Fevent-sources","04.build\u002F02.parts\u002F10.event-sources\u002F00.index",[766,768,772],{"title":762,"path":763,"stem":764,"icon":767},"i-ph-broadcast",{"title":769,"path":770,"stem":771,"icon":767},"Bind and answer deliveries","\u002Fbuild\u002Fparts\u002Fevent-sources\u002Fdelivery-binding","04.build\u002F02.parts\u002F10.event-sources\u002F01.delivery-binding",{"title":773,"path":774,"stem":775,"icon":767},"Use platform events","\u002Fbuild\u002Fparts\u002Fevent-sources\u002Fplatform-events","04.build\u002F02.parts\u002F10.event-sources\u002F02.platform-events",{"title":777,"path":778,"stem":779,"children":780,"icon":782},"Declare a connection","\u002Fbuild\u002Fparts\u002Fconnections","04.build\u002F02.parts\u002F11.connections\u002F00.index",[781,783,787],{"title":777,"path":778,"stem":779,"icon":782},"i-ph-plugs-connected",{"title":784,"path":785,"stem":786,"icon":782},"Connection token lifecycle","\u002Fbuild\u002Fparts\u002Fconnections\u002Ftoken-lifecycle","04.build\u002F02.parts\u002F11.connections\u002F01.token-lifecycle",{"title":788,"path":789,"stem":790,"icon":782},"Connection setup and security","\u002Fbuild\u002Fparts\u002Fconnections\u002Fsetup-and-security","04.build\u002F02.parts\u002F11.connections\u002F02.setup-and-security",{"title":792,"path":793,"stem":794,"children":795,"icon":797},"Choose a harness","\u002Fbuild\u002Fparts\u002Fharnesses","04.build\u002F02.parts\u002F12.harnesses\u002F00.index",[796,798,802,806,810],{"title":792,"path":793,"stem":794,"icon":797},"i-ph-cpu",{"title":799,"path":800,"stem":801,"icon":797},"Harness tool controls","\u002Fbuild\u002Fparts\u002Fharnesses\u002Ftool-controls","04.build\u002F02.parts\u002F12.harnesses\u002F01.tool-controls",{"title":803,"path":804,"stem":805,"icon":797},"Recover a harness session","\u002Fbuild\u002Fparts\u002Fharnesses\u002Frecovery","04.build\u002F02.parts\u002F12.harnesses\u002F02.recovery",{"title":807,"path":808,"stem":809,"icon":797},"Write a harness","\u002Fbuild\u002Fparts\u002Fharnesses\u002Fcustom-harnesses","04.build\u002F02.parts\u002F12.harnesses\u002F03.custom-harnesses",{"title":811,"path":812,"stem":813,"icon":797},"Use an ACP agent","\u002Fbuild\u002Fparts\u002Fharnesses\u002Facp","04.build\u002F02.parts\u002F12.harnesses\u002F04.acp",{"title":815,"path":816,"stem":817,"icon":782},"Bring your own agent","\u002Fbuild\u002Fparts\u002Fbring-your-own-agent","04.build\u002F02.parts\u002F13.bring-your-own-agent",{"title":819,"path":820,"stem":821,"icon":822},"Records and start-up text","\u002Fbuild\u002Fparts\u002Frecords-and-startup","04.build\u002F02.parts\u002F14.records-and-startup","i-ph-database",{"title":824,"path":825,"stem":826,"icon":827},"Addresses","\u002Fbuild\u002Fparts\u002Faddresses","04.build\u002F02.parts\u002F15.addresses","i-ph-signpost",{"title":829,"path":830,"stem":831,"children":832,"icon":834},"Define a routine","\u002Fbuild\u002Fparts\u002Froutines","04.build\u002F02.parts\u002F16.routines\u002F00.index",[833,835],{"title":829,"path":830,"stem":831,"icon":834},"i-ph-clock-clockwise",{"title":836,"path":837,"stem":838,"icon":834},"Routine permissions and outputs","\u002Fbuild\u002Fparts\u002Froutines\u002Foutputs-and-permissions","04.build\u002F02.parts\u002F16.routines\u002F01.outputs-and-permissions",{"title":840,"path":841,"stem":842,"icon":843},"When to split an agent","\u002Fbuild\u002Fparts\u002Fwhen-to-split-an-agent","04.build\u002F02.parts\u002F17.when-to-split-an-agent","i-ph-arrows-split",{"title":845,"path":846,"stem":847,"children":848,"icon":71},"Apps on OZ","\u002Fbuild\u002Fapps","04.build\u002F03.apps\u002F00.index",[849,851,862,867,872,876,880,884,894,908,913,928,942],{"title":850,"path":846,"stem":847},"Applications and clients",{"title":852,"path":853,"stem":854,"children":855,"icon":857},"Use the runtime API","\u002Fbuild\u002Fapps\u002Fruntime-api","04.build\u002F03.apps\u002F01.runtime-api\u002F00.index",[856,858],{"title":852,"path":853,"stem":854,"icon":857},"i-ph-plug",{"title":859,"path":860,"stem":861,"icon":857},"Runtime API authentication","\u002Fbuild\u002Fapps\u002Fruntime-api\u002Fauthentication","04.build\u002F03.apps\u002F01.runtime-api\u002F01.authentication",{"title":863,"path":864,"stem":865,"icon":866},"Python SDK","\u002Fbuild\u002Fapps\u002Fsdk-python","04.build\u002F03.apps\u002F02.sdk-python","i-ph-file-py",{"title":868,"path":869,"stem":870,"icon":871},"TypeScript SDK","\u002Fbuild\u002Fapps\u002Fsdk-typescript","04.build\u002F03.apps\u002F03.sdk-typescript","i-ph-file-ts",{"title":873,"path":874,"stem":875,"icon":725},"Go SDK","\u002Fbuild\u002Fapps\u002Fsdk-go","04.build\u002F03.apps\u002F04.sdk-go",{"title":877,"path":878,"stem":879,"icon":782},"AG-UI for your apps","\u002Fbuild\u002Fapps\u002Fag-ui","04.build\u002F03.apps\u002F05.ag-ui",{"title":881,"path":882,"stem":883,"icon":249},"A chat in your own app","\u002Fbuild\u002Fapps\u002Fchat-app","04.build\u002F03.apps\u002F06.chat-app",{"title":885,"path":886,"stem":887,"children":888,"icon":767},"Follow live jobs","\u002Fbuild\u002Fapps\u002Flive-feeds","04.build\u002F03.apps\u002F07.live-feeds\u002F00.index",[889,890],{"title":885,"path":886,"stem":887,"icon":767},{"title":891,"path":892,"stem":893,"icon":767},"Feed access and browser streams","\u002Fbuild\u002Fapps\u002Flive-feeds\u002Fbrowser-and-access","04.build\u002F03.apps\u002F07.live-feeds\u002F01.browser-and-access",{"title":895,"path":896,"stem":897,"children":898,"icon":782},"Call agents over MCP","\u002Fbuild\u002Fapps\u002Fmcp-server","04.build\u002F03.apps\u002F08.mcp-server\u002F00.index",[899,900,904],{"title":895,"path":896,"stem":897,"icon":782},{"title":901,"path":902,"stem":903,"icon":782},"MCP client OAuth","\u002Fbuild\u002Fapps\u002Fmcp-server\u002Foauth","04.build\u002F03.apps\u002F08.mcp-server\u002F01.oauth",{"title":905,"path":906,"stem":907,"icon":782},"MCP security and limits","\u002Fbuild\u002Fapps\u002Fmcp-server\u002Fsecurity-and-limits","04.build\u002F03.apps\u002F08.mcp-server\u002F02.security-and-limits",{"title":909,"path":910,"stem":911,"icon":912},"A2A agents","\u002Fbuild\u002Fapps\u002Fa2a","04.build\u002F03.apps\u002F09.a2a","i-ph-share-network",{"title":914,"path":915,"stem":916,"children":917,"icon":919},"Run a remote agent","\u002Fbuild\u002Fapps\u002Fremote-agents","04.build\u002F03.apps\u002F10.remote-agents\u002F00.index",[918,920,924],{"title":914,"path":915,"stem":916,"icon":919},"i-ph-cloud-arrow-down",{"title":921,"path":922,"stem":923,"icon":919},"Remote sessions and limits","\u002Fbuild\u002Fapps\u002Fremote-agents\u002Fsessions-and-limits","04.build\u002F03.apps\u002F10.remote-agents\u002F01.sessions-and-limits",{"title":925,"path":926,"stem":927,"icon":919},"Connect an outside A2A agent","\u002Fbuild\u002Fapps\u002Fremote-agents\u002Fa2a","04.build\u002F03.apps\u002F10.remote-agents\u002F02.a2a",{"title":929,"path":930,"stem":931,"children":932,"icon":249},"Connect a chat channel","\u002Fbuild\u002Fapps\u002Fchat-channels","04.build\u002F03.apps\u002F11.chat-channels\u002F00.index",[933,934,938],{"title":929,"path":930,"stem":931,"icon":249},{"title":935,"path":936,"stem":937,"icon":249},"Chat channel conversations","\u002Fbuild\u002Fapps\u002Fchat-channels\u002Fconversations","04.build\u002F03.apps\u002F11.chat-channels\u002F01.conversations",{"title":939,"path":940,"stem":941,"icon":249},"Build a chat channel","\u002Fbuild\u002Fapps\u002Fchat-channels\u002Fbuild","04.build\u002F03.apps\u002F11.chat-channels\u002F02.build",{"title":943,"path":944,"stem":945,"icon":946},"Interop matrix","\u002Fbuild\u002Fapps\u002Finterop","04.build\u002F03.apps\u002F12.interop","i-ph-check-square-offset",{"title":948,"path":949,"stem":950,"children":951,"icon":71},"Improve","\u002Fimprove","05.improve\u002F00.index",[952,953,958,963,968,994,1021,1026,1031,1036],{"title":948,"path":949,"stem":950},{"title":954,"path":955,"stem":956,"icon":957},"Search, compare and fix","\u002Fimprove\u002Fsearch-and-compare","05.improve\u002F01.search-and-compare","i-ph-magnifying-glass",{"title":959,"path":960,"stem":961,"icon":962},"Errors and insights","\u002Fimprove\u002Ferrors-and-insights","05.improve\u002F02.errors-and-insights","i-ph-chart-line",{"title":964,"path":965,"stem":966,"icon":967},"Measured savings","\u002Fimprove\u002Fmeasured-savings","05.improve\u002F03.measured-savings","i-ph-scales",{"title":969,"path":970,"stem":971,"children":972,"icon":463},"Evals and quality gates","\u002Fimprove\u002Fevals","05.improve\u002F04.evals\u002F00.index",[973,974,978,982,986,990],{"title":969,"path":970,"stem":971,"icon":463},{"title":975,"path":976,"stem":977},"Case expectations","\u002Fimprove\u002Fevals\u002Fcases","05.improve\u002F04.evals\u002F01.cases",{"title":979,"path":980,"stem":981},"Record and replay answers","\u002Fimprove\u002Fevals\u002Frecordings","05.improve\u002F04.evals\u002F02.recordings",{"title":983,"path":984,"stem":985},"Check policy paths","\u002Fimprove\u002Fevals\u002Fcoverage","05.improve\u002F04.evals\u002F03.coverage",{"title":987,"path":988,"stem":989},"Gate a plugin update","\u002Fimprove\u002Fevals\u002Fquality-gates","05.improve\u002F04.evals\u002F04.quality-gates",{"title":991,"path":992,"stem":993},"Track quality and regressions","\u002Fimprove\u002Fevals\u002Fregressions","05.improve\u002F04.evals\u002F05.regressions",{"title":995,"path":996,"stem":997,"children":998,"icon":1000},"Outcome checks and patterns","\u002Fimprove\u002Foutcome-checks","05.improve\u002F05.outcome-checks\u002F00.index",[999,1001,1005,1009,1013,1017],{"title":995,"path":996,"stem":997,"icon":1000},"i-ph-gavel",{"title":1002,"path":1003,"stem":1004},"Choose a judge and rubric","\u002Fimprove\u002Foutcome-checks\u002Fjudges","05.improve\u002F05.outcome-checks\u002F01.judges",{"title":1006,"path":1007,"stem":1008},"Measure a judge over time","\u002Fimprove\u002Foutcome-checks\u002Fsampling","05.improve\u002F05.outcome-checks\u002F02.sampling",{"title":1010,"path":1011,"stem":1012},"Use a reviewer agent","\u002Fimprove\u002Foutcome-checks\u002Freviewer","05.improve\u002F05.outcome-checks\u002F03.reviewer",{"title":1014,"path":1015,"stem":1016},"Choose among candidate answers","\u002Fimprove\u002Foutcome-checks\u002Fselection","05.improve\u002F05.outcome-checks\u002F04.selection",{"title":1018,"path":1019,"stem":1020},"Test and roll out judged agents","\u002Fimprove\u002Foutcome-checks\u002Frollouts","05.improve\u002F05.outcome-checks\u002F05.rollouts",{"title":1022,"path":1023,"stem":1024,"icon":1025},"Measured results","\u002Fimprove\u002Fmeasured-results","05.improve\u002F06.measured-results","i-ph-chart-bar",{"title":1027,"path":1028,"stem":1029,"icon":1030},"Comparisons of a changed agent","\u002Fimprove\u002Fcomparisons-of-a-changed-agent","05.improve\u002F07.comparisons-of-a-changed-agent","i-ph-git-diff",{"title":1032,"path":1033,"stem":1034,"icon":1035},"Where a fix belongs","\u002Fimprove\u002Fwhere-a-fix-belongs","05.improve\u002F08.where-a-fix-belongs","i-ph-ladder",{"title":1037,"path":1038,"stem":1039,"icon":957},"Evidence for agents","\u002Fimprove\u002Fevidence-for-agents","05.improve\u002F09.evidence-for-agents",{"title":1041,"path":1042,"stem":1043,"children":1044,"icon":71},"Govern","\u002Fgovern","06.govern\u002F00.index",[1045,1047,1085,1089,1111,1115,1120,1151,1170,1175,1180,1184,1207],{"title":1046,"path":1042,"stem":1043},"Govern agents",{"title":1048,"path":1049,"stem":1050,"children":1051,"icon":98},"Tool policy","\u002Fgovern\u002Ftool-policy","06.govern\u002F01.tool-policy\u002F00.index",[1052,1053,1057,1061,1065,1069,1073,1077,1081],{"title":1048,"path":1049,"stem":1050,"icon":98},{"title":1054,"path":1055,"stem":1056},"Export and apply a tool policy","\u002Fgovern\u002Ftool-policy\u002Ffiles","06.govern\u002F01.tool-policy\u002F02.files",{"title":1058,"path":1059,"stem":1060},"Rules for plugin and remote functions","\u002Fgovern\u002Ftool-policy\u002Fplugin-functions","06.govern\u002F01.tool-policy\u002F03.plugin-functions",{"title":1062,"path":1063,"stem":1064},"Function conditions and action classes","\u002Fgovern\u002Ftool-policy\u002Fconditions","06.govern\u002F01.tool-policy\u002F04.conditions",{"title":1066,"path":1067,"stem":1068},"Rules for taint, origins and sequences","\u002Fgovern\u002Ftool-policy\u002Forigins-and-sequences","06.govern\u002F01.tool-policy\u002F05.origins-and-sequences",{"title":1070,"path":1071,"stem":1072},"How the runtime enforces tool policy","\u002Fgovern\u002Ftool-policy\u002Fruntime","06.govern\u002F01.tool-policy\u002F06.runtime",{"title":1074,"path":1075,"stem":1076},"Preview, review and lint tool policy changes","\u002Fgovern\u002Ftool-policy\u002Freview-changes","06.govern\u002F01.tool-policy\u002F07.review-changes",{"title":1078,"path":1079,"stem":1080},"Assign duties to tool calls","\u002Fgovern\u002Ftool-policy\u002Fduties","06.govern\u002F01.tool-policy\u002F08.duties",{"title":1082,"path":1083,"stem":1084},"Command rules in a tool policy","\u002Fgovern\u002Ftool-policy\u002Fcommand-rules","06.govern\u002F01.tool-policy\u002F09.command-rules",{"title":1086,"path":1087,"stem":1088,"icon":230},"Governance replay","\u002Fgovern\u002Fgovernance-replay","06.govern\u002F02.governance-replay",{"title":1090,"path":1091,"stem":1092,"children":1093,"icon":532},"Reviewed changes","\u002Fgovern\u002Freviewed-changes","06.govern\u002F03.reviewed-changes\u002F00.index",[1094,1095,1099,1103,1107],{"title":1090,"path":1091,"stem":1092,"icon":532},{"title":1096,"path":1097,"stem":1098},"Review assistant and job proposals","\u002Fgovern\u002Freviewed-changes\u002Fproposals","06.govern\u002F03.reviewed-changes\u002F02.proposals",{"title":1100,"path":1101,"stem":1102},"Review plugin configurations","\u002Fgovern\u002Freviewed-changes\u002Fplugin-configurations","06.govern\u002F03.reviewed-changes\u002F03.plugin-configurations",{"title":1104,"path":1105,"stem":1106},"Review and roll back changesets","\u002Fgovern\u002Freviewed-changes\u002Fchangesets","06.govern\u002F03.reviewed-changes\u002F04.changesets",{"title":1108,"path":1109,"stem":1110},"Review changes to protected paths","\u002Fgovern\u002Freviewed-changes\u002Fprotected-paths","06.govern\u002F03.reviewed-changes\u002F05.protected-paths",{"title":1112,"path":1113,"stem":1114,"icon":666},"AI labels","\u002Fgovern\u002Fai-labels","06.govern\u002F04.ai-labels",{"title":1116,"path":1117,"stem":1118,"icon":1119},"Kill switches","\u002Fgovern\u002Fkill-switches","06.govern\u002F05.kill-switches","i-ph-power",{"title":1121,"path":1122,"stem":1123,"children":1124,"icon":1126},"Personal data","\u002Fgovern\u002Fpersonal-data","06.govern\u002F06.personal-data\u002F00.index",[1125,1127,1131,1135,1139,1143,1147],{"title":1121,"path":1122,"stem":1123,"icon":1126},"i-ph-user-minus",{"title":1128,"path":1129,"stem":1130},"Associate people and purposes with jobs","\u002Fgovern\u002Fpersonal-data\u002Fassociate-people","06.govern\u002F06.personal-data\u002F01.associate-people",{"title":1132,"path":1133,"stem":1134},"Find and export personal data","\u002Fgovern\u002Fpersonal-data\u002Fexport","06.govern\u002F06.personal-data\u002F02.export",{"title":1136,"path":1137,"stem":1138},"Restrict processing and record contests","\u002Fgovern\u002Fpersonal-data\u002Frestrictions-and-contests","06.govern\u002F06.personal-data\u002F03.restrictions-and-contests",{"title":1140,"path":1141,"stem":1142},"Erase personal data","\u002Fgovern\u002Fpersonal-data\u002Ferase","06.govern\u002F06.personal-data\u002F04.erase",{"title":1144,"path":1145,"stem":1146},"Retain records and restore backups","\u002Fgovern\u002Fpersonal-data\u002Fretention","06.govern\u002F06.personal-data\u002F05.retention",{"title":1148,"path":1149,"stem":1150},"Personal data held by plugins","\u002Fgovern\u002Fpersonal-data\u002Fplugin-records","06.govern\u002F06.personal-data\u002F06.plugin-records",{"title":1152,"path":1153,"stem":1154,"children":1155,"icon":1157},"Taint and labels","\u002Fgovern\u002Ftaint-and-labels","06.govern\u002F07.taint-and-labels\u002F00.index",[1156,1158,1162,1166],{"title":1152,"path":1153,"stem":1154,"icon":1157},"i-ph-drop-half-bottom",{"title":1159,"path":1160,"stem":1161},"Set rules on taint and labels","\u002Fgovern\u002Ftaint-and-labels\u002Frules","06.govern\u002F07.taint-and-labels\u002F02.rules",{"title":1163,"path":1164,"stem":1165},"Set clearance, egress and content walls","\u002Fgovern\u002Ftaint-and-labels\u002Flabel-policies","06.govern\u002F07.taint-and-labels\u002F03.label-policies",{"title":1167,"path":1168,"stem":1169},"Read outside text in a quarantine child","\u002Fgovern\u002Ftaint-and-labels\u002Fquarantine","06.govern\u002F07.taint-and-labels\u002F04.quarantine",{"title":1171,"path":1172,"stem":1173,"icon":1174},"Works-council mode","\u002Fgovern\u002Fworks-council-mode","06.govern\u002F08.works-council-mode","i-ph-users-three",{"title":1176,"path":1177,"stem":1178,"icon":1179},"Incidents","\u002Fgovern\u002Fincidents","06.govern\u002F09.incidents","i-ph-siren",{"title":1181,"path":1182,"stem":1183,"icon":213},"Inventory","\u002Fgovern\u002Finventory","06.govern\u002F10.inventory",{"title":1185,"path":1186,"stem":1187,"children":1188,"icon":1190},"Audit trail","\u002Fgovern\u002Faudit-trail","06.govern\u002F11.audit-trail\u002F00.index",[1189,1191,1195,1199,1203],{"title":1185,"path":1186,"stem":1187,"icon":1190},"i-ph-scroll",{"title":1192,"path":1193,"stem":1194},"Audit records and run identity","\u002Fgovern\u002Faudit-trail\u002Frecords","06.govern\u002F11.audit-trail\u002F02.records",{"title":1196,"path":1197,"stem":1198},"Verify the audit chain","\u002Fgovern\u002Faudit-trail\u002Fverification","06.govern\u002F11.audit-trail\u002F03.verification",{"title":1200,"path":1201,"stem":1202},"Export and verify evidence bundles","\u002Fgovern\u002Faudit-trail\u002Fevidence-bundles","06.govern\u002F11.audit-trail\u002F04.evidence-bundles",{"title":1204,"path":1205,"stem":1206},"Audit retention, erasure and legal holds","\u002Fgovern\u002Faudit-trail\u002Fretention","06.govern\u002F11.audit-trail\u002F05.retention",{"title":1208,"path":1209,"stem":1210,"children":1211,"icon":1213},"Command rules","\u002Fgovern\u002Fcommand-rules","06.govern\u002F12.command-rules\u002F00.index",[1212,1214,1218,1222,1226],{"title":1208,"path":1209,"stem":1210,"icon":1213},"i-ph-terminal",{"title":1215,"path":1216,"stem":1217},"Command rule patterns","\u002Fgovern\u002Fcommand-rules\u002Fpatterns","06.govern\u002F12.command-rules\u002F02.patterns",{"title":1219,"path":1220,"stem":1221},"What the command reader understands","\u002Fgovern\u002Fcommand-rules\u002Fcommand-reader","06.govern\u002F12.command-rules\u002F03.command-reader",{"title":1223,"path":1224,"stem":1225},"Create a command rule from an approval","\u002Fgovern\u002Fcommand-rules\u002Fallow-from-card","06.govern\u002F12.command-rules\u002F04.allow-from-card",{"title":1227,"path":1228,"stem":1229},"Command rule evaluation and limits","\u002Fgovern\u002Fcommand-rules\u002Fevaluation-and-limits","06.govern\u002F12.command-rules\u002F05.evaluation-and-limits",{"title":1231,"path":1232,"stem":1233,"children":1234,"icon":71},"Fleet","\u002Ffleet","07.fleet\u002F00.index",[1235,1237,1242,1247,1251,1256,1260,1265,1270,1274,1278,1297,1302,1307,1325,1329,1333,1352,1357,1380,1385,1390,1395,1399,1458,1462,1467,1481,1486,1490,1494],{"title":1236,"path":1232,"stem":1233},"Operate a fleet",{"title":1238,"path":1239,"stem":1240,"icon":1241},"Dev mode","\u002Ffleet\u002Fdev-mode","07.fleet\u002F01.dev-mode","i-ph-laptop",{"title":1243,"path":1244,"stem":1245,"icon":1246},"Run a cluster","\u002Ffleet\u002Fcluster","07.fleet\u002F02.cluster","i-ph-hard-drives",{"title":1248,"path":1249,"stem":1250,"icon":782},"Join nodes","\u002Ffleet\u002Fjoin-nodes","07.fleet\u002F03.join-nodes",{"title":1252,"path":1253,"stem":1254,"icon":1255},"Manage nodes","\u002Ffleet\u002Fmanage-nodes","07.fleet\u002F04.manage-nodes","i-ph-list-bullets",{"title":1257,"path":1258,"stem":1259,"icon":527},"Node health","\u002Ffleet\u002Fnodes","07.fleet\u002F05.nodes",{"title":1261,"path":1262,"stem":1263,"icon":1264},"Nodes as services","\u002Ffleet\u002Fservices","07.fleet\u002F06.services","i-ph-gear-six",{"title":1266,"path":1267,"stem":1268,"icon":1269},"Doctor","\u002Ffleet\u002Fdoctor","07.fleet\u002F07.doctor","i-ph-stethoscope",{"title":1271,"path":1272,"stem":1273,"icon":421},"Troubleshooting","\u002Ffleet\u002Ftroubleshooting","07.fleet\u002F08.troubleshooting",{"title":1275,"path":1276,"stem":1277,"icon":962},"Tracing and metrics","\u002Ffleet\u002Fobservability","07.fleet\u002F09.observability",{"title":1279,"path":1280,"stem":1281,"children":1282,"icon":1284},"Choose sandbox tier 2","\u002Ffleet\u002Fsandbox-tier-2","07.fleet\u002F10.sandbox-tier-2\u002F00.index",[1283,1285,1289,1293],{"title":1279,"path":1280,"stem":1281,"icon":1284},"i-ph-shield-chevron",{"title":1286,"path":1287,"stem":1288,"icon":1284},"Set up gVisor","\u002Ffleet\u002Fsandbox-tier-2\u002Fgvisor","07.fleet\u002F10.sandbox-tier-2\u002F01.gvisor",{"title":1290,"path":1291,"stem":1292,"icon":1284},"Set up microVM isolation","\u002Ffleet\u002Fsandbox-tier-2\u002Fmicrovms","07.fleet\u002F10.sandbox-tier-2\u002F02.microvms",{"title":1294,"path":1295,"stem":1296,"icon":1284},"Configure remote sandboxes","\u002Ffleet\u002Fsandbox-tier-2\u002Fremote","07.fleet\u002F10.sandbox-tier-2\u002F03.remote",{"title":1298,"path":1299,"stem":1300,"icon":1301},"Sandbox on macOS","\u002Ffleet\u002Fsandbox-on-macos","07.fleet\u002F11.sandbox-on-macos","i-ph-apple-logo",{"title":1303,"path":1304,"stem":1305,"icon":1306},"Sandbox on Windows","\u002Ffleet\u002Fsandbox-on-windows","07.fleet\u002F12.sandbox-on-windows","i-ph-windows-logo",{"title":1308,"path":1309,"stem":1310,"children":1311,"icon":797},"Configure local models","\u002Ffleet\u002Flocal-models","07.fleet\u002F13.local-models\u002F00.index",[1312,1313,1317,1321],{"title":1308,"path":1309,"stem":1310,"icon":797},{"title":1314,"path":1315,"stem":1316,"icon":797},"Share a local model with the fleet","\u002Ffleet\u002Flocal-models\u002Ffleet","07.fleet\u002F13.local-models\u002F01.fleet",{"title":1318,"path":1319,"stem":1320,"icon":797},"Review local-model safety checks","\u002Ffleet\u002Flocal-models\u002Ftrust","07.fleet\u002F13.local-models\u002F02.trust",{"title":1322,"path":1323,"stem":1324,"icon":797},"Size and price local models","\u002Ffleet\u002Flocal-models\u002Fsizing-and-cost","07.fleet\u002F13.local-models\u002F03.sizing-and-cost",{"title":1326,"path":1327,"stem":1328,"icon":1241},"Agents on a Mac with MLX","\u002Ffleet\u002Flocal-models-on-a-mac","07.fleet\u002F14.local-models-on-a-mac",{"title":1330,"path":1331,"stem":1332,"icon":127},"Queues","\u002Ffleet\u002Fqueues","07.fleet\u002F15.queues",{"title":1334,"path":1335,"stem":1336,"children":1337,"icon":1339},"Choose a Temporal backend","\u002Ffleet\u002Ftemporal-backends","07.fleet\u002F16.temporal-backends\u002F00.index",[1338,1340,1344,1348],{"title":1334,"path":1335,"stem":1336,"icon":1339},"i-ph-cloud",{"title":1341,"path":1342,"stem":1343},"Set retention and move tenants","\u002Ffleet\u002Ftemporal-backends\u002Fretention-and-migration","07.fleet\u002F16.temporal-backends\u002F01.retention-and-migration",{"title":1345,"path":1346,"stem":1347},"Encrypt Temporal payloads","\u002Ffleet\u002Ftemporal-backends\u002Fencryption","07.fleet\u002F16.temporal-backends\u002F02.encryption",{"title":1349,"path":1350,"stem":1351},"Read payloads in Temporal UI","\u002Ffleet\u002Ftemporal-backends\u002Fcodec","07.fleet\u002F16.temporal-backends\u002F03.codec",{"title":1353,"path":1354,"stem":1355,"icon":1356},"Regions","\u002Ffleet\u002Fregions","07.fleet\u002F17.regions","i-ph-globe-hemisphere-east",{"title":1358,"path":1359,"stem":1360,"children":1361,"icon":1363},"Run the roles separately","\u002Ffleet\u002Fseparate-roles","07.fleet\u002F18.separate-roles\u002F00.index",[1362,1364,1368,1372,1376],{"title":1358,"path":1359,"stem":1360,"icon":1363},"i-ph-squares-four",{"title":1365,"path":1366,"stem":1367},"Prepare database rights","\u002Ffleet\u002Fseparate-roles\u002Fdatabase-rights","07.fleet\u002F18.separate-roles\u002F01.database-rights",{"title":1369,"path":1370,"stem":1371},"Keep plaintext secrets on edges","\u002Ffleet\u002Fseparate-roles\u002Fsecrets","07.fleet\u002F18.separate-roles\u002F02.secrets",{"title":1373,"path":1374,"stem":1375},"Operate through role outages","\u002Ffleet\u002Fseparate-roles\u002Foutages","07.fleet\u002F18.separate-roles\u002F03.outages",{"title":1377,"path":1378,"stem":1379},"Use Temporal UI with separate roles","\u002Ffleet\u002Fseparate-roles\u002Ftemporal-ui","07.fleet\u002F18.separate-roles\u002F04.temporal-ui",{"title":1381,"path":1382,"stem":1383,"icon":1384},"High availability","\u002Ffleet\u002Fhigh-availability","07.fleet\u002F19.high-availability","i-ph-copy",{"title":1386,"path":1387,"stem":1388,"icon":1389},"Management over a WAN","\u002Ffleet\u002Fmanagement-over-a-wan","07.fleet\u002F20.management-over-a-wan","i-ph-globe-hemisphere-west",{"title":1391,"path":1392,"stem":1393,"icon":1394},"Cloud federation","\u002Ffleet\u002Fcloud-federation","07.fleet\u002F21.cloud-federation","i-ph-cloud-check",{"title":1396,"path":1397,"stem":1398,"icon":451},"Payload storage","\u002Ffleet\u002Fpayload-storage","07.fleet\u002F22.payload-storage",{"title":1400,"path":1401,"stem":1402,"children":1403,"icon":1405},"Upgrade a cluster","\u002Ffleet\u002Fupgrades","07.fleet\u002F23.upgrades\u002F00.index",[1404,1406,1410,1414,1418,1422,1426,1430,1434,1438,1442,1446,1450,1454],{"title":1400,"path":1401,"stem":1402,"icon":1405},"i-ph-arrows-clockwise",{"title":1407,"path":1408,"stem":1409},"Prepare for sandbox changes","\u002Ffleet\u002Fupgrades\u002Fsandbox-changes","07.fleet\u002F23.upgrades\u002F01.sandbox-changes",{"title":1411,"path":1412,"stem":1413},"Review policy changes","\u002Ffleet\u002Fupgrades\u002Fpolicy-changes","07.fleet\u002F23.upgrades\u002F02.policy-changes",{"title":1415,"path":1416,"stem":1417},"Review data and privacy migrations","\u002Ffleet\u002Fupgrades\u002Fdata-migrations","07.fleet\u002F23.upgrades\u002F03.data-migrations",{"title":1419,"path":1420,"stem":1421},"Prepare storage and identity migrations","\u002Ffleet\u002Fupgrades\u002Fstorage-and-identity","07.fleet\u002F23.upgrades\u002F04.storage-and-identity",{"title":1423,"path":1424,"stem":1425},"Prepare plugins for an upgrade","\u002Ffleet\u002Fupgrades\u002Fplugin-changes","07.fleet\u002F23.upgrades\u002F05.plugin-changes",{"title":1427,"path":1428,"stem":1429},"Keep calls compatible during upgrades","\u002Ffleet\u002Fupgrades\u002Fcall-compatibility","07.fleet\u002F23.upgrades\u002F06.call-compatibility",{"title":1431,"path":1432,"stem":1433},"Review model and budget migrations","\u002Ffleet\u002Fupgrades\u002Fmodel-and-budget-changes","07.fleet\u002F23.upgrades\u002F07.model-and-budget-changes",{"title":1435,"path":1436,"stem":1437},"Migrate to shared worker pools","\u002Ffleet\u002Fupgrades\u002Fshared-pools","07.fleet\u002F23.upgrades\u002F08.shared-pools",{"title":1439,"path":1440,"stem":1441},"Upgrade node binaries and runtimes","\u002Ffleet\u002Fupgrades\u002Fnodes","07.fleet\u002F23.upgrades\u002F09.nodes",{"title":1443,"path":1444,"stem":1445},"Understand runtime shutdown","\u002Ffleet\u002Fupgrades\u002Fruntime-shutdown","07.fleet\u002F23.upgrades\u002F10.runtime-shutdown",{"title":1447,"path":1448,"stem":1449},"Review runtime behaviour changes","\u002Ffleet\u002Fupgrades\u002Fruntime-changes","07.fleet\u002F23.upgrades\u002F11.runtime-changes",{"title":1451,"path":1452,"stem":1453},"Verify releases and switch channels","\u002Ffleet\u002Fupgrades\u002Frelease-verification","07.fleet\u002F23.upgrades\u002F12.release-verification",{"title":1455,"path":1456,"stem":1457},"Roll a runtime out in steps","\u002Ffleet\u002Fupgrades\u002Fruntime-rollouts","07.fleet\u002F23.upgrades\u002F13.runtime-rollouts",{"title":1459,"path":1460,"stem":1461,"icon":463},"Releases","\u002Ffleet\u002Freleases","07.fleet\u002F24.releases",{"title":1463,"path":1464,"stem":1465,"icon":1466},"Docker","\u002Ffleet\u002Fdocker","07.fleet\u002F25.docker","i-ph-shipping-container",{"title":1468,"path":1469,"stem":1470,"children":1471,"icon":480},"Deploy with Kubernetes","\u002Ffleet\u002Fkubernetes","07.fleet\u002F26.kubernetes\u002F00.index",[1472,1473,1477],{"title":1468,"path":1469,"stem":1470,"icon":480},{"title":1474,"path":1475,"stem":1476,"icon":480},"Helm objects and values","\u002Ffleet\u002Fkubernetes\u002Fvalues","07.fleet\u002F26.kubernetes\u002F01.values",{"title":1478,"path":1479,"stem":1480,"icon":480},"Maintain a Kubernetes deployment","\u002Ffleet\u002Fkubernetes\u002Fmaintenance","07.fleet\u002F26.kubernetes\u002F02.maintenance",{"title":1482,"path":1483,"stem":1484,"icon":1485},"Offline install","\u002Ffleet\u002Foffline-install","07.fleet\u002F27.offline-install","i-ph-airplane-tilt",{"title":1487,"path":1488,"stem":1489,"icon":98},"FIPS builds","\u002Ffleet\u002Ffips","07.fleet\u002F28.fips",{"title":1491,"path":1492,"stem":1493,"icon":249},"Run Orchestrator Zero from an MCP client","\u002Ffleet\u002Fmcp-client","07.fleet\u002F29.mcp-client",{"title":1495,"path":1496,"stem":1497,"children":1498,"icon":451},"Back up a cluster","\u002Ffleet\u002Fbackups","07.fleet\u002F30.backups\u002F00.index",[1499,1500],{"title":1495,"path":1496,"stem":1497,"icon":451},{"title":1501,"path":1502,"stem":1503},"Restore a cluster","\u002Ffleet\u002Fbackups\u002Frestore","07.fleet\u002F30.backups\u002F01.restore",{"title":1505,"path":1506,"stem":1507,"children":1508,"icon":71},"Spend","\u002Fspend","08.spend\u002F00.index",[1509,1511,1533,1547,1585],{"title":1510,"path":1506,"stem":1507},"Manage model access and spending",{"title":1512,"path":1513,"stem":1514,"children":1515,"icon":552},"Read cost and usage","\u002Fspend\u002Fcost-and-usage","08.spend\u002F01.cost-and-usage\u002F00.index",[1516,1517,1521,1525,1529],{"title":1512,"path":1513,"stem":1514,"icon":552},{"title":1518,"path":1519,"stem":1520},"Understand recorded charges","\u002Fspend\u002Fcost-and-usage\u002Faccounting","08.spend\u002F01.cost-and-usage\u002F01.accounting",{"title":1522,"path":1523,"stem":1524},"Read model call timings","\u002Fspend\u002Fcost-and-usage\u002Ftimings","08.spend\u002F01.cost-and-usage\u002F02.timings",{"title":1526,"path":1527,"stem":1528},"Export usage","\u002Fspend\u002Fcost-and-usage\u002Fexports","08.spend\u002F01.cost-and-usage\u002F03.exports",{"title":1530,"path":1531,"stem":1532},"Explain prices and cache costs","\u002Fspend\u002Fcost-and-usage\u002Fprices-and-cache","08.spend\u002F01.cost-and-usage\u002F04.prices-and-cache",{"title":1534,"path":1535,"stem":1536,"children":1537,"icon":134},"Set budgets and quotas","\u002Fspend\u002Fbudgets-and-quotas","08.spend\u002F02.budgets-and-quotas\u002F00.index",[1538,1539,1543],{"title":1534,"path":1535,"stem":1536,"icon":134},{"title":1540,"path":1541,"stem":1542,"icon":134},"Understand quota charging and refusals","\u002Fspend\u002Fbudgets-and-quotas\u002Fcharging","08.spend\u002F02.budgets-and-quotas\u002F01.charging",{"title":1544,"path":1545,"stem":1546,"icon":134},"Request and review budget","\u002Fspend\u002Fbudgets-and-quotas\u002Frequests","08.spend\u002F02.budgets-and-quotas\u002F02.requests",{"title":1548,"path":1549,"stem":1550,"children":1551,"icon":416},"Connect a model provider","\u002Fspend\u002Fmodels-and-keys","08.spend\u002F03.models-and-keys\u002F00.index",[1552,1553,1557,1561,1565,1569,1573,1577,1581],{"title":1548,"path":1549,"stem":1550,"icon":416},{"title":1554,"path":1555,"stem":1556},"Choose model aliases","\u002Fspend\u002Fmodels-and-keys\u002Faliases","08.spend\u002F03.models-and-keys\u002F01.aliases",{"title":1558,"path":1559,"stem":1560},"Map a plugin's models","\u002Fspend\u002Fmodels-and-keys\u002Fmapping","08.spend\u002F03.models-and-keys\u002F02.mapping",{"title":1562,"path":1563,"stem":1564},"Set reasoning effort and cascades","\u002Fspend\u002Fmodels-and-keys\u002Feffort-and-cascades","08.spend\u002F03.models-and-keys\u002F03.effort-and-cascades",{"title":1566,"path":1567,"stem":1568},"Authenticate model calls","\u002Fspend\u002Fmodels-and-keys\u002Fauthentication","08.spend\u002F03.models-and-keys\u002F04.authentication",{"title":1570,"path":1571,"stem":1572},"Control what model calls can reach","\u002Fspend\u002Fmodels-and-keys\u002Fdata-rules","08.spend\u002F03.models-and-keys\u002F05.data-rules",{"title":1574,"path":1575,"stem":1576},"Pool model deployments","\u002Fspend\u002Fmodels-and-keys\u002Fdeployment-pools","08.spend\u002F03.models-and-keys\u002F06.deployment-pools",{"title":1578,"path":1579,"stem":1580},"Configure caches and server tools","\u002Fspend\u002Fmodels-and-keys\u002Fcache-and-tools","08.spend\u002F03.models-and-keys\u002F07.cache-and-tools",{"title":1582,"path":1583,"stem":1584},"Check model changes and retirement","\u002Fspend\u002Fmodels-and-keys\u002Fcanaries-and-retirement","08.spend\u002F03.models-and-keys\u002F08.canaries-and-retirement",{"title":1586,"path":1587,"stem":1588,"icon":1589},"Translating providers","\u002Fspend\u002Ftranslating-providers","08.spend\u002F04.translating-providers","i-ph-translate",{"title":1591,"path":1592,"stem":1593,"children":1594,"icon":71},"Admin","\u002Fadmin","09.admin\u002F00.index",[1595,1597,1623,1650,1654,1658,1680,1685,1696],{"title":1596,"path":1592,"stem":1593},"Administer access and credentials",{"title":1598,"path":1599,"stem":1600,"children":1601,"icon":98},"Configure sign-in","\u002Fadmin\u002Fsign-in","09.admin\u002F01.sign-in\u002F00.index",[1602,1603,1607,1611,1615,1619],{"title":1598,"path":1599,"stem":1600,"icon":98},{"title":1604,"path":1605,"stem":1606},"Configure an identity provider","\u002Fadmin\u002Fsign-in\u002Fidentity-providers","09.admin\u002F01.sign-in\u002F01.identity-providers",{"title":1608,"path":1609,"stem":1610},"Provision accounts from a directory","\u002Fadmin\u002Fsign-in\u002Fprovisioning","09.admin\u002F01.sign-in\u002F02.provisioning",{"title":1612,"path":1613,"stem":1614},"Manage passwords and second factors","\u002Fadmin\u002Fsign-in\u002Fpasswords","09.admin\u002F01.sign-in\u002F03.passwords",{"title":1616,"path":1617,"stem":1618},"Sign in from the CLI and MCP clients","\u002Fadmin\u002Fsign-in\u002Fclients","09.admin\u002F01.sign-in\u002F04.clients",{"title":1620,"path":1621,"stem":1622},"End sessions and inspect sign-in events","\u002Fadmin\u002Fsign-in\u002Fsessions","09.admin\u002F01.sign-in\u002F05.sessions",{"title":1624,"path":1625,"stem":1626,"children":1627,"icon":1629},"Manage tenant secrets","\u002Fadmin\u002Fsecrets","09.admin\u002F02.secrets\u002F00.index",[1628,1630,1634,1638,1642,1646],{"title":1624,"path":1625,"stem":1626,"icon":1629},"i-ph-key",{"title":1631,"path":1632,"stem":1633},"Bind secrets to destination hosts","\u002Fadmin\u002Fsecrets\u002Fhost-bindings","09.admin\u002F02.secrets\u002F01.host-bindings",{"title":1635,"path":1636,"stem":1637},"Test and rotate secrets","\u002Fadmin\u002Fsecrets\u002Frotation","09.admin\u002F02.secrets\u002F02.rotation",{"title":1639,"path":1640,"stem":1641},"Use an external secret store","\u002Fadmin\u002Fsecrets\u002Fexternal-stores","09.admin\u002F02.secrets\u002F03.external-stores",{"title":1643,"path":1644,"stem":1645},"Deliver and scan plugin secrets","\u002Fadmin\u002Fsecrets\u002Fplugin-secrets","09.admin\u002F02.secrets\u002F04.plugin-secrets",{"title":1647,"path":1648,"stem":1649},"Configure plugin settings","\u002Fadmin\u002Fsecrets\u002Fsettings","09.admin\u002F02.secrets\u002F05.settings",{"title":1651,"path":1652,"stem":1653,"icon":1629},"Credential injection","\u002Fadmin\u002Fcredential-injection","09.admin\u002F03.credential-injection",{"title":1655,"path":1656,"stem":1657,"icon":1629},"Key commands","\u002Fadmin\u002Fkey-commands","09.admin\u002F04.key-commands",{"title":1659,"path":1660,"stem":1661,"children":1662,"icon":782},"Connect a plugin to another system","\u002Fadmin\u002Fconnections","09.admin\u002F05.connections\u002F00.index",[1663,1664,1668,1672,1676],{"title":1659,"path":1660,"stem":1661,"icon":782},{"title":1665,"path":1666,"stem":1667,"icon":782},"Renew and reconnect credentials","\u002Fadmin\u002Fconnections\u002Frenewal","09.admin\u002F05.connections\u002F01.renewal",{"title":1669,"path":1670,"stem":1671,"icon":782},"Restrict connection destinations","\u002Fadmin\u002Fconnections\u002Fdestinations","09.admin\u002F05.connections\u002F02.destinations",{"title":1673,"path":1674,"stem":1675,"icon":782},"Diagnose connection failures","\u002Fadmin\u002Fconnections\u002Ftroubleshooting","09.admin\u002F05.connections\u002F03.troubleshooting",{"title":1677,"path":1678,"stem":1679,"icon":782},"Understand connection security","\u002Fadmin\u002Fconnections\u002Fsecurity","09.admin\u002F05.connections\u002F04.security",{"title":1681,"path":1682,"stem":1683,"icon":1684},"Tenants","\u002Fadmin\u002Ftenants","09.admin\u002F06.tenants","i-ph-buildings",{"title":1686,"path":1687,"stem":1688,"children":1689,"icon":1691},"Export and verify a tenant","\u002Fadmin\u002Ftenant-export","09.admin\u002F07.tenant-export\u002F00.index",[1690,1692],{"title":1686,"path":1687,"stem":1688,"icon":1691},"i-ph-export",{"title":1693,"path":1694,"stem":1695,"icon":1691},"Tenant export format","\u002Fadmin\u002Ftenant-export\u002Fformat","09.admin\u002F07.tenant-export\u002F01.format",{"title":1697,"path":1698,"stem":1699,"icon":1700},"Notifications","\u002Fadmin\u002Fnotifications","09.admin\u002F08.notifications","i-ph-bell-ringing",{"title":1702,"path":1703,"stem":1704,"children":1705,"icon":71},"Reference","\u002Freference","10.reference\u002F00.index",[1706,1707,1726,1760,1794,1798,1803,1807,1812,1817,1822,1826],{"title":1702,"path":1703,"stem":1704},{"title":1708,"path":1709,"stem":1710,"children":1711,"icon":1725},"CLI","\u002Freference\u002Fcli","10.reference\u002F01.cli\u002F00.index",[1712,1713,1719],{"title":1708,"path":1709,"stem":1710},{"title":1714,"path":1715,"stem":1716,"children":1717},"oz0","\u002Freference\u002Fcli\u002Foz0","10.reference\u002F01.cli\u002F01.oz0\u002F00.index",[1718],{"title":1714,"path":1715,"stem":1716},{"title":1720,"path":1721,"stem":1722,"children":1723},"oz0-node","\u002Freference\u002Fcli\u002Foz0-node","10.reference\u002F01.cli\u002F02.oz0-node\u002F00.index",[1724],{"title":1720,"path":1721,"stem":1722},"i-ph-terminal-window",{"title":1727,"path":1728,"stem":1729,"children":1730,"icon":725},"oz0-plugin.yaml","\u002Freference\u002Fplugin-manifest","10.reference\u002F02.plugin-manifest\u002F00.index",[1731,1732,1736,1740,1744,1748,1752,1756],{"title":1727,"path":1728,"stem":1729,"icon":725},{"title":1733,"path":1734,"stem":1735},"Dependencies and cross-plugin access","\u002Freference\u002Fplugin-manifest\u002Fdependencies","10.reference\u002F02.plugin-manifest\u002F01.dependencies",{"title":1737,"path":1738,"stem":1739},"Tool declarations","\u002Freference\u002Fplugin-manifest\u002Ftools","10.reference\u002F02.plugin-manifest\u002F02.tools",{"title":1741,"path":1742,"stem":1743},"Harnesses, events and channels","\u002Freference\u002Fplugin-manifest\u002Fruntimes","10.reference\u002F02.plugin-manifest\u002F03.runtimes",{"title":1745,"path":1746,"stem":1747},"Connections and hooks","\u002Freference\u002Fplugin-manifest\u002Fconnections","10.reference\u002F02.plugin-manifest\u002F04.connections",{"title":1749,"path":1750,"stem":1751},"Plugin sets and policies","\u002Freference\u002Fplugin-manifest\u002Fsets-policy","10.reference\u002F02.plugin-manifest\u002F05.sets-policy",{"title":1753,"path":1754,"stem":1755},"Data, evidence and mail","\u002Freference\u002Fplugin-manifest\u002Fdata","10.reference\u002F02.plugin-manifest\u002F06.data",{"title":1757,"path":1758,"stem":1759},"Generated OpenAPI manifests","\u002Freference\u002Fplugin-manifest\u002Fopenapi","10.reference\u002F02.plugin-manifest\u002F07.openapi",{"title":1761,"path":1762,"stem":1763,"children":1764,"icon":666},"Agent definition","\u002Freference\u002Fagent-definition","10.reference\u002F03.agent-definition\u002F00.index",[1765,1766,1770,1774,1778,1782,1786,1790],{"title":1761,"path":1762,"stem":1763,"icon":666},{"title":1767,"path":1768,"stem":1769},"Identity, instructions and tools","\u002Freference\u002Fagent-definition\u002Fidentity","10.reference\u002F03.agent-definition\u002F01.identity",{"title":1771,"path":1772,"stem":1773},"Models and placement","\u002Freference\u002Fagent-definition\u002Fmodels","10.reference\u002F03.agent-definition\u002F02.models",{"title":1775,"path":1776,"stem":1777},"Limits and spend","\u002Freference\u002Fagent-definition\u002Flimits","10.reference\u002F03.agent-definition\u002F03.limits",{"title":1779,"path":1780,"stem":1781},"Judges and candidate selection","\u002Freference\u002Fagent-definition\u002Fquality","10.reference\u002F03.agent-definition\u002F04.quality",{"title":1783,"path":1784,"stem":1785},"Delegation and human decisions","\u002Freference\u002Fagent-definition\u002Fcoordination","10.reference\u002F03.agent-definition\u002F05.coordination",{"title":1787,"path":1788,"stem":1789},"History and recovery","\u002Freference\u002Fagent-definition\u002Fhistory","10.reference\u002F03.agent-definition\u002F06.history",{"title":1791,"path":1792,"stem":1793},"Sandbox, data and retention","\u002Freference\u002Fagent-definition\u002Fsecurity","10.reference\u002F03.agent-definition\u002F07.security",{"title":1795,"path":1796,"stem":1797,"icon":517},"Ports","\u002Freference\u002Fports","10.reference\u002F04.ports",{"title":1799,"path":1800,"stem":1801,"icon":1802},"Environment variables","\u002Freference\u002Fenvironment","10.reference\u002F05.environment","i-ph-brackets-curly",{"title":1804,"path":1805,"stem":1806,"icon":373},"Files and directories","\u002Freference\u002Ffiles","10.reference\u002F06.files",{"title":1808,"path":1809,"stem":1810,"icon":1811},"Lists and pages","\u002Freference\u002Flist-pages","10.reference\u002F07.list-pages","i-ph-list-numbers",{"title":1813,"path":1814,"stem":1815,"icon":1816},"Spend refusals","\u002Freference\u002Fspend-refusals","10.reference\u002F08.spend-refusals","i-ph-hand-coins",{"title":1818,"path":1819,"stem":1820,"icon":1821},"Admin API","\u002Freference\u002Fadmin-api","10.reference\u002F09.admin-api","i-ph-repeat",{"title":1823,"path":1824,"stem":1825},"Compatibility","\u002Freference\u002Fcompatibility","10.reference\u002F10.compatibility",{"title":1827,"path":1828,"stem":1829},"Known issues","\u002Freference\u002Fknown-issues","10.reference\u002F11.known-issues",{"title":1831,"path":1832,"stem":1833,"children":1834,"icon":71},"About","\u002Fabout","11.about\u002F00.index",[1835,1836,1840,1845],{"title":1831,"path":1832,"stem":1833},{"title":1837,"path":1838,"stem":1839,"icon":967},"Licensing","\u002Fabout\u002Flicensing","11.about\u002F01.licensing",{"title":1841,"path":1842,"stem":1843,"icon":1844},"About these docs","\u002Fabout\u002Fcontributing-docs","11.about\u002F02.contributing-docs","i-ph-pencil-simple",{"title":1846,"path":1847,"stem":1848,"icon":42},"A local environment","\u002Fabout\u002Flocal-environment","11.about\u002F03.local-environment",{"id":1850,"title":1733,"body":1851,"description":1860,"extension":3578,"links":3579,"meta":3580,"navigation":3583,"path":1734,"seo":3584,"stem":1735,"__hash__":3585},"docs\u002F10.reference\u002F02.plugin-manifest\u002F01.dependencies.md",{"type":1852,"value":1853,"toc":3573},"minimark",[1854,1858,1861,1868,2968,2973,2983,3058,3197,3216,3310,3320,3323,3330,3478,3564,3569],[1855,1856,1857],"p",{},"For: Plugin authors looking up manifest fields.",[1855,1859,1860],{},"Look up the fields for dependencies and cross-plugin access.",[1862,1863,1865],"h2",{"id":1864},"requires",[1866,1867,1864],"code",{},[1869,1870,1871,1915,1947,1961,2033,2778,2860,2937],"field-group",{},[1872,1873,1875,1876,1879,1880,1883,1884,1887,1888,1887,1891,1887,1894,1887,1897,1887,1900,1879,1903,1906,1907,1910,1911,1914],"field",{"name":1714,"type":1874},"string","The Orchestrator Zero versions the plugin works with: one or more constraints such as ",[1866,1877,1878],{},">=0.4"," or ",[1866,1881,1882],{},">=0.4, \u003C0.6",", using ",[1866,1885,1886],{},">=",", ",[1866,1889,1890],{},"\u003C=",[1866,1892,1893],{},">",[1866,1895,1896],{},"\u003C",[1866,1898,1899],{},"=",[1866,1901,1902],{},"^",[1866,1904,1905],{},"~",". The loader refuses a plugin whose constraint the running release does not satisfy: \"this plugin needs Orchestrator Zero >=1.2; this is 1.0.0\". A development build satisfies every constraint. Every key on this page ships with ",[1866,1908,1909],{},"oz0\u002Fv1"," in the first release, so no plugin needs ",[1866,1912,1913],{},"requires.oz0"," for one of them.",[1872,1916,1919,1922,1923,1926,1927,1887,1930,1887,1933,1936,1937,1926,1940,1887,1943,1946],{"name":1917,"type":1918},"platforms","string[]",[1866,1920,1921],{},"os\u002Farch"," pairs, with ",[1866,1924,1925],{},"os"," in ",[1866,1928,1929],{},"linux",[1866,1931,1932],{},"darwin",[1866,1934,1935],{},"windows"," and ",[1866,1938,1939],{},"arch",[1866,1941,1942],{},"amd64",[1866,1944,1945],{},"arm64",". Empty means every platform.",[1872,1948,1950,1951,1954,1955,1960],{"name":1949,"type":1918},"secrets","Tenant secrets the plugin's processes get as environment variables of the same names, such as ",[1866,1952,1953],{},"GITHUB_TOKEN",": its tools, hooks and harnesses, on every node that runs it, held in memory only. A node does not start the plugin while one of them is not set in the tenant. See ",[1956,1957,1959],"a",{"href":1958},"\u002Fadmin\u002Fsecrets\u002Fplugin-secrets#secrets-for-plugins","Secrets",".",[1872,1962,1964,1970,1982,2001,2020,2023],{"name":1963,"type":1918},"optional_secrets",[1855,1965,1966,1967,1969],{},"Tenant secrets the plugin's processes get when the tenant has them, as ",[1866,1968,1949],{}," are given; the plugin starts without them, such as an API key a backend may or may not need.",[1855,1971,1972,1973,1976,1977,1981],{},"A value that is not secret (an address, a backend's name, a switch) is a setting: declare it under ",[1866,1974,1975],{},"settings",", below, because every secret's value is refused in tool calls (the ",[1956,1978,1980],{"href":1979},"\u002Fadmin\u002Fsecrets\u002Fplugin-secrets#what-is-scanned","secret scan",").",[1855,1983,1984,1985,1988,1989,1887,1992,1988,1995,1998,1999,1960],{},"Each name starts with the plugin's name in capitals, dashes as underscores, and an underscore (",[1866,1986,1987],{},"WEB_SEARCH_URL"," for ",[1866,1990,1991],{},"web",[1866,1993,1994],{},"CVE_TRIAGE_OSV_API_URL",[1866,1996,1997],{},"cve-triage","), so a plugin never reads another's secret this way; a secret two plugins share goes under ",[1866,2000,1949],{},[1855,2002,2003,2004,1887,2006,2009,2010,2013,2014,2016,2017,2019],{},"Plugin names nest (",[1866,2005,1991],{},[1866,2007,2008],{},"web-search","), so a name is the plugin's of the longest prefix: ",[1866,2011,2012],{},"WEB_SEARCH_KEY"," is ",[1866,2015,2008],{},"'s, and while both are installed ",[1866,2018,1991],{}," may not declare it (an install of either that would take the other's name is refused, and so is a private candidate, and nodes never get such a name).",[1855,2021,2022],{},"Only installed plugins own names: a private candidate of a plugin the tenant has not installed gets none that an installed plugin's prefix covers, and placing one changes nothing an installed plugin gets.",[1855,2024,2025,2026,2028,2029,2032],{},"The same holds for ",[1866,2027,1975],{},". A name cannot be in both lists. Installs, ",[1866,2030,2031],{},"plugin inspect"," and hub listings name them, as secrets the plugin's processes read.",[1872,2034,2036,2046,2053,2056,2269,2280,2286,2312,2315,2415,2439,2449,2772],{"name":1975,"type":2035},"object[]",[1855,2037,2038,2039,1936,2042,2045],{},"The plugin's settings: per-tenant configuration that is not secret, such as a search backend's address or a mirror's path. Its processes get each as an environment variable of the same name, as they get secrets, on every node that runs it; ",[1866,2040,2041],{},"dev",[1866,2043,2044],{},"plugin test"," take them from your environment.",[1855,2047,2048,2049,2052],{},"A tenant admin sets them with ",[1866,2050,2051],{},"oz0 setting set NAME VALUE"," (or on the web UI's Plugin settings tab), and operators and admins see their values.",[1855,2054,2055],{},"Unlike secrets they are stored and shown as they are and never scanned for in tool calls or requests, so a fetch of a page on the same address as a setting is made. Each entry has:",[2057,2058,2059,2074,2080,2086,2195,2235,2251,2260],"ul",{},[2060,2061,2062,2065,2066,2068,2069,1988,2071,2073],"li",{},[1866,2063,2064],{},"name",": an environment variable name with the plugin's prefix, as for ",[1866,2067,1963],{}," (",[1866,2070,1987],{},[1866,2072,1991],{},");",[2060,2075,2076,2079],{},[1866,2077,2078],{},"description",": what it is for, which the CLI and the web UI show;",[2060,2081,2082,2085],{},[1866,2083,2084],{},"default"," (optional): what the processes get while the tenant has not set it;",[2060,2087,2088,2091,2092,2068,2095,1879,2098,2101,2102,2105,2106,2109,2110,2068,2113,1887,2116,1887,2119,1887,2122,1887,2125,1887,2128,1887,2131,1887,2134,2109,2137,2140,2141,2109,2144,2147,2148,1879,2151,2109,2154,2157,2158,2161,2162,2165,2166,1887,2169,1879,2172,2175,2176,1887,2179,1887,2182,1887,2185,1887,2188,1936,2191,2194],{},[1866,2089,2090],{},"format"," (optional): ",[1866,2093,2094],{},"url",[1866,2096,2097],{},"http:\u002F\u002F",[1866,2099,2100],{},"https:\u002F\u002F"," and a host), ",[1866,2103,2104],{},"host"," (a name or address, optionally with ",[1866,2107,2108],{},":port","), ",[1866,2111,2112],{},"boolean",[1866,2114,2115],{},"true",[1866,2117,2118],{},"false",[1866,2120,2121],{},"1",[1866,2123,2124],{},"0",[1866,2126,2127],{},"yes",[1866,2129,2130],{},"no",[1866,2132,2133],{},"on",[1866,2135,2136],{},"off",[1866,2138,2139],{},"one_of"," (with ",[1866,2142,2143],{},"values: [...]",[1866,2145,2146],{},"integer"," (a whole number, such as ",[1866,2149,2150],{},"10",[1866,2152,2153],{},"-3",[1866,2155,2156],{},"number"," (a decimal, such as ",[1866,2159,2160],{},"0.5","; no infinities, hex or underscores), ",[1866,2163,2164],{},"duration"," (such as ",[1866,2167,2168],{},"30s",[1866,2170,2171],{},"5m",[1866,2173,2174],{},"1h30m",", in the units ",[1866,2177,2178],{},"ns",[1866,2180,2181],{},"us",[1866,2183,2184],{},"ms",[1866,2186,2187],{},"s",[1866,2189,2190],{},"m",[1866,2192,2193],{},"h","; never negative), or empty for any text;",[2060,2196,2197,1936,2200,2203,2204,1887,2206,1936,2208,2210,2211,1887,2214,2217,2218,2221,2222,2224,2225,2227,2228,2230,2231,2234],{},[1866,2198,2199],{},"min",[1866,2201,2202],{},"max"," (optional, for ",[1866,2205,2146],{},[1866,2207,2156],{},[1866,2209,2164],{}," only): the lowest and highest value allowed, both included, written in the setting's own format (",[1866,2212,2213],{},"min: 1",[1866,2215,2216],{},"max: 1h","). Either may be left out. ",[1866,2219,2220],{},"plugin lint"," refuses bounds that do not read, a ",[1866,2223,2199],{}," above the ",[1866,2226,2202],{},", and a ",[1866,2229,2084],{}," or an ",[1866,2232,2233],{},"example"," outside them;",[2060,2236,2237,1936,2240,2243,2244,2247,2248,2250],{},[1866,2238,2239],{},"group",[1866,2241,2242],{},"label"," (optional, at most 64 bytes each): how the plugin's ",[1956,2245,2246],{"href":354},"Configure tab"," lays the setting out. Settings of one group are shown together under its name, in the order the manifest lists them, after the settings without a group; ",[1866,2249,2242],{}," is the field's name there (the setting's name when empty). Neither changes what the plugin gets;",[2060,2252,2253,2256,2257,2259],{},[1866,2254,2255],{},"required"," (optional): the plugin cannot work without a value the tenant gives. Install names each one the tenant has not set, with the command that sets it, and nodes do not start the plugin until it is set, as with a missing secret. A required setting has no ",[1866,2258,2084],{},", since a default would always fill it;",[2060,2261,2262,2264,2265,2268],{},[1866,2263,2233],{}," (optional): a value shown as a hint where an admin types one, such as ",[1866,2266,2267],{},"https:\u002F\u002Fsearch.example.com",". It must pass the format, and the plugin never gets it.",[1855,2270,2271,2272,2275,2276,2279],{},"A value is checked against its format and bounds wherever it is set: ",[1866,2273,2274],{},"oz0 setting set",", the admin API, the console and a configuration file (",[1866,2277,2278],{},"oz0 plugin config apply","). Every key here is optional, so a manifest without them stays valid. The plugin's processes get the value as it was written, as text: parse it in the plugin.",[1855,2281,2282,2283,2285],{},"A value is at most 4 KiB of text. A setting is no place for a secret. ",[1866,2284,2274],{}," refuses:",[2057,2287,2288,2291,2303,2306,2309],{},[2060,2289,2290],{},"A value containing one of the tenant's secrets, checked on an edge.",[2060,2292,2293,2294,1887,2297,1879,2300,1960],{},"A URL with a user name or password, or a credential in its query such as ",[1866,2295,2296],{},"sig=",[1866,2298,2299],{},"token=",[1866,2301,2302],{},"key=",[2060,2304,2305],{},"A chat system's webhook URL.",[2060,2307,2308],{},"A connection string with a password or account key.",[2060,2310,2311],{},"A value in a known token format: GitHub, GitLab, Slack, AWS, model-provider keys, private keys, signed JWTs or Orchestrator Zero API keys.",[1855,2313,2314],{},"Each refusal gives the fix: keep it a secret.",[1855,2316,2317,2319,2320,1879,2322,2324,2325,1887,2328,1887,2331,1887,2334,1887,2337,2340,2341,1887,2344,1887,2347,1887,2350,1887,2353,1887,2356,1887,2359,1887,2362,1887,2365,1887,2368,1879,2371,2374,2375,1887,2378,1879,2381,2384,2385,1887,2388,1887,2391,1887,2394,1887,2397,1887,2400,1887,2403,2406,2407,2410,2411,2414],{},[1866,2318,2220],{}," refuses a name that is also in ",[1866,2321,1949],{},[1866,2323,1963],{},", and the loader's and the node's variables (",[1866,2326,2327],{},"LD_*",[1866,2329,2330],{},"DYLD_*",[1866,2332,2333],{},"GLIBC_TUNABLES",[1866,2335,2336],{},"GCONV_PATH",[1866,2338,2339],{},"OZ0_*","), and warns on one that reads like a secret's (a word that holds ",[1866,2342,2343],{},"SECRET",[1866,2345,2346],{},"PWD",[1866,2348,2349],{},"DSN",[1866,2351,2352],{},"BEARER",[1866,2354,2355],{},"COOKIE",[1866,2357,2358],{},"JWT",[1866,2360,2361],{},"PRIVATE",[1866,2363,2364],{},"HMAC",[1866,2366,2367],{},"SIGNING",[1866,2369,2370],{},"SIGNATURE",[1866,2372,2373],{},"WEBHOOK",", starts or ends with ",[1866,2376,2377],{},"KEY",[1866,2379,2380],{},"TOKEN",[1866,2382,2383],{},"PASS"," or their plurals, or is one such as ",[1866,2386,2387],{},"AUTH",[1866,2389,2390],{},"BASICAUTH",[1866,2392,2393],{},"SAS",[1866,2395,2396],{},"SIG",[1866,2398,2399],{},"CREDS",[1866,2401,2402],{},"SALT",[1866,2404,2405],{},"CONNECTION_STRING"," or a last ",[1866,2408,2409],{},"SESSION",": ",[1866,2412,2413],{},"APIKEYS"," does).",[1855,2416,2417,2418,1887,2421,1887,2424,1887,2427,1887,2430,1879,2433,2436,2437,1981],{},"A name your plugin read as an optional secret before becomes a setting by itself when it reads like configuration (its last word is one such as ",[1866,2419,2420],{},"URL",[1866,2422,2423],{},"HOST",[1866,2425,2426],{},"BACKEND",[1866,2428,2429],{},"REGION",[1866,2431,2432],{},"MODE",[1866,2434,2435],{},"TIMEOUT",", and no word reads like a secret's): a tenant's old secret of that name is copied to the setting, and stays a secret until its admin deletes it (",[1956,2438,1959],{"href":1625},[1855,2440,2441,2442,2445,2446,2448],{},"A credential binding and a ",[1866,2443,2444],{},"{{secret:NAME}}"," placeholder never take a setting. Installs, ",[1866,2447,2031],{}," (\"Reads these settings: ...\") and hub listings name them.",[2450,2451,2456],"pre",{"className":2452,"code":2453,"language":2454,"meta":2455,"style":2455},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","requires:\n  optional_secrets: [WEB_SEARCH_KEY]\n  settings:\n    - name: WEB_SEARCH_URL\n      description: The search backend's base URL\n      format: url\n      required: true\n      example: https:\u002F\u002Fsearch.example.com\n    - name: WEB_SEARCH_BACKEND\n      description: searxng or brave\n      format: one_of\n      values: [searxng, brave]\n    - name: WEB_SEARCH_RESULTS\n      description: How many results a search returns\n      format: integer\n      min: 1\n      max: 50\n      default: \"10\"\n      group: Results\n      label: Results per search\n    - name: WEB_SEARCH_TIMEOUT\n      description: How long a search may take\n      format: duration\n      min: 1s\n      max: 2m\n      default: 20s\n      group: Results\n","yaml","",[1866,2457,2458,2470,2488,2496,2510,2521,2532,2544,2555,2567,2577,2587,2608,2620,2630,2640,2652,2663,2679,2690,2701,2713,2723,2733,2743,2753,2763],{"__ignoreMap":2455},[2459,2460,2463,2466],"span",{"class":2461,"line":2462},"line",1,[2459,2464,1864],{"class":2465},"swJcz",[2459,2467,2469],{"class":2468},"sMK4o",":\n",[2459,2471,2473,2476,2479,2482,2485],{"class":2461,"line":2472},2,[2459,2474,2475],{"class":2465},"  optional_secrets",[2459,2477,2478],{"class":2468},":",[2459,2480,2481],{"class":2468}," [",[2459,2483,2012],{"class":2484},"sfazB",[2459,2486,2487],{"class":2468},"]\n",[2459,2489,2491,2494],{"class":2461,"line":2490},3,[2459,2492,2493],{"class":2465},"  settings",[2459,2495,2469],{"class":2468},[2459,2497,2499,2502,2505,2507],{"class":2461,"line":2498},4,[2459,2500,2501],{"class":2468},"    -",[2459,2503,2504],{"class":2465}," name",[2459,2506,2478],{"class":2468},[2459,2508,2509],{"class":2484}," WEB_SEARCH_URL\n",[2459,2511,2513,2516,2518],{"class":2461,"line":2512},5,[2459,2514,2515],{"class":2465},"      description",[2459,2517,2478],{"class":2468},[2459,2519,2520],{"class":2484}," The search backend's base URL\n",[2459,2522,2524,2527,2529],{"class":2461,"line":2523},6,[2459,2525,2526],{"class":2465},"      format",[2459,2528,2478],{"class":2468},[2459,2530,2531],{"class":2484}," url\n",[2459,2533,2535,2538,2540],{"class":2461,"line":2534},7,[2459,2536,2537],{"class":2465},"      required",[2459,2539,2478],{"class":2468},[2459,2541,2543],{"class":2542},"sfNiH"," true\n",[2459,2545,2547,2550,2552],{"class":2461,"line":2546},8,[2459,2548,2549],{"class":2465},"      example",[2459,2551,2478],{"class":2468},[2459,2553,2554],{"class":2484}," https:\u002F\u002Fsearch.example.com\n",[2459,2556,2558,2560,2562,2564],{"class":2461,"line":2557},9,[2459,2559,2501],{"class":2468},[2459,2561,2504],{"class":2465},[2459,2563,2478],{"class":2468},[2459,2565,2566],{"class":2484}," WEB_SEARCH_BACKEND\n",[2459,2568,2570,2572,2574],{"class":2461,"line":2569},10,[2459,2571,2515],{"class":2465},[2459,2573,2478],{"class":2468},[2459,2575,2576],{"class":2484}," searxng or brave\n",[2459,2578,2580,2582,2584],{"class":2461,"line":2579},11,[2459,2581,2526],{"class":2465},[2459,2583,2478],{"class":2468},[2459,2585,2586],{"class":2484}," one_of\n",[2459,2588,2590,2593,2595,2597,2600,2603,2606],{"class":2461,"line":2589},12,[2459,2591,2592],{"class":2465},"      values",[2459,2594,2478],{"class":2468},[2459,2596,2481],{"class":2468},[2459,2598,2599],{"class":2484},"searxng",[2459,2601,2602],{"class":2468},",",[2459,2604,2605],{"class":2484}," brave",[2459,2607,2487],{"class":2468},[2459,2609,2611,2613,2615,2617],{"class":2461,"line":2610},13,[2459,2612,2501],{"class":2468},[2459,2614,2504],{"class":2465},[2459,2616,2478],{"class":2468},[2459,2618,2619],{"class":2484}," WEB_SEARCH_RESULTS\n",[2459,2621,2623,2625,2627],{"class":2461,"line":2622},14,[2459,2624,2515],{"class":2465},[2459,2626,2478],{"class":2468},[2459,2628,2629],{"class":2484}," How many results a search returns\n",[2459,2631,2633,2635,2637],{"class":2461,"line":2632},15,[2459,2634,2526],{"class":2465},[2459,2636,2478],{"class":2468},[2459,2638,2639],{"class":2484}," integer\n",[2459,2641,2643,2646,2648],{"class":2461,"line":2642},16,[2459,2644,2645],{"class":2465},"      min",[2459,2647,2478],{"class":2468},[2459,2649,2651],{"class":2650},"sbssI"," 1\n",[2459,2653,2655,2658,2660],{"class":2461,"line":2654},17,[2459,2656,2657],{"class":2465},"      max",[2459,2659,2478],{"class":2468},[2459,2661,2662],{"class":2650}," 50\n",[2459,2664,2666,2669,2671,2674,2676],{"class":2461,"line":2665},18,[2459,2667,2668],{"class":2465},"      default",[2459,2670,2478],{"class":2468},[2459,2672,2673],{"class":2468}," \"",[2459,2675,2150],{"class":2484},[2459,2677,2678],{"class":2468},"\"\n",[2459,2680,2682,2685,2687],{"class":2461,"line":2681},19,[2459,2683,2684],{"class":2465},"      group",[2459,2686,2478],{"class":2468},[2459,2688,2689],{"class":2484}," Results\n",[2459,2691,2693,2696,2698],{"class":2461,"line":2692},20,[2459,2694,2695],{"class":2465},"      label",[2459,2697,2478],{"class":2468},[2459,2699,2700],{"class":2484}," Results per search\n",[2459,2702,2704,2706,2708,2710],{"class":2461,"line":2703},21,[2459,2705,2501],{"class":2468},[2459,2707,2504],{"class":2465},[2459,2709,2478],{"class":2468},[2459,2711,2712],{"class":2484}," WEB_SEARCH_TIMEOUT\n",[2459,2714,2716,2718,2720],{"class":2461,"line":2715},22,[2459,2717,2515],{"class":2465},[2459,2719,2478],{"class":2468},[2459,2721,2722],{"class":2484}," How long a search may take\n",[2459,2724,2726,2728,2730],{"class":2461,"line":2725},23,[2459,2727,2526],{"class":2465},[2459,2729,2478],{"class":2468},[2459,2731,2732],{"class":2484}," duration\n",[2459,2734,2736,2738,2740],{"class":2461,"line":2735},24,[2459,2737,2645],{"class":2465},[2459,2739,2478],{"class":2468},[2459,2741,2742],{"class":2484}," 1s\n",[2459,2744,2746,2748,2750],{"class":2461,"line":2745},25,[2459,2747,2657],{"class":2465},[2459,2749,2478],{"class":2468},[2459,2751,2752],{"class":2484}," 2m\n",[2459,2754,2756,2758,2760],{"class":2461,"line":2755},26,[2459,2757,2668],{"class":2465},[2459,2759,2478],{"class":2468},[2459,2761,2762],{"class":2484}," 20s\n",[2459,2764,2766,2768,2770],{"class":2461,"line":2765},27,[2459,2767,2684],{"class":2465},[2459,2769,2478],{"class":2468},[2459,2771,2689],{"class":2484},[1855,2773,2774,2775,1981],{},"A plugin that read such a value as an optional secret in an earlier version can move it here in a new version: a tenant's old secret of that name becomes the setting by itself, and is deleted once no installed version reads it as a secret (",[1956,2776,1959],{"href":2777},"\u002Fadmin\u002Fsecrets\u002Fsettings#settings-are-not-secrets",[1872,2779,2782,2833,2842],{"name":2780,"type":2781},"inject","map",[1855,2783,2784,2785,2787,2788,2791,2792,2795,2796,2799,2800,2803,2804,2807,2808,2068,2810,2109,2813,1879,2816,2819,2820,1887,2823,1936,2826,2829,2830,1981],{},"Credential bindings of the plugin's own secrets, by secret: a list of the hosts each goes to, each with ",[1866,2786,2104],{}," (a name or ",[1866,2789,2790],{},"*.domain",", inside the plugin's ",[1866,2793,2794],{},"egress","; a wildcard over a public suffix such as ",[1866,2797,2798],{},"*.github.io"," is refused, except for SigV4 signing, and a wildcard covers only the hosts its domain's owner holds), ",[1866,2801,2802],{},"port"," (443), one of ",[1866,2805,2806],{},"header"," with ",[1866,2809,2090],{},[1866,2811,2812],{},"\"Bearer {secret}\"",[1866,2814,2815],{},"basic_user",[1866,2817,2818],{},"query",", and optionally ",[1866,2821,2822],{},"methods",[1866,2824,2825],{},"path_prefix",[1866,2827,2828],{},"shape"," (the placeholder's look, such as ",[1866,2831,2832],{},"ghp_{36}",[1855,2834,2835,2836,2838,2839,2841],{},"The plugin's servers then hold a placeholder of the secret, and the node's egress proxy puts the value on requests to the host only. Only a secret in ",[1866,2837,1949],{}," or the plugin's own ",[1866,2840,1963],{},", never a setting.",[1855,2843,2844,2845,2848,2849,2852,2853,2857,2858,1960],{},"A key may also be one of the plugin's ",[1866,2846,2847],{},"connections"," by its name (",[1866,2850,2851],{},"github:","): each covered call then gets the connection's token sealed to the node, and the tool holds a placeholder of it (",[1956,2854,2856],{"href":2855},"\u002Fadmin\u002Fcredential-injection#bind-a-connections-token","Bind a connection's token","). See ",[1956,2859,1651],{"href":1652},[1872,2861,2864,2876,2925],{"name":2862,"type":2863},"models","object",[1855,2865,2866,2867,2870,2871,2875],{},"How the plugin's tools reach models without a key of their own; either needs the tenant's grant at install (",[1866,2868,2869],{},"plugin install --accept-model","), and every such call is a model call of the job that called the tool (",[1956,2872,2874],{"href":2873},"\u002Fbuild\u002Fparts\u002Ftools\u002Fmodel-calls#tools-that-need-a-model","Tools that need a model","):",[2057,2877,2878,2896],{},[2060,2879,2880,2883,2884,1887,2886,1887,2889,2892,2893,1960],{},[1866,2881,2882],{},"sampling",": an alias name (",[1866,2885,2084],{},[1866,2887,2888],{},"fast",[1866,2890,2891],{},"smart"," or one of the plugin's own, which the operator maps). The runtime offers the plugin's servers MCP sampling and answers their requests with that alias; tool policy matches them as ",[1866,2894,2895],{},"\u003Ctool>.sampling",[2060,2897,2898,2901,2902,2905,2906,2410,2909,1887,2912,1887,2915,1887,2918,1879,2921,2924],{},[1866,2899,2900],{},"gateway",": the model APIs the plugin's local servers call through the node's gateway path with each call's token in ",[1866,2903,2904],{},"_meta"," under ",[1866,2907,2908],{},"oz0\u002Fgateway",[1866,2910,2911],{},"anthropic-messages",[1866,2913,2914],{},"openai-chat",[1866,2916,2917],{},"openai-responses",[1866,2919,2920],{},"google-generate-content",[1866,2922,2923],{},"openai-embeddings",", each once. Not for a plugin whose tools are all remote.",[1855,2926,2927,2928,1879,2930,2932,2933,1981],{},"A verified plugin names no provider's key in ",[1866,2929,1949],{},[1866,2931,1963],{}," (house rule ",[1956,2934,2936],{"href":2935},"\u002Fbuild\u002Fplugins\u002Fstructure\u002Flint-rules#oz-s017","OZ-S017",[1872,2938,2940,2941,2944,2945,2948,2949,2952,2953,2956,2957,2068,2960,2963,2964,2967],{"name":2939,"type":1874},"secrets_from","How the plugin's MCP servers get their secrets: ",[1866,2942,2943],{},"env"," (the default), as environment variables, or ",[1866,2946,2947],{},"fd",", as one JSON object on an inherited file descriptor whose number is in ",[1866,2950,2951],{},"OZ0_SECRETS_FD",", with no secret in the server's environment, which every process of the node's user could read in ",[1866,2954,2955],{},"\u002Fproc\u002F\u003Cpid>\u002Fenviron"," for the server's whole life. Read it with the plugin SDK's ",[1866,2958,2959],{},"oz0.secrets",[1866,2961,2962],{},"secrets.load()",", then ",[1866,2965,2966],{},"secrets.require(\"NAME\")","), which falls back to the environment. Harness sessions, and every server on a Windows node, get them as environment variables either way.",[1862,2969,2971],{"id":2970},"uses",[1866,2972,2970],{},[1855,2974,2975,2976,2978,2979,2982],{},"What the plugin's agents and flows use of other plugins, by the used plugin's name (its manifest's ",[1866,2977,2064],{},", not its hub name). From v1.0 they reach their own plugin's tools and agents, ",[1866,2980,2981],{},"oz.*",", and what this lists, once a tenant admin grants it at install.",[2450,2984,2986],{"className":2452,"code":2985,"filename":1727,"language":2454,"meta":2455,"style":2455},"uses:\n  github:\n    version: \">=1.0, \u003C2\"\n    source: hub:ai.oz0\u002Fgithub\n    tools: [oz0_github.get_pull_request, oz0_github.merge_pull_request]\n    agents: [oz0-github]\n",[1866,2987,2988,2994,3001,3015,3025,3044],{"__ignoreMap":2455},[2459,2989,2990,2992],{"class":2461,"line":2462},[2459,2991,2970],{"class":2465},[2459,2993,2469],{"class":2468},[2459,2995,2996,2999],{"class":2461,"line":2472},[2459,2997,2998],{"class":2465},"  github",[2459,3000,2469],{"class":2468},[2459,3002,3003,3006,3008,3010,3013],{"class":2461,"line":2490},[2459,3004,3005],{"class":2465},"    version",[2459,3007,2478],{"class":2468},[2459,3009,2673],{"class":2468},[2459,3011,3012],{"class":2484},">=1.0, \u003C2",[2459,3014,2678],{"class":2468},[2459,3016,3017,3020,3022],{"class":2461,"line":2498},[2459,3018,3019],{"class":2465},"    source",[2459,3021,2478],{"class":2468},[2459,3023,3024],{"class":2484}," hub:ai.oz0\u002Fgithub\n",[2459,3026,3027,3030,3032,3034,3037,3039,3042],{"class":2461,"line":2512},[2459,3028,3029],{"class":2465},"    tools",[2459,3031,2478],{"class":2468},[2459,3033,2481],{"class":2468},[2459,3035,3036],{"class":2484},"oz0_github.get_pull_request",[2459,3038,2602],{"class":2468},[2459,3040,3041],{"class":2484}," oz0_github.merge_pull_request",[2459,3043,2487],{"class":2468},[2459,3045,3046,3049,3051,3053,3056],{"class":2461,"line":2523},[2459,3047,3048],{"class":2465},"    agents",[2459,3050,2478],{"class":2468},[2459,3052,2481],{"class":2468},[2459,3054,3055],{"class":2484},"oz0-github",[2459,3057,2487],{"class":2468},[1869,3059,3060,3090,3109,3134,3151,3165],{},[1872,3061,3063,3064,1887,3066,1887,3069,1879,3072,3075,3076,3080,3081,3085,3086,1981],{"name":3062,"type":1874},"version","The versions of the used plugin this one works with: ",[1866,3065,3012],{},[1866,3067,3068],{},"^1.2",[1866,3070,3071],{},"~1.2",[1866,3073,3074],{},"1.4.0",". Empty takes any. An install is refused when the tenant's version is outside it, and once this plugin is installed, so is an install or update of the used plugin outside it, or without a function, agent or skill this one is granted, unless forced with a reason (",[1956,3077,3079],{"href":3078},"\u002Fbuild\u002Fplugins\u002Finstall\u002Fupdate#updates-and-the-plugins-that-use-them","updates and the plugins that use them","). Give it an upper bound and test both ends (",[1956,3082,3084],{"href":3083},"\u002Fbuild\u002Fplugins\u002Fstructure#test-both-ends-of-a-range","test both ends of a range","); a verified capability must (",[1956,3087,3089],{"href":3088},"\u002Fbuild\u002Fplugins\u002Fstructure\u002Flint-rules#oz-s021","OZ-S021",[1872,3091,3093,3094,3097,3098,1879,3101,3104,3105,3108],{"name":3092,"type":1874},"source","Where an install gets the used plugin when the tenant does not have it: ",[1866,3095,3096],{},"hub:\u003Cname>[@\u003Cversion>]",", a Git URL, ",[1866,3099,3100],{},"oci:\u002F\u002F...",[1866,3102,3103],{},"mcp:\u003Cname>",". Without it, a trusted plugin index that lists a plugin of that name in the range. The admin's ",[1866,3106,3107],{},"--dependency"," wins over it.",[1872,3110,3112,3113,3116,3117,3120,3121,3123,3124,3127,3128,1936,3131,1960],{"name":3111,"type":1918},"tools","The used plugin's functions, ",[1866,3114,3115],{},"\u003Ctool>.\u003Cfunction>",", or ",[1866,3118,3119],{},"\u003Ctool>.*"," for every function of a tool. Not ",[1866,3122,2981],{}," (built-ins need no grant) and not this plugin's own tools. An item may be the function's address, ",[1866,3125,3126],{},"github\u002Foz0_github.get_pull_request",", which must name this entry's plugin; the same holds for ",[1866,3129,3130],{},"agents",[1866,3132,3133],{},"skills",[1872,3135,3136,3137,3140,3141,1887,3144,3147,3148,1981],{"name":3130,"type":1918},"The used plugin's agents this plugin's agents and flows may start as child jobs (",[1866,3138,3139],{},"delegation.allow",", flow steps, ",[1866,3142,3143],{},"outcome.reviewer",[1866,3145,3146],{},"best_of.agents",") or ask as colleagues (",[1866,3149,3150],{},"colleagues.ask",[1872,3152,3153,3154,3156,3157,3160,3161,3164],{"name":3133,"type":1918},"The used plugin's ",[1956,3155,3133],{"href":732}," this plugin's agents may load, by name, or ",[1866,3158,3159],{},"*"," for every one. An agent names them under its own ",[1866,3162,3163],{},"skills:","; their text is untrusted input, which taints the job that reads it.",[1872,3166,3168,3180,3183],{"name":3167,"type":2112},"optional",[1855,3169,3170,3172,3173,3175,3176,3179],{},[1866,3171,2115],{}," when the plugin works without the used one, such as a capability that works with whichever of several\nticket systems a tenant has. An install then asks for this entry's grant only when the tenant has the used plugin,\nin a version the range takes and not retired (otherwise it warns why and goes on without it), and never installs it (unless the admin names it with ",[1866,3174,3107],{},"); installing the used plugin later says what\nthis plugin asks of it, and ",[1866,3177,3178],{},"oz0 plugin grant \u003Cplugin> --accept-uses \u003Cdigest>"," grants it then.",[1855,3181,3182],{},"Removing an\noptionally used plugin is not refused for this plugin: the removal takes it out of this plugin's grant.",[1855,3184,3185,3186,2068,3189,3193,3194,3196],{},"A flow step\nthat needs it runs only while it is granted: write ",[1866,3187,3188],{},"when: '\"\u003Cplugin>\" in uses'",[1956,3190,3192],{"href":3191},"\u002Fbuild\u002Fparts\u002Fflows\u002Fsteps-and-expressions#expressions","uses in\nexpressions","); ",[1866,3195,2220],{}," warns about a step without one. False by default.",[1855,3198,3199,3201,3202,3205,3206,3208,3209,3211,3212,3215],{},[1866,3200,2220],{}," checks the shape, and warns about an agent's tool, a flow's tool step, a delegation, a reviewer, a candidate, a colleague or a flow's agent step that names another plugin's tool or agent without ",[1866,3203,3204],{},"uses:"," listing it, with the address to write. An address whose plugin ",[1866,3207,3204],{}," does not list is an error that gives the ",[1866,3210,3204],{}," line to add. A flow step whose agent is a ",[1866,3213,3214],{},"${{ expression }}"," reaches only agents it was granted at run time.",[2450,3217,3219],{"className":2452,"code":3218,"filename":1727,"language":2454,"meta":2455,"style":2455},"uses:\n  email:\n    version: \">=1.0, \u003C2\"\n    tools: [oz0_email.send]\n  servicenow:\n    version: \">=1.0, \u003C2\"\n    optional: true          # asked for only where the tenant has ServiceNow\n    tools: [servicenow.get_incident, servicenow.update_incident]\n",[1866,3220,3221,3227,3234,3246,3259,3266,3278,3292],{"__ignoreMap":2455},[2459,3222,3223,3225],{"class":2461,"line":2462},[2459,3224,2970],{"class":2465},[2459,3226,2469],{"class":2468},[2459,3228,3229,3232],{"class":2461,"line":2472},[2459,3230,3231],{"class":2465},"  email",[2459,3233,2469],{"class":2468},[2459,3235,3236,3238,3240,3242,3244],{"class":2461,"line":2490},[2459,3237,3005],{"class":2465},[2459,3239,2478],{"class":2468},[2459,3241,2673],{"class":2468},[2459,3243,3012],{"class":2484},[2459,3245,2678],{"class":2468},[2459,3247,3248,3250,3252,3254,3257],{"class":2461,"line":2498},[2459,3249,3029],{"class":2465},[2459,3251,2478],{"class":2468},[2459,3253,2481],{"class":2468},[2459,3255,3256],{"class":2484},"oz0_email.send",[2459,3258,2487],{"class":2468},[2459,3260,3261,3264],{"class":2461,"line":2512},[2459,3262,3263],{"class":2465},"  servicenow",[2459,3265,2469],{"class":2468},[2459,3267,3268,3270,3272,3274,3276],{"class":2461,"line":2523},[2459,3269,3005],{"class":2465},[2459,3271,2478],{"class":2468},[2459,3273,2673],{"class":2468},[2459,3275,3012],{"class":2484},[2459,3277,2678],{"class":2468},[2459,3279,3280,3283,3285,3288],{"class":2461,"line":2534},[2459,3281,3282],{"class":2465},"    optional",[2459,3284,2478],{"class":2468},[2459,3286,3287],{"class":2542}," true",[2459,3289,3291],{"class":3290},"sHwdD","          # asked for only where the tenant has ServiceNow\n",[2459,3293,3294,3296,3298,3300,3303,3305,3308],{"class":2461,"line":2546},[2459,3295,3029],{"class":2465},[2459,3297,2478],{"class":2468},[2459,3299,2481],{"class":2468},[2459,3301,3302],{"class":2484},"servicenow.get_incident",[2459,3304,2602],{"class":2468},[2459,3306,3307],{"class":2484}," servicenow.update_incident",[2459,3309,2487],{"class":2468},[1855,3311,3312,3313,3315,3316,3319],{},"A used plugin may have a ",[1866,3314,3204],{}," of its own: an install of this plugin grants the whole tree as one decision and installs what the tenant lacks, bottom-up. What an admin granted can be narrowed or revoked later (",[1866,3317,3318],{},"oz0 plugin revoke","); the next install of a version that still lists it asks again.",[1862,3321,824],{"id":3322},"addresses",[1855,3324,3325,3326,3329],{},"Every part has one address, ",[1866,3327,3328],{},"\u003Cplugin>\u002F\u003Cpart>",", and every field that names a part takes it beside the bare name:",[3331,3332,3333,3349],"table",{},[3334,3335,3336],"thead",{},[3337,3338,3339,3343,3346],"tr",{},[3340,3341,3342],"th",{},"Part",[3340,3344,3345],{},"Address",[3340,3347,3348],{},"Fields",[3350,3351,3352,3399,3455],"tbody",{},[3337,3353,3354,3358,3371],{},[3355,3356,3357],"td",{},"A function",[3355,3359,3360,3363,3364,3366,3367,3370],{},[1866,3361,3362],{},"github\u002Foz0_github.get_file",", with ",[1866,3365,3159],{}," where a field takes a pattern (",[1866,3368,3369],{},"github\u002Foz0_github.*",")",[3355,3372,3373,3374,3376,3377,3380,3381,3384,3385,1887,3388,3391,3392,1887,3395,3398],{},"an agent's ",[1866,3375,3111],{},", a flow step's ",[1866,3378,3379],{},"tool",", a hook's ",[1866,3382,3383],{},"call"," (own only) and ",[1866,3386,3387],{},"match.tools",[1866,3389,3390],{},"tools[].requires_approval"," (own only), ",[1866,3393,3394],{},"uses.\u003Cplugin>.tools",[1866,3396,3397],{},"policy[].match"," (own only)",[3337,3400,3401,3404,3412],{},[3355,3402,3403],{},"An agent or a flow",[3355,3405,3406,1887,3409],{},[1866,3407,3408],{},"github\u002Foz0-github",[1866,3410,3411],{},"pr-reviewer\u002Freview",[3355,3413,3373,3414,1887,3416,1887,3419,3391,3422,1887,3424,1887,3426,1936,3428,3431,3432,1936,3435,3437,3438,3441,3442,3445,3446,3449,3450,1936,3452],{},[1866,3415,3139],{},[1866,3417,3418],{},"delegation.best_of.agents",[1866,3420,3421],{},"handoffs",[1866,3423,3150],{},[1866,3425,3143],{},[1866,3427,3146],{},[1866,3429,3430],{},"conversation.continue_from","; a flow step's ",[1866,3433,3434],{},"agent",[1866,3436,3146],{},"; a hook's ",[1866,3439,3440],{},"match.agents","; ",[1866,3443,3444],{},"tools[].flow"," (own only); ",[1866,3447,3448],{},"uses.\u003Cplugin>.agents","; an eval's ",[1866,3451,3434],{},[1866,3453,3454],{},"flow",[3337,3456,3457,3460,3468],{},[3355,3458,3459],{},"A skill",[3355,3461,3462,1887,3465],{},[1866,3463,3464],{},"web\u002Fresearch",[1866,3466,3467],{},"web\u002F*",[3355,3469,3373,3470,1887,3472,3391,3475],{},[1866,3471,3133],{},[1866,3473,3474],{},"tools[].manual",[1866,3476,3477],{},"uses.\u003Cplugin>.skills",[2057,3479,3480,3499,3520,3526,3534],{},[2060,3481,3482,3486,3487,3489,3490,3494,3495,3498],{},[3483,3484,3485],"strong",{},"A bare name means this plugin's part."," A bare name of another plugin's function or agent still works, since\nnames are unique in a tenant, and ",[1866,3488,2220],{}," warns (",[1956,3491,3493],{"href":3492},"\u002Fbuild\u002Fplugins\u002Fstructure\u002Flint-rules#oz-s019","OZ-S019","): an error for\nverified plugins. ",[1866,3496,3497],{},"plugin lint --fix"," writes the address.",[2060,3500,3501,3504,3505,3507,3508,3510,3511,3513,3514,3516,3517,3519],{},[3483,3502,3503],{},"The plugin in an address"," is this plugin or one listed under ",[1866,3506,3204],{},". Another is an error that gives the\n",[1866,3509,3204],{}," line to add. A field marked \"own only\" takes only this plugin's name. A hook's ",[1866,3512,3387],{}," and\n",[1866,3515,3440],{}," may name any plugin: a match only watches calls, and a ",[1866,3518,3204],{}," entry would also let the plugin's\nagents make them.",[2060,3521,3522,3525],{},[3483,3523,3524],{},"What nodes see does not change."," The loader writes each address's bare form into the bundle nodes get, so\nrunning jobs, recorded histories and older nodes see the names they saw before; the plugin's files keep what you\nwrote. Tool IDs and agent and flow names stay unique in a tenant: an address names the plugin, not a second part of\nthe same name.",[2060,3527,3528,3533],{},[3483,3529,3530,3531],{},"A flow step whose agent is a ",[1866,3532,3214],{}," is checked when it renders.",[2060,3535,3536,3539,3540,3542,3543,3546,3547,1887,3549,1887,3551,3553,3554,3556,3557,1960,3560,3563],{},[3483,3537,3538],{},"Patterns and names are short."," A function's name or pattern, in any field above that takes one (an agent's ",[1866,3541,3111],{},", built-ins such as ",[1866,3544,3545],{},"oz.delegate"," too, a hook's ",[1866,3548,3387],{},[1866,3550,3394],{},[1866,3552,3397],{},"), is at most 256 bytes, address included, and so is a flow step's ",[1866,3555,3434],{},": 256 bytes hold the longest address, ",[1866,3558,3559],{},"\u003Cplugin>\u002F\u003Ctool>.\u003Cfunction>",[3561,3562],"br",{},"The edge matches these against tool calls, on every call, so loading a plugin refuses a longer one, at its place. A version installed before this bound that holds a longer one is left out where it is read (the edge serves none of it, and logs it) until it is installed again from a fixed manifest.",[1855,3565,3566,1960],{},[1956,3567,3568],{"href":1728},"Back to oz0-plugin.yaml",[3570,3571,3572],"style",{},"html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":2455,"searchDepth":2472,"depth":2472,"links":3574},[3575,3576,3577],{"id":1864,"depth":2472,"text":1864},{"id":2970,"depth":2472,"text":2970},{"id":3322,"depth":2472,"text":824},"md",null,{"audience":3581,"doc_type":3582},"Plugin authors looking up manifest fields","reference",true,{"title":1733,"description":1860},"_0lCv9E6CuiSuhEuvd6s_cHjiF1iDAAfu8HT7vDS8Vo",[3587,3589],{"title":1727,"path":1728,"stem":1729,"description":3588,"icon":725,"children":-1},"Every field of the plugin manifest, and the rules plugin lint checks.",{"title":1737,"path":1738,"stem":1739,"description":3590,"children":-1},"Look up the fields for tool declarations.",1794443002427]