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

131 lines
22 KiB
Plaintext
Raw Normal View History

2026-03-31 20:02:01 +00:00
<EFBFBD>
<07>i<EFBFBD>9<00><00><00>dZddlZddlZddlZddlmZmZddlmZddlm Z m
Z
m Z m Z ddl mZmZddlmZddlZed<08>Zed z Zed
z Zed z ZeGd <0C>d <0A><00>ZeGd<0E>d<0F><00>ZGd<10>d<11>Zd<12>Zedk(re<1A>yy)zl
Allegro-Primus Self-Improvement Journal System
Logs every work cycle, tracks metrics, generates summaries.
<EFBFBD>N)<02>datetime<6D> timedelta)<01>Path)<04>Dict<63>List<73>Optional<61>Any)<02> dataclass<73>asdict)<01> defaultdictz%/root/wizards/allegro-primus/.journalz entries.jsonlz metrics.json<6F> summariesc<00><><00>eZdZUeed<eed<eed<eed<eed<eed<eeed<eeed<eeed <eee fed
<y ) <0C> JournalEntry<72> timestamp<6D>cycle_id<69>task<73>result<6C>success<73>response_time_ms<6D>lessons_learned<65>errors<72>
tools_used<EFBFBD>contextN)
<EFBFBD>__name__<5F>
__module__<EFBFBD> __qualname__<5F>str<74>__annotations__<5F>bool<6F>intrrr <00><00><00>'/root/wizards/allegro-primus/journal.pyrrsM<00><00><12>N<EFBFBD><11>M<EFBFBD>
<0A>I<EFBFBD> <0F>K<EFBFBD> <11>M<EFBFBD><19><19><19>#<23>Y<EFBFBD><1E> <10><13>I<EFBFBD><15><14>S<EFBFBD> <09><19> <11>#<23>s<EFBFBD>(<28>^<5E>r"rc<00>j<00>eZdZUeed<eed<eed<eed<eed<eed<eeed<eeed<y )
<EFBFBD> CycleMetrics<63> total_cycles<65>successful_cycles<65> failed_cycles<65>avg_response_time_ms<6D> success_rate<74> total_lessons<6E> common_errors<72> top_toolsN)rrrr r<00>floatr<00>tupler!r"r#r%r%#s:<00><00><15><15><1A><1A><16><16><1F><1F><17><17><16><16><17><05>;<3B><1E><13>E<EFBFBD>{<7B>r"r%c<00>*<00>eZdZd<01>Zd<02>Z ddededededeed eed
eed e ee
fd efd <0A>Z defd<0E>Z d e fd<0F>Z de fd<11>Zddeded eefd<14>Zd ded efd<15>Zd!deed e fd<17>Zd e fd<18>Zded efd<19>Zd"ded e fd<1A>Zdeed efd<1C>Zd defd<1D>Zy)#<23>Journalc<00><><00>tjdd<01><02>tjdd<01><02>|j<00>y)NT)<02>parents<74>exist_ok)<04> JOURNAL_DIR<49>mkdir<69> SUMMARIES_DIR<49> _ensure_files<65><01>selfs r#<00>__init__zJournal.__init__/s4<00><00><13><19><19>$<24><14><19>6<><15><1B><1B>D<EFBFBD>4<EFBFBD><1B>8<> <0C><1A><1A>r"c<00><><00>tj<00>stj<00>tj<00>s7|j dddt j <00>j<00>d<02><04>yy)zEnsure journal files exist.r)r&r'r(<00> last_updatedN)<08> JOURNAL_FILE<4C>exists<74>touch<63> METRICS_FILE<4C> _save_metricsr<00>now<6F> isoformatr9s r#r8zJournal._ensure_files4sY<00><00><1B>"<22>"<22>$<24> <18> <1E> <1E> <20><1B>"<22>"<22>$<24> <10> <1E> <1E> !<21>%&<26>!"<22> (<28> <0C> <0C><0E> 8<> 8<> :<3A>  <0E> <0F>%r"Nrrrrrrrr<00>returnc <00><00>dtj<00>jd<02><00>dtjd<04>j <00><00><00>} t tj<00>j<00>| |r|ddnd|r|ddnd|||xsg|xsg|xsg|xsi<00> <09>
}
ttd
<EFBFBD>5} | jtjt|
<EFBFBD>t<00> <0B>d z<00>ddd<05>|j|<03>| S#1swY<00>xYw) zLog a work cycle.<2E>cycle_z %Y%m%d_%H%M%S<>_<>Ni<4E><00>i<>)
rrrrrrrrrr<00>a)<01>default<6C>
)rrC<00>strftime<6D>os<6F>urandom<6F>hexrrD<00>openr><00>write<74>json<6F>dumpsr r<00>_update_metrics) r:rrrrrrrrr<00>entry<72>fs r#<00> log_cyclezJournal.log_cycle@s<><00><00><1C>H<EFBFBD>L<EFBFBD>L<EFBFBD>N<EFBFBD>3<>3<>O<EFBFBD>D<>E<>Q<EFBFBD>r<EFBFBD>z<EFBFBD>z<EFBFBD>RS<52>}<7D>GX<47>GX<47>GZ<47>F[<5B>\<5C><08><1C><1E>l<EFBFBD>l<EFBFBD>n<EFBFBD>.<2E>.<2E>0<><1D>#<23><14>d<EFBFBD>s<EFBFBD><1A><12>$*<2A>6<EFBFBD>%<25>4<EFBFBD>=<3D><02><1B>-<2D>+<2B>1<>r<EFBFBD><19><<3C>R<EFBFBD>!<21>'<27>R<EFBFBD><1B>M<EFBFBD>r<EFBFBD> 
<EFBFBD><05><12>,<2C><03> $<24> C<01><01> <0A>G<EFBFBD>G<EFBFBD>D<EFBFBD>J<EFBFBD>J<EFBFBD>v<EFBFBD>e<EFBFBD>}<7D>c<EFBFBD>:<3A>T<EFBFBD>A<> B<> C<01> <0A><1C><1C>W<EFBFBD>%<25><17><0F>  C<01> C<01>s <00>.7D<03>D c<00><00>|j<00>}|dxxdz cc<|r|dxxdz cc<n |dxxdz cc<|d|dz |d<tj<00>j<00>|d<|j |<02>y)zUpdate cumulative metrics.r&<00>r'r(r*r=N)<05> _load_metricsrrCrDrB)r:r<00>metricss r#rVzJournal._update_metricsbs<><00><00><16>$<24>$<24>&<26><07><0F><0E><1F>1<EFBFBD>$<24><1F> <12> <13>'<27> (<28>A<EFBFBD> -<2D> (<28> <13>O<EFBFBD> $<24><01> )<29> $<24>")<29>*=<3D>"><3E><17><1E>AX<41>"X<><07><0E><1F>"*<2A>,<2C>,<2C>.<2E>":<3A>":<3A>"<<3C><07><0E><1F> <0C><1A><1A>7<EFBFBD>#r"c<00>x<00>ttd<01>5}tj|<01>cddd<00>S#1swYyxYw)N<>r)rRrArT<00>load)r:rXs r#r\zJournal._load_metricsns.<00><00> <11>,<2C><03> $<24> <20><01><17>9<EFBFBD>9<EFBFBD>Q<EFBFBD><<3C> <20> <20> <20>s<00>0<03>9r]c<00>~<00>ttd<01>5}tj||d<02><03>ddd<00>y#1swYyxYw)N<>w<><00><01>indent)rRrArT<00>dump)r:r]rXs r#rBzJournal._save_metricsrs3<00><00> <11>,<2C><03> $<24> ,<2C><01> <10>I<EFBFBD>I<EFBFBD>g<EFBFBD>q<EFBFBD><11> +<2B> ,<2C> ,<2C> ,<2C>s<00>3<03><<07>days<79> success_onlyc <00><00>g}tj<00>t|<01><01>z
}tj <00>s|St td<02>5}|D]x}|j <00>}|s<01> tj|<06>}tj|d<00>}||kr<01>J|r|jdd<05>s<01>_|jtdi|<07><01><01><00>z ddd<06>|S#tjttf$rY<00><>wxYw#1swY|SxYw)z%Get journal entries from last N days.<2E>rgr_rrTNr!)rrCrr>r?rR<00>striprT<00>loads<64> fromisoformat<61>get<65>appendr<00>JSONDecodeError<6F>KeyError<6F>
ValueError) r:rgrh<00>entries<65>cutoffrX<00>line<6E>data<74>
entry_times r#<00> get_entrieszJournal.get_entriesvs<><00><00><14><07><19><1C><1C><1E>)<29><14>"6<>6<><06><1B>"<22>"<22>$<24><1A>N<EFBFBD> <11>,<2C><03> $<24> <1D><01><19> <1D><04><1B>z<EFBFBD>z<EFBFBD>|<7C><04><1B><1C> <1D><1F>:<3A>:<3A>d<EFBFBD>+<2B>D<EFBFBD>!)<29>!7<>!7<><04>[<5B>8I<38>!J<>J<EFBFBD>!<21>F<EFBFBD>*<2A> <20>#<23>D<EFBFBD>H<EFBFBD>H<EFBFBD>Y<EFBFBD><04>,E<> <20><1B>N<EFBFBD>N<EFBFBD><<3C>#7<>$<24>#7<>8<> <1D> <1D> <17><0E><><1D>,<2C>,<2C>h<EFBFBD>
<EFBFBD>C<><1D><1C><1D><> <1D> <17><0E>sH<00>
C7<03>$2C<04>C7<03>C<04>+C7<03>,C<04>C7<03>C4<07>1C7<03>3C4<07>4C7<03>7Dc
<00><><00>|j|<01><01>}|stddddddgg<00>S|D<00>cgc]}|jdkDs<01>|j<00><02> }}td<04>|D<00><00>}t t
<00>}|D]#}|j D]}||ddxxdz cc<<00><00>%t|j<00>d<08>d <09>
<EFBFBD>dd }t t
<00>} |D] }|jD]}
| |
xxdz cc<<00><00>"t| j<00>d <0C>d <09>
<EFBFBD>dd } td <0A>|D<00><00>} tt|<02>|t|<02>|z
|rtj|<04>nd|t|<02>z | || <0B><0E>Scc}w)z'Calculate metrics for specified period.rjrgc3<00>:K<00>|]}|js<01>d<00><01><00>y<01>w<01>r[N<>r<00><02>.0<EFBFBD>es r#<00> <genexpr>z,Journal.calculate_metrics.<locals>.<genexpr><3E>s<00><00><><00><<3C>!<21>!<21>)<29>)<29>A<EFBFBD><<3C><><00><01>N<>dr[c<00> <00>|dS<00>Nr[r!<00><01>xs r#<00><lambda>z+Journal.calculate_metrics.<locals>.<lambda><3E>s
<00><00>1<EFBFBD>Q<EFBFBD>4<EFBFBD>r"T<><02>key<65>reverse<73>c<00> <00>|dSr<>r!r<>s r#r<>z+Journal.calculate_metrics.<locals>.<lambda><3E><00>
<00><00>a<EFBFBD><01>d<EFBFBD>r"c3<00>FK<00>|]}t|j<00><00><01><00>y<00>w<01>N)<02>lenrr}s r#r<>z,Journal.calculate_metrics.<locals>.<genexpr><3E>s<00><00><><00>D<>q<EFBFBD>C<EFBFBD><01> 1<> 1<>2<>D<>s<00>!)r&r'r(r)r*r+r,r-) rxr%r<00>sumr r r<00>sorted<65>itemsrr<><00>
statistics<EFBFBD>mean) r:rgrsr<00>response_times<65> success_count<6E> error_counts<74>errr,<00> tool_counts<74>toolr-r+s r#<00>calculate_metricszJournal.calculate_metrics<63>s<><00><00><16>"<22>"<22><04>"<22>-<2D><07><16><1F><01>1<EFBFBD>a<EFBFBD><13>c<EFBFBD>1<EFBFBD>b<EFBFBD>"<22>=<3D> =<3D>6=<3D>X<><11><11>AS<41>AS<41>VW<56>AW<41>!<21>,<2C>,<2C>X<><0E>X<><1B><<3C>w<EFBFBD><<3C><<3C> <0A>#<23>3<EFBFBD>'<27> <0C><18> -<2D>A<EFBFBD><18>x<EFBFBD>x<EFBFBD> -<2D><03><1C>S<EFBFBD><14>#<23>Y<EFBFBD>'<27>1<EFBFBD>,<2C>'<27> -<2D> -<2D><1F>|<7C>1<>1<>3<><1E>QU<51>V<>WY<57>XY<58>Z<> <0A>"<22>#<23>&<26> <0B><18> '<27>A<EFBFBD><19> <0C> <0C> '<27><04><1B>D<EFBFBD>!<21>Q<EFBFBD>&<26>!<21> '<27> '<27><1B>;<3B>,<2C>,<2C>.<2E>N<EFBFBD>D<EFBFBD>Q<>RT<52>ST<53>U<> <09><1C>D<>G<EFBFBD>D<>D<> <0A><1B><1C>W<EFBFBD><1C>+<2B><1D>g<EFBFBD>,<2C><1D>6<>DR<44><1A><1F><1F><1E>!@<40>XY<58>&<26><13>W<EFBFBD><1C>5<>'<27>'<27><1F> 
<EFBFBD>
<EFBFBD><EFBFBD>)Ys <00>E*<04>E*<04>datec <00>@<00>|<01>tj<00>}|jdddd<02><03>}|td<04><05>z}|j d<04><05>}|D<00>cgc]0}|tj
|j <00>cxkr|ks<01>,nn|<05><02>2}}|s|j<00>dd<07>Sg}|D]}|j|j<00><00>|j<00>t|<06>td<08>|D<00><00>td <09>|D<00><00>tt|<07><00>|D<00>cgc]}|js<01>|jdd
<00><02> c}dd d <0C>}t d |j#d<0E><00>d<0F>z } t%| d<10>5}
t'j(||
d<11><12>ddd<01>|Scc}wcc}w#1swY|SxYw)z$Generate summary for a specific day.Nr)<04>hour<75>minute<74>second<6E> microsecondr[rj<00>no_data)r<><00>statusc3<00>:K<00>|]}|js<01>d<00><01><00>y<01>wr{r|r}s r#r<>z1Journal.generate_daily_summary.<locals>.<genexpr><3E>s<00><00><><00>B<>A<EFBFBD><01> <09> <09>a<EFBFBD>B<>r<EFBFBD>c3<00>:K<00>|]}|jr<01>d<00><01><00>y<01>wr{r|r}s r#r<>z1Journal.generate_daily_summary.<locals>.<genexpr><3E>s<00><00><><00>B<><01><01> <09> <09>!<21>B<>r<EFBFBD>r<><00>
)r<>r&<00>
successful<EFBFBD>failedr<00>tasks_completed<65>daily_z%Y%m%d<>.jsonrbrcrd)rrC<00>replacerrxrmrrD<00>extendrr<>r<><00>list<73>setrrr7rNrRrTrf) r:r<><00>start<72>endrsr<00> day_entries<65>lessons<6E>summary<72> summary_filerXs r#<00>generate_daily_summaryzJournal.generate_daily_summary<72>s<><00><00> <0F><<3C><1B><<3C><<3C>><3E>D<EFBFBD><14> <0C> <0C>!<21>A<EFBFBD>a<EFBFBD>Q<EFBFBD> <0C>G<><05><13>i<EFBFBD>Q<EFBFBD>'<27>'<27><03><16>"<22>"<22><01>"<22>*<2A><07>")<29>`<60>Q<EFBFBD>U<EFBFBD>h<EFBFBD>6L<36>6L<36>Q<EFBFBD>[<5B>[<5B>6Y<36>-_<>\_<>-_<>q<EFBFBD>`<60> <0B>`<60><1A>!<21>O<EFBFBD>O<EFBFBD>-<2D><19>C<> C<><14><07><1C> .<2E>A<EFBFBD> <13>N<EFBFBD>N<EFBFBD>1<EFBFBD>,<2C>,<2C> -<2D> .<2E><1A>O<EFBFBD>O<EFBFBD>%<25><1F> <0B>,<2C><1D>B<><1B>B<>B<><19>B<>[<5B>B<>B<>#<23>C<EFBFBD><07>L<EFBFBD>1<>6A<36>O<><11>Q<EFBFBD>Y<EFBFBD>Y<EFBFBD><01><06><06>t<EFBFBD><03> <0C>O<>PS<50>QS<51>T<> 
<EFBFBD><07>%<25><16><05><0E><0E>x<EFBFBD>0H<30>/I<><15>'O<>O<> <0C> <11>,<2C><03> $<24> ,<2C><01> <10>I<EFBFBD>I<EFBFBD>g<EFBFBD>q<EFBFBD><11> +<2B> ,<2C><17><0E><>/a<01><> P<01>
 ,<2C><17><0E>s$<00>-F <04>?F <04>F<0E>%F<0E>&F<03>Fc <00>h<00>|jd<01><02>}|jd<01><02>}g}|D]}|j|j<00><00>t t
