pythinker-code 0.51.0__tar.gz → 0.53.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1050) hide show
  1. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/PKG-INFO +22 -26
  2. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/README.md +21 -25
  3. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/pyproject.toml +1 -1
  4. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/CHANGELOG.md +71 -0
  5. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/agents/default/agent.yaml +1 -0
  6. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/agents/default/judge.yaml +2 -0
  7. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/agents/default/system.md +4 -0
  8. pythinker_code-0.53.0/src/pythinker_code/skills/judge-minimum-diff/SKILL.md +104 -0
  9. pythinker_code-0.53.0/src/pythinker_code/skills/judge-overengineering-review/SKILL.md +104 -0
  10. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/toolset.py +47 -4
  11. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/agent/__init__.py +511 -0
  12. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/__init__.py +19 -1
  13. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/prompt.py +32 -11
  14. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/__init__.py +2 -0
  15. pythinker_code-0.53.0/src/pythinker_code/ui/shell/tool_renderers/implement_judge.py +114 -0
  16. pythinker_code-0.53.0/src/pythinker_code/web/static/assets/architecture-7EHR7CIX-CfoWhaKI.js +1 -0
  17. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/architectureDiagram-3BPJPVTR-X_oHUYO1.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/architectureDiagram-3BPJPVTR-M3KdPvuE.js +1 -1
  18. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/blockDiagram-GPEHLZMM-2zLgN0bS.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/blockDiagram-GPEHLZMM-DstE_RSS.js +1 -1
  19. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/bootstrap-BSt4IsKh.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/bootstrap-44gJdtbD.js +5 -5
  20. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/c4Diagram-AAUBKEIU-DzBGLsx8.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/c4Diagram-AAUBKEIU-kaBBDUMT.js +1 -1
  21. pythinker_code-0.53.0/src/pythinker_code/web/static/assets/channel-CyvphmC0.js +1 -0
  22. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/chunk-2J33WTMH-FPSU5QaJ.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/chunk-2J33WTMH-B6mCB1cG.js +1 -1
  23. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/chunk-3OPIFGDE-D_AIrjRF.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/chunk-3OPIFGDE-Bl_8is_l.js +1 -1
  24. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/chunk-5ZQYHXKU-CkynCyNs.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/chunk-5ZQYHXKU-BDyAc-ce.js +1 -1
  25. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/chunk-727SXJPM-Dr6tFoBV.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/chunk-727SXJPM-Cdn7OOFV.js +1 -1
  26. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/chunk-AQP2D5EJ-Bj1KY-58.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/chunk-AQP2D5EJ-CsQyxy7H.js +1 -1
  27. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/chunk-CSCIHK7Q-D38wt_PS.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/chunk-CSCIHK7Q-C62GU1Ce.js +1 -1
  28. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/chunk-JAPRZBRM-YeVubvkM.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/chunk-JAPRZBRM-BCkoGeXB.js +4 -4
  29. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/chunk-KSCS5N6A-DrGH79o7.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/chunk-KSCS5N6A-B7w1Ixhx.js +1 -1
  30. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/chunk-L5ZTLDWV-J3LkyD5q.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/chunk-L5ZTLDWV-DIQk3_g2.js +1 -1
  31. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/chunk-LZXEDZCA-CKgXoi0f.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/chunk-LZXEDZCA-CAjoGV8E.js +2 -2
  32. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/chunk-ND2GUHAM-DHx_WFtN.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/chunk-ND2GUHAM-ClPwHXEC.js +1 -1
  33. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/chunk-NZK2D7GU-DSLSgJfA.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/chunk-NZK2D7GU-BbL6iAnF.js +1 -1
  34. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/chunk-O5CBEL6O-wpjhg9ym.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/chunk-O5CBEL6O-CIPQvtw6.js +1 -1
  35. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/chunk-WU5MYG2G-BLq7E7Qg.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/chunk-WU5MYG2G-D5AYSdxz.js +1 -1
  36. pythinker_code-0.53.0/src/pythinker_code/web/static/assets/classDiagram-4FO5ZUOK-DRTu63MI.js +1 -0
  37. pythinker_code-0.53.0/src/pythinker_code/web/static/assets/classDiagram-v2-Q7XG4LA2-DRTu63MI.js +1 -0
  38. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-Dx4cRVQ_.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-qssdoVdT.js +1 -1
  39. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/dagre-BM42HDAG-DRlm8MQJ.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/dagre-BM42HDAG-BgbjWYUn.js +1 -1
  40. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/diagram-2AECGRRQ-BEfjBQLI.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/diagram-2AECGRRQ-Dxlq6NBd.js +1 -1
  41. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/diagram-5GNKFQAL-Ci0HEJWT.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/diagram-5GNKFQAL-DoxORiaz.js +1 -1
  42. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/diagram-KO2AKTUF-zYONKSY6.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/diagram-KO2AKTUF-CJvB-iBC.js +1 -1
  43. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/diagram-LMA3HP47-DQ4T4lCx.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/diagram-LMA3HP47-Cwk8AYzJ.js +1 -1
  44. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/diagram-OG6HWLK6-CrV-9Ra-.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/diagram-OG6HWLK6-H9_CfKaE.js +1 -1
  45. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/dist-npKuNvtv.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/dist-Cbz9nsEl.js +1 -1
  46. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/erDiagram-TEJ5UH35-0lIyRbv9.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/erDiagram-TEJ5UH35-Kn0sfQwa.js +1 -1
  47. pythinker_code-0.53.0/src/pythinker_code/web/static/assets/eventmodeling-FCH6USID-BxtfJZTX.js +1 -0
  48. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/flowDiagram-I6XJVG4X-86rTWOtS.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/flowDiagram-I6XJVG4X-DkwXUbkq.js +1 -1
  49. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/ganttDiagram-6RSMTGT7-DIe58hAf.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/ganttDiagram-6RSMTGT7-BImlJiAd.js +1 -1
  50. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/gitGraph-WXDBUCRP-MrGKOHQS.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/gitGraph-WXDBUCRP-DIVAb046.js +1 -1
  51. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/gitGraphDiagram-PVQCEYII-CbxdWdr-.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/gitGraphDiagram-PVQCEYII-BCc-7Ijd.js +1 -1
  52. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/index-Csj5xlwo.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/index-D9AoELRG.js +2 -2
  53. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/info-J43DQDTF-ICUzUEU3.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/info-J43DQDTF-Nv0OYzsf.js +1 -1
  54. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/infoDiagram-5YYISTIA-DJXqNoxd.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/infoDiagram-5YYISTIA-CRY7SD-9.js +1 -1
  55. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/ishikawaDiagram-YF4QCWOH-1JFbxySp.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/ishikawaDiagram-YF4QCWOH-BKZLCis4.js +1 -1
  56. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/journeyDiagram-JHISSGLW-COQF3o6_.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/journeyDiagram-JHISSGLW-BGsgmlDR.js +1 -1
  57. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/kanban-definition-UN3LZRKU-D423FO9N.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/kanban-definition-UN3LZRKU-Dl6MhDjP.js +1 -1
  58. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/line-u46X678h.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/line-CPPT5WGh.js +1 -1
  59. pythinker_code-0.53.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-8YTfkEIc.js +1 -0
  60. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/mermaid-parser.core-C9rzL2kO.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/mermaid-parser.core-UWSMf98O.js +2 -2
  61. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/mermaid.core-9_tLDRHh.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/mermaid.core-BFp8L3Od.js +3 -3
  62. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/mindmap-definition-RKZ34NQL-DTtZqqkw.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/mindmap-definition-RKZ34NQL-CtoEtRtq.js +1 -1
  63. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/packet-YPE3B663-B6LMWa1u.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/packet-YPE3B663-czc_Y598.js +1 -1
  64. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/pie-LRSECV5Y-CMHowp3u.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/pie-LRSECV5Y-Dlqjn7SW.js +1 -1
  65. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/pieDiagram-4H26LBE5-B01DYhfB.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/pieDiagram-4H26LBE5-J8ZmExPL.js +1 -1
  66. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/quadrantDiagram-W4KKPZXB-C66dg48I.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/quadrantDiagram-W4KKPZXB-CTwH6N4H.js +1 -1
  67. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/radar-GUYGQ44K-DTCBzdz2.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/radar-GUYGQ44K-E8h-9Tp2.js +1 -1
  68. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/requirementDiagram-4Y6WPE33-nNGWXMs_.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/requirementDiagram-4Y6WPE33-C7zGLmNF.js +1 -1
  69. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/sankeyDiagram-5OEKKPKP-Qb_nK7Gb.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/sankeyDiagram-5OEKKPKP-CAD75-Jw.js +1 -1
  70. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/sequenceDiagram-3UESZ5HK-z3RBHyMA.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/sequenceDiagram-3UESZ5HK-BDwcEkw0.js +1 -1
  71. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/stateDiagram-AJRCARHV-C-G3lcYY.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/stateDiagram-AJRCARHV-BhQxea7c.js +1 -1
  72. pythinker_code-0.53.0/src/pythinker_code/web/static/assets/stateDiagram-v2-BHNVJYJU-Cgm8rlqz.js +1 -0
  73. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/timeline-definition-PNZ67QCA-DXVndtCG.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/timeline-definition-PNZ67QCA-Bia6PknG.js +1 -1
  74. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/treeView-BLDUP644-CSfnlEh1.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/treeView-BLDUP644-C3etrXgV.js +1 -1
  75. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/treemap-LRROVOQU-DSDCVrgU.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/treemap-LRROVOQU-DnfgWgTv.js +1 -1
  76. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/vennDiagram-CIIHVFJN-B0Ef6p6-.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/vennDiagram-CIIHVFJN-hjnkp2yc.js +1 -1
  77. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/wardley-L42UT6IY-wr5KeEdQ.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/wardley-L42UT6IY-B9O7bk6o.js +1 -1
  78. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/wardleyDiagram-YWT4CUSO-B3B0a_Mc.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/wardleyDiagram-YWT4CUSO-BmM0hzd-.js +1 -1
  79. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/xychartDiagram-2RQKCTM6-CsHCuQhe.js → pythinker_code-0.53.0/src/pythinker_code/web/static/assets/xychartDiagram-2RQKCTM6-DCg3qSi8.js +1 -1
  80. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/index.html +1 -1
  81. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/architecture-7EHR7CIX-BAIjZ1OY.js +0 -1
  82. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/channel-CmYAmtsI.js +0 -1
  83. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/classDiagram-4FO5ZUOK-DcdRX25I.js +0 -1
  84. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/classDiagram-v2-Q7XG4LA2-DcdRX25I.js +0 -1
  85. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/eventmodeling-FCH6USID-D8j82yTe.js +0 -1
  86. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-69jhIuwd.js +0 -1
  87. pythinker_code-0.51.0/src/pythinker_code/web/static/assets/stateDiagram-v2-BHNVJYJU-BSsLK9GJ.js +0 -1
  88. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/LICENSE +0 -0
  89. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/NOTICE +0 -0
  90. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/__init__.py +0 -0
  91. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/__main__.py +0 -0
  92. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/acp/AGENTS.md +0 -0
  93. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/acp/__init__.py +0 -0
  94. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/acp/convert.py +0 -0
  95. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/acp/host.py +0 -0
  96. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/acp/mcp.py +0 -0
  97. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/acp/server.py +0 -0
  98. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/acp/session.py +0 -0
  99. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/acp/tools.py +0 -0
  100. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/acp/types.py +0 -0
  101. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/acp/version.py +0 -0
  102. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/agents/default/ask.yaml +0 -0
  103. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/agents/default/code_reviewer.yaml +0 -0
  104. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/agents/default/coder.yaml +0 -0
  105. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/agents/default/debug.yaml +0 -0
  106. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/agents/default/debugger.yaml +0 -0
  107. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/agents/default/explore.yaml +0 -0
  108. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/agents/default/implementer.yaml +0 -0
  109. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/agents/default/plan.yaml +0 -0
  110. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/agents/default/planner.yaml +0 -0
  111. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/agents/default/review.yaml +0 -0
  112. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/agents/default/scout.yaml +0 -0
  113. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/agents/default/security_reviewer.yaml +0 -0
  114. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/agents/default/verifier.yaml +0 -0
  115. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/agents/okabe/agent.yaml +0 -0
  116. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/agentspec.py +0 -0
  117. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/app.py +0 -0
  118. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/approval_runtime/__init__.py +0 -0
  119. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/approval_runtime/models.py +0 -0
  120. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/approval_runtime/runtime.py +0 -0
  121. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/__init__.py +0 -0
  122. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/alibaba.py +0 -0
  123. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/anthropic_direct.py +0 -0
  124. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/browser_login_page.py +0 -0
  125. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/deepseek.py +0 -0
  126. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/github_feedback.py +0 -0
  127. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/kimi.py +0 -0
  128. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/lm_studio.py +0 -0
  129. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/minimax.py +0 -0
  130. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/moonshot.py +0 -0
  131. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/oauth.py +0 -0
  132. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/ollama.py +0 -0
  133. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/openai/__init__.py +0 -0
  134. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/openai/_shared.py +0 -0
  135. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/openai/browser_flow.py +0 -0
  136. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/openai/catalog.py +0 -0
  137. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/openai/config_apply.py +0 -0
  138. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/openai/constants.py +0 -0
  139. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/openai/login.py +0 -0
  140. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/openai/models.py +0 -0
  141. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/openai/oauth_client.py +0 -0
  142. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/opencode_go.py +0 -0
  143. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/openrouter.py +0 -0
  144. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/platforms.py +0 -0
  145. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/auth/z_ai.py +0 -0
  146. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/background/__init__.py +0 -0
  147. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/background/agent_runner.py +0 -0
  148. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/background/ids.py +0 -0
  149. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/background/manager.py +0 -0
  150. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/background/models.py +0 -0
  151. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/background/store.py +0 -0
  152. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/background/summary.py +0 -0
  153. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/background/worker.py +0 -0
  154. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/cli/__init__.py +0 -0
  155. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/cli/__main__.py +0 -0
  156. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/cli/_lazy_group.py +0 -0
  157. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/cli/dashboard.py +0 -0
  158. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/cli/debug.py +0 -0
  159. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/cli/export.py +0 -0
  160. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/cli/info.py +0 -0
  161. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/cli/mcp.py +0 -0
  162. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/cli/plugin.py +0 -0
  163. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/cli/review.py +0 -0
  164. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/cli/secscan.py +0 -0
  165. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/cli/security_scan.py +0 -0
  166. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/cli/skill.py +0 -0
  167. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/cli/system_prompt.py +0 -0
  168. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/cli/toad.py +0 -0
  169. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/cli/update.py +0 -0
  170. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/cli/web.py +0 -0
  171. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/config.py +0 -0
  172. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/constant.py +0 -0
  173. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/dashboard/__init__.py +0 -0
  174. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/dashboard/api/__init__.py +0 -0
  175. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/dashboard/api/sessions.py +0 -0
  176. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/dashboard/api/statistics.py +0 -0
  177. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/dashboard/api/system.py +0 -0
  178. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/dashboard/app.py +0 -0
  179. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/dashboard/static/assets/highlighted-body-OFNGDK62-BxVUIXn9.js +0 -0
  180. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/dashboard/static/assets/index-DAN_VzOP.css +0 -0
  181. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/dashboard/static/assets/index-DYyxzHPY.js +0 -0
  182. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/dashboard/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  183. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/dashboard/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  184. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/dashboard/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  185. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/dashboard/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  186. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/dashboard/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  187. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/dashboard/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  188. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/dashboard/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  189. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/dashboard/static/assets/mermaid-GHXKKRXX-BR6KjYwB.js +0 -0
  190. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/dashboard/static/index.html +0 -0
  191. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/events.py +0 -0
  192. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/exception.py +0 -0
  193. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/execution_profiles.py +0 -0
  194. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/extensions.py +0 -0
  195. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/feedback.py +0 -0
  196. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/feedback_repo.py +0 -0
  197. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/file_restore.py +0 -0
  198. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/hooks/__init__.py +0 -0
  199. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/hooks/config.py +0 -0
  200. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/hooks/engine.py +0 -0
  201. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/hooks/events.py +0 -0
  202. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/hooks/runner.py +0 -0
  203. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/llm.py +0 -0
  204. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/lsp/__init__.py +0 -0
  205. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/lsp/client.py +0 -0
  206. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/lsp/diagnostics.py +0 -0
  207. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/lsp/framing.py +0 -0
  208. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/lsp/instance.py +0 -0
  209. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/lsp/manager.py +0 -0
  210. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/lsp/plugin_servers.py +0 -0
  211. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/lsp/protocol.py +0 -0
  212. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/lsp/recommend.py +0 -0
  213. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/lsp/service.py +0 -0
  214. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/memory/__init__.py +0 -0
  215. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/memory/consolidation.py +0 -0
  216. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/memory/harvest.py +0 -0
  217. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/memory/recall.py +0 -0
  218. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/memory/recap.py +0 -0
  219. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/memory/retriever.py +0 -0
  220. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/memory/sanitize.py +0 -0
  221. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/metadata.py +0 -0
  222. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/models_dev.py +0 -0
  223. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/native.py +0 -0
  224. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/notifications/__init__.py +0 -0
  225. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/notifications/llm.py +0 -0
  226. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/notifications/manager.py +0 -0
  227. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/notifications/models.py +0 -0
  228. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/notifications/notifier.py +0 -0
  229. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/notifications/store.py +0 -0
  230. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/notifications/wire.py +0 -0
  231. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/plugin/__init__.py +0 -0
  232. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/plugin/artifacts.py +0 -0
  233. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/plugin/dependency.py +0 -0
  234. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/plugin/directories.py +0 -0
  235. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/plugin/install.py +0 -0
  236. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/plugin/installed.py +0 -0
  237. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/plugin/integration.py +0 -0
  238. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/plugin/loader.py +0 -0
  239. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/plugin/manager.py +0 -0
  240. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/plugin/manifest.py +0 -0
  241. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/plugin/marketplace.py +0 -0
  242. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/plugin/options.py +0 -0
  243. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/plugin/policy.py +0 -0
  244. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/plugin/tool.py +0 -0
  245. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/project_memory.py +0 -0
  246. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/project_trust.py +0 -0
  247. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/prompt_templates.py +0 -0
  248. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/prompts/__init__.py +0 -0
  249. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/prompts/best_practices.md +0 -0
  250. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/prompts/compact.md +0 -0
  251. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/prompts/goal_continuation.md +0 -0
  252. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/prompts/goal_set.md +0 -0
  253. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/prompts/goal_wrap_up.md +0 -0
  254. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/prompts/init.md +0 -0
  255. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/prompts/learn.md +0 -0
  256. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/py.typed +0 -0
  257. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/scratchpad.py +0 -0
  258. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/session.py +0 -0
  259. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/session_cleanup.py +0 -0
  260. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/session_fork.py +0 -0
  261. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/session_recap.py +0 -0
  262. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/session_state.py +0 -0
  263. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/share.py +0 -0
  264. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skill/__init__.py +0 -0
  265. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skill/flow/__init__.py +0 -0
  266. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skill/flow/d2.py +0 -0
  267. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skill/flow/mermaid.py +0 -0
  268. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skill/lockfile.py +0 -0
  269. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skills/agent-creator/SKILL.md +0 -0
  270. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skills/check-impl-against-spec/SKILL.md +0 -0
  271. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skills/cleanup-audit/SKILL.md +0 -0
  272. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skills/create-pr/SKILL.md +0 -0
  273. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skills/customize-pythinker/SKILL.md +0 -0
  274. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skills/designer-skill/SKILL.md +0 -0
  275. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skills/diagnose-ci-failures/SKILL.md +0 -0
  276. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skills/fix-errors/SKILL.md +0 -0
  277. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skills/implement-specs/SKILL.md +0 -0
  278. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skills/pr-walkthrough/SKILL.md +0 -0
  279. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skills/pythinker-code-help/SKILL.md +0 -0
  280. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skills/reproduce-bug-report/SKILL.md +0 -0
  281. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skills/resolve-merge-conflicts/SKILL.md +0 -0
  282. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skills/review-pr/SKILL.md +0 -0
  283. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skills/skill-creator/SKILL.md +0 -0
  284. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skills/spec-driven-implementation/SKILL.md +0 -0
  285. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skills/write-product-spec/SKILL.md +0 -0
  286. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/skills/write-tech-spec/SKILL.md +0 -0
  287. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/__init__.py +0 -0
  288. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/agent.py +0 -0
  289. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/api_errors.py +0 -0
  290. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/approval.py +0 -0
  291. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/btw.py +0 -0
  292. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/compaction.py +0 -0
  293. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/compaction_restore.py +0 -0
  294. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/context.py +0 -0
  295. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/deliberation.py +0 -0
  296. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/denwarenji.py +0 -0
  297. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/dynamic_injection.py +0 -0
  298. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/dynamic_injections/__init__.py +0 -0
  299. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/dynamic_injections/agent_list.py +0 -0
  300. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/dynamic_injections/auto_mode.py +0 -0
  301. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/dynamic_injections/git_status.py +0 -0
  302. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/dynamic_injections/goal_mode.py +0 -0
  303. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/dynamic_injections/inline_commands.py +0 -0
  304. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/dynamic_injections/lsp_diagnostics.py +0 -0
  305. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/dynamic_injections/model_defense.py +0 -0
  306. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/dynamic_injections/orchestration.py +0 -0
  307. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/dynamic_injections/permissions_state.py +0 -0
  308. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/dynamic_injections/plan_mode.py +0 -0
  309. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/flow_runner.py +0 -0
  310. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/live_tokens.py +0 -0
  311. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/message.py +0 -0
  312. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/permission.py +0 -0
  313. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/pythinkersoul.py +0 -0
  314. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/soul/slash.py +0 -0
  315. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/subagents/__init__.py +0 -0
  316. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/subagents/builder.py +0 -0
  317. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/subagents/codenames.py +0 -0
  318. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/subagents/core.py +0 -0
  319. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/subagents/discovery.py +0 -0
  320. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/subagents/git_context.py +0 -0
  321. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/subagents/models.py +0 -0
  322. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/subagents/output.py +0 -0
  323. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/subagents/registry.py +0 -0
  324. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/subagents/runner.py +0 -0
  325. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/subagents/store.py +0 -0
  326. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/subagents/usage.py +0 -0
  327. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/subagents/worktree.py +0 -0
  328. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/telemetry/__init__.py +0 -0
  329. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/telemetry/config.py +0 -0
  330. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/telemetry/crash.py +0 -0
  331. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/telemetry/errors.py +0 -0
  332. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/telemetry/metrics.py +0 -0
  333. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/telemetry/names.py +0 -0
  334. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/telemetry/otel.py +0 -0
  335. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/telemetry/sentry.py +0 -0
  336. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/telemetry/sink.py +0 -0
  337. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/thinking.py +0 -0
  338. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/AGENTS.md +0 -0
  339. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/__init__.py +0 -0
  340. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/agent/description.md +0 -0
  341. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/ask_user/__init__.py +0 -0
  342. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/ask_user/description.md +0 -0
  343. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/background/__init__.py +0 -0
  344. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/background/handoff.md +0 -0
  345. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/background/input.md +0 -0
  346. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/background/list.md +0 -0
  347. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/background/output.md +0 -0
  348. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/background/stop.md +0 -0
  349. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/display.py +0 -0
  350. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/dmail/__init__.py +0 -0
  351. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/dmail/dmail.md +0 -0
  352. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/file/__init__.py +0 -0
  353. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/file/glob.md +0 -0
  354. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/file/glob.py +0 -0
  355. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/file/grep.md +0 -0
  356. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/file/grep_local.py +0 -0
  357. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/file/plan_mode.py +0 -0
  358. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/file/read.md +0 -0
  359. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/file/read.py +0 -0
  360. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/file/read_media.md +0 -0
  361. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/file/read_media.py +0 -0
  362. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/file/replace.md +0 -0
  363. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/file/replace.py +0 -0
  364. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/file/utils.py +0 -0
  365. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/file/write.md +0 -0
  366. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/file/write.py +0 -0
  367. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/goal/__init__.py +0 -0
  368. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/goal/update_goal.md +0 -0
  369. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/lsp/__init__.py +0 -0
  370. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/lsp/formatters.py +0 -0
  371. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/lsp/schemas.py +0 -0
  372. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/lsp/symbol_context.py +0 -0
  373. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/lsp/tool.md +0 -0
  374. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/lsp/tool.py +0 -0
  375. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/mcp_resource/__init__.py +0 -0
  376. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/mcp_resource/list_description.md +0 -0
  377. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/mcp_resource/prompt_description.md +0 -0
  378. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/mcp_resource/read_description.md +0 -0
  379. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/memory/__init__.py +0 -0
  380. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/memory/memory.md +0 -0
  381. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/memory/routing_guard.py +0 -0
  382. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/plan/__init__.py +0 -0
  383. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/plan/description.md +0 -0
  384. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/plan/enter.py +0 -0
  385. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/plan/enter_description.md +0 -0
  386. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/plan/handoff.py +0 -0
  387. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/plan/heroes.py +0 -0
  388. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/progress/__init__.py +0 -0
  389. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/progress/description.md +0 -0
  390. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/recall/__init__.py +0 -0
  391. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/recall/description.md +0 -0
  392. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/scratchpad/__init__.py +0 -0
  393. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/scratchpad/scratchpad_tool.md +0 -0
  394. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/shell/__init__.py +0 -0
  395. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/shell/bash.md +0 -0
  396. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/shell/powershell.md +0 -0
  397. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/skill/__init__.py +0 -0
  398. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/skill/_mcp_bridge.py +0 -0
  399. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/skill/description.md +0 -0
  400. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/suggest/__init__.py +0 -0
  401. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/suggest/description.md +0 -0
  402. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/test.py +0 -0
  403. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/think/__init__.py +0 -0
  404. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/think/think.md +0 -0
  405. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/todo/__init__.py +0 -0
  406. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/todo/set_todo_list.md +0 -0
  407. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/tool_search/__init__.py +0 -0
  408. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/tool_search/tool_search.md +0 -0
  409. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/utils.py +0 -0
  410. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/web/__init__.py +0 -0
  411. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/web/_allowlist.py +0 -0
  412. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/web/fetch.md +0 -0
  413. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/web/fetch.py +0 -0
  414. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/web/search.md +0 -0
  415. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/web/search.py +0 -0
  416. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/worktree/__init__.py +0 -0
  417. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/worktree/enter_worktree.md +0 -0
  418. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/tools/worktree/exit_worktree.md +0 -0
  419. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/__init__.py +0 -0
  420. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/acp/__init__.py +0 -0
  421. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/color_utils.py +0 -0
  422. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/print/__init__.py +0 -0
  423. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/print/visualize.py +0 -0
  424. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/components/__init__.py +0 -0
  425. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/components/base.py +0 -0
  426. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/components/bash_execution.py +0 -0
  427. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/components/bordered_loader.py +0 -0
  428. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/components/diff.py +0 -0
  429. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/components/dynamic_border.py +0 -0
  430. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/components/footer.py +0 -0
  431. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/components/key_hints.py +0 -0
  432. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/components/markdown.py +0 -0
  433. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/components/messages.py +0 -0
  434. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/components/panel.py +0 -0
  435. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/components/render_utils.py +0 -0
  436. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/components/report.py +0 -0
  437. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/components/report_prose_blocks.py +0 -0
  438. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/components/report_update.py +0 -0
  439. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/components/settings_list.py +0 -0
  440. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/components/special_messages.py +0 -0
  441. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/components/tool_execution.py +0 -0
  442. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/console.py +0 -0
  443. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/debug.py +0 -0
  444. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/design_system.py +0 -0
  445. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/echo.py +0 -0
  446. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/export_import.py +0 -0
  447. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/glyphs.py +0 -0
  448. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/keyboard.py +0 -0
  449. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/keymap.py +0 -0
  450. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/markdown/__init__.py +0 -0
  451. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/markdown/audit.py +0 -0
  452. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/markdown/elements.py +0 -0
  453. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/markdown/fences.py +0 -0
  454. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/markdown/normalizers.py +0 -0
  455. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/markdown/renderer.py +0 -0
  456. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/markdown/streaming.py +0 -0
  457. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/mcp_status.py +0 -0
  458. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/model_picker.py +0 -0
  459. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/motion.py +0 -0
  460. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/oauth.py +0 -0
  461. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/placeholders.py +0 -0
  462. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/render_constants.py +0 -0
  463. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/replay.py +0 -0
  464. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/selector.py +0 -0
  465. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/selectors/__init__.py +0 -0
  466. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/selectors/code_theme.py +0 -0
  467. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/selectors/extension.py +0 -0
  468. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/selectors/oauth.py +0 -0
  469. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/selectors/settings.py +0 -0
  470. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/selectors/show_images.py +0 -0
  471. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/selectors/theme.py +0 -0
  472. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/selectors/thinking.py +0 -0
  473. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/session_picker.py +0 -0
  474. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/setup.py +0 -0
  475. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/slash.py +0 -0
  476. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/spacing.py +0 -0
  477. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/spinner_words.py +0 -0
  478. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/startup.py +0 -0
  479. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/stats.py +0 -0
  480. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/stats_collector.py +0 -0
  481. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/stats_pricing.py +0 -0
  482. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/statusline.py +0 -0
  483. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/sync_output.py +0 -0
  484. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/task_browser.py +0 -0
  485. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tips.py +0 -0
  486. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/_file_diff.py +0 -0
  487. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/_render_utils.py +0 -0
  488. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/agent.py +0 -0
  489. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/ask_user.py +0 -0
  490. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/background.py +0 -0
  491. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/bash.py +0 -0
  492. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/edit.py +0 -0
  493. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/find.py +0 -0
  494. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/generic.py +0 -0
  495. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/grep.py +0 -0
  496. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/lsp.py +0 -0
  497. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/mcp_resource.py +0 -0
  498. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/memory.py +0 -0
  499. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/plan.py +0 -0
  500. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/read.py +0 -0
  501. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/read_media.py +0 -0
  502. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/skill.py +0 -0
  503. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/smart_search.py +0 -0
  504. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/think.py +0 -0
  505. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/todo.py +0 -0
  506. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/tool_search.py +0 -0
  507. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/web.py +0 -0
  508. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/worktree.py +0 -0
  509. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/tool_renderers/write.py +0 -0
  510. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/update.py +0 -0
  511. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/update_orchestrator.py +0 -0
  512. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/usage.py +0 -0
  513. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/usage_activity.py +0 -0
  514. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/usage_adapters/__init__.py +0 -0
  515. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/usage_adapters/alibaba.py +0 -0
  516. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/usage_adapters/anthropic_admin.py +0 -0
  517. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/usage_adapters/base.py +0 -0
  518. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/usage_adapters/deepseek.py +0 -0
  519. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/usage_adapters/minimax.py +0 -0
  520. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/usage_adapters/openai_admin.py +0 -0
  521. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/usage_adapters/openai_chatgpt.py +0 -0
  522. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/usage_adapters/opencode_go.py +0 -0
  523. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/usage_adapters/openrouter.py +0 -0
  524. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker.py +0 -0
  525. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker_ai.py +0 -0
  526. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/usage_render.py +0 -0
  527. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/visualize/__init__.py +0 -0
  528. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/visualize/_activity_tree.py +0 -0
  529. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/visualize/_approval_panel.py +0 -0
  530. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/visualize/_blocks.py +0 -0
  531. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/visualize/_btw_panel.py +0 -0
  532. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/visualize/_dialog_shell.py +0 -0
  533. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/visualize/_diff_live.py +0 -0
  534. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/visualize/_input_router.py +0 -0
  535. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/visualize/_interactive.py +0 -0
  536. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/visualize/_live_view.py +0 -0
  537. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/visualize/_question_panel.py +0 -0
  538. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/visualize/_transcript.py +0 -0
  539. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/shell/visualize/_worklog.py +0 -0
  540. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/terminal_background.py +0 -0
  541. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/terminal_capabilities.py +0 -0
  542. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/theme/__init__.py +0 -0
  543. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/theme/adapters/__init__.py +0 -0
  544. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/theme/adapters/markdown.py +0 -0
  545. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/theme/adapters/task_browser.py +0 -0
  546. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/theme/capabilities.py +0 -0
  547. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/theme/palettes.py +0 -0
  548. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/theme/pythinker_themes.py +0 -0
  549. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/theme/registry.py +0 -0
  550. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/theme/resolver.py +0 -0
  551. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/theme/spec.py +0 -0
  552. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/ui/tui_config.py +0 -0
  553. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/update_policy.py +0 -0
  554. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/usage_ratelimit_cache.py +0 -0
  555. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/__init__.py +0 -0
  556. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/aiohttp.py +0 -0
  557. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/aioqueue.py +0 -0
  558. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/artifacts.py +0 -0
  559. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/broadcast.py +0 -0
  560. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/changelog.py +0 -0
  561. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/clipboard.py +0 -0
  562. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/datetime.py +0 -0
  563. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/diff.py +0 -0
  564. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/editor.py +0 -0
  565. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/environment.py +0 -0
  566. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/envvar.py +0 -0
  567. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/export.py +0 -0
  568. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/file_filter.py +0 -0
  569. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/file_read_cache.py +0 -0
  570. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/frontmatter.py +0 -0
  571. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/gitignore.py +0 -0
  572. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/io.py +0 -0
  573. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/logging.py +0 -0
  574. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/mcp_names.py +0 -0
  575. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/media_limits.py +0 -0
  576. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/media_tags.py +0 -0
  577. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/message.py +0 -0
  578. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/path.py +0 -0
  579. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/proctitle.py +0 -0
  580. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/proxy.py +0 -0
  581. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/pyinstaller.py +0 -0
  582. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/rich/__init__.py +0 -0
  583. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/rich/columns.py +0 -0
  584. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/rich/diff_render.py +0 -0
  585. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/rich/markdown.py +0 -0
  586. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/rich/markdown_sample.md +0 -0
  587. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/rich/markdown_sample_short.md +0 -0
  588. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/rich/syntax.py +0 -0
  589. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/sensitive.py +0 -0
  590. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/server.py +0 -0
  591. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/signals.py +0 -0
  592. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/slashcmd.py +0 -0
  593. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/sleep_inhibitor.py +0 -0
  594. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/string.py +0 -0
  595. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/subprocess_env.py +0 -0
  596. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/term.py +0 -0
  597. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/trust.py +0 -0
  598. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/utils/typing.py +0 -0
  599. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/__init__.py +0 -0
  600. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/api/__init__.py +0 -0
  601. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/api/config.py +0 -0
  602. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/api/open_in.py +0 -0
  603. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/api/sessions.py +0 -0
  604. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/app.py +0 -0
  605. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/auth.py +0 -0
  606. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/models.py +0 -0
  607. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/runner/__init__.py +0 -0
  608. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/runner/messages.py +0 -0
  609. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/runner/process.py +0 -0
  610. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/runner/worker.py +0 -0
  611. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/_headers +0 -0
  612. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  613. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  614. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  615. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  616. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  617. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  618. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  619. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  620. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  621. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  622. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  623. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  624. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  625. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  626. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  627. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  628. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  629. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  630. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  631. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  632. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  633. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  634. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  635. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  636. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  637. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  638. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  639. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  640. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  641. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  642. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  643. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  644. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  645. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  646. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  647. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  648. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  649. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  650. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  651. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  652. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  653. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  654. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  655. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  656. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  657. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  658. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  659. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  660. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  661. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  662. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  663. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  664. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  665. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  666. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  667. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  668. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  669. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  670. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  671. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/abap-CLvhMVsD.js +0 -0
  672. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/actionscript-3--17pq3dv.js +0 -0
  673. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/ada-C5qYipkI.js +0 -0
  674. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/andromeeda-vGVdxbeo.js +0 -0
  675. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/angular-html-BKhkKBsm.js +0 -0
  676. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/angular-ts-CYPbMJCA.js +0 -0
  677. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/apache-U0d_L8uA.js +0 -0
  678. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/apex-CGTLDQj6.js +0 -0
  679. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/apl-D7bENxmy.js +0 -0
  680. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/applescript-CCn79oCD.js +0 -0
  681. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/ara-4CJ0cIlV.js +0 -0
  682. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/arc-8BWbC-0s.js +0 -0
  683. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/array-BifhSqXX.js +0 -0
  684. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/asciidoc-DE70LPWp.js +0 -0
  685. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/asm-Cmm7eHzH.js +0 -0
  686. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/astro-B1l9MDUT.js +0 -0
  687. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/aurora-x-CDeNXAV0.js +0 -0
  688. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/awk-BWXHIvNe.js +0 -0
  689. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/ayu-dark-DluEY0Gj.js +0 -0
  690. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/ayu-light-C3h-C4tm.js +0 -0
  691. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/ayu-mirage-Bqwy1Gya.js +0 -0
  692. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/ballerina-B7ZEbQpA.js +0 -0
  693. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/bat-Bo4NYOV-.js +0 -0
  694. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/beancount-D-usSTwE.js +0 -0
  695. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/berry-DKpUyyne.js +0 -0
  696. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/bibtex-Ci_nEsc7.js +0 -0
  697. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/bicep-CUHmPFLl.js +0 -0
  698. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/bird2-C2hNVINV.js +0 -0
  699. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/blade-BlkqRXu6.js +0 -0
  700. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/bootstrap-BhLLvBaE.css +0 -0
  701. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/bsl-BkkzgIyY.js +0 -0
  702. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/c-PpPxyn8g.js +0 -0
  703. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/c3-CnJL0r0V.js +0 -0
  704. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/cadence-CQ2zXKGN.js +0 -0
  705. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/cairo-DLTphjLi.js +0 -0
  706. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/catppuccin-frappe-3VR1Za6u.js +0 -0
  707. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/catppuccin-latte-DwIHMF0Q.js +0 -0
  708. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/catppuccin-macchiato-DYnBP6_5.js +0 -0
  709. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/catppuccin-mocha-DYhrFGRu.js +0 -0
  710. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/character-entities-legacy-Wut6vMuj.js +0 -0
  711. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/chevrons-up-down-Dwo0Il5v.js +0 -0
  712. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-C0kf5ycP.js +0 -0
  713. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/chunk-55IACEB6-QyFAFTWp.js +0 -0
  714. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/chunk-BSJP7CBP-DIpfLhEz.js +0 -0
  715. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/chunk-Cyuzqnbw.js +0 -0
  716. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-C9D6P7Uq.js +0 -0
  717. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/chunk-NNHCCRGN-DmZbXBJw.js +0 -0
  718. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-CyVdgm44.js +0 -0
  719. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/chunk-XPW4576I-ru3A962d.js +0 -0
  720. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/clarity-SemFz856.js +0 -0
  721. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/clojure-DqKBuwfJ.js +0 -0
  722. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/cmake-Bj61d0ZC.js +0 -0
  723. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/cobol-BoXxFQjh.js +0 -0
  724. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/codeowners-C8r90Shi.js +0 -0
  725. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/codeql-oeQT6MSM.js +0 -0
  726. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/coffee-B5TREocO.js +0 -0
  727. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/common-lisp-Cv5bFMCO.js +0 -0
  728. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/coq-BrsZFFmf.js +0 -0
  729. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-PjRvINHM.js +0 -0
  730. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/cpp-CVIk4zoB.js +0 -0
  731. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/crystal-CvUuUt6_.js +0 -0
  732. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/csharp-Ct8U2NOr.js +0 -0
  733. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/css-D7o5g6xi.js +0 -0
  734. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/csv-Dx-8-gkx.js +0 -0
  735. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/cue-CE9AQfxI.js +0 -0
  736. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/cypher-ClKdZ_lG.js +0 -0
  737. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/cytoscape.esm-jXPf2pm4.js +0 -0
  738. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/d-qD-0Kul2.js +0 -0
  739. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/dagre-Uyq5yTtG.js +0 -0
  740. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/dark-plus-Cs2F2srj.js +0 -0
  741. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/dart-DkHntEIa.js +0 -0
  742. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/dax-BkyTk9wS.js +0 -0
  743. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/defaultLocale-C8Fc0cco.js +0 -0
  744. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/desktop-Dlh5hvp9.js +0 -0
  745. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/diff-BDNflWRl.js +0 -0
  746. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/diff-Dvab7kiv.css +0 -0
  747. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/diff-woXpYk--.js +0 -0
  748. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/dist-B7jLwIkG.js +0 -0
  749. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/dist-D4B_Bs5p.js +0 -0
  750. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/dist-reBDvVlc.js +0 -0
  751. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/docker-IyjqRm3v.js +0 -0
  752. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/dotenv-_5a1GRtc.js +0 -0
  753. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/dracula-BHWKrbxM.js +0 -0
  754. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/dracula-soft-5eyTD99u.js +0 -0
  755. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/dream-maker-DW3nJb8Q.js +0 -0
  756. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/edge-CmXZi-az.js +0 -0
  757. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/elixir-BoRIkjDi.js +0 -0
  758. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/elm-Cm7sFdI1.js +0 -0
  759. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/emacs-lisp-C9PiwqqW.js +0 -0
  760. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/erb-DuMAGb6i.js +0 -0
  761. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/erlang-Cphh6RMH.js +0 -0
  762. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/everforest-dark-sB-x3p7T.js +0 -0
  763. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/everforest-light-Df2xbC6M.js +0 -0
  764. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/fennel-DQxkIbk2.js +0 -0
  765. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/fish-BJitypiv.js +0 -0
  766. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/fluent-C03EYrpw.js +0 -0
  767. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/fortran-fixed-form-DEKoE2YW.js +0 -0
  768. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/fortran-free-form-CYNrtFtB.js +0 -0
  769. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/fsharp-D13ZGOAj.js +0 -0
  770. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/gdresource-C0sCabJj.js +0 -0
  771. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/gdscript-Cp2uCuqX.js +0 -0
  772. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/gdshader-CBce3t8t.js +0 -0
  773. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/genie-CV2tkWYe.js +0 -0
  774. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/gherkin-DExj1W_8.js +0 -0
  775. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/git-commit-BSykSTBG.js +0 -0
  776. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/git-rebase-D2tSwjJb.js +0 -0
  777. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/github-dark-C-LZuMrd.js +0 -0
  778. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/github-dark-default-DXG-b-1a.js +0 -0
  779. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/github-dark-dimmed-Bx1FflLF.js +0 -0
  780. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/github-dark-high-contrast-B_tTalzw.js +0 -0
  781. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/github-light-EUqPIrTm.js +0 -0
  782. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/github-light-default-BXViO-2h.js +0 -0
  783. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/github-light-high-contrast-B68TUdTA.js +0 -0
  784. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/gleam-CSRkHgEL.js +0 -0
  785. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/glimmer-js--VVKNatA.js +0 -0
  786. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/glimmer-ts-Bfa_wiNC.js +0 -0
  787. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/glsl-MPwHyiXQ.js +0 -0
  788. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/gn-ilITqXS6.js +0 -0
  789. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/gnuplot-7GGW24-e.js +0 -0
  790. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/go-BJwz_mda.js +0 -0
  791. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/graphlib-C22s9MDV.js +0 -0
  792. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/graphql-NW854Khs.js +0 -0
  793. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/groovy-CacY0gHj.js +0 -0
  794. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/gruvbox-dark-hard-C820rvS2.js +0 -0
  795. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/gruvbox-dark-medium-BPjhmG05.js +0 -0
  796. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/gruvbox-dark-soft-MrdJrrXF.js +0 -0
  797. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/gruvbox-light-hard-BC_s9l72.js +0 -0
  798. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/gruvbox-light-medium-BAWPOn9u.js +0 -0
  799. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/gruvbox-light-soft-BSMLrYjP.js +0 -0
  800. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/hack-CSl79E5u.js +0 -0
  801. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/haml-Dmb1YmHj.js +0 -0
  802. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/handlebars-Du8DtnRB.js +0 -0
  803. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/haskell-D8IpX4py.js +0 -0
  804. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/haxe-OTjmBuCE.js +0 -0
  805. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/hcl-Dh228itO.js +0 -0
  806. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/hjson-CxZEssPk.js +0 -0
  807. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/hlsl-Cvrh5tZx.js +0 -0
  808. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/horizon-CE9ld1lL.js +0 -0
  809. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/horizon-bright-Br1oVSNq.js +0 -0
  810. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/houston-CsvMBhTu.js +0 -0
  811. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/html-Kpl3bQKd.js +0 -0
  812. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/html-derivative-BEEWNZ8Y.js +0 -0
  813. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/http-HvMG3K54.js +0 -0
  814. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/hurl-CLh1t2ES.js +0 -0
  815. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/hxml-B0Qn7Nwc.js +0 -0
  816. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/hy-CZbG8q4J.js +0 -0
  817. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/imba-DsUTQ-LC.js +0 -0
  818. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/ini-B5eOa1yu.js +0 -0
  819. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/init-D6jRqBbL.js +0 -0
  820. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  821. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  822. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  823. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  824. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  825. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  826. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  827. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/java-Cst_eZTE.js +0 -0
  828. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/javascript-i_rUTyCW.js +0 -0
  829. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/jinja-CaXggA6f.js +0 -0
  830. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/jison-D9Fg2JgN.js +0 -0
  831. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/json-DS5j4FfK.js +0 -0
  832. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/json5-BR5RXkoi.js +0 -0
  833. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/jsonc-CYpm1nAK.js +0 -0
  834. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/jsonl-CmCQp5Yx.js +0 -0
  835. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/jsonnet-CJTPZ8u_.js +0 -0
  836. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/jssm-DXw9l8Rf.js +0 -0
  837. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/jsx-CFyhNHav.js +0 -0
  838. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/jsx-runtime-wSvXh6gi.js +0 -0
  839. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/julia-R8NNmfP1.js +0 -0
  840. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/just-BhhHYlS8.js +0 -0
  841. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/kanagawa-dragon-CXtmUGW6.js +0 -0
  842. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/kanagawa-lotus-BN08jTvb.js +0 -0
  843. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/kanagawa-wave-CTweb8Dz.js +0 -0
  844. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/katex-BGaDVET_.js +0 -0
  845. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/katex-BorAY7qD.css +0 -0
  846. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/kdl-CsD5j6eV.js +0 -0
  847. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/kotlin-DhhofPvG.js +0 -0
  848. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/kusto-BUv0MjJC.js +0 -0
  849. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/laserwave-C_8bwKvT.js +0 -0
  850. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/latex-D5k_uhWv.js +0 -0
  851. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/lean-CewbzKMR.js +0 -0
  852. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/less-DVTAwKKz.js +0 -0
  853. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/lib-BLxG8W6T.js +0 -0
  854. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/libesm-8-2luV-1.js +0 -0
  855. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/light-plus-DVQuIRkW.js +0 -0
  856. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/linear-BktLjFGX.js +0 -0
  857. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/liquid-Q0_hzjly.js +0 -0
  858. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/llvm-Cm23YOpf.js +0 -0
  859. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/log-BNLmms1o.js +0 -0
  860. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/logo-Cluzi2Zq.js +0 -0
  861. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/lua-VoGSg0xb.js +0 -0
  862. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/luau-CNKltnaQ.js +0 -0
  863. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/make-Dixweg8N.js +0 -0
  864. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/markdown-BYOwaDjH.js +0 -0
  865. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/marked.esm-DLdcrU5H.js +0 -0
  866. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/marko-D_aeUD__.js +0 -0
  867. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/material-theme-Bm3Qr25_.js +0 -0
  868. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/material-theme-darker-2IIEA8gg.js +0 -0
  869. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/material-theme-lighter-uhdI0v04.js +0 -0
  870. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/material-theme-ocean-CHQ94UKr.js +0 -0
  871. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/material-theme-palenight-B5W6OYN7.js +0 -0
  872. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/matlab-D7qyCx1q.js +0 -0
  873. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/mdc-BSifqehP.js +0 -0
  874. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/mdx-DQZ5AkYe.js +0 -0
  875. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/mermaid-Bk4SNUv9.js +0 -0
  876. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/min-dark-BSWPekZh.js +0 -0
  877. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/min-light-DDpmG2fV.js +0 -0
  878. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/mipsasm-BMqwQI7S.js +0 -0
  879. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/mojo-BgCJLMeH.js +0 -0
  880. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/monokai-CdkpiU2Y.js +0 -0
  881. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/moonbit-CaWjb8XO.js +0 -0
  882. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/move-B1IS1UjX.js +0 -0
  883. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/narrat-_X_XdTYD.js +0 -0
  884. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/nextflow-Bbiyy34d.js +0 -0
  885. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/nextflow-groovy-Dc_ddanL.js +0 -0
  886. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/nginx-CgHaWcsO.js +0 -0
  887. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/night-owl-DhmEMT88.js +0 -0
  888. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/night-owl-light-eJ-hLW7d.js +0 -0
  889. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/nim-BuixXxPS.js +0 -0
  890. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/nix-IvuFDN5E.js +0 -0
  891. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/nord-Cb4Vim4T.js +0 -0
  892. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/nushell-DcLAeLz5.js +0 -0
  893. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/objective-c-D1A_Heim.js +0 -0
  894. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/objective-cpp-BsSzOQcm.js +0 -0
  895. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/ocaml-O90oeIOV.js +0 -0
  896. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/odin-B1RWQWA5.js +0 -0
  897. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/one-dark-pro-CLwyXe_n.js +0 -0
  898. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/one-light-D7Lr4KcI.js +0 -0
  899. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/openscad-BUDT5pXO.js +0 -0
  900. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/ordinal-hYBb2elL.js +0 -0
  901. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/pascal-4ZHwLPI5.js +0 -0
  902. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/path-BWPyau1x.js +0 -0
  903. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/perl-BLMySlFJ.js +0 -0
  904. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/php-Czf_fybR.js +0 -0
  905. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/pkl-ot-7Btpt.js +0 -0
  906. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/plastic-DQwYfKfQ.js +0 -0
  907. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/plsql-DGHpHOYJ.js +0 -0
  908. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/po-BiJDBrnU.js +0 -0
  909. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/poimandres-DRFjx7u4.js +0 -0
  910. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/polar-C7UOKdEL.js +0 -0
  911. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/postcss-BXeXVLqQ.js +0 -0
  912. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/powerquery-DNMTfnFr.js +0 -0
  913. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/powershell-DshXNtvi.js +0 -0
  914. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/prisma-BsRQq5mF.js +0 -0
  915. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/prolog-iXnhIJG7.js +0 -0
  916. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/proto-DB4EqR-F.js +0 -0
  917. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/pug-CsZglf8T.js +0 -0
  918. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/puppet-CDv2pdJW.js +0 -0
  919. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/purescript-9MfHhQsQ.js +0 -0
  920. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/python-gzcpVVnB.js +0 -0
  921. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/qml-DcW_sT3t.js +0 -0
  922. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/qmldir-DCQb3MpD.js +0 -0
  923. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/qss-Fe1Jh2GI.js +0 -0
  924. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/r-D2d3McyU.js +0 -0
  925. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/racket-DcIDlBhZ.js +0 -0
  926. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/raku-B3gFvitq.js +0 -0
  927. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/razor-oFpUW61Z.js +0 -0
  928. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/red-CJ3rzSJv.js +0 -0
  929. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/reg-CRGYupPL.js +0 -0
  930. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/regexp-Bu0flJgP.js +0 -0
  931. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/rel-BtDbiS_P.js +0 -0
  932. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/riscv-Ckw8ddFX.js +0 -0
  933. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/ron-VUp2lXgN.js +0 -0
  934. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/rose-pine-BthvhNj6.js +0 -0
  935. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/rose-pine-dawn-Dg85fqjY.js +0 -0
  936. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/rose-pine-moon-hon4tzzS.js +0 -0
  937. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/rosmsg-CAekHB0j.js +0 -0
  938. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/rough.esm-CSKSodPl.js +0 -0
  939. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/rst-U6Eu7ipE.js +0 -0
  940. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/ruby-CUQsVT6d.js +0 -0
  941. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/rust-Cfkwpbl8.js +0 -0
  942. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/sas-CNBFrLhc.js +0 -0
  943. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/sass-DXrisJhu.js +0 -0
  944. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/scala-DKOlJaKm.js +0 -0
  945. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/scheme-DQCgrYNe.js +0 -0
  946. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/scss-CPnU-uuv.js +0 -0
  947. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/sdbl-bTVj8UrX.js +0 -0
  948. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/shaderlab-TOUzSsQk.js +0 -0
  949. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/shellscript-BbTp1yjG.js +0 -0
  950. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/shellsession-BmAC8SMF.js +0 -0
  951. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/slack-dark-DnToyrRv.js +0 -0
  952. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/slack-ochin-B2OO5cIa.js +0 -0
  953. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/smalltalk-B16xEiuN.js +0 -0
  954. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/snazzy-light-4G7pJPwS.js +0 -0
  955. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/solarized-dark-DV17i1UV.js +0 -0
  956. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/solarized-light-DSh2HLQt.js +0 -0
  957. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/solidity-CKzVLygQ.js +0 -0
  958. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/soy-CdbyEXp6.js +0 -0
  959. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/space-separated-tokens-DpjE5PGy.js +0 -0
  960. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/sparql-D_iOobhT.js +0 -0
  961. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/splunk-BC2Px7Mm.js +0 -0
  962. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/sql-hpBkusIy.js +0 -0
  963. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/src-D-NMWEou.js +0 -0
  964. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/ssh-config-BgfXC-Er.js +0 -0
  965. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/stata-DVbvk3qH.js +0 -0
  966. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/stylus-B6D30XZt.js +0 -0
  967. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/surrealql-DxccxuMd.js +0 -0
  968. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/svelte-DzNm5V2w.js +0 -0
  969. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/swift-DonLKvLd.js +0 -0
  970. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/synthwave-84-nFMaYfgc.js +0 -0
  971. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/system-verilog-DJ5XKQeo.js +0 -0
  972. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/systemd-BxMlprV5.js +0 -0
  973. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/talonscript-CohzipZa.js +0 -0
  974. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/tasl-DMoTqEGO.js +0 -0
  975. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/tcl-CZd0xW_V.js +0 -0
  976. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/templ-CsM0tTsw.js +0 -0
  977. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/terraform-DswuEJGm.js +0 -0
  978. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/tex-B0f_hYr8.js +0 -0
  979. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/tokyo-night-oM2G3aXe.js +0 -0
  980. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/toml-CcmNWLt0.js +0 -0
  981. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/ts-tags-Bf-FGGvT.js +0 -0
  982. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/tsv-sltzmVWM.js +0 -0
  983. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/tsx-DFvk7AwW.js +0 -0
  984. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/turtle-ByJddavk.js +0 -0
  985. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/twig-VJ4-Ntm0.js +0 -0
  986. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/typescript-DHTLvXzV.js +0 -0
  987. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/typespec-B88KGewJ.js +0 -0
  988. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/typst-DI99ib-x.js +0 -0
  989. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/v-DETTlOr0.js +0 -0
  990. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/v4-DqR3yzBO.js +0 -0
  991. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/vala-zf12oZj6.js +0 -0
  992. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/vb-Djn5o6TS.js +0 -0
  993. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/verilog-CiiDBU1e.js +0 -0
  994. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/vesper-D5bVUKB1.js +0 -0
  995. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/vhdl-BroJfC0k.js +0 -0
  996. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/viml-DvXPmvsu.js +0 -0
  997. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/vitesse-black-fwtXNY1n.js +0 -0
  998. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/vitesse-dark-BZCL-v6S.js +0 -0
  999. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/vitesse-light-VbXTXTou.js +0 -0
  1000. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/vue-D3dSYZKz.js +0 -0
  1001. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/vue-html-DQch_7VQ.js +0 -0
  1002. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/vue-vine-B67Dz05t.js +0 -0
  1003. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/vyper-CgoNMtux.js +0 -0
  1004. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/wasm-BnjxR4X6.js +0 -0
  1005. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/wasm-ByWQv1Qj.js +0 -0
  1006. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/wenyan-C8pVoKbM.js +0 -0
  1007. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/wgsl-BsKzXJz4.js +0 -0
  1008. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/wikitext-ClFFjSW2.js +0 -0
  1009. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/wit-DdvCle-K.js +0 -0
  1010. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/wolfram-DLL8P-h_.js +0 -0
  1011. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/xml-C33zriiW.js +0 -0
  1012. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/xsl-BFS2wyMt.js +0 -0
  1013. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/yaml-w0rMsuN4.js +0 -0
  1014. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/zenscript-BnlCZFoB.js +0 -0
  1015. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/assets/zig-CMLA9XwU.js +0 -0
  1016. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/apple-touch-icon.png +0 -0
  1017. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/arctecture.webp +0 -0
  1018. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/bimi-logo.svg +0 -0
  1019. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/favicon.ico +0 -0
  1020. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin-ext.woff2 +0 -0
  1021. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin.woff2 +0 -0
  1022. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin-ext.woff2 +0 -0
  1023. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin.woff2 +0 -0
  1024. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin-ext.woff2 +0 -0
  1025. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin.woff2 +0 -0
  1026. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin-ext.woff2 +0 -0
  1027. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin.woff2 +0 -0
  1028. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin-ext.woff2 +0 -0
  1029. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin.woff2 +0 -0
  1030. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin-ext.woff2 +0 -0
  1031. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin.woff2 +0 -0
  1032. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/icon-192.png +0 -0
  1033. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/icon-512.png +0 -0
  1034. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/icon.svg +0 -0
  1035. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/logo.png +0 -0
  1036. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/pythinker_animated.svg +0 -0
  1037. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/brand/robots.txt +0 -0
  1038. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/install.ps1 +0 -0
  1039. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/install.sh +0 -0
  1040. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/static/logo.png +0 -0
  1041. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/store/__init__.py +0 -0
  1042. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/web/store/sessions.py +0 -0
  1043. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/wire/__init__.py +0 -0
  1044. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/wire/file.py +0 -0
  1045. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/wire/jsonrpc.py +0 -0
  1046. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/wire/protocol.py +0 -0
  1047. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/wire/root_hub.py +0 -0
  1048. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/wire/serde.py +0 -0
  1049. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/wire/server.py +0 -0
  1050. {pythinker_code-0.51.0 → pythinker_code-0.53.0}/src/pythinker_code/wire/types.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythinker-code
