[{"data":1,"prerenderedAt":1405},["ShallowReactive",2],{"navigation_docs":3,"-reference-cli-repo":520,"-reference-cli-repo-surround":1400},[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":282,"body":522,"description":1393,"extension":1394,"links":1395,"meta":1396,"navigation":1397,"path":283,"seo":1398,"stem":284,"__hash__":1399},"docs\u002F5.reference\u002F01.cli\u002F4.repo.md",{"type":523,"value":524,"toc":1381},"minimark",[525,539,728,873,881,923,943,947,961,1095,1110,1114,1123,1126,1136,1143,1155,1159,1162,1171,1174,1188,1195,1198,1210,1254,1260,1271,1327,1342,1346,1377],[526,527,528,532,533,538],"p",{},[529,530,531],"code",{},"kraft repo"," manages the repositories Kraft works in and their ",[534,535,537],"a",{"href":536},"\u002Fconcepts\u002Fvocabulary#worktree","worktrees",".",[540,541,546],"pre",{"className":542,"code":543,"language":544,"meta":545,"style":545},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","kraft repo list\nkraft repo connect\nkraft repo connect --verify\nkraft repo connect --test-command \"make check\" --setup-command \".\u002Fconfigure\"\nkraft repo disconnect\nkraft repo library\nkraft repo library --check\ncd \"$(kraft repo path \u003Cid>)\"\nkraft repo path --shell\nkraft repo open \u003Cid>\nkraft repo open \u003Cid> --editor cursor\n","bash","",[529,547,548,564,574,588,609,619,629,642,669,682,705],{"__ignoreMap":545},[549,550,553,557,561],"span",{"class":551,"line":552},"line",1,[549,554,556],{"class":555},"szw1H","kraft",[549,558,560],{"class":559},"semJd"," repo",[549,562,563],{"class":559}," list\n",[549,565,567,569,571],{"class":551,"line":566},2,[549,568,556],{"class":555},[549,570,560],{"class":559},[549,572,573],{"class":559}," connect\n",[549,575,577,579,581,584],{"class":551,"line":576},3,[549,578,556],{"class":555},[549,580,560],{"class":559},[549,582,583],{"class":559}," connect",[549,585,587],{"class":586},"ssYy9"," --verify\n",[549,589,591,593,595,597,600,603,606],{"class":551,"line":590},4,[549,592,556],{"class":555},[549,594,560],{"class":559},[549,596,583],{"class":559},[549,598,599],{"class":586}," --test-command",[549,601,602],{"class":559}," \"make check\"",[549,604,605],{"class":586}," --setup-command",[549,607,608],{"class":559}," \".\u002Fconfigure\"\n",[549,610,612,614,616],{"class":551,"line":611},5,[549,613,556],{"class":555},[549,615,560],{"class":559},[549,617,618],{"class":559}," disconnect\n",[549,620,622,624,626],{"class":551,"line":621},6,[549,623,556],{"class":555},[549,625,560],{"class":559},[549,627,628],{"class":559}," library\n",[549,630,632,634,636,639],{"class":551,"line":631},7,[549,633,556],{"class":555},[549,635,560],{"class":559},[549,637,638],{"class":559}," library",[549,640,641],{"class":586}," --check\n",[549,643,645,648,651,653,656,660,663,666],{"class":551,"line":644},8,[549,646,647],{"class":586},"cd",[549,649,650],{"class":559}," \"$(",[549,652,556],{"class":555},[549,654,655],{"class":559}," repo path ",[549,657,659],{"class":658},"sklAV","\u003C",[549,661,662],{"class":559},"id",[549,664,665],{"class":658},">",[549,667,668],{"class":559},")\"\n",[549,670,672,674,676,679],{"class":551,"line":671},9,[549,673,556],{"class":555},[549,675,560],{"class":559},[549,677,678],{"class":559}," path",[549,680,681],{"class":586}," --shell\n",[549,683,685,687,689,692,695,698,702],{"class":551,"line":684},10,[549,686,556],{"class":555},[549,688,560],{"class":559},[549,690,691],{"class":559}," open",[549,693,694],{"class":658}," \u003C",[549,696,697],{"class":559},"i",[549,699,701],{"class":700},"s7iLA","d",[549,703,704],{"class":658},">\n",[549,706,708,710,712,714,716,718,720,722,725],{"class":551,"line":707},11,[549,709,556],{"class":555},[549,711,560],{"class":559},[549,713,691],{"class":559},[549,715,694],{"class":658},[549,717,697],{"class":559},[549,719,701],{"class":700},[549,721,665],{"class":658},[549,723,724],{"class":586}," --editor",[549,726,727],{"class":559}," cursor\n",[729,730,731,744],"table",{},[732,733,734],"thead",{},[735,736,737,741],"tr",{},[738,739,740],"th",{},"Command",[738,742,743],{},"Effect",[745,746,747,766,780,794,812,833],"tbody",{},[735,748,749,755],{},[750,751,752],"td",{},[529,753,754],{},"repo list",[750,756,757,758,761,762,765],{},"The connected repos. ",[529,759,760],{},"*"," marks the one you are in. ",[529,763,764],{},"--all"," also lists auto-connected repos nobody has touched yet.",[735,767,768,773],{},[750,769,770],{},[529,771,772],{},"repo connect [PATH]",[750,774,775,776,538],{},"Connects a repo (safe to repeat). See ",[534,777,779],{"href":778},"#connect-a-repo","Connect a repo",[735,781,782,787],{},[750,783,784],{},[529,785,786],{},"repo disconnect [PATH]",[750,788,789,790,538],{},"Forgets the repo. Refused (exit 1) while it has an item that has not ended. See ",[534,791,793],{"href":792},"#disconnect-a-repo","Disconnect a repo",[735,795,796,801],{},[750,797,798],{},[529,799,800],{},"repo library [PATH]",[750,802,803,804,807,808,538],{},"Reviews the repo's ",[529,805,806],{},".kraft\u002F"," library on its default branch, and takes it. See ",[534,809,811],{"href":810},"#take-a-repos-library","Take a repo's library",[735,813,814,819],{},[750,815,816],{},[529,817,818],{},"repo path [ID]",[750,820,821,822,825,826,829,830,832],{},"Prints the item's worktree path. ",[529,823,824],{},"repo cd"," is an alias. ",[529,827,828],{},"--shell"," prints a shell function that does the ",[529,831,647],{}," for you.",[735,834,835,840],{},[750,836,837],{},[529,838,839],{},"repo open [ID]",[750,841,842,843,846,847,849,850,849,853,849,856,859,860,863,864,868,869,872],{},"Opens the worktree in an editor. ",[529,844,845],{},"--editor"," picks ",[529,848,529],{},", ",[529,851,852],{},"cursor",[529,854,855],{},"zed",[529,857,858],{},"obsidian"," or ",[529,861,862],{},"system"," (the OS opener). With none named, it is the ",[865,866,867],"strong",{},"Default editor"," in Settings, else ",[529,870,871],{},"KRAFT_EDITOR",", else the OS opener.",[874,875,877,878,880],"h3",{"id":876},"what-repo-list-prints","What ",[529,879,754],{}," prints",[526,882,883,885,886,849,889,849,892,895,896,899,900,902,903,905,906,859,909,912,913,915,916,919,920,922],{},[529,884,754],{}," prints a table with the columns ",[529,887,888],{},"NAME",[529,890,891],{},"STATE",[529,893,894],{},"CHAIN"," and ",[529,897,898],{},"PATH",". The first column holds ",[529,901,760],{}," for the repo you are in. ",[529,904,891],{}," is ",[529,907,908],{},"enabled",[529,910,911],{},"disabled",", and ",[529,914,894],{}," is the repo's ",[529,917,918],{},"default_chain",". A line after the table counts the repos left out, and names ",[529,921,764],{},", when it hides any.",[540,924,929],{"className":925,"code":927,"language":928,"meta":545},[926],"language-text","   NAME  STATE    CHAIN       PATH\n*  app   enabled  default     \u002FUsers\u002Fyou\u002Fcode\u002Fapp\n   api   enabled  quick-task  \u002FUsers\u002Fyou\u002Fcode\u002Fapi\n","text",[529,930,931,935,939],{"__ignoreMap":545},[549,932,934],{"className":933},[551],"   NAME  STATE    CHAIN       PATH\n",[549,936,938],{"className":937},[551],"*  app   enabled  default     \u002FUsers\u002Fyou\u002Fcode\u002Fapp\n",[549,940,942],{"className":941},[551],"   api   enabled  quick-task  \u002FUsers\u002Fyou\u002Fcode\u002Fapi\n",[944,945,779],"h2",{"id":946},"connect-a-repo",[526,948,949,952,953,955,956,849,958,960],{},[529,950,951],{},"kraft repo connect [PATH]"," connects the repo at ",[529,954,898],{},", by default the current directory. A relative ",[529,957,898],{},[529,959,538],{}," included, is read from where you stand. A repo with no commit yet is refused: commit its files first.",[729,962,963,973],{},[732,964,965],{},[735,966,967,970],{},[738,968,969],{},"Flag",[738,971,972],{},"What it does",[745,974,975,988,1002,1014,1032,1046,1062,1079],{},[735,976,977,985],{},[750,978,979,849,982],{},[529,980,981],{},"-y",[529,983,984],{},"--yes",[750,986,987],{},"Takes the proposal without asking, even in a terminal.",[735,989,990,995],{},[750,991,992],{},[529,993,994],{},"--test-command CMD",[750,996,997,998,1001],{},"Replaces the proposed test command (",[529,999,1000],{},"\"\""," for none).",[735,1003,1004,1009],{},[750,1005,1006],{},[529,1007,1008],{},"--setup-command CMD",[750,1010,1011,1012,1001],{},"Replaces the proposed setup command (",[529,1013,1000],{},[735,1015,1016,1021],{},[750,1017,1018],{},[529,1019,1020],{},"--no-tests",[750,1022,1023,1024,1028,1029,538],{},"Declares a repo with no tests, and saves it enabled: its ",[534,1025,1027],{"href":1026},"\u002Fconcepts\u002Fvocabulary#work-item","work items"," pass verification without running a test. Cannot be combined with ",[529,1030,1031],{},"--test-command",[735,1033,1034,1039],{},[750,1035,1036],{},[529,1037,1038],{},"--verify",[750,1040,1041,1042,538],{},"After connecting, runs the setup and test commands once. See ",[534,1043,1045],{"href":1044},"#verify-a-repos-commands","Verify a repo's commands",[735,1047,1048,1053],{},[750,1049,1050],{},[529,1051,1052],{},"--timeout MIN",[750,1054,1055,1056,1058,1059,538],{},"With ",[529,1057,1038],{},", the minutes each command may take. Default ",[529,1060,1061],{},"30",[735,1063,1064,1069],{},[750,1065,1066],{},[529,1067,1068],{},"--on-host",[750,1070,1055,1071,1073,1074,1078],{},[529,1072,1038],{},", runs a ",[534,1075,1077],{"href":1076},"\u002Fconcepts\u002Fvocabulary#sandbox","sandboxed"," repo's commands on this machine.",[735,1080,1081,1086],{},[750,1082,1083],{},[529,1084,1085],{},"--json",[750,1087,1088,1089,1091,1092,538],{},"Prints the answer as JSON. With ",[529,1090,1038],{},", its lines are in ",[529,1093,1094],{},"verify.output",[526,1096,1055,1097,1099,1100,1103,1104,1106,1107,1109],{},[529,1098,1020],{},", and nothing found to prepare either, ",[529,1101,1102],{},"setup_command"," is saved as ",[529,1105,1000],{}," too. Nested and area scopes still run. ",[534,1108,306],{"href":307}," has the rest.",[874,1111,1113],{"id":1112},"what-connect-proposes","What connect proposes",[526,1115,1116,1119,1120,1122],{},[529,1117,1118],{},"repo connect"," proposes a setup command and a test command from the repo's task runner, CI and lockfiles (",[534,1121,306],{"href":307},"). It prints each with the file it came from, lists what else it found, and says when it found none. In a terminal it asks which candidate to use.",[874,1124,1045],{"id":1125},"verify-a-repos-commands",[526,1127,1128,1130,1131,1135],{},[529,1129,1038],{}," runs the setup command, then each test command, in a throwaway worktree of the commit a work item starts from. It runs them as a work item would, with a ",[534,1132,1134],{"href":1133},"\u002Fconcepts\u002Fvocabulary#worker","worker","'s environment.",[526,1137,1138,1139,1142],{},"It exits 1 when a command fails, when one runs past ",[529,1140,1141],{},"--timeout"," minutes, or when a command leaves files a work item would commit.",[526,1144,1145,1146,1148,1149,1151,1152,538],{},"A sandboxed repo's commands run in its sandbox when a work item runs them, so ",[529,1147,1038],{}," refuses the repo unless you pass ",[529,1150,1068],{},". It prints ",[529,1153,1154],{},"verify: this repo runs sandboxed, and --verify would run its commands on this machine instead; pass --on-host to do that anyway",[874,1156,1158],{"id":1157},"connecting-a-repo-that-is-already-connected","Connecting a repo that is already connected",[526,1160,1161],{},"On a repo already connected, connect probes again for what its entry leaves undecided: a test command where it has none and no test scopes, and a setup command where none is declared. It says what it found and saves only that, after a yes in a terminal. A repo saved disabled for want of a test command is enabled once it has one.",[526,1163,1164,1165,1167,1168,1170],{},"Anything already decided stays as it is: change it in ",[529,1166,300],{},". ",[529,1169,1038],{}," rehearses what it then declares.",[944,1172,793],{"id":1173},"disconnect-a-repo",[526,1175,1176,1177,849,1180,1183,1184,1187],{},"Refused (exit 1) while the repo has an item that has not ended, paused and never-started ones included: complete, cancel or abandon them first (",[529,1178,1179],{},"kraft item complete",[529,1181,1182],{},"cancel",", or ",[529,1185,1186],{},"abandon --yes","). Ended items are untouched, and no file in the repo is.",[526,1189,1190,1191,1194],{},"A repo whose ",[534,1192,1193],{"href":389},"repo library"," is accepted is also refused while local configuration names its namespace. The message lists each reference. Disconnecting drops the library's lock entry.",[944,1196,811],{"id":1197},"take-a-repos-library",[526,1199,1200,1203,1204,1206,1207,1209],{},[529,1201,1202],{},"kraft repo library [PATH]"," asks the remote of the repo at ",[529,1205,898],{},", by default the current directory, for its ",[534,1208,1193],{"href":389},", prints the review, and in a terminal asks whether to take it. A worker is refused.",[729,1211,1212,1220],{},[732,1213,1214],{},[735,1215,1216,1218],{},[738,1217,969],{},[738,1219,972],{},[745,1221,1222,1233,1243],{},[735,1223,1224,1230],{},[750,1225,1226,849,1228],{},[529,1227,981],{},[529,1229,984],{},[750,1231,1232],{},"Takes a waiting library without asking.",[735,1234,1235,1240],{},[750,1236,1237],{},[529,1238,1239],{},"--check",[750,1241,1242],{},"Prints the review and takes nothing. The exit code says what was found.",[735,1244,1245,1249],{},[750,1246,1247],{},[529,1248,1085],{},[750,1250,1088,1251,1253],{},[529,1252,981],{},", it takes a waiting library first.",[526,1255,1256,1257,1259],{},"With no terminal and no ",[529,1258,981],{},", it prints the review and takes nothing.",[526,1261,1262,1263,1266,1267,538],{},"After a first load taken at the prompt, it asks once whether to take later changes to prompts, skills and steering without asking. A yes sets ",[529,1264,1265],{},"library_auto_update: true"," on the repo's entry. See ",[534,1268,1270],{"href":1269},"\u002Freference\u002Fconfiguration\u002Frepo-libraries#automatic-updates","Automatic updates",[729,1272,1273,1285],{},[732,1274,1275],{},[735,1276,1277,1282],{},[738,1278,1279,1281],{},[529,1280,1239],{}," exit code",[738,1283,1284],{},"Meaning",[745,1286,1287,1297,1307,1317],{},[735,1288,1289,1294],{},[750,1290,1291],{},[529,1292,1293],{},"0",[750,1295,1296],{},"The accepted library is current, or the remote has none.",[735,1298,1299,1304],{},[750,1300,1301],{},[529,1302,1303],{},"1",[750,1305,1306],{},"A first load or a change is waiting.",[735,1308,1309,1314],{},[750,1310,1311],{},[529,1312,1313],{},"2",[750,1315,1316],{},"The remote's library would be refused. The review names why.",[735,1318,1319,1324],{},[750,1320,1321],{},[529,1322,1323],{},"3",[750,1325,1326],{},"The remote could not be checked: the network or its credentials.",[526,1328,1329,1332,1333,849,1335,1337,1338,1341],{},[529,1330,1331],{},"kraft repo connect"," also shows the library after it connects a repo, and asks in a terminal. ",[529,1334,981],{},[529,1336,1085],{}," and a connect with no terminal never take it: they say to run ",[529,1339,1340],{},"kraft repo library",". A library that cannot be checked never fails the connect.",[944,1343,1345],{"id":1344},"related","Related",[1347,1348,1349,1367,1372],"ul",{},[1350,1351,1352,1354,1355,849,1357,895,1360,1363,1364,1366],"li",{},[534,1353,300],{"href":301},": each repo's settings, such as ",[529,1356,1102],{},[529,1358,1359],{},"env",[529,1361,1362],{},"test_scopes",". Past connecting, you edit them in Settings › Repos or in ",[529,1365,300],{},", not with the CLI.",[1350,1368,1369,1371],{},[534,1370,306],{"href":307},": where the proposed setup and test commands come from.",[1350,1373,1374,1376],{},[534,1375,274],{"href":275},": file work in a repo you connected.",[1378,1379,1380],"style",{},"html pre.shiki code .szw1H, html code.shiki .szw1H{--shiki-light:#702C00;--shiki-default:#702C00;--shiki-dark:#FFB757}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 pre.shiki code .sklAV, html code.shiki .sklAV{--shiki-light:#A0111F;--shiki-default:#A0111F;--shiki-dark:#FF9492}html pre.shiki code .s7iLA, html code.shiki .s7iLA{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6}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":545,"searchDepth":566,"depth":566,"links":1382},[1383,1385,1390,1391,1392],{"id":876,"depth":576,"text":1384},"What repo list prints",{"id":946,"depth":566,"text":779,"children":1386},[1387,1388,1389],{"id":1112,"depth":576,"text":1113},{"id":1125,"depth":576,"text":1045},{"id":1157,"depth":576,"text":1158},{"id":1173,"depth":566,"text":793},{"id":1197,"depth":566,"text":811},{"id":1344,"depth":566,"text":1345},"The kraft repo verbs: list, connect, and disconnect repositories, review and take a repo's library, and reach their worktrees.","md",null,{},true,{"title":282,"description":1393},"LxpwwoPSs3vGWRjoy5kTAQ1x0326yb16I3jUn8v80KI",[1401,1403],{"title":278,"path":279,"stem":280,"description":1402,"children":-1},"The kraft view verbs: read the board, follow a running item, and review its diff and documents.",{"title":286,"path":287,"stem":288,"description":1404,"children":-1},"The kraft admin verbs: start, stop, check, update, and configure this machine's server.",1791801173559]