diff --git a/2026/aidevcon-london/assets/HttpHeaderExample-UM3qS7BW.js b/2026/aidevcon-london/assets/HttpHeaderExample-UM3qS7BW.js
new file mode 100644
index 0000000000000000000000000000000000000000..2f7ef2322f3a3df7cb039d688d6ba8851e1ddcdc
--- /dev/null
+++ b/2026/aidevcon-london/assets/HttpHeaderExample-UM3qS7BW.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-cw2gNXXR.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-Bng6aSA7.js b/2026/aidevcon-london/assets/HttpRouteMap-Bng6aSA7.js
new file mode 100644
index 0000000000000000000000000000000000000000..9ac9e23e537f9878f63ac1065d81ddeadb174f66
--- /dev/null
+++ b/2026/aidevcon-london/assets/HttpRouteMap-Bng6aSA7.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-cw2gNXXR.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-cqjmY3kA.js b/2026/aidevcon-london/assets/McpSpecTransportTimeline-cqjmY3kA.js
new file mode 100644
index 0000000000000000000000000000000000000000..c85cd8255a0dda180961b1c155af3dc9db64fdda
--- /dev/null
+++ b/2026/aidevcon-london/assets/McpSpecTransportTimeline-cqjmY3kA.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-cw2gNXXR.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-DcmGGORi.js b/2026/aidevcon-london/assets/default-DcmGGORi.js
new file mode 100644
index 0000000000000000000000000000000000000000..784b98a6b39ff8b4a0df2a289c8a9e732f0d8664
--- /dev/null
+++ b/2026/aidevcon-london/assets/default-DcmGGORi.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-cw2gNXXR.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/huggingface-mark-logo-BzDcJTjv.svg b/2026/aidevcon-london/assets/huggingface-mark-logo-BzDcJTjv.svg
new file mode 100644
index 0000000000000000000000000000000000000000..ce69d68e17ca8f54e2f6258e248f5c31fd65fc7a
--- /dev/null
+++ b/2026/aidevcon-london/assets/huggingface-mark-logo-BzDcJTjv.svg
@@ -0,0 +1,15 @@
+
diff --git a/2026/aidevcon-london/assets/index-cw2gNXXR.js b/2026/aidevcon-london/assets/index-cw2gNXXR.js
new file mode 100644
index 0000000000000000000000000000000000000000..3ba71b904a851ec81d16770da81561a2409e8c51
--- /dev/null
+++ b/2026/aidevcon-london/assets/index-cw2gNXXR.js
@@ -0,0 +1,65 @@
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./slidev/md-BIPMeRIP.js","./modules/shiki-BMQKBaOU.js","./rolldown-runtime-QTnfLwEv.js","./modules/shiki-BhczoDnk.css","./md-Dg-2Ig4i.js","./default-DcmGGORi.js","./md-BpFBDJ-I.js","./md-uZ0O8MyL.js","./md-DjcAA7-W.js","./useDrawings-BkOkFJPM.js","./modules/vue-DcLb0Un4.js","./md-DsgxFg7L2.js","./wrench-MAYTdx4I.js","./md-DMmtzoWc.css","./md-Cl-Gm-Dq2.js","./McpSpecTransportTimeline-cqjmY3kA.js","./McpSpecTransportTimeline-Ch_RG7t7.css","./md-CE5iyUO42.js","./mcp_weekly_init_tool_calls-DYuMHE2K.js","./md-BpsDipUN.css","./md-IISVRXyW2.js","./md-DL2ti6_7.css","./md-Drr1VWKt.js","./md-BCa6WYkT.css","./md-DH6OtSpH.js","./md-Ba6Zgw6i.css","./md-Dl8x_Iyt.js","./md-JveUwtsu.css","./md-BwAqqZee.js","./md-Fa6c-M0R.js","./md-BjpvoEw0.css","./md-D1YYAizP.js","./md-DgHQRnHm.css","./md-DpH7A3Br.js","./slidev/md-CiAN5L_K.js","./md-DsjicBWs.js","./md-D5OkqXnt.js","./md-B2u0OYdW.css","./md-SPbwse0y.js","./md-xgwNNhIf.js","./md-D3KQl0X-.js","./md-Bnbn9wNX.js","./md-D4hmql8c.js","./HttpHeaderExample-UM3qS7BW.js","./HttpRouteMap-Bng6aSA7.js","./HttpRouteMap-wz681R0j.css","./md-DWFMaKEI.js","./md-KN7s3Ntv.js","./md-30nXOLWT.js","./md-yBHkRbzr.css","./md-C36yyUm5.js","./md-uUgHcMX7.js","./modules/file-saver-DJvf_BAX.js","./slidev/print-BBsWBbHc.js","./slidev/SlideWrapper-Bygmag9f.js","./SlideWrapper-DyDeIrov.css","./print-DvsinzX5.css","./slidev/entry-CH3pAsyP.js","./entry-CQkCdRep.css","./slidev/overview-Bk3S41zn.js","./slidev/SlideContainer-DJlIQWjd.js","./SlideContainer-DfEYZ3xE.css","./slidev/NoteDisplay-DQz322Ni.js","./NoteDisplay-CT2scfjF.css","./slidev/DrawingPreview-CvsGsDPT.js","./slidev/IconButton-Cs_ae-Io.js","./slidev/NoteEditable-DaV32WGZ.js","./modules/unplugin-icons-CTUR52Kd.js","./slidev/notes-B1zxkKYD.js","./slidev/TimerBar-kR_GcbMH.js","./slidev/Modal-D7y0dmeV.js","./slidev/notes-edit-By5o5rlc.js","./slidev/presenter-Dmq3UP5q.js","./slidev/shortcuts-C6gnGEp7.js","./shortcuts-DEFRQbIv.css","./slidev/DrawingControls-DwNaXGu8.js","./DrawingControls-Dhbx0szf.css","./presenter-Caeb5SvA.css","./slidev/play-gDJClcOx.js","./play-D_7yfuao.css","./slidev/404-DNBeJd0_.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:`