[{"data":1,"prerenderedAt":2759},["ShallowReactive",2],{"navigation_docs":3,"-reference-console":551,"-reference-console-surround":2754},[4,32,55,206,237,516],{"title":5,"path":6,"stem":7,"children":8},"Get started","\u002Fget-started","1.get-started",[9,12,16,20,24,28],{"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},"The real chain","\u002Fget-started\u002Fthe-real-chain","1.get-started\u002F3.the-real-chain",{"title":29,"path":30,"stem":31},"FAQ","\u002Fget-started\u002Ffaq","1.get-started\u002F4.faq",{"title":33,"path":34,"stem":35,"children":36},"Concepts","\u002Fconcepts","2.concepts",[37,39,43,47,51],{"title":10,"path":34,"stem":38},"2.concepts\u002Findex",{"title":40,"path":41,"stem":42},"How a work item runs","\u002Fconcepts\u002Fhow-a-work-item-runs","2.concepts\u002F1.how-a-work-item-runs",{"title":44,"path":45,"stem":46},"Caps and budgets","\u002Fconcepts\u002Fcaps-and-budgets","2.concepts\u002F2.caps-and-budgets",{"title":48,"path":49,"stem":50},"Why a permission gate","\u002Fconcepts\u002Fpermission-gate","2.concepts\u002F3.permission-gate",{"title":52,"path":53,"stem":54},"Vocabulary","\u002Fconcepts\u002Fvocabulary","2.concepts\u002F4.vocabulary",{"title":56,"path":57,"stem":58,"children":59},"Guides","\u002Fguides","3.guides",[60,62,100,126,148,202],{"title":10,"path":57,"stem":61},"3.guides\u002Findex",{"title":63,"path":64,"stem":65,"children":66},"Day to day","\u002Fguides\u002Fday-to-day","3.guides\u002F1.day-to-day\u002Findex",[67,68,72,76,80,84,88,92,96],{"title":10,"path":64,"stem":65},{"title":69,"path":70,"stem":71},"The setup wizard on first start","\u002Fguides\u002Fday-to-day\u002Ffirst-run","3.guides\u002F1.day-to-day\u002F2.first-run",{"title":73,"path":74,"stem":75},"File a work item","\u002Fguides\u002Fday-to-day\u002Ffile-a-work-item","3.guides\u002F1.day-to-day\u002F3.file-a-work-item",{"title":77,"path":78,"stem":79},"Use Kraft from your agent","\u002Fguides\u002Fday-to-day\u002Fagent-integration","3.guides\u002F1.day-to-day\u002F4.agent-integration",{"title":81,"path":82,"stem":83},"Reviewing a change","\u002Fguides\u002Fday-to-day\u002Freview-a-change","3.guides\u002F1.day-to-day\u002F5.review-a-change",{"title":85,"path":86,"stem":87},"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":89,"path":90,"stem":91},"Kraft for VS Code","\u002Fguides\u002Fday-to-day\u002Fvscode","3.guides\u002F1.day-to-day\u002F7.vscode",{"title":93,"path":94,"stem":95},"Kraft on a phone","\u002Fguides\u002Fday-to-day\u002Fkraft-on-a-phone","3.guides\u002F1.day-to-day\u002F8.kraft-on-a-phone",{"title":97,"path":98,"stem":99},"Get notified when an item needs you","\u002Fguides\u002Fday-to-day\u002Fnotifications","3.guides\u002F1.day-to-day\u002F9.notifications",{"title":101,"path":102,"stem":103,"children":104},"Customize and automate","\u002Fguides\u002Fcustomize","3.guides\u002F2.customize\u002Findex",[105,106,110,114,118,122],{"title":10,"path":102,"stem":103},{"title":107,"path":108,"stem":109},"Write your own chain","\u002Fguides\u002Fcustomize\u002Fwrite-your-own-chain","3.guides\u002F2.customize\u002F1.write-your-own-chain",{"title":111,"path":112,"stem":113},"Add a security review or a gate reviewer","\u002Fguides\u002Fcustomize\u002Fadd-review-agents","3.guides\u002F2.customize\u002F2.add-review-agents",{"title":115,"path":116,"stem":117},"Schedule or webhook work","\u002Fguides\u002Fcustomize\u002Fschedule-and-webhook-work","3.guides\u002F2.customize\u002F3.schedule-and-webhook-work",{"title":119,"path":120,"stem":121},"Share chains with add-ons","\u002Fguides\u002Fcustomize\u002Fshare-chains-with-addons","3.guides\u002F2.customize\u002F4.share-chains-with-addons",{"title":123,"path":124,"stem":125},"Publish an add-on","\u002Fguides\u002Fcustomize\u002Fpublish-an-add-on","3.guides\u002F2.customize\u002F5.publish-an-add-on",{"title":127,"path":128,"stem":129,"children":130},"Agents and harnesses","\u002Fguides\u002Fharnesses","3.guides\u002F3.harnesses\u002Findex",[131,132,136,140,144],{"title":10,"path":128,"stem":129},{"title":133,"path":134,"stem":135},"Switch a task to another harness","\u002Fguides\u002Fharnesses\u002Fswitch-harness","3.guides\u002F3.harnesses\u002F1.switch-harness",{"title":137,"path":138,"stem":139},"Add or override a harness","\u002Fguides\u002Fharnesses\u002Fadding-a-harness","3.guides\u002F3.harnesses\u002F2.adding-a-harness",{"title":141,"path":142,"stem":143},"Build a worker Kit","\u002Fguides\u002Fharnesses\u002Fworker-kit","3.guides\u002F3.harnesses\u002F3.worker-kit",{"title":145,"path":146,"stem":147},"Give a worker its login","\u002Fguides\u002Fharnesses\u002Fgive-a-worker-its-login","3.guides\u002F3.harnesses\u002F4.give-a-worker-its-login",{"title":149,"path":150,"stem":151,"children":152},"Run the server","\u002Fguides\u002Frun","3.guides\u002F4.run\u002Findex",[153,154,158,162,166,170,174,178,182,186,190,194,198],{"title":10,"path":150,"stem":151},{"title":155,"path":156,"stem":157},"Remote access","\u002Fguides\u002Frun\u002Fremote-access","3.guides\u002F4.run\u002F01.remote-access",{"title":159,"path":160,"stem":161},"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":163,"path":164,"stem":165},"Restart Kraft without ending running agents","\u002Fguides\u002Frun\u002Frestart-kraft","3.guides\u002F4.run\u002F03.restart-kraft",{"title":167,"path":168,"stem":169},"Back up and restore the database","\u002Fguides\u002Frun\u002Fback-up-and-restore","3.guides\u002F4.run\u002F04.back-up-and-restore",{"title":171,"path":172,"stem":173},"Logs and disk space","\u002Fguides\u002Frun\u002Flogs-and-disk-space","3.guides\u002F4.run\u002F05.logs-and-disk-space",{"title":175,"path":176,"stem":177},"Run Kraft as a service","\u002Fguides\u002Frun\u002Frun-as-a-service","3.guides\u002F4.run\u002F06.run-as-a-service",{"title":179,"path":180,"stem":181},"Upgrade Kraft","\u002Fguides\u002Frun\u002Fupgrade-kraft","3.guides\u002F4.run\u002F07.upgrade-kraft",{"title":183,"path":184,"stem":185},"Upgrade your configuration","\u002Fguides\u002Frun\u002Fupgrade-your-configuration","3.guides\u002F4.run\u002F08.upgrade-your-configuration",{"title":187,"path":188,"stem":189},"Upgrade from 1.4","\u002Fguides\u002Frun\u002Fupgrade-from-1-4","3.guides\u002F4.run\u002F09.upgrade-from-1-4",{"title":191,"path":192,"stem":193},"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":195,"path":196,"stem":197},"Roll back to 1.4","\u002Fguides\u002Frun\u002Froll-back","3.guides\u002F4.run\u002F11.roll-back",{"title":199,"path":200,"stem":201},"Run items in your own checkout","\u002Fguides\u002Frun\u002Frun-items-in-place","3.guides\u002F4.run\u002F12.run-items-in-place",{"title":203,"path":204,"stem":205},"Kraft Lite","\u002Fguides\u002Fkraft-lite","3.guides\u002F5.kraft-lite",{"title":207,"path":208,"stem":209,"children":210},"Troubleshooting","\u002Ftroubleshooting","4.troubleshooting",[211,213,217,221,225,229,233],{"title":10,"path":208,"stem":212},"4.troubleshooting\u002Findex",{"title":214,"path":215,"stem":216},"Why did my item stop?","\u002Ftroubleshooting\u002Fwhy-did-my-item-stop","4.troubleshooting\u002F1.why-did-my-item-stop",{"title":218,"path":219,"stem":220},"Stop reasons in detail","\u002Ftroubleshooting\u002Fstop-reasons-in-detail","4.troubleshooting\u002F2.stop-reasons-in-detail",{"title":222,"path":223,"stem":224},"Starting and reaching Kraft","\u002Ftroubleshooting\u002Fstarting-and-reaching-kraft","4.troubleshooting\u002F3.starting-and-reaching-kraft",{"title":226,"path":227,"stem":228},"Doctor failures","\u002Ftroubleshooting\u002Fdoctor-failures","4.troubleshooting\u002F4.doctor-failures",{"title":230,"path":231,"stem":232},"Sandbox and Kit stops","\u002Ftroubleshooting\u002Fsandbox-and-kit-stops","4.troubleshooting\u002F5.sandbox-and-kit-stops",{"title":234,"path":235,"stem":236},"Add-on problems","\u002Ftroubleshooting\u002Faddon-problems","4.troubleshooting\u002F6.addon-problems",{"title":238,"path":239,"stem":240,"children":241},"Reference","\u002Freference","5.reference",[242,244,286,308,312,316,414,432,458,462,466,500,504,508,512],{"title":10,"path":239,"stem":243},"5.reference\u002Findex",{"title":245,"path":246,"stem":247,"children":248},"Web UI","\u002Freference\u002Fweb-ui","5.reference\u002F00.web-ui\u002Findex",[249,250,254,258,262,266,270,274,278,282],{"title":10,"path":246,"stem":247},{"title":251,"path":252,"stem":253},"Sidebar, search, and keyboard","\u002Freference\u002Fweb-ui\u002Fsidebar-search-and-keyboard","5.reference\u002F00.web-ui\u002F0.sidebar-search-and-keyboard",{"title":255,"path":256,"stem":257},"The board","\u002Freference\u002Fweb-ui\u002Fboard","5.reference\u002F00.web-ui\u002F1.board",{"title":259,"path":260,"stem":261},"An item's page","\u002Freference\u002Fweb-ui\u002Fitem-page","5.reference\u002F00.web-ui\u002F2.item-page",{"title":263,"path":264,"stem":265},"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":267,"path":268,"stem":269},"Config before an item starts","\u002Freference\u002Fweb-ui\u002Fconfig-before-start","5.reference\u002F00.web-ui\u002F4.config-before-start",{"title":271,"path":272,"stem":273},"The review page","\u002Freference\u002Fweb-ui\u002Freview-page","5.reference\u002F00.web-ui\u002F5.review-page",{"title":275,"path":276,"stem":277},"Templates and Settings","\u002Freference\u002Fweb-ui\u002Ftemplates-and-settings","5.reference\u002F00.web-ui\u002F6.templates-and-settings",{"title":279,"path":280,"stem":281},"Analytics","\u002Freference\u002Fweb-ui\u002Fanalytics","5.reference\u002F00.web-ui\u002F7.analytics",{"title":283,"path":284,"stem":285},"Cap stops and raises","\u002Freference\u002Fweb-ui\u002Fcap-stops-and-raises","5.reference\u002F00.web-ui\u002F8.cap-stops-and-raises",{"title":287,"path":288,"stem":289,"children":290},"CLI","\u002Freference\u002Fcli","5.reference\u002F01.cli\u002Findex",[291,292,296,300,304],{"title":10,"path":288,"stem":289},{"title":293,"path":294,"stem":295},"Item verbs","\u002Freference\u002Fcli\u002Fitem","5.reference\u002F01.cli\u002F2.item",{"title":297,"path":298,"stem":299},"View verbs","\u002Freference\u002Fcli\u002Fview","5.reference\u002F01.cli\u002F3.view",{"title":301,"path":302,"stem":303},"Repo verbs","\u002Freference\u002Fcli\u002Frepo","5.reference\u002F01.cli\u002F4.repo",{"title":305,"path":306,"stem":307},"Admin verbs","\u002Freference\u002Fcli\u002Fadmin","5.reference\u002F01.cli\u002F5.admin",{"title":309,"path":310,"stem":311},"Console","\u002Freference\u002Fconsole","5.reference\u002F01.console",{"title":313,"path":314,"stem":315},"Work item statuses","\u002Freference\u002Fstatuses","5.reference\u002F02.statuses",{"title":317,"path":318,"stem":319,"children":320},"Configuration","\u002Freference\u002Fconfiguration","5.reference\u002F03.configuration\u002Findex",[321,322,340,344,348,352,356,360,364,368,402,406,410],{"title":10,"path":318,"stem":319},{"title":323,"path":324,"stem":325,"children":326},"repos.yaml","\u002Freference\u002Fconfiguration\u002Frepos","5.reference\u002F03.configuration\u002F02.repos\u002Findex",[327,328,332,336],{"title":10,"path":324,"stem":325},{"title":329,"path":330,"stem":331},"How connect proposes commands","\u002Freference\u002Fconfiguration\u002Frepos\u002Fconnect-proposals","5.reference\u002F03.configuration\u002F02.repos\u002F1.connect-proposals",{"title":333,"path":334,"stem":335},"detectors.yaml","\u002Freference\u002Fconfiguration\u002Frepos\u002Fdetectors","5.reference\u002F03.configuration\u002F02.repos\u002F2.detectors",{"title":337,"path":338,"stem":339},"Workspaces","\u002Freference\u002Fconfiguration\u002Frepos\u002Fworkspaces","5.reference\u002F03.configuration\u002F02.repos\u002F3.workspaces",{"title":341,"path":342,"stem":343},"policy.yaml","\u002Freference\u002Fconfiguration\u002Fpolicy","5.reference\u002F03.configuration\u002F03.policy",{"title":345,"path":346,"stem":347},"Library and chains","\u002Freference\u002Fconfiguration\u002Flibrary-and-chains","5.reference\u002F03.configuration\u002F04.library-and-chains",{"title":349,"path":350,"stem":351},"harnesses.yaml","\u002Freference\u002Fconfiguration\u002Fharnesses-file","5.reference\u002F03.configuration\u002F05.harnesses-file",{"title":353,"path":354,"stem":355},"access.yaml","\u002Freference\u002Fconfiguration\u002Faccess","5.reference\u002F03.configuration\u002F06.access",{"title":357,"path":358,"stem":359},"intake.yaml","\u002Freference\u002Fconfiguration\u002Fintake","5.reference\u002F03.configuration\u002F07.intake",{"title":361,"path":362,"stem":363},"notify.yaml","\u002Freference\u002Fconfiguration\u002Fnotify","5.reference\u002F03.configuration\u002F08.notify",{"title":365,"path":366,"stem":367},"theme.yaml","\u002Freference\u002Fconfiguration\u002Ftheme","5.reference\u002F03.configuration\u002F09.theme",{"title":369,"path":370,"stem":371,"children":372},"Sandboxed workers","\u002Freference\u002Fconfiguration\u002Fsandbox","5.reference\u002F03.configuration\u002F10.sandbox\u002Findex",[373,374,378,382,386,390,394,398],{"title":10,"path":370,"stem":371},{"title":375,"path":376,"stem":377},"Resource limits","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fresource-limits","5.reference\u002F03.configuration\u002F10.sandbox\u002F1.resource-limits",{"title":379,"path":380,"stem":381},"Callbacks from a sandbox","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fcallbacks","5.reference\u002F03.configuration\u002F10.sandbox\u002F2.callbacks",{"title":383,"path":384,"stem":385},"Network policy","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fnetwork-policy","5.reference\u002F03.configuration\u002F10.sandbox\u002F3.network-policy",{"title":387,"path":388,"stem":389},"Credentials","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fcredentials","5.reference\u002F03.configuration\u002F10.sandbox\u002F4.credentials",{"title":391,"path":392,"stem":393},"Kits","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fkits","5.reference\u002F03.configuration\u002F10.sandbox\u002F5.kits",{"title":395,"path":396,"stem":397},"sandbox.yaml","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fsandbox-yaml","5.reference\u002F03.configuration\u002F10.sandbox\u002F6.sandbox-yaml",{"title":399,"path":400,"stem":401},"Git in a sandbox","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fgit-in-a-sandbox","5.reference\u002F03.configuration\u002F10.sandbox\u002F7.git-in-a-sandbox",{"title":403,"path":404,"stem":405},"Environment variables","\u002Freference\u002Fconfiguration\u002Fenvironment-variables","5.reference\u002F03.configuration\u002F11.environment-variables",{"title":407,"path":408,"stem":409},"Add-ons and collections","\u002Freference\u002Fconfiguration\u002Faddons","5.reference\u002F03.configuration\u002F12.addons",{"title":411,"path":412,"stem":413},"Repo libraries","\u002Freference\u002Fconfiguration\u002Frepo-libraries","5.reference\u002F03.configuration\u002F13.repo-libraries",{"title":415,"path":416,"stem":417,"children":418},"Chain file keys","\u002Freference\u002Fchain-nodes","5.reference\u002F04.chain-nodes\u002Findex",[419,420,424,428],{"title":10,"path":416,"stem":417},{"title":421,"path":422,"stem":423},"Subprocess tasks","\u002Freference\u002Fchain-nodes\u002Fsubprocess-tasks","5.reference\u002F04.chain-nodes\u002F2.subprocess-tasks",{"title":425,"path":426,"stem":427},"Fix loop and judge","\u002Freference\u002Fchain-nodes\u002Ffix-loop","5.reference\u002F04.chain-nodes\u002F3.fix-loop",{"title":429,"path":430,"stem":431},"Result file","\u002Freference\u002Fchain-nodes\u002Fresult-file","5.reference\u002F04.chain-nodes\u002F4.result-file",{"title":433,"path":434,"stem":435,"children":436},"Agent harnesses","\u002Freference\u002Fharnesses","5.reference\u002F05.harnesses\u002Findex",[437,438,442,446,450,454],{"title":10,"path":434,"stem":435},{"title":439,"path":440,"stem":441},"Unattended runs","\u002Freference\u002Fharnesses\u002Funattended-runs","5.reference\u002F05.harnesses\u002F2.unattended-runs",{"title":443,"path":444,"stem":445},"Agent profiles","\u002Freference\u002Fharnesses\u002Fagent-profiles","5.reference\u002F05.harnesses\u002F3.agent-profiles",{"title":447,"path":448,"stem":449},"Harness definition files","\u002Freference\u002Fharnesses\u002Fharness-files","5.reference\u002F05.harnesses\u002F4.harness-files",{"title":451,"path":452,"stem":453},"Fallback and escalation","\u002Freference\u002Fharnesses\u002Ffallback-and-escalation","5.reference\u002F05.harnesses\u002F5.fallback-and-escalation",{"title":455,"path":456,"stem":457},"Cost reporting","\u002Freference\u002Fharnesses\u002Fcost-reporting","5.reference\u002F05.harnesses\u002F6.cost-reporting",{"title":459,"path":460,"stem":461},"Permission gate","\u002Freference\u002Fpermissions","5.reference\u002F06.permissions",{"title":463,"path":464,"stem":465},"Inbound triggers","\u002Freference\u002Ftriggers","5.reference\u002F07.triggers",{"title":467,"path":468,"stem":469,"children":470},"HTTP API","\u002Freference\u002Fhttp-api","5.reference\u002F08.http-api\u002Findex",[471,472,476,480,484,488,492,496],{"title":10,"path":468,"stem":469},{"title":473,"path":474,"stem":475},"Filing, reading and changing work items","\u002Freference\u002Fhttp-api\u002Fwork-items","5.reference\u002F08.http-api\u002F2.work-items",{"title":477,"path":478,"stem":479},"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":481,"path":482,"stem":483},"The work item object","\u002Freference\u002Fhttp-api\u002Fwork-item-object","5.reference\u002F08.http-api\u002F4.work-item-object",{"title":485,"path":486,"stem":487},"Budget, events, diff and documents","\u002Freference\u002Fhttp-api\u002Fbudget-and-events","5.reference\u002F08.http-api\u002F5.budget-and-events",{"title":489,"path":490,"stem":491},"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":493,"path":494,"stem":495},"Drafts","\u002Freference\u002Fhttp-api\u002Fdrafts","5.reference\u002F08.http-api\u002F7.drafts",{"title":497,"path":498,"stem":499},"Ops for each draft area","\u002Freference\u002Fhttp-api\u002Fdraft-ops","5.reference\u002F08.http-api\u002F8.draft-ops",{"title":501,"path":502,"stem":503},"MCP tools","\u002Freference\u002Fmcp-tools","5.reference\u002F09.mcp-tools",{"title":505,"path":506,"stem":507},"Events","\u002Freference\u002Fevents","5.reference\u002F10.events",{"title":509,"path":510,"stem":511},"VS Code extension","\u002Freference\u002Fvscode-extension","5.reference\u002F11.vscode-extension",{"title":513,"path":514,"stem":515},"Changes from 1.4 to 2.0","\u002Freference\u002Fchanges-from-1-4","5.reference\u002F12.changes-from-1-4",{"title":517,"path":518,"stem":519,"children":520},"Project","\u002Fproject","6.project",[521,523,527,531,535,539,543,547],{"title":10,"path":518,"stem":522},"6.project\u002Findex",{"title":524,"path":525,"stem":526},"Security","\u002Fproject\u002Fsecurity","6.project\u002F1.security",{"title":528,"path":529,"stem":530},"Data and privacy","\u002Fproject\u002Fdata-and-privacy","6.project\u002F2.data-and-privacy",{"title":532,"path":533,"stem":534},"What's new in 2.0","\u002Fproject\u002Fwhats-new","6.project\u002F3.whats-new",{"title":536,"path":537,"stem":538},"Status and support","\u002Fproject\u002Fstatus-and-support","6.project\u002F4.status-and-support",{"title":540,"path":541,"stem":542},"Architecture","\u002Fproject\u002Farchitecture","6.project\u002F5.architecture",{"title":544,"path":545,"stem":546},"Source map","\u002Fproject\u002Fsource-map","6.project\u002F6.source-map",{"title":548,"path":549,"stem":550},"Contributing","\u002Fproject\u002Fcontributing","6.project\u002F7.contributing",{"id":552,"title":309,"body":553,"description":2747,"extension":2748,"links":2749,"meta":2750,"navigation":2751,"path":310,"seo":2752,"stem":311,"__hash__":2753},"docs\u002F5.reference\u002F01.console.md",{"type":554,"value":555,"toc":2720},"minimark",[556,563,574,579,587,604,607,611,630,633,648,662,666,673,782,786,789,914,918,937,944,951,960,965,975,978,981,988,1104,1110,1125,1129,1135,1245,1248,1254,1257,1264,1267,1286,1359,1370,1373,1463,1545,1548,1551,1560,1656,1674,1689,1693,1723,1774,1780,1876,1887,1890,1905,1966,2040,2057,2083,2086,2117,2159,2182,2186,2210,2232,2273,2285,2289,2292,2362,2367,2371,2393,2396,2466,2476,2480,2486,2517,2520,2524,2551,2616,2639,2643,2649,2652],[557,558,559],"p",{},[560,561,562],"em",{},"Added in 2.1",[557,564,565,566,570,571,573],{},"It runs on the machine the server runs on, and shows the statuses, words and\ncolours of the ",[567,568,569],"a",{"href":246},"web UI",". The ",[567,572,287],{"href":288}," stays as\nit is: the console is a third way in, not a replacement.",[575,576,578],"h2",{"id":577},"open-it","Open it",[557,580,581,582,586],{},"Run ",[583,584,585],"code",{},"kraft console"," in a terminal. It refuses, with one sentence, when:",[588,589,590,594,601],"ul",{},[591,592,593],"li",{},"stdin or stdout is not a terminal, such as in a pipe: it needs one to draw in;",[591,595,596,597,600],{},"it runs inside a Kraft worker, where ",[583,598,599],{},"KRAFT_WORK_ITEM_ID"," is set;",[591,602,603],{},"the server on Kraft's port is another instance, with a different run directory.",[557,605,606],{},"With no server answering, it opens anyway and says so on every screen.",[575,608,610],{"id":609},"opening-and-leaving","Opening and leaving",[557,612,613,614,617,618,621,622,625,626,629],{},"The console notes when you quit it, in ",[583,615,616],{},"console-seen.json"," in the instance's\nrun directory. Opened again, a dim line under the top line says what moved\nsince then, counted from the board: ",[583,619,620],{},"since 14:02 · 2 finished · 1 needs you",",\n",[583,623,624],{},"since 14:02 · nothing finished · nothing needs you"," when items only moved on,\nor ",[583,627,628],{},"nothing changed since 14:02",". It goes after a minute or at your first key.",[557,631,632],{},"An item restored from the archive does not count as finished. The first time\nyou open the console there is no such line, and none when the file does not\nhold a time that could be true.",[557,634,635,636,639,640,643,644,647],{},"While it is open, an item that finishes gets one toast: ",[583,637,638],{},"✓ merged !42 · Fix the parser",", or ",[583,641,642],{},"✓ completed · ..."," with no merge request. Several at once\nread ",[583,645,646],{},"✓ 3 finished",".",[557,649,650,651,654,655,639,658,661],{},"When you quit, one plain line stays in the terminal: ",[583,652,653],{},"kraft console · 2 need you · 3 running",", ",[583,656,657],{},"kraft console · nothing needs you · 3 running on their own",[583,659,660],{},"kraft console · nothing needs you, and nothing is running",". It is\nnot printed when the console ends on an error, or never reached the server.",[575,663,665],{"id":664},"the-top-line","The top line",[557,667,668,669,672],{},"Every screen keeps the top line. It starts with ",[583,670,671],{},"◆ kraft",", and the screen you\nare on is drawn as a pill in the accent colour.",[674,675,676,689],"table",{},[677,678,679],"thead",{},[680,681,682,686],"tr",{},[683,684,685],"th",{},"Part",[683,687,688],{},"What it shows",[690,691,692,707,725,746,756,766],"tbody",{},[680,693,694,700],{},[695,696,697],"td",{},[583,698,699],{},"● live",[695,701,702,703,706],{},"The console is following the server's events; the dot brightens for an eighth of a second when one lands. A muted ",[583,704,705],{},"● reconnecting"," means it is not: what is on screen stays until it reconnects.",[680,708,709,715],{},[695,710,711],{},[712,713,714],"strong",{},"Board",[695,716,717,718,721,722,647],{},"How many items need you (the ",[712,719,720],{},"Needs you"," group), in the repo the console was opened in, or in every repo after ",[583,723,724],{},"s",[680,726,727,732],{},[695,728,729],{},[712,730,731],{},"Server",[695,733,734,735,738,739,639,742,745],{},"The server's health word: ",[583,736,737],{},"ok"," or ",[583,740,741],{},"degraded",[583,743,744],{},"down"," with no answer.",[680,747,748,753],{},[695,749,750],{},[712,751,752],{},"Add-ons",[695,754,755],{},"How many add-on updates wait for you.",[680,757,758,763],{},[695,759,760],{},[712,761,762],{},"Repos",[695,764,765],{},"The connected repos.",[680,767,768,771],{},[695,769,770],{},"The right end",[695,772,773,774,777,778,781],{},"The repo the console was opened in (",[583,775,776],{},"all repos"," outside a connected one), the version in a window 100 columns wide or more, and ",[583,779,780],{},"update available"," when a newer release is out.",[575,783,785],{"id":784},"keys","Keys",[557,787,788],{},"The footer lists the keys of the screen you are on.",[674,790,791,801],{},[677,792,793],{},[680,794,795,798],{},[683,796,797],{},"Key",[683,799,800],{},"What it does",[690,802,803,817,830,843,858,866,874,884,906],{},[680,804,805,814],{},[695,806,807,810,811],{},[583,808,809],{},"1"," to ",[583,812,813],{},"4",[695,815,816],{},"Board, Server, Add-ons, Repos.",[680,818,819,824],{},[695,820,821],{},[583,822,823],{},"?",[695,825,826,827,829],{},"The current screen's keys that act now, then the ones every screen has. ",[583,828,823],{}," or Esc closes it.",[680,831,832,837],{},[695,833,834],{},[583,835,836],{},"\u002F",[695,838,839,840,842],{},"The prompt, with the ",[583,841,836],{}," typed.",[680,844,845,850],{},[695,846,847],{},[583,848,849],{},"n",[695,851,852,853,857],{},"Files a new item through a form (see ",[567,854,856],{"href":855},"#new-item","New item",").",[680,859,860,863],{},[695,861,862],{},"Ctrl+O",[695,864,865],{},"The output panel.",[680,867,868,871],{},[695,869,870],{},"Esc",[695,872,873],{},"Back: from an item to the screen you opened it from.",[680,875,876,881],{},[695,877,878],{},[583,879,880],{},"q",[695,882,883],{},"Back like Esc, or quit from Board, Server, Add-ons or Repos.",[680,885,886,889],{},[695,887,888],{},"Ctrl+P",[695,890,891,892,895,896,899,900,902,903,905],{},"The command palette: a screen, an item by id or title (opens it), or a verb, typed at the prompt. ",[712,893,894],{},"Dark"," and ",[712,897,898],{},"Light"," switch the look; ",[712,901,785],{}," opens the ",[583,904,823],{}," list.",[680,907,908,911],{},[695,909,910],{},"Ctrl+Q",[695,912,913],{},"Quit.",[575,915,917],{"id":916},"the-board","The Board",[557,919,920,921,621,923,654,926,895,929,932,933,936],{},"The Board lists every item in the web UI's groups and order: ",[712,922,720],{},[712,924,925],{},"Running",[712,927,928],{},"Not started",[712,930,931],{},"Done",", in one rounded panel. Each group's\nname and count is a separator line inside it; a group with no rows shown\nshares the next one's line, as in ",[583,934,935],{},"Not started 0 ─ Done 12 ›",". Done is folded\nto its count. Archived items are not shown.",[557,938,939,940,943],{},"Each item is one line: a bar in its state's colour, the first 8 characters of\nits id, its title, what it is doing or waiting for in the web UI's words, its\nchain when that is not ",[583,941,942],{},"default",", and how long ago it last changed.",[557,945,946,947,950],{},"With every repo shown, the repo's name joins the chain; the repo and the chain\neach have their own colour. A title too long for its column ends in ",[583,948,949],{},"…",". In a\nwindow under 80 columns the chain, repo and age columns drop.",[557,952,953,954,956,957,647],{},"The row under the cursor opens a second line under its title: its repo, its\nchain (",[583,955,942],{}," too) and where it stands on the chain, the node it is on\nmarked ",[583,958,959],{},"●",[961,962,964],"h3",{"id":963},"running-work","Running work",[557,966,967,968,971,972,974],{},"An item whose agent, or an escalation turn, is at work has a spinner in place\nof its bar, turning through ",[583,969,970],{},"· ✢ ✳ ✶ ✻ ✽",". Its age column reads as every\nrow's does, since it last changed. A queued or waiting item is in ",[712,973,925],{},"\nbut does not spin.",[557,976,977],{},"One clock moves every spinner and running time, eight times a second, only\nwhile one is on screen. A spinner redraws its own cell, never the list.",[557,979,980],{},"A live update redraws the list without moving your place in it. If the item\nunder the cursor goes (archived, say), the cursor moves to its neighbour.",[557,982,983,984,987],{},"The Board starts on the repo the console was opened in, as ",[583,985,986],{},"kraft view list","\ndoes, or on every repo when it was opened outside a connected one.",[674,989,990,998],{},[677,991,992],{},[680,993,994,996],{},[683,995,797],{},[683,997,800],{},[690,999,1000,1014,1022,1034,1046,1056,1065,1075,1085,1094],{},[680,1001,1002,1011],{},[695,1003,1004,654,1007,1010],{},[583,1005,1006],{},"j",[583,1008,1009],{},"k",", ↓, ↑",[695,1012,1013],{},"Move between items; they stop on each group's heading too.",[680,1015,1016,1019],{},[695,1017,1018],{},"Home, End, PageUp, PageDown",[695,1020,1021],{},"Jump to the first or last line, or a page up or down.",[680,1023,1024,1027],{},[695,1025,1026],{},"Enter",[695,1028,1029,1030,857],{},"On Done's heading, opens or folds Done. On an item, opens it (",[567,1031,1033],{"href":1032},"#the-item","The Item",[680,1035,1036,1040],{},[695,1037,1038],{},[583,1039,567],{},[695,1041,1042,1043,1045],{},"Opens the item's Overview, where ",[583,1044,567],{}," approves its gate once you have read the document.",[680,1047,1048,1053],{},[695,1049,1050],{},[583,1051,1052],{},"r",[695,1054,1055],{},"Rejects the gate the item waits on, with a note saying what is wrong. The note is required.",[680,1057,1058,1062],{},[695,1059,1060],{},[583,1061,557],{},[695,1063,1064],{},"Pauses a running item, or resumes a paused one with an optional steer. On an agent's question, asks for your answer and resumes with it. The footer says which: pause, resume or answer.",[680,1066,1067,1072],{},[695,1068,1069],{},[583,1070,1071],{},"t",[695,1073,1074],{},"Retries a stopped item, with an optional steer.",[680,1076,1077,1082],{},[695,1078,1079],{},[583,1080,1081],{},"v",[695,1083,1084],{},"Opens or closes the peek.",[680,1086,1087,1091],{},[695,1088,1089],{},[583,1090,724],{},[695,1092,1093],{},"Every repo, or only the one the console was opened in. The top line says which. It appears only inside a connected repo.",[680,1095,1096,1101],{},[695,1097,1098],{},[583,1099,1100],{},"f",[695,1102,1103],{},"Filters by title or id as you type. Enter keeps the filter; Esc clears it.",[557,1105,1106,1107,1109],{},"With nothing filed, the Board says so. When nothing needs you, one muted line\nunder ",[712,1108,720],{}," says so, and how many items run on their own. A filter\nthat matches nothing says \"nothing here for this filter\".",[557,1111,1112,654,1114,654,1116,895,1118,1120,1121,1124],{},[583,1113,567],{},[583,1115,1052],{},[583,1117,557],{},[583,1119,1071],{}," are in the footer only while the server allows them for the\nselected item. Esc in their dialog sends nothing. Afterwards a toast says what\nthe server did, in the CLI's words: a resume that found no free slot says the\nitem is queued, not resumed. An approve's or a reject's toast starts with ",[583,1122,1123],{},"✓",". A refusal shows in the server's own words, and the\nBoard and the peek read again.",[575,1126,1128],{"id":1127},"the-peek","The peek",[557,1130,1131,1132,1134],{},"The peek follows the selected item under the Board's panel, in its own panel\ntitled with the item's id and status. It starts closed in a window under 30\nrows; ",[583,1133,1081],{}," opens and closes it at any size. It reads the item once the cursor\nstops, not for every row passed.",[674,1136,1137,1147],{},[677,1138,1139],{},[680,1140,1141,1144],{},[683,1142,1143],{},"Selected",[683,1145,1146],{},"The peek shows",[690,1148,1149,1157,1171,1182,1193,1205,1213,1225,1233],{},[680,1150,1151,1154],{},[695,1152,1153],{},"An item at a gate",[695,1155,1156],{},"The chain around the gate, the gate, and the start of the document it decides. When approving waits on open must-fix threads, it says how many.",[680,1158,1159,1162],{},[695,1160,1161],{},"An agent's question",[695,1163,1164,1165,1167,1168,1170],{},"The question. ",[583,1166,557],{}," answers it, and ",[583,1169,1071],{}," retries when a retry is open.",[680,1172,1173,1176],{},[695,1174,1175],{},"A failed or stopped item",[695,1177,1178,1179,1181],{},"The reason, and ",[583,1180,1071],{}," when a retry is open.",[680,1183,1184,1187],{},[695,1185,1186],{},"A paused item",[695,1188,1189,1190,1192],{},"Where it paused, and how long ago. ",[583,1191,557],{}," resumes it.",[680,1194,1195,1198],{},[695,1196,1197],{},"A stopped or paused item the server offers nothing for",[695,1199,1200,1201,1204],{},"That Kraft offers no action for it now; Enter opens it, and ",[583,1202,1203],{},"m"," there shows what it allows.",[680,1206,1207,1210],{},[695,1208,1209],{},"A blocked or queued item",[695,1211,1212],{},"The unfinished items it comes after.",[680,1214,1215,1218],{},[695,1216,1217],{},"A running item",[695,1219,1220,1221,1224],{},"A working line, such as ",[583,1222,1223],{},"✻ implement · task 3 of 5 · 4m 12s · $0.42",": where it is, how long its session has run, and its spend. Then that session's log as the agent writes it.",[680,1226,1227,1230],{},[695,1228,1229],{},"A done or cancelled item",[695,1231,1232],{},"The outcome, and the merge request when there is one.",[680,1234,1235,1238],{},[695,1236,1237],{},"A group heading, or nothing",[695,1239,1240,1241,1244],{},"The end of ",[583,1242,1243],{},"server.log",", followed as the server writes it.",[575,1246,1033],{"id":1247},"the-item",[557,1249,1250,1251,1253],{},"Enter on an item, ",[583,1252,567],{},", or an item chosen with Ctrl+P opens it. Esc goes back.",[557,1255,1256],{},"Its header is a rounded panel. The top two lines name the item, its repo and\nchain, and its status in the web UI's words, with what it has spent and when it\nlast changed.",[557,1258,1259,1260,1263],{},"A running item has a working line under them, ",[583,1261,1262],{},"✻ implement · task 3 of 5 · 4m 12s",", without the spend the line above says. Its time is the running\nsession's, as the web's item page times it; with no session running, no time\nshows.",[557,1265,1266],{},"A stopped item has a banner instead: the server's reason and, where the web UI\ngives one, the way on. Then its chain, with the node it stands on in the accent\ncolour, and its tabs.",[557,1268,1269,1270,895,1273,1276,1277,1280,1281,654,1283,1285],{},"The tab shown is a pill in the accent colour. ← and →, Tab and Shift+Tab, or\n",[583,1271,1272],{},"[",[583,1274,1275],{},"]",", step through the five tabs, round the end; clicking a tab's name\nopens it. The panel's edge and the footer name them ",[583,1278,1279],{},"← → tabs",".\n",[583,1282,1006],{},[583,1284,1009],{},", PageUp, PageDown, Home and End scroll the one shown.",[674,1287,1288,1297],{},[677,1289,1290],{},[680,1291,1292,1295],{},[683,1293,1294],{},"Tab",[683,1296,688],{},[690,1298,1299,1308,1318,1328,1345],{},[680,1300,1301,1305],{},[695,1302,1303],{},[712,1304,10],{},[695,1306,1307],{},"The document the pending gate decides, whole; a cut one says so at its end. Without a gate, the keys that move it on, as the peek says them, or that Kraft offers none.",[680,1309,1310,1315],{},[695,1311,1312],{},[712,1313,1314],{},"Chain",[695,1316,1317],{},"A row per node: its mark (✓ done, ● current, ✗ failed, ↷ skipped, · not reached), name and cost and time. Enter opens a node: its passes, sessions, plan tasks or gate decisions.",[680,1319,1320,1325],{},[695,1321,1322],{},[712,1323,1324],{},"Activity",[695,1326,1327],{},"The item's events, newest first, in the web UI's words, without the bookkeeping ones. New ones appear as they happen; End at the bottom reads earlier ones.",[680,1329,1330,1335],{},[695,1331,1332],{},[712,1333,1334],{},"Log",[695,1336,1337,1338,1341,1342,1344],{},"The newest session's log, followed as the agent writes it, then ",[583,1339,1340],{},"session ended",". Leaving the tab stops following. ",[583,1343,724],{}," steps to the next older session, round to the newest, when there is more than one.",[680,1346,1347,1352],{},[695,1348,1349],{},[712,1350,1351],{},"Diff",[695,1353,1354,1355,1358],{},"What has landed on the branch, then uncommitted work, then untracked files and a cut diff's warning, as ",[583,1356,1357],{},"kraft view diff"," says them. It reads again when the item changes. A worktree that is gone shows the server's own words.",[557,1360,1361,1362,1365,1366,1369],{},"The Chain starts on the node the item stands on, or the last one done. An open\nnode says its state; when it ran more than once, each pass, newest first, with\nwhat sent it back and the rejection's note. Its sessions read ",[583,1363,1364],{},"task · attempt · status · time · cost",". A running session shows the spinner and its time so far, moving each second.\nA cancelled item's current node reads ",[583,1367,1368],{},"cancelled",", the ones after it not reached.",[557,1371,1372],{},"The implementing node adds the plan's tasks, those not\nyet started marked so. A gate lists its decisions, or says it waits for you. A\nfield the server does not give is left out.",[674,1374,1375,1383],{},[677,1376,1377],{},[680,1378,1379,1381],{},[683,1380,797],{},[683,1382,800],{},[690,1384,1385,1394,1403,1414,1425,1432,1445,1454],{},[680,1386,1387,1391],{},[695,1388,1389],{},[583,1390,567],{},[695,1392,1393],{},"Approves the gate, for the document the Overview shows; from another tab, shows the Overview first. Offered once the document is read. Once approved, the chain's new node lights for a moment.",[680,1395,1396,1400],{},[695,1397,1398],{},[583,1399,1052],{},[695,1401,1402],{},"Rejects the gate with a required note, naming the node whose agent gets it. Where the gate has a fix target before it, the node starts there; Shift+Tab reaches it to pick another.",[680,1404,1405,1411],{},[695,1406,1407,654,1409],{},[583,1408,557],{},[583,1410,1071],{},[695,1412,1413],{},"As on the Board.",[680,1415,1416,1422],{},[695,1417,1418,654,1420,1010],{},[583,1419,1006],{},[583,1421,1009],{},[695,1423,1424],{},"On the Chain, move the cursor between nodes; in an open node, between its sessions. Home and End go to the first and last.",[680,1426,1427,1429],{},[695,1428,1026],{},[695,1430,1431],{},"On the Chain, opens the node under the cursor; in an open node, the Log on the session under the cursor.",[680,1433,1434,1437],{},[695,1435,1436],{},"Esc, ←",[695,1438,1439,1440,654,1442,1444],{},"In an open node, close it; the footer and the panel's edge say so. → and ",[583,1441,1272],{},[583,1443,1275],{},", Tab, Shift+Tab still switch tabs. On the list ← and → switch tabs, and Esc goes back.",[680,1446,1447,1451],{},[695,1448,1449],{},[583,1450,724],{},[695,1452,1453],{},"On the Log, with more than one session: the next older one.",[680,1455,1456,1460],{},[695,1457,1458],{},[583,1459,1203],{},[695,1461,1462],{},"The menu of what else the server allows now: skip, unblock, raise budget, escalate, complete, cancel, archive.",[674,1464,1465,1475],{},[677,1466,1467],{},[680,1468,1469,1472],{},[683,1470,1471],{},"Menu entry",[683,1473,1474],{},"What it asks",[690,1476,1477,1485,1493,1505,1513,1525,1533],{},[680,1478,1479,1482],{},[695,1480,1481],{},"Skip",[695,1483,1484],{},"An optional note, then passes the current node or gate without running it.",[680,1486,1487,1490],{},[695,1488,1489],{},"Unblock",[695,1491,1492],{},"Nothing: drops what the item still comes after.",[680,1494,1495,1498],{},[695,1496,1497],{},"Raise budget",[695,1499,1500,1501,1504],{},"The new cap in dollars, or ",[583,1502,1503],{},"none",". An unreadable amount, or a cap at or below the spend, is refused in the dialog, which asks again. A raised cap whose retry is refused: the toast says both.",[680,1506,1507,1510],{},[695,1508,1509],{},"Escalate",[695,1511,1512],{},"What the agent should look into.",[680,1514,1515,1518],{},[695,1516,1517],{},"Complete",[695,1519,1520,1521,1524],{},"A required reason. Its beads stay open: ",[583,1522,1523],{},"kraft item complete ID --close-beads"," closes them.",[680,1526,1527,1530],{},[695,1528,1529],{},"Cancel item",[695,1531,1532],{},"What cancelling stops and keeps, then a required reason. The worktree and branch stay.",[680,1534,1535,1538],{},[695,1536,1537],{},"Archive",[695,1539,1540,1541,1544],{},"The console's confirm, then ",[583,1542,1543],{},"kraft item archive ID --yes"," in the output panel.",[557,1546,1547],{},"An item abandoned while it is open says it no longer exists. One archived while open shows Archived, with no keys to act.",[575,1549,856],{"id":1550},"new-item",[557,1552,1553,1555,1556,1559],{},[583,1554,849],{}," on any screen opens a form that files a work item, as ",[583,1557,1558],{},"kraft item create","\ndoes.",[674,1561,1562,1572],{},[677,1563,1564],{},[680,1565,1566,1569],{},[683,1567,1568],{},"Field",[683,1570,1571],{},"What it takes",[690,1573,1574,1584,1594,1604,1613,1626,1636,1646],{},[680,1575,1576,1581],{},[695,1577,1578],{},[712,1579,1580],{},"Title",[695,1582,1583],{},"One line, as the Board shows it. Required.",[680,1585,1586,1591],{},[695,1587,1588],{},[712,1589,1590],{},"Description",[695,1592,1593],{},"The brief the spec is written from. Enter starts a new line.",[680,1595,1596,1601],{},[695,1597,1598],{},[712,1599,1600],{},"Repo",[695,1602,1603],{},"Starts at the repo the console was opened in. Left empty, Kraft uses the repo of the console's directory.",[680,1605,1606,1610],{},[695,1607,1608],{},[712,1609,1314],{},[695,1611,1612],{},"Left empty, the repo's default chain.",[680,1614,1615,1623],{},[695,1616,1617,654,1620],{},[712,1618,1619],{},"Spec",[712,1621,1622],{},"Plan",[695,1624,1625],{},"A file inside the repo, relative to the console's directory. Each skips the node that would write it.",[680,1627,1628,1633],{},[695,1629,1630],{},[712,1631,1632],{},"After",[695,1634,1635],{},"The ids of items this one comes after, separated by spaces. Started before they complete, it waits as blocked.",[680,1637,1638,1643],{},[695,1639,1640],{},[712,1641,1642],{},"Auto-gate",[695,1644,1645],{},"On: an agent reviews the item's auto-escalate gates before you do.",[680,1647,1648,1653],{},[695,1649,1650],{},[712,1651,1652],{},"Start now",[695,1654,1655],{},"Off: the item is filed paused. On: it starts, or queues for a free slot.",[557,1657,1658,1659,1662,1663,1666,1667,1669,1670,1673],{},"Enter in a one-line field, or ",[712,1660,1661],{},"File",", files it. When Kraft refuses, as\nfor a spec outside the repo, the reason shows under the fields and the form\nstays open. Esc or ",[712,1664,1665],{},"Back"," closes it. A toggle shows ",[583,1668,1123],{}," when on and ",[583,1671,1672],{},"·","\nwhen off.",[557,1675,1676,1677,1679,1680,1682,1683,1685,1686,1688],{},"Once filed, the item opens. A toast says where it stands, and repeats any\nwarning Kraft gave, such as an open item with the same title. The item is\npaused unless you chose ",[712,1678,1652],{},": ",[583,1681,557],{}," starts it, and ",[712,1684,1529],{}," in\nits ",[583,1687,1203],{}," menu drops it.",[575,1690,1692],{"id":1691},"the-server-screen","The Server screen",[557,1694,1695,738,1698,1701,1702,1704,1705,1708,1709,1711,1712,1715,1716,895,1719,1722],{},[583,1696,1697],{},"2",[583,1699,1700],{},"\u002Fadmin"," opens it, in a panel titled ",[712,1703,731],{},". Its first lines say how\nthe server is, from the answer ",[583,1706,1707],{},"kraft admin health"," reads and from the release\nfeed. Under them, after a ",[583,1710,1243],{}," separator, the log follows as the server\nwrites it, with ",[583,1713,1714],{},"WARNING"," in the warning colour, ",[583,1717,1718],{},"ERROR",[583,1720,1721],{},"CRITICAL"," in the\nerror colour, and each record's source file dimmed.",[674,1724,1725,1734],{},[677,1726,1727],{},[680,1728,1729,1732],{},[683,1730,1731],{},"Line",[683,1733,688],{},[690,1735,1736,1744,1759],{},[680,1737,1738,1741],{},[695,1739,1740],{},"The first",[695,1742,1743],{},"The health word, the version the server runs, with a newer release or an installed one a restart finishes, then how long it has been up, its pid and its address.",[680,1745,1746,1751],{},[695,1747,1748],{},[712,1749,1750],{},"Config",[695,1752,1753,1754,895,1756,1758],{},"✓ or ✗ for the template library, ",[583,1755,341],{},[583,1757,357],{},". What failed is listed under the summary, in the server's words.",[680,1760,1761,1771],{},[695,1762,1763,654,1766,654,1769],{},[712,1764,1765],{},"Index",[712,1767,1768],{},"Storage",[712,1770,752],{},[695,1772,1773],{},"The search index's state, worktree disk use against the limit, and how many add-on updates wait for you.",[557,1775,1776,1777,647],{},"While the server does not answer, its last answer stays and the first line\nsays ",[583,1778,1779],{},"no answer",[674,1781,1782,1790],{},[677,1783,1784],{},[680,1785,1786,1788],{},[683,1787,797],{},[683,1789,800],{},[690,1791,1792,1805,1824,1838,1852,1864],{},[680,1793,1794,1799],{},[695,1795,1796],{},[583,1797,1798],{},"d",[695,1800,1801,1802,1544],{},"Runs ",[583,1803,1804],{},"kraft admin doctor",[680,1806,1807,1812],{},[695,1808,1809],{},[583,1810,1811],{},"l",[695,1813,1814,1815,895,1817,1819,1820,1823],{},"Reloads the template library, ",[583,1816,341],{},[583,1818,357],{},", as ",[583,1821,1822],{},"kraft admin reload"," does, and says what it took and what it refused.",[680,1825,1826,1831],{},[695,1827,1828],{},[583,1829,1830],{},"R",[695,1832,1833,1834,1837],{},"Restarts the server, after a confirm that lists the running items whose agents the restart ends. The dot reads ",[583,1835,1836],{},"reconnecting"," until the server is back.",[680,1839,1840,1845],{},[695,1841,1842],{},[583,1843,1844],{},"U",[695,1846,1847,1848,1851],{},"Installs the newest release and restarts the server on it (",[583,1849,1850],{},"kraft admin update --restart","), after the same confirm.",[680,1853,1854,1858],{},[695,1855,1856],{},[583,1857,1100],{},[695,1859,1860,1861,1863],{},"Filters ",[583,1862,1243],{}," by text as you type. Enter keeps the filter; Esc clears it.",[680,1865,1866,1873],{},[695,1867,1868,654,1870,1872],{},[583,1869,1006],{},[583,1871,1009],{},", PageUp, PageDown, Home",[695,1874,1875],{},"Scroll the log. Scrolled up, it stays where you are; End follows it again.",[557,1877,1878,1879,1882,1883,857],{},"After an update that installed a new version, a banner says so until you\nrestart the console, which still runs the version it started on. With no\nserver answering, ",[712,1880,1881],{},"Start server"," starts one (see\n",[567,1884,1886],{"href":1885},"#when-it-cannot-reach-the-server","When it cannot reach the server",[575,1888,752],{"id":1889},"add-ons",[557,1891,1892,738,1895,1898,1899,1901,1902,1904],{},[583,1893,1894],{},"3",[583,1896,1897],{},"\u002Faddon"," lists, in a panel titled ",[712,1900,752],{},", each collection Kraft\nknows and where it comes from.\nWith none added, it says what add-ons are and that ",[583,1903,1203],{}," adds a collection.\nUnder it are the add-ons it published when last fetched, and any installed\nfrom it.",[674,1906,1907,1917],{},[677,1908,1909],{},[680,1910,1911,1914],{},[683,1912,1913],{},"An add-on shows",[683,1915,1916],{},"When",[690,1918,1919,1929,1943,1956],{},[680,1920,1921,1926],{},[695,1922,1923],{},[583,1924,1925],{},"not installed",[695,1927,1928],{},"The collection publishes it and this instance does not have it.",[680,1930,1931,1940],{},[695,1932,1933,1934,738,1937],{},"Its version, ",[583,1935,1936],{},"enabled",[583,1938,1939],{},"disabled",[695,1941,1942],{},"It is installed. An enabled one Kraft left out also says why.",[680,1944,1945,1953],{},[695,1946,1947,738,1950],{},[583,1948,1949],{},"auto-update (addon)",[583,1951,1952],{},"(collection)",[695,1954,1955],{},"It updates itself, by its own setting or its collection's.",[680,1957,1958,1963],{},[695,1959,1960],{},[583,1961,1962],{},"update waiting",[695,1964,1965],{},"A newer version waits for your review.",[674,1967,1968,1976],{},[677,1969,1970],{},[680,1971,1972,1974],{},[683,1973,797],{},[683,1975,800],{},[690,1977,1978,1989,1999,2012,2022,2031],{},[680,1979,1980,1986],{},[695,1981,1982,654,1984],{},[583,1983,1006],{},[583,1985,1009],{},[695,1987,1988],{},"Move between collections and add-ons.",[680,1990,1991,1996],{},[695,1992,1993],{},[583,1994,1995],{},"i",[695,1997,1998],{},"Installs the selected add-on, after its review.",[680,2000,2001,2006],{},[695,2002,2003],{},[583,2004,2005],{},"u",[695,2007,2008,2009,647],{},"Updates the selected installed add-on, after its review. With nothing new it says ",[583,2010,2011],{},"current",[680,2013,2014,2019],{},[695,2015,2016],{},[583,2017,2018],{},"e",[695,2020,2021],{},"Enables or disables the selected add-on.",[680,2023,2024,2028],{},[695,2025,2026],{},[583,2027,1798],{},[695,2029,2030],{},"Uninstalls the selected add-on, after a confirm. Kraft refuses while a chain or repo still uses it.",[680,2032,2033,2037],{},[695,2034,2035],{},[583,2036,1203],{},[695,2038,2039],{},"A menu: add a collection, or remove the selected one. For a collection fetched from git, and its add-ons, also auto-update on or off, and fetching its catalogue.",[557,2041,2042,654,2044,895,2046,2048,2049,2052,2053,2056],{},[583,2043,2018],{},[583,2045,1798],{},[583,2047,1203],{}," each run their ",[583,2050,2051],{},"kraft admin addon"," verb in the output panel,\nwhich says what it did, and the list is read again after. ",[583,2054,2055],{},"\u002Fadmin addon validate"," is a typed command only.",[557,2058,2059,2060,895,2063,2066,2067,2069,2070,2073,2074,2077,2078,895,2080,2082],{},"The review is what ",[583,2061,2062],{},"kraft admin addon install",[583,2064,2065],{},"update"," print: the old and\nnew version, what it can reach, and what it contains. ",[712,2068,1665],{}," has the\nfocus. ",[712,2071,2072],{},"Apply"," takes it, and the running server loads it. Quitting with a\nreview open answers it Back. A long review scrolls: Tab from Back reaches\nit. After a ",[583,2075,2076],{},"kraft admin update"," that installed a new Kraft, ",[583,2079,1995],{},[583,2081,2005],{}," stay\nclosed until you restart the console.",[575,2084,762],{"id":2085},"repos",[557,2087,2088,738,2090,2093,2094,2097,2098,2101,2102,2105,2106,2109,2110,2113,2114,2116],{},[583,2089,813],{},[583,2091,2092],{},"\u002Frepo"," lists every repo Kraft has, as ",[583,2095,2096],{},"kraft repo list --all"," does, in\na panel titled ",[712,2099,2100],{},"Connected repos"," with ",[583,2103,2104],{},"c connects one"," on its edge.\n",[583,2107,2108],{},"*"," marks the repo the console was opened in. Under each name and path are its\ntest and setup commands: ",[583,2111,2112],{},"not set"," when nothing is decided yet, ",[583,2115,1503],{}," when\nit was declared empty.",[674,2118,2119,2127],{},[677,2120,2121],{},[680,2122,2123,2125],{},[683,2124,797],{},[683,2126,800],{},[690,2128,2129,2140,2150],{},[680,2130,2131,2137],{},[695,2132,2133,654,2135],{},[583,2134,1006],{},[583,2136,1009],{},[695,2138,2139],{},"Move between repos.",[680,2141,2142,2147],{},[695,2143,2144],{},[583,2145,2146],{},"c",[695,2148,2149],{},"Connects a repo through a form: its path, starting at the current directory, and the test and setup commands Kraft proposes for it. Enter in the path reads it again.",[680,2151,2152,2156],{},[695,2153,2154],{},[583,2155,1798],{},[695,2157,2158],{},"Disconnects the selected repo, after a confirm. Kraft refuses while the repo has an open item, paused ones included.",[557,2160,2161,2162,2165,2166,2169,2170,2173,2174,2177,2178,2181],{},"The form runs ",[583,2163,2164],{},"kraft repo connect"," in the output panel, which says what it\nsaved. A command you leave as proposed is not passed, so the proposal stands\nwhole. ",[712,2167,2168],{},"Verify"," also runs both commands once in a throwaway worktree; ",[583,2171,2172],{},"x","\nin the output panel stops it. The repo's ",[583,2175,2176],{},".kraft\u002F"," library is not offered\nhere: ",[583,2179,2180],{},"\u002Frepo library"," reviews it.",[575,2183,2185],{"id":2184},"the-prompt","The prompt",[557,2187,2188,2189,2192,2193,2196,2197,2199,2200,2202,2203,895,2206,2209],{},"Every ",[583,2190,2191],{},"kraft"," verb runs from the prompt at the bottom of every screen, a framed\nline that starts with ",[583,2194,2195],{},"❯",". Type it with or without the leading ",[583,2198,836],{},", and with\nor without ",[583,2201,2191],{},", so a command the CLI printed can be pasted back as it is:\n",[583,2204,2205],{},"\u002Fitem resume a91c",[583,2207,2208],{},"kraft item resume a91c"," do the same.",[557,2211,2212,2213,2216,2217,2220,2221,2224,2225,2228,2229,647],{},"While it is empty, it says what this screen takes: on the Board,\n",[583,2214,2215],{},"a approve · r reject · \u002Fcommand…","; on an item, ",[583,2218,2219],{},"\u002Fitem … for this item, or esc",", since an ",[583,2222,2223],{},"\u002Fitem"," verb typed there with no id acts on that item, as\n",[583,2226,2227],{},"\u002Fitem pause"," does; elsewhere ",[583,2230,2231],{},"\u002Fcommand…",[674,2233,2234,2242],{},[677,2235,2236],{},[680,2237,2238,2240],{},[683,2239,797],{},[683,2241,800],{},[690,2243,2244,2251,2258,2266],{},[680,2245,2246,2248],{},[695,2247,1026],{},[695,2249,2250],{},"Runs the command in the output panel.",[680,2252,2253,2255],{},[695,2254,1294],{},[695,2256,2257],{},"Completes a group, a verb, a flag, or an item id where the verb takes one. With several choices, it completes what they share and lists them.",[680,2259,2260,2263],{},[695,2261,2262],{},"↑",[695,2264,2265],{},"The commands you ran since the console opened.",[680,2267,2268,2270],{},[695,2269,870],{},[695,2271,2272],{},"Clears the prompt and hands the keys back to the screen.",[557,2274,2275,2276,621,2279,654,2282,647],{},"The footer names these while the prompt has the focus: ",[583,2277,2278],{},"esc leave",[583,2280,2281],{},"tab complete",[583,2283,2284],{},"↑ previous",[961,2286,2288],{"id":2287},"the-status-line","The status line",[557,2290,2291],{},"Under the prompt, one line says how things stand, from the server's own\nanswers. Each part is read when the console reaches the server, and again\nwhenever it reconnects. A part whose read fails is left out.",[674,2293,2294,2302],{},[677,2295,2296],{},[680,2297,2298,2300],{},[683,2299,685],{},[683,2301,688],{},[690,2303,2304,2321,2335,2352],{},[680,2305,2306,2311],{},[695,2307,2308],{},[583,2309,2310],{},"✻ 2 running on their own",[695,2312,2313,2314,2316,2317,2320],{},"How many items in ",[712,2315,925],{}," the Board shows, or ",[583,2318,2319],{},"nothing running",". The spinner turns while an agent is at work.",[680,2322,2323,2328],{},[695,2324,2325],{},[583,2326,2327],{},"$4.10 of $50.00 today",[695,2329,2330,2331,2334],{},"What this instance has spent since local midnight, against the daily cap; ",[583,2332,2333],{},"$4.10 today"," with no cap. Read again when a session ends.",[680,2336,2337,2342],{},[695,2338,2339],{},[583,2340,2341],{},"claude ● codex ○ +5",[695,2343,2344,2345,2347,2348,2351],{},"The agents whose CLI the server finds on its path (",[583,2346,959],{},") or does not (",[583,2349,2350],{},"○","), found ones first, three at most.",[680,2353,2354,2359],{},[695,2355,2356],{},[583,2357,2358],{},"? keys",[695,2360,2361],{},"In a window under 80 columns, where the footer is hidden.",[557,2363,2364,2365,647],{},"A narrow window drops the agents first, then the spend. With no server, the\nline keeps only ",[583,2366,2358],{},[961,2368,2370],{"id":2369},"typed-commands","Typed commands",[557,2372,2373,2374,2376,2377,2379,2380,2382,2383,895,2386,2388,2389,2392],{},"A group on its own opens its screen: ",[583,2375,1700],{}," the Server screen, ",[583,2378,2092],{},"\nRepos, ",[583,2381,1897],{}," Add-ons, ",[583,2384,2385],{},"\u002Fview",[583,2387,2223],{}," the Board. ",[583,2390,2391],{},"\u002Fview watch"," opens\nthe Board too.",[557,2394,2395],{},"Some commands are refused, with a sentence saying why:",[674,2397,2398,2408],{},[677,2399,2400],{},[680,2401,2402,2405],{},[683,2403,2404],{},"Typed",[683,2406,2407],{},"Why",[690,2409,2410,2426,2439,2449],{},[680,2411,2412,2419],{},[695,2413,2414,654,2416],{},[583,2415,2191],{},[583,2417,2418],{},"\u002Fadmin start",[695,2420,2421,2422,2425],{},"The server would run inside the console and stop when it quits. ",[583,2423,2424],{},"\u002Fadmin start --detach"," starts it on its own.",[680,2427,2428,2436],{},[695,2429,2430,654,2433],{},[583,2431,2432],{},"\u002Fadmin mcp",[583,2434,2435],{},"\u002Fadmin permission-hook",[695,2437,2438],{},"They talk to an agent or a harness, not to you.",[680,2440,2441,2446],{},[695,2442,2443],{},[583,2444,2445],{},"\u002Fconsole",[695,2447,2448],{},"You are in it.",[680,2450,2451,2459],{},[695,2452,2453,654,2456],{},[583,2454,2455],{},"\u002Fview logs -f",[583,2457,2458],{},"\u002Fview events -f",[695,2460,2461,2462,2465],{},"Following arrives with the Item screen. Leave out ",[583,2463,2464],{},"-f"," to print what is there now.",[557,2467,2468,2471,2472,2475],{},[583,2469,2470],{},"\u002Fadmin update"," never passes ",[583,2473,2474],{},"-y",", even when you type it, so the refusals it\nwould otherwise skip still show.",[575,2477,2479],{"id":2478},"the-output-panel","The output panel",[557,2481,2482,2483,2485],{},"Each command runs as its own ",[583,2484,2191],{}," process, and the output panel opens above\nthe prompt to show it: the command, everything it prints as it prints it, and\nits exit code, in red when it is not 0. The panel keeps every command you ran\nsince the console opened.",[674,2487,2488,2496],{},[677,2489,2490],{},[680,2491,2492,2494],{},[683,2493,797],{},[683,2495,800],{},[690,2497,2498,2510],{},[680,2499,2500,2507],{},[695,2501,2502,738,2504],{},[583,2503,2172],{},[712,2505,2506],{},"Stop",[695,2508,2509],{},"Stops the running command, as Ctrl+C would in a terminal, so it cleans up after itself.",[680,2511,2512,2514],{},[695,2513,870],{},[695,2515,2516],{},"Closes the panel. The command keeps running; Ctrl+O shows it again.",[557,2518,2519],{},"One command runs at a time. A command has no terminal to ask you anything on,\nso one that would ask goes on without asking or stops with its own refusal.\nQuitting the console stops a running command, and kills it if it has not\nstopped within three seconds.",[575,2521,2523],{"id":2522},"confirms","Confirms",[557,2525,2526,2527,2529,2530,654,2533,654,2535,654,2538,621,2541,654,2543,654,2545,738,2548,647],{},"Before a command that cannot be undone, the console asks first. ",[712,2528,1665],{}," has\nthe focus, so Enter alone never goes on, and Esc answers Back. The other\nbutton names the command: ",[712,2531,2532],{},"Restart",[712,2534,2506],{},[712,2536,2537],{},"Update",[712,2539,2540],{},"Disconnect",[712,2542,1529],{},[712,2544,1537],{},[712,2546,2547],{},"Abandon",[712,2549,2550],{},"Uninstall",[674,2552,2553,2563],{},[677,2554,2555],{},[680,2556,2557,2560],{},[683,2558,2559],{},"Command",[683,2561,2562],{},"What the question adds",[690,2564,2565,2581,2599],{},[680,2566,2567,2578],{},[695,2568,2569,654,2572,654,2575],{},[583,2570,2571],{},"\u002Fadmin restart",[583,2573,2574],{},"\u002Fadmin stop",[583,2576,2577],{},"\u002Fadmin update --restart",[695,2579,2580],{},"The running items whose agents the stop ends.",[680,2582,2583,2596],{},[695,2584,2585,654,2587,654,2590,654,2593],{},[583,2586,2470],{},[583,2588,2589],{},"\u002Frepo disconnect",[583,2591,2592],{},"\u002Fitem cancel",[583,2594,2595],{},"\u002Fadmin addon uninstall",[695,2597,2598],{},"What going on does.",[680,2600,2601,2609],{},[695,2602,2603,654,2606],{},[583,2604,2605],{},"\u002Fitem abandon --reason \"...\" --yes",[583,2607,2608],{},"\u002Fitem archive --yes",[695,2610,2611,2612,2615],{},"What is lost. Without ",[583,2613,2614],{},"--yes"," they only preview, so nothing is asked.",[557,2617,2618,895,2620,2622,2623,2625,2626,654,2628,2630,2631,2633,2634,2636,2637,647],{},[583,2619,1830],{},[583,2621,1844],{}," on the Server screen ask the same as ",[583,2624,2571],{}," and\n",[583,2627,2577],{},[583,2629,1798],{}," on Repos the same as ",[583,2632,2589],{},", and\n",[583,2635,1798],{}," on Add-ons the same as ",[583,2638,2595],{},[575,2640,2642],{"id":2641},"small-windows","Small windows",[557,2644,2645,2646,2648],{},"The console is laid out for 80 columns by 24 rows. Under 30 rows, panels give\nup their top and bottom edges, so each title becomes a rule, and the prompt is\none line: the rows go to the work. Narrower than 80 columns, the footer goes\nand the status line names ",[583,2647,2358],{},", so it still works as a side pane. Smaller\nthan 60 by 16, it shows \"make the window larger\" until the window grows.",[575,2650,1886],{"id":2651},"when-it-cannot-reach-the-server",[674,2653,2654,2664],{},[677,2655,2656],{},[680,2657,2658,2661],{},[683,2659,2660],{},"It says",[683,2662,2663],{},"What it means",[690,2665,2666,2683,2693,2711],{},[680,2667,2668,2673],{},[695,2669,2670],{},[583,2671,2672],{},"No server at 127.0.0.1:8765.",[695,2674,2675,2676,2678,2679,2682],{},"Nothing answers on Kraft's address. ",[712,2677,1881],{},", focused, runs ",[583,2680,2681],{},"kraft admin start --detach","; the console follows the server as soon as it answers. The button is not offered for a server on another host.",[680,2684,2685,2690],{},[695,2686,2687],{},[583,2688,2689],{},"The server could not show the board: 500: ...",[695,2691,2692],{},"The server answers, but three reads of the board in a row failed. The rest is the server's own words. The console keeps trying.",[680,2694,2695,2700],{},[695,2696,2697],{},[583,2698,2699],{},"The server refused this machine's token (run\u002Fmcp-token).",[695,2701,2702,2703,2706,2707,2710],{},"A server answers but does not accept the token the console read from ",[583,2704,2705],{},"run\u002Fmcp-token"," in its ",[583,2708,2709],{},"KRAFT_HOME",". Check that both use the same home.",[680,2712,2713,2717],{},[695,2714,2715],{},[583,2716,705],{},[695,2718,2719],{},"The event stream dropped, as it does while the server restarts. The console tries again, then reads the board afresh.",{"title":2721,"searchDepth":2722,"depth":2722,"links":2723},"",2,[2724,2725,2726,2727,2728,2732,2733,2734,2735,2736,2738,2739,2743,2744,2745,2746],{"id":577,"depth":2722,"text":578},{"id":609,"depth":2722,"text":610},{"id":664,"depth":2722,"text":665},{"id":784,"depth":2722,"text":785},{"id":916,"depth":2722,"text":917,"children":2729},[2730],{"id":963,"depth":2731,"text":964},3,{"id":1127,"depth":2722,"text":1128},{"id":1247,"depth":2722,"text":1033},{"id":1550,"depth":2722,"text":856},{"id":1691,"depth":2722,"text":1692},{"id":1889,"depth":2722,"text":2737},"Add-​ons",{"id":2085,"depth":2722,"text":762},{"id":2184,"depth":2722,"text":2185,"children":2740},[2741,2742],{"id":2287,"depth":2731,"text":2288},{"id":2369,"depth":2731,"text":2370},{"id":2478,"depth":2722,"text":2479},{"id":2522,"depth":2722,"text":2523},{"id":2641,"depth":2722,"text":2642},{"id":2651,"depth":2722,"text":1886},"The terminal UI that kraft console opens, for checking in on Kraft from a terminal, a tmux pane or over SSH.","md",null,{},true,{"title":309,"description":2747},"GpWy3H8rq11GAoq0afxRipVR8cSu4xX0og3R76Hvxe4",[2755,2757],{"title":305,"path":306,"stem":307,"description":2756,"children":-1},"The kraft admin verbs: start, stop, check, update, and configure this machine's server.",{"title":313,"path":314,"stem":315,"description":2758,"children":-1},"The nine statuses a work item can hold, what moves it between them, and the status the board shows for each.",1792362341262]