[{"data":1,"prerenderedAt":1724},["ShallowReactive",2],{"docs-navigation":3,"docs-page-\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Fgo":252,"docs-surround-\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Fgo":1721},[4],{"title":5,"path":6,"stem":7,"children":8,"page":251},"Docs","\u002Fdocs","docs",[9,36,101,197,232],{"title":10,"path":11,"stem":12,"children":13},"GET STARTED","\u002Fdocs\u002Fget-started","docs\u002F1.get-started\u002F1.index",[14,16,20,24,28,32],{"title":15,"path":11,"stem":12},"Welcome",{"title":17,"path":18,"stem":19},"Quickstart","\u002Fdocs\u002Fget-started\u002Fquickstart","docs\u002F1.get-started\u002F2.quickstart",{"title":21,"path":22,"stem":23},"API","\u002Fdocs\u002Fget-started\u002Fapi","docs\u002F1.get-started\u002F3.api",{"title":25,"path":26,"stem":27},"SDKs and CLI","\u002Fdocs\u002Fget-started\u002Fsdks-cli","docs\u002F1.get-started\u002F4.sdks-cli",{"title":29,"path":30,"stem":31},"Sandbox testing","\u002Fdocs\u002Fget-started\u002Flocal-development","docs\u002F1.get-started\u002F5.local-development",{"title":33,"path":34,"stem":35},"Authentication","\u002Fdocs\u002Fget-started\u002Fauthentication","docs\u002F1.get-started\u002F6.authentication",{"title":37,"path":38,"stem":39,"children":40},"FUNDAMENTALS","\u002Fdocs\u002Ffundamentals","docs\u002F2.fundamentals\u002F01.index",[41,43,47,51,55,59,63,67,71,75],{"title":42,"path":38,"stem":39},"Fundamentals",{"title":44,"path":45,"stem":46},"Architecture","\u002Fdocs\u002Ffundamentals\u002Farchitecture","docs\u002F2.fundamentals\u002F02.architecture",{"title":48,"path":49,"stem":50},"Memory model","\u002Fdocs\u002Ffundamentals\u002Fmemory-model","docs\u002F2.fundamentals\u002F03.memory-model",{"title":52,"path":53,"stem":54},"Compression","\u002Fdocs\u002Ffundamentals\u002Fcompression","docs\u002F2.fundamentals\u002F04.compression",{"title":56,"path":57,"stem":58},"RAG and cached context","\u002Fdocs\u002Ffundamentals\u002Frag-cag","docs\u002F2.fundamentals\u002F05.rag-cag",{"title":60,"path":61,"stem":62},"Context cache","\u002Fdocs\u002Ffundamentals\u002Fcontext-cache","docs\u002F2.fundamentals\u002F06.context-cache",{"title":64,"path":65,"stem":66},"Security","\u002Fdocs\u002Ffundamentals\u002Fsecurity","docs\u002F2.fundamentals\u002F07.security",{"title":68,"path":69,"stem":70},"Languages","\u002Fdocs\u002Ffundamentals\u002Flanguages","docs\u002F2.fundamentals\u002F08.languages",{"title":72,"path":73,"stem":74},"UI patterns","\u002Fdocs\u002Ffundamentals\u002Fui","docs\u002F2.fundamentals\u002F09.ui",{"title":76,"path":77,"stem":78,"children":79},"Global, Regional, and Jurisdictional Memory","\u002Fdocs\u002Ffundamentals\u002Fdata-placement","docs\u002F2.fundamentals\u002F10.data-placement\u002F1.index",[80,81,85,89,93,97],{"title":76,"path":77,"stem":78},{"title":82,"path":83,"stem":84},"TypeScript \u002F JavaScript","\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Ftypescript","docs\u002F2.fundamentals\u002F10.data-placement\u002F2.typescript",{"title":86,"path":87,"stem":88},"Python","\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Fpython","docs\u002F2.fundamentals\u002F10.data-placement\u002F3.python",{"title":90,"path":91,"stem":92},"PHP","\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Fphp","docs\u002F2.fundamentals\u002F10.data-placement\u002F4.php",{"title":94,"path":95,"stem":96},"Go","\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Fgo","docs\u002F2.fundamentals\u002F10.data-placement\u002F5.go",{"title":98,"path":99,"stem":100},"Rust","\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Frust","docs\u002F2.fundamentals\u002F10.data-placement\u002F6.rust",{"title":102,"path":103,"stem":104,"children":105},"AGENTS & CODE NUCLEI","\u002Fdocs\u002Fagents","docs\u002F3.agents\u002F01.index",[106,108,112,116,120,124,128,132,136,140,158,193],{"title":107,"path":103,"stem":104},"Agents",{"title":109,"path":110,"stem":111},"Codex Code Nucleus","\u002Fdocs\u002Fagents\u002Fcodex-code-nucleus","docs\u002F3.agents\u002F02.codex-code-nucleus",{"title":113,"path":114,"stem":115},"Claude Code Nucleus","\u002Fdocs\u002Fagents\u002Fclaude-code-nucleus","docs\u002F3.agents\u002F03.claude-code-nucleus",{"title":117,"path":118,"stem":119},"Google Gemini Code Nucleus","\u002Fdocs\u002Fagents\u002Fgoogle-gemini-code-nucleus","docs\u002F3.agents\u002F04.google-gemini-code-nucleus",{"title":121,"path":122,"stem":123},"GitHub Copilot Code Nucleus","\u002Fdocs\u002Fagents\u002Fgithub-copilot-code-nucleus","docs\u002F3.agents\u002F05.github-copilot-code-nucleus",{"title":125,"path":126,"stem":127},"Cursor Code Nucleus","\u002Fdocs\u002Fagents\u002Fcursor-code-nucleus","docs\u002F3.agents\u002F06.cursor-code-nucleus",{"title":129,"path":130,"stem":131},"Windsurf Code Nucleus","\u002Fdocs\u002Fagents\u002Fwindsurf-code-nucleus","docs\u002F3.agents\u002F07.windsurf-code-nucleus",{"title":133,"path":134,"stem":135},"Agent skills","\u002Fdocs\u002Fagents\u002Fagent-skills","docs\u002F3.agents\u002F08.agent-skills",{"title":137,"path":138,"stem":139},"Admin UI prompt","\u002Fdocs\u002Fagents\u002Fadmin-ui-prompt","docs\u002F3.agents\u002F09.admin-ui-prompt",{"title":141,"path":142,"stem":143,"children":144},"Team Code Governance","\u002Fdocs\u002Fagents\u002Fcode-governance","docs\u002F3.agents\u002F10.code-governance\u002F1.index",[145,146,150,154],{"title":141,"path":142,"stem":143},{"title":147,"path":148,"stem":149},"Local Team Setup","\u002Fdocs\u002Fagents\u002Fcode-governance\u002Flocal-team-setup","docs\u002F3.agents\u002F10.code-governance\u002F2.local-team-setup",{"title":151,"path":152,"stem":153},"Language Governance Packs","\u002Fdocs\u002Fagents\u002Fcode-governance\u002Flanguage-packs","docs\u002F3.agents\u002F10.code-governance\u002F3.language-packs",{"title":155,"path":156,"stem":157},"GitHub CI\u002FCD Governance","\u002Fdocs\u002Fagents\u002Fcode-governance\u002Fgithub-cicd","docs\u002F3.agents\u002F10.code-governance\u002F4.github-cicd",{"title":159,"path":160,"stem":161,"children":162},"Memory + Consequence Agents","\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F1.index",[163,164,185,189],{"title":159,"path":160,"stem":161},{"title":165,"path":166,"stem":167,"children":168},"End-to-End Agent Example","\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fend-to-end","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F2.end-to-end\u002F1.index",[169,170,173,176,179,182],{"title":165,"path":166,"stem":167},{"title":82,"path":171,"stem":172},"\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fend-to-end\u002Ftypescript","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F2.end-to-end\u002F2.typescript",{"title":86,"path":174,"stem":175},"\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fend-to-end\u002Fpython","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F2.end-to-end\u002F3.python",{"title":90,"path":177,"stem":178},"\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fend-to-end\u002Fphp","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F2.end-to-end\u002F4.php",{"title":94,"path":180,"stem":181},"\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fend-to-end\u002Fgo","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F2.end-to-end\u002F5.go",{"title":98,"path":183,"stem":184},"\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fend-to-end\u002Frust","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F2.end-to-end\u002F6.rust",{"title":186,"path":187,"stem":188},"Industry Agent Use Cases","\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Findustry-use-cases","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F3.industry-use-cases",{"title":190,"path":191,"stem":192},"Historical Actions and Learning","\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fhistorical-learning","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F4.historical-learning",{"title":194,"path":195,"stem":196},"Consequence decision support","\u002Fdocs\u002Fagents\u002Fconsequence","docs\u002F3.agents\u002F12.consequence",{"title":198,"path":199,"stem":200,"children":201},"MODEL PROVIDERS","\u002Fdocs\u002Fproviders","docs\u002F4.providers\u002F1.index",[202,204,208,212,216,220,224,228],{"title":203,"path":199,"stem":200},"Providers",{"title":205,"path":206,"stem":207},"OpenAI and Azure OpenAI","\u002Fdocs\u002Fproviders\u002Fopenai","docs\u002F4.providers\u002F2.openai",{"title":209,"path":210,"stem":211},"Anthropic Claude","\u002Fdocs\u002Fproviders\u002Fanthropic","docs\u002F4.providers\u002F3.anthropic",{"title":213,"path":214,"stem":215},"Google Gemini and Vertex AI","\u002Fdocs\u002Fproviders\u002Fgoogle-gemini","docs\u002F4.providers\u002F4.google-gemini",{"title":217,"path":218,"stem":219},"OpenAI-compatible providers","\u002Fdocs\u002Fproviders\u002Fopenai-compatible","docs\u002F4.providers\u002F5.openai-compatible",{"title":221,"path":222,"stem":223},"Groq","\u002Fdocs\u002Fproviders\u002Fgroq","docs\u002F4.providers\u002F6.groq",{"title":225,"path":226,"stem":227},"Cohere","\u002Fdocs\u002Fproviders\u002Fcohere","docs\u002F4.providers\u002F7.cohere",{"title":229,"path":230,"stem":231},"Amazon Bedrock","\u002Fdocs\u002Fproviders\u002Famazon-bedrock","docs\u002F4.providers\u002F8.amazon-bedrock",{"title":233,"path":234,"stem":235,"children":236},"CHANGELOG","\u002Fdocs\u002Fchangelog","docs\u002F5.changelog\u002F1.index",[237,239,243,247],{"title":238,"path":234,"stem":235},"Changelog",{"title":240,"path":241,"stem":242},"Roadmap","\u002Fdocs\u002Fchangelog\u002Froadmap","docs\u002F5.changelog\u002F2.roadmap",{"title":244,"path":245,"stem":246},"Release notes","\u002Fdocs\u002Fchangelog\u002Frelease-runbook","docs\u002F5.changelog\u002F3.release-runbook",{"title":248,"path":249,"stem":250},"Testing","\u002Fdocs\u002Fchangelog\u002Ftesting","docs\u002F5.changelog\u002F4.testing",false,{"id":253,"title":94,"body":254,"description":1716,"extension":1717,"meta":1718,"navigation":320,"path":95,"seo":1719,"stem":96,"__hash__":1720},"docs\u002Fdocs\u002F2.fundamentals\u002F10.data-placement\u002F5.go.md",{"type":255,"value":256,"toc":1711},"minimark",[257,262,266,292,299,304,1032,1035,1039,1361,1364,1368,1688,1699,1707],[258,259,261],"h1",{"id":260},"go-data-placement","Go Data Placement",[263,264,265],"p",{},"Install the Go 1.25+ SDK:",[267,268,273],"pre",{"className":269,"code":270,"language":271,"meta":272,"style":272},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","go get github.com\u002Fneutron-ai\u002Fneutron\u002Fpackages\u002Fsdk-go\n","bash","",[274,275,276],"code",{"__ignoreMap":272},[277,278,281,285,289],"span",{"class":279,"line":280},"line",1,[277,282,284],{"class":283},"sBMFI","go",[277,286,288],{"class":287},"sfazB"," get",[277,290,291],{"class":287}," github.com\u002Fneutron-ai\u002Fneutron\u002Fpackages\u002Fsdk-go\n",[263,293,294,295,298],{},"The official module handles runtime memory calls. The same program uses ",[274,296,297],{},"net\u002Fhttp"," for Nucleus control-plane endpoints that are not yet exposed as typed Go methods.",[300,301,303],"h2",{"id":302},"control-plane-helper-and-provisioning","Control-plane helper and provisioning",[267,305,308],{"className":306,"code":307,"language":284,"meta":272,"style":272},"language-go shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","package main\n\nimport (\n    \"bytes\"\n    \"context\"\n    \"encoding\u002Fjson\"\n    \"fmt\"\n    \"io\"\n    \"net\u002Fhttp\"\n    \"os\"\n    \"strings\"\n    \"time\"\n\n    neutron \"github.com\u002Fneutron-ai\u002Fneutron\u002Fpackages\u002Fsdk-go\"\n)\n\nfunc requiredEnv(name string) (string, error) {\n    value := os.Getenv(name)\n    if strings.TrimSpace(value) == \"\" {\n        return \"\", fmt.Errorf(\"%s is required\", name)\n    }\n    return value, nil\n}\n\nfunc neutronRequest(\n    ctx context.Context,\n    httpClient *http.Client,\n    baseURL string,\n    token string,\n    method string,\n    path string,\n    body map[string]any,\n) (map[string]any, error) {\n    var requestBody io.Reader\n    if body != nil {\n        payload, err := json.Marshal(body)\n        if err != nil {\n            return nil, err\n        }\n        requestBody = bytes.NewReader(payload)\n    }\n\n    request, err := http.NewRequestWithContext(\n        ctx,\n        method,\n        strings.TrimRight(baseURL, \"\u002F\")+path,\n        requestBody,\n    )\n    if err != nil {\n        return nil, err\n    }\n    request.Header.Set(\"authorization\", \"Bearer \"+token)\n    request.Header.Set(\"content-type\", \"application\u002Fjson\")\n\n    response, err := httpClient.Do(request)\n    if err != nil {\n        return nil, err\n    }\n    defer response.Body.Close()\n\n    rawBody, err := io.ReadAll(response.Body)\n    if err != nil {\n        return nil, err\n    }\n    if response.StatusCode >= 400 {\n        return nil, fmt.Errorf(\"Neutron request failed: %s\", response.Status)\n    }\n    output := map[string]any{}\n    if len(rawBody) > 0 {\n        err = json.Unmarshal(rawBody, &output)\n    }\n    return output, err\n}\n\nfunc provisionNuclei(\n    ctx context.Context,\n    httpClient *http.Client,\n    baseURL string,\n    workspaceKey string,\n) error {\n    profiles := []map[string]any{\n        {\n            \"nucleusId\": \"product-knowledge-global\",\n            \"name\":      \"Global product knowledge\",\n            \"placement\": map[string]any{\n                \"mode\":      \"global\",\n                \"guarantee\": \"none\",\n                \"notes\":     []string{\"Approved global knowledge; no jurisdictional storage guarantee.\"},\n            },\n        },\n        {\n            \"nucleusId\": \"support-operations-weur\",\n            \"name\":      \"Western Europe support operations\",\n            \"placement\": map[string]any{\n                \"mode\":           \"regional\",\n                \"regionHint\":     \"weur\",\n                \"r2LocationHint\": \"weur\",\n                \"guarantee\":      \"best_effort_regional\",\n                \"notes\":          []string{\"Latency preference only; not a legal residency boundary.\"},\n            },\n        },\n        {\n            \"nucleusId\": \"regulated-cases-eu\",\n            \"name\":      \"EU regulated case memory\",\n            \"placement\": map[string]any{\n                \"mode\":                     \"jurisdictional\",\n                \"jurisdiction\":             \"eu\",\n                \"regionalServicesRequired\": true,\n                \"metadataBoundaryRequired\": true,\n                \"geoKeyManagerRequired\":    false,\n                \"guarantee\":                \"jurisdictional_storage\",\n                \"notes\": []string{\n                    \"Requires the EU Durable Object jurisdiction and matching EU archive binding.\",\n                    \"Processing, logs, metadata, keys, retention, and contracts require separate verification.\",\n                },\n            },\n        },\n    }\n\n    for _, profile := range profiles {\n        if _, err := neutronRequest(ctx, httpClient, baseURL, workspaceKey, http.MethodPost, \"\u002Fv1\u002Fnuclei\", profile); err != nil {\n            return err\n        }\n    }\n    return nil\n}\n",[274,309,310,315,322,328,334,340,346,352,358,364,370,376,382,387,393,399,404,410,416,422,428,434,440,446,451,457,463,469,475,481,487,493,499,505,511,517,523,529,535,541,547,552,557,563,569,575,581,587,593,599,605,610,616,622,627,633,638,643,648,654,659,665,670,675,680,686,692,697,703,709,715,720,726,731,736,742,747,752,757,763,769,775,781,787,793,799,805,811,817,823,829,834,840,846,851,857,863,869,875,881,886,891,896,902,908,913,919,925,931,937,943,949,955,961,967,973,978,983,988,993,999,1005,1011,1016,1021,1027],{"__ignoreMap":272},[277,311,312],{"class":279,"line":280},[277,313,314],{},"package main\n",[277,316,318],{"class":279,"line":317},2,[277,319,321],{"emptyLinePlaceholder":320},true,"\n",[277,323,325],{"class":279,"line":324},3,[277,326,327],{},"import (\n",[277,329,331],{"class":279,"line":330},4,[277,332,333],{},"    \"bytes\"\n",[277,335,337],{"class":279,"line":336},5,[277,338,339],{},"    \"context\"\n",[277,341,343],{"class":279,"line":342},6,[277,344,345],{},"    \"encoding\u002Fjson\"\n",[277,347,349],{"class":279,"line":348},7,[277,350,351],{},"    \"fmt\"\n",[277,353,355],{"class":279,"line":354},8,[277,356,357],{},"    \"io\"\n",[277,359,361],{"class":279,"line":360},9,[277,362,363],{},"    \"net\u002Fhttp\"\n",[277,365,367],{"class":279,"line":366},10,[277,368,369],{},"    \"os\"\n",[277,371,373],{"class":279,"line":372},11,[277,374,375],{},"    \"strings\"\n",[277,377,379],{"class":279,"line":378},12,[277,380,381],{},"    \"time\"\n",[277,383,385],{"class":279,"line":384},13,[277,386,321],{"emptyLinePlaceholder":320},[277,388,390],{"class":279,"line":389},14,[277,391,392],{},"    neutron \"github.com\u002Fneutron-ai\u002Fneutron\u002Fpackages\u002Fsdk-go\"\n",[277,394,396],{"class":279,"line":395},15,[277,397,398],{},")\n",[277,400,402],{"class":279,"line":401},16,[277,403,321],{"emptyLinePlaceholder":320},[277,405,407],{"class":279,"line":406},17,[277,408,409],{},"func requiredEnv(name string) (string, error) {\n",[277,411,413],{"class":279,"line":412},18,[277,414,415],{},"    value := os.Getenv(name)\n",[277,417,419],{"class":279,"line":418},19,[277,420,421],{},"    if strings.TrimSpace(value) == \"\" {\n",[277,423,425],{"class":279,"line":424},20,[277,426,427],{},"        return \"\", fmt.Errorf(\"%s is required\", name)\n",[277,429,431],{"class":279,"line":430},21,[277,432,433],{},"    }\n",[277,435,437],{"class":279,"line":436},22,[277,438,439],{},"    return value, nil\n",[277,441,443],{"class":279,"line":442},23,[277,444,445],{},"}\n",[277,447,449],{"class":279,"line":448},24,[277,450,321],{"emptyLinePlaceholder":320},[277,452,454],{"class":279,"line":453},25,[277,455,456],{},"func neutronRequest(\n",[277,458,460],{"class":279,"line":459},26,[277,461,462],{},"    ctx context.Context,\n",[277,464,466],{"class":279,"line":465},27,[277,467,468],{},"    httpClient *http.Client,\n",[277,470,472],{"class":279,"line":471},28,[277,473,474],{},"    baseURL string,\n",[277,476,478],{"class":279,"line":477},29,[277,479,480],{},"    token string,\n",[277,482,484],{"class":279,"line":483},30,[277,485,486],{},"    method string,\n",[277,488,490],{"class":279,"line":489},31,[277,491,492],{},"    path string,\n",[277,494,496],{"class":279,"line":495},32,[277,497,498],{},"    body map[string]any,\n",[277,500,502],{"class":279,"line":501},33,[277,503,504],{},") (map[string]any, error) {\n",[277,506,508],{"class":279,"line":507},34,[277,509,510],{},"    var requestBody io.Reader\n",[277,512,514],{"class":279,"line":513},35,[277,515,516],{},"    if body != nil {\n",[277,518,520],{"class":279,"line":519},36,[277,521,522],{},"        payload, err := json.Marshal(body)\n",[277,524,526],{"class":279,"line":525},37,[277,527,528],{},"        if err != nil {\n",[277,530,532],{"class":279,"line":531},38,[277,533,534],{},"            return nil, err\n",[277,536,538],{"class":279,"line":537},39,[277,539,540],{},"        }\n",[277,542,544],{"class":279,"line":543},40,[277,545,546],{},"        requestBody = bytes.NewReader(payload)\n",[277,548,550],{"class":279,"line":549},41,[277,551,433],{},[277,553,555],{"class":279,"line":554},42,[277,556,321],{"emptyLinePlaceholder":320},[277,558,560],{"class":279,"line":559},43,[277,561,562],{},"    request, err := http.NewRequestWithContext(\n",[277,564,566],{"class":279,"line":565},44,[277,567,568],{},"        ctx,\n",[277,570,572],{"class":279,"line":571},45,[277,573,574],{},"        method,\n",[277,576,578],{"class":279,"line":577},46,[277,579,580],{},"        strings.TrimRight(baseURL, \"\u002F\")+path,\n",[277,582,584],{"class":279,"line":583},47,[277,585,586],{},"        requestBody,\n",[277,588,590],{"class":279,"line":589},48,[277,591,592],{},"    )\n",[277,594,596],{"class":279,"line":595},49,[277,597,598],{},"    if err != nil {\n",[277,600,602],{"class":279,"line":601},50,[277,603,604],{},"        return nil, err\n",[277,606,608],{"class":279,"line":607},51,[277,609,433],{},[277,611,613],{"class":279,"line":612},52,[277,614,615],{},"    request.Header.Set(\"authorization\", \"Bearer \"+token)\n",[277,617,619],{"class":279,"line":618},53,[277,620,621],{},"    request.Header.Set(\"content-type\", \"application\u002Fjson\")\n",[277,623,625],{"class":279,"line":624},54,[277,626,321],{"emptyLinePlaceholder":320},[277,628,630],{"class":279,"line":629},55,[277,631,632],{},"    response, err := httpClient.Do(request)\n",[277,634,636],{"class":279,"line":635},56,[277,637,598],{},[277,639,641],{"class":279,"line":640},57,[277,642,604],{},[277,644,646],{"class":279,"line":645},58,[277,647,433],{},[277,649,651],{"class":279,"line":650},59,[277,652,653],{},"    defer response.Body.Close()\n",[277,655,657],{"class":279,"line":656},60,[277,658,321],{"emptyLinePlaceholder":320},[277,660,662],{"class":279,"line":661},61,[277,663,664],{},"    rawBody, err := io.ReadAll(response.Body)\n",[277,666,668],{"class":279,"line":667},62,[277,669,598],{},[277,671,673],{"class":279,"line":672},63,[277,674,604],{},[277,676,678],{"class":279,"line":677},64,[277,679,433],{},[277,681,683],{"class":279,"line":682},65,[277,684,685],{},"    if response.StatusCode >= 400 {\n",[277,687,689],{"class":279,"line":688},66,[277,690,691],{},"        return nil, fmt.Errorf(\"Neutron request failed: %s\", response.Status)\n",[277,693,695],{"class":279,"line":694},67,[277,696,433],{},[277,698,700],{"class":279,"line":699},68,[277,701,702],{},"    output := map[string]any{}\n",[277,704,706],{"class":279,"line":705},69,[277,707,708],{},"    if len(rawBody) > 0 {\n",[277,710,712],{"class":279,"line":711},70,[277,713,714],{},"        err = json.Unmarshal(rawBody, &output)\n",[277,716,718],{"class":279,"line":717},71,[277,719,433],{},[277,721,723],{"class":279,"line":722},72,[277,724,725],{},"    return output, err\n",[277,727,729],{"class":279,"line":728},73,[277,730,445],{},[277,732,734],{"class":279,"line":733},74,[277,735,321],{"emptyLinePlaceholder":320},[277,737,739],{"class":279,"line":738},75,[277,740,741],{},"func provisionNuclei(\n",[277,743,745],{"class":279,"line":744},76,[277,746,462],{},[277,748,750],{"class":279,"line":749},77,[277,751,468],{},[277,753,755],{"class":279,"line":754},78,[277,756,474],{},[277,758,760],{"class":279,"line":759},79,[277,761,762],{},"    workspaceKey string,\n",[277,764,766],{"class":279,"line":765},80,[277,767,768],{},") error {\n",[277,770,772],{"class":279,"line":771},81,[277,773,774],{},"    profiles := []map[string]any{\n",[277,776,778],{"class":279,"line":777},82,[277,779,780],{},"        {\n",[277,782,784],{"class":279,"line":783},83,[277,785,786],{},"            \"nucleusId\": \"product-knowledge-global\",\n",[277,788,790],{"class":279,"line":789},84,[277,791,792],{},"            \"name\":      \"Global product knowledge\",\n",[277,794,796],{"class":279,"line":795},85,[277,797,798],{},"            \"placement\": map[string]any{\n",[277,800,802],{"class":279,"line":801},86,[277,803,804],{},"                \"mode\":      \"global\",\n",[277,806,808],{"class":279,"line":807},87,[277,809,810],{},"                \"guarantee\": \"none\",\n",[277,812,814],{"class":279,"line":813},88,[277,815,816],{},"                \"notes\":     []string{\"Approved global knowledge; no jurisdictional storage guarantee.\"},\n",[277,818,820],{"class":279,"line":819},89,[277,821,822],{},"            },\n",[277,824,826],{"class":279,"line":825},90,[277,827,828],{},"        },\n",[277,830,832],{"class":279,"line":831},91,[277,833,780],{},[277,835,837],{"class":279,"line":836},92,[277,838,839],{},"            \"nucleusId\": \"support-operations-weur\",\n",[277,841,843],{"class":279,"line":842},93,[277,844,845],{},"            \"name\":      \"Western Europe support operations\",\n",[277,847,849],{"class":279,"line":848},94,[277,850,798],{},[277,852,854],{"class":279,"line":853},95,[277,855,856],{},"                \"mode\":           \"regional\",\n",[277,858,860],{"class":279,"line":859},96,[277,861,862],{},"                \"regionHint\":     \"weur\",\n",[277,864,866],{"class":279,"line":865},97,[277,867,868],{},"                \"r2LocationHint\": \"weur\",\n",[277,870,872],{"class":279,"line":871},98,[277,873,874],{},"                \"guarantee\":      \"best_effort_regional\",\n",[277,876,878],{"class":279,"line":877},99,[277,879,880],{},"                \"notes\":          []string{\"Latency preference only; not a legal residency boundary.\"},\n",[277,882,884],{"class":279,"line":883},100,[277,885,822],{},[277,887,889],{"class":279,"line":888},101,[277,890,828],{},[277,892,894],{"class":279,"line":893},102,[277,895,780],{},[277,897,899],{"class":279,"line":898},103,[277,900,901],{},"            \"nucleusId\": \"regulated-cases-eu\",\n",[277,903,905],{"class":279,"line":904},104,[277,906,907],{},"            \"name\":      \"EU regulated case memory\",\n",[277,909,911],{"class":279,"line":910},105,[277,912,798],{},[277,914,916],{"class":279,"line":915},106,[277,917,918],{},"                \"mode\":                     \"jurisdictional\",\n",[277,920,922],{"class":279,"line":921},107,[277,923,924],{},"                \"jurisdiction\":             \"eu\",\n",[277,926,928],{"class":279,"line":927},108,[277,929,930],{},"                \"regionalServicesRequired\": true,\n",[277,932,934],{"class":279,"line":933},109,[277,935,936],{},"                \"metadataBoundaryRequired\": true,\n",[277,938,940],{"class":279,"line":939},110,[277,941,942],{},"                \"geoKeyManagerRequired\":    false,\n",[277,944,946],{"class":279,"line":945},111,[277,947,948],{},"                \"guarantee\":                \"jurisdictional_storage\",\n",[277,950,952],{"class":279,"line":951},112,[277,953,954],{},"                \"notes\": []string{\n",[277,956,958],{"class":279,"line":957},113,[277,959,960],{},"                    \"Requires the EU Durable Object jurisdiction and matching EU archive binding.\",\n",[277,962,964],{"class":279,"line":963},114,[277,965,966],{},"                    \"Processing, logs, metadata, keys, retention, and contracts require separate verification.\",\n",[277,968,970],{"class":279,"line":969},115,[277,971,972],{},"                },\n",[277,974,976],{"class":279,"line":975},116,[277,977,822],{},[277,979,981],{"class":279,"line":980},117,[277,982,828],{},[277,984,986],{"class":279,"line":985},118,[277,987,433],{},[277,989,991],{"class":279,"line":990},119,[277,992,321],{"emptyLinePlaceholder":320},[277,994,996],{"class":279,"line":995},120,[277,997,998],{},"    for _, profile := range profiles {\n",[277,1000,1002],{"class":279,"line":1001},121,[277,1003,1004],{},"        if _, err := neutronRequest(ctx, httpClient, baseURL, workspaceKey, http.MethodPost, \"\u002Fv1\u002Fnuclei\", profile); err != nil {\n",[277,1006,1008],{"class":279,"line":1007},122,[277,1009,1010],{},"            return err\n",[277,1012,1014],{"class":279,"line":1013},123,[277,1015,540],{},[277,1017,1019],{"class":279,"line":1018},124,[277,1020,433],{},[277,1022,1024],{"class":279,"line":1023},125,[277,1025,1026],{},"    return nil\n",[277,1028,1030],{"class":279,"line":1029},126,[277,1031,445],{},[263,1033,1034],{},"Treat an already-existing Nucleus as explicit deployment state. Do not recreate it with a changed placement profile.",[300,1036,1038],{"id":1037},"build-the-memory-router","Build the memory router",[267,1040,1042],{"className":306,"code":1041,"language":284,"meta":272,"style":272},"type memoryRouter struct {\n    global        *neutron.Client\n    westernEurope *neutron.Client\n    euRegulated   *neutron.Client\n}\n\nfunc newMemoryRouter(baseURL string) (*memoryRouter, error) {\n    globalToken, err := requiredEnv(\"NEUTRON_GLOBAL_TOKEN\")\n    if err != nil {\n        return nil, err\n    }\n    westernEuropeToken, err := requiredEnv(\"NEUTRON_WEUR_TOKEN\")\n    if err != nil {\n        return nil, err\n    }\n    euToken, err := requiredEnv(\"NEUTRON_EU_TOKEN\")\n    if err != nil {\n        return nil, err\n    }\n\n    global, err := neutron.NewClient(neutron.Options{\n        BaseURL: baseURL, Token: globalToken, NucleusID: \"product-knowledge-global\",\n    })\n    if err != nil {\n        return nil, err\n    }\n    westernEurope, err := neutron.NewClient(neutron.Options{\n        BaseURL: baseURL, Token: westernEuropeToken, NucleusID: \"support-operations-weur\",\n    })\n    if err != nil {\n        return nil, err\n    }\n    euRegulated, err := neutron.NewClient(neutron.Options{\n        BaseURL: baseURL, Token: euToken, NucleusID: \"regulated-cases-eu\",\n    })\n    if err != nil {\n        return nil, err\n    }\n    return &memoryRouter{global: global, westernEurope: westernEurope, euRegulated: euRegulated}, nil\n}\n\nfunc (router *memoryRouter) storeGlobalProductKnowledge(ctx context.Context, text string) error {\n    _, err := router.global.Remember(ctx, map[string]any{\n        \"scopeId\": \"kb:approved-products\", \"type\": \"knowledge\",\n        \"privacyClass\": \"public\", \"text\": text,\n    })\n    return err\n}\n\nfunc (router *memoryRouter) storeWesternEuropeSupportLesson(ctx context.Context, text string) error {\n    _, err := router.westernEurope.Remember(ctx, map[string]any{\n        \"scopeId\": \"history:support-resolutions\", \"type\": \"tool_lesson\",\n        \"privacyClass\": \"tenant\", \"text\": text,\n    })\n    return err\n}\n\nfunc (router *memoryRouter) storeEURegulatedCase(\n    ctx context.Context,\n    caseID string,\n    minimizedSummary string,\n) error {\n    _, err := router.euRegulated.Remember(ctx, map[string]any{\n        \"scopeId\": \"case:\" + caseID, \"type\": \"experience\",\n        \"privacyClass\": \"user_private\", \"text\": minimizedSummary,\n        \"metadata\": map[string]any{\n            \"dataClass\": \"eu-regulated-case\", \"source\": \"approved-case-summary\",\n        },\n    })\n    return err\n}\n",[274,1043,1044,1049,1054,1059,1064,1068,1072,1077,1082,1086,1090,1094,1099,1103,1107,1111,1116,1120,1124,1128,1132,1137,1142,1147,1151,1155,1159,1164,1169,1173,1177,1181,1185,1190,1195,1199,1203,1207,1211,1216,1220,1224,1229,1234,1239,1244,1248,1253,1257,1261,1266,1271,1276,1281,1285,1289,1293,1297,1302,1306,1311,1316,1320,1325,1330,1335,1340,1345,1349,1353,1357],{"__ignoreMap":272},[277,1045,1046],{"class":279,"line":280},[277,1047,1048],{},"type memoryRouter struct {\n",[277,1050,1051],{"class":279,"line":317},[277,1052,1053],{},"    global        *neutron.Client\n",[277,1055,1056],{"class":279,"line":324},[277,1057,1058],{},"    westernEurope *neutron.Client\n",[277,1060,1061],{"class":279,"line":330},[277,1062,1063],{},"    euRegulated   *neutron.Client\n",[277,1065,1066],{"class":279,"line":336},[277,1067,445],{},[277,1069,1070],{"class":279,"line":342},[277,1071,321],{"emptyLinePlaceholder":320},[277,1073,1074],{"class":279,"line":348},[277,1075,1076],{},"func newMemoryRouter(baseURL string) (*memoryRouter, error) {\n",[277,1078,1079],{"class":279,"line":354},[277,1080,1081],{},"    globalToken, err := requiredEnv(\"NEUTRON_GLOBAL_TOKEN\")\n",[277,1083,1084],{"class":279,"line":360},[277,1085,598],{},[277,1087,1088],{"class":279,"line":366},[277,1089,604],{},[277,1091,1092],{"class":279,"line":372},[277,1093,433],{},[277,1095,1096],{"class":279,"line":378},[277,1097,1098],{},"    westernEuropeToken, err := requiredEnv(\"NEUTRON_WEUR_TOKEN\")\n",[277,1100,1101],{"class":279,"line":384},[277,1102,598],{},[277,1104,1105],{"class":279,"line":389},[277,1106,604],{},[277,1108,1109],{"class":279,"line":395},[277,1110,433],{},[277,1112,1113],{"class":279,"line":401},[277,1114,1115],{},"    euToken, err := requiredEnv(\"NEUTRON_EU_TOKEN\")\n",[277,1117,1118],{"class":279,"line":406},[277,1119,598],{},[277,1121,1122],{"class":279,"line":412},[277,1123,604],{},[277,1125,1126],{"class":279,"line":418},[277,1127,433],{},[277,1129,1130],{"class":279,"line":424},[277,1131,321],{"emptyLinePlaceholder":320},[277,1133,1134],{"class":279,"line":430},[277,1135,1136],{},"    global, err := neutron.NewClient(neutron.Options{\n",[277,1138,1139],{"class":279,"line":436},[277,1140,1141],{},"        BaseURL: baseURL, Token: globalToken, NucleusID: \"product-knowledge-global\",\n",[277,1143,1144],{"class":279,"line":442},[277,1145,1146],{},"    })\n",[277,1148,1149],{"class":279,"line":448},[277,1150,598],{},[277,1152,1153],{"class":279,"line":453},[277,1154,604],{},[277,1156,1157],{"class":279,"line":459},[277,1158,433],{},[277,1160,1161],{"class":279,"line":465},[277,1162,1163],{},"    westernEurope, err := neutron.NewClient(neutron.Options{\n",[277,1165,1166],{"class":279,"line":471},[277,1167,1168],{},"        BaseURL: baseURL, Token: westernEuropeToken, NucleusID: \"support-operations-weur\",\n",[277,1170,1171],{"class":279,"line":477},[277,1172,1146],{},[277,1174,1175],{"class":279,"line":483},[277,1176,598],{},[277,1178,1179],{"class":279,"line":489},[277,1180,604],{},[277,1182,1183],{"class":279,"line":495},[277,1184,433],{},[277,1186,1187],{"class":279,"line":501},[277,1188,1189],{},"    euRegulated, err := neutron.NewClient(neutron.Options{\n",[277,1191,1192],{"class":279,"line":507},[277,1193,1194],{},"        BaseURL: baseURL, Token: euToken, NucleusID: \"regulated-cases-eu\",\n",[277,1196,1197],{"class":279,"line":513},[277,1198,1146],{},[277,1200,1201],{"class":279,"line":519},[277,1202,598],{},[277,1204,1205],{"class":279,"line":525},[277,1206,604],{},[277,1208,1209],{"class":279,"line":531},[277,1210,433],{},[277,1212,1213],{"class":279,"line":537},[277,1214,1215],{},"    return &memoryRouter{global: global, westernEurope: westernEurope, euRegulated: euRegulated}, nil\n",[277,1217,1218],{"class":279,"line":543},[277,1219,445],{},[277,1221,1222],{"class":279,"line":549},[277,1223,321],{"emptyLinePlaceholder":320},[277,1225,1226],{"class":279,"line":554},[277,1227,1228],{},"func (router *memoryRouter) storeGlobalProductKnowledge(ctx context.Context, text string) error {\n",[277,1230,1231],{"class":279,"line":559},[277,1232,1233],{},"    _, err := router.global.Remember(ctx, map[string]any{\n",[277,1235,1236],{"class":279,"line":565},[277,1237,1238],{},"        \"scopeId\": \"kb:approved-products\", \"type\": \"knowledge\",\n",[277,1240,1241],{"class":279,"line":571},[277,1242,1243],{},"        \"privacyClass\": \"public\", \"text\": text,\n",[277,1245,1246],{"class":279,"line":577},[277,1247,1146],{},[277,1249,1250],{"class":279,"line":583},[277,1251,1252],{},"    return err\n",[277,1254,1255],{"class":279,"line":589},[277,1256,445],{},[277,1258,1259],{"class":279,"line":595},[277,1260,321],{"emptyLinePlaceholder":320},[277,1262,1263],{"class":279,"line":601},[277,1264,1265],{},"func (router *memoryRouter) storeWesternEuropeSupportLesson(ctx context.Context, text string) error {\n",[277,1267,1268],{"class":279,"line":607},[277,1269,1270],{},"    _, err := router.westernEurope.Remember(ctx, map[string]any{\n",[277,1272,1273],{"class":279,"line":612},[277,1274,1275],{},"        \"scopeId\": \"history:support-resolutions\", \"type\": \"tool_lesson\",\n",[277,1277,1278],{"class":279,"line":618},[277,1279,1280],{},"        \"privacyClass\": \"tenant\", \"text\": text,\n",[277,1282,1283],{"class":279,"line":624},[277,1284,1146],{},[277,1286,1287],{"class":279,"line":629},[277,1288,1252],{},[277,1290,1291],{"class":279,"line":635},[277,1292,445],{},[277,1294,1295],{"class":279,"line":640},[277,1296,321],{"emptyLinePlaceholder":320},[277,1298,1299],{"class":279,"line":645},[277,1300,1301],{},"func (router *memoryRouter) storeEURegulatedCase(\n",[277,1303,1304],{"class":279,"line":650},[277,1305,462],{},[277,1307,1308],{"class":279,"line":656},[277,1309,1310],{},"    caseID string,\n",[277,1312,1313],{"class":279,"line":661},[277,1314,1315],{},"    minimizedSummary string,\n",[277,1317,1318],{"class":279,"line":667},[277,1319,768],{},[277,1321,1322],{"class":279,"line":672},[277,1323,1324],{},"    _, err := router.euRegulated.Remember(ctx, map[string]any{\n",[277,1326,1327],{"class":279,"line":677},[277,1328,1329],{},"        \"scopeId\": \"case:\" + caseID, \"type\": \"experience\",\n",[277,1331,1332],{"class":279,"line":682},[277,1333,1334],{},"        \"privacyClass\": \"user_private\", \"text\": minimizedSummary,\n",[277,1336,1337],{"class":279,"line":688},[277,1338,1339],{},"        \"metadata\": map[string]any{\n",[277,1341,1342],{"class":279,"line":694},[277,1343,1344],{},"            \"dataClass\": \"eu-regulated-case\", \"source\": \"approved-case-summary\",\n",[277,1346,1347],{"class":279,"line":699},[277,1348,828],{},[277,1350,1351],{"class":279,"line":705},[277,1352,1146],{},[277,1354,1355],{"class":279,"line":711},[277,1356,1252],{},[277,1358,1359],{"class":279,"line":717},[277,1360,445],{},[263,1362,1363],{},"Do not expose a generic “choose Nucleus” operation to untrusted callers. Route through these domain-specific methods.",[300,1365,1367],{"id":1366},"recall-and-verify-the-eu-boundary","Recall and verify the EU boundary",[267,1369,1371],{"className":306,"code":1370,"language":284,"meta":272,"style":272},"func (router *memoryRouter) euCaseContext(ctx context.Context) (map[string]any, error) {\n    return router.euRegulated.AgentContext(ctx, map[string]any{\n        \"scopeIds\": []string{\n            \"case:case-4821\", \"policy:eu-case-handling\", \"kb:approved-products\",\n        },\n        \"agentId\":       \"agent:eu-case-support\",\n        \"task\":          \"Prepare the next authorized case-support step.\",\n        \"privacyClasses\": []string{\"tenant\", \"user_private\"},\n        \"tokenBudget\":   1200,\n        \"cachePolicy\": map[string]any{\n            \"mode\": \"prefer_cache\", \"keyMode\": \"intent_profile\", \"ttlSeconds\": 120,\n            \"includeDynamicRag\": true, \"allowSensitive\": false,\n        },\n    })\n}\n\nfunc verifyEUReadiness(\n    ctx context.Context,\n    httpClient *http.Client,\n    baseURL string,\n    euToken string,\n) error {\n    _, err := neutronRequest(ctx, httpClient, baseURL, euToken, http.MethodGet, \"\u002Fv1\u002Fnuclei\u002Fregulated-cases-eu\u002Fplacement\", nil)\n    if err != nil {\n        return err\n    }\n    health, err := neutronRequest(ctx, httpClient, baseURL, euToken, http.MethodGet, \"\u002Fv1\u002Fnuclei\u002Fregulated-cases-eu\u002Fhealth\", nil)\n    if err != nil {\n        return err\n    }\n    blocking := map[string]bool{\n        \"jurisdictional_do_subnamespace_unavailable\": true,\n        \"jurisdictional_archive_bucket_missing\":     true,\n    }\n    if warnings, ok := health[\"warnings\"].([]any); ok {\n        for _, warning := range warnings {\n            if value, ok := warning.(string); ok && blocking[value] {\n                return fmt.Errorf(\"EU Nucleus is not ready: %s\", value)\n            }\n        }\n    }\n    return nil\n}\n\nfunc main() {\n    ctx := context.Background()\n    httpClient := &http.Client{Timeout: 30 * time.Second}\n    baseURL, err := requiredEnv(\"NEUTRON_API_URL\")\n    if err != nil {\n        panic(err)\n    }\n    workspaceKey, err := requiredEnv(\"NEUTRON_WORKSPACE_API_KEY\")\n    if err != nil {\n        panic(err)\n    }\n    if err := provisionNuclei(ctx, httpClient, baseURL, workspaceKey); err != nil {\n        panic(err)\n    }\n    router, err := newMemoryRouter(baseURL)\n    if err != nil {\n        panic(err)\n    }\n    if _, err := router.euCaseContext(ctx); err != nil {\n        panic(err)\n    }\n    euToken, _ := requiredEnv(\"NEUTRON_EU_TOKEN\")\n    if err := verifyEUReadiness(ctx, httpClient, baseURL, euToken); err != nil {\n        panic(err)\n    }\n}\n",[274,1372,1373,1378,1383,1388,1393,1397,1402,1407,1412,1417,1422,1427,1432,1436,1440,1444,1448,1453,1457,1461,1465,1470,1474,1479,1483,1488,1492,1497,1501,1505,1509,1514,1519,1524,1528,1533,1538,1543,1548,1553,1557,1561,1565,1569,1573,1578,1583,1588,1593,1597,1602,1606,1611,1615,1619,1623,1628,1632,1636,1641,1645,1649,1653,1658,1662,1666,1671,1676,1680,1684],{"__ignoreMap":272},[277,1374,1375],{"class":279,"line":280},[277,1376,1377],{},"func (router *memoryRouter) euCaseContext(ctx context.Context) (map[string]any, error) {\n",[277,1379,1380],{"class":279,"line":317},[277,1381,1382],{},"    return router.euRegulated.AgentContext(ctx, map[string]any{\n",[277,1384,1385],{"class":279,"line":324},[277,1386,1387],{},"        \"scopeIds\": []string{\n",[277,1389,1390],{"class":279,"line":330},[277,1391,1392],{},"            \"case:case-4821\", \"policy:eu-case-handling\", \"kb:approved-products\",\n",[277,1394,1395],{"class":279,"line":336},[277,1396,828],{},[277,1398,1399],{"class":279,"line":342},[277,1400,1401],{},"        \"agentId\":       \"agent:eu-case-support\",\n",[277,1403,1404],{"class":279,"line":348},[277,1405,1406],{},"        \"task\":          \"Prepare the next authorized case-support step.\",\n",[277,1408,1409],{"class":279,"line":354},[277,1410,1411],{},"        \"privacyClasses\": []string{\"tenant\", \"user_private\"},\n",[277,1413,1414],{"class":279,"line":360},[277,1415,1416],{},"        \"tokenBudget\":   1200,\n",[277,1418,1419],{"class":279,"line":366},[277,1420,1421],{},"        \"cachePolicy\": map[string]any{\n",[277,1423,1424],{"class":279,"line":372},[277,1425,1426],{},"            \"mode\": \"prefer_cache\", \"keyMode\": \"intent_profile\", \"ttlSeconds\": 120,\n",[277,1428,1429],{"class":279,"line":378},[277,1430,1431],{},"            \"includeDynamicRag\": true, \"allowSensitive\": false,\n",[277,1433,1434],{"class":279,"line":384},[277,1435,828],{},[277,1437,1438],{"class":279,"line":389},[277,1439,1146],{},[277,1441,1442],{"class":279,"line":395},[277,1443,445],{},[277,1445,1446],{"class":279,"line":401},[277,1447,321],{"emptyLinePlaceholder":320},[277,1449,1450],{"class":279,"line":406},[277,1451,1452],{},"func verifyEUReadiness(\n",[277,1454,1455],{"class":279,"line":412},[277,1456,462],{},[277,1458,1459],{"class":279,"line":418},[277,1460,468],{},[277,1462,1463],{"class":279,"line":424},[277,1464,474],{},[277,1466,1467],{"class":279,"line":430},[277,1468,1469],{},"    euToken string,\n",[277,1471,1472],{"class":279,"line":436},[277,1473,768],{},[277,1475,1476],{"class":279,"line":442},[277,1477,1478],{},"    _, err := neutronRequest(ctx, httpClient, baseURL, euToken, http.MethodGet, \"\u002Fv1\u002Fnuclei\u002Fregulated-cases-eu\u002Fplacement\", nil)\n",[277,1480,1481],{"class":279,"line":448},[277,1482,598],{},[277,1484,1485],{"class":279,"line":453},[277,1486,1487],{},"        return err\n",[277,1489,1490],{"class":279,"line":459},[277,1491,433],{},[277,1493,1494],{"class":279,"line":465},[277,1495,1496],{},"    health, err := neutronRequest(ctx, httpClient, baseURL, euToken, http.MethodGet, \"\u002Fv1\u002Fnuclei\u002Fregulated-cases-eu\u002Fhealth\", nil)\n",[277,1498,1499],{"class":279,"line":471},[277,1500,598],{},[277,1502,1503],{"class":279,"line":477},[277,1504,1487],{},[277,1506,1507],{"class":279,"line":483},[277,1508,433],{},[277,1510,1511],{"class":279,"line":489},[277,1512,1513],{},"    blocking := map[string]bool{\n",[277,1515,1516],{"class":279,"line":495},[277,1517,1518],{},"        \"jurisdictional_do_subnamespace_unavailable\": true,\n",[277,1520,1521],{"class":279,"line":501},[277,1522,1523],{},"        \"jurisdictional_archive_bucket_missing\":     true,\n",[277,1525,1526],{"class":279,"line":507},[277,1527,433],{},[277,1529,1530],{"class":279,"line":513},[277,1531,1532],{},"    if warnings, ok := health[\"warnings\"].([]any); ok {\n",[277,1534,1535],{"class":279,"line":519},[277,1536,1537],{},"        for _, warning := range warnings {\n",[277,1539,1540],{"class":279,"line":525},[277,1541,1542],{},"            if value, ok := warning.(string); ok && blocking[value] {\n",[277,1544,1545],{"class":279,"line":531},[277,1546,1547],{},"                return fmt.Errorf(\"EU Nucleus is not ready: %s\", value)\n",[277,1549,1550],{"class":279,"line":537},[277,1551,1552],{},"            }\n",[277,1554,1555],{"class":279,"line":543},[277,1556,540],{},[277,1558,1559],{"class":279,"line":549},[277,1560,433],{},[277,1562,1563],{"class":279,"line":554},[277,1564,1026],{},[277,1566,1567],{"class":279,"line":559},[277,1568,445],{},[277,1570,1571],{"class":279,"line":565},[277,1572,321],{"emptyLinePlaceholder":320},[277,1574,1575],{"class":279,"line":571},[277,1576,1577],{},"func main() {\n",[277,1579,1580],{"class":279,"line":577},[277,1581,1582],{},"    ctx := context.Background()\n",[277,1584,1585],{"class":279,"line":583},[277,1586,1587],{},"    httpClient := &http.Client{Timeout: 30 * time.Second}\n",[277,1589,1590],{"class":279,"line":589},[277,1591,1592],{},"    baseURL, err := requiredEnv(\"NEUTRON_API_URL\")\n",[277,1594,1595],{"class":279,"line":595},[277,1596,598],{},[277,1598,1599],{"class":279,"line":601},[277,1600,1601],{},"        panic(err)\n",[277,1603,1604],{"class":279,"line":607},[277,1605,433],{},[277,1607,1608],{"class":279,"line":612},[277,1609,1610],{},"    workspaceKey, err := requiredEnv(\"NEUTRON_WORKSPACE_API_KEY\")\n",[277,1612,1613],{"class":279,"line":618},[277,1614,598],{},[277,1616,1617],{"class":279,"line":624},[277,1618,1601],{},[277,1620,1621],{"class":279,"line":629},[277,1622,433],{},[277,1624,1625],{"class":279,"line":635},[277,1626,1627],{},"    if err := provisionNuclei(ctx, httpClient, baseURL, workspaceKey); err != nil {\n",[277,1629,1630],{"class":279,"line":640},[277,1631,1601],{},[277,1633,1634],{"class":279,"line":645},[277,1635,433],{},[277,1637,1638],{"class":279,"line":650},[277,1639,1640],{},"    router, err := newMemoryRouter(baseURL)\n",[277,1642,1643],{"class":279,"line":656},[277,1644,598],{},[277,1646,1647],{"class":279,"line":661},[277,1648,1601],{},[277,1650,1651],{"class":279,"line":667},[277,1652,433],{},[277,1654,1655],{"class":279,"line":672},[277,1656,1657],{},"    if _, err := router.euCaseContext(ctx); err != nil {\n",[277,1659,1660],{"class":279,"line":677},[277,1661,1601],{},[277,1663,1664],{"class":279,"line":682},[277,1665,433],{},[277,1667,1668],{"class":279,"line":688},[277,1669,1670],{},"    euToken, _ := requiredEnv(\"NEUTRON_EU_TOKEN\")\n",[277,1672,1673],{"class":279,"line":694},[277,1674,1675],{},"    if err := verifyEUReadiness(ctx, httpClient, baseURL, euToken); err != nil {\n",[277,1677,1678],{"class":279,"line":699},[277,1679,1601],{},[277,1681,1682],{"class":279,"line":705},[277,1683,433],{},[277,1685,1686],{"class":279,"line":711},[277,1687,445],{},[263,1689,1690,1691,1694,1695,1698],{},"All scopes in ",[274,1692,1693],{},"euCaseContext"," resolve inside ",[274,1696,1697],{},"regulated-cases-eu","; no cross-Nucleus recall occurs.",[263,1700,1701,1702,1706],{},"Return to the ",[1703,1704,1705],"a",{"href":77},"placement architecture and production checklist",".",[1708,1709,1710],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":272,"searchDepth":317,"depth":317,"links":1712},[1713,1714,1715],{"id":302,"depth":317,"text":303},{"id":1037,"depth":317,"text":1038},{"id":1366,"depth":317,"text":1367},"Implement global, regional, and jurisdictional Neutron memory with the Go SDK.","md",{},{"title":94,"description":1716},"cntxw_0El23RdInlBejsjK_pyc0KUdTf8vX_P4NhB9Q",[1722,1723],{"title":90,"path":91,"stem":92,"children":-1},{"title":98,"path":99,"stem":100,"children":-1},1786883757394]