[{"data":1,"prerenderedAt":4381},["ShallowReactive",2],{"navigation_docs":3,"-reference-http-api-repos-chains-harnesses-and-server":520,"-reference-http-api-repos-chains-harnesses-and-server-surround":4376},[4,28,51,191,222,485],{"title":5,"path":6,"stem":7,"children":8},"Get started","\u002Fget-started","1.get-started",[9,12,16,20,24],{"title":10,"path":6,"stem":11},"Overview","1.get-started\u002Findex",{"title":13,"path":14,"stem":15},"Why Kraft","\u002Fget-started\u002Fwhy-kraft","1.get-started\u002F0.why-kraft",{"title":17,"path":18,"stem":19},"Install","\u002Fget-started\u002Finstall","1.get-started\u002F1.install",{"title":21,"path":22,"stem":23},"Your first work item","\u002Fget-started\u002Ffirst-work-item","1.get-started\u002F2.first-work-item",{"title":25,"path":26,"stem":27},"FAQ","\u002Fget-started\u002Ffaq","1.get-started\u002F3.faq",{"title":29,"path":30,"stem":31,"children":32},"Concepts","\u002Fconcepts","2.concepts",[33,35,39,43,47],{"title":10,"path":30,"stem":34},"2.concepts\u002Findex",{"title":36,"path":37,"stem":38},"How a work item runs","\u002Fconcepts\u002Fhow-a-work-item-runs","2.concepts\u002F1.how-a-work-item-runs",{"title":40,"path":41,"stem":42},"Caps and budgets","\u002Fconcepts\u002Fcaps-and-budgets","2.concepts\u002F2.caps-and-budgets",{"title":44,"path":45,"stem":46},"Why a permission gate","\u002Fconcepts\u002Fpermission-gate","2.concepts\u002F3.permission-gate",{"title":48,"path":49,"stem":50},"Vocabulary","\u002Fconcepts\u002Fvocabulary","2.concepts\u002F4.vocabulary",{"title":52,"path":53,"stem":54,"children":55},"Guides","\u002Fguides","3.guides",[56,58,96,117,138,187],{"title":10,"path":53,"stem":57},"3.guides\u002Findex",{"title":59,"path":60,"stem":61,"children":62,"page":95},"Day to day","\u002Fguides\u002Fday-to-day","3.guides\u002F1.day-to-day",[63,67,71,75,79,83,87,91],{"title":64,"path":65,"stem":66},"The setup wizard on first start","\u002Fguides\u002Fday-to-day\u002Ffirst-run","3.guides\u002F1.day-to-day\u002F2.first-run",{"title":68,"path":69,"stem":70},"File a work item","\u002Fguides\u002Fday-to-day\u002Ffile-a-work-item","3.guides\u002F1.day-to-day\u002F3.file-a-work-item",{"title":72,"path":73,"stem":74},"Use Kraft from your agent","\u002Fguides\u002Fday-to-day\u002Fagent-integration","3.guides\u002F1.day-to-day\u002F4.agent-integration",{"title":76,"path":77,"stem":78},"Reviewing a change","\u002Fguides\u002Fday-to-day\u002Freview-a-change","3.guides\u002F1.day-to-day\u002F5.review-a-change",{"title":80,"path":81,"stem":82},"Raise a cap on a stopped item","\u002Fguides\u002Fday-to-day\u002Fraise-a-cap","3.guides\u002F1.day-to-day\u002F6.raise-a-cap",{"title":84,"path":85,"stem":86},"Kraft for VS Code","\u002Fguides\u002Fday-to-day\u002Fvscode","3.guides\u002F1.day-to-day\u002F7.vscode",{"title":88,"path":89,"stem":90},"Kraft on a phone","\u002Fguides\u002Fday-to-day\u002Fkraft-on-a-phone","3.guides\u002F1.day-to-day\u002F8.kraft-on-a-phone",{"title":92,"path":93,"stem":94},"Get notified when an item needs you","\u002Fguides\u002Fday-to-day\u002Fnotifications","3.guides\u002F1.day-to-day\u002F9.notifications",false,{"title":97,"path":98,"stem":99,"children":100,"page":95},"Customize and automate","\u002Fguides\u002Fcustomize","3.guides\u002F2.customize",[101,105,109,113],{"title":102,"path":103,"stem":104},"Write your own chain","\u002Fguides\u002Fcustomize\u002Fwrite-your-own-chain","3.guides\u002F2.customize\u002F1.write-your-own-chain",{"title":106,"path":107,"stem":108},"Add a security review or a gate reviewer","\u002Fguides\u002Fcustomize\u002Fadd-review-agents","3.guides\u002F2.customize\u002F2.add-review-agents",{"title":110,"path":111,"stem":112},"Schedule or webhook work","\u002Fguides\u002Fcustomize\u002Fschedule-and-webhook-work","3.guides\u002F2.customize\u002F3.schedule-and-webhook-work",{"title":114,"path":115,"stem":116},"Share chains with add-ons","\u002Fguides\u002Fcustomize\u002Fshare-chains-with-addons","3.guides\u002F2.customize\u002F4.share-chains-with-addons",{"title":118,"path":119,"stem":120,"children":121,"page":95},"Agents and harnesses","\u002Fguides\u002Fharnesses","3.guides\u002F3.harnesses",[122,126,130,134],{"title":123,"path":124,"stem":125},"Switch a task to another harness","\u002Fguides\u002Fharnesses\u002Fswitch-harness","3.guides\u002F3.harnesses\u002F1.switch-harness",{"title":127,"path":128,"stem":129},"Add or override a harness","\u002Fguides\u002Fharnesses\u002Fadding-a-harness","3.guides\u002F3.harnesses\u002F2.adding-a-harness",{"title":131,"path":132,"stem":133},"Build a worker Kit","\u002Fguides\u002Fharnesses\u002Fworker-kit","3.guides\u002F3.harnesses\u002F3.worker-kit",{"title":135,"path":136,"stem":137},"Give a worker its login","\u002Fguides\u002Fharnesses\u002Fgive-a-worker-its-login","3.guides\u002F3.harnesses\u002F4.give-a-worker-its-login",{"title":139,"path":140,"stem":141,"children":142,"page":95},"Run the server","\u002Fguides\u002Frun","3.guides\u002F4.run",[143,147,151,155,159,163,167,171,175,179,183],{"title":144,"path":145,"stem":146},"Remote access","\u002Fguides\u002Frun\u002Fremote-access","3.guides\u002F4.run\u002F01.remote-access",{"title":148,"path":149,"stem":150},"Put a proxy in front of Kraft","\u002Fguides\u002Frun\u002Fput-a-proxy-in-front-of-kraft","3.guides\u002F4.run\u002F02.put-a-proxy-in-front-of-kraft",{"title":152,"path":153,"stem":154},"Restart Kraft without ending running agents","\u002Fguides\u002Frun\u002Frestart-kraft","3.guides\u002F4.run\u002F03.restart-kraft",{"title":156,"path":157,"stem":158},"Back up and restore the database","\u002Fguides\u002Frun\u002Fback-up-and-restore","3.guides\u002F4.run\u002F04.back-up-and-restore",{"title":160,"path":161,"stem":162},"Logs and disk space","\u002Fguides\u002Frun\u002Flogs-and-disk-space","3.guides\u002F4.run\u002F05.logs-and-disk-space",{"title":164,"path":165,"stem":166},"Run Kraft as a service","\u002Fguides\u002Frun\u002Frun-as-a-service","3.guides\u002F4.run\u002F06.run-as-a-service",{"title":168,"path":169,"stem":170},"Upgrade Kraft","\u002Fguides\u002Frun\u002Fupgrade-kraft","3.guides\u002F4.run\u002F07.upgrade-kraft",{"title":172,"path":173,"stem":174},"Upgrade your configuration","\u002Fguides\u002Frun\u002Fupgrade-your-configuration","3.guides\u002F4.run\u002F08.upgrade-your-configuration",{"title":176,"path":177,"stem":178},"Upgrade from 1.4","\u002Fguides\u002Frun\u002Fupgrade-from-1-4","3.guides\u002F4.run\u002F09.upgrade-from-1-4",{"title":180,"path":181,"stem":182},"Upgrade from 0.x or a release candidate","\u002Fguides\u002Frun\u002Fupgrade-from-0-x-or-a-release-candidate","3.guides\u002F4.run\u002F10.upgrade-from-0-x-or-a-release-candidate",{"title":184,"path":185,"stem":186},"Roll back to 1.4","\u002Fguides\u002Frun\u002Froll-back","3.guides\u002F4.run\u002F11.roll-back",{"title":188,"path":189,"stem":190},"Kraft Lite","\u002Fguides\u002Fkraft-lite","3.guides\u002F5.kraft-lite",{"title":192,"path":193,"stem":194,"children":195},"Troubleshooting","\u002Ftroubleshooting","4.troubleshooting",[196,198,202,206,210,214,218],{"title":10,"path":193,"stem":197},"4.troubleshooting\u002Findex",{"title":199,"path":200,"stem":201},"Why did my item stop?","\u002Ftroubleshooting\u002Fwhy-did-my-item-stop","4.troubleshooting\u002F1.why-did-my-item-stop",{"title":203,"path":204,"stem":205},"Stop reasons in detail","\u002Ftroubleshooting\u002Fstop-reasons-in-detail","4.troubleshooting\u002F2.stop-reasons-in-detail",{"title":207,"path":208,"stem":209},"Starting and reaching Kraft","\u002Ftroubleshooting\u002Fstarting-and-reaching-kraft","4.troubleshooting\u002F3.starting-and-reaching-kraft",{"title":211,"path":212,"stem":213},"Doctor failures","\u002Ftroubleshooting\u002Fdoctor-failures","4.troubleshooting\u002F4.doctor-failures",{"title":215,"path":216,"stem":217},"Sandbox and Kit stops","\u002Ftroubleshooting\u002Fsandbox-and-kit-stops","4.troubleshooting\u002F5.sandbox-and-kit-stops",{"title":219,"path":220,"stem":221},"Add-on problems","\u002Ftroubleshooting\u002Faddon-problems","4.troubleshooting\u002F6.addon-problems",{"title":223,"path":224,"stem":225,"children":226},"Reference","\u002Freference","5.reference",[227,229,267,289,293,391,409,435,439,443,477,481],{"title":10,"path":224,"stem":228},"5.reference\u002Findex",{"title":230,"path":231,"stem":232,"children":233},"Web UI","\u002Freference\u002Fweb-ui","5.reference\u002F00.web-ui\u002Findex",[234,235,239,243,247,251,255,259,263],{"title":10,"path":231,"stem":232},{"title":236,"path":237,"stem":238},"Sidebar, search, and keyboard","\u002Freference\u002Fweb-ui\u002Fsidebar-search-and-keyboard","5.reference\u002F00.web-ui\u002F0.sidebar-search-and-keyboard",{"title":240,"path":241,"stem":242},"The board","\u002Freference\u002Fweb-ui\u002Fboard","5.reference\u002F00.web-ui\u002F1.board",{"title":244,"path":245,"stem":246},"An item's page","\u002Freference\u002Fweb-ui\u002Fitem-page","5.reference\u002F00.web-ui\u002F2.item-page",{"title":248,"path":249,"stem":250},"Fix loops and test scopes","\u002Freference\u002Fweb-ui\u002Ffix-loops-and-test-scopes","5.reference\u002F00.web-ui\u002F3.fix-loops-and-test-scopes",{"title":252,"path":253,"stem":254},"Config before an item starts","\u002Freference\u002Fweb-ui\u002Fconfig-before-start","5.reference\u002F00.web-ui\u002F4.config-before-start",{"title":256,"path":257,"stem":258},"The review page","\u002Freference\u002Fweb-ui\u002Freview-page","5.reference\u002F00.web-ui\u002F5.review-page",{"title":260,"path":261,"stem":262},"Templates and Settings","\u002Freference\u002Fweb-ui\u002Ftemplates-and-settings","5.reference\u002F00.web-ui\u002F6.templates-and-settings",{"title":264,"path":265,"stem":266},"Analytics","\u002Freference\u002Fweb-ui\u002Fanalytics","5.reference\u002F00.web-ui\u002F7.analytics",{"title":268,"path":269,"stem":270,"children":271},"CLI","\u002Freference\u002Fcli","5.reference\u002F01.cli\u002Findex",[272,273,277,281,285],{"title":10,"path":269,"stem":270},{"title":274,"path":275,"stem":276},"Item verbs","\u002Freference\u002Fcli\u002Fitem","5.reference\u002F01.cli\u002F2.item",{"title":278,"path":279,"stem":280},"View verbs","\u002Freference\u002Fcli\u002Fview","5.reference\u002F01.cli\u002F3.view",{"title":282,"path":283,"stem":284},"Repo verbs","\u002Freference\u002Fcli\u002Frepo","5.reference\u002F01.cli\u002F4.repo",{"title":286,"path":287,"stem":288},"Admin verbs","\u002Freference\u002Fcli\u002Fadmin","5.reference\u002F01.cli\u002F5.admin",{"title":290,"path":291,"stem":292},"Work item statuses","\u002Freference\u002Fstatuses","5.reference\u002F02.statuses",{"title":294,"path":295,"stem":296,"children":297},"Configuration","\u002Freference\u002Fconfiguration","5.reference\u002F03.configuration\u002Findex",[298,299,317,321,325,329,333,337,341,345,379,383,387],{"title":10,"path":295,"stem":296},{"title":300,"path":301,"stem":302,"children":303},"repos.yaml","\u002Freference\u002Fconfiguration\u002Frepos","5.reference\u002F03.configuration\u002F02.repos\u002Findex",[304,305,309,313],{"title":10,"path":301,"stem":302},{"title":306,"path":307,"stem":308},"How connect proposes commands","\u002Freference\u002Fconfiguration\u002Frepos\u002Fconnect-proposals","5.reference\u002F03.configuration\u002F02.repos\u002F1.connect-proposals",{"title":310,"path":311,"stem":312},"detectors.yaml","\u002Freference\u002Fconfiguration\u002Frepos\u002Fdetectors","5.reference\u002F03.configuration\u002F02.repos\u002F2.detectors",{"title":314,"path":315,"stem":316},"Workspaces","\u002Freference\u002Fconfiguration\u002Frepos\u002Fworkspaces","5.reference\u002F03.configuration\u002F02.repos\u002F3.workspaces",{"title":318,"path":319,"stem":320},"policy.yaml","\u002Freference\u002Fconfiguration\u002Fpolicy","5.reference\u002F03.configuration\u002F03.policy",{"title":322,"path":323,"stem":324},"Library and chains","\u002Freference\u002Fconfiguration\u002Flibrary-and-chains","5.reference\u002F03.configuration\u002F04.library-and-chains",{"title":326,"path":327,"stem":328},"harnesses.yaml","\u002Freference\u002Fconfiguration\u002Fharnesses-file","5.reference\u002F03.configuration\u002F05.harnesses-file",{"title":330,"path":331,"stem":332},"access.yaml","\u002Freference\u002Fconfiguration\u002Faccess","5.reference\u002F03.configuration\u002F06.access",{"title":334,"path":335,"stem":336},"intake.yaml","\u002Freference\u002Fconfiguration\u002Fintake","5.reference\u002F03.configuration\u002F07.intake",{"title":338,"path":339,"stem":340},"notify.yaml","\u002Freference\u002Fconfiguration\u002Fnotify","5.reference\u002F03.configuration\u002F08.notify",{"title":342,"path":343,"stem":344},"theme.yaml","\u002Freference\u002Fconfiguration\u002Ftheme","5.reference\u002F03.configuration\u002F09.theme",{"title":346,"path":347,"stem":348,"children":349},"Sandboxed workers","\u002Freference\u002Fconfiguration\u002Fsandbox","5.reference\u002F03.configuration\u002F10.sandbox\u002Findex",[350,351,355,359,363,367,371,375],{"title":10,"path":347,"stem":348},{"title":352,"path":353,"stem":354},"Resource limits","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fresource-limits","5.reference\u002F03.configuration\u002F10.sandbox\u002F1.resource-limits",{"title":356,"path":357,"stem":358},"Callbacks from a sandbox","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fcallbacks","5.reference\u002F03.configuration\u002F10.sandbox\u002F2.callbacks",{"title":360,"path":361,"stem":362},"Network policy","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fnetwork-policy","5.reference\u002F03.configuration\u002F10.sandbox\u002F3.network-policy",{"title":364,"path":365,"stem":366},"Credentials","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fcredentials","5.reference\u002F03.configuration\u002F10.sandbox\u002F4.credentials",{"title":368,"path":369,"stem":370},"Kits","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fkits","5.reference\u002F03.configuration\u002F10.sandbox\u002F5.kits",{"title":372,"path":373,"stem":374},"sandbox.yaml","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fsandbox-yaml","5.reference\u002F03.configuration\u002F10.sandbox\u002F6.sandbox-yaml",{"title":376,"path":377,"stem":378},"Git in a sandbox","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fgit-in-a-sandbox","5.reference\u002F03.configuration\u002F10.sandbox\u002F7.git-in-a-sandbox",{"title":380,"path":381,"stem":382},"Environment variables","\u002Freference\u002Fconfiguration\u002Fenvironment-variables","5.reference\u002F03.configuration\u002F11.environment-variables",{"title":384,"path":385,"stem":386},"Add-ons and collections","\u002Freference\u002Fconfiguration\u002Faddons","5.reference\u002F03.configuration\u002F12.addons",{"title":388,"path":389,"stem":390},"Repo libraries","\u002Freference\u002Fconfiguration\u002Frepo-libraries","5.reference\u002F03.configuration\u002F13.repo-libraries",{"title":392,"path":393,"stem":394,"children":395},"Chain file keys","\u002Freference\u002Fchain-nodes","5.reference\u002F04.chain-nodes\u002Findex",[396,397,401,405],{"title":10,"path":393,"stem":394},{"title":398,"path":399,"stem":400},"Subprocess tasks","\u002Freference\u002Fchain-nodes\u002Fsubprocess-tasks","5.reference\u002F04.chain-nodes\u002F2.subprocess-tasks",{"title":402,"path":403,"stem":404},"Fix loop and judge","\u002Freference\u002Fchain-nodes\u002Ffix-loop","5.reference\u002F04.chain-nodes\u002F3.fix-loop",{"title":406,"path":407,"stem":408},"Result file","\u002Freference\u002Fchain-nodes\u002Fresult-file","5.reference\u002F04.chain-nodes\u002F4.result-file",{"title":410,"path":411,"stem":412,"children":413},"Agent harnesses","\u002Freference\u002Fharnesses","5.reference\u002F05.harnesses\u002Findex",[414,415,419,423,427,431],{"title":10,"path":411,"stem":412},{"title":416,"path":417,"stem":418},"Unattended runs","\u002Freference\u002Fharnesses\u002Funattended-runs","5.reference\u002F05.harnesses\u002F2.unattended-runs",{"title":420,"path":421,"stem":422},"Agent profiles","\u002Freference\u002Fharnesses\u002Fagent-profiles","5.reference\u002F05.harnesses\u002F3.agent-profiles",{"title":424,"path":425,"stem":426},"Harness definition files","\u002Freference\u002Fharnesses\u002Fharness-files","5.reference\u002F05.harnesses\u002F4.harness-files",{"title":428,"path":429,"stem":430},"Fallback and escalation","\u002Freference\u002Fharnesses\u002Ffallback-and-escalation","5.reference\u002F05.harnesses\u002F5.fallback-and-escalation",{"title":432,"path":433,"stem":434},"Cost reporting","\u002Freference\u002Fharnesses\u002Fcost-reporting","5.reference\u002F05.harnesses\u002F6.cost-reporting",{"title":436,"path":437,"stem":438},"Permission gate","\u002Freference\u002Fpermissions","5.reference\u002F06.permissions",{"title":440,"path":441,"stem":442},"Inbound triggers","\u002Freference\u002Ftriggers","5.reference\u002F07.triggers",{"title":444,"path":445,"stem":446,"children":447},"HTTP API","\u002Freference\u002Fhttp-api","5.reference\u002F08.http-api\u002Findex",[448,449,453,457,461,465,469,473],{"title":10,"path":445,"stem":446},{"title":450,"path":451,"stem":452},"Filing, reading and changing work items","\u002Freference\u002Fhttp-api\u002Fwork-items","5.reference\u002F08.http-api\u002F2.work-items",{"title":454,"path":455,"stem":456},"Gates, run control, ending and retry","\u002Freference\u002Fhttp-api\u002Fgates-run-control-and-ending","5.reference\u002F08.http-api\u002F3.gates-run-control-and-ending",{"title":458,"path":459,"stem":460},"The work item object","\u002Freference\u002Fhttp-api\u002Fwork-item-object","5.reference\u002F08.http-api\u002F4.work-item-object",{"title":462,"path":463,"stem":464},"Budget, events, diff and documents","\u002Freference\u002Fhttp-api\u002Fbudget-and-events","5.reference\u002F08.http-api\u002F5.budget-and-events",{"title":466,"path":467,"stem":468},"Repos, chains, harnesses and the server","\u002Freference\u002Fhttp-api\u002Frepos-chains-harnesses-and-server","5.reference\u002F08.http-api\u002F6.repos-chains-harnesses-and-server",{"title":470,"path":471,"stem":472},"Drafts","\u002Freference\u002Fhttp-api\u002Fdrafts","5.reference\u002F08.http-api\u002F7.drafts",{"title":474,"path":475,"stem":476},"Ops for each draft area","\u002Freference\u002Fhttp-api\u002Fdraft-ops","5.reference\u002F08.http-api\u002F8.draft-ops",{"title":478,"path":479,"stem":480},"MCP tools","\u002Freference\u002Fmcp-tools","5.reference\u002F09.mcp-tools",{"title":482,"path":483,"stem":484},"Events","\u002Freference\u002Fevents","5.reference\u002F10.events",{"title":486,"path":487,"stem":488,"children":489},"Security and project","\u002Fproject","6.project",[490,492,496,500,504,508,512,516],{"title":10,"path":487,"stem":491},"6.project\u002Findex",{"title":493,"path":494,"stem":495},"Security","\u002Fproject\u002Fsecurity","6.project\u002F1.security",{"title":497,"path":498,"stem":499},"Data and privacy","\u002Fproject\u002Fdata-and-privacy","6.project\u002F2.data-and-privacy",{"title":501,"path":502,"stem":503},"What's new in 2.0","\u002Fproject\u002Fwhats-new","6.project\u002F3.whats-new",{"title":505,"path":506,"stem":507},"Status and support","\u002Fproject\u002Fstatus-and-support","6.project\u002F4.status-and-support",{"title":509,"path":510,"stem":511},"Architecture","\u002Fproject\u002Farchitecture","6.project\u002F5.architecture",{"title":513,"path":514,"stem":515},"Source map","\u002Fproject\u002Fsource-map","6.project\u002F6.source-map",{"title":517,"path":518,"stem":519},"Contributing","\u002Fproject\u002Fcontributing","6.project\u002F7.contributing",{"id":521,"title":466,"body":522,"description":4369,"extension":4370,"links":4371,"meta":4372,"navigation":4373,"path":467,"seo":4374,"stem":468,"__hash__":4375},"docs\u002F5.reference\u002F08.http-api\u002F6.repos-chains-harnesses-and-server.md",{"type":523,"value":524,"toc":4295},"minimark",[525,552,929,934,940,943,1014,1019,1027,1115,1127,1184,1189,1202,1359,1371,1421,1426,1442,1566,1569,1626,1631,1648,1691,1694,1710,1885,1889,1900,1905,1908,2036,2044,2049,2053,2142,2155,2160,2178,2183,2206,2211,2232,2277,2282,2288,2384,2403,2446,2449,2456,2563,2589,2593,2624,2638,2641,2648,2653,2658,2782,2787,2808,2813,2829,2833,2840,2845,2859,2912,2917,2933,2938,2954,2974,2979,2997,3019,3053,3057,3062,3095,3124,3129,3137,3141,3147,3152,3157,3219,3224,3227,3272,3278,3338,3343,3361,3398,3447,3452,3457,3493,3540,3545,3551,3587,3590,3640,3644,3649,3656,3923,4014,4019,4026,4143,4220,4234,4257,4261,4291],[526,527,528,529,534,535,537,538,542,543,547,548,551],"p",{},"This page lists the board's routes for connecting, changing and disconnecting a repo, chains and the library, ",[530,531,533],"a",{"href":532},"\u002Fconcepts\u002Fvocabulary#harness","harnesses",", changes saved but not applied, the update check and editors. Like the other board routes they can change in any release: see ",[530,536,450],{"href":451}," for the rule, and the ",[530,539,541],{"href":540},"\u002Freference\u002Fhttp-api#stable-routes","stable routes"," for the two that keep their shape. Prefer the ",[544,545,546],"code",{},"kraft"," command with ",[544,549,550],{},"--json",".",[553,554,555,568],"table",{},[556,557,558],"thead",{},[559,560,561,565],"tr",{},[562,563,564],"th",{},"Route",[562,566,567],{},"What it does",[569,570,571,585,598,611,626,639,652,669,686,699,712,725,738,751,764,782,799,812,825,838,851,864,877,890,903,916],"tbody",{},[559,572,573,582],{},[574,575,576],"td",{},[530,577,579],{"href":578},"#get-apirepos",[544,580,581],{},"GET \u002Fapi\u002Frepos",[574,583,584],{},"Lists the connected repos and workspaces.",[559,586,587,595],{},[574,588,589],{},[530,590,592],{"href":591},"#post-apireposprobe",[544,593,594],{},"POST \u002Fapi\u002Frepos\u002Fprobe",[574,596,597],{},"Reads a repository and proposes how to connect it.",[559,599,600,608],{},[574,601,602],{},[530,603,605],{"href":604},"#post-apirepos",[544,606,607],{},"POST \u002Fapi\u002Frepos",[574,609,610],{},"Connects a repository.",[559,612,613,621],{},[574,614,615],{},[530,616,618],{"href":617},"#patch-apirepospath",[544,619,620],{},"PATCH \u002Fapi\u002Frepos?path=",[574,622,623,624,551],{},"Changes a connected repo's entry in ",[544,625,300],{},[559,627,628,636],{},[574,629,630],{},[530,631,633],{"href":632},"#delete-apirepospath",[544,634,635],{},"DELETE \u002Fapi\u002Frepos?path=",[574,637,638],{},"Disconnects a repo.",[559,640,641,649],{},[574,642,643],{},[530,644,646],{"href":645},"#get-apitemplateschains",[544,647,648],{},"GET \u002Fapi\u002Ftemplates\u002Fchains",[574,650,651],{},"Lists every chain.",[559,653,654,662],{},[574,655,656],{},[530,657,659],{"href":658},"#get-apitemplateschainsidresolved",[544,660,661],{},"GET \u002Fapi\u002Ftemplates\u002Fchains\u002F{id}\u002Fresolved",[574,663,664,665,668],{},"Answers one chain with its ",[544,666,667],{},"extends"," expanded.",[559,670,671,679],{},[574,672,673],{},[530,674,676],{"href":675},"#get-apitemplateslibrary",[544,677,678],{},"GET \u002Fapi\u002Ftemplates\u002Flibrary",[574,680,681,682,685],{},"Answers ",[544,683,684],{},"library.yaml"," and every component in it.",[559,687,688,696],{},[574,689,690],{},[530,691,693],{"href":692},"#get-apitemplateslibraryref",[544,694,695],{},"GET \u002Fapi\u002Ftemplates\u002Flibrary\u002F{ref}",[574,697,698],{},"Answers one library component.",[559,700,701,709],{},[574,702,703],{},[530,704,706],{"href":705},"#get-apitemplatessteeringpreview",[544,707,708],{},"GET \u002Fapi\u002Ftemplates\u002Fsteering\u002Fpreview",[574,710,711],{},"Shows what an agent task reads at launch.",[559,713,714,722],{},[574,715,716],{},[530,717,719],{"href":718},"#get-apiharnessesprofiles",[544,720,721],{},"GET \u002Fapi\u002Fharnesses\u002Fprofiles",[574,723,724],{},"Answers the harness profiles and the agent profiles.",[559,726,727,735],{},[574,728,729],{},[530,730,732],{"href":731},"#get-apiharnesses",[544,733,734],{},"GET \u002Fapi\u002Fharnesses",[574,736,737],{},"Lists each provider and whether its CLI is installed.",[559,739,740,748],{},[574,741,742],{},[530,743,745],{"href":744},"#get-apiharnessesproviders",[544,746,747],{},"GET \u002Fapi\u002Fharnesses\u002Fproviders",[574,749,750],{},"Answers each provider's capabilities.",[559,752,753,761],{},[574,754,755],{},[530,756,758],{"href":757},"#get-apiapply",[544,759,760],{},"GET \u002Fapi\u002Fapply",[574,762,763],{},"Lists what is saved and not running yet.",[559,765,766,774],{},[574,767,768],{},[530,769,771],{"href":770},"#post-apiapplyreload",[544,772,773],{},"POST \u002Fapi\u002Fapply\u002Freload",[574,775,776,777,779,780,551],{},"Rereads the library, ",[544,778,318],{}," and ",[544,781,334],{},[559,783,784,792],{},[574,785,786],{},[530,787,789],{"href":788},"#post-apitemplatesreload",[544,790,791],{},"POST \u002Fapi\u002Ftemplates\u002Freload",[574,793,776,794,779,796,798],{},[544,795,318],{},[544,797,334],{},", and answers what it refused.",[559,800,801,809],{},[574,802,803],{},[530,804,806],{"href":805},"#post-apiapplyrestart",[544,807,808],{},"POST \u002Fapi\u002Fapply\u002Frestart",[574,810,811],{},"Restarts a server that a service manager started.",[559,813,814,822],{},[574,815,816],{},[530,817,819],{"href":818},"#get-apiupdate",[544,820,821],{},"GET \u002Fapi\u002Fupdate",[574,823,824],{},"Answers the cached update check.",[559,826,827,835],{},[574,828,829],{},[530,830,832],{"href":831},"#post-apiupdatecheck",[544,833,834],{},"POST \u002Fapi\u002Fupdate\u002Fcheck",[574,836,837],{},"Asks the release feed now.",[559,839,840,848],{},[574,841,842],{},[530,843,845],{"href":844},"#get-apistorage",[544,846,847],{},"GET \u002Fapi\u002Fstorage",[574,849,850],{},"Answers the disk the worktrees use, item by item.",[559,852,853,861],{},[574,854,855],{},[530,856,858],{"href":857},"#post-apistoragepreview",[544,859,860],{},"POST \u002Fapi\u002Fstorage\u002Fpreview",[574,862,863],{},"Shows what archiving some items would free and lose.",[559,865,866,874],{},[574,867,868],{},[530,869,871],{"href":870},"#get-apieditors",[544,872,873],{},"GET \u002Fapi\u002Feditors",[574,875,876],{},"Lists the editors this machine can open.",[559,878,879,887],{},[574,880,881],{},[530,882,884],{"href":883},"#post-apidocumentsidopen",[544,885,886],{},"POST \u002Fapi\u002Fdocuments\u002F{id}\u002Fopen",[574,888,889],{},"Opens a document in an editor.",[559,891,892,900],{},[574,893,894],{},[530,895,897],{"href":896},"#post-apiwork-itemsidartifactopen",[544,898,899],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fartifact\u002Fopen",[574,901,902],{},"Opens the pending gate's document.",[559,904,905,913],{},[574,906,907],{},[530,908,910],{"href":909},"#post-apiwork-itemsidartifactskindopen",[544,911,912],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fartifacts\u002F{kind}\u002Fopen",[574,914,915],{},"Opens a task's document.",[559,917,918,926],{},[574,919,920],{},[530,921,923],{"href":922},"#post-apiwork-itemsidopen-worktree",[544,924,925],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fopen-worktree",[574,927,928],{},"Opens the item's worktree.",[930,931,933],"h2",{"id":932},"connecting-a-repo","Connecting a repo",[935,936,938],"h3",{"id":937},"get-apirepos",[544,939,581],{},[526,941,942],{},"Answers the connected repos and workspaces, and the checkout the server was started in when it is not connected yet.",[553,944,945,958],{},[556,946,947],{},[559,948,949,952,955],{},[562,950,951],{},"Field",[562,953,954],{},"Type",[562,956,957],{},"Meaning",[569,959,960,978,995],{},[559,961,962,967,970],{},[574,963,964],{},[544,965,966],{},"repos",[574,968,969],{},"list",[574,971,972,973,977],{},"One entry per connected repo, as ",[530,974,975],{"href":301},[544,976,300],{}," holds it, defaults included.",[559,979,980,985,988],{},[574,981,982],{},[544,983,984],{},"workspaces",[574,986,987],{},"object",[574,989,990,991,994],{},"The ",[544,992,993],{},"workspaces:"," section, by workspace id.",[559,996,997,1002,1008],{},[574,998,999],{},[544,1000,1001],{},"suggested",[574,1003,1004,1005],{},"string or ",[544,1006,1007],{},"null",[574,1009,1010,1011,1013],{},"The git checkout the server was started in, when it is one and not connected yet, else ",[544,1012,1007],{},". The first-run board offers it as the path to connect.",[935,1015,1017],{"id":1016},"post-apireposprobe",[544,1018,594],{},[526,1020,1021,1022,1026],{},"Reads a repository and changes nothing. ",[530,1023,1025],{"href":1024},"#the-proposal-answer","The proposal answer"," says what it returns.",[553,1028,1029,1042],{},[556,1030,1031],{},[559,1032,1033,1035,1037,1040],{},[562,1034,951],{},[562,1036,954],{},[562,1038,1039],{},"Default",[562,1041,957],{},[569,1043,1044,1060,1096],{},[559,1045,1046,1051,1054,1057],{},[574,1047,1048],{},[544,1049,1050],{},"path",[574,1052,1053],{},"string",[574,1055,1056],{},"required",[574,1058,1059],{},"The absolute path of the repository.",[559,1061,1062,1067,1070,1075],{},[574,1063,1064],{},[544,1065,1066],{},"detect",[574,1068,1069],{},"boolean",[574,1071,1072],{},[544,1073,1074],{},"true",[574,1076,1077,1078,1081,1082,1084,1085,1084,1088,1091,1092,551],{},"With ",[544,1079,1080],{},"false"," the route answers only what needs no detector table: the resolved ",[544,1083,1050],{},", ",[544,1086,1087],{},"name",[544,1089,1090],{},"branch",", submodules, beads and ",[530,1093,1095],{"href":1094},"\u002Fconcepts\u002Fvocabulary#forge","forge",[559,1097,1098,1103,1105,1108],{},[574,1099,1100],{},[544,1101,1102],{},"test_command",[574,1104,1053],{},[574,1106,1107],{},"none",[574,1109,1110,1111,1114],{},"The root's test command, in place of the proposed one. ",[544,1112,1113],{},"\"\""," declares that the repo has no tests.",[526,1116,1077,1117,1119,1120,1122,1123,1126],{},[544,1118,1102],{}," the answer is the proposal that connecting with that command would save. The probe runs in a process of its own with a two-minute limit, so a repository's files cannot stall the server. ",[530,1121,306],{"href":307}," says how a proposal is made, what limits the probe, and what connect does when the probe fails. The ",[544,1124,1125],{},"429"," below is only on this page.",[553,1128,1129,1139],{},[556,1130,1131],{},[559,1132,1133,1136],{},[562,1134,1135],{},"Status",[562,1137,1138],{},"When",[569,1140,1141,1154,1166],{},[559,1142,1143,1148],{},[574,1144,1145],{},[544,1146,1147],{},"400",[574,1149,1150,1151,1153],{},"The path is not a directory or not a git repository, ",[544,1152,310],{}," does not load (the answer names it), or the probe ran past two minutes.",[559,1155,1156,1161],{},[574,1157,1158],{},[544,1159,1160],{},"422",[574,1162,1163,1165],{},[544,1164,1050],{}," is relative.",[559,1167,1168,1172],{},[574,1169,1170],{},[544,1171,1125],{},[574,1173,1174,1176,1177,1179,1180,1183],{},[544,1175,1066],{}," is ",[544,1178,1074],{}," and two probes are already running. Try again shortly. A probe with ",[544,1181,1182],{},"detect: false"," is never queued.",[935,1185,1187],{"id":1186},"post-apirepos",[544,1188,607],{},[526,1190,1191,1192,1194,1195,1198,1199,551],{},"Connects a repository: it probes it, saves the entry to ",[544,1193,300],{},", and indexes the repo for search. It answers ",[544,1196,1197],{},"201"," with the saved entry and ",[530,1200,1201],{"href":1024},"the proposal answer",[553,1203,1204,1216],{},[556,1205,1206],{},[559,1207,1208,1210,1212,1214],{},[562,1209,951],{},[562,1211,954],{},[562,1213,1039],{},[562,1215,957],{},[569,1217,1218,1230,1244,1261,1278,1295,1310,1329],{},[559,1219,1220,1224,1226,1228],{},[574,1221,1222],{},[544,1223,1050],{},[574,1225,1053],{},[574,1227,1056],{},[574,1229,1059],{},[559,1231,1232,1236,1238,1241],{},[574,1233,1234],{},[544,1235,1087],{},[574,1237,1053],{},[574,1239,1240],{},"the directory name",[574,1242,1243],{},"The repo's name.",[559,1245,1246,1251,1253,1258],{},[574,1247,1248],{},[544,1249,1250],{},"default_chain",[574,1252,1053],{},[574,1254,1255],{},[544,1256,1257],{},"default",[574,1259,1260],{},"The chain its items run when none is named.",[559,1262,1263,1267,1269,1272],{},[574,1264,1265],{},[544,1266,1102],{},[574,1268,1053],{},[574,1270,1271],{},"the probe's proposal",[574,1273,1274,1275,1277],{},"The root's test command. ",[544,1276,1113],{}," declares a repo with no tests, which may be enabled.",[559,1279,1280,1285,1287,1289],{},[574,1281,1282],{},[544,1283,1284],{},"setup_command",[574,1286,1053],{},[574,1288,1271],{},[574,1290,1291,1292,1294],{},"The command that prepares a worktree. ",[544,1293,1113],{}," declares none.",[559,1296,1297,1302,1304,1307],{},[574,1298,1299],{},[544,1300,1301],{},"test_scopes",[574,1303,969],{},[574,1305,1306],{},"the probe's nested scopes",[574,1308,1309],{},"Test scopes by directory. An empty list is read as unset.",[559,1311,1312,1317,1319,1326],{},[574,1313,1314],{},[544,1315,1316],{},"enabled",[574,1318,1069],{},[574,1320,1321,1323,1324],{},[544,1322,1074],{}," with a test command or test scopes, else ",[544,1325,1080],{},[574,1327,1328],{},"Whether new items may target the repo.",[559,1330,1331,1347,1349,1352],{},[574,1332,1333,1084,1335,1084,1338,1084,1341,1084,1344],{},[544,1334,1095],{},[544,1336,1337],{},"project",[544,1339,1340],{},"models",[544,1342,1343],{},"deny_tools",[544,1345,1346],{},"steering",[574,1348],{},[574,1350,1351],{},"the probe's forge and project, else empty",[574,1353,1354,1355,551],{},"The fields of the same names in ",[530,1356,1357],{"href":301},[544,1358,300],{},[526,1360,1361,1362,1364,1365,1367,1368,551],{},"A ",[544,1363,1102],{}," or ",[544,1366,1284],{}," in the body replaces the proposal. If the body gives both, the route connects a repo the probe fails on, with those commands, and says why in ",[544,1369,1370],{},"probe_failed",[553,1372,1373,1381],{},[556,1374,1375],{},[559,1376,1377,1379],{},[562,1378,1135],{},[562,1380,1138],{},[569,1382,1383,1395,1405],{},[559,1384,1385,1389],{},[574,1386,1387],{},[544,1388,1147],{},[574,1390,1391,1392,1394],{},"The path is not a git repository. Or the probe fails (",[544,1393,310],{}," does not load, or it ran past two minutes) and the body does not give both commands.",[559,1396,1397,1402],{},[574,1398,1399],{},[544,1400,1401],{},"409",[574,1403,1404],{},"The repo is already connected. It is checked before anything else is read.",[559,1406,1407,1411],{},[574,1408,1409],{},[544,1410,1160],{},[574,1412,1413,1414,1417,1418,1420],{},"The path is relative, the repository has no commit yet, ",[544,1415,1416],{},"enabled: true"," has no test command or scopes, or ",[544,1419,300],{}," would not load with the entry.",[935,1422,1424],{"id":1423},"patch-apirepospath",[544,1425,620],{},[526,1427,1428,1429,1431,1432,1434,1435,1437,1438,1441],{},"Changes fields of the connected repo at ",[544,1430,1050],{},", the absolute path of its entry in ",[544,1433,300],{},". The Settings screen calls it. A field the body leaves out keeps its saved value, and one sent as ",[544,1436,1007],{}," is cleared. Any save sets ",[544,1439,1440],{},"managed: true"," on the entry.",[553,1443,1444,1454],{},[556,1445,1446],{},[559,1447,1448,1450,1452],{},[562,1449,951],{},[562,1451,954],{},[562,1453,957],{},[569,1455,1456,1477,1492,1503,1513,1532,1549],{},[559,1457,1458,1468,1470],{},[574,1459,1460,1084,1462,1084,1464,1084,1466],{},[544,1461,1087],{},[544,1463,1095],{},[544,1465,1337],{},[544,1467,1250],{},[574,1469,1053],{},[574,1471,1472,1473,551],{},"As in ",[530,1474,1475],{"href":604},[544,1476,607],{},[559,1478,1479,1485,1487],{},[574,1480,1481,1084,1483],{},[544,1482,1102],{},[544,1484,1284],{},[574,1486,1053],{},[574,1488,1489,1490,1294],{},"The commands. ",[544,1491,1113],{},[559,1493,1494,1498,1500],{},[574,1495,1496],{},[544,1497,1301],{},[574,1499,969],{},[574,1501,1502],{},"Test scopes by directory.",[559,1504,1505,1509,1511],{},[574,1506,1507],{},[544,1508,1316],{},[574,1510,1069],{},[574,1512,1328],{},[559,1514,1515,1523,1526],{},[574,1516,1517,1084,1519,1084,1521],{},[544,1518,1340],{},[544,1520,1343],{},[544,1522,1346],{},[574,1524,1525],{},"object, list, list",[574,1527,1354,1528,551],{},[530,1529,1530],{"href":301},[544,1531,300],{},[559,1533,1534,1542,1545],{},[574,1535,1536,1084,1539],{},[544,1537,1538],{},"local_files",[544,1540,1541],{},"intent_dir",[574,1543,1544],{},"list, string",[574,1546,1354,1547,551],{},[544,1548,300],{},[559,1550,1551,1556,1558],{},[574,1552,1553],{},[544,1554,1555],{},"library_auto_update",[574,1557,1069],{},[574,1559,1560,1561,1565],{},"Whether text-only changes to the repo's accepted ",[530,1562,1564],{"href":1563},"\u002Freference\u002Fconfiguration\u002Frepo-libraries#automatic-updates","repo library"," are taken without a person.",[526,1567,1568],{},"The answer is the whole saved entry, defaults included.",[553,1570,1571,1579],{},[556,1572,1573],{},[559,1574,1575,1577],{},[562,1576,1135],{},[562,1578,1138],{},[569,1580,1581,1593,1617],{},[559,1582,1583,1588],{},[574,1584,1585],{},[544,1586,1587],{},"404",[574,1589,1590,1592],{},[544,1591,1050],{}," is not a connected repo, or is relative.",[559,1594,1595,1599],{},[574,1596,1597],{},[544,1598,1160],{},[574,1600,1601,1603,1604,1606,1607,1609,1610,1612,1613,1616],{},[544,1602,300],{}," would not load with the change, and nothing is written: an unknown ",[544,1605,1346],{}," name, a glob in ",[544,1608,1538],{},", an ",[544,1611,1541],{}," that leaves the repo. The ",[544,1614,1615],{},"detail"," says which.",[559,1618,1619,1623],{},[574,1620,1621],{},[544,1622,1160],{},[574,1624,1625],{},"The change enables a repo that has no test command or test scopes, or clears the last test command of an enabled repo. Disable it, or set test scopes in the same change.",[935,1627,1629],{"id":1628},"delete-apirepospath",[544,1630,635],{},[526,1632,1633,1634,1636,1637,1639,1640,1643,1644,1647],{},"Disconnects the repo at ",[544,1635,1050],{},": it removes the entry from ",[544,1638,300],{}," and from the search index. No file of the repository is touched and no work item is dropped. ",[544,1641,1642],{},"kraft repo disconnect"," calls it. It answers ",[544,1645,1646],{},"204"," with no body.",[553,1649,1650,1658],{},[556,1651,1652],{},[559,1653,1654,1656],{},[562,1655,1135],{},[562,1657,1138],{},[569,1659,1660,1670,1679],{},[559,1661,1662,1666],{},[574,1663,1664],{},[544,1665,1587],{},[574,1667,1668,1592],{},[544,1669,1050],{},[559,1671,1672,1676],{},[574,1673,1674],{},[544,1675,1401],{},[574,1677,1678],{},"The repo has open items, paused ones included. The answer gives the count: complete, cancel or abandon them first.",[559,1680,1681,1685],{},[574,1682,1683],{},[544,1684,1160],{},[574,1686,1687,1688,1690],{},"A workspace in ",[544,1689,300],{}," still names the repo.",[930,1692,1025],{"id":1693},"the-proposal-answer",[526,1695,1696,779,1698,1700,1701,1084,1703,1084,1705,1707,1708,551],{},[544,1697,594],{},[544,1699,607],{}," answer the proposal beside the repo's facts: ",[544,1702,1102],{},[544,1704,1301],{},[544,1706,1284],{},", and the evidence below. None of the evidence is stored in ",[544,1709,300],{},[553,1711,1712,1720],{},[556,1713,1714],{},[559,1715,1716,1718],{},[562,1717,951],{},[562,1719,957],{},[569,1721,1722,1770,1784,1800,1810,1834,1852,1873],{},[559,1723,1724,1729],{},[574,1725,1726],{},[544,1727,1728],{},"candidates",[574,1730,1731,1732,1735,1736,1176,1739,1364,1742,1735,1745,1176,1748,1084,1751,1084,1754,1364,1757,1735,1760,1176,1763,1765,1766,1769],{},"Every command the evidence supports: ",[544,1733,1734],{},"{dir, role, command, tier, source, marker, detector, family, corroborated, chosen}",". ",[544,1737,1738],{},"role",[544,1740,1741],{},"test",[544,1743,1744],{},"setup",[544,1746,1747],{},"tier",[544,1749,1750],{},"runner",[544,1752,1753],{},"ci",[544,1755,1756],{},"toolchain",[544,1758,1759],{},"devenv",[544,1761,1762],{},"dir",[544,1764,1113],{}," for the root. ",[544,1767,1768],{},"chosen"," marks the proposal.",[559,1771,1772,1777],{},[574,1773,1774],{},[544,1775,1776],{},"scopes",[574,1778,1779,1780,1783],{},"One ",[544,1781,1782],{},"{dir, test, setup}"," per directory the proposal covers, root first, with commands as they run from inside that directory.",[559,1785,1786,1791],{},[574,1787,1788],{},[544,1789,1790],{},"missing_setup",[574,1792,1793,1794,1796,1797,1799],{},"Directories with a test command and nothing to prepare them (",[544,1795,551],{}," for the root), so ",[544,1798,1284],{}," is left undeclared.",[559,1801,1802,1807],{},[574,1803,1804],{},[544,1805,1806],{},"test_markers",[574,1808,1809],{},"The file each proposed test command came from.",[559,1811,1812,1817],{},[574,1813,1814],{},[544,1815,1816],{},"read_from",[574,1818,1819,1820,1823,1824,1364,1827,1830,1831,1833],{},"The commit read: ",[544,1821,1822],{},"refs\u002Fremotes\u002Forigin\u002FHEAD","'s target, ",[544,1825,1826],{},"refs\u002Fremotes\u002Forigin\u002Fmain",[544,1828,1829],{},"HEAD",", or ",[544,1832,1007],{}," for a repo with no commit (read from its working copy).",[559,1835,1836,1841],{},[574,1837,1838],{},[544,1839,1840],{},"missing_tools",[574,1842,1843,1844,1847,1848,1851],{},"Programs a proposed command runs that the server's ",[544,1845,1846],{},"PATH"," does not have, one ",[544,1849,1850],{},"{dir, tool}"," each. A work item fails on them until they are installed.",[559,1853,1854,1859],{},[574,1855,1856],{},[544,1857,1858],{},"stopped",[574,1860,1861,1862,1865,1866,1868,1869,1872],{},"Why no test command was proposed, one ",[544,1863,1864],{},"{dir, reason, detector}"," per directory that stopped it (",[544,1867,551],{}," for the root): a ",[544,1870,1871],{},"pyproject.toml"," with no lockfile, or a root project with no test command found beside nested ones. Empty when nothing stopped.",[559,1874,1875,1879],{},[574,1876,1877],{},[544,1878,1370],{},[574,1880,1881,1882,1884],{},"Only on ",[544,1883,607],{},", when both commands were given and the probe failed: why.",[930,1886,1888],{"id":1887},"chain-templates","Chain templates",[526,1890,1891,1892,1895,1896,1899],{},"These routes read the chains the Templates editor shows. Each answers ",[544,1893,1894],{},"503"," when the library or a chain does not load, with ",[544,1897,1898],{},"template library invalid, refusing work:"," and the file that broke it.",[935,1901,1903],{"id":1902},"get-apitemplateschains",[544,1904,648],{},[526,1906,1907],{},"Answers every chain, by id.",[553,1909,1910,1920],{},[556,1911,1912],{},[559,1913,1914,1916,1918],{},[562,1915,951],{},[562,1917,954],{},[562,1919,957],{},[569,1921,1922,1934,1948,1971,1984,1998,2010],{},[559,1923,1924,1929,1931],{},[574,1925,1926],{},[544,1927,1928],{},"id",[574,1930,1053],{},[574,1932,1933],{},"The chain id.",[559,1935,1936,1941,1945],{},[574,1937,1938],{},[544,1939,1940],{},"description",[574,1942,1004,1943],{},[544,1944,1007],{},[574,1946,1947],{},"As authored, even when the chain does not resolve.",[559,1949,1950,1955,1957],{},[574,1951,1952],{},[544,1953,1954],{},"nodes",[574,1956,969],{},[574,1958,1959,1960,1963,1964,1967,1968,1970],{},"The resolved nodes, empty when the chain does not resolve. Each carries ",[544,1961,1962],{},"icon",", the node's own ",[530,1965,1962],{"href":1966},"\u002Freference\u002Fchain-nodes#icons"," name, or ",[544,1969,1007],{}," when it sets none (always for a gate).",[559,1972,1973,1978,1981],{},[574,1974,1975],{},[544,1976,1977],{},"gates",[574,1979,1980],{},"integer",[574,1982,1983],{},"How many of the nodes are gates.",[559,1985,1986,1991,1995],{},[574,1987,1988],{},[544,1989,1990],{},"error",[574,1992,1004,1993],{},[544,1994,1007],{},[574,1996,1997],{},"Why the chain does not resolve.",[559,1999,2000,2005,2007],{},[574,2001,2002],{},[544,2003,2004],{},"uses",[574,2006,987],{},[574,2008,2009],{},"Per node id, the ids of the library components that node is built from. A node built from none is left out.",[559,2011,2012,2017,2022],{},[574,2013,2014],{},[544,2015,2016],{},"addon",[574,2018,2019,2020],{},"object or ",[544,2021,1007],{},[574,2023,2024,2027,2028,2032,2033,2035],{},[544,2025,2026],{},"{id, version}"," of the ",[530,2029,2031],{"href":2030},"\u002Fconcepts\u002Fvocabulary#add-on","Kraft add-on"," the chain comes from, ",[544,2034,1007],{}," for one of your own.",[526,2037,681,2038,2040,2041,551],{},[544,2039,1894],{}," as under ",[530,2042,1888],{"href":2043},"#chain-templates",[935,2045,2047],{"id":2046},"get-apitemplateschainsidresolved",[544,2048,661],{},[526,2050,664,2051,668],{},[544,2052,667],{},[553,2054,2055,2065],{},[556,2056,2057],{},[559,2058,2059,2061,2063],{},[562,2060,951],{},[562,2062,954],{},[562,2064,957],{},[569,2066,2067,2077,2089,2102,2113,2126],{},[559,2068,2069,2073,2075],{},[574,2070,2071],{},[544,2072,1928],{},[574,2074,1053],{},[574,2076,1933],{},[559,2078,2079,2084,2086],{},[574,2080,2081],{},[544,2082,2083],{},"chain",[574,2085,987],{},[574,2087,2088],{},"The chain as written plus what it inherited, with no defaults filled in.",[559,2090,2091,2096,2099],{},[574,2092,2093],{},[544,2094,2095],{},"task_paths",[574,2097,2098],{},"list of strings",[574,2100,2101],{},"The canonical path of every task.",[559,2103,2104,2108,2110],{},[574,2105,2106],{},[544,2107,1346],{},[574,2109,987],{},[574,2111,2112],{},"The steering text the chain selects, by profile.",[559,2114,2115,2119,2121],{},[574,2116,2117],{},[544,2118,1954],{},[574,2120,969],{},[574,2122,2123,2124,551],{},"The resolved nodes, as in ",[544,2125,648],{},[559,2127,2128,2133,2135],{},[574,2129,2130],{},[544,2131,2132],{},"documents",[574,2134,987],{},[574,2136,2137,2138,2141],{},"Each gate id mapped to the list of document kinds the execution nodes before it produce, in chain order: what that gate's ",[544,2139,2140],{},"artifact"," can name.",[526,2143,2144,2145,2147,2148,2150,2151,2040,2153,551],{},"It answers ",[544,2146,1587],{}," for an unknown chain and ",[544,2149,1160],{}," for one that does not resolve. Also ",[544,2152,1894],{},[530,2154,1888],{"href":2043},[935,2156,2158],{"id":2157},"get-apitemplateslibrary",[544,2159,678],{},[526,2161,681,2162,2165,2166,2168,2169,2173,2174,2040,2176,551],{},[544,2163,2164],{},"{file, text, components}",": the path of ",[544,2167,684],{},", its text, and every component in it, section by section. See ",[530,2170,2172],{"href":2171},"#the-library-component","The library component",". Also ",[544,2175,1894],{},[530,2177,1888],{"href":2043},[935,2179,2181],{"id":2180},"get-apitemplateslibraryref",[544,2182,695],{},[526,2184,2185,2186,2189,2190,2192,2193,2195,2196,2198,2199,2201,2202,2040,2204,551],{},"Answers one component, shaped as in ",[530,2187,2188],{"href":2171},"the library component",", by its ",[544,2191,1928],{}," or a bare name no other section shares. It answers ",[544,2194,1587],{}," when nothing matches, and ",[544,2197,1401],{}," naming each ",[544,2200,1928],{}," when two sections share the bare name. Also ",[544,2203,1894],{},[530,2205,1888],{"href":2043},[935,2207,2209],{"id":2208},"get-apitemplatessteeringpreview",[544,2210,708],{},[526,2212,2213,2214,2217,2218,2220,2221,1364,2223,1176,2225,2228,2229,551],{},"Answers what the agent task at canonical path ",[544,2215,2216],{},"task"," of chain ",[544,2219,2083],{}," reads at launch in the repository whose ",[544,2222,1087],{},[544,2224,1050],{},[544,2226,2227],{},"repo",", section by section in launch order. Nothing launches. The answer is ",[544,2230,2231],{},"{sections: [{kind, source, text}]}",[553,2233,2234,2243],{},[556,2235,2236],{},[559,2237,2238,2241],{},[562,2239,2240],{},"Query",[562,2242,957],{},[569,2244,2245,2254,2263],{},[559,2246,2247,2251],{},[574,2248,2249],{},[544,2250,2083],{},[574,2252,2253],{},"The chain's id. Required.",[559,2255,2256,2260],{},[574,2257,2258],{},[544,2259,2216],{},[574,2261,2262],{},"The task's canonical path. Required.",[559,2264,2265,2269],{},[574,2266,2267],{},[544,2268,2227],{},[574,2270,2271,2272,1364,2274,2276],{},"The repository's ",[544,2273,1087],{},[544,2275,1050],{},". Required.",[526,2278,2279,2280,551],{},"A missing parameter answers ",[544,2281,1160],{},[526,2283,2284,2287],{},[544,2285,2286],{},"kind"," is one of:",[553,2289,2290,2303],{},[556,2291,2292],{},[559,2293,2294,2298],{},[562,2295,2296],{},[544,2297,2286],{},[562,2299,2300],{},[544,2301,2302],{},"source",[569,2304,2305,2316,2326,2337,2347,2358,2372],{},[559,2306,2307,2312],{},[574,2308,2309],{},[544,2310,2311],{},"contract",[574,2313,2314],{},[544,2315,546],{},[559,2317,2318,2323],{},[574,2319,2320],{},[544,2321,2322],{},"document",[574,2324,2325],{},"The kind it produces.",[559,2327,2328,2333],{},[574,2329,2330],{},[544,2331,2332],{},"review_package",[574,2334,2335],{},[544,2336,546],{},[559,2338,2339,2344],{},[574,2340,2341],{},[544,2342,2343],{},"skill",[574,2345,2346],{},"The skill.",[559,2348,2349,2354],{},[574,2350,2351],{},[544,2352,2353],{},"intent",[574,2355,2271,2356,551],{},[544,2357,1541],{},[559,2359,2360,2364],{},[574,2361,2362],{},[544,2363,1346],{},[574,2365,2366,1364,2369,551],{},[544,2367,2368],{},"repo:\u003Cprofile>",[544,2370,2371],{},"task:\u003Cprofile>",[559,2373,2374,2379],{},[574,2375,2376],{},[544,2377,2378],{},"usage",[574,2380,2381,2383],{},[544,2382,546],{},". Only when the task's harness reports usage as a result file.",[526,2385,2386,2387,2389,2390,1084,2393,1084,2396,1084,2399,2402],{},"There is one ",[544,2388,1346],{}," section per steering profile: the repository's first, then the task's. Joined, the texts are the launch's context. Per-launch values are placeholders (",[544,2391,2392],{},"\u003Cwork item id>",[544,2394,2395],{},"\u003Csession id>",[544,2397,2398],{},"\u003Ctitle>",[544,2400,2401],{},"\u003Ctask instruction>",").",[553,2404,2405,2413],{},[556,2406,2407],{},[559,2408,2409,2411],{},[562,2410,1135],{},[562,2412,1138],{},[569,2414,2415,2424,2433],{},[559,2416,2417,2421],{},[574,2418,2419],{},[544,2420,1587],{},[574,2422,2423],{},"The chain, the task or the repository is unknown.",[559,2425,2426,2430],{},[574,2427,2428],{},[544,2429,1160],{},[574,2431,2432],{},"The chain does not resolve, the task is not an agent task, or its harness, skill or steering cannot resolve.",[559,2434,2435,2439],{},[574,2436,2437],{},[544,2438,1894],{},[574,2440,2441,2443,2444,551],{},[544,2442,300],{}," does not load, or the library or a chain does not, as under ",[530,2445,1888],{"href":2043},[930,2447,2172],{"id":2448},"the-library-component",[526,2450,2451,779,2453,2455],{},[544,2452,678],{},[544,2454,695],{}," return components with these fields:",[553,2457,2458,2466],{},[556,2459,2460],{},[559,2461,2462,2464],{},[562,2463,951],{},[562,2465,957],{},[569,2467,2468,2480,2489,2498,2508,2518,2528,2541],{},[559,2469,2470,2474],{},[574,2471,2472],{},[544,2473,1928],{},[574,2475,2476,2477,551],{},"The section and the name, ",[544,2478,2479],{},"tasks.implementer",[559,2481,2482,2486],{},[574,2483,2484],{},[544,2485,2286],{},[574,2487,2488],{},"Its section.",[559,2490,2491,2495],{},[574,2492,2493],{},[544,2494,1087],{},[574,2496,2497],{},"Its name within the section.",[559,2499,2500,2505],{},[574,2501,2502],{},[544,2503,2504],{},"definition",[574,2506,2507],{},"The component as written.",[559,2509,2510,2515],{},[574,2511,2512],{},[544,2513,2514],{},"issues",[574,2516,2517],{},"The lint issues that name it.",[559,2519,2520,2525],{},[574,2521,2522],{},[544,2523,2524],{},"used_by",[574,2526,2527],{},"The ids of the chains that use it.",[559,2529,2530,2535],{},[574,2531,2532],{},[544,2533,2534],{},"used_by_paths",[574,2536,2537,2540],{},[544,2538,2539],{},"[{chain, path, overrides, via?}]",": each component of a chain that extends or selects it. See below.",[559,2542,2543,2547],{},[574,2544,2545],{},[544,2546,2016],{},[574,2548,2549,2551,2552,2554,2555,2557,2558,1176,2560,551],{},[544,2550,2026],{}," of the add-on the component comes from, ",[544,2553,1007],{}," for one of your own. An add-on's component has a qualified ",[544,2556,1087],{},", and its ",[544,2559,1928],{},[544,2561,2562],{},"tasks.release:implementer",[526,2564,2565,2566,1084,2568,2570,2571,2574,2575,1084,2577,779,2579,2581,2582,2585,2586,551],{},"In ",[544,2567,2534],{},[544,2569,1050],{}," is that component's canonical path, ",[544,2572,2573],{},"overrides"," is whether it sets any key besides ",[544,2576,1928],{},[544,2578,667],{},[544,2580,2286],{},", and ",[544,2583,2584],{},"via"," is the library node it reaches the chain through, when it sits in that node's own definition. For example, ",[544,2587,2588],{},"{chain: \"default\", path: \"verification.review.code_review\", overrides: false, via: \"verification\"}",[935,2590,2592],{"id":2591},"an-add-ons-chains-and-components","An add-on's chains and components",[526,2594,2595,2596,2598,2599,2602,2603,2606,2607,2610,2611,779,2617,2623],{},"A write that would save an add-on's chain or component answers ",[544,2597,1401],{},", with ",[544,2600,2601],{},"\u003Cid> comes from add-on \u003Caddon id>; extend it or copy it to your library",". That holds for ",[544,2604,2605],{},"PUT \u002Fapi\u002Ftemplates\u002Fchains\u002F{id}",", for every write to a ",[544,2608,2609],{},"chains"," draft of that id, and for a draft op that addresses the component. ",[530,2612,2614],{"href":2613},"\u002Freference\u002Fhttp-api\u002Fdraft-ops#copy_component",[544,2615,2616],{},"copy_component",[530,2618,2620],{"href":2619},"\u002Freference\u002Fhttp-api\u002Fdraft-ops#new_chain",[544,2621,2622],{},"new_chain"," copy one.",[526,2625,2626,2627,2631,2632,2634,2635,551],{},"Filing an item on a chain whose add-on store is still being ",[530,2628,2630],{"href":2629},"\u002Freference\u002Fconfiguration\u002Faddons#restoring-a-store","restored"," answers ",[544,2633,1894],{}," with ",[544,2636,2637],{},"add-on \u003Cid> is being restored; retry",[930,2639,2640],{"id":533},"Harnesses",[526,2642,2643,2644,2647],{},"The web UI edits harnesses through a draft (",[544,2645,2646],{},"\u002Fapi\u002Fdrafts\u002Fharnesses\u002F...","). These routes read the published state.",[935,2649,2651],{"id":2650},"get-apiharnessesprofiles",[544,2652,721],{},[526,2654,681,2655,551],{},[544,2656,2657],{},"{profiles, agent_profiles, file, error}",[2659,2660,2661,2675,2685,2723,2739,2750,2772],"ul",{},[2662,2663,2664,2667,2668,2581,2670,2672,2673,551],"li",{},[544,2665,2666],{},"file"," is the path of ",[544,2669,326],{},[544,2671,1990],{}," is why it does not load, else ",[544,2674,1007],{},[2662,2676,2677,2678,2681,2682,551],{},"Each entry of ",[544,2679,2680],{},"profiles"," is a harness profile: ",[544,2683,2684],{},"{id, provider, enabled, executable, defaults, used_by, chains}",[2662,2686,2677,2687,2690,2691,1084,2693,1084,2695,1084,2697,1084,2699,1084,2702,2705,2706,2709,2710,2713,2714,1084,2717,779,2720,551],{},[544,2688,2689],{},"agent_profiles"," has ",[544,2692,1928],{},[544,2694,2016],{},[544,2696,2524],{},[544,2698,2609],{},[544,2700,2701],{},"effort",[544,2703,2704],{},"model"," (provider to model id), ",[544,2707,2708],{},"providers"," (provider to ",[544,2711,2712],{},"{model, effort}","), ",[544,2715,2716],{},"fallback",[544,2718,2719],{},"problems",[544,2721,2722],{},"problem_details",[2662,2724,2725,1176,2727,2729,2730,2732,2733,2736,2737,2035],{},[544,2726,2016],{},[544,2728,2026],{}," for an agent profile an add-on ships, whose ",[544,2731,1928],{}," is qualified (",[544,2734,2735],{},"release:careful","), and ",[544,2738,1007],{},[2662,2740,2741,2743,2744,2746,2747,2749],{},[544,2742,2701],{}," is the one effort every provider shares, or ",[544,2745,1007],{}," when they differ: read ",[544,2748,2708],{}," then.",[2662,2751,2752,2754,2755,2757,2758,2761,2762,1176,2765,1084,2767,1830,2769,2771],{},[544,2753,2719],{}," is the entry's list of messages, and ",[544,2756,2722],{}," the same list as ",[544,2759,2760],{},"{chain, task, profile, provider, field, message}",", where ",[544,2763,2764],{},"field",[544,2766,2704],{},[544,2768,2701],{},[544,2770,1007],{}," for a profile that is not defined.",[2662,2773,2774,2775,2777,2778,779,2780,551],{},"Each ",[544,2776,2716],{}," entry has its own ",[544,2779,2719],{},[544,2781,2722],{},[935,2783,2785],{"id":2784},"get-apiharnesses",[544,2786,734],{},[526,2788,2789,2790,2794,2795,1735,2798,2801,2802,2804,2805,551],{},"Answers one entry per ",[530,2791,2793],{"href":2792},"\u002Fconcepts\u002Fvocabulary#provider","provider",": ",[544,2796,2797],{},"{id, label, executable, executable_found, efforts, models, capabilities}",[544,2799,2800],{},"executable_found"," is whether the command is on ",[544,2803,1846],{}," now. There is no ",[544,2806,2807],{},"version",[935,2809,2811],{"id":2810},"get-apiharnessesproviders",[544,2812,747],{},[526,2814,681,2815,2818,2819,779,2822,2824,2825,2828],{},[544,2816,2817],{},"{valid, invalid}",": each provider's capability surface by id, and the providers whose files did not load, with why. A provider also lists ",[544,2820,2821],{},"efforts",[544,2823,1340],{},": the plain-word values it limits that option to, ",[544,2826,2827],{},"[]"," when it takes any string or a pattern.",[930,2830,2832],{"id":2831},"saved-but-not-applied","Saved but not applied",[526,2834,2835,2836,2839],{},"A restart or a reload applies what you saved. The ",[544,2837,2838],{},"apply_changed"," live message says when this list changes.",[935,2841,2843],{"id":2842},"get-apiapply",[544,2844,760],{},[526,2846,2847,2848,2851,2852,2855,2856,2858],{},"Answers what is saved and not running yet: ",[544,2849,2850],{},"{restart: [{id, file, text}], reload: [{id, file, text, problem?}], managed}",". Both lists are empty when nothing is pending. ",[544,2853,2854],{},"managed"," is true when a service manager started this server, the only case ",[544,2857,808],{}," can restart it.",[2659,2860,2861,2883],{},[2662,2862,1361,2863,2866,2867,1364,2870,2794,2873,2875,2876,1364,2879,2882],{},[544,2864,2865],{},"restart"," item is ",[544,2868,2869],{},"access.bind",[544,2871,2872],{},"access.port",[544,2874,330],{}," names an address the server is not bound to. It is left out when ",[544,2877,2878],{},"KRAFT_HOST",[544,2880,2881],{},"KRAFT_PORT"," is set, since the environment wins and a restart would change nothing.",[2662,2884,1361,2885,2866,2888,2891,2892,1084,2894,1084,2897,1084,2899,1084,2901,1364,2904,2907,2908,2911],{},[544,2886,2887],{},"reload",[544,2889,2890],{},"disk:\u003Cfile>"," for ",[544,2893,684],{},[544,2895,2896],{},"chains\u002F*.yaml",[544,2898,318],{},[544,2900,334],{},[544,2902,2903],{},"addons.yaml",[544,2905,2906],{},"addons.lock"," whose bytes differ from the ones last loaded. A file rewritten with the same bytes is no change. ",[544,2909,2910],{},"problem"," is the first problem found in the file as it is on disk.",[935,2913,2915],{"id":2914},"post-apiapplyreload",[544,2916,773],{},[526,2918,776,2919,779,2921,2923,2924,2926,2927,2929,2930,2932],{},[544,2920,318],{},[544,2922,334],{}," (and replaces the intake poller), and answers the new ",[544,2925,760],{},". A policy or an ",[544,2928,334],{}," that does not load is refused and stays pending, with its ",[544,2931,2910],{},", and the running one is kept.",[935,2934,2936],{"id":2935},"post-apitemplatesreload",[544,2937,791],{},[526,2939,2940,2941,2943,2944,2947,2948,1735,2950,2953],{},"Does the same as ",[544,2942,773],{},", and answers ",[544,2945,2946],{},"{valid, invalid_templates, refused_policy, refused_intake}",": the valid chain ids, the chains that do not load, and the last two each the refusal's reason or ",[544,2949,1007],{},[544,2951,2952],{},"kraft admin reload"," prints them and exits 1 on either refusal.",[526,2955,2956,2957,2960,2961,1364,2963,2965,2966,2969,2970,2973],{},"The body is optional. ",[544,2958,2959],{},"{\"only\": [\"addons.yaml\", \"addons.lock\"]}"," rebuilds the library from the add-on files alone and leaves a pending edit of ",[544,2962,318],{},[544,2964,334],{}," pending. ",[544,2967,2968],{},"only"," takes those two names and no other. It is what a ",[544,2971,2972],{},"kraft admin addon"," verb sends.",[935,2975,2977],{"id":2976},"post-apiapplyrestart",[544,2978,808],{},[526,2980,2981,2982,2985,2986,2634,2989,2992,2993,2996],{},"Restarts the server when a service manager started it (the launchd or systemd unit ",[544,2983,2984],{},"kraft admin install-service"," writes). It answers ",[544,2987,2988],{},"202",[544,2990,2991],{},"{\"restarting\": true}"," and runs ",[544,2994,2995],{},"kraft admin restart"," detached. Nothing restarts the server unless this is called.",[526,2998,2999,3000,3002,3003,3007,3008,3011,3012,1176,3015,3018],{},"The restart ends the agent of every active item, and each stops as failed until it is retried, as ",[544,3001,2995],{}," warns: see ",[530,3004,3006],{"href":3005},"\u002Fguides\u002Frun\u002Frestart-kraft#a-restart-ends-running-agents","A restart ends running agents",". The web UI counts the active items from ",[544,3009,3010],{},"GET \u002Fapi\u002Fwork-items"," (the rows whose ",[544,3013,3014],{},"status",[544,3016,3017],{},"active",") and shows the number in its confirmation.",[553,3020,3021,3029],{},[556,3022,3023],{},[559,3024,3025,3027],{},[562,3026,1135],{},[562,3028,1138],{},[569,3030,3031,3043],{},[559,3032,3033,3037],{},[574,3034,3035],{},[544,3036,1401],{},[574,3038,3039,3040,551],{},"The server was started from a terminal. The answer is ",[544,3041,3042],{},"{\"detail\": \"started from a terminal: restart it there\"}",[559,3044,3045,3050],{},[574,3046,3047],{},[544,3048,3049],{},"500",[574,3051,3052],{},"The restart could not start.",[930,3054,3056],{"id":3055},"update-check","Update check",[935,3058,3060],{"id":3059},"get-apiupdate",[544,3061,821],{},[526,3063,681,3064,3067,3068,3071,3072,1735,3075,3078,3079,1084,3082,1084,3085,779,3088,3091,3092,3094],{},[544,3065,3066],{},"{installed, latest, channel, python, behind, checked_at}"," from the daily cached check. ",[544,3069,3070],{},"python"," is the interpreter the server runs on, as ",[544,3073,3074],{},"3.14",[544,3076,3077],{},"?channel="," is one of ",[544,3080,3081],{},"stable",[544,3083,3084],{},"rc",[544,3086,3087],{},"beta",[544,3089,3090],{},"alpha"," (",[544,3093,1147],{}," otherwise) and defaults to the installed version's own. It is not stored.",[526,3096,3097,3098,779,3101,3104,3105,3107,3108,3111,3112,3114,3115,1176,3117,3119,3120,3123],{},"When the feed cannot be reached, ",[544,3099,3100],{},"latest",[544,3102,3103],{},"behind"," are ",[544,3106,1007],{},": unknown, not \"up to date\". ",[544,3109,3110],{},"checked_at"," is the time of the last check that succeeded on that channel (",[544,3113,1007],{}," when there has been none), so it can be old while ",[544,3116,3100],{},[544,3118,1007],{},". Installing the update is ",[544,3121,3122],{},"kraft admin update","; the server never does it.",[935,3125,3127],{"id":3126},"post-apiupdatecheck",[544,3128,834],{},[526,3130,3131,3132,3134,3135,551],{},"Skips the cache, asks the release feed now, and answers the same shape as ",[544,3133,821],{},". It takes the same ",[544,3136,3077],{},[930,3138,3140],{"id":3139},"editors","Editors",[526,3142,3143,3144,551],{},"The routes that open a file in an editor start a process on the machine that hosts the server. They are loopback only: any other caller gets ",[544,3145,3146],{},"403",[935,3148,3150],{"id":3149},"get-apieditors",[544,3151,873],{},[526,3153,681,3154,551],{},[544,3155,3156],{},"{available, system, default}",[2659,3158,3159,3190,3203],{},[2662,3160,3161,3164,3165,1084,3167,1084,3170,1084,3173,3176,3177,3179,3180,1364,3183,3186,3187,2402],{},[544,3162,3163],{},"available"," lists the editors (",[544,3166,544],{},[544,3168,3169],{},"cursor",[544,3171,3172],{},"zed",[544,3174,3175],{},"obsidian",") whose executable this server's machine has on its ",[544,3178,1846],{},", or, on macOS, whose app is installed in ",[544,3181,3182],{},"\u002FApplications",[544,3184,3185],{},"~\u002FApplications"," (it is then opened with ",[544,3188,3189],{},"open -a",[2662,3191,3192,3195,3196,1084,3199,3202],{},[544,3193,3194],{},"system"," says whether the system opener (",[544,3197,3198],{},"open",[544,3200,3201],{},"xdg-open",") is there.",[2662,3204,3205,1176,3207,3210,3211,3213,3214,3213,3217,551],{},[544,3206,1257],{},[544,3208,3209],{},"editor"," from ",[544,3212,342],{},", else ",[544,3215,3216],{},"KRAFT_EDITOR",[544,3218,1007],{},[935,3220,3222],{"id":3221},"post-apidocumentsidopen",[544,3223,886],{},[526,3225,3226],{},"Opens an indexed document, by its absolute path, in an editor.",[553,3228,3229,3241],{},[556,3230,3231],{},[559,3232,3233,3235,3237,3239],{},[562,3234,951],{},[562,3236,954],{},[562,3238,1039],{},[562,3240,957],{},[569,3242,3243],{},[559,3244,3245,3249,3253,3257],{},[574,3246,3247],{},[544,3248,3209],{},[574,3250,1004,3251],{},[544,3252,1007],{},[574,3254,3255],{},[544,3256,1007],{},[574,3258,3259,3260,1084,3262,3265,3266,3268,3269,3271],{},"A name from ",[544,3261,3163],{},[544,3263,3264],{},"\"system\""," for the system opener, or ",[544,3267,1007],{}," for the ",[544,3270,1257],{}," above, else the system opener.",[526,3273,3274,3275,551],{},"The answer is ",[544,3276,3277],{},"{document_id, path, editor}",[553,3279,3280,3288],{},[556,3281,3282],{},[559,3283,3284,3286],{},[562,3285,1135],{},[562,3287,1138],{},[569,3289,3290,3301,3310,3319,3328],{},[559,3291,3292,3296],{},[574,3293,3294],{},[544,3295,1147],{},[574,3297,3298,3300],{},[544,3299,3209],{}," is not a known editor name, or the document's path leaves its repo.",[559,3302,3303,3307],{},[574,3304,3305],{},[544,3306,3146],{},[574,3308,3309],{},"The caller is not on the server's own machine. It is checked first.",[559,3311,3312,3316],{},[574,3313,3314],{},[544,3315,1587],{},[574,3317,3318],{},"There is no such document, or an attachment's file is not found.",[559,3320,3321,3325],{},[574,3322,3323],{},[544,3324,1401],{},[574,3326,3327],{},"The document exists only in Kraft's index and was never written to the repo, or it is an attachment of an item that has not started.",[559,3329,3330,3335],{},[574,3331,3332],{},[544,3333,3334],{},"501",[574,3336,3337],{},"Nothing on the server can open a window, or the editor you named is not installed. The web UI then hands the path to your own machine.",[935,3339,3341],{"id":3340},"post-apiwork-itemsidartifactopen",[544,3342,899],{},[526,3344,3345,3346,1735,3350,3353,3354,3357,3358,551],{},"Opens the pending gate's document in the item's ",[530,3347,3349],{"href":3348},"\u002Fconcepts\u002Fvocabulary#worktree","worktree",[544,3351,3352],{},"GET \u002Fapi\u002Fwork-items\u002F{id}\u002Fartifact"," carries its ",[544,3355,3356],{},"absolute_path",". The answer is ",[544,3359,3360],{},"{work_item_id, path, editor}",[553,3362,3363,3375],{},[556,3364,3365],{},[559,3366,3367,3369,3371,3373],{},[562,3368,951],{},[562,3370,954],{},[562,3372,1039],{},[562,3374,957],{},[569,3376,3377],{},[559,3378,3379,3383,3387,3391],{},[574,3380,3381],{},[544,3382,3209],{},[574,3384,1004,3385],{},[544,3386,1007],{},[574,3388,3389],{},[544,3390,1007],{},[574,3392,3393,3394,551],{},"As for ",[530,3395,3396],{"href":883},[544,3397,886],{},[553,3399,3400,3408],{},[556,3401,3402],{},[559,3403,3404,3406],{},[562,3405,1135],{},[562,3407,1138],{},[569,3409,3410,3421,3429,3438],{},[559,3411,3412,3416],{},[574,3413,3414],{},[544,3415,1147],{},[574,3417,3418,3420],{},[544,3419,3209],{}," is not a known editor name.",[559,3422,3423,3427],{},[574,3424,3425],{},[544,3426,3146],{},[574,3428,3309],{},[559,3430,3431,3435],{},[574,3432,3433],{},[544,3434,1587],{},[574,3436,3437],{},"There is no such item, or the gate has no artifact.",[559,3439,3440,3444],{},[574,3441,3442],{},[544,3443,3334],{},[574,3445,3446],{},"Nothing on the server can open a window, or the editor you named is not installed.",[935,3448,3450],{"id":3449},"post-apiwork-itemsidartifactskindopen",[544,3451,912],{},[526,3453,3454,3455,551],{},"Opens a task's document of that kind in the item's worktree. The answer is ",[544,3456,3360],{},[553,3458,3459,3471],{},[556,3460,3461],{},[559,3462,3463,3465,3467,3469],{},[562,3464,951],{},[562,3466,954],{},[562,3468,1039],{},[562,3470,957],{},[569,3472,3473],{},[559,3474,3475,3479,3483,3487],{},[574,3476,3477],{},[544,3478,3209],{},[574,3480,1004,3481],{},[544,3482,1007],{},[574,3484,3485],{},[544,3486,1007],{},[574,3488,3393,3489,551],{},[530,3490,3491],{"href":883},[544,3492,886],{},[553,3494,3495,3503],{},[556,3496,3497],{},[559,3498,3499,3501],{},[562,3500,1135],{},[562,3502,1138],{},[569,3504,3505,3515,3523,3532],{},[559,3506,3507,3511],{},[574,3508,3509],{},[544,3510,1147],{},[574,3512,3513,3420],{},[544,3514,3209],{},[559,3516,3517,3521],{},[574,3518,3519],{},[544,3520,3146],{},[574,3522,3309],{},[559,3524,3525,3529],{},[574,3526,3527],{},[544,3528,1587],{},[574,3530,3531],{},"There is no such item, or it has no such document there.",[559,3533,3534,3538],{},[574,3535,3536],{},[544,3537,3334],{},[574,3539,3446],{},[935,3541,3543],{"id":3542},"post-apiwork-itemsidopen-worktree",[544,3544,925],{},[526,3546,3547,3548,551],{},"Opens the item's worktree directory. The answer is ",[544,3549,3550],{},"{path, editor}",[553,3552,3553,3565],{},[556,3554,3555],{},[559,3556,3557,3559,3561,3563],{},[562,3558,951],{},[562,3560,954],{},[562,3562,1039],{},[562,3564,957],{},[569,3566,3567],{},[559,3568,3569,3573,3577,3581],{},[574,3570,3571],{},[544,3572,3209],{},[574,3574,1004,3575],{},[544,3576,1007],{},[574,3578,3579],{},[544,3580,1007],{},[574,3582,3393,3583,551],{},[530,3584,3585],{"href":883},[544,3586,886],{},[526,3588,3589],{},"This route checks the item and its worktree before it checks the caller.",[553,3591,3592,3600],{},[556,3593,3594],{},[559,3595,3596,3598],{},[562,3597,1135],{},[562,3599,1138],{},[569,3601,3602,3612,3623,3632],{},[559,3603,3604,3608],{},[574,3605,3606],{},[544,3607,1147],{},[574,3609,3610,3420],{},[544,3611,3209],{},[559,3613,3614,3618],{},[574,3615,3616],{},[544,3617,3146],{},[574,3619,3620,3621,551],{},"The caller is not on the server's own machine. It is checked after the ",[544,3622,1587],{},[559,3624,3625,3629],{},[574,3626,3627],{},[544,3628,1587],{},[574,3630,3631],{},"There is no such item, or it has no worktree on disk, even for a caller that is not local.",[559,3633,3634,3638],{},[574,3635,3636],{},[544,3637,3334],{},[574,3639,3446],{},[930,3641,3643],{"id":3642},"storage","Storage",[935,3645,3647],{"id":3646},"get-apistorage",[544,3648,847],{},[526,3650,3651,3652,3655],{},"Answers the last measurement of the run folder, joined to the work items. It measures first when there is none yet, and when ",[544,3653,3654],{},"?refresh=1"," is given; one walk runs at a time, and a request made during a walk waits for it. A walk can take many seconds on a large instance.",[3657,3658,3663],"pre",{"className":3659,"code":3660,"language":3661,"meta":3662,"style":3662},"language-json shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","{\"measured_at\": \"...\", \"state\": \"held\", \"used_bytes\": 12989000000,\n \"quota_bytes\": 8589934592, \"limit_bytes\": 10737418240, \"reclaimable_bytes\": 9600000000,\n \"categories\": {\"worktrees\": 0, \"sandboxes\": 0, \"logs\": 0, \"results\": 0,\n                \"databases\": 0, \"attachments\": 0, \"other\": 0},\n \"items\": [{\"id\": \"...\", \"title\": \"...\", \"status\": \"completed\", \"archived\": false,\n            \"bytes\": 1200000000, \"updated_at\": \"...\", \"reclaimable\": true}],\n \"orphans\": [{\"name\": \"...\", \"bytes\": 0}]}\n","json","",[544,3664,3665,3708,3741,3787,3818,3864,3896],{"__ignoreMap":3662},[3666,3667,3670,3674,3678,3680,3684,3686,3689,3691,3694,3696,3699,3701,3705],"span",{"class":3668,"line":3669},"line",1,[3666,3671,3673],{"class":3672},"s7iLA","{",[3666,3675,3677],{"class":3676},"sb7M8","\"measured_at\"",[3666,3679,2794],{"class":3672},[3666,3681,3683],{"class":3682},"semJd","\"...\"",[3666,3685,1084],{"class":3672},[3666,3687,3688],{"class":3676},"\"state\"",[3666,3690,2794],{"class":3672},[3666,3692,3693],{"class":3682},"\"held\"",[3666,3695,1084],{"class":3672},[3666,3697,3698],{"class":3676},"\"used_bytes\"",[3666,3700,2794],{"class":3672},[3666,3702,3704],{"class":3703},"ssYy9","12989000000",[3666,3706,3707],{"class":3672},",\n",[3666,3709,3711,3714,3716,3719,3721,3724,3726,3729,3731,3734,3736,3739],{"class":3668,"line":3710},2,[3666,3712,3713],{"class":3676}," \"quota_bytes\"",[3666,3715,2794],{"class":3672},[3666,3717,3718],{"class":3703},"8589934592",[3666,3720,1084],{"class":3672},[3666,3722,3723],{"class":3676},"\"limit_bytes\"",[3666,3725,2794],{"class":3672},[3666,3727,3728],{"class":3703},"10737418240",[3666,3730,1084],{"class":3672},[3666,3732,3733],{"class":3676},"\"reclaimable_bytes\"",[3666,3735,2794],{"class":3672},[3666,3737,3738],{"class":3703},"9600000000",[3666,3740,3707],{"class":3672},[3666,3742,3744,3747,3750,3753,3755,3758,3760,3763,3765,3767,3769,3772,3774,3776,3778,3781,3783,3785],{"class":3668,"line":3743},3,[3666,3745,3746],{"class":3676}," \"categories\"",[3666,3748,3749],{"class":3672},": {",[3666,3751,3752],{"class":3676},"\"worktrees\"",[3666,3754,2794],{"class":3672},[3666,3756,3757],{"class":3703},"0",[3666,3759,1084],{"class":3672},[3666,3761,3762],{"class":3676},"\"sandboxes\"",[3666,3764,2794],{"class":3672},[3666,3766,3757],{"class":3703},[3666,3768,1084],{"class":3672},[3666,3770,3771],{"class":3676},"\"logs\"",[3666,3773,2794],{"class":3672},[3666,3775,3757],{"class":3703},[3666,3777,1084],{"class":3672},[3666,3779,3780],{"class":3676},"\"results\"",[3666,3782,2794],{"class":3672},[3666,3784,3757],{"class":3703},[3666,3786,3707],{"class":3672},[3666,3788,3790,3793,3795,3797,3799,3802,3804,3806,3808,3811,3813,3815],{"class":3668,"line":3789},4,[3666,3791,3792],{"class":3676},"                \"databases\"",[3666,3794,2794],{"class":3672},[3666,3796,3757],{"class":3703},[3666,3798,1084],{"class":3672},[3666,3800,3801],{"class":3676},"\"attachments\"",[3666,3803,2794],{"class":3672},[3666,3805,3757],{"class":3703},[3666,3807,1084],{"class":3672},[3666,3809,3810],{"class":3676},"\"other\"",[3666,3812,2794],{"class":3672},[3666,3814,3757],{"class":3703},[3666,3816,3817],{"class":3672},"},\n",[3666,3819,3821,3824,3827,3830,3832,3834,3836,3839,3841,3843,3845,3848,3850,3853,3855,3858,3860,3862],{"class":3668,"line":3820},5,[3666,3822,3823],{"class":3676}," \"items\"",[3666,3825,3826],{"class":3672},": [{",[3666,3828,3829],{"class":3676},"\"id\"",[3666,3831,2794],{"class":3672},[3666,3833,3683],{"class":3682},[3666,3835,1084],{"class":3672},[3666,3837,3838],{"class":3676},"\"title\"",[3666,3840,2794],{"class":3672},[3666,3842,3683],{"class":3682},[3666,3844,1084],{"class":3672},[3666,3846,3847],{"class":3676},"\"status\"",[3666,3849,2794],{"class":3672},[3666,3851,3852],{"class":3682},"\"completed\"",[3666,3854,1084],{"class":3672},[3666,3856,3857],{"class":3676},"\"archived\"",[3666,3859,2794],{"class":3672},[3666,3861,1080],{"class":3703},[3666,3863,3707],{"class":3672},[3666,3865,3867,3870,3872,3875,3877,3880,3882,3884,3886,3889,3891,3893],{"class":3668,"line":3866},6,[3666,3868,3869],{"class":3676},"            \"bytes\"",[3666,3871,2794],{"class":3672},[3666,3873,3874],{"class":3703},"1200000000",[3666,3876,1084],{"class":3672},[3666,3878,3879],{"class":3676},"\"updated_at\"",[3666,3881,2794],{"class":3672},[3666,3883,3683],{"class":3682},[3666,3885,1084],{"class":3672},[3666,3887,3888],{"class":3676},"\"reclaimable\"",[3666,3890,2794],{"class":3672},[3666,3892,1074],{"class":3703},[3666,3894,3895],{"class":3672},"}],\n",[3666,3897,3899,3902,3904,3907,3909,3911,3913,3916,3918,3920],{"class":3668,"line":3898},7,[3666,3900,3901],{"class":3676}," \"orphans\"",[3666,3903,3826],{"class":3672},[3666,3905,3906],{"class":3676},"\"name\"",[3666,3908,2794],{"class":3672},[3666,3910,3683],{"class":3682},[3666,3912,1084],{"class":3672},[3666,3914,3915],{"class":3676},"\"bytes\"",[3666,3917,2794],{"class":3672},[3666,3919,3757],{"class":3703},[3666,3921,3922],{"class":3672},"}]}\n",[553,3924,3925,3933],{},[556,3926,3927],{},[559,3928,3929,3931],{},[562,3930,951],{},[562,3932,957],{},[569,3934,3935,3967,3977,3991,4001],{},[559,3936,3937,3942],{},[574,3938,3939],{},[544,3940,3941],{},"state",[574,3943,3944,1084,3947,1364,3950,3953,3954,2634,3956,779,3959,3962,3963,3966],{},[544,3945,3946],{},"ok",[544,3948,3949],{},"over_quota",[544,3951,3952],{},"held","; ",[544,3955,1007],{},[544,3957,3958],{},"quota_bytes",[544,3960,3961],{},"limit_bytes"," when ",[544,3964,3965],{},"storage.worktrees.limit"," is not set.",[559,3968,3969,3974],{},[574,3970,3971],{},[544,3972,3973],{},"used_bytes",[574,3975,3976],{},"The figure the quota and limit govern: the worktrees and the sandbox stores and homes, not logs or databases.",[559,3978,3979,3984],{},[574,3980,3981],{},[544,3982,3983],{},"items",[574,3985,3986,3987,3990],{},"Every measured folder that has a work item, largest first. ",[544,3988,3989],{},"reclaimable"," is true for a completed or abandoned item that is not archived.",[559,3992,3993,3998],{},[574,3994,3995],{},[544,3996,3997],{},"orphans",[574,3999,4000],{},"Every measured folder with no work item.",[559,4002,4003,4008],{},[574,4004,4005],{},[544,4006,4007],{},"reclaimable_bytes",[574,4009,4010,4011,551],{},"The sum of the reclaimable items' ",[544,4012,4013],{},"bytes",[935,4015,4017],{"id":4016},"post-apistoragepreview",[544,4018,860],{},[526,4020,4021,4022,4025],{},"Says what archiving the items in ",[544,4023,4024],{},"ids"," (1 to 200) would do, and changes nothing. An id given twice counts once.",[3657,4027,4029],{"className":3659,"code":4028,"language":3661,"meta":3662,"style":3662},"{\"freed_bytes\": 2400000000, \"used_after_bytes\": 10589000000, \"state_after\": \"over_quota\",\n \"items\": [{\"id\": \"...\", \"title\": \"...\", \"bytes\": 1200000000, \"archivable\": true,\n            \"refusal\": null, \"uncommitted_files\": 3, \"unpushed_commits\": 0, \"branch_kept\": false}]}\n",[544,4030,4031,4065,4104],{"__ignoreMap":3662},[3666,4032,4033,4035,4038,4040,4043,4045,4048,4050,4053,4055,4058,4060,4063],{"class":3668,"line":3669},[3666,4034,3673],{"class":3672},[3666,4036,4037],{"class":3676},"\"freed_bytes\"",[3666,4039,2794],{"class":3672},[3666,4041,4042],{"class":3703},"2400000000",[3666,4044,1084],{"class":3672},[3666,4046,4047],{"class":3676},"\"used_after_bytes\"",[3666,4049,2794],{"class":3672},[3666,4051,4052],{"class":3703},"10589000000",[3666,4054,1084],{"class":3672},[3666,4056,4057],{"class":3676},"\"state_after\"",[3666,4059,2794],{"class":3672},[3666,4061,4062],{"class":3682},"\"over_quota\"",[3666,4064,3707],{"class":3672},[3666,4066,4067,4069,4071,4073,4075,4077,4079,4081,4083,4085,4087,4089,4091,4093,4095,4098,4100,4102],{"class":3668,"line":3710},[3666,4068,3823],{"class":3676},[3666,4070,3826],{"class":3672},[3666,4072,3829],{"class":3676},[3666,4074,2794],{"class":3672},[3666,4076,3683],{"class":3682},[3666,4078,1084],{"class":3672},[3666,4080,3838],{"class":3676},[3666,4082,2794],{"class":3672},[3666,4084,3683],{"class":3682},[3666,4086,1084],{"class":3672},[3666,4088,3915],{"class":3676},[3666,4090,2794],{"class":3672},[3666,4092,3874],{"class":3703},[3666,4094,1084],{"class":3672},[3666,4096,4097],{"class":3676},"\"archivable\"",[3666,4099,2794],{"class":3672},[3666,4101,1074],{"class":3703},[3666,4103,3707],{"class":3672},[3666,4105,4106,4109,4111,4113,4115,4118,4120,4123,4125,4128,4130,4132,4134,4137,4139,4141],{"class":3668,"line":3743},[3666,4107,4108],{"class":3676},"            \"refusal\"",[3666,4110,2794],{"class":3672},[3666,4112,1007],{"class":3703},[3666,4114,1084],{"class":3672},[3666,4116,4117],{"class":3676},"\"uncommitted_files\"",[3666,4119,2794],{"class":3672},[3666,4121,4122],{"class":3703},"3",[3666,4124,1084],{"class":3672},[3666,4126,4127],{"class":3676},"\"unpushed_commits\"",[3666,4129,2794],{"class":3672},[3666,4131,3757],{"class":3703},[3666,4133,1084],{"class":3672},[3666,4135,4136],{"class":3676},"\"branch_kept\"",[3666,4138,2794],{"class":3672},[3666,4140,1080],{"class":3703},[3666,4142,3922],{"class":3672},[553,4144,4145,4153],{},[556,4146,4147],{},[559,4148,4149,4151],{},[562,4150,951],{},[562,4152,957],{},[569,4154,4155,4173,4190,4203],{},[559,4156,4157,4162],{},[574,4158,4159],{},[544,4160,4161],{},"archivable",[574,4163,4164,2598,4166,4169,4170,551],{},[544,4165,1080],{},[544,4167,4168],{},"refusal",", for an id that is unknown, not completed or abandoned, or already archived. It adds nothing to ",[544,4171,4172],{},"freed_bytes",[559,4174,4175,4180],{},[574,4176,4177],{},[544,4178,4179],{},"uncommitted_files",[574,4181,4182,4183,4186,4187,4189],{},"The lines of ",[544,4184,4185],{},"git status --porcelain"," in the worktree; ",[544,4188,1007],{}," when there is no worktree or git cannot read it.",[559,4191,4192,4200],{},[574,4193,4194,1084,4197],{},[544,4195,4196],{},"unpushed_commits",[544,4198,4199],{},"branch_kept",[574,4201,4202],{},"The check archive itself makes: commits no other branch, remote-tracking branch or tag holds, and whether the branch stays because of them.",[559,4204,4205,4210],{},[574,4206,4207],{},[544,4208,4209],{},"state_after",[574,4211,4212,4213,4216,4217,4219],{},"The state ",[544,4214,4215],{},"used_after_bytes"," would be in; ",[544,4218,1007],{}," without a limit.",[526,4221,4222,4224,4225,2634,4231,551],{},[544,4223,4172],{}," assumes each worktree goes: an archive whose detached-HEAD rescue fails keeps it and frees nothing. Archiving is ",[530,4226,4228],{"href":4227},"\u002Freference\u002Fhttp-api\u002Fwork-items#post-apiwork-itemsbulk",[544,4229,4230],{},"POST \u002Fapi\u002Fwork-items\u002Fbulk",[544,4232,4233],{},"archive",[553,4235,4236,4244],{},[556,4237,4238],{},[559,4239,4240,4242],{},[562,4241,1135],{},[562,4243,1138],{},[569,4245,4246],{},[559,4247,4248,4252],{},[574,4249,4250],{},[544,4251,1160],{},[574,4253,4254,4256],{},[544,4255,4024],{}," is empty or holds more than 200 ids.",[930,4258,4260],{"id":4259},"related","Related",[2659,4262,4263,4268,4275,4284],{},[2662,4264,4265,4267],{},[530,4266,470],{"href":471},": the routes the Templates and Settings editors use to change what the read routes here answer.",[2662,4269,4270,4274],{},[530,4271,4272],{"href":301},[544,4273,300],{},": the fields of the repo entry that connecting and changing a repo write.",[2662,4276,4277,4279,4280,4283],{},[530,4278,282],{"href":283},": the ",[544,4281,4282],{},"kraft repo"," commands that call the repo routes.",[2662,4285,4286,779,4288,4290],{},[530,4287,450],{"href":451},[530,4289,454],{"href":455},": the routes for a work item, whose editors routes are here.",[4292,4293,4294],"style",{},"html pre.shiki code .s7iLA, html code.shiki .s7iLA{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6}html pre.shiki code .sb7M8, html code.shiki .sb7M8{--shiki-light:#024C1A;--shiki-default:#024C1A;--shiki-dark:#72F088}html pre.shiki code .semJd, html code.shiki .semJd{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF}html pre.shiki code .ssYy9, html code.shiki .ssYy9{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF}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);}",{"title":3662,"searchDepth":3710,"depth":3710,"links":4296},[4297,4309,4310,4322,4326,4334,4344,4350,4362,4368],{"id":932,"depth":3710,"text":933,"children":4298},[4299,4301,4303,4305,4307],{"id":937,"depth":3743,"text":4300},"GET \u002Fapi\u002F​repos",{"id":1016,"depth":3743,"text":4302},"POST \u002Fapi\u002F​repos\u002F​probe",{"id":1186,"depth":3743,"text":4304},"POST \u002Fapi\u002F​repos",{"id":1423,"depth":3743,"text":4306},"PATCH \u002Fapi\u002F​repos?​path=",{"id":1628,"depth":3743,"text":4308},"DELETE \u002Fapi\u002F​repos?​path=",{"id":1693,"depth":3710,"text":1025},{"id":1887,"depth":3710,"text":1888,"children":4311},[4312,4314,4316,4318,4320],{"id":1902,"depth":3743,"text":4313},"GET \u002Fapi\u002F​templates\u002F​chains",{"id":2046,"depth":3743,"text":4315},"GET \u002Fapi\u002F​templates\u002F​chains\u002F​{id}\u002F​resolved",{"id":2157,"depth":3743,"text":4317},"GET \u002Fapi\u002F​templates\u002F​library",{"id":2180,"depth":3743,"text":4319},"GET \u002Fapi\u002F​templates\u002F​library\u002F​{ref}",{"id":2208,"depth":3743,"text":4321},"GET \u002Fapi\u002F​templates\u002F​steering\u002F​preview",{"id":2448,"depth":3710,"text":2172,"children":4323},[4324],{"id":2591,"depth":3743,"text":4325},"An add-​on's chains and components",{"id":533,"depth":3710,"text":2640,"children":4327},[4328,4330,4332],{"id":2650,"depth":3743,"text":4329},"GET \u002Fapi\u002F​harnesses\u002F​profiles",{"id":2784,"depth":3743,"text":4331},"GET \u002Fapi\u002F​harnesses",{"id":2810,"depth":3743,"text":4333},"GET \u002Fapi\u002F​harnesses\u002F​providers",{"id":2831,"depth":3710,"text":2832,"children":4335},[4336,4338,4340,4342],{"id":2842,"depth":3743,"text":4337},"GET \u002Fapi\u002F​apply",{"id":2914,"depth":3743,"text":4339},"POST \u002Fapi\u002F​apply\u002F​reload",{"id":2935,"depth":3743,"text":4341},"POST \u002Fapi\u002F​templates\u002F​reload",{"id":2976,"depth":3743,"text":4343},"POST \u002Fapi\u002F​apply\u002F​restart",{"id":3055,"depth":3710,"text":3056,"children":4345},[4346,4348],{"id":3059,"depth":3743,"text":4347},"GET \u002Fapi\u002F​update",{"id":3126,"depth":3743,"text":4349},"POST \u002Fapi\u002F​update\u002F​check",{"id":3139,"depth":3710,"text":3140,"children":4351},[4352,4354,4356,4358,4360],{"id":3149,"depth":3743,"text":4353},"GET \u002Fapi\u002F​editors",{"id":3221,"depth":3743,"text":4355},"POST \u002Fapi\u002F​documents\u002F​{id}\u002F​open",{"id":3340,"depth":3743,"text":4357},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​artifact\u002F​open",{"id":3449,"depth":3743,"text":4359},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​artifacts\u002F​{kind}\u002F​open",{"id":3542,"depth":3743,"text":4361},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​open-​worktree",{"id":3642,"depth":3710,"text":3643,"children":4363},[4364,4366],{"id":3646,"depth":3743,"text":4365},"GET \u002Fapi\u002F​storage",{"id":4016,"depth":3743,"text":4367},"POST \u002Fapi\u002F​storage\u002F​preview",{"id":4259,"depth":3710,"text":4260},"The board's routes for connecting a repo, reading chain templates and harnesses, applying saved changes, checking for updates, disk use and opening editors.","md",null,{},true,{"title":466,"description":4369},"OFUopEt4QEuOunPbTUW1LscP12nLDFuMFCAVy9dYlBo",[4377,4379],{"title":462,"path":463,"stem":464,"description":4378,"children":-1},"The board's routes for the daily spend total, raising a budget, the dry run of a create, an item's events, its diff and review, and its documents.",{"title":470,"path":471,"stem":472,"description":4380,"children":-1},"The routes the Templates and Settings editors use to keep, change, publish and discard drafts, the policy and intake-check routes beside them, and the `result` they answer.",1791801178410]