[{"data":1,"prerenderedAt":1612},["ShallowReactive",2],{"navigation_docs":3,"-reference-triggers":520,"-reference-triggers-surround":1607},[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":440,"body":522,"description":1600,"extension":1601,"links":1602,"meta":1603,"navigation":1604,"path":441,"seo":1605,"stem":442,"__hash__":1606},"docs\u002F5.reference\u002F07.triggers.md",{"type":523,"value":524,"toc":1584},"minimark",[525,567,572,582,668,791,795,798,851,857,953,968,979,982,1013,1017,1037,1059,1063,1066,1107,1113,1119,1122,1170,1188,1198,1250,1259,1267,1271,1274,1353,1356,1372,1376,1524,1527,1535,1557,1561,1580],[526,527,528,529,534,535,539,540,544,545,547,548,551,552,556,557,559,560,563,564,566],"p",{},"A ",[530,531,533],"a",{"href":532},"\u002Fconcepts\u002Fvocabulary#trigger","trigger"," files a ",[530,536,538],{"href":537},"\u002Fconcepts\u002Fvocabulary#work-item","work item"," from an event instead of ",[541,542,543],"code",{},"kraft item create",". There\nare two kinds, a schedule in ",[541,546,334],{}," and an HTTP call. Both always file the\nitem ",[541,549,550],{},"paused",", exactly like manual ",[530,553,555],{"href":554},"\u002Fconcepts\u002Fvocabulary#intake","intake",": a\ntrigger cannot start work, any more than ",[541,558,543],{}," without\n",[541,561,562],{},"--autostart"," can. To set one up, see\n",[530,565,110],{"href":111},".",[568,569,571],"h2",{"id":570},"schedules","Schedules",[526,573,574,575,578,579,581],{},"A schedule is an entry in the ",[541,576,577],{},"schedules:"," list of ",[541,580,334],{},":",[583,584,590],"pre",{"className":585,"code":586,"filename":587,"language":588,"meta":589,"style":589},"language-yaml shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","schedules:\n  - cron: \"0 9 * * 1,2,3,4,5\"   # 9:00 UTC on weekdays\n    repo: \u002Fpath\u002Fto\u002Frepo\n    chain: default\n    title: \"Weekday dependency check\"\n    description: \"Filed by the 09:00 UTC weekday schedule\"\n","config\u002Fintake.yaml","yaml","",[541,591,592,604,624,635,646,657],{"__ignoreMap":589},[593,594,597,600],"span",{"class":595,"line":596},"line",1,[593,598,570],{"class":599},"sb7M8",[593,601,603],{"class":602},"s7iLA",":\n",[593,605,607,610,613,616,620],{"class":595,"line":606},2,[593,608,609],{"class":602},"  - ",[593,611,612],{"class":599},"cron",[593,614,615],{"class":602},": ",[593,617,619],{"class":618},"semJd","\"0 9 * * 1,2,3,4,5\"",[593,621,623],{"class":622},"sq92B","   # 9:00 UTC on weekdays\n",[593,625,627,630,632],{"class":595,"line":626},3,[593,628,629],{"class":599},"    repo",[593,631,615],{"class":602},[593,633,634],{"class":618},"\u002Fpath\u002Fto\u002Frepo\n",[593,636,638,641,643],{"class":595,"line":637},4,[593,639,640],{"class":599},"    chain",[593,642,615],{"class":602},[593,644,645],{"class":618},"default\n",[593,647,649,652,654],{"class":595,"line":648},5,[593,650,651],{"class":599},"    title",[593,653,615],{"class":602},[593,655,656],{"class":618},"\"Weekday dependency check\"\n",[593,658,660,663,665],{"class":595,"line":659},6,[593,661,662],{"class":599},"    description",[593,664,615],{"class":602},[593,666,667],{"class":618},"\"Filed by the 09:00 UTC weekday schedule\"\n",[669,670,671,690],"table",{},[672,673,674],"thead",{},[675,676,677,681,684,687],"tr",{},[678,679,680],"th",{},"Field",[678,682,683],{},"Type",[678,685,686],{},"Default",[678,688,689],{},"Meaning",[691,692,693,713,730,756,774],"tbody",{},[675,694,695,700,703,706],{},[696,697,698],"td",{},[541,699,612],{},[696,701,702],{},"string",[696,704,705],{},"required",[696,707,708,709,566],{},"A five-field cron expression, read in UTC. See ",[530,710,712],{"href":711},"#cron-syntax","Cron syntax",[675,714,715,720,722,724],{},[696,716,717],{},[541,718,719],{},"repo",[696,721,702],{},[696,723,705],{},[696,725,726,727,566],{},"Path of a repo you connected with ",[541,728,729],{},"kraft repo connect",[675,731,732,737,739,741],{},[696,733,734],{},[541,735,736],{},"chain",[696,738,702],{},[696,740,705],{},[696,742,743,744,747,748,751,752,755],{},"A chain id from ",[541,745,746],{},"config\u002Fchains\u002F",", or an add-on's or repo library's ",[541,749,750],{},"\u003Cnamespace>:\u003Cname>",". A schedule never takes a repo library's ",[541,753,754],{},"default"," for you: it names its own chain.",[675,757,758,763,765,767],{},[696,759,760],{},[541,761,762],{},"title",[696,764,702],{},[696,766,705],{},[696,768,769,770,566],{},"The work item's title. It is one line: see ",[530,771,773],{"href":772},"#schedule-titles","Schedule titles",[675,775,776,781,783,788],{},[696,777,778],{},[541,779,780],{},"description",[696,782,702],{},[696,784,785],{},[541,786,787],{},"\"\"",[696,789,790],{},"The work item's description.",[792,793,712],"h3",{"id":794},"cron-syntax",[526,796,797],{},"The five fields, in order:",[669,799,800,809],{},[672,801,802],{},[675,803,804,806],{},[678,805,680],{},[678,807,808],{},"Allowed values",[691,810,811,819,827,835,843],{},[675,812,813,816],{},[696,814,815],{},"minute",[696,817,818],{},"0-59",[675,820,821,824],{},[696,822,823],{},"hour",[696,825,826],{},"0-23",[675,828,829,832],{},[696,830,831],{},"day of month",[696,833,834],{},"1-31",[675,836,837,840],{},[696,838,839],{},"month",[696,841,842],{},"1-12",[675,844,845,848],{},[696,846,847],{},"day of week",[696,849,850],{},"0-7 (0 and 7 are both Sunday)",[526,852,853,854,581],{},"Each field takes any of these forms, or a comma-separated list of them, such as\n",[541,855,856],{},"1,2,3,4,5",[669,858,859,872],{},[672,860,861],{},[675,862,863,866,869],{},[678,864,865],{},"Form",[678,867,868],{},"Example",[678,870,871],{},"Matches",[691,873,874,888,901,914,927,940],{},[675,875,876,881,885],{},[696,877,878],{},[541,879,880],{},"*",[696,882,883],{},[541,884,880],{},[696,886,887],{},"Every value.",[675,889,890,893,898],{},[696,891,892],{},"An integer",[696,894,895],{},[541,896,897],{},"9",[696,899,900],{},"That value.",[675,902,903,906,911],{},[696,904,905],{},"A range",[696,907,908],{},[541,909,910],{},"1-5",[696,912,913],{},"Every value from 1 to 5.",[675,915,916,919,924],{},[696,917,918],{},"A step over everything",[696,920,921],{},[541,922,923],{},"*\u002F15",[696,925,926],{},"Every 15th value of the field, from its first (minutes 0, 15, 30, 45).",[675,928,929,932,937],{},[696,930,931],{},"A step over a range",[696,933,934],{},[541,935,936],{},"10-40\u002F10",[696,938,939],{},"Every 10th value from 10 to 40 (10, 20, 30, 40).",[675,941,942,945,950],{},[696,943,944],{},"A step from a start",[696,946,947],{},[541,948,949],{},"5\u002F20",[696,951,952],{},"Every 20th value from 5 to the field's top (minutes 5, 25, 45).",[526,954,955,956,959,960,963,964,967],{},"Names (",[541,957,958],{},"MON",", ",[541,961,962],{},"JAN",") are not read. A day of month and a day of week must both\nmatch: ",[541,965,966],{},"0 9 1 * 1"," fires only on a 1st that is a Monday, not on every 1st and\nevery Monday as some crons do.",[526,969,970,971,973,974,978],{},"A value outside its field, a backwards range, or a zero step is refused where\n",[541,972,334],{}," is read, and the file does not load. ",[530,975,977],{"href":976},"\u002Freference\u002Fconfiguration\u002Fintake#when-the-file-does-not-load","When the file does not load"," says what you see.",[792,980,773],{"id":981},"schedule-titles",[983,984,985,989,1007,1010],"ul",{},[986,987,988],"li",{},"A title is one line. One with a line break is filed with its first line as the\ntitle and the rest at the top of the description, rather than skipped.",[986,990,991,992,995,996,999,1000,995,1003,1006],{},"A block scalar (",[541,993,994],{},"title: >"," or ",[541,997,998],{},"title: |",") ends in a line break unless written\n",[541,1001,1002],{},">-",[541,1004,1005],{},"|-",". Kraft drops that trailing break.",[986,1008,1009],{},"Control characters are dropped too.",[986,1011,1012],{},"A blank title takes the description's first line.",[792,1014,1016],{"id":1015},"when-a-schedule-fires","When a schedule fires",[983,1018,1019,1022,1025,1028],{},[986,1020,1021],{},"Kraft evaluates the schedule in UTC, not in the server's local time zone.",[986,1023,1024],{},"It checks once a minute. A minute missed while the server is down is not\nbackfilled.",[986,1026,1027],{},"The poller runs for the life of the server, so a schedule you add later fires\nwithout a restart.",[986,1029,1030,1033,1034,1036],{},[541,1031,1032],{},"kraft admin reload"," rereads ",[541,1035,334],{},", and so does a publish from\nSettings › Auto-intake.",[526,1038,528,1039,1042,1043,1045,1046,1048,1049,1051,1052,1054,1055,1058],{},[541,1040,1041],{},"triggers:"," entry left in ",[541,1044,318],{}," still fires. The Auto-intake screen reads and writes ",[541,1047,334],{}," only, so it does not show one: change it in the file. A ",[541,1050,612],{}," there that Kraft cannot read at all (a word, the wrong number of fields) refuses ",[541,1053,318],{},". ",[530,1056,176],{"href":1057},"\u002Fguides\u002Frun\u002Fupgrade-from-1-4#config-directory-and-files"," says how schedules moved, and what happens to the other bad ones.",[792,1060,1062],{"id":1061},"when-kraft-skips-a-schedule","When Kraft skips a schedule",[526,1064,1065],{},"Kraft skips an entry, logs a warning naming the reason, and still fires the\nother entries due in the same tick, when:",[983,1067,1068,1077,1082,1090,1093,1104],{},[986,1069,1070,1071,1073,1074,1076],{},"the ",[541,1072,719],{}," is not connected (the warning names ",[541,1075,729],{},");",[986,1078,1070,1079,1081],{},[541,1080,736],{}," id is unknown;",[986,1083,1070,1084,1086,1087,1089],{},[541,1085,762],{}," and the ",[541,1088,780],{}," are both blank;",[986,1091,1092],{},"the library or a chain is invalid;",[986,1094,1095,1096,1098,1099,1101,1102,1076],{},"its ",[541,1097,612],{}," cannot be read (a guard: an ",[541,1100,334],{}," holding one does not load,\nsee ",[530,1103,977],{"href":976},[986,1105,1106],{},"intake refuses the item (a chain policy past the instance maximum, or an\nunreadable attachment).",[526,1108,1109,1110,1112],{},"When ",[541,1111,318],{}," is invalid, Kraft skips the whole tick instead, so no entry\nfires that minute.",[568,1114,1116],{"id":1115},"post-apitriggers",[541,1117,1118],{},"POST \u002Fapi\u002Ftriggers",[526,1120,1121],{},"The HTTP twin of a schedule, for anything that can fire a webhook and cannot wait\nfor the next minute tick. A call like this, from the machine running Kraft:",[583,1123,1127],{"className":1124,"code":1125,"language":1126,"meta":589,"style":589},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","curl -s -X POST http:\u002F\u002F127.0.0.1:8765\u002Fapi\u002Ftriggers \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"title\": \"Nightly dependency check\", \"repo\": \"\u002Fpath\u002Fto\u002Frepo\"}'\n","bash",[541,1128,1129,1152,1162],{"__ignoreMap":589},[593,1130,1131,1135,1139,1142,1145,1148],{"class":595,"line":596},[593,1132,1134],{"class":1133},"szw1H","curl",[593,1136,1138],{"class":1137},"ssYy9"," -s",[593,1140,1141],{"class":1137}," -X",[593,1143,1144],{"class":618}," POST",[593,1146,1147],{"class":618}," http:\u002F\u002F127.0.0.1:8765\u002Fapi\u002Ftriggers",[593,1149,1151],{"class":1150},"sklAV"," \\\n",[593,1153,1154,1157,1160],{"class":595,"line":606},[593,1155,1156],{"class":1137},"  -H",[593,1158,1159],{"class":618}," 'Content-Type: application\u002Fjson'",[593,1161,1151],{"class":1150},[593,1163,1164,1167],{"class":595,"line":626},[593,1165,1166],{"class":1137},"  -d",[593,1168,1169],{"class":618}," '{\"title\": \"Nightly dependency check\", \"repo\": \"\u002Fpath\u002Fto\u002Frepo\"}'\n",[526,1171,1172,1173,1176,1177,1180,1181,1054,1185,1187],{},"Once Kraft is bound off loopback, add ",[541,1174,1175],{},"-H \"Authorization: Bearer $TOKEN\"",", where ",[541,1178,1179],{},"$TOKEN"," is the trigger token and never the MCP token: see the warning below and ",[530,1182,1184],{"href":1183},"#authentication","Authentication",[530,1186,110],{"href":111}," has the worked example, including the call from another machine.",[526,1189,1190,1191,1194,1195,1197],{},"The call answers ",[541,1192,1193],{},"201"," with the new work item as JSON, filed ",[541,1196,550],{},". Cut to the fields\nthat matter, the body reads:",[583,1199,1203],{"className":1200,"code":1201,"language":1202,"meta":589,"style":589},"language-json shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","{\"id\": \"\u003Cwork-item-id>\", \"title\": \"Nightly dependency check\", \"status\": \"paused\", \"...\": \"...\"}\n","json",[541,1204,1205],{"__ignoreMap":589},[593,1206,1207,1210,1213,1215,1218,1220,1223,1225,1228,1230,1233,1235,1238,1240,1243,1245,1247],{"class":595,"line":596},[593,1208,1209],{"class":602},"{",[593,1211,1212],{"class":599},"\"id\"",[593,1214,615],{"class":602},[593,1216,1217],{"class":618},"\"\u003Cwork-item-id>\"",[593,1219,959],{"class":602},[593,1221,1222],{"class":599},"\"title\"",[593,1224,615],{"class":602},[593,1226,1227],{"class":618},"\"Nightly dependency check\"",[593,1229,959],{"class":602},[593,1231,1232],{"class":599},"\"status\"",[593,1234,615],{"class":602},[593,1236,1237],{"class":618},"\"paused\"",[593,1239,959],{"class":602},[593,1241,1242],{"class":599},"\"...\"",[593,1244,615],{"class":602},[593,1246,1242],{"class":618},[593,1248,1249],{"class":602},"}\n",[526,1251,1252,1253,1256,1257,566],{},"The full shape is in ",[541,1254,1255],{},"\u002Fopenapi.json","; see ",[530,1258,444],{"href":445},[1260,1261,1262,1263,566],"warning",{},"The trigger token works on this route only: its holder can file paused work and\nnothing else. The MCP bearer token works on every route, so its holder can also\nstart, approve and cancel work and change settings. Give CI and webhook senders\nthe trigger token. To rotate either, see\n",[530,1264,1266],{"href":1265},"\u002Fguides\u002Frun\u002Fremote-access#rotate-the-token","Rotate the token",[792,1268,1270],{"id":1269},"request","Request",[526,1272,1273],{},"The request body is JSON:",[669,1275,1276,1288],{},[672,1277,1278],{},[675,1279,1280,1282,1284,1286],{},[678,1281,680],{},[678,1283,683],{},[678,1285,686],{},[678,1287,689],{},[691,1289,1290,1303,1316,1339],{},[675,1291,1292,1296,1298,1300],{},[696,1293,1294],{},[541,1295,762],{},[696,1297,702],{},[696,1299,705],{},[696,1301,1302],{},"The work item's title.",[675,1304,1305,1309,1311,1313],{},[696,1306,1307],{},[541,1308,719],{},[696,1310,702],{},[696,1312,705],{},[696,1314,1315],{},"Path of a connected repo.",[675,1317,1318,1322,1324,1336],{},[696,1319,1320],{},[541,1321,736],{},[696,1323,702],{},[696,1325,1326,1327,1330,1331,1333,1334],{},"The repo's ",[541,1328,1329],{},"default_chain",", else its repo library's ",[541,1332,754],{}," chain, else ",[541,1335,754],{},[696,1337,1338],{},"A chain id.",[675,1340,1341,1345,1347,1351],{},[696,1342,1343],{},[541,1344,780],{},[696,1346,702],{},[696,1348,1349],{},[541,1350,787],{},[696,1352,790],{},[792,1354,1184],{"id":1355},"authentication",[526,1357,1358,1359,1362,1363,1366,1367,1371],{},"Once Kraft is bound off loopback, send the trigger token in ",[541,1360,1361],{},"$KRAFT_HOME\u002Frun\u002Ftrigger-token"," as ",[541,1364,1365],{},"Authorization: Bearer \u003Ctoken>",". The MCP bearer token or a browser session cookie also works. While Kraft is bound to loopback, the machine running it needs no token. ",[530,1368,1370],{"href":1369},"\u002Freference\u002Fhttp-api#who-may-call","Who may call"," lists every caller.",[792,1373,1375],{"id":1374},"responses","Responses",[669,1377,1378,1387],{},[672,1379,1380],{},[675,1381,1382,1385],{},[678,1383,1384],{},"Status",[678,1386,689],{},[691,1388,1389,1408,1418,1431,1447,1464,1486,1495,1508],{},[675,1390,1391,1395],{},[696,1392,1393],{},[541,1394,1193],{},[696,1396,1397,1398,1401,1402,1405,1406,566],{},"The item was filed. The body is the work item as JSON: ",[541,1399,1400],{},"id"," is the new item's id and ",[541,1403,1404],{},"status"," is ",[541,1407,550],{},[675,1409,1410,1415],{},[696,1411,1412],{},[541,1413,1414],{},"401",[696,1416,1417],{},"Kraft is bound off loopback, and the request has no valid bearer token or session.",[675,1419,1420,1425],{},[696,1421,1422],{},[541,1423,1424],{},"403",[696,1426,1427,1428,1430],{},"The caller is refused. ",[530,1429,1370],{"href":1369}," lists the causes.",[675,1432,1433,1438],{},[696,1434,1435],{},[541,1436,1437],{},"422",[696,1439,1440,1442,1443,566],{},[541,1441,762],{}," is missing, empty, over 500 characters, or not one line of plain text. See ",[530,1444,1446],{"href":1445},"#the-title","The title",[675,1448,1449,1453],{},[696,1450,1451],{},[541,1452,1437],{},[696,1454,1455,1457,1458,1460,1461,1463],{},[541,1456,719],{}," is missing or not connected (the message names ",[541,1459,729],{},"), its path no longer exists, or ",[541,1462,300],{},", the repo's policy or its steering cannot be read or is invalid.",[675,1465,1466,1470],{},[696,1467,1468],{},[541,1469,1437],{},[696,1471,1472,1474,1475,1477,1478,1481,1482,1485],{},[541,1473,736],{}," names no chain or one that does not resolve, or ",[541,1476,736],{}," and ",[541,1479,1480],{},"chain_template"," are both sent and name different chains (the ",[541,1483,1484],{},"detail"," names both).",[675,1487,1488,1492],{},[696,1489,1490],{},[541,1491,1437],{},[696,1493,1494],{},"Another field has the wrong type.",[675,1496,1497,1502],{},[696,1498,1499],{},[541,1500,1501],{},"502",[696,1503,1504,1505,566],{},"Filing failed after the checks passed. The message starts ",[541,1506,1507],{},"intake failed:",[675,1509,1510,1515],{},[696,1511,1512],{},[541,1513,1514],{},"503",[696,1516,1517,1519,1520,1523],{},[541,1518,318],{},", the library or a chain is invalid, so Kraft refuses all new work. ",[541,1521,1522],{},"kraft admin doctor"," names the file.",[792,1525,1446],{"id":1526},"the-title",[526,1528,528,1529,1531,1532,1534],{},[541,1530,1437],{}," for ",[541,1533,762],{}," says why:",[983,1536,1537,1543,1551],{},[986,1538,1539,1542],{},[541,1540,1541],{},"title cannot be empty",": the title is empty or only whitespace.",[986,1544,1545,1548,1549,566],{},[541,1546,1547],{},"the title is one line",": it holds a line break, a trailing one included. Put the rest in ",[541,1550,780],{},[986,1552,1553,1556],{},[541,1554,1555],{},"the title is plain text",": it holds a tab, an escape or another control character.",[568,1558,1560],{"id":1559},"related","Related",[983,1562,1563,1568,1573],{},[986,1564,1565,1567],{},[530,1566,110],{"href":111},": set up a schedule or a webhook, and check it arrived.",[986,1569,1570,1572],{},[530,1571,444],{"href":445},": the rest of the API, and who may call it.",[986,1574,1575,1577,1578,566],{},[530,1576,334],{"href":335},": the other fields of ",[541,1579,334],{},[1581,1582,1583],"style",{},"html pre.shiki code .szw1H, html code.shiki .szw1H{--shiki-light:#702C00;--shiki-default:#702C00;--shiki-dark:#FFB757}html pre.shiki code .ssYy9, html code.shiki .ssYy9{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF}html pre.shiki code .semJd, html code.shiki .semJd{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF}html pre.shiki code .sklAV, html code.shiki .sklAV{--shiki-light:#A0111F;--shiki-default:#A0111F;--shiki-dark:#FF9492}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sb7M8, html code.shiki .sb7M8{--shiki-light:#024C1A;--shiki-default:#024C1A;--shiki-dark:#72F088}html pre.shiki code .s7iLA, html code.shiki .s7iLA{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6}html pre.shiki code .sq92B, html code.shiki .sq92B{--shiki-light:#66707B;--shiki-default:#66707B;--shiki-dark:#BDC4CC}",{"title":589,"searchDepth":606,"depth":606,"links":1585},[1586,1592,1599],{"id":570,"depth":606,"text":571,"children":1587},[1588,1589,1590,1591],{"id":794,"depth":626,"text":712},{"id":981,"depth":626,"text":773},{"id":1015,"depth":626,"text":1016},{"id":1061,"depth":626,"text":1062},{"id":1115,"depth":606,"text":1593,"children":1594},"POST \u002Fapi\u002F​triggers",[1595,1596,1597,1598],{"id":1269,"depth":626,"text":1270},{"id":1355,"depth":626,"text":1184},{"id":1374,"depth":626,"text":1375},{"id":1526,"depth":626,"text":1446},{"id":1559,"depth":606,"text":1560},"The schedule fields in intake.yaml and the POST \u002Fapi\u002Ftriggers contract for starting a chain from a cron or a webhook.","md",null,{},true,{"title":440,"description":1600},"VQ_0CTVVIgELQTf_A-LqiGO0apgoKjPljqKUhqrOrZE",[1608,1610],{"title":436,"path":437,"stem":438,"description":1609,"children":-1},"What Kraft's permission gate does per harness, how it decides, and the keys that configure it.",{"title":10,"path":445,"stem":446,"description":1611,"children":-1},"Which of Kraft's HTTP routes are stable, which the pages here document, where the full schema is, and who may call them.",1791801168688]