diff --git a/2026/aidevcon-london/assets/HttpHeaderExample--_VAx0XV.js b/2026/aidevcon-london/assets/HttpHeaderExample--_VAx0XV.js
new file mode 100644
index 0000000000000000000000000000000000000000..17b0cd90dda7c278fad00c638637b144364f7edd
--- /dev/null
+++ b/2026/aidevcon-london/assets/HttpHeaderExample--_VAx0XV.js
@@ -0,0 +1 @@
+import{T as e,_t as t,b as n,p as r,x as i,z as a}from"./modules/shiki-BMQKBaOU.js";import{it as o}from"./index-BNJV3TZs.js";var s={key:1,class:`http-schema-layout`},c=e({__name:`HttpHeaderExample`,props:{variant:{default:`solution`}},setup(e){let{$slidev:c,$nav:l,$clicksContext:u,$clicks:d,$page:f,$renderContext:p,$frontmatter:m}=o(),h=e;return(e,o)=>(a(),n(`section`,{class:t([`http-request-panel deck-panel`,`http-request-panel--${h.variant}`])},[h.variant===`problem`?(a(),n(r,{key:0},[o[0]||=i(`
MCP over HTTP today
POST /mcp/ HTTP/1.1Host: hf.co/mcpContent-Type: application/json
Ordinary tool inputprompt and size stay in the JSON body.
One routable parameterx-mcp-header tells clients what to mirror into HTTP.
Infrastructure hintThe edge can choose image infrastructure without parsing the packet.
`,2)]])):(a(),n(r,{key:2},[o[2]||=i(`
Router can see
tool definition
namehf.generate_image
x-mcp-headerPipeline
POST /mcp/ HTTP/1.1Host: hf.co/mcpMcp-Method: tools/callMcp-Name: hf.generate_imageMcp-Param-Pipeline: image-generation
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "hf.generate_image",
"arguments": {
"prompt": "robot on a skateboard",
"pipeline": "image-generation"
}
}
}
`,4)],64))],2))}});export{c as t};
\ No newline at end of file
diff --git a/2026/aidevcon-london/assets/HttpRouteMap-DT31hbr0.js b/2026/aidevcon-london/assets/HttpRouteMap-DT31hbr0.js
new file mode 100644
index 0000000000000000000000000000000000000000..f8af76cf491af0bbead5a7dd64a8a11805c3436e
--- /dev/null
+++ b/2026/aidevcon-london/assets/HttpRouteMap-DT31hbr0.js
@@ -0,0 +1 @@
+import{S as e,T as t,V as n,_ as r,_t as i,b as a,bt as o,p as s,z as c}from"./modules/shiki-BMQKBaOU.js";import{it as l,vt as u}from"./index-BNJV3TZs.js";var d={class:`http-route-map__svg`,viewBox:`0 0 640 420`,role:`img`,"aria-label":`Regions and client connecting through a global endpoint`},f={class:`http-route-map__nodes`},p=[`transform`],m=[`width`,`height`,`rx`],h=[`x`,`y`],g={class:`http-route-map__edges`},_=[`d`,`marker-end`],v={class:`http-route-note`},y=u(t({__name:`HttpRouteMap`,props:{mode:{default:`solution`}},setup(t){let{$slidev:u,$nav:y,$clicksContext:b,$clicks:x,$page:S,$renderContext:C,$frontmatter:w}=l(),T=t,E={regionA:{id:`regionA`,label:`Hub Query`,x:48,y:44,w:180,h:64,rx:18,tone:`blue`,kind:`service`},regionB:{id:`regionB`,label:`Image Gen`,x:412,y:44,w:180,h:64,rx:18,tone:`red`,kind:`service`},endpoint:{id:`endpoint`,label:`HF MCP Edge`,x:48,y:160,w:544,h:64,rx:32,kind:`endpoint`},client:{id:`client`,label:`Client`,x:230,y:330,w:180,h:68,rx:34,tone:`blue`,kind:`client`}},D=[E.regionA,E.regionB,E.endpoint,E.client],O=[{id:`region-a-request`,from:`regionA`,to:`endpoint`,fromSide:`bottom`,toSide:`top`,tone:`blue`,fromOffsetX:-8,toOffsetX:-190},{id:`region-a-response`,from:`endpoint`,to:`regionA`,fromSide:`top`,toSide:`bottom`,tone:`blue`,dashed:!0,fromOffsetX:-174,toOffsetX:8},{id:`region-b-request`,from:`regionB`,to:`endpoint`,fromSide:`bottom`,toSide:`top`,tone:`red`,fromOffsetX:-8,toOffsetX:174},{id:`region-b-response`,from:`endpoint`,to:`regionB`,fromSide:`top`,toSide:`bottom`,tone:`red`,dashed:!0,fromOffsetX:190,toOffsetX:8},{id:`client-blue-request`,from:`client`,to:`endpoint`,fromSide:`top`,toSide:`bottom`,tone:`blue`,fromOffsetX:-28,toOffsetX:-28},{id:`client-blue-response`,from:`endpoint`,to:`client`,fromSide:`bottom`,toSide:`top`,tone:`blue`,dashed:!0,fromOffsetX:-14,toOffsetX:-14},{id:`client-red-request`,from:`client`,to:`endpoint`,fromSide:`top`,toSide:`bottom`,tone:`red`,fromOffsetX:28,toOffsetX:28},{id:`client-red-response`,from:`endpoint`,to:`client`,fromSide:`bottom`,toSide:`top`,tone:`red`,dashed:!0,fromOffsetX:42,toOffsetX:42}];function k(e,t,n=0){return t===`top`?{x:e.x+e.w/2+n,y:e.y}:t===`bottom`?{x:e.x+e.w/2+n,y:e.y+e.h}:t===`left`?{x:e.x,y:e.y+e.h/2}:{x:e.x+e.w,y:e.y+e.h/2}}function A(e){let t=k(E[e.from],e.fromSide,e.fromOffsetX),n=k(E[e.to],e.toSide,e.toOffsetX);return`M ${t.x} ${t.y} L ${n.x} ${n.y}`}return(t,l)=>(c(),a(`section`,{class:i([`http-route-map deck-panel`,`http-route-map--${T.mode}`])},[(c(),a(`svg`,d,[l[0]||=r(`defs`,null,[r(`marker`,{id:`http-route-arrow-blue`,markerWidth:`12`,markerHeight:`12`,refX:`10`,refY:`6`,orient:`auto`,markerUnits:`userSpaceOnUse`},[r(`path`,{d:`M 0 0 L 12 6 L 0 12 z`})]),r(`marker`,{id:`http-route-arrow-red`,markerWidth:`12`,markerHeight:`12`,refX:`10`,refY:`6`,orient:`auto`,markerUnits:`userSpaceOnUse`},[r(`path`,{d:`M 0 0 L 12 6 L 0 12 z`})])],-1),r(`g`,f,[(c(),a(s,null,n(D,e=>r(`g`,{key:e.id,class:i([`http-route-node`,[`http-route-node--${e.kind}`,e.tone&&`http-route-node--${e.tone}`]]),transform:`translate(${e.x} ${e.y})`},[r(`rect`,{width:e.w,height:e.h,rx:e.rx},null,8,m),r(`text`,{x:e.w/2,y:e.h/2},o(e.label),9,h)],10,p)),64))]),r(`g`,g,[(c(),a(s,null,n(O,e=>r(`path`,{key:e.id,class:i([`http-route-edge`,[`http-route-edge--${e.tone}`,e.dashed&&`http-route-edge--dashed`]]),d:A(e),"marker-end":`url(#http-route-arrow-${e.tone})`},null,10,_)),64))])])),r(`div`,v,[T.mode===`problem`?(c(),a(s,{key:0},[l[1]||=e(` Edge only sees `,-1),l[2]||=r(`strong`,null,`POST /mcp`,-1),l[3]||=e(`; routing fields are buried in JSON. `,-1)],64)):(c(),a(s,{key:1},[l[4]||=e(` Edge sees `,-1),l[5]||=r(`strong`,null,`Mcp-Name`,-1),l[6]||=e(` and `,-1),l[7]||=r(`strong`,null,`Mcp-Param-Pipeline`,-1),l[8]||=e(`. `,-1)],64))])],2))}}),[[`__scopeId`,`data-v-26c46c5e`]]);export{y as t};
\ No newline at end of file
diff --git a/2026/aidevcon-london/assets/McpSpecTransportTimeline-B6F7ts8p.js b/2026/aidevcon-london/assets/McpSpecTransportTimeline-B6F7ts8p.js
new file mode 100644
index 0000000000000000000000000000000000000000..1f7fe94ca72e37d92554cdd14fe3f89d2000e245
--- /dev/null
+++ b/2026/aidevcon-london/assets/McpSpecTransportTimeline-B6F7ts8p.js
@@ -0,0 +1 @@
+import{T as e,V as t,_ as n,_t as r,b as i,p as a,y as o,z as s}from"./modules/shiki-BMQKBaOU.js";import{it as c,vt as l}from"./index-BNJV3TZs.js";var u={class:`spec-timeline__axis`},d={class:`spec-timeline__axis-track`},f={class:`spec-timeline__tick spec-timeline__tick--now spec-timeline__tick--col-5`},p={key:0},m={class:`spec-timeline__tick spec-timeline__tick--future spec-timeline__tick--col-6`},h={key:0},g={class:`spec-timeline__body`},_={class:`spec-timeline__lane spec-timeline__lane--transport`},v={class:`spec-timeline__hotspots`,"aria-hidden":`true`},y={key:0,class:`spec-timeline__bar spec-timeline__bar--stateless-stdio`},b={class:`spec-timeline__lane spec-timeline__lane--remote`},x={class:`spec-timeline__hotspots`,"aria-hidden":`true`},S={key:0,class:`spec-timeline__bar spec-timeline__bar--stateless`},C={class:`spec-timeline__lane spec-timeline__lane--auth`},w={class:`spec-timeline__hotspots`,"aria-hidden":`true`},T=l(e({__name:`McpSpecTransportTimeline`,props:{variant:{default:`full`}},setup(e){let{$slidev:l,$nav:T,$clicksContext:E,$clicks:D,$page:O,$renderContext:k,$frontmatter:A}=c(),j=e.variant===`before`;return(e,c)=>(s(),i(`section`,{class:r([`spec-timeline`,{"spec-timeline--before":j}]),"aria-label":`MCP specification transport and authorization evolution`},[n(`div`,u,[c[4]||=n(`div`,{class:`spec-timeline__axis-spacer`,"aria-hidden":`true`},null,-1),n(`div`,d,[c[0]||=n(`div`,{class:`spec-timeline__tick spec-timeline__tick--past spec-timeline__tick--col-1`},[n(`strong`,null,`2024-11`)],-1),c[1]||=n(`div`,{class:`spec-timeline__tick spec-timeline__tick--col-2`},[n(`strong`,null,`2025-03`)],-1),c[2]||=n(`div`,{class:`spec-timeline__tick spec-timeline__tick--col-3`},[n(`strong`,null,`2025-06`)],-1),c[3]||=n(`div`,{class:`spec-timeline__tick spec-timeline__tick--col-4`},[n(`strong`,null,`2025-11`)],-1),n(`div`,f,[j?o(`v-if`,!0):(s(),i(`strong`,p,`2026-07`))]),n(`div`,m,[j?o(`v-if`,!0):(s(),i(`strong`,h,`...`))])])]),n(`div`,g,[c[15]||=n(`div`,{class:`spec-timeline__lane-label spec-timeline__lane-label--transport`},[n(`span`,null,`Local`)],-1),n(`div`,_,[c[7]||=n(`div`,{class:`spec-timeline__grid-lines`,"aria-hidden":`true`},null,-1),n(`div`,v,[(s(),i(a,null,t(6,e=>n(`div`,{key:`transport-${e}`,class:r(`spec-timeline__hotspot spec-timeline__hotspot--${e}`)},null,2)),64))]),n(`div`,{class:r([`spec-timeline__bar spec-timeline__bar--stdio`,{"spec-timeline__bar--stdio-before":j,"spec-timeline__bar--stdio-after":!j}])},[...c[5]||=[n(`strong`,null,`STDIO`,-1)]],2),j?o(`v-if`,!0):(s(),i(`div`,y,[...c[6]||=[n(`strong`,null,`Stateless STDIO`,-1)]]))]),c[16]||=n(`div`,{class:`spec-timeline__lane-label spec-timeline__lane-label--remote`},[n(`span`,null,`Remote`)],-1),n(`div`,b,[c[9]||=n(`div`,{class:`spec-timeline__grid-lines`,"aria-hidden":`true`},null,-1),n(`div`,x,[(s(),i(a,null,t(6,e=>n(`div`,{key:`remote-${e}`,class:r(`spec-timeline__hotspot spec-timeline__hotspot--${e}`)},null,2)),64))]),c[10]||=n(`div`,{class:`spec-timeline__bar spec-timeline__bar--sse`},[n(`strong`,null,`SSE`)],-1),c[11]||=n(`div`,{class:`spec-timeline__bar spec-timeline__bar--streamable`},[n(`strong`,null,`Streamable HTTP`)],-1),j?o(`v-if`,!0):(s(),i(`div`,S,[...c[8]||=[n(`strong`,null,`Stateless HTTP`,-1)]]))]),c[17]||=n(`div`,{class:`spec-timeline__lane-label spec-timeline__lane-label--auth`},[n(`span`,null,`Auth`)],-1),n(`div`,C,[c[13]||=n(`div`,{class:`spec-timeline__grid-lines`,"aria-hidden":`true`},null,-1),n(`div`,w,[(s(),i(a,null,t(6,e=>n(`div`,{key:`auth-${e}`,class:r(`spec-timeline__hotspot spec-timeline__hotspot--${e}`)},null,2)),64))]),c[14]||=n(`div`,{class:`spec-timeline__bar spec-timeline__bar--auth-as`},[n(`strong`,null,`OAuth AS`)],-1),n(`div`,{class:r([`spec-timeline__bar spec-timeline__bar--auth-rs`,{"spec-timeline__bar--auth-rs-before":j}])},[...c[12]||=[n(`strong`,null,`OAuth Resource Server`,-1)]],2)])])],2))}}),[[`__scopeId`,`data-v-5e29e849`]]);export{T as t};
\ No newline at end of file
diff --git a/2026/aidevcon-london/assets/default-DALeGUgK.js b/2026/aidevcon-london/assets/default-DALeGUgK.js
new file mode 100644
index 0000000000000000000000000000000000000000..be024a06587f2528c3e0ec85b010b52be8d7b2d2
--- /dev/null
+++ b/2026/aidevcon-london/assets/default-DALeGUgK.js
@@ -0,0 +1 @@
+import{H as e,T as t,b as n,bt as r,y as i,z as a}from"./modules/shiki-BMQKBaOU.js";import{it as o}from"./index-BNJV3TZs.js";var s={class:`slidev-layout default-layout`},c={key:0,class:`kicker`},l=t({__name:`default`,props:{kicker:{}},setup(t){let{$slidev:l,$nav:u,$clicksContext:d,$clicks:f,$page:p,$renderContext:m,$frontmatter:h}=o();return(o,l)=>(a(),n(`section`,s,[t.kicker?(a(),n(`div`,c,r(t.kicker),1)):i(`v-if`,!0),e(o.$slots,`default`)]))}});export{l as t};
\ No newline at end of file
diff --git a/2026/aidevcon-london/assets/index-BNJV3TZs.js b/2026/aidevcon-london/assets/index-BNJV3TZs.js
new file mode 100644
index 0000000000000000000000000000000000000000..c40d261ebb1e90dc122ef66f1b23e045ad18cc1c
--- /dev/null
+++ b/2026/aidevcon-london/assets/index-BNJV3TZs.js
@@ -0,0 +1,65 @@
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./slidev/md-D-YR5mIZ.js","./modules/shiki-BMQKBaOU.js","./rolldown-runtime-QTnfLwEv.js","./modules/shiki-BhczoDnk.css","./md-9fzCrR1w.js","./default-DALeGUgK.js","./md-BbI0bWKA.js","./md-CX3fW72Q.js","./md-DlfXdPCY.js","./useDrawings-6TlNRU0H.js","./modules/vue-DcLb0Un4.js","./md-BFUOci2z2.js","./wrench-MAYTdx4I.js","./md-DMmtzoWc.css","./md-r5cSRQwB2.js","./McpSpecTransportTimeline-B6F7ts8p.js","./McpSpecTransportTimeline-Ch_RG7t7.css","./md-C4W30IBB2.js","./mcp_weekly_init_tool_calls-DYuMHE2K.js","./md-BpsDipUN.css","./md-BhnBHiYl2.js","./md-DL2ti6_7.css","./md-C_rDzyts.js","./md-BCa6WYkT.css","./md-DJbGD107.js","./md-Ba6Zgw6i.css","./md-Cyr4Tu1S.js","./md-JveUwtsu.css","./md-BEke_fre.js","./md-C2Y9sWNb.js","./md-BjpvoEw0.css","./md-5NqZUWUJ.js","./md-DgHQRnHm.css","./md-CkbWvQhi.js","./slidev/md-DcEfj4tG.js","./md-ofyAedZm.js","./md-Dc6iK0lN.js","./md-B2u0OYdW.css","./md-B3-UFwC3.js","./md-BPXnc1S9.js","./md-CaiVG-Iq.js","./md-0-z5g3UQ.js","./md-D_q4vJfB.js","./HttpHeaderExample--_VAx0XV.js","./HttpRouteMap-DT31hbr0.js","./HttpRouteMap-wz681R0j.css","./md-BwCO7ekv.js","./md-CAVoF5ZJ.js","./md-D9-ARMGr.js","./md-yBHkRbzr.css","./md-BHmlyq3r.js","./md-DOQnKkGq.js","./modules/file-saver-DJvf_BAX.js","./slidev/print-DC6l_dYS.js","./slidev/SlideWrapper-Bx5jEbs5.js","./SlideWrapper-DyDeIrov.css","./print-DvsinzX5.css","./slidev/entry-BMhGSTky.js","./entry-CQkCdRep.css","./slidev/overview-D_-jayML.js","./slidev/SlideContainer-DEFKC5R_.js","./SlideContainer-DfEYZ3xE.css","./slidev/NoteDisplay-rlvyGu60.js","./NoteDisplay-CT2scfjF.css","./slidev/DrawingPreview-BSU-JPdx.js","./slidev/IconButton-Cs_ae-Io.js","./slidev/NoteEditable-CAZivEb8.js","./modules/unplugin-icons-CTUR52Kd.js","./slidev/notes-D2hKphBZ.js","./slidev/TimerBar-BatjYg5v.js","./slidev/Modal-D7y0dmeV.js","./slidev/notes-edit-Be5KKmQG.js","./slidev/presenter-D1HZRuHP.js","./slidev/shortcuts-B4JADzEv.js","./shortcuts-DEFRQbIv.css","./slidev/DrawingControls-DK0319vG.js","./DrawingControls-Dhbx0szf.css","./presenter-Caeb5SvA.css","./slidev/play-CW8Dq0Rz.js","./play-D_7yfuao.css","./slidev/404-CM6o6iF7.js","./404-VQkf1Vlw.css"])))=>i.map(i=>d[i]);
+import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{A as t,E as n,F as r,I as i,J as a,L as o,N as s,P as c,R as l,T as u,U as d,Y as f,_ as p,b as m,bt as h,ct as g,dt as _,ft as v,g as y,gt as b,ht as x,k as S,lt as C,nt as w,ot as T,p as ee,pt as te,rt as ne,s as re,t as ie,v as E,w as ae,y as oe,z as se}from"./modules/shiki-BMQKBaOU.js";import{A as D,B as ce,E as le,L as ue,P as O,R as de,T as fe,V as pe,a as me,b as he,c as ge,d as _e,g as ve,h as k,i as ye,j as be,k as A,l as xe,m as Se,o as Ce,w as we,x as Te,z as Ee}from"./modules/vue-DcLb0Un4.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var j={theme:`default`,title:`Tessl + MCP`,titleTemplate:`%s - Slidev`,addons:[],remoteAssets:!1,monaco:!0,monacoTypesSource:`local`,monacoTypesAdditionalPackages:[],monacoTypesIgnorePackages:[],monacoRunAdditionalDeps:[],monacoRunUseStrict:!0,download:!1,export:{},info:`