3
- Version: 0.51.0
3
+ Version: 0.53.0
4
4
  Summary: Pythinker — an agentic CLI developed by Pythoughts-labs.
5
5
  Keywords: cli,agent,ai,coding-assistant,llm,claude,openai,terminal
6
6
  Author: Pythoughts-labs
@@ -115,16 +115,12 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
115
115
 
116
116
  ---
117
117
 
118
- ## 🆕 What's New in 0.51.0
118
+ ## 🆕 What's New in 0.53.0
119
119
 
120
- - **Model-aware thinking levels.** The thinking selector and Shift+Tab cycle now scope reasoning effort to what the active GPT-5-family model accepts; unsupported persisted levels are clamped before the API call.
121
- - **Cleaner diff cards.** Diff syntax highlighting no longer paints an opaque code-theme background over green/red row tints tints show through on every terminal.
122
- - **Truecolor in VS Code terminals.** Integrated terminals reporting `TERM_PROGRAM=vscode` (and forks) are promoted to truecolor so diff tints don't fall back to 16-color mode.
123
- - **No duplicate welcome banner on reload.** Same-session reloads (`/model`, `/theme`, `/thinking`, …) keep the existing banner instead of stacking a second splash.
124
- - **Update notice moved to footer.** The persistent "Restart to apply" / "Update available" line renders below the status/clock row, clear of the input box.
125
- - **Safer Homebrew self-upgrades.** Silent `brew upgrade` runs with cleanup/auto-update disabled so the in-use Cellar version isn't deleted mid-session.
120
+ - **GPT/ChatGPT re-auth crash fixed.** A "Could not resolve authentication method" crash when a session token is invalidated mid-session (OAuth refresh rotated on another machine) now routes into the standard `/login` re-authentication path instead of dumping a traceback.
121
+ - **Cleaner `ImplementAndJudge` label in the TUI.** The chain now shows `Implement & Judge <brief>` instead of the raw `ImplementAndJudge(4 args: …)` argument dump.
126
122
 
