[{"data":1,"prerenderedAt":3556},["ShallowReactive",2],{"navigation_docs":3,"-reference-http-api-repos-chains-harnesses-and-server":504,"-reference-http-api-repos-chains-harnesses-and-server-surround":3551},[4,28,51,187,214,469],{"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,113,134,183],{"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],{"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,"children":117,"page":95},"Agents and harnesses","\u002Fguides\u002Fharnesses","3.guides\u002F3.harnesses",[118,122,126,130],{"title":119,"path":120,"stem":121},"Switch a task to another harness","\u002Fguides\u002Fharnesses\u002Fswitch-harness","3.guides\u002F3.harnesses\u002F1.switch-harness",{"title":123,"path":124,"stem":125},"Add or override a harness","\u002Fguides\u002Fharnesses\u002Fadding-a-harness","3.guides\u002F3.harnesses\u002F2.adding-a-harness",{"title":127,"path":128,"stem":129},"Build a worker Kit","\u002Fguides\u002Fharnesses\u002Fworker-kit","3.guides\u002F3.harnesses\u002F3.worker-kit",{"title":131,"path":132,"stem":133},"Give a worker its login","\u002Fguides\u002Fharnesses\u002Fgive-a-worker-its-login","3.guides\u002F3.harnesses\u002F4.give-a-worker-its-login",{"title":135,"path":136,"stem":137,"children":138,"page":95},"Run the server","\u002Fguides\u002Frun","3.guides\u002F4.run",[139,143,147,151,155,159,163,167,171,175,179],{"title":140,"path":141,"stem":142},"Remote access","\u002Fguides\u002Frun\u002Fremote-access","3.guides\u002F4.run\u002F01.remote-access",{"title":144,"path":145,"stem":146},"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":148,"path":149,"stem":150},"Restart Kraft without ending running agents","\u002Fguides\u002Frun\u002Frestart-kraft","3.guides\u002F4.run\u002F03.restart-kraft",{"title":152,"path":153,"stem":154},"Back up and restore the database","\u002Fguides\u002Frun\u002Fback-up-and-restore","3.guides\u002F4.run\u002F04.back-up-and-restore",{"title":156,"path":157,"stem":158},"Logs and disk space","\u002Fguides\u002Frun\u002Flogs-and-disk-space","3.guides\u002F4.run\u002F05.logs-and-disk-space",{"title":160,"path":161,"stem":162},"Run Kraft as a service","\u002Fguides\u002Frun\u002Frun-as-a-service","3.guides\u002F4.run\u002F06.run-as-a-service",{"title":164,"path":165,"stem":166},"Upgrade Kraft","\u002Fguides\u002Frun\u002Fupgrade-kraft","3.guides\u002F4.run\u002F07.upgrade-kraft",{"title":168,"path":169,"stem":170},"Upgrade your configuration","\u002Fguides\u002Frun\u002Fupgrade-your-configuration","3.guides\u002F4.run\u002F08.upgrade-your-configuration",{"title":172,"path":173,"stem":174},"Upgrade from 1.4","\u002Fguides\u002Frun\u002Fupgrade-from-1-4","3.guides\u002F4.run\u002F09.upgrade-from-1-4",{"title":176,"path":177,"stem":178},"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":180,"path":181,"stem":182},"Roll back to 1.4","\u002Fguides\u002Frun\u002Froll-back","3.guides\u002F4.run\u002F11.roll-back",{"title":184,"path":185,"stem":186},"Kraft Lite","\u002Fguides\u002Fkraft-lite","3.guides\u002F5.kraft-lite",{"title":188,"path":189,"stem":190,"children":191},"Troubleshooting","\u002Ftroubleshooting","4.troubleshooting",[192,194,198,202,206,210],{"title":10,"path":189,"stem":193},"4.troubleshooting\u002Findex",{"title":195,"path":196,"stem":197},"Why did my item stop?","\u002Ftroubleshooting\u002Fwhy-did-my-item-stop","4.troubleshooting\u002F1.why-did-my-item-stop",{"title":199,"path":200,"stem":201},"Stop reasons in detail","\u002Ftroubleshooting\u002Fstop-reasons-in-detail","4.troubleshooting\u002F2.stop-reasons-in-detail",{"title":203,"path":204,"stem":205},"Starting and reaching Kraft","\u002Ftroubleshooting\u002Fstarting-and-reaching-kraft","4.troubleshooting\u002F3.starting-and-reaching-kraft",{"title":207,"path":208,"stem":209},"Doctor failures","\u002Ftroubleshooting\u002Fdoctor-failures","4.troubleshooting\u002F4.doctor-failures",{"title":211,"path":212,"stem":213},"Sandbox and Kit stops","\u002Ftroubleshooting\u002Fsandbox-and-kit-stops","4.troubleshooting\u002F5.sandbox-and-kit-stops",{"title":215,"path":216,"stem":217,"children":218},"Reference","\u002Freference","5.reference",[219,221,259,281,285,375,393,419,423,427,461,465],{"title":10,"path":216,"stem":220},"5.reference\u002Findex",{"title":222,"path":223,"stem":224,"children":225},"Web UI","\u002Freference\u002Fweb-ui","5.reference\u002F00.web-ui\u002Findex",[226,227,231,235,239,243,247,251,255],{"title":10,"path":223,"stem":224},{"title":228,"path":229,"stem":230},"Sidebar, search, and keyboard","\u002Freference\u002Fweb-ui\u002Fsidebar-search-and-keyboard","5.reference\u002F00.web-ui\u002F0.sidebar-search-and-keyboard",{"title":232,"path":233,"stem":234},"The board","\u002Freference\u002Fweb-ui\u002Fboard","5.reference\u002F00.web-ui\u002F1.board",{"title":236,"path":237,"stem":238},"An item's page","\u002Freference\u002Fweb-ui\u002Fitem-page","5.reference\u002F00.web-ui\u002F2.item-page",{"title":240,"path":241,"stem":242},"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":244,"path":245,"stem":246},"Config before an item starts","\u002Freference\u002Fweb-ui\u002Fconfig-before-start","5.reference\u002F00.web-ui\u002F4.config-before-start",{"title":248,"path":249,"stem":250},"The review page","\u002Freference\u002Fweb-ui\u002Freview-page","5.reference\u002F00.web-ui\u002F5.review-page",{"title":252,"path":253,"stem":254},"Templates and Settings","\u002Freference\u002Fweb-ui\u002Ftemplates-and-settings","5.reference\u002F00.web-ui\u002F6.templates-and-settings",{"title":256,"path":257,"stem":258},"Analytics","\u002Freference\u002Fweb-ui\u002Fanalytics","5.reference\u002F00.web-ui\u002F7.analytics",{"title":260,"path":261,"stem":262,"children":263},"CLI","\u002Freference\u002Fcli","5.reference\u002F01.cli\u002Findex",[264,265,269,273,277],{"title":10,"path":261,"stem":262},{"title":266,"path":267,"stem":268},"Item verbs","\u002Freference\u002Fcli\u002Fitem","5.reference\u002F01.cli\u002F2.item",{"title":270,"path":271,"stem":272},"View verbs","\u002Freference\u002Fcli\u002Fview","5.reference\u002F01.cli\u002F3.view",{"title":274,"path":275,"stem":276},"Repo verbs","\u002Freference\u002Fcli\u002Frepo","5.reference\u002F01.cli\u002F4.repo",{"title":278,"path":279,"stem":280},"Admin verbs","\u002Freference\u002Fcli\u002Fadmin","5.reference\u002F01.cli\u002F5.admin",{"title":282,"path":283,"stem":284},"Work item statuses","\u002Freference\u002Fstatuses","5.reference\u002F02.statuses",{"title":286,"path":287,"stem":288,"children":289},"Configuration","\u002Freference\u002Fconfiguration","5.reference\u002F03.configuration\u002Findex",[290,291,309,313,317,321,325,329,333,337,371],{"title":10,"path":287,"stem":288},{"title":292,"path":293,"stem":294,"children":295},"repos.yaml","\u002Freference\u002Fconfiguration\u002Frepos","5.reference\u002F03.configuration\u002F02.repos\u002Findex",[296,297,301,305],{"title":10,"path":293,"stem":294},{"title":298,"path":299,"stem":300},"How connect proposes commands","\u002Freference\u002Fconfiguration\u002Frepos\u002Fconnect-proposals","5.reference\u002F03.configuration\u002F02.repos\u002F1.connect-proposals",{"title":302,"path":303,"stem":304},"detectors.yaml","\u002Freference\u002Fconfiguration\u002Frepos\u002Fdetectors","5.reference\u002F03.configuration\u002F02.repos\u002F2.detectors",{"title":306,"path":307,"stem":308},"Workspaces","\u002Freference\u002Fconfiguration\u002Frepos\u002Fworkspaces","5.reference\u002F03.configuration\u002F02.repos\u002F3.workspaces",{"title":310,"path":311,"stem":312},"policy.yaml","\u002Freference\u002Fconfiguration\u002Fpolicy","5.reference\u002F03.configuration\u002F03.policy",{"title":314,"path":315,"stem":316},"Library and chains","\u002Freference\u002Fconfiguration\u002Flibrary-and-chains","5.reference\u002F03.configuration\u002F04.library-and-chains",{"title":318,"path":319,"stem":320},"harnesses.yaml","\u002Freference\u002Fconfiguration\u002Fharnesses-file","5.reference\u002F03.configuration\u002F05.harnesses-file",{"title":322,"path":323,"stem":324},"access.yaml","\u002Freference\u002Fconfiguration\u002Faccess","5.reference\u002F03.configuration\u002F06.access",{"title":326,"path":327,"stem":328},"intake.yaml","\u002Freference\u002Fconfiguration\u002Fintake","5.reference\u002F03.configuration\u002F07.intake",{"title":330,"path":331,"stem":332},"notify.yaml","\u002Freference\u002Fconfiguration\u002Fnotify","5.reference\u002F03.configuration\u002F08.notify",{"title":334,"path":335,"stem":336},"theme.yaml","\u002Freference\u002Fconfiguration\u002Ftheme","5.reference\u002F03.configuration\u002F09.theme",{"title":338,"path":339,"stem":340,"children":341},"Sandboxed workers","\u002Freference\u002Fconfiguration\u002Fsandbox","5.reference\u002F03.configuration\u002F10.sandbox\u002Findex",[342,343,347,351,355,359,363,367],{"title":10,"path":339,"stem":340},{"title":344,"path":345,"stem":346},"Resource limits","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fresource-limits","5.reference\u002F03.configuration\u002F10.sandbox\u002F1.resource-limits",{"title":348,"path":349,"stem":350},"Callbacks from a sandbox","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fcallbacks","5.reference\u002F03.configuration\u002F10.sandbox\u002F2.callbacks",{"title":352,"path":353,"stem":354},"Network policy","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fnetwork-policy","5.reference\u002F03.configuration\u002F10.sandbox\u002F3.network-policy",{"title":356,"path":357,"stem":358},"Credentials","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fcredentials","5.reference\u002F03.configuration\u002F10.sandbox\u002F4.credentials",{"title":360,"path":361,"stem":362},"Kits","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fkits","5.reference\u002F03.configuration\u002F10.sandbox\u002F5.kits",{"title":364,"path":365,"stem":366},"sandbox.yaml","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fsandbox-yaml","5.reference\u002F03.configuration\u002F10.sandbox\u002F6.sandbox-yaml",{"title":368,"path":369,"stem":370},"Git in a sandbox","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fgit-in-a-sandbox","5.reference\u002F03.configuration\u002F10.sandbox\u002F7.git-in-a-sandbox",{"title":372,"path":373,"stem":374},"Environment variables","\u002Freference\u002Fconfiguration\u002Fenvironment-variables","5.reference\u002F03.configuration\u002F11.environment-variables",{"title":376,"path":377,"stem":378,"children":379},"Chain file keys","\u002Freference\u002Fchain-nodes","5.reference\u002F04.chain-nodes\u002Findex",[380,381,385,389],{"title":10,"path":377,"stem":378},{"title":382,"path":383,"stem":384},"Subprocess tasks","\u002Freference\u002Fchain-nodes\u002Fsubprocess-tasks","5.reference\u002F04.chain-nodes\u002F2.subprocess-tasks",{"title":386,"path":387,"stem":388},"Fix loop and judge","\u002Freference\u002Fchain-nodes\u002Ffix-loop","5.reference\u002F04.chain-nodes\u002F3.fix-loop",{"title":390,"path":391,"stem":392},"Result file","\u002Freference\u002Fchain-nodes\u002Fresult-file","5.reference\u002F04.chain-nodes\u002F4.result-file",{"title":394,"path":395,"stem":396,"children":397},"Agent harnesses","\u002Freference\u002Fharnesses","5.reference\u002F05.harnesses\u002Findex",[398,399,403,407,411,415],{"title":10,"path":395,"stem":396},{"title":400,"path":401,"stem":402},"Unattended runs","\u002Freference\u002Fharnesses\u002Funattended-runs","5.reference\u002F05.harnesses\u002F2.unattended-runs",{"title":404,"path":405,"stem":406},"Agent profiles","\u002Freference\u002Fharnesses\u002Fagent-profiles","5.reference\u002F05.harnesses\u002F3.agent-profiles",{"title":408,"path":409,"stem":410},"Harness definition files","\u002Freference\u002Fharnesses\u002Fharness-files","5.reference\u002F05.harnesses\u002F4.harness-files",{"title":412,"path":413,"stem":414},"Fallback and escalation","\u002Freference\u002Fharnesses\u002Ffallback-and-escalation","5.reference\u002F05.harnesses\u002F5.fallback-and-escalation",{"title":416,"path":417,"stem":418},"Cost reporting","\u002Freference\u002Fharnesses\u002Fcost-reporting","5.reference\u002F05.harnesses\u002F6.cost-reporting",{"title":420,"path":421,"stem":422},"Permission gate","\u002Freference\u002Fpermissions","5.reference\u002F06.permissions",{"title":424,"path":425,"stem":426},"Inbound triggers","\u002Freference\u002Ftriggers","5.reference\u002F07.triggers",{"title":428,"path":429,"stem":430,"children":431},"HTTP API","\u002Freference\u002Fhttp-api","5.reference\u002F08.http-api\u002Findex",[432,433,437,441,445,449,453,457],{"title":10,"path":429,"stem":430},{"title":434,"path":435,"stem":436},"Filing, reading and changing work items","\u002Freference\u002Fhttp-api\u002Fwork-items","5.reference\u002F08.http-api\u002F2.work-items",{"title":438,"path":439,"stem":440},"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":442,"path":443,"stem":444},"The work item object","\u002Freference\u002Fhttp-api\u002Fwork-item-object","5.reference\u002F08.http-api\u002F4.work-item-object",{"title":446,"path":447,"stem":448},"Budget, events, diff and documents","\u002Freference\u002Fhttp-api\u002Fbudget-and-events","5.reference\u002F08.http-api\u002F5.budget-and-events",{"title":450,"path":451,"stem":452},"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":454,"path":455,"stem":456},"Drafts","\u002Freference\u002Fhttp-api\u002Fdrafts","5.reference\u002F08.http-api\u002F7.drafts",{"title":458,"path":459,"stem":460},"Ops for each draft area","\u002Freference\u002Fhttp-api\u002Fdraft-ops","5.reference\u002F08.http-api\u002F8.draft-ops",{"title":462,"path":463,"stem":464},"MCP tools","\u002Freference\u002Fmcp-tools","5.reference\u002F09.mcp-tools",{"title":466,"path":467,"stem":468},"Events","\u002Freference\u002Fevents","5.reference\u002F10.events",{"title":470,"path":471,"stem":472,"children":473},"Security and project","\u002Fproject","6.project",[474,476,480,484,488,492,496,500],{"title":10,"path":471,"stem":475},"6.project\u002Findex",{"title":477,"path":478,"stem":479},"Security","\u002Fproject\u002Fsecurity","6.project\u002F1.security",{"title":481,"path":482,"stem":483},"Data and privacy","\u002Fproject\u002Fdata-and-privacy","6.project\u002F2.data-and-privacy",{"title":485,"path":486,"stem":487},"What's new in 2.0","\u002Fproject\u002Fwhats-new","6.project\u002F3.whats-new",{"title":489,"path":490,"stem":491},"Status and support","\u002Fproject\u002Fstatus-and-support","6.project\u002F4.status-and-support",{"title":493,"path":494,"stem":495},"Architecture","\u002Fproject\u002Farchitecture","6.project\u002F5.architecture",{"title":497,"path":498,"stem":499},"Source map","\u002Fproject\u002Fsource-map","6.project\u002F6.source-map",{"title":501,"path":502,"stem":503},"Contributing","\u002Fproject\u002Fcontributing","6.project\u002F7.contributing",{"id":505,"title":450,"body":506,"description":3544,"extension":3545,"links":3546,"meta":3547,"navigation":3548,"path":451,"seo":3549,"stem":452,"__hash__":3550},"docs\u002F5.reference\u002F08.http-api\u002F6.repos-chains-harnesses-and-server.md",{"type":507,"value":508,"toc":3476},"minimark",[509,536,887,892,898,901,972,977,985,1073,1085,1142,1147,1160,1317,1329,1379,1384,1400,1507,1510,1567,1572,1589,1632,1635,1651,1826,1830,1841,1846,1849,1951,1959,1964,1968,2057,2070,2075,2093,2098,2121,2126,2147,2192,2197,2203,2299,2318,2361,2364,2371,2456,2482,2485,2492,2497,2502,2609,2614,2635,2640,2656,2660,2667,2672,2686,2733,2738,2754,2759,2775,2780,2799,2821,2855,2859,2864,2897,2926,2931,2939,2943,2949,2954,2959,3021,3026,3029,3074,3080,3140,3145,3163,3200,3249,3254,3259,3295,3342,3347,3353,3389,3392,3442,3446],[510,511,512,513,518,519,521,522,526,527,531,532,535],"p",{},"This page lists the board's routes for connecting, changing and disconnecting a repo, chains and the library, ",[514,515,517],"a",{"href":516},"\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 ",[514,520,434],{"href":435}," for the rule, and the ",[514,523,525],{"href":524},"\u002Freference\u002Fhttp-api#stable-routes","stable routes"," for the two that keep their shape. Prefer the ",[528,529,530],"code",{},"kraft"," command with ",[528,533,534],{},"--json",".",[537,538,539,552],"table",{},[540,541,542],"thead",{},[543,544,545,549],"tr",{},[546,547,548],"th",{},"Route",[546,550,551],{},"What it does",[553,554,555,569,582,595,610,623,636,653,670,683,696,709,722,735,748,766,783,796,809,822,835,848,861,874],"tbody",{},[543,556,557,566],{},[558,559,560],"td",{},[514,561,563],{"href":562},"#get-apirepos",[528,564,565],{},"GET \u002Fapi\u002Frepos",[558,567,568],{},"Lists the connected repos and workspaces.",[543,570,571,579],{},[558,572,573],{},[514,574,576],{"href":575},"#post-apireposprobe",[528,577,578],{},"POST \u002Fapi\u002Frepos\u002Fprobe",[558,580,581],{},"Reads a repository and proposes how to connect it.",[543,583,584,592],{},[558,585,586],{},[514,587,589],{"href":588},"#post-apirepos",[528,590,591],{},"POST \u002Fapi\u002Frepos",[558,593,594],{},"Connects a repository.",[543,596,597,605],{},[558,598,599],{},[514,600,602],{"href":601},"#patch-apirepospath",[528,603,604],{},"PATCH \u002Fapi\u002Frepos?path=",[558,606,607,608,535],{},"Changes a connected repo's entry in ",[528,609,292],{},[543,611,612,620],{},[558,613,614],{},[514,615,617],{"href":616},"#delete-apirepospath",[528,618,619],{},"DELETE \u002Fapi\u002Frepos?path=",[558,621,622],{},"Disconnects a repo.",[543,624,625,633],{},[558,626,627],{},[514,628,630],{"href":629},"#get-apitemplateschains",[528,631,632],{},"GET \u002Fapi\u002Ftemplates\u002Fchains",[558,634,635],{},"Lists every chain.",[543,637,638,646],{},[558,639,640],{},[514,641,643],{"href":642},"#get-apitemplateschainsidresolved",[528,644,645],{},"GET \u002Fapi\u002Ftemplates\u002Fchains\u002F{id}\u002Fresolved",[558,647,648,649,652],{},"Answers one chain with its ",[528,650,651],{},"extends"," expanded.",[543,654,655,663],{},[558,656,657],{},[514,658,660],{"href":659},"#get-apitemplateslibrary",[528,661,662],{},"GET \u002Fapi\u002Ftemplates\u002Flibrary",[558,664,665,666,669],{},"Answers ",[528,667,668],{},"library.yaml"," and every component in it.",[543,671,672,680],{},[558,673,674],{},[514,675,677],{"href":676},"#get-apitemplateslibraryref",[528,678,679],{},"GET \u002Fapi\u002Ftemplates\u002Flibrary\u002F{ref}",[558,681,682],{},"Answers one library component.",[543,684,685,693],{},[558,686,687],{},[514,688,690],{"href":689},"#get-apitemplatessteeringpreview",[528,691,692],{},"GET \u002Fapi\u002Ftemplates\u002Fsteering\u002Fpreview",[558,694,695],{},"Shows what an agent task reads at launch.",[543,697,698,706],{},[558,699,700],{},[514,701,703],{"href":702},"#get-apiharnessesprofiles",[528,704,705],{},"GET \u002Fapi\u002Fharnesses\u002Fprofiles",[558,707,708],{},"Answers the harness profiles and the agent profiles.",[543,710,711,719],{},[558,712,713],{},[514,714,716],{"href":715},"#get-apiharnesses",[528,717,718],{},"GET \u002Fapi\u002Fharnesses",[558,720,721],{},"Lists each provider and whether its CLI is installed.",[543,723,724,732],{},[558,725,726],{},[514,727,729],{"href":728},"#get-apiharnessesproviders",[528,730,731],{},"GET \u002Fapi\u002Fharnesses\u002Fproviders",[558,733,734],{},"Answers each provider's capabilities.",[543,736,737,745],{},[558,738,739],{},[514,740,742],{"href":741},"#get-apiapply",[528,743,744],{},"GET \u002Fapi\u002Fapply",[558,746,747],{},"Lists what is saved and not running yet.",[543,749,750,758],{},[558,751,752],{},[514,753,755],{"href":754},"#post-apiapplyreload",[528,756,757],{},"POST \u002Fapi\u002Fapply\u002Freload",[558,759,760,761,763,764,535],{},"Rereads the library, ",[528,762,310],{}," and ",[528,765,326],{},[543,767,768,776],{},[558,769,770],{},[514,771,773],{"href":772},"#post-apitemplatesreload",[528,774,775],{},"POST \u002Fapi\u002Ftemplates\u002Freload",[558,777,760,778,763,780,782],{},[528,779,310],{},[528,781,326],{},", and answers what it refused.",[543,784,785,793],{},[558,786,787],{},[514,788,790],{"href":789},"#post-apiapplyrestart",[528,791,792],{},"POST \u002Fapi\u002Fapply\u002Frestart",[558,794,795],{},"Restarts a server that a service manager started.",[543,797,798,806],{},[558,799,800],{},[514,801,803],{"href":802},"#get-apiupdate",[528,804,805],{},"GET \u002Fapi\u002Fupdate",[558,807,808],{},"Answers the cached update check.",[543,810,811,819],{},[558,812,813],{},[514,814,816],{"href":815},"#post-apiupdatecheck",[528,817,818],{},"POST \u002Fapi\u002Fupdate\u002Fcheck",[558,820,821],{},"Asks the release feed now.",[543,823,824,832],{},[558,825,826],{},[514,827,829],{"href":828},"#get-apieditors",[528,830,831],{},"GET \u002Fapi\u002Feditors",[558,833,834],{},"Lists the editors this machine can open.",[543,836,837,845],{},[558,838,839],{},[514,840,842],{"href":841},"#post-apidocumentsidopen",[528,843,844],{},"POST \u002Fapi\u002Fdocuments\u002F{id}\u002Fopen",[558,846,847],{},"Opens a document in an editor.",[543,849,850,858],{},[558,851,852],{},[514,853,855],{"href":854},"#post-apiwork-itemsidartifactopen",[528,856,857],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fartifact\u002Fopen",[558,859,860],{},"Opens the pending gate's document.",[543,862,863,871],{},[558,864,865],{},[514,866,868],{"href":867},"#post-apiwork-itemsidartifactskindopen",[528,869,870],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fartifacts\u002F{kind}\u002Fopen",[558,872,873],{},"Opens a task's document.",[543,875,876,884],{},[558,877,878],{},[514,879,881],{"href":880},"#post-apiwork-itemsidopen-worktree",[528,882,883],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fopen-worktree",[558,885,886],{},"Opens the item's worktree.",[888,889,891],"h2",{"id":890},"connecting-a-repo","Connecting a repo",[893,894,896],"h3",{"id":895},"get-apirepos",[528,897,565],{},[510,899,900],{},"Answers the connected repos and workspaces, and the checkout the server was started in when it is not connected yet.",[537,902,903,916],{},[540,904,905],{},[543,906,907,910,913],{},[546,908,909],{},"Field",[546,911,912],{},"Type",[546,914,915],{},"Meaning",[553,917,918,936,953],{},[543,919,920,925,928],{},[558,921,922],{},[528,923,924],{},"repos",[558,926,927],{},"list",[558,929,930,931,935],{},"One entry per connected repo, as ",[514,932,933],{"href":293},[528,934,292],{}," holds it, defaults included.",[543,937,938,943,946],{},[558,939,940],{},[528,941,942],{},"workspaces",[558,944,945],{},"object",[558,947,948,949,952],{},"The ",[528,950,951],{},"workspaces:"," section, by workspace id.",[543,954,955,960,966],{},[558,956,957],{},[528,958,959],{},"suggested",[558,961,962,963],{},"string or ",[528,964,965],{},"null",[558,967,968,969,971],{},"The git checkout the server was started in, when it is one and not connected yet, else ",[528,970,965],{},". The first-run board offers it as the path to connect.",[893,973,975],{"id":974},"post-apireposprobe",[528,976,578],{},[510,978,979,980,984],{},"Reads a repository and changes nothing. ",[514,981,983],{"href":982},"#the-proposal-answer","The proposal answer"," says what it returns.",[537,986,987,1000],{},[540,988,989],{},[543,990,991,993,995,998],{},[546,992,909],{},[546,994,912],{},[546,996,997],{},"Default",[546,999,915],{},[553,1001,1002,1018,1054],{},[543,1003,1004,1009,1012,1015],{},[558,1005,1006],{},[528,1007,1008],{},"path",[558,1010,1011],{},"string",[558,1013,1014],{},"required",[558,1016,1017],{},"The absolute path of the repository.",[543,1019,1020,1025,1028,1033],{},[558,1021,1022],{},[528,1023,1024],{},"detect",[558,1026,1027],{},"boolean",[558,1029,1030],{},[528,1031,1032],{},"true",[558,1034,1035,1036,1039,1040,1042,1043,1042,1046,1049,1050,535],{},"With ",[528,1037,1038],{},"false"," the route answers only what needs no detector table: the resolved ",[528,1041,1008],{},", ",[528,1044,1045],{},"name",[528,1047,1048],{},"branch",", submodules, beads and ",[514,1051,1053],{"href":1052},"\u002Fconcepts\u002Fvocabulary#forge","forge",[543,1055,1056,1061,1063,1066],{},[558,1057,1058],{},[528,1059,1060],{},"test_command",[558,1062,1011],{},[558,1064,1065],{},"none",[558,1067,1068,1069,1072],{},"The root's test command, in place of the proposed one. ",[528,1070,1071],{},"\"\""," declares that the repo has no tests.",[510,1074,1035,1075,1077,1078,1080,1081,1084],{},[528,1076,1060],{}," 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. ",[514,1079,298],{"href":299}," says how a proposal is made, what limits the probe, and what connect does when the probe fails. The ",[528,1082,1083],{},"429"," below is only on this page.",[537,1086,1087,1097],{},[540,1088,1089],{},[543,1090,1091,1094],{},[546,1092,1093],{},"Status",[546,1095,1096],{},"When",[553,1098,1099,1112,1124],{},[543,1100,1101,1106],{},[558,1102,1103],{},[528,1104,1105],{},"400",[558,1107,1108,1109,1111],{},"The path is not a directory or not a git repository, ",[528,1110,302],{}," does not load (the answer names it), or the probe ran past two minutes.",[543,1113,1114,1119],{},[558,1115,1116],{},[528,1117,1118],{},"422",[558,1120,1121,1123],{},[528,1122,1008],{}," is relative.",[543,1125,1126,1130],{},[558,1127,1128],{},[528,1129,1083],{},[558,1131,1132,1134,1135,1137,1138,1141],{},[528,1133,1024],{}," is ",[528,1136,1032],{}," and two probes are already running. Try again shortly. A probe with ",[528,1139,1140],{},"detect: false"," is never queued.",[893,1143,1145],{"id":1144},"post-apirepos",[528,1146,591],{},[510,1148,1149,1150,1152,1153,1156,1157,535],{},"Connects a repository: it probes it, saves the entry to ",[528,1151,292],{},", and indexes the repo for search. It answers ",[528,1154,1155],{},"201"," with the saved entry and ",[514,1158,1159],{"href":982},"the proposal answer",[537,1161,1162,1174],{},[540,1163,1164],{},[543,1165,1166,1168,1170,1172],{},[546,1167,909],{},[546,1169,912],{},[546,1171,997],{},[546,1173,915],{},[553,1175,1176,1188,1202,1219,1236,1253,1268,1287],{},[543,1177,1178,1182,1184,1186],{},[558,1179,1180],{},[528,1181,1008],{},[558,1183,1011],{},[558,1185,1014],{},[558,1187,1017],{},[543,1189,1190,1194,1196,1199],{},[558,1191,1192],{},[528,1193,1045],{},[558,1195,1011],{},[558,1197,1198],{},"the directory name",[558,1200,1201],{},"The repo's name.",[543,1203,1204,1209,1211,1216],{},[558,1205,1206],{},[528,1207,1208],{},"default_chain",[558,1210,1011],{},[558,1212,1213],{},[528,1214,1215],{},"default",[558,1217,1218],{},"The chain its items run when none is named.",[543,1220,1221,1225,1227,1230],{},[558,1222,1223],{},[528,1224,1060],{},[558,1226,1011],{},[558,1228,1229],{},"the probe's proposal",[558,1231,1232,1233,1235],{},"The root's test command. ",[528,1234,1071],{}," declares a repo with no tests, which may be enabled.",[543,1237,1238,1243,1245,1247],{},[558,1239,1240],{},[528,1241,1242],{},"setup_command",[558,1244,1011],{},[558,1246,1229],{},[558,1248,1249,1250,1252],{},"The command that prepares a worktree. ",[528,1251,1071],{}," declares none.",[543,1254,1255,1260,1262,1265],{},[558,1256,1257],{},[528,1258,1259],{},"test_scopes",[558,1261,927],{},[558,1263,1264],{},"the probe's nested scopes",[558,1266,1267],{},"Test scopes by directory. An empty list is read as unset.",[543,1269,1270,1275,1277,1284],{},[558,1271,1272],{},[528,1273,1274],{},"enabled",[558,1276,1027],{},[558,1278,1279,1281,1282],{},[528,1280,1032],{}," with a test command or test scopes, else ",[528,1283,1038],{},[558,1285,1286],{},"Whether new items may target the repo.",[543,1288,1289,1305,1307,1310],{},[558,1290,1291,1042,1293,1042,1296,1042,1299,1042,1302],{},[528,1292,1053],{},[528,1294,1295],{},"project",[528,1297,1298],{},"models",[528,1300,1301],{},"deny_tools",[528,1303,1304],{},"steering",[558,1306],{},[558,1308,1309],{},"the probe's forge and project, else empty",[558,1311,1312,1313,535],{},"The fields of the same names in ",[514,1314,1315],{"href":293},[528,1316,292],{},[510,1318,1319,1320,1322,1323,1325,1326,535],{},"A ",[528,1321,1060],{}," or ",[528,1324,1242],{}," 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 ",[528,1327,1328],{},"probe_failed",[537,1330,1331,1339],{},[540,1332,1333],{},[543,1334,1335,1337],{},[546,1336,1093],{},[546,1338,1096],{},[553,1340,1341,1353,1363],{},[543,1342,1343,1347],{},[558,1344,1345],{},[528,1346,1105],{},[558,1348,1349,1350,1352],{},"The path is not a git repository. Or the probe fails (",[528,1351,302],{}," does not load, or it ran past two minutes) and the body does not give both commands.",[543,1354,1355,1360],{},[558,1356,1357],{},[528,1358,1359],{},"409",[558,1361,1362],{},"The repo is already connected. It is checked before anything else is read.",[543,1364,1365,1369],{},[558,1366,1367],{},[528,1368,1118],{},[558,1370,1371,1372,1375,1376,1378],{},"The path is relative, the repository has no commit yet, ",[528,1373,1374],{},"enabled: true"," has no test command or scopes, or ",[528,1377,292],{}," would not load with the entry.",[893,1380,1382],{"id":1381},"patch-apirepospath",[528,1383,604],{},[510,1385,1386,1387,1389,1390,1392,1393,1395,1396,1399],{},"Changes fields of the connected repo at ",[528,1388,1008],{},", the absolute path of its entry in ",[528,1391,292],{},". The Settings screen calls it. A field the body leaves out keeps its saved value, and one sent as ",[528,1394,965],{}," is cleared. Any save sets ",[528,1397,1398],{},"managed: true"," on the entry.",[537,1401,1402,1412],{},[540,1403,1404],{},[543,1405,1406,1408,1410],{},[546,1407,909],{},[546,1409,912],{},[546,1411,915],{},[553,1413,1414,1435,1450,1461,1471,1490],{},[543,1415,1416,1426,1428],{},[558,1417,1418,1042,1420,1042,1422,1042,1424],{},[528,1419,1045],{},[528,1421,1053],{},[528,1423,1295],{},[528,1425,1208],{},[558,1427,1011],{},[558,1429,1430,1431,535],{},"As in ",[514,1432,1433],{"href":588},[528,1434,591],{},[543,1436,1437,1443,1445],{},[558,1438,1439,1042,1441],{},[528,1440,1060],{},[528,1442,1242],{},[558,1444,1011],{},[558,1446,1447,1448,1252],{},"The commands. ",[528,1449,1071],{},[543,1451,1452,1456,1458],{},[558,1453,1454],{},[528,1455,1259],{},[558,1457,927],{},[558,1459,1460],{},"Test scopes by directory.",[543,1462,1463,1467,1469],{},[558,1464,1465],{},[528,1466,1274],{},[558,1468,1027],{},[558,1470,1286],{},[543,1472,1473,1481,1484],{},[558,1474,1475,1042,1477,1042,1479],{},[528,1476,1298],{},[528,1478,1301],{},[528,1480,1304],{},[558,1482,1483],{},"object, list, list",[558,1485,1312,1486,535],{},[514,1487,1488],{"href":293},[528,1489,292],{},[543,1491,1492,1500,1503],{},[558,1493,1494,1042,1497],{},[528,1495,1496],{},"local_files",[528,1498,1499],{},"intent_dir",[558,1501,1502],{},"list, string",[558,1504,1312,1505,535],{},[528,1506,292],{},[510,1508,1509],{},"The answer is the whole saved entry, defaults included.",[537,1511,1512,1520],{},[540,1513,1514],{},[543,1515,1516,1518],{},[546,1517,1093],{},[546,1519,1096],{},[553,1521,1522,1534,1558],{},[543,1523,1524,1529],{},[558,1525,1526],{},[528,1527,1528],{},"404",[558,1530,1531,1533],{},[528,1532,1008],{}," is not a connected repo, or is relative.",[543,1535,1536,1540],{},[558,1537,1538],{},[528,1539,1118],{},[558,1541,1542,1544,1545,1547,1548,1550,1551,1553,1554,1557],{},[528,1543,292],{}," would not load with the change, and nothing is written: an unknown ",[528,1546,1304],{}," name, a glob in ",[528,1549,1496],{},", an ",[528,1552,1499],{}," that leaves the repo. The ",[528,1555,1556],{},"detail"," says which.",[543,1559,1560,1564],{},[558,1561,1562],{},[528,1563,1118],{},[558,1565,1566],{},"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.",[893,1568,1570],{"id":1569},"delete-apirepospath",[528,1571,619],{},[510,1573,1574,1575,1577,1578,1580,1581,1584,1585,1588],{},"Disconnects the repo at ",[528,1576,1008],{},": it removes the entry from ",[528,1579,292],{}," and from the search index. No file of the repository is touched and no work item is dropped. ",[528,1582,1583],{},"kraft repo disconnect"," calls it. It answers ",[528,1586,1587],{},"204"," with no body.",[537,1590,1591,1599],{},[540,1592,1593],{},[543,1594,1595,1597],{},[546,1596,1093],{},[546,1598,1096],{},[553,1600,1601,1611,1620],{},[543,1602,1603,1607],{},[558,1604,1605],{},[528,1606,1528],{},[558,1608,1609,1533],{},[528,1610,1008],{},[543,1612,1613,1617],{},[558,1614,1615],{},[528,1616,1359],{},[558,1618,1619],{},"The repo has open items, paused ones included. The answer gives the count: complete, cancel or abandon them first.",[543,1621,1622,1626],{},[558,1623,1624],{},[528,1625,1118],{},[558,1627,1628,1629,1631],{},"A workspace in ",[528,1630,292],{}," still names the repo.",[888,1633,983],{"id":1634},"the-proposal-answer",[510,1636,1637,763,1639,1641,1642,1042,1644,1042,1646,1648,1649,535],{},[528,1638,578],{},[528,1640,591],{}," answer the proposal beside the repo's facts: ",[528,1643,1060],{},[528,1645,1259],{},[528,1647,1242],{},", and the evidence below. None of the evidence is stored in ",[528,1650,292],{},[537,1652,1653,1661],{},[540,1654,1655],{},[543,1656,1657,1659],{},[546,1658,909],{},[546,1660,915],{},[553,1662,1663,1711,1725,1741,1751,1775,1793,1814],{},[543,1664,1665,1670],{},[558,1666,1667],{},[528,1668,1669],{},"candidates",[558,1671,1672,1673,1676,1677,1134,1680,1322,1683,1676,1686,1134,1689,1042,1692,1042,1695,1322,1698,1676,1701,1134,1704,1706,1707,1710],{},"Every command the evidence supports: ",[528,1674,1675],{},"{dir, role, command, tier, source, marker, detector, family, corroborated, chosen}",". ",[528,1678,1679],{},"role",[528,1681,1682],{},"test",[528,1684,1685],{},"setup",[528,1687,1688],{},"tier",[528,1690,1691],{},"runner",[528,1693,1694],{},"ci",[528,1696,1697],{},"toolchain",[528,1699,1700],{},"devenv",[528,1702,1703],{},"dir",[528,1705,1071],{}," for the root. ",[528,1708,1709],{},"chosen"," marks the proposal.",[543,1712,1713,1718],{},[558,1714,1715],{},[528,1716,1717],{},"scopes",[558,1719,1720,1721,1724],{},"One ",[528,1722,1723],{},"{dir, test, setup}"," per directory the proposal covers, root first, with commands as they run from inside that directory.",[543,1726,1727,1732],{},[558,1728,1729],{},[528,1730,1731],{},"missing_setup",[558,1733,1734,1735,1737,1738,1740],{},"Directories with a test command and nothing to prepare them (",[528,1736,535],{}," for the root), so ",[528,1739,1242],{}," is left undeclared.",[543,1742,1743,1748],{},[558,1744,1745],{},[528,1746,1747],{},"test_markers",[558,1749,1750],{},"The file each proposed test command came from.",[543,1752,1753,1758],{},[558,1754,1755],{},[528,1756,1757],{},"read_from",[558,1759,1760,1761,1764,1765,1322,1768,1771,1772,1774],{},"The commit read: ",[528,1762,1763],{},"refs\u002Fremotes\u002Forigin\u002FHEAD","'s target, ",[528,1766,1767],{},"refs\u002Fremotes\u002Forigin\u002Fmain",[528,1769,1770],{},"HEAD",", or ",[528,1773,965],{}," for a repo with no commit (read from its working copy).",[543,1776,1777,1782],{},[558,1778,1779],{},[528,1780,1781],{},"missing_tools",[558,1783,1784,1785,1788,1789,1792],{},"Programs a proposed command runs that the server's ",[528,1786,1787],{},"PATH"," does not have, one ",[528,1790,1791],{},"{dir, tool}"," each. A work item fails on them until they are installed.",[543,1794,1795,1800],{},[558,1796,1797],{},[528,1798,1799],{},"stopped",[558,1801,1802,1803,1806,1807,1809,1810,1813],{},"Why no test command was proposed, one ",[528,1804,1805],{},"{dir, reason, detector}"," per directory that stopped it (",[528,1808,535],{}," for the root): a ",[528,1811,1812],{},"pyproject.toml"," with no lockfile, or a root project with no test command found beside nested ones. Empty when nothing stopped.",[543,1815,1816,1820],{},[558,1817,1818],{},[528,1819,1328],{},[558,1821,1822,1823,1825],{},"Only on ",[528,1824,591],{},", when both commands were given and the probe failed: why.",[888,1827,1829],{"id":1828},"chain-templates","Chain templates",[510,1831,1832,1833,1836,1837,1840],{},"These routes read the chains the Templates editor shows. Each answers ",[528,1834,1835],{},"503"," when the library or a chain does not load, with ",[528,1838,1839],{},"template library invalid, refusing work:"," and the file that broke it.",[893,1842,1844],{"id":1843},"get-apitemplateschains",[528,1845,632],{},[510,1847,1848],{},"Answers every chain, by id.",[537,1850,1851,1861],{},[540,1852,1853],{},[543,1854,1855,1857,1859],{},[546,1856,909],{},[546,1858,912],{},[546,1860,915],{},[553,1862,1863,1875,1889,1912,1925,1939],{},[543,1864,1865,1870,1872],{},[558,1866,1867],{},[528,1868,1869],{},"id",[558,1871,1011],{},[558,1873,1874],{},"The chain id.",[543,1876,1877,1882,1886],{},[558,1878,1879],{},[528,1880,1881],{},"description",[558,1883,962,1884],{},[528,1885,965],{},[558,1887,1888],{},"As authored, even when the chain does not resolve.",[543,1890,1891,1896,1898],{},[558,1892,1893],{},[528,1894,1895],{},"nodes",[558,1897,927],{},[558,1899,1900,1901,1904,1905,1908,1909,1911],{},"The resolved nodes, empty when the chain does not resolve. Each carries ",[528,1902,1903],{},"icon",", the node's own ",[514,1906,1903],{"href":1907},"\u002Freference\u002Fchain-nodes#icons"," name, or ",[528,1910,965],{}," when it sets none (always for a gate).",[543,1913,1914,1919,1922],{},[558,1915,1916],{},[528,1917,1918],{},"gates",[558,1920,1921],{},"integer",[558,1923,1924],{},"How many of the nodes are gates.",[543,1926,1927,1932,1936],{},[558,1928,1929],{},[528,1930,1931],{},"error",[558,1933,962,1934],{},[528,1935,965],{},[558,1937,1938],{},"Why the chain does not resolve.",[543,1940,1941,1946,1948],{},[558,1942,1943],{},[528,1944,1945],{},"uses",[558,1947,945],{},[558,1949,1950],{},"Per node id, the ids of the library components that node is built from. A node built from none is left out.",[510,1952,665,1953,1955,1956,535],{},[528,1954,1835],{}," as under ",[514,1957,1829],{"href":1958},"#chain-templates",[893,1960,1962],{"id":1961},"get-apitemplateschainsidresolved",[528,1963,645],{},[510,1965,648,1966,652],{},[528,1967,651],{},[537,1969,1970,1980],{},[540,1971,1972],{},[543,1973,1974,1976,1978],{},[546,1975,909],{},[546,1977,912],{},[546,1979,915],{},[553,1981,1982,1992,2004,2017,2028,2041],{},[543,1983,1984,1988,1990],{},[558,1985,1986],{},[528,1987,1869],{},[558,1989,1011],{},[558,1991,1874],{},[543,1993,1994,1999,2001],{},[558,1995,1996],{},[528,1997,1998],{},"chain",[558,2000,945],{},[558,2002,2003],{},"The chain as written plus what it inherited, with no defaults filled in.",[543,2005,2006,2011,2014],{},[558,2007,2008],{},[528,2009,2010],{},"task_paths",[558,2012,2013],{},"list of strings",[558,2015,2016],{},"The canonical path of every task.",[543,2018,2019,2023,2025],{},[558,2020,2021],{},[528,2022,1304],{},[558,2024,945],{},[558,2026,2027],{},"The steering text the chain selects, by profile.",[543,2029,2030,2034,2036],{},[558,2031,2032],{},[528,2033,1895],{},[558,2035,927],{},[558,2037,2038,2039,535],{},"The resolved nodes, as in ",[528,2040,632],{},[543,2042,2043,2048,2050],{},[558,2044,2045],{},[528,2046,2047],{},"documents",[558,2049,945],{},[558,2051,2052,2053,2056],{},"Each gate id mapped to the list of document kinds the execution nodes before it produce, in chain order: what that gate's ",[528,2054,2055],{},"artifact"," can name.",[510,2058,2059,2060,2062,2063,2065,2066,1955,2068,535],{},"It answers ",[528,2061,1528],{}," for an unknown chain and ",[528,2064,1118],{}," for one that does not resolve. Also ",[528,2067,1835],{},[514,2069,1829],{"href":1958},[893,2071,2073],{"id":2072},"get-apitemplateslibrary",[528,2074,662],{},[510,2076,665,2077,2080,2081,2083,2084,2088,2089,1955,2091,535],{},[528,2078,2079],{},"{file, text, components}",": the path of ",[528,2082,668],{},", its text, and every component in it, section by section. See ",[514,2085,2087],{"href":2086},"#the-library-component","The library component",". Also ",[528,2090,1835],{},[514,2092,1829],{"href":1958},[893,2094,2096],{"id":2095},"get-apitemplateslibraryref",[528,2097,679],{},[510,2099,2100,2101,2104,2105,2107,2108,2110,2111,2113,2114,2116,2117,1955,2119,535],{},"Answers one component, shaped as in ",[514,2102,2103],{"href":2086},"the library component",", by its ",[528,2106,1869],{}," or a bare name no other section shares. It answers ",[528,2109,1528],{}," when nothing matches, and ",[528,2112,1359],{}," naming each ",[528,2115,1869],{}," when two sections share the bare name. Also ",[528,2118,1835],{},[514,2120,1829],{"href":1958},[893,2122,2124],{"id":2123},"get-apitemplatessteeringpreview",[528,2125,692],{},[510,2127,2128,2129,2132,2133,2135,2136,1322,2138,1134,2140,2143,2144,535],{},"Answers what the agent task at canonical path ",[528,2130,2131],{},"task"," of chain ",[528,2134,1998],{}," reads at launch in the repository whose ",[528,2137,1045],{},[528,2139,1008],{},[528,2141,2142],{},"repo",", section by section in launch order. Nothing launches. The answer is ",[528,2145,2146],{},"{sections: [{kind, source, text}]}",[537,2148,2149,2158],{},[540,2150,2151],{},[543,2152,2153,2156],{},[546,2154,2155],{},"Query",[546,2157,915],{},[553,2159,2160,2169,2178],{},[543,2161,2162,2166],{},[558,2163,2164],{},[528,2165,1998],{},[558,2167,2168],{},"The chain's id. Required.",[543,2170,2171,2175],{},[558,2172,2173],{},[528,2174,2131],{},[558,2176,2177],{},"The task's canonical path. Required.",[543,2179,2180,2184],{},[558,2181,2182],{},[528,2183,2142],{},[558,2185,2186,2187,1322,2189,2191],{},"The repository's ",[528,2188,1045],{},[528,2190,1008],{},". Required.",[510,2193,2194,2195,535],{},"A missing parameter answers ",[528,2196,1118],{},[510,2198,2199,2202],{},[528,2200,2201],{},"kind"," is one of:",[537,2204,2205,2218],{},[540,2206,2207],{},[543,2208,2209,2213],{},[546,2210,2211],{},[528,2212,2201],{},[546,2214,2215],{},[528,2216,2217],{},"source",[553,2219,2220,2231,2241,2252,2262,2273,2287],{},[543,2221,2222,2227],{},[558,2223,2224],{},[528,2225,2226],{},"contract",[558,2228,2229],{},[528,2230,530],{},[543,2232,2233,2238],{},[558,2234,2235],{},[528,2236,2237],{},"document",[558,2239,2240],{},"The kind it produces.",[543,2242,2243,2248],{},[558,2244,2245],{},[528,2246,2247],{},"review_package",[558,2249,2250],{},[528,2251,530],{},[543,2253,2254,2259],{},[558,2255,2256],{},[528,2257,2258],{},"skill",[558,2260,2261],{},"The skill.",[543,2263,2264,2269],{},[558,2265,2266],{},[528,2267,2268],{},"intent",[558,2270,2186,2271,535],{},[528,2272,1499],{},[543,2274,2275,2279],{},[558,2276,2277],{},[528,2278,1304],{},[558,2280,2281,1322,2284,535],{},[528,2282,2283],{},"repo:\u003Cprofile>",[528,2285,2286],{},"task:\u003Cprofile>",[543,2288,2289,2294],{},[558,2290,2291],{},[528,2292,2293],{},"usage",[558,2295,2296,2298],{},[528,2297,530],{},". Only when the task's harness reports usage as a result file.",[510,2300,2301,2302,2304,2305,1042,2308,1042,2311,1042,2314,2317],{},"There is one ",[528,2303,1304],{}," 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 (",[528,2306,2307],{},"\u003Cwork item id>",[528,2309,2310],{},"\u003Csession id>",[528,2312,2313],{},"\u003Ctitle>",[528,2315,2316],{},"\u003Ctask instruction>",").",[537,2319,2320,2328],{},[540,2321,2322],{},[543,2323,2324,2326],{},[546,2325,1093],{},[546,2327,1096],{},[553,2329,2330,2339,2348],{},[543,2331,2332,2336],{},[558,2333,2334],{},[528,2335,1528],{},[558,2337,2338],{},"The chain, the task or the repository is unknown.",[543,2340,2341,2345],{},[558,2342,2343],{},[528,2344,1118],{},[558,2346,2347],{},"The chain does not resolve, the task is not an agent task, or its harness, skill or steering cannot resolve.",[543,2349,2350,2354],{},[558,2351,2352],{},[528,2353,1835],{},[558,2355,2356,2358,2359,535],{},[528,2357,292],{}," does not load, or the library or a chain does not, as under ",[514,2360,1829],{"href":1958},[888,2362,2087],{"id":2363},"the-library-component",[510,2365,2366,763,2368,2370],{},[528,2367,662],{},[528,2369,679],{}," return components with these fields:",[537,2372,2373,2381],{},[540,2374,2375],{},[543,2376,2377,2379],{},[546,2378,909],{},[546,2380,915],{},[553,2382,2383,2395,2404,2413,2423,2433,2443],{},[543,2384,2385,2389],{},[558,2386,2387],{},[528,2388,1869],{},[558,2390,2391,2392,535],{},"The section and the name, ",[528,2393,2394],{},"tasks.implementer",[543,2396,2397,2401],{},[558,2398,2399],{},[528,2400,2201],{},[558,2402,2403],{},"Its section.",[543,2405,2406,2410],{},[558,2407,2408],{},[528,2409,1045],{},[558,2411,2412],{},"Its name within the section.",[543,2414,2415,2420],{},[558,2416,2417],{},[528,2418,2419],{},"definition",[558,2421,2422],{},"The component as written.",[543,2424,2425,2430],{},[558,2426,2427],{},[528,2428,2429],{},"issues",[558,2431,2432],{},"The lint issues that name it.",[543,2434,2435,2440],{},[558,2436,2437],{},[528,2438,2439],{},"used_by",[558,2441,2442],{},"The ids of the chains that use it.",[543,2444,2445,2450],{},[558,2446,2447],{},[528,2448,2449],{},"used_by_paths",[558,2451,2452,2455],{},[528,2453,2454],{},"[{chain, path, overrides, via?}]",": each component of a chain that extends or selects it. See below.",[510,2457,2458,2459,1042,2461,2463,2464,2467,2468,1042,2470,763,2472,2474,2475,2478,2479,535],{},"In ",[528,2460,2449],{},[528,2462,1008],{}," is that component's canonical path, ",[528,2465,2466],{},"overrides"," is whether it sets any key besides ",[528,2469,1869],{},[528,2471,651],{},[528,2473,2201],{},", and ",[528,2476,2477],{},"via"," is the library node it reaches the chain through, when it sits in that node's own definition. For example, ",[528,2480,2481],{},"{chain: \"default\", path: \"verification.review.code_review\", overrides: false, via: \"verification\"}",[888,2483,2484],{"id":517},"Harnesses",[510,2486,2487,2488,2491],{},"The web UI edits harnesses through a draft (",[528,2489,2490],{},"\u002Fapi\u002Fdrafts\u002Fharnesses\u002F...","). These routes read the published state.",[893,2493,2495],{"id":2494},"get-apiharnessesprofiles",[528,2496,705],{},[510,2498,665,2499,535],{},[528,2500,2501],{},"{profiles, agent_profiles, file, error}",[2503,2504,2505,2519,2529,2566,2577,2599],"ul",{},[2506,2507,2508,2511,2512,2474,2514,2516,2517,535],"li",{},[528,2509,2510],{},"file"," is the path of ",[528,2513,318],{},[528,2515,1931],{}," is why it does not load, else ",[528,2518,965],{},[2506,2520,2521,2522,2525,2526,535],{},"Each entry of ",[528,2523,2524],{},"profiles"," is a harness profile: ",[528,2527,2528],{},"{id, provider, enabled, executable, defaults, used_by, chains}",[2506,2530,2521,2531,2534,2535,1042,2537,1042,2539,1042,2542,1042,2545,2548,2549,2552,2553,2556,2557,1042,2560,763,2563,535],{},[528,2532,2533],{},"agent_profiles"," has ",[528,2536,1869],{},[528,2538,2439],{},[528,2540,2541],{},"chains",[528,2543,2544],{},"effort",[528,2546,2547],{},"model"," (provider to model id), ",[528,2550,2551],{},"providers"," (provider to ",[528,2554,2555],{},"{model, effort}","), ",[528,2558,2559],{},"fallback",[528,2561,2562],{},"problems",[528,2564,2565],{},"problem_details",[2506,2567,2568,2570,2571,2573,2574,2576],{},[528,2569,2544],{}," is the one effort every provider shares, or ",[528,2572,965],{}," when they differ: read ",[528,2575,2551],{}," then.",[2506,2578,2579,2581,2582,2584,2585,2588,2589,1134,2592,1042,2594,1771,2596,2598],{},[528,2580,2562],{}," is the entry's list of messages, and ",[528,2583,2565],{}," the same list as ",[528,2586,2587],{},"{chain, task, profile, provider, field, message}",", where ",[528,2590,2591],{},"field",[528,2593,2547],{},[528,2595,2544],{},[528,2597,965],{}," for a profile that is not defined.",[2506,2600,2601,2602,2604,2605,763,2607,535],{},"Each ",[528,2603,2559],{}," entry has its own ",[528,2606,2562],{},[528,2608,2565],{},[893,2610,2612],{"id":2611},"get-apiharnesses",[528,2613,718],{},[510,2615,2616,2617,2621,2622,1676,2625,2628,2629,2631,2632,535],{},"Answers one entry per ",[514,2618,2620],{"href":2619},"\u002Fconcepts\u002Fvocabulary#provider","provider",": ",[528,2623,2624],{},"{id, label, executable, executable_found, efforts, models, capabilities}",[528,2626,2627],{},"executable_found"," is whether the command is on ",[528,2630,1787],{}," now. There is no ",[528,2633,2634],{},"version",[893,2636,2638],{"id":2637},"get-apiharnessesproviders",[528,2639,731],{},[510,2641,665,2642,2645,2646,763,2649,2651,2652,2655],{},[528,2643,2644],{},"{valid, invalid}",": each provider's capability surface by id, and the providers whose files did not load, with why. A provider also lists ",[528,2647,2648],{},"efforts",[528,2650,1298],{},": the plain-word values it limits that option to, ",[528,2653,2654],{},"[]"," when it takes any string or a pattern.",[888,2657,2659],{"id":2658},"saved-but-not-applied","Saved but not applied",[510,2661,2662,2663,2666],{},"A restart or a reload applies what you saved. The ",[528,2664,2665],{},"apply_changed"," live message says when this list changes.",[893,2668,2670],{"id":2669},"get-apiapply",[528,2671,744],{},[510,2673,2674,2675,2678,2679,2682,2683,2685],{},"Answers what is saved and not running yet: ",[528,2676,2677],{},"{restart: [{id, file, text}], reload: [{id, file, text, problem?}], managed}",". Both lists are empty when nothing is pending. ",[528,2680,2681],{},"managed"," is true when a service manager started this server, the only case ",[528,2684,792],{}," can restart it.",[2503,2687,2688,2710],{},[2506,2689,1319,2690,2693,2694,1322,2697,2621,2700,2702,2703,1322,2706,2709],{},[528,2691,2692],{},"restart"," item is ",[528,2695,2696],{},"access.bind",[528,2698,2699],{},"access.port",[528,2701,322],{}," names an address the server is not bound to. It is left out when ",[528,2704,2705],{},"KRAFT_HOST",[528,2707,2708],{},"KRAFT_PORT"," is set, since the environment wins and a restart would change nothing.",[2506,2711,1319,2712,2693,2715,2718,2719,1042,2721,1042,2724,1322,2726,2728,2729,2732],{},[528,2713,2714],{},"reload",[528,2716,2717],{},"disk:\u003Cfile>"," for ",[528,2720,668],{},[528,2722,2723],{},"chains\u002F*.yaml",[528,2725,310],{},[528,2727,326],{}," whose bytes differ from the ones last loaded. A file rewritten with the same bytes is no change. ",[528,2730,2731],{},"problem"," is the first problem found in the file as it is on disk.",[893,2734,2736],{"id":2735},"post-apiapplyreload",[528,2737,757],{},[510,2739,760,2740,763,2742,2744,2745,2747,2748,2750,2751,2753],{},[528,2741,310],{},[528,2743,326],{}," (and replaces the intake poller), and answers the new ",[528,2746,744],{},". A policy or an ",[528,2749,326],{}," that does not load is refused and stays pending, with its ",[528,2752,2731],{},", and the running one is kept.",[893,2755,2757],{"id":2756},"post-apitemplatesreload",[528,2758,775],{},[510,2760,2761,2762,2764,2765,2768,2769,1676,2771,2774],{},"Does the same as ",[528,2763,757],{},", and answers ",[528,2766,2767],{},"{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 ",[528,2770,965],{},[528,2772,2773],{},"kraft admin reload"," prints them and exits 1 on either refusal.",[893,2776,2778],{"id":2777},"post-apiapplyrestart",[528,2779,792],{},[510,2781,2782,2783,2786,2787,2790,2791,2794,2795,2798],{},"Restarts the server when a service manager started it (the launchd or systemd unit ",[528,2784,2785],{},"kraft admin install-service"," writes). It answers ",[528,2788,2789],{},"202"," with ",[528,2792,2793],{},"{\"restarting\": true}"," and runs ",[528,2796,2797],{},"kraft admin restart"," detached. Nothing restarts the server unless this is called.",[510,2800,2801,2802,2804,2805,2809,2810,2813,2814,1134,2817,2820],{},"The restart ends the agent of every active item, and each stops as failed until it is retried, as ",[528,2803,2797],{}," warns: see ",[514,2806,2808],{"href":2807},"\u002Fguides\u002Frun\u002Frestart-kraft#a-restart-ends-running-agents","A restart ends running agents",". The web UI counts the active items from ",[528,2811,2812],{},"GET \u002Fapi\u002Fwork-items"," (the rows whose ",[528,2815,2816],{},"status",[528,2818,2819],{},"active",") and shows the number in its confirmation.",[537,2822,2823,2831],{},[540,2824,2825],{},[543,2826,2827,2829],{},[546,2828,1093],{},[546,2830,1096],{},[553,2832,2833,2845],{},[543,2834,2835,2839],{},[558,2836,2837],{},[528,2838,1359],{},[558,2840,2841,2842,535],{},"The server was started from a terminal. The answer is ",[528,2843,2844],{},"{\"detail\": \"started from a terminal: restart it there\"}",[543,2846,2847,2852],{},[558,2848,2849],{},[528,2850,2851],{},"500",[558,2853,2854],{},"The restart could not start.",[888,2856,2858],{"id":2857},"update-check","Update check",[893,2860,2862],{"id":2861},"get-apiupdate",[528,2863,805],{},[510,2865,665,2866,2869,2870,2873,2874,1676,2877,2880,2881,1042,2884,1042,2887,763,2890,2893,2894,2896],{},[528,2867,2868],{},"{installed, latest, channel, python, behind, checked_at}"," from the daily cached check. ",[528,2871,2872],{},"python"," is the interpreter the server runs on, as ",[528,2875,2876],{},"3.14",[528,2878,2879],{},"?channel="," is one of ",[528,2882,2883],{},"stable",[528,2885,2886],{},"rc",[528,2888,2889],{},"beta",[528,2891,2892],{},"alpha"," (",[528,2895,1105],{}," otherwise) and defaults to the installed version's own. It is not stored.",[510,2898,2899,2900,763,2903,2906,2907,2909,2910,2913,2914,2916,2917,1134,2919,2921,2922,2925],{},"When the feed cannot be reached, ",[528,2901,2902],{},"latest",[528,2904,2905],{},"behind"," are ",[528,2908,965],{},": unknown, not \"up to date\". ",[528,2911,2912],{},"checked_at"," is the time of the last check that succeeded on that channel (",[528,2915,965],{}," when there has been none), so it can be old while ",[528,2918,2902],{},[528,2920,965],{},". Installing the update is ",[528,2923,2924],{},"kraft admin update","; the server never does it.",[893,2927,2929],{"id":2928},"post-apiupdatecheck",[528,2930,818],{},[510,2932,2933,2934,2936,2937,535],{},"Skips the cache, asks the release feed now, and answers the same shape as ",[528,2935,805],{},". It takes the same ",[528,2938,2879],{},[888,2940,2942],{"id":2941},"editors","Editors",[510,2944,2945,2946,535],{},"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 ",[528,2947,2948],{},"403",[893,2950,2952],{"id":2951},"get-apieditors",[528,2953,831],{},[510,2955,665,2956,535],{},[528,2957,2958],{},"{available, system, default}",[2503,2960,2961,2992,3005],{},[2506,2962,2963,2966,2967,1042,2969,1042,2972,1042,2975,2978,2979,2981,2982,1322,2985,2988,2989,2317],{},[528,2964,2965],{},"available"," lists the editors (",[528,2968,528],{},[528,2970,2971],{},"cursor",[528,2973,2974],{},"zed",[528,2976,2977],{},"obsidian",") whose executable this server's machine has on its ",[528,2980,1787],{},", or, on macOS, whose app is installed in ",[528,2983,2984],{},"\u002FApplications",[528,2986,2987],{},"~\u002FApplications"," (it is then opened with ",[528,2990,2991],{},"open -a",[2506,2993,2994,2997,2998,1042,3001,3004],{},[528,2995,2996],{},"system"," says whether the system opener (",[528,2999,3000],{},"open",[528,3002,3003],{},"xdg-open",") is there.",[2506,3006,3007,1134,3009,3012,3013,3015,3016,3015,3019,535],{},[528,3008,1215],{},[528,3010,3011],{},"editor"," from ",[528,3014,334],{},", else ",[528,3017,3018],{},"KRAFT_EDITOR",[528,3020,965],{},[893,3022,3024],{"id":3023},"post-apidocumentsidopen",[528,3025,844],{},[510,3027,3028],{},"Opens an indexed document, by its absolute path, in an editor.",[537,3030,3031,3043],{},[540,3032,3033],{},[543,3034,3035,3037,3039,3041],{},[546,3036,909],{},[546,3038,912],{},[546,3040,997],{},[546,3042,915],{},[553,3044,3045],{},[543,3046,3047,3051,3055,3059],{},[558,3048,3049],{},[528,3050,3011],{},[558,3052,962,3053],{},[528,3054,965],{},[558,3056,3057],{},[528,3058,965],{},[558,3060,3061,3062,1042,3064,3067,3068,3070,3071,3073],{},"A name from ",[528,3063,2965],{},[528,3065,3066],{},"\"system\""," for the system opener, or ",[528,3069,965],{}," for the ",[528,3072,1215],{}," above, else the system opener.",[510,3075,3076,3077,535],{},"The answer is ",[528,3078,3079],{},"{document_id, path, editor}",[537,3081,3082,3090],{},[540,3083,3084],{},[543,3085,3086,3088],{},[546,3087,1093],{},[546,3089,1096],{},[553,3091,3092,3103,3112,3121,3130],{},[543,3093,3094,3098],{},[558,3095,3096],{},[528,3097,1105],{},[558,3099,3100,3102],{},[528,3101,3011],{}," is not a known editor name, or the document's path leaves its repo.",[543,3104,3105,3109],{},[558,3106,3107],{},[528,3108,2948],{},[558,3110,3111],{},"The caller is not on the server's own machine. It is checked first.",[543,3113,3114,3118],{},[558,3115,3116],{},[528,3117,1528],{},[558,3119,3120],{},"There is no such document, or an attachment's file is not found.",[543,3122,3123,3127],{},[558,3124,3125],{},[528,3126,1359],{},[558,3128,3129],{},"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.",[543,3131,3132,3137],{},[558,3133,3134],{},[528,3135,3136],{},"501",[558,3138,3139],{},"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.",[893,3141,3143],{"id":3142},"post-apiwork-itemsidartifactopen",[528,3144,857],{},[510,3146,3147,3148,1676,3152,3155,3156,3159,3160,535],{},"Opens the pending gate's document in the item's ",[514,3149,3151],{"href":3150},"\u002Fconcepts\u002Fvocabulary#worktree","worktree",[528,3153,3154],{},"GET \u002Fapi\u002Fwork-items\u002F{id}\u002Fartifact"," carries its ",[528,3157,3158],{},"absolute_path",". The answer is ",[528,3161,3162],{},"{work_item_id, path, editor}",[537,3164,3165,3177],{},[540,3166,3167],{},[543,3168,3169,3171,3173,3175],{},[546,3170,909],{},[546,3172,912],{},[546,3174,997],{},[546,3176,915],{},[553,3178,3179],{},[543,3180,3181,3185,3189,3193],{},[558,3182,3183],{},[528,3184,3011],{},[558,3186,962,3187],{},[528,3188,965],{},[558,3190,3191],{},[528,3192,965],{},[558,3194,3195,3196,535],{},"As for ",[514,3197,3198],{"href":841},[528,3199,844],{},[537,3201,3202,3210],{},[540,3203,3204],{},[543,3205,3206,3208],{},[546,3207,1093],{},[546,3209,1096],{},[553,3211,3212,3223,3231,3240],{},[543,3213,3214,3218],{},[558,3215,3216],{},[528,3217,1105],{},[558,3219,3220,3222],{},[528,3221,3011],{}," is not a known editor name.",[543,3224,3225,3229],{},[558,3226,3227],{},[528,3228,2948],{},[558,3230,3111],{},[543,3232,3233,3237],{},[558,3234,3235],{},[528,3236,1528],{},[558,3238,3239],{},"There is no such item, or the gate has no artifact.",[543,3241,3242,3246],{},[558,3243,3244],{},[528,3245,3136],{},[558,3247,3248],{},"Nothing on the server can open a window, or the editor you named is not installed.",[893,3250,3252],{"id":3251},"post-apiwork-itemsidartifactskindopen",[528,3253,870],{},[510,3255,3256,3257,535],{},"Opens a task's document of that kind in the item's worktree. The answer is ",[528,3258,3162],{},[537,3260,3261,3273],{},[540,3262,3263],{},[543,3264,3265,3267,3269,3271],{},[546,3266,909],{},[546,3268,912],{},[546,3270,997],{},[546,3272,915],{},[553,3274,3275],{},[543,3276,3277,3281,3285,3289],{},[558,3278,3279],{},[528,3280,3011],{},[558,3282,962,3283],{},[528,3284,965],{},[558,3286,3287],{},[528,3288,965],{},[558,3290,3195,3291,535],{},[514,3292,3293],{"href":841},[528,3294,844],{},[537,3296,3297,3305],{},[540,3298,3299],{},[543,3300,3301,3303],{},[546,3302,1093],{},[546,3304,1096],{},[553,3306,3307,3317,3325,3334],{},[543,3308,3309,3313],{},[558,3310,3311],{},[528,3312,1105],{},[558,3314,3315,3222],{},[528,3316,3011],{},[543,3318,3319,3323],{},[558,3320,3321],{},[528,3322,2948],{},[558,3324,3111],{},[543,3326,3327,3331],{},[558,3328,3329],{},[528,3330,1528],{},[558,3332,3333],{},"There is no such item, or it has no such document there.",[543,3335,3336,3340],{},[558,3337,3338],{},[528,3339,3136],{},[558,3341,3248],{},[893,3343,3345],{"id":3344},"post-apiwork-itemsidopen-worktree",[528,3346,883],{},[510,3348,3349,3350,535],{},"Opens the item's worktree directory. The answer is ",[528,3351,3352],{},"{path, editor}",[537,3354,3355,3367],{},[540,3356,3357],{},[543,3358,3359,3361,3363,3365],{},[546,3360,909],{},[546,3362,912],{},[546,3364,997],{},[546,3366,915],{},[553,3368,3369],{},[543,3370,3371,3375,3379,3383],{},[558,3372,3373],{},[528,3374,3011],{},[558,3376,962,3377],{},[528,3378,965],{},[558,3380,3381],{},[528,3382,965],{},[558,3384,3195,3385,535],{},[514,3386,3387],{"href":841},[528,3388,844],{},[510,3390,3391],{},"This route checks the item and its worktree before it checks the caller.",[537,3393,3394,3402],{},[540,3395,3396],{},[543,3397,3398,3400],{},[546,3399,1093],{},[546,3401,1096],{},[553,3403,3404,3414,3425,3434],{},[543,3405,3406,3410],{},[558,3407,3408],{},[528,3409,1105],{},[558,3411,3412,3222],{},[528,3413,3011],{},[543,3415,3416,3420],{},[558,3417,3418],{},[528,3419,2948],{},[558,3421,3422,3423,535],{},"The caller is not on the server's own machine. It is checked after the ",[528,3424,1528],{},[543,3426,3427,3431],{},[558,3428,3429],{},[528,3430,1528],{},[558,3432,3433],{},"There is no such item, or it has no worktree on disk, even for a caller that is not local.",[543,3435,3436,3440],{},[558,3437,3438],{},[528,3439,3136],{},[558,3441,3248],{},[888,3443,3445],{"id":3444},"related","Related",[2503,3447,3448,3453,3460,3469],{},[2506,3449,3450,3452],{},[514,3451,454],{"href":455},": the routes the Templates and Settings editors use to change what the read routes here answer.",[2506,3454,3455,3459],{},[514,3456,3457],{"href":293},[528,3458,292],{},": the fields of the repo entry that connecting and changing a repo write.",[2506,3461,3462,3464,3465,3468],{},[514,3463,274],{"href":275},": the ",[528,3466,3467],{},"kraft repo"," commands that call the repo routes.",[2506,3470,3471,763,3473,3475],{},[514,3472,434],{"href":435},[514,3474,438],{"href":439},": the routes for a work item, whose editors routes are here.",{"title":3477,"searchDepth":3478,"depth":3478,"links":3479},"",2,[3480,3493,3494,3506,3507,3515,3525,3531,3543],{"id":890,"depth":3478,"text":891,"children":3481},[3482,3485,3487,3489,3491],{"id":895,"depth":3483,"text":3484},3,"GET \u002Fapi\u002F​repos",{"id":974,"depth":3483,"text":3486},"POST \u002Fapi\u002F​repos\u002F​probe",{"id":1144,"depth":3483,"text":3488},"POST \u002Fapi\u002F​repos",{"id":1381,"depth":3483,"text":3490},"PATCH \u002Fapi\u002F​repos?​path=",{"id":1569,"depth":3483,"text":3492},"DELETE \u002Fapi\u002F​repos?​path=",{"id":1634,"depth":3478,"text":983},{"id":1828,"depth":3478,"text":1829,"children":3495},[3496,3498,3500,3502,3504],{"id":1843,"depth":3483,"text":3497},"GET \u002Fapi\u002F​templates\u002F​chains",{"id":1961,"depth":3483,"text":3499},"GET \u002Fapi\u002F​templates\u002F​chains\u002F​{id}\u002F​resolved",{"id":2072,"depth":3483,"text":3501},"GET \u002Fapi\u002F​templates\u002F​library",{"id":2095,"depth":3483,"text":3503},"GET \u002Fapi\u002F​templates\u002F​library\u002F​{ref}",{"id":2123,"depth":3483,"text":3505},"GET \u002Fapi\u002F​templates\u002F​steering\u002F​preview",{"id":2363,"depth":3478,"text":2087},{"id":517,"depth":3478,"text":2484,"children":3508},[3509,3511,3513],{"id":2494,"depth":3483,"text":3510},"GET \u002Fapi\u002F​harnesses\u002F​profiles",{"id":2611,"depth":3483,"text":3512},"GET \u002Fapi\u002F​harnesses",{"id":2637,"depth":3483,"text":3514},"GET \u002Fapi\u002F​harnesses\u002F​providers",{"id":2658,"depth":3478,"text":2659,"children":3516},[3517,3519,3521,3523],{"id":2669,"depth":3483,"text":3518},"GET \u002Fapi\u002F​apply",{"id":2735,"depth":3483,"text":3520},"POST \u002Fapi\u002F​apply\u002F​reload",{"id":2756,"depth":3483,"text":3522},"POST \u002Fapi\u002F​templates\u002F​reload",{"id":2777,"depth":3483,"text":3524},"POST \u002Fapi\u002F​apply\u002F​restart",{"id":2857,"depth":3478,"text":2858,"children":3526},[3527,3529],{"id":2861,"depth":3483,"text":3528},"GET \u002Fapi\u002F​update",{"id":2928,"depth":3483,"text":3530},"POST \u002Fapi\u002F​update\u002F​check",{"id":2941,"depth":3478,"text":2942,"children":3532},[3533,3535,3537,3539,3541],{"id":2951,"depth":3483,"text":3534},"GET \u002Fapi\u002F​editors",{"id":3023,"depth":3483,"text":3536},"POST \u002Fapi\u002F​documents\u002F​{id}\u002F​open",{"id":3142,"depth":3483,"text":3538},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​artifact\u002F​open",{"id":3251,"depth":3483,"text":3540},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​artifacts\u002F​{kind}\u002F​open",{"id":3344,"depth":3483,"text":3542},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​open-​worktree",{"id":3444,"depth":3478,"text":3445},"The board's routes for connecting a repo, reading chain templates and harnesses, applying saved changes, checking for updates and opening editors.","md",null,{},true,{"title":450,"description":3544},"IOWqNgs3DWIX0Va4kdmgX8VJgkqisZqTnUeXojm6DDk",[3552,3554],{"title":446,"path":447,"stem":448,"description":3553,"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":454,"path":455,"stem":456,"description":3555,"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.",1791801260497]