Files
Guido.Tech/ai_intelligence_layer/__pycache__/main.cpython-313.pyc

148 lines
21 KiB
Plaintext
Raw Normal View History

2025-10-18 22:36:20 -05:00
<EFBFBD>
֦<>h<EFBFBD>\<00> <00>R<00>%SrSSKJrJrJrJrJr SSKJr SSK J
r
SSK r SSK r SSK r SSKJrJrJr SSKJr SSKJrJrJrJr SS KJrJr SS
KJr SS KJr SS K J!r! \ RD"\ RFS S9 \ RH"\%5r&Sq'\!\(S'Sq)\\(S'Sq*\\(S'Sq+\\(S'SSS.q,\\-\.4\(S'"SS5r/\/"5r0\
S\4Sj5r1\"SSS\1S9r2\2Rg\S/SS/S/S 9 \2RiS!\S"9S#5r5\2RmS$5S%\4S&j5r7\2RmS'\S"9S(\4S)j5r8\2RsS*5S+\4S,j5r:S-\.S.\S/\S0\S1\\-\44
S2jr;\%S3:Xa3SSK<r<\"5r=\<R|"S4\=R~\=R<>SS59 gg)6z<36>
2025-10-18 22:36:20 -05:00
AI Intelligence Layer - FastAPI Application
Port: 9000
Provides F1 race strategy generation and analysis using Gemini AI.
Supports WebSocket connections from Pi for bidirectional control.
<EFBFBD>)<05>FastAPI<50> HTTPException<6F>status<75> WebSocket<65>WebSocketDisconnect)<01>CORSMiddleware)<01>asynccontextmanagerN)<03>Dict<63>Any<6E>List)<01> get_settings)<04>BrainstormRequest<73>EnrichedTelemetryWebhook<6F>EnrichedTelemetryWithContext<78> RaceContext)<02>BrainstormResponse<73>HealthResponse)<01>StrategyGenerator)<01>TelemetryClient)<01>TelemetryBufferz4%(asctime)s - %(name)s - %(levelname)s - %(message)s)<02>level<65>format<61>telemetry_buffer<65>strategy_generator<6F>telemetry_client<6E>current_race_context<78><00><02>
brake_bias<EFBFBD>differential_slip<69>last_control_commandc<00>n<00>\rSrSrSrSrS\4SjrS\4SjrS\S\ \
\ 44Sjr S\ \
\ 44S jr S
rg ) <0C>ConnectionManager<65>2z.Manages WebSocket connections from Pi clients.c<00><00>/Ulg)N<><01>active_connections)<01>selfs <20>?/Users/adipu/Documents/HPCSimSite/ai_intelligence_layer/main.py<70>__init__<5F>ConnectionManager.__init__5s
<00><00>35<33><04><1F><00> websocketc<00><00><># <00>UR5IShv<01>N URRU5 [R S[ UR535 gNK7f)Nz(Pi client connected. Total connections: )<06>acceptr'<00>append<6E>logger<65>info<66>len<65>r(r-s r)<00>connect<63>ConnectionManager.connect8sP<00><00><00><17><1E><1E> <20> <20> <20> <0C><1F><1F>&<26>&<26>y<EFBFBD>1<><0E> <0B> <0B>><3E>s<EFBFBD>4<EFBFBD>CZ<43>CZ<43>?[<5B>>\<5C>]<5D>^<5E> !<21>s<00>A$<01>A"<04>A A$c<00><><00>URRU5 [RS[ UR535 g)Nz+Pi client disconnected. Total connections: )r'<00>remover1r2r3r4s r)<00>
disconnect<EFBFBD>ConnectionManager.disconnect=s6<00><00> <0C><1F><1F>&<26>&<26>y<EFBFBD>1<><0E> <0B> <0B>A<>#<23>d<EFBFBD>F]<5D>F]<5D>B^<5E>A_<41>`<60>ar,<00>commandc<00><00>B# <00>URU5IShv<01>N gN7f)z+Send control command to specific Pi client.N)<01> send_json)r(r-r;s r)<00>send_control_command<6E>&ConnectionManager.send_control_commandAs<00><00><00><17>!<21>!<21>'<27>*<2A>*<2A>*<2A>s <00><01><04>c<00><00><># <00>URHnURU5IShv<01>N M gN ![a#n[R SU35 SnAMLSnAff=f7f)z6Broadcast control command to all connected Pi clients.NzError broadcasting to client: )r'r=<00> Exceptionr1<00>error)r(r;<00>
connection<EFBFBD>es r)<00>broadcast_control_command<6E>+ConnectionManager.broadcast_control_commandEsZ<00><00><00><1E>1<>1<>J<EFBFBD> C<01> <20>*<2A>*<2A>7<EFBFBD>3<>3<>3<>2<>3<><33><1C> C<01><16> <0C> <0C>=<3D>a<EFBFBD>S<EFBFBD>A<>B<>B<><42> C<01>s6<00>A#<01>3<02>1<06>3<02>A#<01>3<02>
A <05>A<05>A#<01>A <05> A#r&N)<0F>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__firstlineno__<5F>__doc__r*rr5r9r
<00>strr r>rE<00>__static_attributes__<5F>r,r)r#r#2sX<00><00>8<>6<>_<01>y<EFBFBD>_<01>
b<01>I<EFBFBD>b<01>+<2B>I<EFBFBD>+<2B><04>S<EFBFBD>RU<52>X<EFBFBD><0E>+<2B>C<01>t<EFBFBD>C<EFBFBD><13>H<EFBFBD>~<7E>Cr,r#<00>appc<00><># <00>[5n[RSUR35 [RSUR35 [RSUR
35 [ 5q[5q [5q [RS5 S7v<00> [RS5 g7f)z*Lifecycle manager for FastAPI application.z'Starting AI Intelligence Layer on port z Demo mode: zStrategy count: z%All services initialized successfullyNz#Shutting down AI Intelligence Layer) r r1r2<00>ai_service_port<72> demo_mode<64>strategy_countrrrrrr)rO<00>settingss r)<00>lifespanrUPs<><00><00><00>
2025-10-18 22:36:20 -05:00
<1C>~<7E>H<EFBFBD>
<EFBFBD>K<EFBFBD>K<EFBFBD>9<>(<28>:R<>:R<>9S<39>T<>U<>
2025-10-18 23:56:53 -05:00
<EFBFBD>K<EFBFBD>K<EFBFBD>+<2B>h<EFBFBD>0<>0<>1<>2<>3<>
<EFBFBD>K<EFBFBD>K<EFBFBD>"<22>8<EFBFBD>#:<3A>#:<3A>";<3B><<3C>=<3D>'<27>(<28><14>*<2A>,<2C><16>&<26>(<28><14>
<EFBFBD>K<EFBFBD>K<EFBFBD>7<>8<> <09> <0B>K<EFBFBD>K<EFBFBD>5<>6<>s<00>B?CzF1 AI Intelligence LayerzGAdvanced race strategy generation and analysis using HPC telemetry data<74>1.0.0)<04>title<6C> description<6F>versionrU<00>*T)<04> allow_origins<6E>allow_credentials<6C> allow_methods<64> allow_headersz /api/health)<01>response_modelc<00><00>`# <00>[5n[SSSURURS9$7f)zHealth check endpoint.<2E>healthyzAI Intelligence LayerrV)r<00>servicerYrR<00>enrichment_service_url)r rrRrc)rTs r)<00> health_checkrdzs6<00><00><00><1C>~<7E>H<EFBFBD> <19><18>'<27><17><1A>$<24>$<24>'<27>><3E>><3E>  <06><06>s<00>,.z/api/ingest/enriched<65>datac <00><00># <00>[RSURR35 [R UR5 UR q[RSS9nU(Ga[U5S:<3A>a<>[RS[U5S35 [RUUR S9IShv<01>N n[RS [UR5S
URR35 S URR[R5[UR5URVs/sHo3R5PM snS .$[RSU(a [U5OSS35 SURR[R5S.$GNs snf![aWn[R!S U3SS9 SURR[R5[#U5S.sSnA$SnAff=f![aAn[R!SU35 [%[&R(S[#U53S9eSnAff=f7f)z<>
2025-10-18 22:36:20 -05:00
Webhook receiver for enriched telemetry data from HPC enrichment module.
This is called when enrichment service has NEXT_STAGE_CALLBACK_URL configured.
Receives enriched telemetry + race context and automatically triggers strategy brainstorming.
z)Received enriched telemetry webhook: lap <20>
<00><01>limit<69>z)Auto-triggering strategy brainstorm with z telemetry records<64><02>enriched_telemetry<72> race_contextNzAuto-generated z strategies for lap <20>received_and_processed)r<00>lap<61> buffer_size<7A>strategies_generated<65>
strategieszError in auto-brainstorm: T<><01>exc_info<66>received_but_brainstorm_failed)rrorprBzBuffer has only rz4 records, waiting for more data before brainstorming<6E>received_waiting_for_more_data)rrorpzError ingesting telemetry: zFailed to ingest telemetry: <20><02> status_code<64>detail)r1r2rlror<00>addrmr<00>
get_latestr3r<00>generaterr<00>size<7A>
model_dumprArBrLrr<00>HTTP_500_INTERNAL_SERVER_ERROR)re<00> buffer_data<74>response<73>srDs r)<00>ingest_enriched_telemetryr<79><00>sI<00><00><00>5
<EFBFBD><0E> <0B> <0B>?<3F><04>@W<>@W<>@[<5B>@[<5B>?\<5C>]<5D>^<5E> <19><1C><1C>T<EFBFBD>4<>4<>5<> $<24>0<>0<><1C>'<27>1<>1<><02>1<>;<3B> <0B> <16>3<EFBFBD>{<7B>+<2B>q<EFBFBD>0<> <12>K<EFBFBD>K<EFBFBD>C<>C<EFBFBD> <0B>DT<44>CU<43>Ug<55>h<> i<> <12>!3<>!<<3C>!<<3C>'2<>!%<25>!2<>!2<>"=<3D>"<12><12><08>
<17> <0B> <0B>o<EFBFBD>c<EFBFBD>(<28>2E<32>2E<32>.F<>-G<>G[<5B>\`<60>\s<>\s<>\w<>\w<>[x<>y<>z<>7<><1F>2<>2<>6<>6<>#3<>#8<>#8<>#:<3A>,/<2F><08>0C<30>0C<30>,D<>;C<>;N<>;N<>"O<>;N<>a<EFBFBD><<3C><<3C>><3E>;N<>"O<> <12><12>" <13>K<EFBFBD>K<EFBFBD>*<2A>{<7B>3<EFBFBD>{<7B>+;<3B>PQ<50>*R<>SG<02>H<02> I<02>:<3A><1B>.<2E>.<2E>2<>2<>/<2F>4<>4<>6<><0E> <0E>3<12><>#P<01><><1C> <12><16> <0C> <0C>9<>!<21><13>=<3D><04> <0C>M<>?<3F><1F>2<>2<>6<>6<>#3<>#8<>#8<>#:<3A> <20><11>V<EFBFBD> <12><12><> <12><>" <15>
2025-10-18 22:36:20 -05:00
<EFBFBD><0E> <0C> <0C>2<>1<EFBFBD>#<23>6<>7<><1B><1E>=<3D>=<3D>1<>#<23>a<EFBFBD>&<26><18>:<3A>
<EFBFBD>
<EFBFBD><EFBFBD>
<EFBFBD>s<EFBFBD><00>J
<01>B#H<<00>(!G<00> G<04>
BG<00>G <0C>4G<00>8J
<01>9AH<<00>J
<01>G<00>G<00>
H9<03>"A H4<03>.H9<03>/H<<00>3J
<01>4H9<03>9H<<00><
J<03><J<03>J<03>J
z/api/strategy/brainstorm<72>requestc<00><00><># <00>[RSURRR35 [RSURR
2025-10-18 22:36:20 -05:00
R SURR
R35 URnU(d<>[RSS9nU(a%[RS[U5S35 UnOP[RS5 [R5IS hv<01>N nU(d[[R S
S 9e["R%UURS 9IS hv<01>N n[RS [UR&5S35 U$NwN4![a e[(a@n[R+SU3SS9 [[R,S[/U53S 9eS nAff=f7f)z~
Generate 20 diverse race strategies based on enriched telemetry and race context.
This is Step 1 of the AI strategy process.
zBrainstorming strategies for z Current lap: <20>/rgrhzUsing z& telemetry records from webhook bufferz;No telemetry in buffer, fetching from enrichment service...NzvNo enriched telemetry available. Please provide data, ensure enrichment service is running, or configure webhook push.rwrkz
Generated z strategieszError in brainstorm: Trs<00>Strategy generation failed: )r1r2rm<00> driver_state<74> driver_name<6D> race_info<66> current_lap<61>
total_lapsrlrr{r3r<00> fetch_latestrr<00>HTTP_400_BAD_REQUESTrr|rrrArBrrL)r<><00> enriched_datar<61>r<>rDs r)<00>brainstorm_strategiesr<73><00>s<><00><00><00> &
2025-10-18 22:36:20 -05:00
<EFBFBD><0E> <0B> <0B>3<>G<EFBFBD>4H<34>4H<34>4U<34>4U<34>4a<34>4a<34>3b<33>c<>d<><0E> <0B> <0B>m<EFBFBD>G<EFBFBD>$8<>$8<>$B<>$B<>$N<>$N<>#O<>q<EFBFBD>QX<51>Qe<51>Qe<51>Qo<51>Qo<51>Qz<51>Qz<51>P{<7B>|<7C>}<7D> <20>2<>2<> <0A><1C>*<2A>5<>5<>B<EFBFBD>5<>?<3F>K<EFBFBD><1A><16> <0B> <0B>f<EFBFBD>S<EFBFBD><1B>%5<>$6<>6\<5C>]<5D>^<5E> +<2B> <0A><17> <0B> <0B>Y<>Z<>&6<>&C<>&C<>&E<> E<> <0A>$<24>'<27>$*<2A>$?<3F>$?<3F> X<02><16><16> ,<2C>4<>4<>,<2C> <20>-<2D>-<2D>5<>
<EFBFBD>
<EFBFBD><08>
<0F> <0B> <0B>j<EFBFBD><13>X<EFBFBD>%8<>%8<>!9<> :<3A>+<2B>F<>G<><17><0F>!F<01>
<EFBFBD><EFBFBD> <19><0E> <0A> <14>
<EFBFBD><0E> <0C> <0C>,<2C>Q<EFBFBD>C<EFBFBD>0<>4<EFBFBD> <0C>@<40><1B><1E>=<3D>=<3D>1<>#<23>a<EFBFBD>&<26><18>:<3A>
<EFBFBD>
<EFBFBD><EFBFBD>
<EFBFBD>sN<00>G"<01>D F <00>F<04>AF <00>F <04>1F <00>G"<01>F <00> F <00> G<03>;G<03>G<03>G"z/ws/pir-c <00><00>0 # <00>[RU5IShv<01>N [R5 SSS.q[
R S5 URSSSSS .5IShv<01>N UR5IShv<01>N nURS
S 5nUS :XGaURS S 5nURS5nURS5nU(Ga<>U(Ga<>[S30UD6n[RU5 [S30UD6q [RSS9n[U5S:<3A>GaH[
R SS35 [
R SUS35 [
R S5 URSU[S[SSS.5IShv<01>N [ R#U[S9IShv<01>N nUR$(aUR$S OSn ['UU U[S9n
U
SU
SS.qURSUU
SU
SU (a U R(OS[UR$5U
RS S!5S".5IShv<01>N [
R SS35 O<>URSUSSS'[U5S(3S.5IShv<01>N OT[
R1S+5 O>US,:XaURS
S-05IShv<01>N OUS.:Xa[
R S/5 OGM<>[R5U5 [R5 [
R S25 gGN"GN<>GN<>GN<>GN<>N<>![*aLn [
R-S#U 35 URS$US%[/U 53S&.5IShv<01>N Sn A N<>Sn A ff=fGN![*aHn [
R-S)U 35 URS$[/U 5S*.5IShv<01>N Sn A N<>Sn A ff=fGN&![2a [
R S05 GN&[*a#n [
R-S1U 35 Sn A GNMSn A ff=f![R5U5 [R5 [
R S25 f=f7f)4z<34>
WebSocket endpoint for Raspberry Pi clients.
Flow:
1. Pi connects and streams lap telemetry via WebSocket
2. AI layer processes telemetry and generates strategies
3. AI layer pushes control commands back to Pi (brake_bias, differential_slip)
Nrrz7[WebSocket] Telemetry buffer cleared for new connection<6F>connection_establishedz"Connected to AI Intelligence Layer<65>readyT)<04>type<70>messager<00>buffer_clearedr<64><00> telemetry<72>
lap_numberrrlrmrgrhrj<00>
z<============================================================zLAP z - GENERATING STRATEGY<47>control_commandrr z8Processing strategies (maintaining previous settings)...)r<>rorr r<>rk)r<><00>strategyrlrm<00>control_command_updatezN/A<> reasoning<6E>)r<>rorr <00> strategy_name<6D>total_strategiesr<73>z([WebSocket] Strategy generation failed: rBr<>)r<>ror<>zCollecting data (z/3 laps)z([WebSocket] Error processing telemetry: )r<>r<>z,[WebSocket] Received incomplete data from Pi<50>ping<6E>pongr9z#[WebSocket] Pi requested disconnectz"[WebSocket] Pi client disconnectedz[WebSocket] Unexpected error: z2[WebSocket] Telemetry buffer cleared on disconnectrN)<1B>websocket_managerr5r<00>clearr!r1r2r=<00> receive_json<6F>getrrzrrr{r3rr|rr<00>generate_control_commandr<64>rArBrL<00>warningrr9) r-re<00> message_typer<65><00>enriched<65>race_context_data<74> enriched_objr<6A>r<><00> top_strategyr<79>rDs r)<00>websocket_pi_endpointr<74>,sz<00><00><00> <1C>
#<23>
#<23>I<EFBFBD>
.<2E>.<2E>.<2E><15><1A><1A><1C>+,<2C>!<21>D<><18>
<EFBFBD>K<EFBFBD>K<EFBFBD>I<>J<>EJ<01><17>!<21>!<21>,<2C>;<3B><1D>"<22> #
<EFBFBD> <0B> <0B> <0B><13>"<22>/<2F>/<2F>1<>1<>D<EFBFBD><1F>8<EFBFBD>8<EFBFBD>F<EFBFBD>K<EFBFBD>8<>L<EFBFBD><1B>{<7B>*<2A>!<21>X<EFBFBD>X<EFBFBD>l<EFBFBD>A<EFBFBD>6<>
<EFBFBD> <20>8<EFBFBD>8<EFBFBD>$8<>9<><08>$(<28>H<EFBFBD>H<EFBFBD>^<5E>$<<3C>!<21><1B> 1<>V<1B>'?<3F>'K<>(<28>'K<> <0C>(<28>,<2C>,<2C>\<5C>:<3A>0;<3B>/O<>=N<>/O<>,<2C>'7<>&A<>&A<><02>&A<>&K<> <0B><1E>{<7B>+<2B>q<EFBFBD>0<>"<22>K<EFBFBD>K<EFBFBD>"<22>V<EFBFBD>H<EFBFBD> <0A>6<>"<22>K<EFBFBD>K<EFBFBD>$<24>z<EFBFBD>l<EFBFBD>:P<>(Q<>R<>"<22>K<EFBFBD>K<EFBFBD>6<EFBFBD>(<28>4<>#,<2C>"5<>"5<>(9<>'1<>.B<><<3C>.P<>5I<35>J]<5D>5^<5E>+e<> 7<1E>#<1F><1F><1F>+#<23>1C<31>1L<31>1L<31>7B<37>1E<31>2M<01>2"<22>,"<22><08> JR<01>I\<5C>I\<5C>x<EFBFBD>/B<>/B<>1<EFBFBD>/E<>bf<62> <0C>3K<01>/9<>-9<>7C<37>1E<31> 3"<22><0F>3B<01>,<2C>2O<32>9H<39>I\<5C>9]<5D>8"<22> 4<> '0<>&9<>&9<>,D<>+5<>2A<32>,<2C>2O<32>9H<39>I\<5C>9]<5D>S_<53>\<5C>5O<35>5O<35>ej<65>8;<3B>H<EFBFBD><O<><O<>8P<38>1@<40>1D<31>1D<31>[<5B>RT<52>1U<31>;"<22>'#<23>!#<23>!#<23>!'<27> <0B> <0B>v<EFBFBD>h<EFBFBD>b<EFBFBD>M<EFBFBD> :<3A>#,<2C>"5<>"5<>(9<>'1<>./<2F>56<35>-><3E>s<EFBFBD>;<3B>?O<>>P<>PX<50>+Y<> 7<1E>#<1F><1F><1F><1B>N<EFBFBD>N<EFBFBD>%Q<>S<><1D><16>'<27><1F>)<29>)<29>6<EFBFBD>6<EFBFBD>*:<3A>;<3B>;<3B>;<3B><1D><1C>-<2D><16> <0B> <0B>A<>B<><15>c<13>p <1A>$<24>$<24>Y<EFBFBD>/<2F><18><1E><1E> <20><0E> <0B> <0B>H<>I<>a/<2F> <0B>2<>@<1F>,"<22>.!#<23><>$-<2D>#<23> &<26> <0C> <0C>/W<>XY<58>WZ<57>-[<5B> \<5C>&/<2F>&9<>&9<>,3<>+5<>1M<31>c<EFBFBD>RS<52>f<EFBFBD>X<EFBFBD>/V<>;"<22>'#<23>!#<23>!#<23><>#<23><><1F><>%<25><1B><1E> <0C> <0C>'O<>PQ<50>s<EFBFBD>%S<>T<>'<27>1<>1<>$+<2B>'*<2A>1<EFBFBD>v<EFBFBD>3<1A><1B><1B><1B><><1B><><<3C><> <1F>:<3A><0E> <0B> <0B>8<>9<> <14>;<3B><0E> <0C> <0C>5<>a<EFBFBD>S<EFBFBD>9<>:<3A>:<3A><>;<3B><> <1A>$<24>$<24>Y<EFBFBD>/<2F><18><1E><1E> <20><0E> <0B> <0B>H<>I<>sL<00>R<01>L=<04>2R<01>P<00>(M<04>)P<00>M<04>A!P<00>$B=N*<00>!M<04>"N*<00>'M<00>M <04>BM<00>M <04>M<00>9P<00>:'N*<00>!N'<04>"N*<00>&3P<00>O?<04> P<00>:Q<00>;P<00>>AR<01>P<00>P<00>N*<00> M<00> M<00>
N$<03><N<03>N<06>N<03>N*<00>P<00>N$<03>$N*<00>*
O<<03>48O7<03>,O/<06>-O7<03>2P<00>7O<<03><P<00>Q<03>!Q<00>$ Q<03>-Q <03>Q<00> Q<03>Q<00>AR<03>Rr<>r<>rlrm<00>returnc<00> <00>SnSn/nURS:<3A>a#SnURSURSS35 O<>URS:<3A>a#SnURS URSS
35 OSURS :a#S nURS URSS35 O URSURSS35 URS:<3A>a#SnURSURSS35 OYURS:XaSnURS5 O5URS:XaS nURS5 OURS5 URnU(aaUSUs=::a US::aNO OKUnUn [ US-S5n[ US-S5nURSUSSUSSUSUSU SU3 5 S R S!U55n
[RS"5 [RU
5 [RS#US$U35 U(af[RS%UR35 [RS&UR35 [RS'UR35 UUU
S(.$))a$
Generate control commands for Pi based on strategy and telemetry.
Returns brake_bias and differential_slip values (0-10) with reasoning.
Logic:
- Brake bias: Adjust based on tire degradation (higher deg = more rear bias)
- Differential slip: Adjust based on pace trend and tire cliff risk
rgffffff<66>?<3F>zHigh tire degradation (z.2fu+) → Brake bias 7 (rear) to protect frontsg<73><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>zModerate tire degradation (u ) → Brake bias 6 (slight rear)g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>z Fresh tires (u-) → Brake bias 4 (front) for better turn-inzNormal tire degradation (u) → Brake bias 5 (neutral)zHigh tire cliff risk (u)) → Diff slip 7 (gentle tire treatment)<29> decliningu5Pace declining → Diff slip 6 (preserve performance)<29> improvingu7Pace improving → Diff slip 4 (aggressive, lower slip)u%Pace stable → Diff slip 5 (neutral)r<00>rgzIn pit window (laps <20>-u) → Conservative: brake u→z, diff r<>c3<00>,# <00>UH
nSU3v<00> M g7f)u • NrN)<02>.0<EFBFBD>parts r)<00> <genexpr><3E>+generate_control_command.<locals>.<genexpr>
s<00><00><00>K<>?<3F>4<EFBFBD><16><04>v<EFBFBD><EFBFBD>?<3F>s<00>zCONTROL DECISION REASONING:zFINAL COMMANDS: Brake Bias = z, Differential Slip = zTOP STRATEGY: z Risk Level: z Description: )rr r<>) <0C>tire_degradation_rater0<00>tire_cliff_risk<73>
pace_trend<EFBFBD>optimal_pit_window<6F>min<69>joinr1r2r<><00>
risk_level<EFBFBD>brief_description) r<>r<>rlrmrr <00>reasoning_parts<74>
pit_window<EFBFBD> old_brake<6B>old_diff<66>reasoning_texts r)r<>r<><00>s<00><00> <13>J<EFBFBD><19><15><18>O<EFBFBD><1A>/<2F>/<2F>#<23>5<><16>
<EFBFBD><17><1E><1E>!8<>9K<39>9a<39>9a<39>be<62>8f<38>gR<02> S<02> T<02> <1B> 1<> 1<>C<EFBFBD> 7<><16>
<EFBFBD><17><1E><1E>!<<3C>=O<>=e<>=e<>fi<66><j<>kK<02> L<02> M<02> <1B> 1<> 1<>C<EFBFBD> 7<><16>
<EFBFBD><17><1E><1E><1D>/A<>/W<>/W<>X[<5B>.\<5C>]J<02> K<02> L<02><17><1E><1E>!:<3A>;M<>;c<>;c<>dg<64>:h<>iE<02> F<02> G<02><1A>)<29>)<29>C<EFBFBD>/<2F><1D><19><17><1E><1E>!7<>8J<38>8Z<38>8Z<38>[^<5E>7_<37>`I<02> J<02> K<02> <1B> &<26> &<26>+<2B> 5<><1D><19><17><1E><1E>!V<>X<> <1B> &<26> &<26>+<2B> 5<><1D><19><17><1E><1E>!X<>Z<><17><1E><1E>!F<>H<>$<24>6<>6<>J<EFBFBD><11>j<EFBFBD><11>m<EFBFBD>z<EFBFBD>B<>Z<EFBFBD><01>]<5D>B<><1E> <09>$<24><08><18><1A>a<EFBFBD><1E><12>,<2C>
<EFBFBD><1F> 1<>A<EFBFBD> 5<>r<EFBFBD>:<3A><19><17><1E><1E>!5<>j<EFBFBD><11>m<EFBFBD>_<EFBFBD>A<EFBFBD>j<EFBFBD>QR<51>m<EFBFBD>_<EFBFBD>Tn<54>ox<6F>ny<6E>y|<7C>~H<02>}I<02>IP<02>QY<02>PZ<02>Z]<02>^o<02>]p<02> q<02> r<02><1A>Y<EFBFBD>Y<EFBFBD>K<>?<3F>K<>K<>N<EFBFBD> <0B>K<EFBFBD>K<EFBFBD>-<2D>/<2F>
<EFBFBD>K<EFBFBD>K<EFBFBD><0E><1F>
<EFBFBD>K<EFBFBD>K<EFBFBD>/<2F>
<EFBFBD>|<7C>;Q<>Rc<52>Qd<51>e<>f<><10><0E> <0B> <0B>n<EFBFBD>X<EFBFBD>%;<3B>%;<3B>$<<3C>=<3D>><3E><0E> <0B> <0B>n<EFBFBD>X<EFBFBD>%8<>%8<>$9<>:<3A>;<3B><0E> <0B> <0B>o<EFBFBD>h<EFBFBD>&@<40>&@<40>%A<>B<>C<>!<21>.<2E>#<23> <06>r,<00>__main__zmain:app)<03>host<73>port<72>reload)ArK<00>fastapirrrrr<00>fastapi.middleware.corsr<00>
contextlibr <00>logging<6E>asyncio<69>random<6F>typingr
r r <00>configr <00>models.input_modelsrrrr<00>models.output_modelsrr<00>services.strategy_generatorr<00>services.telemetry_clientr<00>utils.telemetry_bufferr<00> basicConfig<69>INFO<46> getLoggerrGr1r<00>__annotations__rrrr!rL<00>intr#r<>rUrO<00>add_middlewarer<65>rd<00>postr<74>r<>r-r<>r<><00>uvicornrT<00>run<75>ai_service_hostrQrNr,r)<00><module>r<>sQ<00><01><04> S<01>R<>2<>*<2A><0E><0E> <0A>"<22>"<22><1F><02><02><02>
2025-10-18 23:56:53 -05:00
:<3A>5<>2<><08><13><13>
2025-10-18 22:36:20 -05:00
<11>,<2C>,<2C> A<><02>
<11> <1A> <1A>8<EFBFBD> $<24><06>%)<29><10>/<2F>(<28>(,<2C><12>%<25>,<2C>$(<28><10>/<2F>(<28>$(<28><14>k<EFBFBD>(<28>67<36>a<EFBFBD>'P<><14>d<EFBFBD>3<EFBFBD><03>8<EFBFBD>n<EFBFBD>P<>C<01>C<01>6&<26>'<27><11><15>7<><07>7<><15>7<>0<0E>
2025-10-18 22:36:20 -05:00
$<24>Y<> <13> <15> <02><03><04><12><12><12><16>%<25><1A><16>%<25><16>%<25> <13><02><05><17><17><1D>~<7E><17>6<> <06>7<> <06><05><18><18>
<20>!<21>>
<EFBFBD>*F<>>
<EFBFBD>"<22>>
<EFBFBD>B<05><18><18>
2025-10-18 22:36:20 -05:00
$<24>5G<35><18>H<>+
<EFBFBD>):<3A>+
<EFBFBD>I<01>+
<EFBFBD>`/<04>d<05><1D><1D>x<EFBFBD><18>[J<01>9<EFBFBD>[J<01><19>[J<01>|P<06><13>P<06><11>P<06>1<>P<06><1E> P<06>

<EFBFBD>#<23>s<EFBFBD>(<28>^<5E> P<06>f <0C>z<EFBFBD><19><12><1B>~<7E>H<EFBFBD> <0B>K<EFBFBD>K<EFBFBD><12> <15> %<25> %<25> <15> %<25> %<25><13> <06>r,