127
- Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.51.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
123
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.53.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
128
124
 
129
125
 
130
126
  ---
@@ -214,7 +210,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
214
210
 
215
211
  | Platform | Recommended install | Artifact source |
216
212
  |---|---|---|
217
- | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.51.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
213
+ | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.53.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
218
214
  | **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux">** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
219
215
  | **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew** | `brew install Pythoughts-labs/pythinker/pythinker-code` | auto-published Homebrew tap |
220
216
  | **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
@@ -242,7 +238,7 @@ pythinker # start the interactive TUI
242
238
 
243
239
  ### 🪟 Windows — native installer
244
240
 
245
- `PythinkerSetup-0.51.0.exe` is a signed* Inno Setup wizard. Installs per-user
241
+ `PythinkerSetup-0.53.0.exe` is a signed* Inno Setup wizard. Installs per-user
246
242
  into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
247
243
  PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
248
244
  the change. **No UAC prompt.**
@@ -253,13 +249,13 @@ irm https://pythinker.com/install.ps1 | iex
253
249
 
254
250
  # Or manually download the installer + checksum from the Releases page,
255
251
  # verify with Get-FileHash, then run:
256
- .\PythinkerSetup-0.51.0.exe
252
+ .\PythinkerSetup-0.53.0.exe
257
253
 