<00>}|D]*}|j |j<00>}||xxdz cc<<00>,dtj<00>j<00>|jt|jdzd<06>t|jd<06>|jd<07>|j |j"t%|<05>t't)|<03><00>dd d
<EFBFBD>}tj<00>j+<00>d}t,d tj<00>j.<00>d |<08>d <0A>z } t1| d<0E>5}
t3j4||
d<06><0F>ddd<08>|S#1swY|SxYw)zGenerate weekly summary.<2E>rjr[<00> last_7_daysr<73>rc<00>r&r*r)r+N<>)<07>period<6F> generated_atr]r,r-<00>task_distribution<6F> key_lessons<6E>weekly_<79>_wr<77>rbrd)r<>rxr<>rr r <00>_categorize_taskrrrCrDr&<00>roundr*r)r+r,r-<00>dictr<74>r<><00> isocalendarr7<00>yearrRrTrf) r:r]rs<00> all_lessonsr<00>
task_types<EFBFBD> task_typer<65><00>week_numr<6D>rXs r#<00>generate_weekly_summaryzJournal.generate_weekly_summary<72>s<><00><00><16>(<28>(<28>a<EFBFBD>(<28>0<><07><16>"<22>"<22><01>"<22>*<2A><07><19> <0B><18> 2<>A<EFBFBD> <17> <1E> <1E>q<EFBFBD>0<>0<> 1<> 2<>!<21><13>%<25>
<EFBFBD><18> '<27>A<EFBFBD><1C>-<2D>-<2D>a<EFBFBD>f<EFBFBD>f<EFBFBD>5<>I<EFBFBD> <16>y<EFBFBD> !<21>Q<EFBFBD> &<26> !<21> '<27>
$<24>$<24>L<EFBFBD>L<EFBFBD>N<EFBFBD>4<>4<>6<> '<27> 4<> 4<> %<25>g<EFBFBD>&:<3A>&:<3A>S<EFBFBD>&@<40>!<21> D<>(-<2D>g<EFBFBD>.J<>.J<>A<EFBFBD>(N<>!(<28>!6<>!6<> <0E> %<25>2<>2<> <20>*<2A>*<2A>!%<25>j<EFBFBD>!1<><1F><03>K<EFBFBD> 0<>1<>#<23>2<EFBFBD>6<> 
<EFBFBD><07> <1C><<3C><<3C>><3E>-<2D>-<2D>/<2F><01>2<><08>$<24><17><18><1C><1C><1E>1D<31>1D<31>0E<30>R<EFBFBD><08>z<EFBFBD>QV<51>'W<>W<> <0C> <11>,<2C><03> $<24> ,<2C><01> <10>I<EFBFBD>I<EFBFBD>g<EFBFBD>q<EFBFBD><11> +<2B> ,<2C><17><0E> ,<2C><17><0E>s <00>F'<03>'F1c<00><><00>|j<00>}d|vsd|vryd|vsd|vsd|vryd|vsd|vry d
|vsd |vry d |vsd|vryy)zCategorize a task by type.<2E>search<63>find<6E>coderS<00>create<74>code_generation<6F>read<61>analyze<7A>analysis<69>test<73>verify<66>testing<6E>debug<75>fix<69> debugging<6E>other<65><01>lower)r:r<00>
task_lowers r#r<>zJournal._categorize_task<73>sq<00><00><19>Z<EFBFBD>Z<EFBFBD>\<5C>
<EFBFBD> <13>z<EFBFBD> !<21>V<EFBFBD>z<EFBFBD>%9<><1B> <13>z<EFBFBD> !<21>W<EFBFBD>
<EFBFBD>%:<3A>h<EFBFBD>*<2A>>T<>$<24> <13>z<EFBFBD> !<21>Y<EFBFBD>*<2A>%<<3C><1D> <13>z<EFBFBD> !<21>X<EFBFBD><1A>%;<3B><1C> <14>
<EFBFBD> "<22>e<EFBFBD>z<EFBFBD>&9<><1E>r"c<00>@<00>|j|<01><01>}t|<02>dkrddd<05>Std<06><00>}|D]X}tj|j
<00>j }||dxxdz cc<|js<01>I||d xxdz cc<<00>Z|j<00>D<00><06>cic]\}}|dd
k\s<01>||d |dz <00><02>}}}t|j<00>d <0B>d <0C> <0A>dd
} td<0F><00>}
|D]J}|j|j<00>} |
| dxxdz cc<|js<01>;|
| d xxdz cc<<00>L|
j<00>D<00> <0C>cic]\} }|dd
k\s<01>| |d |dz <00><02>} } }|t|<02>| | |j|<02>d<10>Scc}}wcc}} w)z%Identify patterns in journal entries.rjr<><00>insufficient_dataz,Need at least 5 entries for pattern analysis)r<><00>messagec<00> <00>ddd<02>S<00>Nr)r<00>totalr!r!r"r#r<>z&Journal.get_patterns.<locals>.<lambda><00> <00><00>q<EFBFBD>1<EFBFBD>+E<>r"r<>r[r<00>c<00> <00>|dSr<>r!r<>s r#r<>z&Journal.get_patterns.<locals>.<lambda>"r<>r"Tr<54>Nc<00> <00>ddd<02>Sr<>r!r!r"r#r<>z&Journal.get_patterns.<locals>.<lambda>%r<>r")<05>analysis_period_days<79> total_entries<65>best_performing_hours<72>task_success_rates<65>improvement_trend) rxr<>r rrmrr<>rr<>r<>r<>r<00>_calculate_trend)r:rgrs<00> hour_successrr<><00>h<>v<>
hour_rates<EFBFBD>
best_hours<EFBFBD> task_successr<73><00>t<>
task_ratess r#<00> get_patternszJournal.get_patternss<><00><00><16>"<22>"<22><04>"<22>-<2D><07> <0E>w<EFBFBD><<3C>!<21> <1B>1<>>l<>m<> m<>#<23>#E<>F<> <0C><18> 3<>A<EFBFBD><1B>)<29>)<29>!<21>+<2B>+<2B>6<>;<3B>;<3B>D<EFBFBD> <18><14> <1E>w<EFBFBD> '<27>1<EFBFBD> ,<2C> '<27><10>y<EFBFBD>y<EFBFBD><1C>T<EFBFBD>"<22>9<EFBFBD>-<2D><11>2<>-<2D>  3<>8D<01>7I<37>7I<37>7K<37>
<EFBFBD>/3<>q<EFBFBD>!<21>q<EFBFBD>QX<51>z<EFBFBD>]^<5E><EFBFBD>A<EFBFBD><01>)<29> <0C>q<EFBFBD><17>z<EFBFBD>)<29> )<29>
<EFBFBD>
<EFBFBD>
<EFBFBD><1C>J<EFBFBD>,<2C>,<2C>.<2E>N<EFBFBD>D<EFBFBD>Q<>RT<52>ST<53>U<>
<EFBFBD>#<23>#E<>F<> <0C><18> 8<>A<EFBFBD><1C>-<2D>-<2D>a<EFBFBD>f<EFBFBD>f<EFBFBD>5<>I<EFBFBD> <18><19> #<23>G<EFBFBD> ,<2C><01> 1<> ,<2C><10>y<EFBFBD>y<EFBFBD><1C>Y<EFBFBD>'<27> <09>2<>a<EFBFBD>7<>2<>  8<>8D<01>7I<37>7I<37>7K<37>
<EFBFBD>/3<>q<EFBFBD>!<21>q<EFBFBD>QX<51>z<EFBFBD>]^<5E><EFBFBD>A<EFBFBD><01>)<29> <0C>q<EFBFBD><17>z<EFBFBD>)<29> )<29>
<EFBFBD>
<EFBFBD>
<EFBFBD>
%)<29> <20><17>\<5C>%/<2F>",<2C>!%<25>!6<>!6<>w<EFBFBD>!?<3F> 
<EFBFBD>
<EFBFBD><EFBFBD>#
<EFBFBD><EFBFBD>
s<00>"F<06>3F<06>F<06>#Frsc<00><><00>t|<01>dkryt|<01>dz}|d|}||d}td<05>|D<00><00>t|<03>z }td<06>|D<00><00>t|<04>z }||dzkDry||dz
kry y
) zCalculate improvement trend.r<>r<>rcNc3<00>:K<00>|]}|js<01>d<00><01><00>y<01>wr{r|r}s r#r<>z+Journal._calculate_trend.<locals>.<genexpr>Bs<00><00><><00><<3C>q<EFBFBD>!<21>)<29>)<29><11><<3C>r<EFBFBD>c3<00>:K<00>|]}|js<01>d<00><01><00>y<01>wr{r|r}s r#r<>z+Journal._calculate_trend.<locals>.<genexpr>Cs<00><00><><00>><3E><01>A<EFBFBD>I<EFBFBD>I<EFBFBD>!<21>><3E>r<EFBFBD>g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F> improving<6E> declining<6E>stable)r<>r<>)r:rs<00>mid<69>
first_half<EFBFBD> second_half<6C>
first_rate<EFBFBD> second_rates r#r<>zJournal._calculate_trend8s<><00><00> <0E>w<EFBFBD><<3C>"<22> <1C>&<26><12>'<27>l<EFBFBD>a<EFBFBD><1F><03><1C>T<EFBFBD>c<EFBFBD>]<5D>
<EFBFBD><1D>c<EFBFBD>d<EFBFBD>m<EFBFBD> <0B><18><<3C>J<EFBFBD><<3C><<3C>s<EFBFBD>:<3A><EFBFBD>N<>
<EFBFBD><19>><3E>[<5B>><3E>><3E><13>[<5B>AQ<41>Q<> <0B> <16><1A>c<EFBFBD>)<29> )<29><1E> <18>:<3A><03>+<2B> +<2B><1E>r"c<00>r<00>|j|<01><01>}td<02>td|<01>d<04><03>td<05>td|j<00><00><02>td|jdzd <09>d
<EFBFBD><03>td |jd <0C>d <0A><03>td|j
<00><00><02>td<0F>|j r7td<10>|j ddD]\}}td|dd<00>d|<04>d<16><05><00>|jr4td<17>|jddD]\}}td|<05>d|<04>d<19><05><00>td<05>y)zDisplay a formatted summary.rjz=
============================================================z' ALLEGRO-PRIMUS JOURNAL SUMMARY (Last z days)z<============================================================z Total Cycles: z Success Rate: r<>z.1f<EFBFBD>%z Avg Response Time: z.0f<EFBFBD>msz Total Lessons: z<------------------------------------------------------------z Common Errors:Nr<4E>z - <20>2z... (zx)z Top Tools Used:z: r<>)r<><00>printr&r*r)r+r,r-)r:rgr]r<><00>countr<74>s r#<00>display_summaryzJournal.display_summaryLsI<00><00><16>(<28>(<28>d<EFBFBD>(<28>3<><07> <0A>o<EFBFBD><1E> <0A>7<><04>v<EFBFBD>V<EFBFBD>D<>E<> <0A>h<EFBFBD><0F> <0A>%<25>g<EFBFBD>&:<3A>&:<3A>%;<3B><<3C>=<3D> <0A>%<25>g<EFBFBD>&:<3A>&:<3A>3<EFBFBD>&><3E>s<EFBFBD>%C<>1<EFBFBD>E<>F<> <0A>%<25>g<EFBFBD>&B<>&B<>3<EFBFBD>%G<>r<EFBFBD>J<>K<> <0A>%<25>g<EFBFBD>&;<3B>&;<3B>%<<3C>=<3D>><3E> <0A>h<EFBFBD><0F> <12> <20> <20> <11>$<24> %<25>%<25>3<>3<>B<EFBFBD>Q<EFBFBD>7<> 9<>
<EFBFBD><03>U<EFBFBD><15><06>s<EFBFBD>3<EFBFBD>B<EFBFBD>x<EFBFBD>j<EFBFBD><05>e<EFBFBD>W<EFBFBD>B<EFBFBD>7<>8<> 9<> <13> <1C> <1C> <11>%<25> &<26>&<26>0<>0<><12>!<21>4<> 1<> <0B><04>e<EFBFBD><15><06>t<EFBFBD>f<EFBFBD>B<EFBFBD>u<EFBFBD>g<EFBFBD>Q<EFBFBD>/<2F>0<> 1<> <0E>h<EFBFBD>r")TrNNNN)r<>F)r<>r<>)<01>)rrrr;r8rrr rrr rYrVr\rBrrxr%r<>rrr<>r<>r<>r<>r<>r
r!r"r#r1r1.sX<00><00><1D>
<0F>#'<27>*+<2B>/3<>&*<2A>*.<2E>,0<> <18><1B> <18><1D> <18> <20> <18>%(<28> <18>
$(<28><03>9<EFBFBD> <18> <1F>s<EFBFBD>)<29> <18>#<23>3<EFBFBD>i<EFBFBD> <18> <20><03>S<EFBFBD><08>><3E> <18>69<36> <18>D
$<24>t<EFBFBD>
$<24> <20>t<EFBFBD> <20>,<2C>T<EFBFBD>,<2C><17><03><17>t<EFBFBD><17><04>\<5C>HZ<48><17>4$
<EFBFBD>c<EFBFBD>$
<EFBFBD>,<2C>$
<EFBFBD>L <17>8<EFBFBD>H<EFBFBD>+=<3D> <17><14> <17>D%<17><14>%<17>N<1B>S<EFBFBD><1B>S<EFBFBD><1B> '
<EFBFBD><13>'
<EFBFBD>d<EFBFBD>'
<EFBFBD>R<1C><04>\<5C>(:<3A><1C>s<EFBFBD><1C>(<18>C<EFBFBD>r"r1c <00>b<00>ddl}|jd<03><04>}|jdgd<06><01><07>|jdd d
<EFBFBD> <0B>|jd d dd<0F><10>|jddd<13>d<14><15>|jdtdd<17><18>|jddtdd<1C><18>|j <00>}t <00>}|j dk(rx|js td<1E>tjd<1F>|j|j|j|j|j<00> <20>}td!|<04><00><02>y|j d"k(r|j|j <00>#<23>y|j d$k(r1|j#<00>}tt%j&|d%<25>&<26><00>y|j d'k(r1|j)<00>}tt%j&|d%<25>&<26><00>y|j d(k(r=|j+|j <00>#<23>}tt%j&|d%<25>&<26><00>y|j d)k(rj|j-|j <00>#<23>}tt%j&|j.|j0|j2|j4d*<2A>d%<25>&<26><00>yy)+z!CLI interface for journal system.rNzAP Self-Improvement Journal)<01> description<6F>action)<06>logr<67><00>daily<6C>weekly<6C>patterns<6E>stats)<01>choicesz--taskz-tzTask description for log)<01>helpz--resultz-rzResult for logrJ)rrLz --successz-sc<00>(<00>|j<00>dk(S)N<>truer<65>r<>s r#r<>zmain.<locals>.<lambda>ns<00><00>!<21>'<27>'<27>)<29>v<EFBFBD>:M<>r"T)<02>typerLz--timezResponse time in ms)rrLrz--daysz-dr<64>zDays for summaryrz"Error: --task required for loggingr[)rrrrzLogged cycle: r<>rjrrcrdrrrr<>)<1B>argparse<73>ArgumentParser<65> add_argumentr <00>
parse_argsr1rrr<00>sys<79>exitrYrr<00>timer
rgr<>rTrUr<>r<>r<>r&r*r)r+)r<00>parser<65>args<67>journalrr<>rr]s r#<00>mainr#fs><00><00><13> <15> $<24> $<24>1N<31> $<24> O<>F<EFBFBD>
<EFBFBD><17><17><08>*d<><17>e<>
<EFBFBD><17><17><08>$<24>-G<><17>H<>
<EFBFBD><17><17>
<EFBFBD>D<EFBFBD>/?<3F><12><17>L<>
<EFBFBD><17><17> <0B>T<EFBFBD>0M<30>W[<5B><17>\<5C>
<EFBFBD><17><17><08>s<EFBFBD>A<EFBFBD><Q<><17>R<>
<EFBFBD><17><17><08>$<24>S<EFBFBD>!<21>BT<42><17>U<> <11> <1C> <1C> <1E>D<EFBFBD><15>i<EFBFBD>G<EFBFBD> <0B>{<7B>{<7B>e<EFBFBD><1B><13>y<EFBFBD>y<EFBFBD> <11>6<> 7<> <0F>H<EFBFBD>H<EFBFBD>Q<EFBFBD>K<EFBFBD><1A>$<24>$<24><15><19><19><17>;<3B>;<3B><18>L<EFBFBD>L<EFBFBD>!<21>Y<EFBFBD>Y<EFBFBD> %<25>
<EFBFBD><08> <0E><0E>x<EFBFBD>j<EFBFBD>)<29>*<2A> <0A><1B><1B> <09> !<21><0F><1F><1F>T<EFBFBD>Y<EFBFBD>Y<EFBFBD><1F>/<2F> <0A><1B><1B><07> <1F><19>0<>0<>2<><07> <0A>d<EFBFBD>j<EFBFBD>j<EFBFBD><17><11>+<2B>,<2C> <0A><1B><1B><08> <20><19>1<>1<>3<><07> <0A>d<EFBFBD>j<EFBFBD>j<EFBFBD><17><11>+<2B>,<2C> <0A><1B><1B>
<EFBFBD> "<22><1A>'<27>'<27>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>'<27>7<><08> <0A>d<EFBFBD>j<EFBFBD>j<EFBFBD><18>!<21>,<2C>-<2D> <0A><1B><1B><07> <1F><19>+<2B>+<2B><14><19><19>+<2B>;<3B><07> <0A>d<EFBFBD>j<EFBFBD>j<EFBFBD>#<23>0<>0<>#<23>0<>0<>$+<2B>$@<40>$@<40>$<24>2<>2<> 
<EFBFBD>
<14> <15> <16>
r"<00>__main__)<1C>__doc__rTrOrrr<00>pathlibr<00>typingrrrr <00> dataclassesr
r <00> collectionsr r<>r5r>rAr7rr%r1r#rr!r"r#<00><module>r*s<><00><01><04>
 <0C> <09>
<EFBFBD>(<28><18>,<2C>,<2C>)<29>#<23><11><12>:<3A>;<3B> <0B><1A>_<EFBFBD>,<2C> <0C><1A>^<5E>+<2B> <0C><1B>k<EFBFBD>)<29> <0A>
<EFBFBD>
<1C>
<1C> <0B>
<1C> <0B><1B><1B> <0B><1B>u<18>u<18>p 2<16>j <0C>z<EFBFBD><19><08>F<EFBFBD>r"