Files
timmy-config/wizards/allegro-primus/capabilities/__pycache__/advertise.cpython-312.pyc

107 lines
20 KiB
Plaintext
Raw Normal View History

2026-03-31 20:02:01 +00:00
<EFBFBD>
d <0C>i<EFBFBD><<00><01><><00>UdZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl
m Z ddl m Z mZmZmZmZddlmZmZddlmZddlmZmZmZmZdd lmZmZdd
lmZm Z m!Z!ejDejFd <0B> <0C>ejHd <0A>Z%Gd<0E>de<15>Z&e Gd<10>d<11><00>Z'Gd<12>d<13>Z(da)de*d<d/d0d<16>Z+ d1 d2d<17>Z,d<18>Z-d<19>Z.e/dk(<00>re.<2E>e,dd<1C><1D>Z0ddlmZmZed<1C>Z1e1jeedejfd d!<21>"<22><00>e0jid#<23><00>e0jkd$<24><00>e6d%ejne0jq<00>d&<26>'<27><00>e0jsd(<28>Z:e6d)ejne:d&<26>'<27>dd*d+z<00>e6d,<2C>e jvd-<2D>e6d.ejne0jq<00>d&<26>'<27><00>e-<2D>yy)3z<33>
AP Capability Auto-Advertisement
Handles automatic advertisement of capabilities to father on startup
and periodic capability updates.
<EFBFBD>)<01> annotationsN)<01> dataclass)<05>Dict<63>List<73>Optional<61>Any<6E>Callable)<02>datetime<6D> timedelta)<01>Enum)<04>CapabilityRegistry<72>
Capability<EFBFBD> get_registry<72>CapabilityType)<02> AgentManifest<73>get_default_manifest)<03>CapabilityServer<65>
get_server<EFBFBD> AgentStatusz4%(asctime)s - %(name)s - %(levelname)s - %(message)s)<02>level<65>formatz ap-advertisec<01>,<00>eZdZdZdZdZdZdZdZdZ dZ
y )
<EFBFBD>AdvertiseStatez"State of the advertisement system.<2E>idle<6C> initializing<6E> registering<6E> advertising<6E>updating<6E>error<6F>stoppedN) <0B>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__<5F>IDLE<4C> INITIALIZING<4E> REGISTERING<4E> ADVERTISING<4E>UPDATING<4E>ERROR<4F>STOPPED<45><00><00>6/root/wizards/allegro-primus/capabilities/advertise.pyrr$s(<00><00>,<2C> <11>D<EFBFBD>!<21>L<EFBFBD><1F>K<EFBFBD><1F>K<EFBFBD><19>H<EFBFBD> <13>E<EFBFBD><17>Gr-rc<01><><00>eZdZUdZdZded<dZded<dZd ed
<dZd ed <d Z d ed<dZ
d ed<dZ d ed<dZ d ed<dZ ded<dZd ed<dZd ed<dZd ed<dZd ed<y)<1D>AdvertiseConfigz'Configuration for advertisement system.<2E>allegro-primus<75>str<74>agent_idN<64> Optional[str]<5D>father_endpointT<74>bool<6F> auto_register<65>auto_advertiseg<00>?<3F>float<61> startup_delaygN@<40>advertise_intervalg<00>r@<40>update_intervalg>@<40>heartbeat_interval<61><00>int<6E> max_retries<65>@<40> retry_delay<61>enable_heartbeat<61>enable_periodic_updates<65>update_on_capability_change)r!r"r#r$r3<00>__annotations__r5r7r8r:r;r<r=r@rBrCrDrEr,r-r.r0r0/s<><00><00>1<>$<24>H<EFBFBD>c<EFBFBD>$<24>%)<29>O<EFBFBD>]<5D>)<29><1E>M<EFBFBD>4<EFBFBD><1E><1F>N<EFBFBD>D<EFBFBD><1F><1F>M<EFBFBD>5<EFBFBD><1E> $<24><16><05>$<24>"<22>O<EFBFBD>U<EFBFBD>"<22> $<24><16><05>$<24><19>K<EFBFBD><13><18><1C>K<EFBFBD><15><1C>"<22><14>d<EFBFBD>!<21>$(<28><1B>T<EFBFBD>(<28>(,<2C><1F><14>,r-r0c<01><><00>eZdZdZddd<03>Zdd<04>Zd<05>Zd<06>Zd<07>Zdd<08>Z d <09>Z
d
<EFBFBD>Z dd <0B>Z dd <0C>Z dd <0A>Zdd<0E>Zdd<0F>Zdd<10>Zdd<11>Zd<12>Zy)<1B>AutoAdvertiserz<72>
Automatic capability advertisement system.
Handles:
- Startup registration with father
- Periodic capability advertisements
- Heartbeat maintenance
- Capability change notifications
Nc<01><00>|xs
t<00>|_tj|_d|_d|_d|_d|_tj<00>|_ g|_ g|_ g|_dddddd<02>|_d|_y)Nr)<05>advertisements_sent<6E>advertisements_successful<75>last_advertisement<6E> last_update<74>errors)r0<00>configrr%<00>state<74>registry<72>server<65>_advertise_thread<61>_update_thread<61> threading<6E>Event<6E> _stop_event<6E> _on_register<65> _on_advertise<73>_on_capability_request<73>_stats<74>_last_capability_hash)<02>selfrOs r.<00>__init__zAutoAdvertiser.__init__Rs<><00><00><1C>1<><0F> 1<><04> <0B>#<23>(<28>(<28><04>
<EFBFBD>7;<3B><04> <0A>26<32><04> <0B>>B<01><04><1E>:><3E><04><1B>$<24>?<3F>?<3F>,<2C><04><18>;=<3D><04><19>;=<3D><04><1A>MO<4D><04>#<23>$%<25>)*<2A>"&<26><1F><17> 
<EFBFBD><04> <0B>59<35><04>"r-c<01>D<00>|jtjtjfvr#tj d|j<00><00><02>ytj |_tjd<03> t|jj<00>|_ t|jj|jj<00>|_|jj<00>t!j"|jj$<00>|jj&r&|jjr|j)<00>|jj*r<>|j,j/<00>t1j2|j4d<04><05>|_|j6j<00>|jj8r@t1j2|j:d<04><05>|_|j<j<00>tj>|_tjd<06>y#t@$rN}tjB|_tjEd|<01><00><02>|jFdxxd z cc<Yd
}~yd
}~wwxYw) zy
Start the auto-advertisement system.
Returns:
True if started successfully
zCannot start from state: Fz%Starting auto-advertisement system...T)<02>target<65>daemonz.Auto-advertisement system started successfullyz$Failed to start auto-advertisement: rN<00>N)$rPrr%r+<00>logger<65>warningr&<00>inforrOr3rQrr5rR<00>start<72>time<6D>sleepr:r7<00>_do_registrationr8rW<00>clearrU<00>Thread<61>_advertise_looprSrD<00> _update_looprTr(<00> Exceptionr*rr[<00>r]<00>es r.rfzAutoAdvertiser.startps<><00><00> <10>:<3A>:<3A>n<EFBFBD>1<>1<>><3E>3I<33>3I<33>J<> J<> <12>N<EFBFBD>N<EFBFBD>6<>t<EFBFBD>z<EFBFBD>z<EFBFBD>l<EFBFBD>C<> D<><18>#<23>0<>0<><04>
<EFBFBD><0E> <0B> <0B>;<3B><<3C>+ <19>(<28><14><1B><1B>)=<3D>)=<3D>><3E>D<EFBFBD>M<EFBFBD>%<25><14> <0B> <0B>$<24>$<24><14> <0B> <0B>+<2B>+<2B><0E>D<EFBFBD>K<EFBFBD> <11>K<EFBFBD>K<EFBFBD> <1D> <1D> <1F> <11>J<EFBFBD>J<EFBFBD>t<EFBFBD>{<7B>{<7B>0<>0<> 1<><14>{<7B>{<7B>(<28>(<28>T<EFBFBD>[<5B>[<5B>-H<>-H<><14>%<25>%<25>'<27><14>{<7B>{<7B>)<29>)<29><14> <20> <20>&<26>&<26>(<28>)2<>)9<>)9<><1F>/<2F>/<2F><1F>*<12><04>&<26><15>&<26>&<26>,<2C>,<2C>.<2E><18>;<3B>;<3B>6<>6<>*3<>*:<3A>*:<3A>#<23>0<>0<>#<23>+<16>D<EFBFBD>'<27><19>'<27>'<27>-<2D>-<2D>/<2F>'<27>3<>3<>D<EFBFBD>J<EFBFBD> <12>K<EFBFBD>K<EFBFBD>H<> I<><17><><18> <19>'<27>-<2D>-<2D>D<EFBFBD>J<EFBFBD> <12>L<EFBFBD>L<EFBFBD>?<3F><01>s<EFBFBD>C<> D<> <10>K<EFBFBD>K<EFBFBD><08> !<21>Q<EFBFBD> &<26> !<21><18><>  <19>s<00>;G I<00> J<03>AJ<03>Jc<01>
<00>tjd<01>tj|_|j
j <00>|jr|jj<00>|jr6|jj<00>r|jjd<02><03>|jr6|jj<00>r|jjd<02><03>tjd<04>y)z#Stop the auto-advertisement system.z%Stopping auto-advertisement system...rA)<01>timeoutz!Auto-advertisement system stoppedN) rcrerr+rPrW<00>setrR<00>stoprS<00>is_alive<76>joinrT<00>r]s r.rtzAutoAdvertiser.stop<6F>s<><00><00><0E> <0B> <0B>;<3B><<3C>#<23>+<2B>+<2B><04>
<EFBFBD> <0C><18><18><1C><1C><1E> <0F>;<3B>;<3B> <10>K<EFBFBD>K<EFBFBD> <1C> <1C> <1E> <10> !<21> !<21>d<EFBFBD>&<<3C>&<<3C>&E<>&E<>&G<> <10> "<22> "<22> '<27> '<27><03> '<27> 4<> <0F> <1E> <1E>4<EFBFBD>#6<>#6<>#?<3F>#?<3F>#A<> <10> <1F> <1F> $<24> $<24>S<EFBFBD> $<24> 1<><0E> <0B> <0B>7<>8r-c<01>n<00>tj|_tj d|j
j <00><00><02>t|j
j<00>D]<5D>} |jj<00>}|jD] } ||<02><00> |r.tj d<04>|jdxxdz cc<ytjd|dz<00>d <09><03> ||j
jdz
ks<01><>t!j"|j
j$<00><00><>tjd <0C>y #t$r"}tjd|<04><00><02>Yd}~<04><>d}~wwxYw#t$r9}tjd
|<04><00><02>|jd xxdz cc<Yd}~<04><>d}~wwxYw)z)Perform initial registration with father.zRegistering with father: zRegister callback error: NzRegistration successfulrKrbTzRegistration attempt z failedzRegistration error: rNz%Registration failed after all retriesF)rr'rPrcrerOr5<00>ranger@rR<00>advertise_to_fatherrXrnrr[rdrgrhrB)r]<00>attempt<70>success<73>callbackrps r.rizAutoAdvertiser._do_registration<6F>st<00><00>#<23>/<2F>/<2F><04>
<EFBFBD><0E> <0B> <0B>/<2F><04> <0B> <0B>0K<30>0K<30>/L<>M<>N<><1C>T<EFBFBD>[<5B>[<5B>4<>4<>5<> 4<>G<EFBFBD> +<2B><1E>+<2B>+<2B>9<>9<>;<3B><07> $<24> 1<> 1<>F<01>H<EFBFBD>F<01> <20><17>)<29>F<01> <1B><1A>K<EFBFBD>K<EFBFBD> 9<>:<3A><18>K<EFBFBD>K<EFBFBD> ;<3B><<3C><01>A<><<3C><1F><1A>N<EFBFBD>N<EFBFBD>%:<3A>7<EFBFBD>Q<EFBFBD>;<3B>-<2D>w<EFBFBD>#O<>P<> <17><14><1B><1B>0<>0<>1<EFBFBD>4<>4<><14>
<EFBFBD>
<EFBFBD>4<EFBFBD>;<3B>;<3B>2<>2<>3<>- 4<>0 <0F> <0C> <0C><<3C>=<3D><14><>%%<25>F<01><1E> <0C> <0C>'@<40><11><03>%D<>E<>E<><45>F<01><><1D> +<2B><16> <0C> <0C>3<>A<EFBFBD>3<EFBFBD>7<>8<><14> <0B> <0B>H<EFBFBD>%<25><11>*<2A>%<25>%<25><> +<2B>sH<00>%)E2<02>E<04>0E2<02> E2<02> E/<07> E*<07>%E2<02>*E/<07>/E2<02>2 F4<05>;/F/<05>/F4c<01><00>tjd<01>|jj<00>s\ |j <00>|jj |j j<00>|jj<00>s<01>[yy#t$rh}tjd|<01><00><02>|jdxxdz cc<|jj |j j<00>Yd}~<01><>d}~wwxYw)zMain advertisement loop.zAdvertisement loop startedzAdvertisement loop error: rNrbN) rcrerW<00>is_set<65>_do_advertisement<6E>waitrOr;rnrr[rBros r.rlzAutoAdvertiser._advertise_loop<6F>s<><00><00><0E> <0B> <0B>0<>1<><16>"<22>"<22>)<29>)<29>+<2B> ?<3F><14>&<26>&<26>(<28><15> <20> <20>%<25>%<25>d<EFBFBD>k<EFBFBD>k<EFBFBD>&D<>&D<>E<> <17>"<22>"<22>)<29>)<29>+<2B><><1D> ?<3F><16> <0C> <0C>9<>!<21><13>=<3D>><3E><14> <0B> <0B>H<EFBFBD>%<25><11>*<2A>%<25><14> <20> <20>%<25>%<25>d<EFBFBD>k<EFBFBD>k<EFBFBD>&=<3D>&=<3D>><3E>><3E><> ?<3F>s<00>?B <00> C><03>AC9<03>9C>c<01><><00>|jjsytj|_ |j
j <00>}|jdxxdz cc<tj<00>j<00>|jd<|r-|jdxxdz cc<tjd<06>ntjd<07>|jD] } ||<01><00> |S#t$r"}tj!d|<03><00><02>Yd }~<03>6d }~wwxYw#t$r9}tj!d
|<03><00><02>|jd xxdz cc<Yd }~yd }~wwxYw) zSend capability advertisement.FrJrbrLrKzAdvertisement sent successfullyzAdvertisement failedzAdvertise callback error: NzAdvertisement error: rN)rOr5rr(rPrRrzr[r
<00>utcnow<6F> isoformatrc<00>debugrdrYrnr)r]r|r}rps r.r<>z AutoAdvertiser._do_advertisement<6E>s/<00><00><13>{<7B>{<7B>*<2A>*<2A><18>#<23>/<2F>/<2F><04>
<EFBFBD> <19><1A>k<EFBFBD>k<EFBFBD>5<>5<>7<>G<EFBFBD> <10>K<EFBFBD>K<EFBFBD>-<2D> .<2E>!<21> 3<> .<2E>08<30><0F><0F>0A<30>0K<30>0K<30>0M<30>D<EFBFBD>K<EFBFBD>K<EFBFBD>,<2C> -<2D><16><14> <0B> <0B>7<>8<>A<EFBFBD>=<3D>8<><16> <0C> <0C>><3E>?<3F><16><0E><0E>5<>6<> <20>.<2E>.<2E> C<01><08>C<01><1C>W<EFBFBD>%<25> C<01> <1B>N<EFBFBD><4E>!<21>C<01><1A>L<EFBFBD>L<EFBFBD>#=<3D>a<EFBFBD>S<EFBFBD>!A<>B<>B<><42>C<01><>
<19> <19> <12>L<EFBFBD>L<EFBFBD>0<><11><03>4<> 5<> <10>K<EFBFBD>K<EFBFBD><08> !<21>Q<EFBFBD> &<26> !<21><18><> <19>sB<00>B3D<00>"C.<02>*D<00>. D<05>7D<05>D<00>D<05>D<00> E<03>%/E<03>Ec<01>^<00>tjd<01>|jj<00>s<> |jj
r|j <00>tj<00>j<00>|jd<|jj|jj<00>|jj<00>s<01><>yy#t$rQ}tjd|<01><00><02>|jj|jj<00>Yd}~<01>rd}~wwxYw)z Periodic capability update loop.zUpdate loop startedrMzUpdate loop error: N)rcrerWrrOrE<00>_check_capability_changesr
r<>r<>r[r<>r<rnrrBros r.rmzAutoAdvertiser._update_loop s<><00><00><0E> <0B> <0B>)<29>*<2A><16>"<22>"<22>)<29>)<29>+<2B> ?<3F><17>;<3B>;<3B>:<3A>:<3A><18>2<>2<>4<>-5<>_<EFBFBD>_<EFBFBD>-><3E>-H<>-H<>-J<><04> <0B> <0B>M<EFBFBD>*<2A><15> <20> <20>%<25>%<25>d<EFBFBD>k<EFBFBD>k<EFBFBD>&A<>&A<>B<><17>"<22>"<22>)<29>)<29>+<2B><><1D> ?<3F><16> <0C> <0C>2<>1<EFBFBD>#<23>6<>7<><14> <20> <20>%<25>%<25>d<EFBFBD>k<EFBFBD>k<EFBFBD>&=<3D>&=<3D>><3E>><3E><> ?<3F>s<00>BC<00> D,<03>AD'<03>'D,c<01><><00>|jsy|j<00>}||jk7r-tj d<02>||_|j <00>yy)z;Check if capabilities have changed and advertise if needed.Nz+Capability changes detected, sending update)rQ<00>_compute_capability_hashr\rcrer<>)r]<00> current_hashs r.r<>z(AutoAdvertiser._check_capability_changes sP<00><00><13>}<7D>}<7D> <12><1C>4<>4<>6<> <0C> <17>4<EFBFBD>5<>5<> 5<> <12>K<EFBFBD>K<EFBFBD>E<> F<>)5<>D<EFBFBD> &<26> <10> "<22> "<22> $<24> 6r-c<01><><00>|jsy|jj<00>}ttj|d<02><03><00>S)z%Compute hash of current capabilities.<2E>T)<01> sort_keys)rQ<00>export<72>hash<73>json<6F>dumps)r]<00>capss r.r<>z'AutoAdvertiser._compute_capability_hash-s4<00><00><13>}<7D>}<7D><15><13>}<7D>}<7D>#<23>#<23>%<25><04><13>D<EFBFBD>J<EFBFBD>J<EFBFBD>t<EFBFBD>t<EFBFBD>4<>5<>5r-c<01><><00>tjd|<01><00><02>|jD]} ||<01>}|r|cS<00>|j
j tj<00>j<00>t<00>j<00>|jr|jj<00>d<04>Sid<04>S#t$r"}tj d|<04><00><02>Yd}~<04><>d}~wwxYw)z<>
Handle a capability request from another agent.
Args:
requester_id: ID of the requesting agent
Returns:
Capability information
z"Handling capability request from: z#Capability request callback error: N)r3<00> timestamp<6D>manifest<73> capabilities)rcrerZrnrrOr3r
r<>r<>r<00>to_dictrQr<>)r]<00> requester_idr}<00>resultrps r.<00>handle_capability_requestz(AutoAdvertiser.handle_capability_request5s<><00><00> <0F> <0B> <0B>8<><1C><0E>G<>H<><1D>3<>3<> H<01>H<EFBFBD> H<01>!<21>,<2C>/<2F><06><19>!<21>M<EFBFBD><1A> H<01><1D> <0B> <0B>,<2C>,<2C>!<21><1F><1F>*<2A>4<>4<>6<>,<2C>.<2E>6<>6<>8<>6:<3A>m<EFBFBD>m<EFBFBD>D<EFBFBD>M<EFBFBD>M<EFBFBD>0<>0<>2<> 
<EFBFBD>
<EFBFBD>JL<01> 
<EFBFBD>
<EFBFBD><EFBFBD> <1D> H<01><16> <0C> <0C>B<>1<EFBFBD>#<23>F<>G<>G<><47> H<01>s<00> B2<02>2 C<05>;C<05>Cc<01>L<00>tjd<01>|j<00>S)zForce immediate advertisement.zForcing immediate advertisement)rcrer<>rws r.<00>force_advertisementz"AutoAdvertiser.force_advertisementRs<00><00><0E> <0B> <0B>5<>6<><13>%<25>%<25>'<27>'r-c<01>:<00>|jj|<01>y)z*Register callback for registration events.N)rX<00>append<6E>r]r}s r.<00> on_registerzAutoAdvertiser.on_registerWs<00><00> <0C><19><19> <20> <20><18>*r-c<01>:<00>|jj|<01>y)z+Register callback for advertisement events.N)rYr<>r<>s r.<00> on_advertisezAutoAdvertiser.on_advertise[s<00><00> <0C><1A><1A>!<21>!<21>(<28>+r-c<01>:<00>|jj|<01>y)z*Register callback for capability requests.N)rZr<>r<>s r.<00>on_capability_requestz$AutoAdvertiser.on_capability_request_s<00><00> <0C>#<23>#<23>*<2A>*<2A>8<EFBFBD>4r-c<01><><00>i|j<00>|jj|jj|jj
|jt jt jfvd<01><04>S)zGet advertisement statistics.)rPr3r5<00>
is_running) r[rP<00>valuerOr3r5rr%r+rws r.<00> get_statszAutoAdvertiser.get_statscsa<00><00>
<EFBFBD><12>k<EFBFBD>k<EFBFBD>
<EFBFBD><19>Z<EFBFBD>Z<EFBFBD>%<25>%<25><1C> <0B> <0B>,<2C>,<2C>#<23>{<7B>{<7B>:<3A>:<3A><1E>*<2A>*<2A>^<5E>-@<40>-@<40>.<2E>BX<42>BX<42>,Y<>Y<> 
<EFBFBD>
r-c <01><><00>|j<00>D]N\}}t|j|<02>s<01>t|j||<03>tj d|<02>d|<03><00><04><00>Py)zUpdate configuration.zUpdated config: z = N)<06>items<6D>hasattrrO<00>setattrrcre)r]<00>kwargs<67>keyr<79>s r.<00> update_configzAutoAdvertiser.update_configmsU<00><00> <20>,<2C>,<2C>.<2E> @<01>J<EFBFBD>C<EFBFBD><15><16>t<EFBFBD>{<7B>{<7B>C<EFBFBD>(<28><17><04> <0B> <0B>S<EFBFBD>%<25>0<><16> <0B> <0B>.<2E>s<EFBFBD>e<EFBFBD>3<EFBFBD>u<EFBFBD>g<EFBFBD>><3E>?<3F> @r-<00>N)rO<00>Optional[AdvertiseConfig])<02>returnr6)r<>r2)r<>r2r<><00>Dict[str, Any])r}zCallable[[bool], None])r}zCallable[[str], Dict[str, Any]])r<>r<>)r!r"r#r$r^rfrtrirlr<>rmr<>r<>r<>r<>r<>r<>r<>r<>r<>r,r-r.rHrHGs[<00><00><08>9<><9<19>v9<>$<15>@?<3F> <19>@?<3F>& %<25>6<>
<EFBFBD>:(<28>
+<2B>,<2C>5<>
<EFBFBD>@r-rHzOptional[AutoAdvertiser]<5D>_advertiser_instancec<01>0<00>t<00> t|<00>atS)z-Get or create the global advertiser instance.)r<>rH)rOs r.<00>get_advertiserr<72>ys<00><00><1C>#<23>-<2D>f<EFBFBD>5<><1C> <1F>r-c<01>Z<00>t||dd<01><02>}t|<02>}|j<00>|S)z<>
Start advertising with default configuration.
Args:
father_endpoint: URL of father agent
agent_id: ID for this agent
Returns:
AutoAdvertiser instance
T)r3r5r7r8)r0r<>rf)r5r3rO<00>
advertisers r.<00>start_advertisingr<67><00>s8<00><00><1D><19>'<27><1A><1B> <06>F<EFBFBD> <20><06>'<27>J<EFBFBD><0E><14><14><16> <15>r-c<01>><00>trtj<00>dayy)zStop the global advertiser.N)r<>rtr,r-r.<00>stop_advertisingr<67><00>s<00><00><1C><1C>!<21>!<21>#<23>#<23><1C>r-c<01><><00>d<01>}tjtj|<00>tjtj|<00>y)z#Setup graceful shutdown on signals.c<01>t<00>tjd|<00>d<02><03>t<00>tjd<03>y)NzReceived signal z, shutting down...r)rcrer<><00>sys<79>exit)<02>signum<75>frames r.<00>signal_handlerz-setup_signal_handlers.<locals>.signal_handler<65>s*<00><00><0E> <0B> <0B>&<26>v<EFBFBD>h<EFBFBD>.@<40>A<>B<><18><1A> <0B><08><08><11> r-N)<03>signal<61>SIGINT<4E>SIGTERM)r<>s r.<00>setup_signal_handlersr<73><00>s-<00><00><14>
 <0B>M<EFBFBD>M<EFBFBD>&<26>-<2D>-<2D><1E>0<>