258
254
  # Open a fresh PowerShell
259
255
  pythinker --version
260
256
  ```
261
257
 
262
- **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.51.0.exe /ALLUSERS`
258
+ **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.53.0.exe /ALLUSERS`
263
259
  installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
264
260
 
265
261
  **Upgrade:** `pythinker update` from inside the running app — it downloads
@@ -317,26 +313,26 @@ attached to every GitHub Release.
317
313
 
318
314
  ```sh
319
315
  # Debian / Ubuntu (x86_64)
320
- sudo dpkg -i pythinker-code_0.51.0_amd64.deb
316
+ sudo dpkg -i pythinker-code_0.53.0_amd64.deb
321
317
  sudo apt-get install -f # only if dpkg reports missing deps
322
318
 
323
319
  # Debian / Ubuntu (ARM64)
324
- sudo dpkg -i pythinker-code_0.51.0_arm64.deb
320
+ sudo dpkg -i pythinker-code_0.53.0_arm64.deb
325
321
 
326
322
  # Fedora / RHEL / openSUSE (x86_64)
327
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.51.0/pythinker-code-0.51.0.x86_64.rpm
328
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.51.0/pythinker-code-0.51.0.x86_64.rpm.sha256
329
- sha256sum -c pythinker-code-0.51.0.x86_64.rpm.sha256
323
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.53.0/pythinker-code-0.53.0.x86_64.rpm
324
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.53.0/pythinker-code-0.53.0.x86_64.rpm.sha256
325
+ sha256sum -c pythinker-code-0.53.0.x86_64.rpm.sha256
330
326
  # Fedora / RHEL:
