{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Harbor","colors":{"primary":"#111111","light":"#3F3F46","dark":"#F4F4F5"},"logo":{"light":"https://mintcdn.com/harborframework/l9c_ohETpnOqpDv2/harbor-wordmark-light.png?fit=max\u0026auto=format\u0026n=l9c_ohETpnOqpDv2\u0026q=85\u0026s=1f1a976e45a8c4d0f6c6aed694ec906f","dark":"https://mintcdn.com/harborframework/l9c_ohETpnOqpDv2/harbor-wordmark-dark.png?fit=max\u0026auto=format\u0026n=l9c_ohETpnOqpDv2\u0026q=85\u0026s=5ea5d359addaefdfb46e87339e87b65b"},"favicon":"https://mintcdn.com/harborframework/75tzvIWN0ZVN8I1R/harbor-logo.png?fit=max\u0026auto=format\u0026n=75tzvIWN0ZVN8I1R\u0026q=85\u0026s=014c9af368afe29d040b905c7c04fef7","api":{"playground":{"display":"interactive","proxy":false},"examples":{"defaults":"required","languages":["curl","python"],"prefill":true}},"appearance":{"default":"system"},"background":{"color":{"light":"#FAFAFA","dark":"#09090B"}},"navbar":{"links":[{"href":"https://github.com/harbor-framework/harbor","type":"github"}]},"footer":{"socials":{"github":"https://github.com/harbor-framework/harbor","discord":"https://discord.gg/QVvyhRw5UQ"},"links":[{"header":"Community","items":[{"label":"GitHub","href":"https://github.com/harbor-framework/harbor"},{"label":"Discord","href":"https://discord.gg/QVvyhRw5UQ"},{"label":"Hub","href":"https://hub.harborframework.com"}]}]},"seo":{"metatags":{"canonical":"https://docs.harborframework.com"}},"fonts":{"family":"Geist"},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","codeblocks":"system","latex":false},"contextual":{"options":["copy","view","claude","chatgpt"],"display":"header"},"navigation":{"global":{"anchors":[{"anchor":"Harbor Hub","icon":"layers","href":"https://hub.harborframework.com"},{"anchor":"Discord","icon":"messages-square","href":"https://discord.gg/QVvyhRw5UQ"},{"anchor":"Docs MCP","icon":"bot","href":"/ai-agents"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"harborframework","hasAudioNarration":false,"actualSubdomain":"harborframework","customDomains":["docs.harborframework.com"],"gitSource":{"type":"github","owner":"harbor-framework","repo":"harbor","deployBranch":"main","contentDirectory":"docs-mintlify","isPrivate":false,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{},"buildId":"6af35037032155910fed6011","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"Docs","count":72},{"language":"default","tag":"Jobs","count":19},{"language":"default","tag":"API \u0026 SDK","count":19},{"language":"default","tag":"Tasks","count":14},{"language":"default","tag":"Hosted Harbor","count":9},{"language":"default","tag":"News","count":7},{"language":"default","tag":"Agents","count":6},{"language":"default","tag":"Harbor Hub","count":6},{"language":"default","tag":"Earlier announcements","count":6},{"language":"default","tag":"Rollouts","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"/* adlam */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: italic;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxisyogzv91QhV44Z_GQBHsGf5PuWEt-oWZnOk-ljWSpwaFBwNS0hkBz.woff2) format('woff2');\n unicode-range: U+061F, U+0640, U+2015, U+201B, U+2020-2021, U+2030, U+204F, U+25CC, U+2E28-2E29, U+2E41, U+1E900-1E95F;\n}\n/* canadian-aboriginal */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: italic;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxisyogzv91QhV44Z_GQBHsGf5PuWEt-oWZnOk-ljWSpwaFBwJm0hkBz.woff2) format('woff2');\n unicode-range: U+02C7, U+02D8-02D9, U+02DB, U+0307, U+1400-167F, U+18B0-18F5, U+25CC, U+11AB0-11ABF;\n}\n/* cherokee */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: italic;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxisyogzv91QhV44Z_GQBHsGf5PuWEt-oWZnOk-ljWSpwaFBwKW0hkBz.woff2) format('woff2');\n unicode-range: U+0300-0302, U+0304, U+030B-030C, U+0323-0324, U+0330-0331, U+13A0-13FF, U+AB70-ABBF;\n}\n/* math */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: italic;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxisyogzv91QhV44Z_GQBHsGf5PuWEt-oWZnOk-ljWSpwaFBwMq0hkBz.woff2) format('woff2');\n unicode-range: U+0302-0303, U+0305, U+0307-0308, U+0310, U+0312, U+0315, U+031A, U+0326-0327, U+032C, U+032F-0330, U+0332-0333, U+0338, U+033A, U+0346, U+034D, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2016-2017, U+2034-2038, U+203C, U+2040, U+2043, U+2047, U+2050, U+2057, U+205F, U+2070-2071, U+2074-209F, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2100-2112, U+2114-2115, U+2117-2121, U+2123-214F, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B7, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+3030, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF;\n}\n/* old-permic */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: italic;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxisyogzv91QhV44Z_GQBHsGf5PuWEt-oWZnOk-ljWSpwaFBwNq0hkBz.woff2) format('woff2');\n unicode-range: U+0300, U+0306-0308, U+0313, U+0483, U+20DB, U+25CC, U+10350-1037A;\n}\n/* symbols */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: italic;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxisyogzv91QhV44Z_GQBHsGf5PuWEt-oWZnOk-ljWSpwaFBwNi0hkBz.woff2) format('woff2');\n unicode-range: U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AE, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB, U+1F8C0-1F8C1, U+1F8D0-1F8D8, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FAC6, U+1FAC8, U+1FACC-1FADD, U+1FADF-1FAEB, U+1FAEF-1FAFA, U+1FB00-1FBFF;\n}\n/* symbols2 */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: italic;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxisyogzv91QhV44Z_GQBHsGf5PuWEt-oWZnOk-ljWSpwaFBwAyVo31KpA.woff2) format('woff2');\n unicode-range: U+2000-2001, U+2004-2008, U+200A, U+23B8-23BD, U+2500-259F;\n}\n/* syriac */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: italic;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxisyogzv91QhV44Z_GQBHsGf5PuWEt-oWZnOk-ljWSpwaFBwMW0hkBz.woff2) format('woff2');\n unicode-range: U+0303-0304, U+0307-0308, U+030A, U+0320, U+0323-0325, U+032D-032E, U+0330-0331, U+060C, U+061B-061C, U+061F, U+0621, U+0640, U+064B-0655, U+0660-066C, U+0670, U+0700-074F, U+0860-086A, U+1DF8, U+1DFA, U+200C-200F, U+25CC, U+2670-2671;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: italic;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxisyogzv91QhV44Z_GQBHsGf5PuWEt-oWZnOk-ljWSpwaFBwLm0hkBz.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: italic;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxisyogzv91QhV44Z_GQBHsGf5PuWEt-oWZnOk-ljWSpwaFBwLi0hkBz.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: italic;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxisyogzv91QhV44Z_GQBHsGf5PuWEt-oWZnOk-ljWSpwaFBwLa0hg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* adlam */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: normal;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxiSyogzv91QhV44Z_GQBHsGf5PuckJMZfIVTPZaiXEp_jEb8LSsgg.woff2) format('woff2');\n unicode-range: U+061F, U+0640, U+2015, U+201B, U+2020-2021, U+2030, U+204F, U+25CC, U+2E28-2E29, U+2E41, U+1E900-1E95F;\n}\n/* canadian-aboriginal */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: normal;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxiSyogzv91QhV44Z_GQBHsGf5PuckJMZfIVTPZaiXEp_jFW8LSsgg.woff2) format('woff2');\n unicode-range: U+02C7, U+02D8-02D9, U+02DB, U+0307, U+1400-167F, U+18B0-18F5, U+25CC, U+11AB0-11ABF;\n}\n/* cherokee */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: normal;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxiSyogzv91QhV44Z_GQBHsGf5PuckJMZfIVTPZaiXEp_jFq8LSsgg.woff2) format('woff2');\n unicode-range: U+0300-0302, U+0304, U+030B-030C, U+0323-0324, U+0330-0331, U+13A0-13FF, U+AB70-ABBF;\n}\n/* math */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: normal;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxiSyogzv91QhV44Z_GQBHsGf5PuckJMZfIVTPZaiXEp_jEF8LSsgg.woff2) format('woff2');\n unicode-range: U+0302-0303, U+0305, U+0307-0308, U+0310, U+0312, U+0315, U+031A, U+0326-0327, U+032C, U+032F-0330, U+0332-0333, U+0338, U+033A, U+0346, U+034D, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2016-2017, U+2034-2038, U+203C, U+2040, U+2043, U+2047, U+2050, U+2057, U+205F, U+2070-2071, U+2074-209F, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2100-2112, U+2114-2115, U+2117-2121, U+2123-214F, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B7, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+3030, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF;\n}\n/* old-permic */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: normal;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxiSyogzv91QhV44Z_GQBHsGf5PuckJMZfIVTPZaiXEp_jEV8LSsgg.woff2) format('woff2');\n unicode-range: U+0300, U+0306-0308, U+0313, U+0483, U+20DB, U+25CC, U+10350-1037A;\n}\n/* symbols */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: normal;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxiSyogzv91QhV44Z_GQBHsGf5PuckJMZfIVTPZaiXEp_jEX8LSsgg.woff2) format('woff2');\n unicode-range: U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AE, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB, U+1F8C0-1F8C1, U+1F8D0-1F8D8, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FAC6, U+1FAC8, U+1FACC-1FADD, U+1FADF-1FAEB, U+1FAEF-1FAFA, U+1FB00-1FBFF;\n}\n/* symbols2 */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: normal;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxiSyogzv91QhV44Z_GQBHsGf5PuckJMZfIVTPZaiXEp_jHD0ZGRu3k.woff2) format('woff2');\n unicode-range: U+2000-2001, U+2004-2008, U+200A, U+23B8-23BD, U+2500-259F;\n}\n/* syriac */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: normal;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxiSyogzv91QhV44Z_GQBHsGf5PuckJMZfIVTPZaiXEp_jEK8LSsgg.woff2) format('woff2');\n unicode-range: U+0303-0304, U+0307-0308, U+030A, U+0320, U+0323-0325, U+032D-032E, U+0330-0331, U+060C, U+061B-061C, U+061F, U+0621, U+0640, U+064B-0655, U+0660-066C, U+0670, U+0700-074F, U+0860-086A, U+1DF8, U+1DFA, U+200C-200F, U+25CC, U+2670-2671;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: normal;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxiSyogzv91QhV44Z_GQBHsGf5PuckJMZfIVTPZaiXEp_jF28LSsgg.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: normal;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxiSyogzv91QhV44Z_GQBHsGf5PuckJMZfIVTPZaiXEp_jF38LSsgg.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Google Sans Code';\n font-style: normal;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/googlesanscode/v22/pxiSyogzv91QhV44Z_GQBHsGf5PuckJMZfIVTPZaiXEp_jF58LQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\ncode,kbd,pre,samp,code-block{font-family:\"Google Sans Code\", ui-monospace, SFMono-Regular, Menlo, Monaco,\n Consolas, monospace}body:has(#news-page) :is(#sidebar-content,#content-side-layout,#page-context-menu){display:none}body:has(#news-page) #body-content{padding-left:0}body:has(#news-page) #content-area{margin-inline:auto}.run-examples{margin-block:1.25rem 2rem;overflow:hidden;border:1px solid rgb(3 7 18 / 10%);border-radius:1rem}.run-examples [data-component-part=\"tabs-list\"]{margin:0!important;padding-inline:0.75rem;gap:0.5rem;background:#f9fafb}.run-examples [data-component-part=\"tab-button\"]{padding-inline:0.5rem;font-weight:500}.run-examples .code-block{margin:0!important;padding:0;border:0;border-radius:0}.run-examples [data-component-part=\"code-block-root\"],.run-examples [data-component-part=\"code-block-header\"]{border-radius:0}.dark .run-examples{border-color:rgb(255 255 255 / 10%)}.dark .run-examples [data-component-part=\"tabs-list\"]{background:rgb(255 255 255 / 5%)}.run-example{margin:0;border-top:1px solid rgb(3 7 18 / 10%)}.run-example>details>summary{width:fit-content;margin:0.75rem 1rem 0.75rem auto;padding:0.375rem 0.75rem;border-radius:0.5rem;background:#18181b;color:#fff;font-size:0.875rem;font-weight:500;line-height:1.5rem;list-style:none;cursor:pointer}.run-example>details>summary::-webkit-details-marker{display:none}.run-example>details>summary:focus-visible{outline:2px solid currentColor;outline-offset:-3px}.run-example [data-component-part=\"accordion-content\"]{border-top:1px solid rgb(3 7 18 / 10%)}.dark .run-example,.dark .run-example [data-component-part=\"accordion-content\"]{border-top-color:rgb(255 255 255 / 10%)}.dark .run-example>details>summary{background:#f4f4f5;color:#18181b}.run-example>details{margin:0;padding:0;border:0;border-radius:0;background:#f9fafb}.dark .run-example>details{background:rgb(255 255 255 / 5%)}.run-example [data-component-part=\"accordion-caret-right\"]{display:none}.run-example [data-component-part=\"accordion-title\"]{color:inherit;font-size:inherit}.run-example>details[open] [data-component-part=\"accordion-title-container\"]{display:none}.run-example>details[open]>summary::after{content:\"Hide output\";font-size:0.875rem}.run-example-run>details[open]>summary::after{content:\"Hide Output\"}.run-example [data-component-part=\"accordion-content\"]{padding:0}.run-example-run [data-component-part=\"accordion-content\"]{padding:1rem;overflow:visible;background:#fff}.dark .run-example-run [data-component-part=\"accordion-content\"]{background:var(--shiki-dark-bg, #0b0c0e)}.run-example-run [data-component-part=\"accordion-content\"] [data-component-part=\"code-block-root\"],.run-example-run [data-component-part=\"accordion-content\"] [data-component-part=\"scroll-area-viewport\"],.run-example-run [data-component-part=\"accordion-content\"] [data-component-part=\"scroll-area-content\"]{display:contents!important}.run-example-run [data-component-part=\"accordion-content\"] .code-block-fade-overlay{display:none}.run-example-run [data-component-part=\"accordion-content\"] pre,.run-example-run [data-component-part=\"accordion-content\"] .whitespace-pre{white-space:pre-wrap;overflow-wrap:anywhere}.run-examples:has(.run-example-run) [data-component-part=\"tab-content\"]{overflow:visible}.auth-resolution-table{font-family:\"Google Sans Code\", monospace;font-size:0.8rem;line-height:1.7}.auth-resolution-table table{width:100%;table-layout:fixed;margin:0;font-size:inherit;border-collapse:collapse}.auth-resolution-table [role=\"region\"]{overflow:visible}.auth-resolution-table td code{padding:0;border:0;border-radius:0;background:transparent;color:inherit;font:inherit;white-space:normal}.auth-resolution-table th,.auth-resolution-table td{padding:0.65rem 0.75rem;border:1px solid rgb(3 7 18 / 15%);vertical-align:top;overflow-wrap:anywhere}.auth-resolution-table th:first-child,.auth-resolution-table td:first-child{width:29%}.dark .auth-resolution-table th,.dark .auth-resolution-table td{border-color:rgb(255 255 255 / 20%)}.error-policy-table td{min-width:0!important}.rh-pipeline{--rh-fg: #09090b;--rh-muted: #71717a;--rh-line: #e4e4e7;--rh-hover: #f4f4f5;margin-block:1.5rem 2rem;border:1px solid var(--rh-line);color:var(--rh-fg);font-family:\"Google Sans Code\", ui-monospace, SFMono-Regular, Menlo, monospace;font-size:0.8125rem;line-height:1.45}.dark .rh-pipeline{--rh-fg: #fafafa;--rh-muted: #a1a1aa;--rh-line: #27272a;--rh-hover: #18181b}.rh-pipeline .rh-label{color:var(--rh-muted);font-size:0.75rem;letter-spacing:0.04em;text-transform:uppercase}.rh-pipeline .rh-phase{grid-column:1 / -1;padding:0.6rem 1rem;border-bottom:1px solid var(--rh-line)}.rh-pipeline .rh-row{display:grid;grid-template-columns:repeat(4, auto)}.rh-pipeline .rh-row-6{grid-template-columns:repeat(3, minmax(0, 1fr))}.rh-pipeline .rh-row-6>.rh-item:nth-child(n+5){border-top:1px dashed var(--rh-line)}.rh-pipeline .rh-row.rh-row-6>.rh-item:nth-child(5){border-left:0}.rh-pipeline .rh-row>.rh-item+.rh-item{border-left:1px dashed var(--rh-line)}.rh-pipeline .rh-stages{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));border-block:1px solid var(--rh-line)}.rh-pipeline .rh-stage{display:flex;flex-direction:column}.rh-pipeline .rh-stage+.rh-stage{border-left:1px solid var(--rh-line)}.rh-pipeline .rh-stage>.rh-title{padding:0.6rem 1rem;border-bottom:1px solid var(--rh-line);font-weight:600}.rh-pipeline .rh-item{display:block;padding:0.55rem 1rem;color:inherit;text-decoration:none}.rh-pipeline a.rh-item:hover{background:var(--rh-hover)}.rh-pipeline .rh-stage>.rh-item+.rh-item{border-top:1px dashed var(--rh-line)}.rh-pipeline .rh-item span{display:block;color:var(--rh-muted);font-size:0.75rem}@media (max-width: 640px){.rh-pipeline .rh-row,.rh-pipeline .rh-row-6{grid-template-columns:repeat(2, minmax(0, 1fr))}.rh-pipeline .rh-row.rh-row-6>.rh-item:nth-child(5){border-left:1px dashed var(--rh-line)}.rh-pipeline .rh-row>.rh-item:nth-child(even){border-left:0}.rh-pipeline .rh-row>.rh-item:nth-child(n+4){border-top:1px dashed var(--rh-line)}.rh-pipeline .rh-stages{grid-template-columns:minmax(0, 1fr)}.rh-pipeline .rh-stage+.rh-stage{border-left:0;border-top:1px solid var(--rh-line)}}"}],"page":{"pagePath":"api-sdk/jobs/resolve-job","slug":"/api-sdk/jobs/resolve-job","pageMetadata":{"title":"Resolve Job","description":"Resolve a job configuration into a lock without starting execution.","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json post /jobs/resolve","href":"/api-sdk/jobs/resolve-job","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Resolve a job configuration into a lock without starting execution.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Resolve Job","description":"Resolve a job configuration into a lock without starting execution.","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json post /jobs/resolve","href":"/api-sdk/jobs/resolve-job","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Resolve Job","description":"Resolve a job configuration into a lock without starting execution.","operationId":"resolve_job_jobs_resolve_post","parameters":["b5498c6c-fd02-4cf6-9aa7-27bbb6dbd0d6"],"requestBody":"11458159-8623-4d83-945f-3a733108c362","responses":{"200":"27eff77d-4037-4e6e-9df1-235716b9a623","422":"b93199ac-30ea-4e4e-8d1a-c5e0b2411a95","default":"a53a63dd-22d1-4008-b165-a57b0639b4ac"},"tags":["Jobs"],"x-codeSamples":[{"lang":"python","label":"Harbor SDK","source":"from harbor import Harbor\n\nclient = Harbor()\nresult = client.resolve_job(job={'job_name': 'hello-world',\n 'tasks': [{'name': 'hello-world/hello-world'}],\n 'agents': [{'name': 'oracle'}],\n 'environment': {'type': 'docker'}})\nprint(result)\nclient.close()\n"}],"method":"post","type":"path","servers":["7ba5fe3b-382f-4910-9a02-c8b18c140efa","569dfa06-ca71-4fa0-810e-74350cb1607a"],"security":["042c78fe-f3d7-49e0-b8a5-c52c547d2731","aa77959c-4c39-415c-ac02-625a98d6e50b"],"path":"/jobs/resolve","baseUrlOptions":["http://127.0.0.1:{port}","https://{host}"],"title":"Resolve Job","codeSamples":[{"label":"Harbor SDK","lang":"python","source":"from harbor import Harbor\n\nclient = Harbor()\nresult = client.resolve_job(job={'job_name': 'hello-world',\n 'tasks': [{'name': 'hello-world/hello-world'}],\n 'agents': [{'name': 'oracle'}],\n 'environment': {'type': 'docker'}})\nprint(result)\nclient.close()\n"}],"requestExampleLanguages":["bash","python"],"requiredOnlyExamples":true,"requestExampleType":"codeSamples","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[{"body.job.job_name":"hello-world","body.job.environment.type.oneOf.0":"docker","body.job.agents.items.0.name.oneOf.0":"oracle","body.job.tasks.items.0.name.oneOf.0":"hello-world/hello-world"}],"disableProxy":true},"dependencies":{"parameters":{"b5498c6c-fd02-4cf6-9aa7-27bbb6dbd0d6":{"name":"Harbor-API-Version","in":"header","required":false,"schema":{"type":"string","default":"2026-10-30","title":"Harbor-Api-Version","isRequired":false,"uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"job":{"properties":{"job_name":{"type":"string","title":"Job Name","uniqueKey":"job.job_name","typeLabel":"string"},"jobs_dir":{"type":"string","format":"path","title":"Jobs Dir","default":"jobs","uniqueKey":"job.jobs_dir","typeLabel":"string\u003cpath>"},"n_attempts":{"type":"integer","minimum":1,"title":"N Attempts","default":1,"uniqueKey":"job.n_attempts","typeLabel":"integer"},"install_only":{"type":"boolean","title":"Install Only","description":"Only run agent setup/install, then exit (skips agent run + verification).","default":false,"uniqueKey":"job.install_only","typeLabel":"boolean"},"skip_credential_checks":{"type":"boolean","title":"Skip Credential Checks","description":"Defer agent credential checks to runtime; other preflight checks still run.","default":false,"uniqueKey":"job.skip_credential_checks","typeLabel":"boolean"},"timeout_multiplier":{"type":"number","title":"Timeout Multiplier","default":1,"uniqueKey":"job.timeout_multiplier","typeLabel":"number"},"agent_timeout_multiplier":{"oneOf":[{"type":"number","title":"Agent Timeout Multiplier","uniqueKey":"job.agent_timeout_multiplier.oneOf.0","typeLabel":"number"},{"type":"null","title":"Agent Timeout Multiplier","uniqueKey":"job.agent_timeout_multiplier.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.agent_timeout_multiplier","typeLabel":"number | null"},"verifier_timeout_multiplier":{"oneOf":[{"type":"number","title":"Verifier Timeout Multiplier","uniqueKey":"job.verifier_timeout_multiplier.oneOf.0","typeLabel":"number"},{"type":"null","title":"Verifier Timeout Multiplier","uniqueKey":"job.verifier_timeout_multiplier.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.verifier_timeout_multiplier","typeLabel":"number | null"},"agent_setup_timeout_multiplier":{"oneOf":[{"type":"number","title":"Agent Setup Timeout Multiplier","uniqueKey":"job.agent_setup_timeout_multiplier.oneOf.0","typeLabel":"number"},{"type":"null","title":"Agent Setup Timeout Multiplier","uniqueKey":"job.agent_setup_timeout_multiplier.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.agent_setup_timeout_multiplier","typeLabel":"number | null"},"environment_build_timeout_multiplier":{"oneOf":[{"type":"number","title":"Environment Build Timeout Multiplier","uniqueKey":"job.environment_build_timeout_multiplier.oneOf.0","typeLabel":"number"},{"type":"null","title":"Environment Build Timeout Multiplier","uniqueKey":"job.environment_build_timeout_multiplier.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.environment_build_timeout_multiplier","typeLabel":"number | null"},"debug":{"type":"boolean","title":"Debug","description":"Enable debug logging","default":false,"uniqueKey":"job.debug","typeLabel":"boolean"},"n_concurrent_trials":{"type":"integer","minimum":1,"title":"N Concurrent Trials","description":"Maximum concurrent trials to run. Agent n_concurrent is a per-agent sub-limit under this value.","default":4,"uniqueKey":"job.n_concurrent_trials","typeLabel":"integer"},"quiet":{"type":"boolean","title":"Quiet","description":"Suppress trial progress displays","default":false,"uniqueKey":"job.quiet","typeLabel":"boolean"},"retry":{"properties":{"max_retries":{"type":"integer","minimum":0,"title":"Max Retries","description":"Maximum number of retry attempts","default":0,"uniqueKey":"job.retry.max_retries","typeLabel":"integer"},"include_exceptions":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"job.retry.include_exceptions.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Include Exceptions","description":"Only retry these exception types, subject to exclude_exceptions.","uniqueItems":true,"uniqueKey":"job.retry.include_exceptions.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Include Exceptions","description":"Only retry these exception types, subject to exclude_exceptions.","uniqueKey":"job.retry.include_exceptions.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.retry.include_exceptions","typeLabel":"string[] | null"},"exclude_exceptions":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"job.retry.exclude_exceptions.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Exclude Exceptions","description":"Exception types to NOT retry on. Takes precedence over include_exceptions.","uniqueItems":true,"uniqueKey":"job.retry.exclude_exceptions.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Exclude Exceptions","description":"Exception types to NOT retry on. Takes precedence over include_exceptions.","uniqueKey":"job.retry.exclude_exceptions.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.retry.exclude_exceptions","typeLabel":"string[] | null"},"wait_multiplier":{"type":"number","title":"Wait Multiplier","description":"Multiplier for exponential backoff wait time","default":1,"uniqueKey":"job.retry.wait_multiplier","typeLabel":"number"},"min_wait_sec":{"type":"number","title":"Min Wait Sec","description":"Minimum wait time in seconds between retries","default":1,"uniqueKey":"job.retry.min_wait_sec","typeLabel":"number"},"max_wait_sec":{"type":"number","title":"Max Wait Sec","description":"Maximum wait time in seconds between retries","default":60,"uniqueKey":"job.retry.max_wait_sec","typeLabel":"number"}},"type":"object","title":"RetryConfig","uniqueKey":"job.retry","typeLabel":"RetryConfig · object"},"override_error_policy":{"additionalProperties":{"properties":{"should_retry":{"oneOf":[{"type":"boolean","title":"Should Retry","uniqueKey":"job.override_error_policy.additionalProperties.should_retry.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Should Retry","uniqueKey":"job.override_error_policy.additionalProperties.should_retry.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.override_error_policy.additionalProperties.should_retry","typeLabel":"boolean | null"},"should_grade":{"oneOf":[{"type":"boolean","title":"Should Grade","uniqueKey":"job.override_error_policy.additionalProperties.should_grade.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Should Grade","uniqueKey":"job.override_error_policy.additionalProperties.should_grade.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.override_error_policy.additionalProperties.should_grade","typeLabel":"boolean | null"},"has_valid_reward":{"oneOf":[{"type":"boolean","title":"Has Valid Reward","uniqueKey":"job.override_error_policy.additionalProperties.has_valid_reward.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Has Valid Reward","uniqueKey":"job.override_error_policy.additionalProperties.has_valid_reward.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.override_error_policy.additionalProperties.has_valid_reward","typeLabel":"boolean | null"}},"additionalProperties":false,"type":"object","title":"ErrorPolicyOverride","uniqueKey":"job.override_error_policy.additionalProperties","typeLabel":"ErrorPolicyOverride · object"},"type":"object","title":"Override Error Policy","uniqueKey":"job.override_error_policy","typeLabel":"Override Error Policy · object"},"environment":{"properties":{"type":{"oneOf":[{"type":"string","title":"EnvironmentType","enum":["docker","sbx","podman","daytona","e2b","modal","runloop","langsmith","ec2","gke","ack","openshift","novita","apple-container","singularity","islo","tensorlake","cwsandbox","use-computer","cua-cloud","blaxel","opensandbox","beam","skypilot","hf-sandbox","hyperbrowser","vercel","runta","prime","kata","mosaic","smol","sail","kernel","snowflake","boxd","superserve","aca-sandbox"],"uniqueKey":"job.environment.type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"job.environment.type.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.environment.type","typeLabel":"enum\u003cstring> | null"},"import_path":{"oneOf":[{"type":"string","title":"Import Path","uniqueKey":"job.environment.import_path.oneOf.0","typeLabel":"string"},{"type":"null","title":"Import Path","uniqueKey":"job.environment.import_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.environment.import_path","typeLabel":"string | null"},"force_build":{"type":"boolean","title":"Force Build","default":false,"uniqueKey":"job.environment.force_build","typeLabel":"boolean"},"delete":{"type":"boolean","title":"Delete","default":true,"uniqueKey":"job.environment.delete","typeLabel":"boolean"},"stream":{"type":"boolean","title":"Stream","default":false,"uniqueKey":"job.environment.stream","typeLabel":"boolean"},"cpu_enforcement_policy":{"type":"string","enum":["auto","limit","request","guarantee","ignore"],"title":"ResourceMode","default":"auto","uniqueKey":"job.environment.cpu_enforcement_policy","typeLabel":"enum\u003cstring>"},"memory_enforcement_policy":{"type":"string","enum":["auto","limit","request","guarantee","ignore"],"title":"ResourceMode","default":"auto","uniqueKey":"job.environment.memory_enforcement_policy","typeLabel":"enum\u003cstring>"},"override_cpus":{"oneOf":[{"type":"integer","title":"Override Cpus","uniqueKey":"job.environment.override_cpus.oneOf.0","typeLabel":"integer"},{"type":"number","title":"Override Cpus","uniqueKey":"job.environment.override_cpus.oneOf.1","typeLabel":"number"},{"type":"null","title":"Override Cpus","uniqueKey":"job.environment.override_cpus.oneOf.2","typeLabel":"null"}],"uniqueKey":"job.environment.override_cpus","typeLabel":"integer | number | null"},"override_memory_mb":{"oneOf":[{"type":"integer","title":"Override Memory Mb","uniqueKey":"job.environment.override_memory_mb.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Override Memory Mb","uniqueKey":"job.environment.override_memory_mb.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.environment.override_memory_mb","typeLabel":"integer | null"},"override_storage_mb":{"oneOf":[{"type":"integer","title":"Override Storage Mb","uniqueKey":"job.environment.override_storage_mb.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Override Storage Mb","uniqueKey":"job.environment.override_storage_mb.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.environment.override_storage_mb","typeLabel":"integer | null"},"override_gpus":{"oneOf":[{"type":"integer","title":"Override Gpus","uniqueKey":"job.environment.override_gpus.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Override Gpus","uniqueKey":"job.environment.override_gpus.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.environment.override_gpus","typeLabel":"integer | null"},"override_tpu":{"oneOf":[{"type":"object","title":"TpuSpec","description":"Specification for a TPU slice attached to an environment.\n\nThe (type, topology) pair fully determines the GKE node pool the pod\nlands on *and* the per-pod TPU chip count, so there is no separate\nuser-facing chip-count field — it is derived via chip_count.","required":["type","topology"],"properties":{"type":{"type":"string","minLength":1,"title":"Type","description":"TPU accelerator type. Accepts either a user-friendly alias (e.g., 'v6e', 'trillium', 'v4') or a canonical GKE label (e.g., 'tpu-v6e-slice', 'tpu7x').","isRequired":true,"uniqueKey":"job.environment.override_tpu.oneOf.0.type","typeLabel":"string"},"topology":{"type":"string","title":"Topology","description":"TPU topology as 'NxM' or 'NxMxK' (e.g., '2x4', '2x2x1').","isRequired":true,"uniqueKey":"job.environment.override_tpu.oneOf.0.topology","typeLabel":"string"}},"uniqueKey":"job.environment.override_tpu.oneOf.0","typeLabel":"TpuSpec · object"},{"type":"null","uniqueKey":"job.environment.override_tpu.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.environment.override_tpu","typeLabel":"TpuSpec · object | null"},"suppress_override_warnings":{"type":"boolean","title":"Suppress Override Warnings","description":"Deprecated; has no effect.","default":false,"uniqueKey":"job.environment.suppress_override_warnings","typeLabel":"boolean"},"mounts":{"oneOf":[{"type":"array","items":{"properties":{"type":{"type":"string","enum":["bind","volume","image"],"title":"Type","isRequired":true,"uniqueKey":"job.environment.mounts.oneOf.0.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"source":{"type":"string","title":"Source","isRequired":true,"uniqueKey":"job.environment.mounts.oneOf.0.items.[INDEX].source","typeLabel":"string"},"target":{"type":"string","title":"Target","isRequired":true,"uniqueKey":"job.environment.mounts.oneOf.0.items.[INDEX].target","typeLabel":"string"},"read_only":{"type":"boolean","const":true,"title":"Read Only","uniqueKey":"job.environment.mounts.oneOf.0.items.[INDEX].read_only","typeLabel":"boolean"},"bind":{"properties":{"create_host_path":{"type":"boolean","const":false,"title":"Create Host Path","uniqueKey":"job.environment.mounts.oneOf.0.items.[INDEX].bind.create_host_path","typeLabel":"boolean"},"selinux":{"type":"string","enum":["z","Z"],"title":"Selinux","uniqueKey":"job.environment.mounts.oneOf.0.items.[INDEX].bind.selinux","typeLabel":"enum\u003cstring>"}},"type":"object","title":"ServiceVolumeBind","uniqueKey":"job.environment.mounts.oneOf.0.items.[INDEX].bind","typeLabel":"ServiceVolumeBind · object"},"volume":{"properties":{"subpath":{"type":"string","title":"Subpath","uniqueKey":"job.environment.mounts.oneOf.0.items.[INDEX].volume.subpath","typeLabel":"string"}},"type":"object","title":"ServiceVolumeVolume","uniqueKey":"job.environment.mounts.oneOf.0.items.[INDEX].volume","typeLabel":"ServiceVolumeVolume · object"},"image":{"properties":{"subpath":{"type":"string","title":"Subpath","uniqueKey":"job.environment.mounts.oneOf.0.items.[INDEX].image.subpath","typeLabel":"string"}},"type":"object","title":"ServiceVolumeImage","uniqueKey":"job.environment.mounts.oneOf.0.items.[INDEX].image","typeLabel":"ServiceVolumeImage · object"}},"type":"object","required":["type","source","target"],"title":"ServiceVolumeConfig","uniqueKey":"job.environment.mounts.oneOf.0.items.[INDEX]","typeLabel":"ServiceVolumeConfig · object"},"title":"Mounts","description":"Additional mounts for the agent environment only.","uniqueKey":"job.environment.mounts.oneOf.0","typeLabel":"ServiceVolumeConfig · object[]"},{"type":"null","title":"Mounts","description":"Additional mounts for the agent environment only.","uniqueKey":"job.environment.mounts.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.environment.mounts","typeLabel":"ServiceVolumeConfig · object[] | null"},"extra_docker_compose":{"items":{"type":"string","format":"path","uniqueKey":"job.environment.extra_docker_compose.items.[INDEX]","typeLabel":"string\u003cpath>"},"type":"array","title":"Extra Docker Compose","description":"Additional Docker Compose overlays for the agent environment only.","uniqueKey":"job.environment.extra_docker_compose","typeLabel":"string\u003cpath>[]"},"env":{"additionalProperties":{"type":"string","uniqueKey":"job.environment.env.additionalProperties","typeLabel":"string"},"type":"object","title":"Env","uniqueKey":"job.environment.env","typeLabel":"Env · object"},"kwargs":{"additionalProperties":true,"type":"object","title":"Kwargs","uniqueKey":"job.environment.kwargs","typeLabel":"Kwargs · object"},"extra_allowed_hosts":{"items":{"type":"string","uniqueKey":"job.environment.extra_allowed_hosts.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Extra Allowed Hosts","description":"Run-specific hostnames or IP addresses merged into the [environment] network baseline at agent env start.","uniqueKey":"job.environment.extra_allowed_hosts","typeLabel":"string[]"}},"type":"object","title":"EnvironmentConfig","uniqueKey":"job.environment","typeLabel":"EnvironmentConfig · object"},"verifier":{"properties":{"override_timeout_sec":{"oneOf":[{"type":"number","title":"Override Timeout Sec","uniqueKey":"job.verifier.override_timeout_sec.oneOf.0","typeLabel":"number"},{"type":"null","title":"Override Timeout Sec","uniqueKey":"job.verifier.override_timeout_sec.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.verifier.override_timeout_sec","typeLabel":"number | null"},"max_timeout_sec":{"oneOf":[{"type":"number","title":"Max Timeout Sec","uniqueKey":"job.verifier.max_timeout_sec.oneOf.0","typeLabel":"number"},{"type":"null","title":"Max Timeout Sec","uniqueKey":"job.verifier.max_timeout_sec.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.verifier.max_timeout_sec","typeLabel":"number | null"},"include_logs":{"items":{"type":"string","uniqueKey":"job.verifier.include_logs.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Include Logs","description":"Glob patterns of verifier log files to download, relative to the verifier logs directory. When set, only matching files are kept; the reward file is always downloaded.","uniqueKey":"job.verifier.include_logs","typeLabel":"string[]"},"exclude_logs":{"items":{"type":"string","uniqueKey":"job.verifier.exclude_logs.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Exclude Logs","description":"Glob patterns of verifier log files to skip when downloading. Applied after include_logs, so exclude wins on overlap.","uniqueKey":"job.verifier.exclude_logs","typeLabel":"string[]"},"env":{"additionalProperties":{"type":"string","uniqueKey":"job.verifier.env.additionalProperties","typeLabel":"string"},"type":"object","title":"Env","uniqueKey":"job.verifier.env","typeLabel":"Env · object"},"import_path":{"oneOf":[{"type":"string","title":"Import Path","uniqueKey":"job.verifier.import_path.oneOf.0","typeLabel":"string"},{"type":"null","title":"Import Path","uniqueKey":"job.verifier.import_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.verifier.import_path","typeLabel":"string | null"},"kwargs":{"additionalProperties":true,"type":"object","title":"Kwargs","uniqueKey":"job.verifier.kwargs","typeLabel":"Kwargs · object"},"disable":{"type":"boolean","title":"Disable","default":false,"uniqueKey":"job.verifier.disable","typeLabel":"boolean"},"extra_allowed_hosts":{"items":{"type":"string","uniqueKey":"job.verifier.extra_allowed_hosts.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Extra Allowed Hosts","description":"Run-specific hostnames or IP addresses merged into the effective verifier phase allowlist during verify(), and into the verifier environment baseline when the verifier runs separately.","uniqueKey":"job.verifier.extra_allowed_hosts","typeLabel":"string[]"}},"type":"object","title":"VerifierConfig","uniqueKey":"job.verifier","typeLabel":"VerifierConfig · object"},"metrics":{"items":{"properties":{"type":{"type":"string","enum":["sum","min","max","mean","uv-script"],"title":"MetricType","default":"mean","uniqueKey":"job.metrics.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"kwargs":{"additionalProperties":true,"type":"object","title":"Kwargs","uniqueKey":"job.metrics.items.[INDEX].kwargs","typeLabel":"Kwargs · object"}},"type":"object","title":"MetricConfig","uniqueKey":"job.metrics.items.[INDEX]","typeLabel":"MetricConfig · object"},"type":"array","title":"Metrics","uniqueKey":"job.metrics","typeLabel":"MetricConfig · object[]"},"agents":{"items":{"properties":{"name":{"oneOf":[{"type":"string","title":"Name","uniqueKey":"job.agents.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Name","uniqueKey":"job.agents.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.agents.items.[INDEX].name","typeLabel":"string | null"},"import_path":{"oneOf":[{"type":"string","title":"Import Path","uniqueKey":"job.agents.items.[INDEX].import_path.oneOf.0","typeLabel":"string"},{"type":"null","title":"Import Path","uniqueKey":"job.agents.items.[INDEX].import_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.agents.items.[INDEX].import_path","typeLabel":"string | null"},"model_name":{"oneOf":[{"type":"string","title":"Model Name","uniqueKey":"job.agents.items.[INDEX].model_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Name","uniqueKey":"job.agents.items.[INDEX].model_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.agents.items.[INDEX].model_name","typeLabel":"string | null"},"base_url":{"oneOf":[{"type":"string","title":"Base Url","description":"Override the inference endpoint used by the agent.","uniqueKey":"job.agents.items.[INDEX].base_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Base Url","description":"Override the inference endpoint used by the agent.","uniqueKey":"job.agents.items.[INDEX].base_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.agents.items.[INDEX].base_url","typeLabel":"string | null"},"model_api_key_name":{"oneOf":[{"type":"string","title":"Model Api Key Name","description":"Name of the environment variable containing the inference API key.","uniqueKey":"job.agents.items.[INDEX].model_api_key_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Api Key Name","description":"Name of the environment variable containing the inference API key.","uniqueKey":"job.agents.items.[INDEX].model_api_key_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.agents.items.[INDEX].model_api_key_name","typeLabel":"string | null"},"model_api_format":{"oneOf":[{"type":"string","title":"ModelApiFormat","description":"Inference API format supported by the agent.","enum":["openai_chat_completions","openai_responses","anthropic_messages","google_generate_content","bedrock_converse"],"uniqueKey":"job.agents.items.[INDEX].model_api_format.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Inference API format supported by the agent.","uniqueKey":"job.agents.items.[INDEX].model_api_format.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.agents.items.[INDEX].model_api_format","typeLabel":"enum\u003cstring> | null"},"skip_model_parsing":{"type":"boolean","title":"Skip Model Parsing","description":"Pass the model string unchanged without resolving its provider.","default":false,"uniqueKey":"job.agents.items.[INDEX].skip_model_parsing","typeLabel":"boolean"},"n_concurrent":{"oneOf":[{"type":"integer","title":"N Concurrent","description":"Per-agent cap on concurrent agent.run() phases. Must not exceed the job's n_concurrent_trials and is usually useful only when lower. When omitted, agent execution is only limited by n_concurrent_trials.","minimum":1,"uniqueKey":"job.agents.items.[INDEX].n_concurrent.oneOf.0","typeLabel":"integer"},{"type":"null","title":"N Concurrent","description":"Per-agent cap on concurrent agent.run() phases. Must not exceed the job's n_concurrent_trials and is usually useful only when lower. When omitted, agent execution is only limited by n_concurrent_trials.","uniqueKey":"job.agents.items.[INDEX].n_concurrent.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.agents.items.[INDEX].n_concurrent","typeLabel":"integer | null"},"concurrency_group":{"oneOf":[{"type":"string","title":"Concurrency Group","description":"Optional shared concurrency pool name for agent configs that should use the same n_concurrent limit.","uniqueKey":"job.agents.items.[INDEX].concurrency_group.oneOf.0","typeLabel":"string"},{"type":"null","title":"Concurrency Group","description":"Optional shared concurrency pool name for agent configs that should use the same n_concurrent limit.","uniqueKey":"job.agents.items.[INDEX].concurrency_group.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.agents.items.[INDEX].concurrency_group","typeLabel":"string | null"},"skills":{"items":{"oneOf":[{"type":"string","uniqueKey":"job.agents.items.[INDEX].skills.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"string","format":"path","uniqueKey":"job.agents.items.[INDEX].skills.items.[INDEX].oneOf.1","typeLabel":"string\u003cpath>"}],"uniqueKey":"job.agents.items.[INDEX].skills.items.[INDEX]","typeLabel":"string | string\u003cpath>"},"type":"array","title":"Skills","description":"Skill directories or source strings (git URLs, org/name[@ref] shorthand, or local paths). Job.create() / Trial.create() resolve any non-local entries to cached directories in-place.","uniqueKey":"job.agents.items.[INDEX].skills","typeLabel":"(string | string\u003cpath>)[]"},"override_timeout_sec":{"oneOf":[{"type":"number","title":"Override Timeout Sec","uniqueKey":"job.agents.items.[INDEX].override_timeout_sec.oneOf.0","typeLabel":"number"},{"type":"null","title":"Override Timeout Sec","uniqueKey":"job.agents.items.[INDEX].override_timeout_sec.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.agents.items.[INDEX].override_timeout_sec","typeLabel":"number | null"},"override_setup_timeout_sec":{"oneOf":[{"type":"number","title":"Override Setup Timeout Sec","uniqueKey":"job.agents.items.[INDEX].override_setup_timeout_sec.oneOf.0","typeLabel":"number"},{"type":"null","title":"Override Setup Timeout Sec","uniqueKey":"job.agents.items.[INDEX].override_setup_timeout_sec.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.agents.items.[INDEX].override_setup_timeout_sec","typeLabel":"number | null"},"max_timeout_sec":{"oneOf":[{"type":"number","title":"Max Timeout Sec","uniqueKey":"job.agents.items.[INDEX].max_timeout_sec.oneOf.0","typeLabel":"number"},{"type":"null","title":"Max Timeout Sec","uniqueKey":"job.agents.items.[INDEX].max_timeout_sec.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.agents.items.[INDEX].max_timeout_sec","typeLabel":"number | null"},"resume_trajectory":{"type":"boolean","title":"Resume Trajectory","description":"For multi-step tasks, resume the agent's native session from the previous step instead of starting a fresh conversation on each step. Requires an agent with native resume support (capabilities.resume); the trial fails fast otherwise. No effect on single-step tasks.","default":false,"uniqueKey":"job.agents.items.[INDEX].resume_trajectory","typeLabel":"boolean"},"load_trajectory":{"oneOf":[{"type":"string","title":"Load Trajectory","description":"Path to a trajectory to load as the agent's session before the first step, which then resumes it instead of starting fresh. A .jsonl file is the agent's native session format (lossless, same agent only; capabilities.load_native_trajectory); a .json file is an ATIF trajectory converted to the agent's native format (portable across supported agents; capabilities.load_atif_trajectory). The trial fails fast if the agent lacks the needed support. Composes with resume_trajectory.","uniqueKey":"job.agents.items.[INDEX].load_trajectory.oneOf.0","typeLabel":"string"},{"type":"null","title":"Load Trajectory","description":"Path to a trajectory to load as the agent's session before the first step, which then resumes it instead of starting fresh. A .jsonl file is the agent's native session format (lossless, same agent only; capabilities.load_native_trajectory); a .json file is an ATIF trajectory converted to the agent's native format (portable across supported agents; capabilities.load_atif_trajectory). The trial fails fast if the agent lacks the needed support. Composes with resume_trajectory.","uniqueKey":"job.agents.items.[INDEX].load_trajectory.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.agents.items.[INDEX].load_trajectory","typeLabel":"string | null"},"extra_allowed_hosts":{"items":{"type":"string","uniqueKey":"job.agents.items.[INDEX].extra_allowed_hosts.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Extra Allowed Hosts","description":"Run-specific hostnames or IP addresses merged into the effective agent phase allowlist during agent.run() only.","uniqueKey":"job.agents.items.[INDEX].extra_allowed_hosts","typeLabel":"string[]"},"include_logs":{"items":{"type":"string","uniqueKey":"job.agents.items.[INDEX].include_logs.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Include Logs","description":"Glob patterns of agent log files to download, relative to the agent logs directory. When set, only matching files are kept.","uniqueKey":"job.agents.items.[INDEX].include_logs","typeLabel":"string[]"},"exclude_logs":{"items":{"type":"string","uniqueKey":"job.agents.items.[INDEX].exclude_logs.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Exclude Logs","description":"Glob patterns of agent log files to skip when downloading. Applied after include_logs, so exclude wins on overlap.","uniqueKey":"job.agents.items.[INDEX].exclude_logs","typeLabel":"string[]"},"kwargs":{"additionalProperties":true,"type":"object","title":"Kwargs","uniqueKey":"job.agents.items.[INDEX].kwargs","typeLabel":"Kwargs · object"},"env":{"additionalProperties":{"type":"string","uniqueKey":"job.agents.items.[INDEX].env.additionalProperties","typeLabel":"string"},"type":"object","title":"Env","uniqueKey":"job.agents.items.[INDEX].env","typeLabel":"Env · object"},"mcp_servers":{"items":{"properties":{"name":{"type":"string","title":"Name","isRequired":true,"uniqueKey":"job.agents.items.[INDEX].mcp_servers.items.[INDEX].name","typeLabel":"string"},"transport":{"type":"string","enum":["stdio","sse","streamable-http"],"title":"Transport","default":"sse","uniqueKey":"job.agents.items.[INDEX].mcp_servers.items.[INDEX].transport","typeLabel":"enum\u003cstring>"},"url":{"oneOf":[{"type":"string","title":"Url","uniqueKey":"job.agents.items.[INDEX].mcp_servers.items.[INDEX].url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Url","uniqueKey":"job.agents.items.[INDEX].mcp_servers.items.[INDEX].url.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.agents.items.[INDEX].mcp_servers.items.[INDEX].url","typeLabel":"string | null"},"command":{"oneOf":[{"type":"string","title":"Command","uniqueKey":"job.agents.items.[INDEX].mcp_servers.items.[INDEX].command.oneOf.0","typeLabel":"string"},{"type":"null","title":"Command","uniqueKey":"job.agents.items.[INDEX].mcp_servers.items.[INDEX].command.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.agents.items.[INDEX].mcp_servers.items.[INDEX].command","typeLabel":"string | null"},"args":{"items":{"type":"string","uniqueKey":"job.agents.items.[INDEX].mcp_servers.items.[INDEX].args.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Args","uniqueKey":"job.agents.items.[INDEX].mcp_servers.items.[INDEX].args","typeLabel":"string[]"},"headers":{"additionalProperties":{"type":"string","uniqueKey":"job.agents.items.[INDEX].mcp_servers.items.[INDEX].headers.additionalProperties","typeLabel":"string"},"type":"object","title":"Headers","uniqueKey":"job.agents.items.[INDEX].mcp_servers.items.[INDEX].headers","typeLabel":"Headers · object"}},"type":"object","required":["name"],"title":"MCPServerConfig","description":"Configuration for an MCP server available to the agent.","uniqueKey":"job.agents.items.[INDEX].mcp_servers.items.[INDEX]","typeLabel":"MCPServerConfig · object"},"type":"array","title":"Mcp Servers","uniqueKey":"job.agents.items.[INDEX].mcp_servers","typeLabel":"MCPServerConfig · object[]"}},"type":"object","title":"AgentConfig","uniqueKey":"job.agents.items.[INDEX]","typeLabel":"AgentConfig · object"},"type":"array","title":"Agents","uniqueKey":"job.agents","typeLabel":"AgentConfig · object[]"},"user_agent":{"oneOf":[{"type":"object","title":"UserAgentConfig","description":"Optional simulated-user agent and bridge applied to every trial.","required":["bridge"],"properties":{"bridge":{"properties":{"kind":{"type":"string","enum":["acp"],"title":"BridgeKind","isRequired":true,"uniqueKey":"job.user_agent.oneOf.0.bridge.kind","typeLabel":"enum\u003cstring>"},"prompt_path":{"oneOf":[{"type":"string","title":"Prompt Path","format":"path","uniqueKey":"job.user_agent.oneOf.0.bridge.prompt_path.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"Prompt Path","uniqueKey":"job.user_agent.oneOf.0.bridge.prompt_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.user_agent.oneOf.0.bridge.prompt_path","typeLabel":"string\u003cpath> | null"},"kwargs":{"additionalProperties":true,"type":"object","title":"Kwargs","uniqueKey":"job.user_agent.oneOf.0.bridge.kwargs","typeLabel":"Kwargs · object"}},"type":"object","required":["kind"],"title":"BridgeConfig","isRequired":true,"uniqueKey":"job.user_agent.oneOf.0.bridge","typeLabel":"BridgeConfig · object"},"name":{"oneOf":[{"type":"string","title":"Name","uniqueKey":"job.user_agent.oneOf.0.name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Name","uniqueKey":"job.user_agent.oneOf.0.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.user_agent.oneOf.0.name","typeLabel":"string | null"},"import_path":{"oneOf":[{"type":"string","title":"Import Path","uniqueKey":"job.user_agent.oneOf.0.import_path.oneOf.0","typeLabel":"string"},{"type":"null","title":"Import Path","uniqueKey":"job.user_agent.oneOf.0.import_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.user_agent.oneOf.0.import_path","typeLabel":"string | null"},"model_name":{"oneOf":[{"type":"string","title":"Model Name","uniqueKey":"job.user_agent.oneOf.0.model_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Name","uniqueKey":"job.user_agent.oneOf.0.model_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.user_agent.oneOf.0.model_name","typeLabel":"string | null"},"base_url":{"oneOf":[{"type":"string","title":"Base Url","description":"Override the inference endpoint used by the agent.","uniqueKey":"job.user_agent.oneOf.0.base_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Base Url","description":"Override the inference endpoint used by the agent.","uniqueKey":"job.user_agent.oneOf.0.base_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.user_agent.oneOf.0.base_url","typeLabel":"string | null"},"model_api_key_name":{"oneOf":[{"type":"string","title":"Model Api Key Name","description":"Name of the environment variable containing the inference API key.","uniqueKey":"job.user_agent.oneOf.0.model_api_key_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Api Key Name","description":"Name of the environment variable containing the inference API key.","uniqueKey":"job.user_agent.oneOf.0.model_api_key_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.user_agent.oneOf.0.model_api_key_name","typeLabel":"string | null"},"model_api_format":{"oneOf":[{"type":"string","title":"ModelApiFormat","description":"Inference API format supported by the agent.","enum":["openai_chat_completions","openai_responses","anthropic_messages","google_generate_content","bedrock_converse"],"uniqueKey":"job.user_agent.oneOf.0.model_api_format.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Inference API format supported by the agent.","uniqueKey":"job.user_agent.oneOf.0.model_api_format.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.user_agent.oneOf.0.model_api_format","typeLabel":"enum\u003cstring> | null"},"skip_model_parsing":{"type":"boolean","title":"Skip Model Parsing","description":"Pass the model string unchanged without resolving its provider.","default":false,"uniqueKey":"job.user_agent.oneOf.0.skip_model_parsing","typeLabel":"boolean"},"n_concurrent":{"oneOf":[{"type":"integer","title":"N Concurrent","description":"Per-agent cap on concurrent agent.run() phases. Must not exceed the job's n_concurrent_trials and is usually useful only when lower. When omitted, agent execution is only limited by n_concurrent_trials.","minimum":1,"uniqueKey":"job.user_agent.oneOf.0.n_concurrent.oneOf.0","typeLabel":"integer"},{"type":"null","title":"N Concurrent","description":"Per-agent cap on concurrent agent.run() phases. Must not exceed the job's n_concurrent_trials and is usually useful only when lower. When omitted, agent execution is only limited by n_concurrent_trials.","uniqueKey":"job.user_agent.oneOf.0.n_concurrent.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.user_agent.oneOf.0.n_concurrent","typeLabel":"integer | null"},"concurrency_group":{"oneOf":[{"type":"string","title":"Concurrency Group","description":"Optional shared concurrency pool name for agent configs that should use the same n_concurrent limit.","uniqueKey":"job.user_agent.oneOf.0.concurrency_group.oneOf.0","typeLabel":"string"},{"type":"null","title":"Concurrency Group","description":"Optional shared concurrency pool name for agent configs that should use the same n_concurrent limit.","uniqueKey":"job.user_agent.oneOf.0.concurrency_group.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.user_agent.oneOf.0.concurrency_group","typeLabel":"string | null"},"skills":{"items":{"oneOf":[{"type":"string","uniqueKey":"job.user_agent.oneOf.0.skills.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"string","format":"path","uniqueKey":"job.user_agent.oneOf.0.skills.items.[INDEX].oneOf.1","typeLabel":"string\u003cpath>"}],"uniqueKey":"job.user_agent.oneOf.0.skills.items.[INDEX]","typeLabel":"string | string\u003cpath>"},"type":"array","title":"Skills","description":"Skill directories or source strings (git URLs, org/name[@ref] shorthand, or local paths). Job.create() / Trial.create() resolve any non-local entries to cached directories in-place.","uniqueKey":"job.user_agent.oneOf.0.skills","typeLabel":"(string | string\u003cpath>)[]"},"override_timeout_sec":{"oneOf":[{"type":"number","title":"Override Timeout Sec","uniqueKey":"job.user_agent.oneOf.0.override_timeout_sec.oneOf.0","typeLabel":"number"},{"type":"null","title":"Override Timeout Sec","uniqueKey":"job.user_agent.oneOf.0.override_timeout_sec.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.user_agent.oneOf.0.override_timeout_sec","typeLabel":"number | null"},"override_setup_timeout_sec":{"oneOf":[{"type":"number","title":"Override Setup Timeout Sec","uniqueKey":"job.user_agent.oneOf.0.override_setup_timeout_sec.oneOf.0","typeLabel":"number"},{"type":"null","title":"Override Setup Timeout Sec","uniqueKey":"job.user_agent.oneOf.0.override_setup_timeout_sec.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.user_agent.oneOf.0.override_setup_timeout_sec","typeLabel":"number | null"},"max_timeout_sec":{"oneOf":[{"type":"number","title":"Max Timeout Sec","uniqueKey":"job.user_agent.oneOf.0.max_timeout_sec.oneOf.0","typeLabel":"number"},{"type":"null","title":"Max Timeout Sec","uniqueKey":"job.user_agent.oneOf.0.max_timeout_sec.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.user_agent.oneOf.0.max_timeout_sec","typeLabel":"number | null"},"resume_trajectory":{"type":"boolean","title":"Resume Trajectory","description":"For multi-step tasks, resume the agent's native session from the previous step instead of starting a fresh conversation on each step. Requires an agent with native resume support (capabilities.resume); the trial fails fast otherwise. No effect on single-step tasks.","default":false,"uniqueKey":"job.user_agent.oneOf.0.resume_trajectory","typeLabel":"boolean"},"load_trajectory":{"oneOf":[{"type":"string","title":"Load Trajectory","description":"Path to a trajectory to load as the agent's session before the first step, which then resumes it instead of starting fresh. A .jsonl file is the agent's native session format (lossless, same agent only; capabilities.load_native_trajectory); a .json file is an ATIF trajectory converted to the agent's native format (portable across supported agents; capabilities.load_atif_trajectory). The trial fails fast if the agent lacks the needed support. Composes with resume_trajectory.","uniqueKey":"job.user_agent.oneOf.0.load_trajectory.oneOf.0","typeLabel":"string"},{"type":"null","title":"Load Trajectory","description":"Path to a trajectory to load as the agent's session before the first step, which then resumes it instead of starting fresh. A .jsonl file is the agent's native session format (lossless, same agent only; capabilities.load_native_trajectory); a .json file is an ATIF trajectory converted to the agent's native format (portable across supported agents; capabilities.load_atif_trajectory). The trial fails fast if the agent lacks the needed support. Composes with resume_trajectory.","uniqueKey":"job.user_agent.oneOf.0.load_trajectory.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.user_agent.oneOf.0.load_trajectory","typeLabel":"string | null"},"extra_allowed_hosts":{"items":{"type":"string","uniqueKey":"job.user_agent.oneOf.0.extra_allowed_hosts.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Extra Allowed Hosts","description":"Run-specific hostnames or IP addresses merged into the effective agent phase allowlist during agent.run() only.","uniqueKey":"job.user_agent.oneOf.0.extra_allowed_hosts","typeLabel":"string[]"},"include_logs":{"items":{"type":"string","uniqueKey":"job.user_agent.oneOf.0.include_logs.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Include Logs","description":"Glob patterns of agent log files to download, relative to the agent logs directory. When set, only matching files are kept.","uniqueKey":"job.user_agent.oneOf.0.include_logs","typeLabel":"string[]"},"exclude_logs":{"items":{"type":"string","uniqueKey":"job.user_agent.oneOf.0.exclude_logs.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Exclude Logs","description":"Glob patterns of agent log files to skip when downloading. Applied after include_logs, so exclude wins on overlap.","uniqueKey":"job.user_agent.oneOf.0.exclude_logs","typeLabel":"string[]"},"kwargs":{"additionalProperties":true,"type":"object","title":"Kwargs","uniqueKey":"job.user_agent.oneOf.0.kwargs","typeLabel":"Kwargs · object"},"env":{"additionalProperties":{"type":"string","uniqueKey":"job.user_agent.oneOf.0.env.additionalProperties","typeLabel":"string"},"type":"object","title":"Env","uniqueKey":"job.user_agent.oneOf.0.env","typeLabel":"Env · object"},"mcp_servers":{"items":{"properties":{"name":{"type":"string","title":"Name","isRequired":true,"uniqueKey":"job.user_agent.oneOf.0.mcp_servers.items.[INDEX].name","typeLabel":"string"},"transport":{"type":"string","enum":["stdio","sse","streamable-http"],"title":"Transport","default":"sse","uniqueKey":"job.user_agent.oneOf.0.mcp_servers.items.[INDEX].transport","typeLabel":"enum\u003cstring>"},"url":{"oneOf":[{"type":"string","title":"Url","uniqueKey":"job.user_agent.oneOf.0.mcp_servers.items.[INDEX].url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Url","uniqueKey":"job.user_agent.oneOf.0.mcp_servers.items.[INDEX].url.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.user_agent.oneOf.0.mcp_servers.items.[INDEX].url","typeLabel":"string | null"},"command":{"oneOf":[{"type":"string","title":"Command","uniqueKey":"job.user_agent.oneOf.0.mcp_servers.items.[INDEX].command.oneOf.0","typeLabel":"string"},{"type":"null","title":"Command","uniqueKey":"job.user_agent.oneOf.0.mcp_servers.items.[INDEX].command.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.user_agent.oneOf.0.mcp_servers.items.[INDEX].command","typeLabel":"string | null"},"args":{"items":{"type":"string","uniqueKey":"job.user_agent.oneOf.0.mcp_servers.items.[INDEX].args.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Args","uniqueKey":"job.user_agent.oneOf.0.mcp_servers.items.[INDEX].args","typeLabel":"string[]"},"headers":{"additionalProperties":{"type":"string","uniqueKey":"job.user_agent.oneOf.0.mcp_servers.items.[INDEX].headers.additionalProperties","typeLabel":"string"},"type":"object","title":"Headers","uniqueKey":"job.user_agent.oneOf.0.mcp_servers.items.[INDEX].headers","typeLabel":"Headers · object"}},"type":"object","required":["name"],"title":"MCPServerConfig","description":"Configuration for an MCP server available to the agent.","uniqueKey":"job.user_agent.oneOf.0.mcp_servers.items.[INDEX]","typeLabel":"MCPServerConfig · object"},"type":"array","title":"Mcp Servers","uniqueKey":"job.user_agent.oneOf.0.mcp_servers","typeLabel":"MCPServerConfig · object[]"},"user_persona_path":{"oneOf":[{"type":"string","title":"User Persona Path","format":"path","uniqueKey":"job.user_agent.oneOf.0.user_persona_path.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"User Persona Path","uniqueKey":"job.user_agent.oneOf.0.user_persona_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.user_agent.oneOf.0.user_persona_path","typeLabel":"string\u003cpath> | null"},"user_prompt_template_path":{"oneOf":[{"type":"string","title":"User Prompt Template Path","format":"path","uniqueKey":"job.user_agent.oneOf.0.user_prompt_template_path.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"User Prompt Template Path","uniqueKey":"job.user_agent.oneOf.0.user_prompt_template_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.user_agent.oneOf.0.user_prompt_template_path","typeLabel":"string\u003cpath> | null"}},"uniqueKey":"job.user_agent.oneOf.0","typeLabel":"UserAgentConfig · object"},{"type":"null","description":"Optional simulated-user agent and bridge applied to every trial.","uniqueKey":"job.user_agent.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.user_agent","typeLabel":"UserAgentConfig · object | null"},"datasets":{"items":{"properties":{"path":{"oneOf":[{"type":"string","title":"Path","format":"path","uniqueKey":"job.datasets.items.[INDEX].path.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"Path","uniqueKey":"job.datasets.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.datasets.items.[INDEX].path","typeLabel":"string\u003cpath> | null"},"name":{"oneOf":[{"type":"string","title":"Name","uniqueKey":"job.datasets.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Name","uniqueKey":"job.datasets.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.datasets.items.[INDEX].name","typeLabel":"string | null"},"version":{"oneOf":[{"type":"string","title":"Version","uniqueKey":"job.datasets.items.[INDEX].version.oneOf.0","typeLabel":"string"},{"type":"null","title":"Version","uniqueKey":"job.datasets.items.[INDEX].version.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.datasets.items.[INDEX].version","typeLabel":"string | null"},"ref":{"oneOf":[{"type":"string","title":"Ref","uniqueKey":"job.datasets.items.[INDEX].ref.oneOf.0","typeLabel":"string"},{"type":"null","title":"Ref","uniqueKey":"job.datasets.items.[INDEX].ref.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.datasets.items.[INDEX].ref","typeLabel":"string | null"},"registry_url":{"oneOf":[{"type":"string","title":"Registry Url","uniqueKey":"job.datasets.items.[INDEX].registry_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Registry Url","uniqueKey":"job.datasets.items.[INDEX].registry_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.datasets.items.[INDEX].registry_url","typeLabel":"string | null"},"registry_path":{"oneOf":[{"type":"string","title":"Registry Path","format":"path","uniqueKey":"job.datasets.items.[INDEX].registry_path.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"Registry Path","uniqueKey":"job.datasets.items.[INDEX].registry_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.datasets.items.[INDEX].registry_path","typeLabel":"string\u003cpath> | null"},"repo":{"oneOf":[{"type":"string","title":"Repo","uniqueKey":"job.datasets.items.[INDEX].repo.oneOf.0","typeLabel":"string"},{"type":"null","title":"Repo","uniqueKey":"job.datasets.items.[INDEX].repo.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.datasets.items.[INDEX].repo","typeLabel":"string | null"},"overwrite":{"type":"boolean","title":"Overwrite","description":"Whether to overwrite cached remote tasks.","default":false,"uniqueKey":"job.datasets.items.[INDEX].overwrite","typeLabel":"boolean"},"download_dir":{"oneOf":[{"type":"string","title":"Download Dir","description":"The directory to cache remote tasks to.","format":"path","uniqueKey":"job.datasets.items.[INDEX].download_dir.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"Download Dir","description":"The directory to cache remote tasks to.","uniqueKey":"job.datasets.items.[INDEX].download_dir.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.datasets.items.[INDEX].download_dir","typeLabel":"string\u003cpath> | null"},"task_names":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"job.datasets.items.[INDEX].task_names.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Task Names","description":"Tasks to include from the dataset. Name can be a glob pattern.","uniqueKey":"job.datasets.items.[INDEX].task_names.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Task Names","description":"Tasks to include from the dataset. Name can be a glob pattern.","uniqueKey":"job.datasets.items.[INDEX].task_names.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.datasets.items.[INDEX].task_names","typeLabel":"string[] | null"},"exclude_task_names":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"job.datasets.items.[INDEX].exclude_task_names.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Exclude Task Names","description":"Tasks to exclude from the dataset. Name can be a glob pattern.","uniqueKey":"job.datasets.items.[INDEX].exclude_task_names.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Exclude Task Names","description":"Tasks to exclude from the dataset. Name can be a glob pattern.","uniqueKey":"job.datasets.items.[INDEX].exclude_task_names.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.datasets.items.[INDEX].exclude_task_names","typeLabel":"string[] | null"},"n_tasks":{"oneOf":[{"type":"integer","title":"N Tasks","description":"Maximum number of tasks to include from this dataset. Applied after task_names/exclude_task_names filtering.","uniqueKey":"job.datasets.items.[INDEX].n_tasks.oneOf.0","typeLabel":"integer"},{"type":"null","title":"N Tasks","description":"Maximum number of tasks to include from this dataset. Applied after task_names/exclude_task_names filtering.","uniqueKey":"job.datasets.items.[INDEX].n_tasks.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.datasets.items.[INDEX].n_tasks","typeLabel":"integer | null"}},"type":"object","title":"DatasetConfig","uniqueKey":"job.datasets.items.[INDEX]","typeLabel":"DatasetConfig · object"},"type":"array","title":"Datasets","uniqueKey":"job.datasets","typeLabel":"DatasetConfig · object[]"},"tasks":{"items":{"properties":{"path":{"oneOf":[{"type":"string","title":"Path","format":"path","uniqueKey":"job.tasks.items.[INDEX].path.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"Path","uniqueKey":"job.tasks.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.tasks.items.[INDEX].path","typeLabel":"string\u003cpath> | null"},"git_url":{"oneOf":[{"type":"string","title":"Git Url","uniqueKey":"job.tasks.items.[INDEX].git_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Git Url","uniqueKey":"job.tasks.items.[INDEX].git_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.tasks.items.[INDEX].git_url","typeLabel":"string | null"},"git_commit_id":{"oneOf":[{"type":"string","title":"Git Commit Id","uniqueKey":"job.tasks.items.[INDEX].git_commit_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Git Commit Id","uniqueKey":"job.tasks.items.[INDEX].git_commit_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.tasks.items.[INDEX].git_commit_id","typeLabel":"string | null"},"name":{"oneOf":[{"type":"string","title":"Name","uniqueKey":"job.tasks.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Name","uniqueKey":"job.tasks.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.tasks.items.[INDEX].name","typeLabel":"string | null"},"ref":{"oneOf":[{"type":"string","title":"Ref","uniqueKey":"job.tasks.items.[INDEX].ref.oneOf.0","typeLabel":"string"},{"type":"null","title":"Ref","uniqueKey":"job.tasks.items.[INDEX].ref.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.tasks.items.[INDEX].ref","typeLabel":"string | null"},"overwrite":{"type":"boolean","title":"Overwrite","default":false,"uniqueKey":"job.tasks.items.[INDEX].overwrite","typeLabel":"boolean"},"download_dir":{"oneOf":[{"type":"string","title":"Download Dir","format":"path","uniqueKey":"job.tasks.items.[INDEX].download_dir.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"Download Dir","uniqueKey":"job.tasks.items.[INDEX].download_dir.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.tasks.items.[INDEX].download_dir","typeLabel":"string\u003cpath> | null"},"source":{"oneOf":[{"type":"string","title":"Source","uniqueKey":"job.tasks.items.[INDEX].source.oneOf.0","typeLabel":"string"},{"type":"null","title":"Source","uniqueKey":"job.tasks.items.[INDEX].source.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.tasks.items.[INDEX].source","typeLabel":"string | null"}},"type":"object","title":"TaskConfig","uniqueKey":"job.tasks.items.[INDEX]","typeLabel":"TaskConfig · object"},"type":"array","title":"Tasks","uniqueKey":"job.tasks","typeLabel":"TaskConfig · object[]"},"artifacts":{"items":{"oneOf":[{"type":"string","uniqueKey":"job.artifacts.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"object","title":"ArtifactConfig","required":["source"],"properties":{"source":{"type":"string","title":"Source","isRequired":true,"uniqueKey":"job.artifacts.items.[INDEX].oneOf.1.source","typeLabel":"string"},"destination":{"oneOf":[{"type":"string","title":"Destination","uniqueKey":"job.artifacts.items.[INDEX].oneOf.1.destination.oneOf.0","typeLabel":"string"},{"type":"null","title":"Destination","uniqueKey":"job.artifacts.items.[INDEX].oneOf.1.destination.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.artifacts.items.[INDEX].oneOf.1.destination","typeLabel":"string | null"},"exclude":{"items":{"type":"string","uniqueKey":"job.artifacts.items.[INDEX].oneOf.1.exclude.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Exclude","description":"Patterns to exclude when downloading a directory artifact (passed as tar --exclude flags).","uniqueKey":"job.artifacts.items.[INDEX].oneOf.1.exclude","typeLabel":"string[]"},"service":{"oneOf":[{"type":"string","title":"Service","description":"Docker Compose service to collect this artifact from. None or 'main' targets the agent's container. Any other value requires a compose-capable environment provider and an absolute source path.","uniqueKey":"job.artifacts.items.[INDEX].oneOf.1.service.oneOf.0","typeLabel":"string"},{"type":"null","title":"Service","description":"Docker Compose service to collect this artifact from. None or 'main' targets the agent's container. Any other value requires a compose-capable environment provider and an absolute source path.","uniqueKey":"job.artifacts.items.[INDEX].oneOf.1.service.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.artifacts.items.[INDEX].oneOf.1.service","typeLabel":"string | null"}},"uniqueKey":"job.artifacts.items.[INDEX].oneOf.1","typeLabel":"ArtifactConfig · object"}],"uniqueKey":"job.artifacts.items.[INDEX]","typeLabel":"string | ArtifactConfig · object"},"type":"array","title":"Artifacts","uniqueKey":"job.artifacts","typeLabel":"(string | ArtifactConfig · object)[]"},"extra_instruction_paths":{"items":{"type":"string","format":"path","uniqueKey":"job.extra_instruction_paths.items.[INDEX]","typeLabel":"string\u003cpath>"},"type":"array","title":"Extra Instruction Paths","description":"Paths to extra instruction files appended to each task instruction. File contents are appended before ``extra_instructions``.","uniqueKey":"job.extra_instruction_paths","typeLabel":"string\u003cpath>[]"},"extra_instructions":{"items":{"type":"string","uniqueKey":"job.extra_instructions.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Extra Instructions","description":"Inline extra instructions appended to each task instruction. Appended after any ``extra_instruction_paths`` contents.","uniqueKey":"job.extra_instructions","typeLabel":"string[]"},"source_jobs":{"items":{"properties":{"action":{"type":"string","enum":["regrade","diff"],"title":"Action","isRequired":true,"uniqueKey":"job.source_jobs.items.[INDEX].action","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["local","hub"],"title":"Type","isRequired":true,"uniqueKey":"job.source_jobs.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"job_id":{"oneOf":[{"type":"string","title":"Job Id","format":"uuid","uniqueKey":"job.source_jobs.items.[INDEX].job_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","title":"Job Id","uniqueKey":"job.source_jobs.items.[INDEX].job_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.source_jobs.items.[INDEX].job_id","typeLabel":"string\u003cuuid> | null"},"path":{"oneOf":[{"type":"string","title":"Path","format":"path","uniqueKey":"job.source_jobs.items.[INDEX].path.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"Path","uniqueKey":"job.source_jobs.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"uniqueKey":"job.source_jobs.items.[INDEX].path","typeLabel":"string\u003cpath> | null"}},"type":"object","required":["action","type"],"title":"SourceJobConfig","description":"A source job this job derives from.\n\n``action`` names the derivation and must be stated explicitly. ``regrade``\nderives one regrade trial per matching source trial. ``diff`` compares the\nsource against the target job and derives only the required regrades and\nreruns. A ``hub`` source records only the hub job UUID; a ``local`` source\nrecords the job directory path plus its UUID when known.","uniqueKey":"job.source_jobs.items.[INDEX]","typeLabel":"SourceJobConfig · object"},"type":"array","title":"Source Jobs","description":"Source jobs this job derives from. 'regrade' creates one regrade trial per matching source trial. 'diff' compares the normal target expansion against the sources and creates only required regrades and reruns. All source jobs must use the same action.","uniqueKey":"job.source_jobs","typeLabel":"SourceJobConfig · object[]"}},"type":"object","title":"JobConfig","isRequired":true,"uniqueKey":"job","typeLabel":"JobConfig · object"}},"additionalProperties":false,"type":"object","required":["job"],"title":"ResolveRequest","uniqueKey":"","typeLabel":"ResolveRequest · object"},"example":{"job":{"job_name":"hello-world","tasks":[{"name":"hello-world/hello-world"}],"agents":[{"name":"oracle"}],"environment":{"type":"docker"}}},"examples":{"Example":{"title":"Example","value":{"job":{"job_name":"hello-world","tasks":[{"name":"hello-world/hello-world"}],"agents":[{"name":"oracle"}],"environment":{"type":"docker"}}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"27eff77d-4037-4e6e-9df1-235716b9a623":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"lock":{"properties":{"n_concurrent_trials":{"type":"integer","title":"N Concurrent Trials","isRequired":true,"uniqueKey":"lock.n_concurrent_trials","typeLabel":"integer"},"retry":{"properties":{"max_retries":{"type":"integer","minimum":0,"title":"Max Retries","description":"Maximum number of retry attempts","default":0,"uniqueKey":"lock.retry.max_retries","typeLabel":"integer"},"include_exceptions":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"lock.retry.include_exceptions.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Include Exceptions","description":"Only retry these exception types, subject to exclude_exceptions.","uniqueItems":true,"uniqueKey":"lock.retry.include_exceptions.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Include Exceptions","description":"Only retry these exception types, subject to exclude_exceptions.","uniqueKey":"lock.retry.include_exceptions.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.retry.include_exceptions","typeLabel":"string[] | null"},"exclude_exceptions":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"lock.retry.exclude_exceptions.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Exclude Exceptions","description":"Exception types to NOT retry on. Takes precedence over include_exceptions.","uniqueItems":true,"uniqueKey":"lock.retry.exclude_exceptions.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Exclude Exceptions","description":"Exception types to NOT retry on. Takes precedence over include_exceptions.","uniqueKey":"lock.retry.exclude_exceptions.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.retry.exclude_exceptions","typeLabel":"string[] | null"},"wait_multiplier":{"type":"number","title":"Wait Multiplier","description":"Multiplier for exponential backoff wait time","default":1,"uniqueKey":"lock.retry.wait_multiplier","typeLabel":"number"},"min_wait_sec":{"type":"number","title":"Min Wait Sec","description":"Minimum wait time in seconds between retries","default":1,"uniqueKey":"lock.retry.min_wait_sec","typeLabel":"number"},"max_wait_sec":{"type":"number","title":"Max Wait Sec","description":"Maximum wait time in seconds between retries","default":60,"uniqueKey":"lock.retry.max_wait_sec","typeLabel":"number"}},"type":"object","title":"RetryConfig","isRequired":true,"uniqueKey":"lock.retry","typeLabel":"RetryConfig · object"},"schema_version":{"type":"integer","title":"Schema Version","default":3,"uniqueKey":"lock.schema_version","typeLabel":"integer"},"created_at":{"type":"string","format":"date-time","title":"Created At","uniqueKey":"lock.created_at","typeLabel":"string\u003cdate-time>"},"harbor":{"properties":{"version":{"oneOf":[{"type":"string","title":"Version","uniqueKey":"lock.harbor.version.oneOf.0","typeLabel":"string"},{"type":"null","title":"Version","uniqueKey":"lock.harbor.version.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.harbor.version","typeLabel":"string | null"},"git_commit_hash":{"oneOf":[{"type":"string","title":"Git Commit Hash","uniqueKey":"lock.harbor.git_commit_hash.oneOf.0","typeLabel":"string"},{"type":"null","title":"Git Commit Hash","uniqueKey":"lock.harbor.git_commit_hash.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.harbor.git_commit_hash","typeLabel":"string | null"},"is_editable":{"oneOf":[{"type":"boolean","title":"Is Editable","uniqueKey":"lock.harbor.is_editable.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Is Editable","uniqueKey":"lock.harbor.is_editable.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.harbor.is_editable","typeLabel":"boolean | null"}},"type":"object","title":"HarborLockInfo","uniqueKey":"lock.harbor","typeLabel":"HarborLockInfo · object"},"trials":{"items":{"properties":{"task":{"properties":{"name":{"type":"string","title":"Name","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].task.name","typeLabel":"string"},"type":{"type":"string","enum":["local","git","package"],"title":"Type","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].task.type","typeLabel":"enum\u003cstring>"},"digest":{"type":"string","title":"Digest","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].task.digest","typeLabel":"string"},"version":{"oneOf":[{"type":"string","title":"Version","uniqueKey":"lock.trials.items.[INDEX].task.version.oneOf.0","typeLabel":"string"},{"type":"null","title":"Version","uniqueKey":"lock.trials.items.[INDEX].task.version.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].task.version","typeLabel":"string | null"},"source":{"oneOf":[{"type":"string","title":"Source","uniqueKey":"lock.trials.items.[INDEX].task.source.oneOf.0","typeLabel":"string"},{"type":"null","title":"Source","uniqueKey":"lock.trials.items.[INDEX].task.source.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].task.source","typeLabel":"string | null"},"path":{"oneOf":[{"type":"string","title":"Path","format":"path","uniqueKey":"lock.trials.items.[INDEX].task.path.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"Path","uniqueKey":"lock.trials.items.[INDEX].task.path.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].task.path","typeLabel":"string\u003cpath> | null"},"git_url":{"oneOf":[{"type":"string","title":"Git Url","uniqueKey":"lock.trials.items.[INDEX].task.git_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Git Url","uniqueKey":"lock.trials.items.[INDEX].task.git_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].task.git_url","typeLabel":"string | null"},"git_commit_id":{"oneOf":[{"type":"string","title":"Git Commit Id","uniqueKey":"lock.trials.items.[INDEX].task.git_commit_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Git Commit Id","uniqueKey":"lock.trials.items.[INDEX].task.git_commit_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].task.git_commit_id","typeLabel":"string | null"}},"type":"object","required":["name","type","digest"],"title":"TaskLock","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].task","typeLabel":"TaskLock · object"},"agent":{"properties":{"name":{"oneOf":[{"type":"string","title":"Name","uniqueKey":"lock.trials.items.[INDEX].agent.name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Name","uniqueKey":"lock.trials.items.[INDEX].agent.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].agent.name","typeLabel":"string | null"},"import_path":{"oneOf":[{"type":"string","title":"Import Path","uniqueKey":"lock.trials.items.[INDEX].agent.import_path.oneOf.0","typeLabel":"string"},{"type":"null","title":"Import Path","uniqueKey":"lock.trials.items.[INDEX].agent.import_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].agent.import_path","typeLabel":"string | null"},"model_name":{"oneOf":[{"type":"string","title":"Model Name","uniqueKey":"lock.trials.items.[INDEX].agent.model_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Name","uniqueKey":"lock.trials.items.[INDEX].agent.model_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].agent.model_name","typeLabel":"string | null"},"base_url":{"oneOf":[{"type":"string","title":"Base Url","description":"Override the inference endpoint used by the agent.","uniqueKey":"lock.trials.items.[INDEX].agent.base_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Base Url","description":"Override the inference endpoint used by the agent.","uniqueKey":"lock.trials.items.[INDEX].agent.base_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].agent.base_url","typeLabel":"string | null"},"model_api_key_name":{"oneOf":[{"type":"string","title":"Model Api Key Name","description":"Name of the environment variable containing the inference API key.","uniqueKey":"lock.trials.items.[INDEX].agent.model_api_key_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Api Key Name","description":"Name of the environment variable containing the inference API key.","uniqueKey":"lock.trials.items.[INDEX].agent.model_api_key_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].agent.model_api_key_name","typeLabel":"string | null"},"model_api_format":{"oneOf":[{"type":"string","title":"ModelApiFormat","description":"Inference API format supported by the agent.","enum":["openai_chat_completions","openai_responses","anthropic_messages","google_generate_content","bedrock_converse"],"uniqueKey":"lock.trials.items.[INDEX].agent.model_api_format.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Inference API format supported by the agent.","uniqueKey":"lock.trials.items.[INDEX].agent.model_api_format.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].agent.model_api_format","typeLabel":"enum\u003cstring> | null"},"skip_model_parsing":{"type":"boolean","title":"Skip Model Parsing","description":"Pass the model string unchanged without resolving its provider.","default":false,"uniqueKey":"lock.trials.items.[INDEX].agent.skip_model_parsing","typeLabel":"boolean"},"n_concurrent":{"oneOf":[{"type":"integer","title":"N Concurrent","description":"Per-agent cap on concurrent agent.run() phases. Must not exceed the job's n_concurrent_trials and is usually useful only when lower. When omitted, agent execution is only limited by n_concurrent_trials.","minimum":1,"uniqueKey":"lock.trials.items.[INDEX].agent.n_concurrent.oneOf.0","typeLabel":"integer"},{"type":"null","title":"N Concurrent","description":"Per-agent cap on concurrent agent.run() phases. Must not exceed the job's n_concurrent_trials and is usually useful only when lower. When omitted, agent execution is only limited by n_concurrent_trials.","uniqueKey":"lock.trials.items.[INDEX].agent.n_concurrent.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].agent.n_concurrent","typeLabel":"integer | null"},"concurrency_group":{"oneOf":[{"type":"string","title":"Concurrency Group","description":"Optional shared concurrency pool name for agent configs that should use the same n_concurrent limit.","uniqueKey":"lock.trials.items.[INDEX].agent.concurrency_group.oneOf.0","typeLabel":"string"},{"type":"null","title":"Concurrency Group","description":"Optional shared concurrency pool name for agent configs that should use the same n_concurrent limit.","uniqueKey":"lock.trials.items.[INDEX].agent.concurrency_group.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].agent.concurrency_group","typeLabel":"string | null"},"skills":{"items":{"oneOf":[{"type":"string","uniqueKey":"lock.trials.items.[INDEX].agent.skills.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"string","format":"path","uniqueKey":"lock.trials.items.[INDEX].agent.skills.items.[INDEX].oneOf.1","typeLabel":"string\u003cpath>"}],"uniqueKey":"lock.trials.items.[INDEX].agent.skills.items.[INDEX]","typeLabel":"string | string\u003cpath>"},"type":"array","title":"Skills","description":"Skill directories or source strings (git URLs, org/name[@ref] shorthand, or local paths). Job.create() / Trial.create() resolve any non-local entries to cached directories in-place.","uniqueKey":"lock.trials.items.[INDEX].agent.skills","typeLabel":"(string | string\u003cpath>)[]"},"override_timeout_sec":{"oneOf":[{"type":"number","title":"Override Timeout Sec","uniqueKey":"lock.trials.items.[INDEX].agent.override_timeout_sec.oneOf.0","typeLabel":"number"},{"type":"null","title":"Override Timeout Sec","uniqueKey":"lock.trials.items.[INDEX].agent.override_timeout_sec.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].agent.override_timeout_sec","typeLabel":"number | null"},"override_setup_timeout_sec":{"oneOf":[{"type":"number","title":"Override Setup Timeout Sec","uniqueKey":"lock.trials.items.[INDEX].agent.override_setup_timeout_sec.oneOf.0","typeLabel":"number"},{"type":"null","title":"Override Setup Timeout Sec","uniqueKey":"lock.trials.items.[INDEX].agent.override_setup_timeout_sec.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].agent.override_setup_timeout_sec","typeLabel":"number | null"},"max_timeout_sec":{"oneOf":[{"type":"number","title":"Max Timeout Sec","uniqueKey":"lock.trials.items.[INDEX].agent.max_timeout_sec.oneOf.0","typeLabel":"number"},{"type":"null","title":"Max Timeout Sec","uniqueKey":"lock.trials.items.[INDEX].agent.max_timeout_sec.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].agent.max_timeout_sec","typeLabel":"number | null"},"resume_trajectory":{"type":"boolean","title":"Resume Trajectory","description":"For multi-step tasks, resume the agent's native session from the previous step instead of starting a fresh conversation on each step. Requires an agent with native resume support (capabilities.resume); the trial fails fast otherwise. No effect on single-step tasks.","default":false,"uniqueKey":"lock.trials.items.[INDEX].agent.resume_trajectory","typeLabel":"boolean"},"load_trajectory":{"oneOf":[{"type":"string","title":"Load Trajectory","description":"Path to a trajectory to load as the agent's session before the first step, which then resumes it instead of starting fresh. A .jsonl file is the agent's native session format (lossless, same agent only; capabilities.load_native_trajectory); a .json file is an ATIF trajectory converted to the agent's native format (portable across supported agents; capabilities.load_atif_trajectory). The trial fails fast if the agent lacks the needed support. Composes with resume_trajectory.","uniqueKey":"lock.trials.items.[INDEX].agent.load_trajectory.oneOf.0","typeLabel":"string"},{"type":"null","title":"Load Trajectory","description":"Path to a trajectory to load as the agent's session before the first step, which then resumes it instead of starting fresh. A .jsonl file is the agent's native session format (lossless, same agent only; capabilities.load_native_trajectory); a .json file is an ATIF trajectory converted to the agent's native format (portable across supported agents; capabilities.load_atif_trajectory). The trial fails fast if the agent lacks the needed support. Composes with resume_trajectory.","uniqueKey":"lock.trials.items.[INDEX].agent.load_trajectory.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].agent.load_trajectory","typeLabel":"string | null"},"extra_allowed_hosts":{"items":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].agent.extra_allowed_hosts.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Extra Allowed Hosts","description":"Run-specific hostnames or IP addresses merged into the effective agent phase allowlist during agent.run() only.","uniqueKey":"lock.trials.items.[INDEX].agent.extra_allowed_hosts","typeLabel":"string[]"},"include_logs":{"items":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].agent.include_logs.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Include Logs","description":"Glob patterns of agent log files to download, relative to the agent logs directory. When set, only matching files are kept.","uniqueKey":"lock.trials.items.[INDEX].agent.include_logs","typeLabel":"string[]"},"exclude_logs":{"items":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].agent.exclude_logs.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Exclude Logs","description":"Glob patterns of agent log files to skip when downloading. Applied after include_logs, so exclude wins on overlap.","uniqueKey":"lock.trials.items.[INDEX].agent.exclude_logs","typeLabel":"string[]"},"kwargs":{"additionalProperties":true,"type":"object","title":"Kwargs","uniqueKey":"lock.trials.items.[INDEX].agent.kwargs","typeLabel":"Kwargs · object"},"env":{"additionalProperties":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].agent.env.additionalProperties","typeLabel":"string"},"type":"object","title":"Env","uniqueKey":"lock.trials.items.[INDEX].agent.env","typeLabel":"Env · object"},"mcp_servers":{"items":{"properties":{"name":{"type":"string","title":"Name","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].agent.mcp_servers.items.[INDEX].name","typeLabel":"string"},"transport":{"type":"string","enum":["stdio","sse","streamable-http"],"title":"Transport","default":"sse","uniqueKey":"lock.trials.items.[INDEX].agent.mcp_servers.items.[INDEX].transport","typeLabel":"enum\u003cstring>"},"url":{"oneOf":[{"type":"string","title":"Url","uniqueKey":"lock.trials.items.[INDEX].agent.mcp_servers.items.[INDEX].url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Url","uniqueKey":"lock.trials.items.[INDEX].agent.mcp_servers.items.[INDEX].url.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].agent.mcp_servers.items.[INDEX].url","typeLabel":"string | null"},"command":{"oneOf":[{"type":"string","title":"Command","uniqueKey":"lock.trials.items.[INDEX].agent.mcp_servers.items.[INDEX].command.oneOf.0","typeLabel":"string"},{"type":"null","title":"Command","uniqueKey":"lock.trials.items.[INDEX].agent.mcp_servers.items.[INDEX].command.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].agent.mcp_servers.items.[INDEX].command","typeLabel":"string | null"},"args":{"items":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].agent.mcp_servers.items.[INDEX].args.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Args","uniqueKey":"lock.trials.items.[INDEX].agent.mcp_servers.items.[INDEX].args","typeLabel":"string[]"},"headers":{"additionalProperties":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].agent.mcp_servers.items.[INDEX].headers.additionalProperties","typeLabel":"string"},"type":"object","title":"Headers","uniqueKey":"lock.trials.items.[INDEX].agent.mcp_servers.items.[INDEX].headers","typeLabel":"Headers · object"}},"type":"object","required":["name"],"title":"MCPServerConfig","description":"Configuration for an MCP server available to the agent.","uniqueKey":"lock.trials.items.[INDEX].agent.mcp_servers.items.[INDEX]","typeLabel":"MCPServerConfig · object"},"type":"array","title":"Mcp Servers","uniqueKey":"lock.trials.items.[INDEX].agent.mcp_servers","typeLabel":"MCPServerConfig · object[]"}},"type":"object","title":"AgentConfig","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].agent","typeLabel":"AgentConfig · object"},"environment":{"properties":{"type":{"oneOf":[{"type":"string","title":"EnvironmentType","enum":["docker","sbx","podman","daytona","e2b","modal","runloop","langsmith","ec2","gke","ack","openshift","novita","apple-container","singularity","islo","tensorlake","cwsandbox","use-computer","cua-cloud","blaxel","opensandbox","beam","skypilot","hf-sandbox","hyperbrowser","vercel","runta","prime","kata","mosaic","smol","sail","kernel","snowflake","boxd","superserve","aca-sandbox"],"uniqueKey":"lock.trials.items.[INDEX].environment.type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"lock.trials.items.[INDEX].environment.type.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].environment.type","typeLabel":"enum\u003cstring> | null"},"import_path":{"oneOf":[{"type":"string","title":"Import Path","uniqueKey":"lock.trials.items.[INDEX].environment.import_path.oneOf.0","typeLabel":"string"},{"type":"null","title":"Import Path","uniqueKey":"lock.trials.items.[INDEX].environment.import_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].environment.import_path","typeLabel":"string | null"},"force_build":{"type":"boolean","title":"Force Build","default":false,"uniqueKey":"lock.trials.items.[INDEX].environment.force_build","typeLabel":"boolean"},"delete":{"type":"boolean","title":"Delete","default":true,"uniqueKey":"lock.trials.items.[INDEX].environment.delete","typeLabel":"boolean"},"stream":{"type":"boolean","title":"Stream","default":false,"uniqueKey":"lock.trials.items.[INDEX].environment.stream","typeLabel":"boolean"},"cpu_enforcement_policy":{"type":"string","enum":["auto","limit","request","guarantee","ignore"],"title":"ResourceMode","default":"auto","uniqueKey":"lock.trials.items.[INDEX].environment.cpu_enforcement_policy","typeLabel":"enum\u003cstring>"},"memory_enforcement_policy":{"type":"string","enum":["auto","limit","request","guarantee","ignore"],"title":"ResourceMode","default":"auto","uniqueKey":"lock.trials.items.[INDEX].environment.memory_enforcement_policy","typeLabel":"enum\u003cstring>"},"override_cpus":{"oneOf":[{"type":"integer","title":"Override Cpus","uniqueKey":"lock.trials.items.[INDEX].environment.override_cpus.oneOf.0","typeLabel":"integer"},{"type":"number","title":"Override Cpus","uniqueKey":"lock.trials.items.[INDEX].environment.override_cpus.oneOf.1","typeLabel":"number"},{"type":"null","title":"Override Cpus","uniqueKey":"lock.trials.items.[INDEX].environment.override_cpus.oneOf.2","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].environment.override_cpus","typeLabel":"integer | number | null"},"override_memory_mb":{"oneOf":[{"type":"integer","title":"Override Memory Mb","uniqueKey":"lock.trials.items.[INDEX].environment.override_memory_mb.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Override Memory Mb","uniqueKey":"lock.trials.items.[INDEX].environment.override_memory_mb.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].environment.override_memory_mb","typeLabel":"integer | null"},"override_storage_mb":{"oneOf":[{"type":"integer","title":"Override Storage Mb","uniqueKey":"lock.trials.items.[INDEX].environment.override_storage_mb.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Override Storage Mb","uniqueKey":"lock.trials.items.[INDEX].environment.override_storage_mb.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].environment.override_storage_mb","typeLabel":"integer | null"},"override_gpus":{"oneOf":[{"type":"integer","title":"Override Gpus","uniqueKey":"lock.trials.items.[INDEX].environment.override_gpus.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Override Gpus","uniqueKey":"lock.trials.items.[INDEX].environment.override_gpus.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].environment.override_gpus","typeLabel":"integer | null"},"override_tpu":{"oneOf":[{"type":"object","title":"TpuSpec","description":"Specification for a TPU slice attached to an environment.\n\nThe (type, topology) pair fully determines the GKE node pool the pod\nlands on *and* the per-pod TPU chip count, so there is no separate\nuser-facing chip-count field — it is derived via chip_count.","required":["type","topology"],"properties":{"type":{"type":"string","minLength":1,"title":"Type","description":"TPU accelerator type. Accepts either a user-friendly alias (e.g., 'v6e', 'trillium', 'v4') or a canonical GKE label (e.g., 'tpu-v6e-slice', 'tpu7x').","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].environment.override_tpu.oneOf.0.type","typeLabel":"string"},"topology":{"type":"string","title":"Topology","description":"TPU topology as 'NxM' or 'NxMxK' (e.g., '2x4', '2x2x1').","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].environment.override_tpu.oneOf.0.topology","typeLabel":"string"}},"uniqueKey":"lock.trials.items.[INDEX].environment.override_tpu.oneOf.0","typeLabel":"TpuSpec · object"},{"type":"null","uniqueKey":"lock.trials.items.[INDEX].environment.override_tpu.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].environment.override_tpu","typeLabel":"TpuSpec · object | null"},"mounts":{"oneOf":[{"type":"array","items":{"properties":{"type":{"type":"string","enum":["bind","volume","image"],"title":"Type","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].environment.mounts.oneOf.0.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"source":{"type":"string","title":"Source","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].environment.mounts.oneOf.0.items.[INDEX].source","typeLabel":"string"},"target":{"type":"string","title":"Target","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].environment.mounts.oneOf.0.items.[INDEX].target","typeLabel":"string"},"read_only":{"type":"boolean","const":true,"title":"Read Only","uniqueKey":"lock.trials.items.[INDEX].environment.mounts.oneOf.0.items.[INDEX].read_only","typeLabel":"boolean"},"bind":{"properties":{"create_host_path":{"type":"boolean","const":false,"title":"Create Host Path","uniqueKey":"lock.trials.items.[INDEX].environment.mounts.oneOf.0.items.[INDEX].bind.create_host_path","typeLabel":"boolean"},"selinux":{"type":"string","enum":["z","Z"],"title":"Selinux","uniqueKey":"lock.trials.items.[INDEX].environment.mounts.oneOf.0.items.[INDEX].bind.selinux","typeLabel":"enum\u003cstring>"}},"type":"object","title":"ServiceVolumeBind","uniqueKey":"lock.trials.items.[INDEX].environment.mounts.oneOf.0.items.[INDEX].bind","typeLabel":"ServiceVolumeBind · object"},"volume":{"properties":{"subpath":{"type":"string","title":"Subpath","uniqueKey":"lock.trials.items.[INDEX].environment.mounts.oneOf.0.items.[INDEX].volume.subpath","typeLabel":"string"}},"type":"object","title":"ServiceVolumeVolume","uniqueKey":"lock.trials.items.[INDEX].environment.mounts.oneOf.0.items.[INDEX].volume","typeLabel":"ServiceVolumeVolume · object"},"image":{"properties":{"subpath":{"type":"string","title":"Subpath","uniqueKey":"lock.trials.items.[INDEX].environment.mounts.oneOf.0.items.[INDEX].image.subpath","typeLabel":"string"}},"type":"object","title":"ServiceVolumeImage","uniqueKey":"lock.trials.items.[INDEX].environment.mounts.oneOf.0.items.[INDEX].image","typeLabel":"ServiceVolumeImage · object"}},"type":"object","required":["type","source","target"],"title":"ServiceVolumeConfig","uniqueKey":"lock.trials.items.[INDEX].environment.mounts.oneOf.0.items.[INDEX]","typeLabel":"ServiceVolumeConfig · object"},"title":"Mounts","description":"Additional mounts for the agent environment only.","uniqueKey":"lock.trials.items.[INDEX].environment.mounts.oneOf.0","typeLabel":"ServiceVolumeConfig · object[]"},{"type":"null","title":"Mounts","description":"Additional mounts for the agent environment only.","uniqueKey":"lock.trials.items.[INDEX].environment.mounts.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].environment.mounts","typeLabel":"ServiceVolumeConfig · object[] | null"},"extra_docker_compose":{"items":{"type":"string","format":"path","uniqueKey":"lock.trials.items.[INDEX].environment.extra_docker_compose.items.[INDEX]","typeLabel":"string\u003cpath>"},"type":"array","title":"Extra Docker Compose","description":"Additional Docker Compose overlays for the agent environment only.","uniqueKey":"lock.trials.items.[INDEX].environment.extra_docker_compose","typeLabel":"string\u003cpath>[]"},"env":{"additionalProperties":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].environment.env.additionalProperties","typeLabel":"string"},"type":"object","title":"Env","uniqueKey":"lock.trials.items.[INDEX].environment.env","typeLabel":"Env · object"},"kwargs":{"additionalProperties":true,"type":"object","title":"Kwargs","uniqueKey":"lock.trials.items.[INDEX].environment.kwargs","typeLabel":"Kwargs · object"},"extra_allowed_hosts":{"items":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].environment.extra_allowed_hosts.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Extra Allowed Hosts","description":"Run-specific hostnames or IP addresses merged into the [environment] network baseline at agent env start.","uniqueKey":"lock.trials.items.[INDEX].environment.extra_allowed_hosts","typeLabel":"string[]"}},"type":"object","title":"EnvironmentConfig","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].environment","typeLabel":"EnvironmentConfig · object"},"verifier":{"properties":{"override_timeout_sec":{"oneOf":[{"type":"number","title":"Override Timeout Sec","uniqueKey":"lock.trials.items.[INDEX].verifier.override_timeout_sec.oneOf.0","typeLabel":"number"},{"type":"null","title":"Override Timeout Sec","uniqueKey":"lock.trials.items.[INDEX].verifier.override_timeout_sec.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].verifier.override_timeout_sec","typeLabel":"number | null"},"max_timeout_sec":{"oneOf":[{"type":"number","title":"Max Timeout Sec","uniqueKey":"lock.trials.items.[INDEX].verifier.max_timeout_sec.oneOf.0","typeLabel":"number"},{"type":"null","title":"Max Timeout Sec","uniqueKey":"lock.trials.items.[INDEX].verifier.max_timeout_sec.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].verifier.max_timeout_sec","typeLabel":"number | null"},"include_logs":{"items":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].verifier.include_logs.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Include Logs","description":"Glob patterns of verifier log files to download, relative to the verifier logs directory. When set, only matching files are kept; the reward file is always downloaded.","uniqueKey":"lock.trials.items.[INDEX].verifier.include_logs","typeLabel":"string[]"},"exclude_logs":{"items":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].verifier.exclude_logs.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Exclude Logs","description":"Glob patterns of verifier log files to skip when downloading. Applied after include_logs, so exclude wins on overlap.","uniqueKey":"lock.trials.items.[INDEX].verifier.exclude_logs","typeLabel":"string[]"},"env":{"additionalProperties":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].verifier.env.additionalProperties","typeLabel":"string"},"type":"object","title":"Env","uniqueKey":"lock.trials.items.[INDEX].verifier.env","typeLabel":"Env · object"},"import_path":{"oneOf":[{"type":"string","title":"Import Path","uniqueKey":"lock.trials.items.[INDEX].verifier.import_path.oneOf.0","typeLabel":"string"},{"type":"null","title":"Import Path","uniqueKey":"lock.trials.items.[INDEX].verifier.import_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].verifier.import_path","typeLabel":"string | null"},"kwargs":{"additionalProperties":true,"type":"object","title":"Kwargs","uniqueKey":"lock.trials.items.[INDEX].verifier.kwargs","typeLabel":"Kwargs · object"},"disable":{"type":"boolean","title":"Disable","default":false,"uniqueKey":"lock.trials.items.[INDEX].verifier.disable","typeLabel":"boolean"},"extra_allowed_hosts":{"items":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].verifier.extra_allowed_hosts.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Extra Allowed Hosts","description":"Run-specific hostnames or IP addresses merged into the effective verifier phase allowlist during verify(), and into the verifier environment baseline when the verifier runs separately.","uniqueKey":"lock.trials.items.[INDEX].verifier.extra_allowed_hosts","typeLabel":"string[]"},"environment_mode":{"oneOf":[{"type":"string","title":"VerifierEnvironmentMode","description":"Whether the verifier runs in the agent's environment or its own.","enum":["shared","separate"],"uniqueKey":"lock.trials.items.[INDEX].verifier.environment_mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"lock.trials.items.[INDEX].verifier.environment_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].verifier.environment_mode","typeLabel":"enum\u003cstring> | null"}},"type":"object","title":"VerifierLock","description":"The trial's verifier config plus the resolved environment mode.\n\n``environment_mode`` is None for multi-step tasks, where the mode is\nresolved per step.","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].verifier","typeLabel":"VerifierLock · object"},"schema_version":{"type":"integer","title":"Schema Version","default":2,"uniqueKey":"lock.trials.items.[INDEX].schema_version","typeLabel":"integer"},"install_only":{"type":"boolean","title":"Install Only","default":false,"uniqueKey":"lock.trials.items.[INDEX].install_only","typeLabel":"boolean"},"timeout_multiplier":{"type":"number","title":"Timeout Multiplier","default":1,"uniqueKey":"lock.trials.items.[INDEX].timeout_multiplier","typeLabel":"number"},"agent_timeout_multiplier":{"oneOf":[{"type":"number","title":"Agent Timeout Multiplier","uniqueKey":"lock.trials.items.[INDEX].agent_timeout_multiplier.oneOf.0","typeLabel":"number"},{"type":"null","title":"Agent Timeout Multiplier","uniqueKey":"lock.trials.items.[INDEX].agent_timeout_multiplier.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].agent_timeout_multiplier","typeLabel":"number | null"},"verifier_timeout_multiplier":{"oneOf":[{"type":"number","title":"Verifier Timeout Multiplier","uniqueKey":"lock.trials.items.[INDEX].verifier_timeout_multiplier.oneOf.0","typeLabel":"number"},{"type":"null","title":"Verifier Timeout Multiplier","uniqueKey":"lock.trials.items.[INDEX].verifier_timeout_multiplier.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].verifier_timeout_multiplier","typeLabel":"number | null"},"agent_setup_timeout_multiplier":{"oneOf":[{"type":"number","title":"Agent Setup Timeout Multiplier","uniqueKey":"lock.trials.items.[INDEX].agent_setup_timeout_multiplier.oneOf.0","typeLabel":"number"},{"type":"null","title":"Agent Setup Timeout Multiplier","uniqueKey":"lock.trials.items.[INDEX].agent_setup_timeout_multiplier.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].agent_setup_timeout_multiplier","typeLabel":"number | null"},"environment_build_timeout_multiplier":{"oneOf":[{"type":"number","title":"Environment Build Timeout Multiplier","uniqueKey":"lock.trials.items.[INDEX].environment_build_timeout_multiplier.oneOf.0","typeLabel":"number"},{"type":"null","title":"Environment Build Timeout Multiplier","uniqueKey":"lock.trials.items.[INDEX].environment_build_timeout_multiplier.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].environment_build_timeout_multiplier","typeLabel":"number | null"},"extra_instructions":{"oneOf":[{"type":"array","items":{"properties":{"digest":{"type":"string","title":"Digest","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].extra_instructions.oneOf.0.items.[INDEX].digest","typeLabel":"string"},"path":{"oneOf":[{"type":"string","title":"Path","format":"path","uniqueKey":"lock.trials.items.[INDEX].extra_instructions.oneOf.0.items.[INDEX].path.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"Path","uniqueKey":"lock.trials.items.[INDEX].extra_instructions.oneOf.0.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].extra_instructions.oneOf.0.items.[INDEX].path","typeLabel":"string\u003cpath> | null"}},"type":"object","required":["digest"],"title":"ExtraInstructionLock","uniqueKey":"lock.trials.items.[INDEX].extra_instructions.oneOf.0.items.[INDEX]","typeLabel":"ExtraInstructionLock · object"},"title":"Extra Instructions","uniqueKey":"lock.trials.items.[INDEX].extra_instructions.oneOf.0","typeLabel":"ExtraInstructionLock · object[]"},{"type":"null","title":"Extra Instructions","uniqueKey":"lock.trials.items.[INDEX].extra_instructions.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].extra_instructions","typeLabel":"ExtraInstructionLock · object[] | null"},"user_agent":{"oneOf":[{"type":"object","title":"UserAgentConfig","required":["bridge"],"properties":{"bridge":{"properties":{"kind":{"type":"string","enum":["acp"],"title":"BridgeKind","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.bridge.kind","typeLabel":"enum\u003cstring>"},"prompt_path":{"oneOf":[{"type":"string","title":"Prompt Path","format":"path","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.bridge.prompt_path.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"Prompt Path","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.bridge.prompt_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.bridge.prompt_path","typeLabel":"string\u003cpath> | null"},"kwargs":{"additionalProperties":true,"type":"object","title":"Kwargs","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.bridge.kwargs","typeLabel":"Kwargs · object"}},"type":"object","required":["kind"],"title":"BridgeConfig","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.bridge","typeLabel":"BridgeConfig · object"},"name":{"oneOf":[{"type":"string","title":"Name","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Name","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.name","typeLabel":"string | null"},"import_path":{"oneOf":[{"type":"string","title":"Import Path","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.import_path.oneOf.0","typeLabel":"string"},{"type":"null","title":"Import Path","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.import_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.import_path","typeLabel":"string | null"},"model_name":{"oneOf":[{"type":"string","title":"Model Name","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.model_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Name","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.model_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.model_name","typeLabel":"string | null"},"base_url":{"oneOf":[{"type":"string","title":"Base Url","description":"Override the inference endpoint used by the agent.","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.base_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Base Url","description":"Override the inference endpoint used by the agent.","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.base_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.base_url","typeLabel":"string | null"},"model_api_key_name":{"oneOf":[{"type":"string","title":"Model Api Key Name","description":"Name of the environment variable containing the inference API key.","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.model_api_key_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Api Key Name","description":"Name of the environment variable containing the inference API key.","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.model_api_key_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.model_api_key_name","typeLabel":"string | null"},"model_api_format":{"oneOf":[{"type":"string","title":"ModelApiFormat","description":"Inference API format supported by the agent.","enum":["openai_chat_completions","openai_responses","anthropic_messages","google_generate_content","bedrock_converse"],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.model_api_format.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Inference API format supported by the agent.","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.model_api_format.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.model_api_format","typeLabel":"enum\u003cstring> | null"},"skip_model_parsing":{"type":"boolean","title":"Skip Model Parsing","description":"Pass the model string unchanged without resolving its provider.","default":false,"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.skip_model_parsing","typeLabel":"boolean"},"n_concurrent":{"oneOf":[{"type":"integer","title":"N Concurrent","description":"Per-agent cap on concurrent agent.run() phases. Must not exceed the job's n_concurrent_trials and is usually useful only when lower. When omitted, agent execution is only limited by n_concurrent_trials.","minimum":1,"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.n_concurrent.oneOf.0","typeLabel":"integer"},{"type":"null","title":"N Concurrent","description":"Per-agent cap on concurrent agent.run() phases. Must not exceed the job's n_concurrent_trials and is usually useful only when lower. When omitted, agent execution is only limited by n_concurrent_trials.","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.n_concurrent.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.n_concurrent","typeLabel":"integer | null"},"concurrency_group":{"oneOf":[{"type":"string","title":"Concurrency Group","description":"Optional shared concurrency pool name for agent configs that should use the same n_concurrent limit.","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.concurrency_group.oneOf.0","typeLabel":"string"},{"type":"null","title":"Concurrency Group","description":"Optional shared concurrency pool name for agent configs that should use the same n_concurrent limit.","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.concurrency_group.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.concurrency_group","typeLabel":"string | null"},"skills":{"items":{"oneOf":[{"type":"string","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.skills.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"string","format":"path","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.skills.items.[INDEX].oneOf.1","typeLabel":"string\u003cpath>"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.skills.items.[INDEX]","typeLabel":"string | string\u003cpath>"},"type":"array","title":"Skills","description":"Skill directories or source strings (git URLs, org/name[@ref] shorthand, or local paths). Job.create() / Trial.create() resolve any non-local entries to cached directories in-place.","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.skills","typeLabel":"(string | string\u003cpath>)[]"},"override_timeout_sec":{"oneOf":[{"type":"number","title":"Override Timeout Sec","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.override_timeout_sec.oneOf.0","typeLabel":"number"},{"type":"null","title":"Override Timeout Sec","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.override_timeout_sec.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.override_timeout_sec","typeLabel":"number | null"},"override_setup_timeout_sec":{"oneOf":[{"type":"number","title":"Override Setup Timeout Sec","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.override_setup_timeout_sec.oneOf.0","typeLabel":"number"},{"type":"null","title":"Override Setup Timeout Sec","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.override_setup_timeout_sec.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.override_setup_timeout_sec","typeLabel":"number | null"},"max_timeout_sec":{"oneOf":[{"type":"number","title":"Max Timeout Sec","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.max_timeout_sec.oneOf.0","typeLabel":"number"},{"type":"null","title":"Max Timeout Sec","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.max_timeout_sec.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.max_timeout_sec","typeLabel":"number | null"},"resume_trajectory":{"type":"boolean","title":"Resume Trajectory","description":"For multi-step tasks, resume the agent's native session from the previous step instead of starting a fresh conversation on each step. Requires an agent with native resume support (capabilities.resume); the trial fails fast otherwise. No effect on single-step tasks.","default":false,"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.resume_trajectory","typeLabel":"boolean"},"load_trajectory":{"oneOf":[{"type":"string","title":"Load Trajectory","description":"Path to a trajectory to load as the agent's session before the first step, which then resumes it instead of starting fresh. A .jsonl file is the agent's native session format (lossless, same agent only; capabilities.load_native_trajectory); a .json file is an ATIF trajectory converted to the agent's native format (portable across supported agents; capabilities.load_atif_trajectory). The trial fails fast if the agent lacks the needed support. Composes with resume_trajectory.","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.load_trajectory.oneOf.0","typeLabel":"string"},{"type":"null","title":"Load Trajectory","description":"Path to a trajectory to load as the agent's session before the first step, which then resumes it instead of starting fresh. A .jsonl file is the agent's native session format (lossless, same agent only; capabilities.load_native_trajectory); a .json file is an ATIF trajectory converted to the agent's native format (portable across supported agents; capabilities.load_atif_trajectory). The trial fails fast if the agent lacks the needed support. Composes with resume_trajectory.","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.load_trajectory.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.load_trajectory","typeLabel":"string | null"},"extra_allowed_hosts":{"items":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.extra_allowed_hosts.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Extra Allowed Hosts","description":"Run-specific hostnames or IP addresses merged into the effective agent phase allowlist during agent.run() only.","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.extra_allowed_hosts","typeLabel":"string[]"},"include_logs":{"items":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.include_logs.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Include Logs","description":"Glob patterns of agent log files to download, relative to the agent logs directory. When set, only matching files are kept.","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.include_logs","typeLabel":"string[]"},"exclude_logs":{"items":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.exclude_logs.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Exclude Logs","description":"Glob patterns of agent log files to skip when downloading. Applied after include_logs, so exclude wins on overlap.","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.exclude_logs","typeLabel":"string[]"},"kwargs":{"additionalProperties":true,"type":"object","title":"Kwargs","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.kwargs","typeLabel":"Kwargs · object"},"env":{"additionalProperties":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.env.additionalProperties","typeLabel":"string"},"type":"object","title":"Env","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.env","typeLabel":"Env · object"},"mcp_servers":{"items":{"properties":{"name":{"type":"string","title":"Name","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.mcp_servers.items.[INDEX].name","typeLabel":"string"},"transport":{"type":"string","enum":["stdio","sse","streamable-http"],"title":"Transport","default":"sse","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.mcp_servers.items.[INDEX].transport","typeLabel":"enum\u003cstring>"},"url":{"oneOf":[{"type":"string","title":"Url","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.mcp_servers.items.[INDEX].url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Url","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.mcp_servers.items.[INDEX].url.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.mcp_servers.items.[INDEX].url","typeLabel":"string | null"},"command":{"oneOf":[{"type":"string","title":"Command","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.mcp_servers.items.[INDEX].command.oneOf.0","typeLabel":"string"},{"type":"null","title":"Command","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.mcp_servers.items.[INDEX].command.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.mcp_servers.items.[INDEX].command","typeLabel":"string | null"},"args":{"items":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.mcp_servers.items.[INDEX].args.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Args","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.mcp_servers.items.[INDEX].args","typeLabel":"string[]"},"headers":{"additionalProperties":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.mcp_servers.items.[INDEX].headers.additionalProperties","typeLabel":"string"},"type":"object","title":"Headers","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.mcp_servers.items.[INDEX].headers","typeLabel":"Headers · object"}},"type":"object","required":["name"],"title":"MCPServerConfig","description":"Configuration for an MCP server available to the agent.","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.mcp_servers.items.[INDEX]","typeLabel":"MCPServerConfig · object"},"type":"array","title":"Mcp Servers","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.mcp_servers","typeLabel":"MCPServerConfig · object[]"},"user_persona_path":{"oneOf":[{"type":"string","title":"User Persona Path","format":"path","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.user_persona_path.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"User Persona Path","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.user_persona_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.user_persona_path","typeLabel":"string\u003cpath> | null"},"user_prompt_template_path":{"oneOf":[{"type":"string","title":"User Prompt Template Path","format":"path","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.user_prompt_template_path.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"User Prompt Template Path","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.user_prompt_template_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0.user_prompt_template_path","typeLabel":"string\u003cpath> | null"}},"uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.0","typeLabel":"UserAgentConfig · object"},{"type":"null","uniqueKey":"lock.trials.items.[INDEX].user_agent.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_agent","typeLabel":"UserAgentConfig · object | null"},"user_persona":{"oneOf":[{"type":"object","title":"ExtraInstructionLock","required":["digest"],"properties":{"digest":{"type":"string","title":"Digest","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].user_persona.oneOf.0.digest","typeLabel":"string"},"path":{"oneOf":[{"type":"string","title":"Path","format":"path","uniqueKey":"lock.trials.items.[INDEX].user_persona.oneOf.0.path.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"Path","uniqueKey":"lock.trials.items.[INDEX].user_persona.oneOf.0.path.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_persona.oneOf.0.path","typeLabel":"string\u003cpath> | null"}},"uniqueKey":"lock.trials.items.[INDEX].user_persona.oneOf.0","typeLabel":"ExtraInstructionLock · object"},{"type":"null","uniqueKey":"lock.trials.items.[INDEX].user_persona.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_persona","typeLabel":"ExtraInstructionLock · object | null"},"user_prompt_template":{"oneOf":[{"type":"object","title":"ExtraInstructionLock","required":["digest"],"properties":{"digest":{"type":"string","title":"Digest","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].user_prompt_template.oneOf.0.digest","typeLabel":"string"},"path":{"oneOf":[{"type":"string","title":"Path","format":"path","uniqueKey":"lock.trials.items.[INDEX].user_prompt_template.oneOf.0.path.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"Path","uniqueKey":"lock.trials.items.[INDEX].user_prompt_template.oneOf.0.path.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_prompt_template.oneOf.0.path","typeLabel":"string\u003cpath> | null"}},"uniqueKey":"lock.trials.items.[INDEX].user_prompt_template.oneOf.0","typeLabel":"ExtraInstructionLock · object"},{"type":"null","uniqueKey":"lock.trials.items.[INDEX].user_prompt_template.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].user_prompt_template","typeLabel":"ExtraInstructionLock · object | null"},"bridge_prompt":{"oneOf":[{"type":"object","title":"ExtraInstructionLock","required":["digest"],"properties":{"digest":{"type":"string","title":"Digest","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].bridge_prompt.oneOf.0.digest","typeLabel":"string"},"path":{"oneOf":[{"type":"string","title":"Path","format":"path","uniqueKey":"lock.trials.items.[INDEX].bridge_prompt.oneOf.0.path.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"Path","uniqueKey":"lock.trials.items.[INDEX].bridge_prompt.oneOf.0.path.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].bridge_prompt.oneOf.0.path","typeLabel":"string\u003cpath> | null"}},"uniqueKey":"lock.trials.items.[INDEX].bridge_prompt.oneOf.0","typeLabel":"ExtraInstructionLock · object"},{"type":"null","uniqueKey":"lock.trials.items.[INDEX].bridge_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].bridge_prompt","typeLabel":"ExtraInstructionLock · object | null"},"bridge_inputs":{"additionalProperties":{"properties":{"digest":{"type":"string","title":"Digest","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].bridge_inputs.additionalProperties.digest","typeLabel":"string"},"path":{"oneOf":[{"type":"string","title":"Path","format":"path","uniqueKey":"lock.trials.items.[INDEX].bridge_inputs.additionalProperties.path.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"Path","uniqueKey":"lock.trials.items.[INDEX].bridge_inputs.additionalProperties.path.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].bridge_inputs.additionalProperties.path","typeLabel":"string\u003cpath> | null"}},"type":"object","required":["digest"],"title":"ExtraInstructionLock","uniqueKey":"lock.trials.items.[INDEX].bridge_inputs.additionalProperties","typeLabel":"ExtraInstructionLock · object"},"type":"object","title":"Bridge Inputs","uniqueKey":"lock.trials.items.[INDEX].bridge_inputs","typeLabel":"Bridge Inputs · object"},"skills":{"items":{"properties":{"name":{"type":"string","title":"Name","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].skills.items.[INDEX].name","typeLabel":"string"},"source":{"type":"string","format":"path","title":"Source","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].skills.items.[INDEX].source","typeLabel":"string\u003cpath>"},"digest":{"type":"string","title":"Digest","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].skills.items.[INDEX].digest","typeLabel":"string"},"git_url":{"oneOf":[{"type":"string","title":"Git Url","uniqueKey":"lock.trials.items.[INDEX].skills.items.[INDEX].git_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Git Url","uniqueKey":"lock.trials.items.[INDEX].skills.items.[INDEX].git_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].skills.items.[INDEX].git_url","typeLabel":"string | null"},"git_commit_id":{"oneOf":[{"type":"string","title":"Git Commit Id","uniqueKey":"lock.trials.items.[INDEX].skills.items.[INDEX].git_commit_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Git Commit Id","uniqueKey":"lock.trials.items.[INDEX].skills.items.[INDEX].git_commit_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].skills.items.[INDEX].git_commit_id","typeLabel":"string | null"}},"type":"object","required":["name","source","digest"],"title":"AgentSkillLock","uniqueKey":"lock.trials.items.[INDEX].skills.items.[INDEX]","typeLabel":"AgentSkillLock · object"},"type":"array","title":"Skills","uniqueKey":"lock.trials.items.[INDEX].skills","typeLabel":"AgentSkillLock · object[]"},"extra_docker_compose":{"oneOf":[{"type":"array","items":{"properties":{"path":{"type":"string","format":"path","title":"Path","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].extra_docker_compose.oneOf.0.items.[INDEX].path","typeLabel":"string\u003cpath>"},"digest":{"type":"string","title":"Digest","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].extra_docker_compose.oneOf.0.items.[INDEX].digest","typeLabel":"string"}},"type":"object","required":["path","digest"],"title":"ExtraDockerComposeLock","uniqueKey":"lock.trials.items.[INDEX].extra_docker_compose.oneOf.0.items.[INDEX]","typeLabel":"ExtraDockerComposeLock · object"},"title":"Extra Docker Compose","uniqueKey":"lock.trials.items.[INDEX].extra_docker_compose.oneOf.0","typeLabel":"ExtraDockerComposeLock · object[]"},{"type":"null","title":"Extra Docker Compose","uniqueKey":"lock.trials.items.[INDEX].extra_docker_compose.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].extra_docker_compose","typeLabel":"ExtraDockerComposeLock · object[] | null"},"artifacts":{"items":{"oneOf":[{"type":"string","uniqueKey":"lock.trials.items.[INDEX].artifacts.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"object","title":"ArtifactConfig","required":["source"],"properties":{"source":{"type":"string","title":"Source","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].artifacts.items.[INDEX].oneOf.1.source","typeLabel":"string"},"destination":{"oneOf":[{"type":"string","title":"Destination","uniqueKey":"lock.trials.items.[INDEX].artifacts.items.[INDEX].oneOf.1.destination.oneOf.0","typeLabel":"string"},{"type":"null","title":"Destination","uniqueKey":"lock.trials.items.[INDEX].artifacts.items.[INDEX].oneOf.1.destination.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].artifacts.items.[INDEX].oneOf.1.destination","typeLabel":"string | null"},"exclude":{"items":{"type":"string","uniqueKey":"lock.trials.items.[INDEX].artifacts.items.[INDEX].oneOf.1.exclude.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Exclude","description":"Patterns to exclude when downloading a directory artifact (passed as tar --exclude flags).","uniqueKey":"lock.trials.items.[INDEX].artifacts.items.[INDEX].oneOf.1.exclude","typeLabel":"string[]"},"service":{"oneOf":[{"type":"string","title":"Service","description":"Docker Compose service to collect this artifact from. None or 'main' targets the agent's container. Any other value requires a compose-capable environment provider and an absolute source path.","uniqueKey":"lock.trials.items.[INDEX].artifacts.items.[INDEX].oneOf.1.service.oneOf.0","typeLabel":"string"},{"type":"null","title":"Service","description":"Docker Compose service to collect this artifact from. None or 'main' targets the agent's container. Any other value requires a compose-capable environment provider and an absolute source path.","uniqueKey":"lock.trials.items.[INDEX].artifacts.items.[INDEX].oneOf.1.service.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].artifacts.items.[INDEX].oneOf.1.service","typeLabel":"string | null"}},"uniqueKey":"lock.trials.items.[INDEX].artifacts.items.[INDEX].oneOf.1","typeLabel":"ArtifactConfig · object"}],"uniqueKey":"lock.trials.items.[INDEX].artifacts.items.[INDEX]","typeLabel":"string | ArtifactConfig · object"},"type":"array","title":"Artifacts","uniqueKey":"lock.trials.items.[INDEX].artifacts","typeLabel":"(string | ArtifactConfig · object)[]"},"override_error_policy":{"additionalProperties":{"properties":{"should_retry":{"oneOf":[{"type":"boolean","title":"Should Retry","uniqueKey":"lock.trials.items.[INDEX].override_error_policy.additionalProperties.should_retry.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Should Retry","uniqueKey":"lock.trials.items.[INDEX].override_error_policy.additionalProperties.should_retry.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].override_error_policy.additionalProperties.should_retry","typeLabel":"boolean | null"},"should_grade":{"oneOf":[{"type":"boolean","title":"Should Grade","uniqueKey":"lock.trials.items.[INDEX].override_error_policy.additionalProperties.should_grade.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Should Grade","uniqueKey":"lock.trials.items.[INDEX].override_error_policy.additionalProperties.should_grade.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].override_error_policy.additionalProperties.should_grade","typeLabel":"boolean | null"},"has_valid_reward":{"oneOf":[{"type":"boolean","title":"Has Valid Reward","uniqueKey":"lock.trials.items.[INDEX].override_error_policy.additionalProperties.has_valid_reward.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Has Valid Reward","uniqueKey":"lock.trials.items.[INDEX].override_error_policy.additionalProperties.has_valid_reward.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].override_error_policy.additionalProperties.has_valid_reward","typeLabel":"boolean | null"}},"additionalProperties":false,"type":"object","title":"ErrorPolicyOverride","uniqueKey":"lock.trials.items.[INDEX].override_error_policy.additionalProperties","typeLabel":"ErrorPolicyOverride · object"},"type":"object","title":"Override Error Policy","uniqueKey":"lock.trials.items.[INDEX].override_error_policy","typeLabel":"Override Error Policy · object"},"source_trial":{"oneOf":[{"type":"object","title":"SourceTrialLock","description":"Resolved source: the recorded trial this trial derives from.\n\nThe same shape as the config's ``source_trial`` plus ``task``: the\nsource trial's own task lock, copied verbatim from its lock.json (None\nwhen the source has none). Resolution also fills in ``trial_id`` for\nlocal sources that did not record it. Equality is content-anchored:\nthe trial UUID (path only as a fallback for id-less sources) and the\nsource task digest. ``path`` is otherwise recorded for humans and\nresume, not compared.","required":["action","type"],"properties":{"action":{"type":"string","const":"regrade","title":"Action","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.action","typeLabel":"string"},"type":{"type":"string","enum":["local","hub"],"title":"Type","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.type","typeLabel":"enum\u003cstring>"},"trial_id":{"oneOf":[{"type":"string","title":"Trial Id","format":"uuid","uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.trial_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","title":"Trial Id","uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.trial_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.trial_id","typeLabel":"string\u003cuuid> | null"},"path":{"oneOf":[{"type":"string","title":"Path","format":"path","uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.path.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"Path","uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.path.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.path","typeLabel":"string\u003cpath> | null"},"task":{"oneOf":[{"type":"object","title":"TaskLock","required":["name","type","digest"],"properties":{"name":{"type":"string","title":"Name","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0.name","typeLabel":"string"},"type":{"type":"string","enum":["local","git","package"],"title":"Type","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0.type","typeLabel":"enum\u003cstring>"},"digest":{"type":"string","title":"Digest","isRequired":true,"uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0.digest","typeLabel":"string"},"version":{"oneOf":[{"type":"string","title":"Version","uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0.version.oneOf.0","typeLabel":"string"},{"type":"null","title":"Version","uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0.version.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0.version","typeLabel":"string | null"},"source":{"oneOf":[{"type":"string","title":"Source","uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0.source.oneOf.0","typeLabel":"string"},{"type":"null","title":"Source","uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0.source.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0.source","typeLabel":"string | null"},"path":{"oneOf":[{"type":"string","title":"Path","format":"path","uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0.path.oneOf.0","typeLabel":"string\u003cpath>"},{"type":"null","title":"Path","uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0.path.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0.path","typeLabel":"string\u003cpath> | null"},"git_url":{"oneOf":[{"type":"string","title":"Git Url","uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0.git_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Git Url","uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0.git_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0.git_url","typeLabel":"string | null"},"git_commit_id":{"oneOf":[{"type":"string","title":"Git Commit Id","uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0.git_commit_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Git Commit Id","uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0.git_commit_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0.git_commit_id","typeLabel":"string | null"}},"uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.0","typeLabel":"TaskLock · object"},{"type":"null","uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0.task","typeLabel":"TaskLock · object | null"}},"uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.0","typeLabel":"SourceTrialLock · object"},{"type":"null","uniqueKey":"lock.trials.items.[INDEX].source_trial.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock.trials.items.[INDEX].source_trial","typeLabel":"SourceTrialLock · object | null"}},"type":"object","required":["task","agent","environment","verifier"],"title":"TrialLock","uniqueKey":"lock.trials.items.[INDEX]","typeLabel":"TrialLock · object"},"type":"array","title":"Trials","uniqueKey":"lock.trials","typeLabel":"TrialLock · object[]"}},"type":"object","required":["n_concurrent_trials","retry"],"title":"JobLock","isRequired":true,"uniqueKey":"lock","typeLabel":"JobLock · object"}},"type":"object","required":["lock"],"title":"ResolveResponse","uniqueKey":"","typeLabel":"ResolveResponse · object"},"examples":{"Example":{"title":"Example","value":{"lock":{"n_concurrent_trials":123,"retry":{"max_retries":0,"include_exceptions":["\u003cstring>"],"exclude_exceptions":["\u003cstring>"],"wait_multiplier":1,"min_wait_sec":1,"max_wait_sec":60},"schema_version":3,"created_at":"2023-11-07T05:31:56Z","harbor":{"version":"\u003cstring>","git_commit_hash":"\u003cstring>","is_editable":true},"trials":[{"task":{"name":"\u003cstring>","type":"local","digest":"\u003cstring>","version":"\u003cstring>","source":"\u003cstring>","path":"\u003cstring>","git_url":"\u003cstring>","git_commit_id":"\u003cstring>"},"agent":{"name":"\u003cstring>","import_path":"\u003cstring>","model_name":"\u003cstring>","base_url":"\u003cstring>","model_api_key_name":"\u003cstring>","model_api_format":"openai_chat_completions","skip_model_parsing":false,"n_concurrent":2,"concurrency_group":"\u003cstring>","skills":["\u003cstring>"],"override_timeout_sec":123,"override_setup_timeout_sec":123,"max_timeout_sec":123,"resume_trajectory":false,"load_trajectory":"\u003cstring>","extra_allowed_hosts":["\u003cstring>"],"include_logs":["\u003cstring>"],"exclude_logs":["\u003cstring>"],"kwargs":{},"env":{},"mcp_servers":[{"name":"\u003cstring>","transport":"sse","url":"\u003cstring>","command":"\u003cstring>","args":["\u003cstring>"],"headers":{}}]},"environment":{"type":"docker","import_path":"\u003cstring>","force_build":false,"delete":true,"stream":false,"cpu_enforcement_policy":"auto","memory_enforcement_policy":"auto","override_cpus":123,"override_memory_mb":123,"override_storage_mb":123,"override_gpus":123,"override_tpu":{"type":"\u003cstring>","topology":"\u003cstring>"},"mounts":[{"type":"bind","source":"\u003cstring>","target":"\u003cstring>","read_only":true,"bind":{"create_host_path":false,"selinux":"z"},"volume":{"subpath":"\u003cstring>"},"image":{"subpath":"\u003cstring>"}}],"extra_docker_compose":["\u003cstring>"],"env":{},"kwargs":{},"extra_allowed_hosts":["\u003cstring>"]},"verifier":{"override_timeout_sec":123,"max_timeout_sec":123,"include_logs":["\u003cstring>"],"exclude_logs":["\u003cstring>"],"env":{},"import_path":"\u003cstring>","kwargs":{},"disable":false,"extra_allowed_hosts":["\u003cstring>"],"environment_mode":"shared"},"schema_version":2,"install_only":false,"timeout_multiplier":1,"agent_timeout_multiplier":123,"verifier_timeout_multiplier":123,"agent_setup_timeout_multiplier":123,"environment_build_timeout_multiplier":123,"extra_instructions":[{"digest":"\u003cstring>","path":"\u003cstring>"}],"user_agent":{"bridge":{"kind":"acp","prompt_path":"\u003cstring>","kwargs":{}},"name":"\u003cstring>","import_path":"\u003cstring>","model_name":"\u003cstring>","base_url":"\u003cstring>","model_api_key_name":"\u003cstring>","model_api_format":"openai_chat_completions","skip_model_parsing":false,"n_concurrent":2,"concurrency_group":"\u003cstring>","skills":["\u003cstring>"],"override_timeout_sec":123,"override_setup_timeout_sec":123,"max_timeout_sec":123,"resume_trajectory":false,"load_trajectory":"\u003cstring>","extra_allowed_hosts":["\u003cstring>"],"include_logs":["\u003cstring>"],"exclude_logs":["\u003cstring>"],"kwargs":{},"env":{},"mcp_servers":[{"name":"\u003cstring>","transport":"sse","url":"\u003cstring>","command":"\u003cstring>","args":["\u003cstring>"],"headers":{}}],"user_persona_path":"\u003cstring>","user_prompt_template_path":"\u003cstring>"},"user_persona":{"digest":"\u003cstring>","path":"\u003cstring>"},"user_prompt_template":{"digest":"\u003cstring>","path":"\u003cstring>"},"bridge_prompt":{"digest":"\u003cstring>","path":"\u003cstring>"},"bridge_inputs":{},"skills":[{"name":"\u003cstring>","source":"\u003cstring>","digest":"\u003cstring>","git_url":"\u003cstring>","git_commit_id":"\u003cstring>"}],"extra_docker_compose":[{"path":"\u003cstring>","digest":"\u003cstring>"}],"artifacts":["\u003cstring>"],"override_error_policy":{},"source_trial":{"action":"regrade","type":"local","trial_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","path":"\u003cstring>","task":{"name":"\u003cstring>","type":"local","digest":"\u003cstring>","version":"\u003cstring>","source":"\u003cstring>","path":"\u003cstring>","git_url":"\u003cstring>","git_commit_id":"\u003cstring>"}}}]}}}},"exampleType":"generated"}},"exampleType":"generated"},"b93199ac-30ea-4e4e-8d1a-c5e0b2411a95":{"description":"Request rejected. Read error.code and error.message.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"additionalProperties":{"type":"string","uniqueKey":"error.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"a53a63dd-22d1-4008-b165-a57b0639b4ac":{"description":"Request rejected. Read error.code and error.message.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"additionalProperties":{"type":"string","uniqueKey":"error.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"042c78fe-f3d7-49e0-b8a5-c52c547d2731":{},"aa77959c-4c39-415c-ac02-625a98d6e50b":{"BearerAuth":{"type":"http","scheme":"bearer","description":"Required only when the server has HARBOR_API_KEY configured.","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"7ba5fe3b-382f-4910-9a02-c8b18c140efa":{"url":"http://127.0.0.1:{port}","description":"Local server","variables":{"port":{"default":"8390"}}},"569dfa06-ca71-4fa0-810e-74350cb1607a":{"url":"https://{host}","description":"Remote server","variables":{"host":{"default":"your-server.example.com"}}}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Required only when the server has HARBOR_API_KEY configured.","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Required only when the server has HARBOR_API_KEY configured.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"api-sdk/openapi.json"},"subdomain":"harborframework","siteName":"Harbor","title":"Resolve Job - Harbor","navMaps":{"firstHrefInVersion":{"latest":{"href":"/api-sdk/jobs/resolve-job","matchLevel":0}},"firstHrefInLanguage":{}},"lastModified":"2026-11-10T05:38:38.737Z","originalFileLocation":"api-sdk/jobs/resolve-job.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Resolve a job configuration into a lock without starting execution.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Harbor\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/harborframework/t1HVNIl2iBRRwd1v/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/harborframework/t1HVNIl2iBRRwd1v/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/harborframework/t1HVNIl2iBRRwd1v/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/harborframework/t1HVNIl2iBRRwd1v/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/harborframework/t1HVNIl2iBRRwd1v/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/harborframework/t1HVNIl2iBRRwd1v/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/harborframework/t1HVNIl2iBRRwd1v/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/harborframework/t1HVNIl2iBRRwd1v/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/harborframework/t1HVNIl2iBRRwd1v/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Resolve Job - Harbor\">\u003cmeta data-mint-head property=\"og:description\" content=\"Resolve a job configuration into a lock without starting execution.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Harbor\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.harborframework.com/api-sdk/jobs/resolve-job\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://harborframework.mintlify.site/_mintlify/api/og/v2?division=Jobs\u0026amp;title=Resolve+Job\u0026amp;description=Resolve+a+job+configuration+into+a+lock+without+starting+execution.\u0026amp;theme=a9fb774147a742b86f4a66ed\u0026amp;signature=932e734deb0d0170b25602f6dfa3136aabc47289b2dfdbfff66a71a02fede0b2\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Resolve Job - Harbor\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Resolve a job configuration into a lock without starting execution.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://harborframework.mintlify.site/_mintlify/api/og/v2?division=Jobs\u0026amp;title=Resolve+Job\u0026amp;description=Resolve+a+job+configuration+into+a+lock+without+starting+execution.\u0026amp;theme=a9fb774147a742b86f4a66ed\u0026amp;signature=932e734deb0d0170b25602f6dfa3136aabc47289b2dfdbfff66a71a02fede0b2\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/harborframework/t1HVNIl2iBRRwd1v/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Harbor\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#111111\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.harborframework.com/api-sdk/jobs/resolve-job\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-sdk/jobs/resolve-job.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.harborframework.com/#organization\",\"name\":\"Harbor\",\"url\":\"https://docs.harborframework.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/harborframework/l9c_ohETpnOqpDv2/harbor-wordmark-light.png?fit=max\u0026auto=format\u0026n=l9c_ohETpnOqpDv2\u0026q=85\u0026s=1f1a976e45a8c4d0f6c6aed694ec906f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.harborframework.com#website\",\"name\":\"Harbor\",\"url\":\"https://docs.harborframework.com\",\"publisher\":{\"@id\":\"https://docs.harborframework.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.harborframework.com/api-sdk/jobs/resolve-job#webpage\",\"url\":\"https://docs.harborframework.com/api-sdk/jobs/resolve-job\",\"name\":\"Resolve Job\",\"description\":\"Resolve a job configuration into a lock without starting execution.\",\"dateModified\":\"2026-11-10T05:38:38.737Z\",\"isPartOf\":{\"@id\":\"https://docs.harborframework.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.harborframework.com/api-sdk/jobs/resolve-job#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.harborframework.com/api-sdk/jobs/resolve-job#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Harbor\",\"item\":\"https://docs.harborframework.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Resolve Job\",\"item\":\"https://docs.harborframework.com/api-sdk/jobs/resolve-job\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.harborframework.com/api-sdk/jobs/resolve-job#apireference\",\"headline\":\"Resolve Job\",\"name\":\"Resolve Job\",\"description\":\"Resolve a job configuration into a lock without starting execution.\",\"url\":\"https://docs.harborframework.com/api-sdk/jobs/resolve-job\",\"mainEntityOfPage\":{\"@id\":\"https://docs.harborframework.com/api-sdk/jobs/resolve-job#webpage\"},\"dateModified\":\"2026-11-10T05:38:38.737Z\",\"publisher\":{\"@id\":\"https://docs.harborframework.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.harborframework.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Harbor\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Harbor","nav":{"global":{"anchors":[{"anchor":"Harbor Hub","icon":"layers","href":"https://hub.harborframework.com"},{"anchor":"Discord","icon":"messages-square","href":"https://discord.gg/QVvyhRw5UQ"},{"anchor":"Docs MCP","icon":"bot","href":"/ai-agents"}]},"versions":[{"version":"latest","default":true,"tag":"Latest","tabs":[{"tab":"Docs","pages":[{"title":"Docs","href":"/getting-started/quick-start"}]},{"tab":"API \u0026 SDK","groups":[{"group":"Jobs","pages":[{"title":"Resolve Job","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json post /jobs/resolve","href":"/api-sdk/jobs/resolve-job"},{"title":"Submit Job","description":"Submit a job for background execution; returns immediately after acceptance.","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json post /jobs/submit","href":"/api-sdk/jobs/submit-job"},{"title":"List Jobs","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json get /jobs","href":"/api-sdk/jobs/list-jobs"},{"title":"Get Job","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json get /jobs/{job_id}","href":"/api-sdk/jobs/get-job"},{"title":"Pause Job","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json post /jobs/{job_id}/pause","href":"/api-sdk/jobs/pause-job"},{"title":"Resume Job","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json post /jobs/{job_id}/resume","href":"/api-sdk/jobs/resume-job"},{"title":"Cancel Job","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json post /jobs/{job_id}/cancel","href":"/api-sdk/jobs/cancel-job"}]},{"group":"Rollouts","pages":[{"title":"List Rollouts","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json get /rollouts","href":"/api-sdk/rollouts/list-rollouts"},{"title":"Get Rollout","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json get /rollouts/{rollout_id}","href":"/api-sdk/rollouts/get-rollout"},{"title":"Pause Rollout","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json post /rollouts/{rollout_id}/pause","href":"/api-sdk/rollouts/pause-rollout"},{"title":"Resume Rollout","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json post /rollouts/{rollout_id}/resume","href":"/api-sdk/rollouts/resume-rollout"},{"title":"Cancel Rollout","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json post /rollouts/{rollout_id}/cancel","href":"/api-sdk/rollouts/cancel-rollout"},{"title":"Retry Rollout","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json post /rollouts/{rollout_id}/retry","href":"/api-sdk/rollouts/retry-rollout"}]},{"group":"Files","pages":[{"title":"Download","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json get /download","href":"/api-sdk/files/download"},{"title":"Inspect file","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json head /download","href":"/api-sdk/files/inspect-file"}]},{"group":"Queries","pages":[{"title":"Job Filters","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json get /jobs/filters","href":"/api-sdk/queries/job-filters"},{"title":"Rollout Filters","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json get /rollouts/filters","href":"/api-sdk/queries/rollout-filters"},{"title":"Query Schema","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json get /query/schema","href":"/api-sdk/queries/query-schema"},{"title":"Query Sql","deprecated":null,"version":null,"openapi":"/api-sdk/openapi.json post /query","href":"/api-sdk/queries/query-sql"}]}]},{"tab":"News","pages":[{"title":"News","href":"/news"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]}]},"basePath":"","title":"Resolve Job - Harbor","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-C-hEh3I2.js","utils-CnF4QiUD.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C7PVNbel.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-8ytevL2A.js","snippetPresets-BT1alx3v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","Page-C945cI-W.js","ApiExamples-BLXC0i_W.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CyLIGI9_.js","shallow-DC0lGVIW.js","getApiPlaygroundDisplay-CgDQ85tN.js","CodeSnippet-6-I-Gpv9.js","CodeSnippets-BAk1kDdu.js","getPastedJson-B276RuWN.js","icon-BqP8etTm.js","MethodPill-DM6sbxG1.js","DuplicateIcon-PyJglOaE.js","createIcon-CMeOMAc_.js","DynamicMarkdown-BoyYAA8K.js","SectionHeading-DAYv3gvZ.js","axios-vUo_bRtp.js","Markdown-BhTTmazV.js","clsx-CR-RHrVC.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CBUH0-zX.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BmARFYNC.js"]}