<EFBFBD>M<EFBFBD>M<EFBFBD>&<26>.<2E>.<2E>.<2E>1r-<00>__main__zhttp://localhost:8080zap-demo)r5r3)rr<00>
demo_skillz1.0.0zDemo capability for testing)<04>name<6D>type<70>version<6F> descriptionc<01><00>td|<00><00><02>S)NzRegister callback: <20><01>print<6E>r|s r.<00><lambda>r<><00>s<00><00>5<EFBFBD>3F<33>w<EFBFBD>i<EFBFBD>1P<31>+Q<>r-c<01><00>td|<00><00><02>S)NzAdvertise callback: r<>r<>s r.r<>r<><00>s<00><00>E<EFBFBD>4H<34><17> <09>2R<32>,S<>r-z
Advertiser stats:<3A>)<01>indentztest-requesterz
Capability response:i<>z...z
Running for 10 seconds...<2E>
z
Final stats:r<>)rOr<>r<>rH)Nr1)r5r4r3r2r<>rH)<r$<00>
__future__r<00>asyncior<6F><00>loggingr<67>r<>rUrg<00> dataclassesr<00>typingrrrrr r
r <00>enumr <00> discoveryr rrrr<>rr<00>registry_serverrrr<00> basicConfig<69>INFO<46> getLoggerrcrr0rHr<>rFr<>r<>r<>r<>r!r<>rQ<00>register<65>SKILLr<4C>r<>r<>r<>r<>r<><00>responserhr,r-r.<00><module>r<>s<><00><01><04>#<23><0E> <0B><0E> <0A>
<EFBFBD><10> <0B>!<21>6<>6<>(<28><15>R<>R<>8<>E<>E<><14><07><13><13>
<11>,<2C>,<2C> A<><02>
<1B><17> <1A> <1A>><3E> *<2A><06><18>T<EFBFBD><18> <0B>-<2D>-<2D> <0B>-<2D>.k@<01>k@<01>^ 26<32><14>.<2E>5<> <20>&*<2A>$<24><16>"<22><16><11><16><14><16>6$<24>2<> <0C>z<EFBFBD><19><19><1B>#<23>/<2F><1A><06>J<EFBFBD> 5<><1B>I<EFBFBD>&<26>H<EFBFBD> <0C><15><15>j<EFBFBD> <19> <1B> !<21> !<21><17>1<> <06><07><0F><1A><1A>Q<>R<><0E><1B><1B>S<>T<> <09>
<1F><1A><14><1A><1A>J<EFBFBD>,@<40>,@<40>,B<>1<EFBFBD>!M<>N<><1A>3<>3<>4D<34>E<>H<EFBFBD> <09>
"<22>J<EFBFBD>D<EFBFBD>J<EFBFBD>J<EFBFBD>x<EFBFBD><01>$B<>4<EFBFBD>C<EFBFBD>$H<>5<EFBFBD>$P<>Q<>
<EFBFBD>
'<27>(<28><0E>D<EFBFBD>J<EFBFBD>J<EFBFBD>r<EFBFBD>N<EFBFBD> <09>
<1A>J<EFBFBD>D<EFBFBD>J<EFBFBD>J<EFBFBD>z<EFBFBD>';<3B>';<3B>'=<3D>a<EFBFBD>H<>I<><14><16>Kr-