331
- sudo dnf install ./pythinker-code-0.51.0.x86_64.rpm
327
+ sudo dnf install ./pythinker-code-0.53.0.x86_64.rpm
332
328
  # openSUSE:
333
- sudo zypper install ./pythinker-code-0.51.0.x86_64.rpm
329
+ sudo zypper install ./pythinker-code-0.53.0.x86_64.rpm
334
330
 
335
331
  # Fedora / RHEL (aarch64)
336
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.51.0/pythinker-code-0.51.0.aarch64.rpm
337
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.51.0/pythinker-code-0.51.0.aarch64.rpm.sha256
338
- sha256sum -c pythinker-code-0.51.0.aarch64.rpm.sha256
339
- sudo dnf install ./pythinker-code-0.51.0.aarch64.rpm
332
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.53.0/pythinker-code-0.53.0.aarch64.rpm
333
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.53.0/pythinker-code-0.53.0.aarch64.rpm.sha256
334
+ sha256sum -c pythinker-code-0.53.0.aarch64.rpm.sha256
335
+ sudo dnf install ./pythinker-code-0.53.0.aarch64.rpm
340
336
  ```
341
337
 
342
338
  Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
@@ -345,8 +341,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
345
341
  **Verify before install:**
346
342
 
347
343
  ```sh
348
- sha256sum -c pythinker-code_0.51.0_amd64.deb.sha256 # Debian/Ubuntu
349
- sha256sum -c pythinker-code-0.51.0.x86_64.rpm.sha256 # Fedora/RHEL
344
+ sha256sum -c pythinker-code_0.53.0_amd64.deb.sha256 # Debian/Ubuntu
345
+ sha256sum -c pythinker-code-0.53.0.x86_64.rpm.sha256 # Fedora/RHEL
350
346
  ```
351
347
 
352
348
  **Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
@@ -50,16 +50,12 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
50
50
 
51
51
  ---
52
52
 
53
- ## 🆕 What's New in 0.51.0
53
+ ## 🆕 What's New in 0.53.0
54
54
 
55
- - **Model-aware thinking levels.** The thinking selector and Shift+Tab cycle now scope reasoning effort to what the active GPT-5-family model accepts; unsupported persisted levels are clamped before the API call.
56
- - **Cleaner diff cards.** Diff syntax highlighting no longer paints an opaque code-theme background over green/red row tints tints show through on every terminal.
57
- - **Truecolor in VS Code terminals.** Integrated terminals reporting `TERM_PROGRAM=vscode` (and forks) are promoted to truecolor so diff tints don't fall back to 16-color mode.
58
- - **No duplicate welcome banner on reload.** Same-session reloads (`/model`, `/theme`, `/thinking`, …) keep the existing banner instead of stacking a second splash.
59
- - **Update notice moved to footer.** The persistent "Restart to apply" / "Update available" line renders below the status/clock row, clear of the input box.
60
- - **Safer Homebrew self-upgrades.** Silent `brew upgrade` runs with cleanup/auto-update disabled so the in-use Cellar version isn't deleted mid-session.
55
+ - **GPT/ChatGPT re-auth crash fixed.** A "Could not resolve authentication method" crash when a session token is invalidated mid-session (OAuth refresh rotated on another machine) now routes into the standard `/login` re-authentication path instead of dumping a traceback.
56
+ - **Cleaner `ImplementAndJudge` label in the TUI.** The chain now shows `Implement & Judge <brief>` instead of the raw `ImplementAndJudge(4 args: …)` argument dump.
61
57
 
62
- Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.51.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
58
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.53.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
63
59
 
64
60
 
65
61
  ---
@@ -149,7 +145,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
149
145
 
150
146
  | Platform | Recommended install | Artifact source |
151
147
  |---|---|---|
152
- | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.51.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
148
+ | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.53.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
153
149
  | **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux">** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
154
150
  | **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew** | `brew install Pythoughts-labs/pythinker/pythinker-code` | auto-published Homebrew tap |
155
151
  | **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
@@ -177,7 +173,7 @@ pythinker # start the interactive TUI
177
173
 
178
174
  ### 🪟 Windows — native installer
179
175
 
180
- `PythinkerSetup-0.51.0.exe` is a signed* Inno Setup wizard. Installs per-user
176
+ `PythinkerSetup-0.53.0.exe` is a signed* Inno Setup wizard. Installs per-user
181
177
  into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
182
178
  PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
183
179
  the change. **No UAC prompt.**
@@ -188,13 +184,13 @@ irm https://pythinker.com/install.ps1 | iex
188
184
 
189
185
  # Or manually download the installer + checksum from the Releases page,
190
186
  # verify with Get-FileHash, then run:
191
- .\PythinkerSetup-0.51.0.exe
187
+ .\PythinkerSetup-0.53.0.exe
192
188
 
193
189
  # Open a fresh PowerShell
194
190
  pythinker --version
195
191
  ```
196
192
 
197
- **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.51.0.exe /ALLUSERS`
193
+ **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.53.0.exe /ALLUSERS`
198
194
  installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
199
195
 
200
196
  **Upgrade:** `pythinker update` from inside the running app — it downloads
@@ -252,26 +248,26 @@ attached to every GitHub Release.
252
248
 
253
249
  ```sh
254
250
  # Debian / Ubuntu (x86_64)
255
- sudo dpkg -i pythinker-code_0.51.0_amd64.deb
251
+ sudo dpkg -i pythinker-code_0.53.0_amd64.deb
256
252
  sudo apt-get install -f # only if dpkg reports missing deps
257
253
 
258
254
  # Debian / Ubuntu (ARM64)
259
- sudo dpkg -i pythinker-code_0.51.0_arm64.deb
255
+ sudo dpkg -i pythinker-code_0.53.0_arm64.deb
260
256
 
261
257
  # Fedora / RHEL / openSUSE (x86_64)
262
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.51.0/pythinker-code-0.51.0.x86_64.rpm
263
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.51.0/pythinker-code-0.51.0.x86_64.rpm.sha256
264
- sha256sum -c pythinker-code-0.51.0.x86_64.rpm.sha256
258
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.53.0/pythinker-code-0.53.0.x86_64.rpm
259
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.53.0/pythinker-code-0.53.0.x86_64.rpm.sha256
260
+ sha256sum -c pythinker-code-0.53.0.x86_64.rpm.sha256
265
261
  # Fedora / RHEL:
266
- sudo dnf install ./pythinker-code-0.51.0.x86_64.rpm
262
+ sudo dnf install ./pythinker-code-0.53.0.x86_64.rpm
267
263
  # openSUSE:
268
- sudo zypper install ./pythinker-code-0.51.0.x86_64.rpm
264
+ sudo zypper install ./pythinker-code-0.53.0.x86_64.rpm
269
265
 
270
266
  # Fedora / RHEL (aarch64)
271
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.51.0/pythinker-code-0.51.0.aarch64.rpm
272
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.51.0/pythinker-code-0.51.0.aarch64.rpm.sha256
273
- sha256sum -c pythinker-code-0.51.0.aarch64.rpm.sha256
274
- sudo dnf install ./pythinker-code-0.51.0.aarch64.rpm
267
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.53.0/pythinker-code-0.53.0.aarch64.rpm
268
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.53.0/pythinker-code-0.53.0.aarch64.rpm.sha256
269
+ sha256sum -c pythinker-code-0.53.0.aarch64.rpm.sha256
270
+ sudo dnf install ./pythinker-code-0.53.0.aarch64.rpm
275
271
  ```
276
272
 
277
273
  Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
@@ -280,8 +276,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
280
276
  **Verify before install:**
281
277
 
282
278
  ```sh
283
- sha256sum -c pythinker-code_0.51.0_amd64.deb.sha256 # Debian/Ubuntu
284
- sha256sum -c pythinker-code-0.51.0.x86_64.rpm.sha256 # Fedora/RHEL
279
+ sha256sum -c pythinker-code_0.53.0_amd64.deb.sha256 # Debian/Ubuntu
280
+ sha256sum -c pythinker-code-0.53.0.x86_64.rpm.sha256 # Fedora/RHEL
285
281
  ```
286
282
 
287
283
  **Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "pythinker-code"
3
- version = "0.51.0"
3
+ version = "0.53.0"
4
4
  description = "Pythinker — an agentic CLI developed by Pythoughts-labs."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -15,6 +15,77 @@ GitHub Releases page; `0.8.0` is the new starting line.
15
15
 
16
16
  ## Unreleased
17
17
 
18
+ ## 0.53.0 (2026-06-23)
19
+
20
+ - **GPT/ChatGPT session re-authentication crash fixed.** A fatal "Could not
21
+ resolve authentication method" error when a session token is invalidated
22
+ mid-session (e.g. the OAuth refresh token was rotated by signing in on
23
+ another machine) now surfaces as a typed 401 that routes into the standard
24
+ re-authentication path — prompting `/login` rather than dumping a traceback.
25
+ - **`ImplementAndJudge` renders as `Implement & Judge — <brief>` in the TUI.**
26
+ The chain no longer shows the raw `ImplementAndJudge(4 args: …)` argument
27
+ dump; it now displays a clean `Implement & Judge — <brief>` label matching
28
+ the style of other named subagent invocations.
29
+
30
+ ## 0.52.0 (2026-06-23)
31
+
32
+ - **`InvalidToolError` now names the failing tool and the reason.** A bad
33
+ tool path in `agent.yaml` (typo, missing class, or — most commonly — a
34
+ `pythinker` binary built before the tool was added) used to surface as a
35
+ bare `Invalid tools: ['pythinker_code.tools.agent:ImplementAndJudge']`
36
+ with the actual reason buried in the log file. The aggregated error now
37
+ lists each bad tool with the per-tool reason, and a class-name miss logs
38
+ a `Did you mean '<Closest>'?` hint. A constructor exception on one tool
39
+ is caught per-tool so the user gets one clear error instead of a
40
+ traceback. Rebuild the binary (`make build-bin`) if the new error names
41
+ a tool that exists in the working tree.
42
+ - **Auto-chain `implementer` → `judge` for non-trivial scoped edits.** The new
43
+ `ImplementAndJudge` tool runs `implementer` once, hands the artifact to
44
+ `judge`, and on `NEEDS_WORK` re-invokes `implementer` once with the
45
+ judge's `REQUIRED FIXES` under a `## Revision brief` section before
46
+ re-judging. Two implementer invocations is the hard cap — a
47
+ still-`NEEDS_WORK` after revision surfaces the contradiction and stops.
48
+ Parent agents should call `ImplementAndJudge` instead of `Agent:
49
+ implementer` + `Agent: judge`; bare `judge` calls remain the right shape
50
+ for non-implementation reviews (reports, audits, severity-scored
51
+ findings).
52
+ - **Judge adopts the minimum-diff rubric dimension.** Every non-trivial diff
53
+ the judge reviews is now checked against the reduction ladder
54
+ (skip-need → reuse-stdlib → use-native → use-installed-dep → one-line →
55
+ minimum) and the minimum-diff rubric (no abstractions, no new deps
56
+ without justification, no new config keys without a consumer, no
57
+ reformatting churn outside the changed lines). The judge applies the full
58
+ ladder uniformly — there is no mode switch on the judge.
59
+ - **Bundled judge-branded skills.** `judge-minimum-diff` (the rubric
60
+ applied as a judge dimension) and `judge-overengineering-review` (the
61
+ parent-facing review checklist) ship as static default skills, replacing
62
+ ad-hoc prose in the system prompt with explicit, versionable content.
63
+ - **Fix OpenAI Responses requests that could still send `role="system"` after
64
+ switching to a newer Pythinker catalog model (gpt-5.5, gpt-5.3-codex,
65
+ gpt-5.3-codex-spark, or any user-defined fine-tune).** Pythinker observed
66
+ OpenAI returning `System messages are not allowed` on this path, but the
67
+ `system→developer` conversion was previously gated on the openai SDK's
68
+ `ResponsesModel` literal, which lags Pythinker's own model catalog. The
69
+ conversion now runs unconditionally in `OpenAIResponses`, so all local
70
+ system messages are normalized before sending. Also fixes the model-switch
71
+ carry-over path (`_carry_context_to_session`) whose seeded `role="system"`
72
+ summary message was sent verbatim on the first request after a switch.
73
+ - **Background bash tasks (npm dev, docker run) no longer show the agent
74
+ verb spinner.** Pure-bash background work now shows a fixed "Running in
75
+ background…" label instead of "Composing…/Brewing…" verbs, which read as
76
+ agent activity. Mixed bash+agent background work keeps the verb spinner
77
+ while the agent is actively producing tokens.
78
+ - **Quiet background tasks no longer force a 0.1s prompt repaint.** When a
79
+ background task has produced no output for 2 seconds, the refresh loop
80
+ drops to the idle 1.0s interval instead of spinning the braille marker at
81
+ 12.5 fps — fixing the "stuck spinner" look for long-running dev servers
82
+ on Windows VS Code.
83
+ - **Welcome banner no longer shows a stale "Update available" chip after a
84
+ successful /update.** The banner chip now mirrors the under-input notice:
85
+ when the update has landed this session (state=UPDATED, smoke check passed),
86
+ it shows "Updated X → vY. Restart to apply." instead of telling the user
87
+ to re-run an update that already completed.
88
+
18
89
  ## 0.51.0 (2026-06-22)
19
90
 
20
91
  - **Reasoning levels now match each GPT model.** The thinking selector and
@@ -7,6 +7,7 @@ agent:
7
7
  tools:
8
8
  - "pythinker_code.tools.agent:Agent"
9
9
  - "pythinker_code.tools.agent:RunAgents"
10
+ - "pythinker_code.tools.agent:ImplementAndJudge"
10
11
  - "pythinker_code.tools.skill:ReadSkill"
11
12
  # - "pythinker_code.tools.dmail:SendDMail"
12
13
  # - "pythinker_code.tools.think:Think"
@@ -18,6 +18,7 @@ agent:
18
18
 
19
19
  ## Context Gate
20
20
  - Require the parent's packet: the original request, the diff or changed files, the commands actually run with their results, residual risks, and the draft final answer. If a load-bearing piece is missing, verdict BLOCKED and name it.
21
+ - When judging a code-change summary produced by `implementer`, require the implementer's `<coding_artifact>` block in the packet; if it is missing for a non-trivial code change, verdict BLOCKED and name it.
21
22
 
22
23
  ## External Claims (offline gate)
23
24
  You run offline by design — the verify profile blocks network and doc-lookup tools, so you never go online. External claims are judged by the parent's evidence, never by your own research or training-cutoff memory:
@@ -39,6 +40,7 @@ agent:
39
40
  - Safety and scope: no unsafe or destructive action, no secret or PII exposure, no scope creep beyond the request.
40
41
  - Production guardrails: changed code that touches caches, resources, trust boundaries, shared state, outbound requests, long-lived listeners, or authorization context has explicit defenses for stampedes, cleanup, schemas, races, retry storms, leaks, and IDOR risks.
41
42
  - Findings quality: for reports, each finding is actionable, anchored to evidence, and severity-ranked consistently with the base prompt's severity rubric (critical/high/medium/low/info).
43
+ - Minimum-diff: the diff takes the smallest rung of the reduction ladder (skip-need → reuse-stdlib → use-native → use-installed-dep → one-line → minimum) before adding new code; no abstractions, dependencies, config keys, files, or error paths that the brief did not ask for. New dependencies require a one-line justification; new config keys require a one-line consumer. The ladder applies uniformly — judge once, not per-mode.
42
44
 
43
45
  ## Role Exit Checklist
44
46
  - PASS: sound; at most minor wording nits remain.
@@ -97,6 +97,8 @@ Build only after requirements are understood (ask if unclear) and evidence is ga
97
97
 
98
98
  For refactors, update every call site the interface change touches, and do not alter existing logic — especially in tests — beyond what the change requires. For features, add tests if the project already has tests. Migrations go additive before destructive, reversible where the framework allows; never edit a migration that already shipped. Identify the synchronization model in use and conform to it; explicitly flag any new lock, atomic, or async-boundary change. Update comments, docstrings, and README snippets your change makes false — stale documentation is a bug you just wrote.
99
99
 
100
+ **Default to `ImplementAndJudge` for non-trivial scoped edits** instead of calling `implementer` and `judge` separately. The chain runs `implementer` first, hands the artifact to `judge`, and on `NEEDS_WORK` re-invokes `implementer` once with the judge's `REQUIRED FIXES` under a `## Revision brief` section before re-judging. The implementer cap is two invocations total — a still-`NEEDS_WORK` after revision surfaces the contradiction to you and stops. Pass `scope` so the judge can `git diff` only the allowed paths; pass `acceptance` to give the judge concrete pass conditions beyond the rubric.
101
+
100
102
  ### 4.5 Research & file generation
101
103
 
102
104
  For research or multimedia tasks (images, video, PDFs, docs, spreadsheets, presentations): clarify requirements first, plan before deep or wide research, design search queries deliberately. Detect tools already in the environment before installing anything; third-party installs go in an isolated/virtual environment. After generating or editing any media file, read it back to confirm the content. Never install to or delete from outside the working directory without confirmation.
@@ -121,6 +123,8 @@ For research or multimedia tasks (images, video, PDFs, docs, spreadsheets, prese
121
123
 
122
124
  **Judge gate.** Before delivering high-stakes or hard-to-reverse work, run an independent `judge` subagent as the last step when available. Triggers — any one suffices: a change spanning multiple files or touching production guardrail surfaces (§6); a deliverable the user will merge, deploy, publish, or act on; a security audit or any severity-scored findings report; a release or destructive action. When unsure whether work is high-stakes, treat it as high-stakes; skip it for low-stakes, reversible, or trivial work. Hand the judge a tight packet: original request, the diff or changed files, the commands actually run with their results, residual risks, and your draft answer. It is one cheap spot-checking pass that gates your evidence — it does not redo work or replace deterministic tests and lint, so run those first. Treat `NEEDS_WORK` or `BLOCKED` as a stop: fix or revise, re-judge only if the change was material. When the judge is unavailable, walk the same checklist yourself, lead with the same `PASS`/`NEEDS_WORK`/`BLOCKED` verdict, state what verification actually ran, and put any missing packet element under **BLOCKERS**.
123
125
 
126
+ Default to `ImplementAndJudge` for non-trivial scoped edits (see §4.4); reserve a bare `judge` call for non-implementation reviews — reports, audits, severity-scored findings, or answers that don't ship code.
127
+
124
128
  **Background shell** (root agent only). Launch long-running commands via `Shell` with `run_in_background=true` and a short `description`; the system notifies you at terminal states. `TaskList` re-enumerates active tasks (especially after context compaction); `TaskOutput` gives non-blocking snapshots (`block=true` only to intentionally wait); `TaskStop` cancels. After starting a background task, default to returning control to the user. The only task-management slash command for users is `/task` — never invent subcommands like `/task list` or `/tasks`. Subagents and sessions without these tools must not assume background-task control.
125
129
 
126
130
  **Skills (`ReadSkill`).** Load a skill's exact instructions before applying its workflow — mandatory for `review-pr`, `diagnose-ci-failures`, `fix-errors`, `implement-specs`, `spec-driven-implementation`, `check-impl-against-spec`, `resolve-merge-conflicts`, and `create-pr`. Read skill details only when needed, to conserve context. Catalog and scope precedence in §12.
@@ -0,0 +1,104 @@
1
+ ---
2
+ name: judge-minimum-diff
3
+ description: Reduction-ladder and minimum-diff checks the Pythinker judge subagent applies to every non-trivial diff.
4
+ ---
5
+
6
+ # Judge Minimum-Diff Lens
7
+
8
+ Use when judging a code change, diff, or implementation report. This is the
9
+ rubric dimension the Pythinker judge subagent applies to every non-trivial
10
+ diff — the same ladder that lives in the base system prompt's §6 (Code
11
+ Standards), surfaced here as an explicit rubric so the judge, an
12
+ implementer doing pre-flight, or a reviewer running the over-engineering
13
+ skill apply it uniformly.
14
+
15
+ The judge applies the full ladder. There is no mode switch on the judge
16
+ (`lite` / `full` / `ultra`); the implementer is the role that would carry a
17
+ mode toggle if one is ever introduced.
18
+
19
+ ## The ladder — walk it before writing code; stop at the first rung that holds
20
+
21
+ 1. **Does this need to exist at all?** A speculative need is skipped, said so
22
+ in one line. YAGNI is the highest rung.
23
+ 2. **Does the standard library do it?** Use it.
24
+ 3. **Does a native platform or framework feature cover it?** A database
25
+ constraint over an app-level check, a built-in form control over a picker
26
+ library, the language's own construct over a hand-rolled one — use it.
27
+ 4. **Does a dependency already in the manifest solve it?** Use it; never add
28
+ a new dependency for what a few lines cover.
29
+ 5. **Can it be one line?** Make it one line.
30
+ 6. **Only then** write the minimum code that works.
31
+
32
+ When two rungs both hold, take the higher one and move on. The ladder is a
33
+ reflex, not a research project. None of this overrides the guards below:
34
+ trust-boundary validation, error handling that prevents data loss, security,
35
+ and accessibility stay in even at rung 5.
36
+
37
+ ## Minimum-diff rubric
38
+
39
+ A diff passes the minimum-diff check when **all** of these hold:
40
+
41
+ - The change takes the smallest rung of the ladder above before adding new
42
+ code.
43
+ - There are **no abstractions** (no interface with one implementation, no
44
+ factory for one product, no config layer for a value that never changes)
45
+ that the brief did not ask for.
46
+ - There are **no new dependencies** unless the brief asked for one; when one
47
+ is added, a one-line justification names why an already-installed
48
+ dependency or the standard library couldn't cover it.
49
+ - There are **no new config keys** unless a consumer is named in the same
50
+ diff (a value with no consumer is over-engineering).
51
+ - There are **no new files** unless the brief asked for them; reuse the
52
+ nearest neighbor's module.
53
+ - There are **no error paths for impossible scenarios**; validate at
54
+ boundaries, not deep in business logic.
55
+ - There is **no reformatting, renaming, or wrapping churn** outside the
56
+ changed lines. Formatting churn is scope creep.
57
+ - **Comments only where they earn their keep**: non-obvious algorithms,
58
+ deliberate simplifications whose ceiling matters, business rules, or
59
+ genuine `TODO:` technical debt. No self-evident comments.
60
+
61
+ When a deliberate simplification has a known ceiling (a coarse lock, an
62
+ O(n²) scan, a naive heuristic), mark it with a `judge:` comment naming the
63
+ ceiling and the upgrade path. The judge reads these comments as evidence,
64
+ not as license.
65
+
66
+ ## When NOT to be lazy
67
+
68
+ Never simplify away:
69
+
70
+ - Input validation at trust boundaries.
71
+ - Error handling that prevents data loss (rollback, idempotency, atomic
72
+ state, listener cleanup).
73
+ - Security measures (parameterized SQL, canonicalized paths, encoded output,
74
+ hand-off-crypto, secret hygiene).
75
+ - Accessibility basics (semantic HTML, alt text, focus order, keyboard
76
+ reachability, contrast).
77
+ - Anything the user explicitly requested.
78
+
79
+ A junior-friendly check: would a senior engineer call this over-engineered?
80
+ If yes, simplify. If no, the diff is at the right rung.
81
+
82
+ ## How the judge applies this rubric
83
+
84
+ When the judge receives an `implementer` packet:
85
+
86
+ - **Evidence**: the implementer's `<coding_artifact>` block is the
87
+ implementer's claim; the judge verifies it against the diff.
88
+ - **Currency / Fidelity / Verification / Safety / Scope / Production
89
+ guardrails / Findings quality**: per the standard judge rubric in the base
90
+ prompt.
91
+ - **Minimum-diff** (this rubric): the judge checks every bullet under
92
+ *Minimum-diff rubric* above. A NEEDS_WORK verdict is required when the
93
+ diff adds any of the over-engineering shapes, even if the change works.
94
+
95
+ The verdict contract is unchanged: `PASS` / `NEEDS_WORK` / `BLOCKED` as the
96
+ first word of SUMMARY. The chain tool parses the verdict verbatim and
97
+ optionally re-invokes the implementer once on `NEEDS_WORK`.
98
+
99
+ ## Hardware and physical-world caveat
100
+
101
+ Hardware is never the ideal on paper: a real clock drifts, a real sensor
102
+ reads off, a PCA9685 runs a few percent fast. Leave the calibration knob,
103
+ not just less code. The physical world needs tuning a minimal model can't
104
+ see.
@@ -0,0 +1,104 @@
1
+ ---
2
+ name: judge-overengineering-review
3
+ description: Over-engineering review checklist the parent runs before declaring non-trivial code changes done.
4
+ ---
5
+
6
+ # Judge Over-Engineering Review
7
+
8
+ Use when reviewing a non-trivial diff for over-engineering before declaring
9
+ the work done. This skill is the parent-facing companion to the
10
+ `judge-minimum-diff` rubric — the parent runs it as a pre-flight pass, and
11
+ the `judge` subagent applies the same rubric as a quality-gate dimension.
12
+
13
+ ## When to run
14
+
15
+ - Before declaring any non-trivial code change complete.
16
+ - During code review of a pull request that touches more than one file or
17
+ introduces new abstractions.
18
+ - When a previous implementer or coder's diff feels heavier than the
19
+ brief required.
20
+
21
+ For trivial one-line fixes or pure typo corrections, skip this skill —
22
+ YAGNI applies to review overhead too.
23
+
24
+ ## Workflow
25
+
26
+ 1. **Read the brief** the implementer was given. Note the explicit asks and
27
+ the explicit non-goals.
28
+ 2. **Read the diff** scoped to the allowed paths. Note every new file, new
29
+ abstraction, new dependency, and new config key.
30
+ 3. **Walk the reduction ladder** from `judge-minimum-diff`:
31
+
32
+ - Did the diff take the highest rung that holds?
33
+ - Is there stdlib / native / installed-dep reuse the diff missed?
34
+ - Could the change be one line and isn't?
35
+
36
+ 4. **Score each finding** under the rubric below.
37
+ 5. **Report** in the parent-facing review block format: `path:line` for
38
+ every finding, severity per §4.1 of the base prompt, the suggested
39
+ smallest fix.
40
+
41
+ ## Review checklist
42
+
43
+ A diff fails the over-engineering review when it has **any** of:
44
+
45
+ - **Speculative abstraction.** Interface with one implementation, factory
46
+ for one product, abstract base class with one subclass, config layer for
47
+ a value that never varies.
48
+ - **New dependency without justification.** The standard library, a
49
+ native platform feature, or an already-installed dependency could have
50
+ covered it. A new dep needs a one-line justification in the diff or PR
51
+ body.
52
+ - **New config key without a consumer in the same diff.** A new key with no
53
+ reader is dead configuration.
54
+ - **New file without brief backing.** A new module/folder the brief did not
55
+ ask for, even if "tidier". Reuse the nearest neighbor first.
56
+ - **Error handling for impossible scenarios.** Validating deep in business
57
+ logic for inputs the boundary already filtered; re-validating after a
58
+ function the caller controls.
59
+ - **Boilerplate scaffolding "for later".** TODOs that fill a stub, fixtures
60
+ the test doesn't use, helper modules with no callers yet.
61
+ - **Formatting churn outside the changed lines.** Reformat, rename, or
62
+ rewrap on lines the brief did not ask to change.
63
+ - **Self-evident comments.** Restating what the next line of code already
64
+ says. Comments only earn their keep when they document non-obvious
65
+ algorithms, deliberate simplifications with a known ceiling, business
66
+ rules, or genuine `TODO:` debt.
67
+ - **Clever over boring.** Clever is what someone decodes at 3am. Boring is
68
+ the default; clever needs justification.
69
+ - **Length-as-quality.** A 500-line diff to replace a 50-line problem is a
70
+ finding, not an accomplishment.
71
+
72
+ A diff **passes** when none of the above apply, every non-trivial design
73
+ choice has a one-line reason in the diff or PR body, and the deliberate
74
+ simplifications (if any) carry a `judge:` comment naming the ceiling.
75
+
76
+ ## When NOT to flag
77
+
78
+ - **Trust-boundary validation.** Always keep — never call this
79
+ over-engineering.
80
+ - **Error handling that prevents data loss** (rollback, idempotency,
81
+ atomic state, listener cleanup). Always keep.
82
+ - **Security measures** (parameterized SQL, canonicalized paths, encoded
83
+ output, secret hygiene). Always keep.
84
+ - **Accessibility basics**. Always keep.
85
+ - **User-explicit asks.** If the brief says "add a factory", add the
86
+ factory. Don't second-guess explicit requirements.
87
+
88
+ ## Output
89
+
90
+ A parent-facing review block:
91
+
92
+ ```text
93
+ SUMMARY
94
+ OVER-ENGINEERING FINDINGS
95
+ - severity: path:line — what + why + smallest fix
96
+ NOT OVER-ENGINEERED (deliberate)
97
+ - path:line — why this is at the right rung
98
+ VERDICT
99
+ PASS | NEEDS_WORK | BLOCKED
100
+ ```
101
+
102
+ `PASS` = diff is at the right rung; ship it. `NEEDS_WORK` = at least one
103
+ finding above applies; revise and re-review. `BLOCKED` = the brief and the
104
+ diff disagree about scope; clarify with the user before continuing.