pythinker-code 0.56.0__tar.gz → 0.57.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 (1092) hide show
  1. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/PKG-INFO +47 -29
  2. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/README.md +46 -28
  3. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/pyproject.toml +5 -1
  4. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/CHANGELOG.md +26 -0
  5. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/system.md +2 -2
  6. pythinker_code-0.57.0/src/pythinker_code/benchmark/__init__.py +5 -0
  7. pythinker_code-0.57.0/src/pythinker_code/benchmark/activity.py +88 -0
  8. pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/__init__.py +1 -0
  9. pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/suites/__init__.py +1 -0
  10. pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/suites/pythinker-core.json +11 -0
  11. pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/suites/pythinker-smoke.json +10 -0
  12. pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/tasks/__init__.py +1 -0
  13. pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/tasks/core-atomic-transfer.json +21 -0
  14. pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/tasks/core-dedup-order.json +21 -0
  15. pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/tasks/core-explicit-none-metadata.json +21 -0
  16. pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/tasks/core-safe-path-join.json +21 -0
  17. pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/tasks/smoke-add-small-function.json +21 -0
  18. pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/tasks/smoke-edit-readme.json +20 -0
  19. pythinker_code-0.57.0/src/pythinker_code/benchmark/bundled/tasks/smoke-fix-python-test.json +21 -0
  20. pythinker_code-0.57.0/src/pythinker_code/benchmark/commands.py +633 -0
  21. pythinker_code-0.57.0/src/pythinker_code/benchmark/compare.py +72 -0
  22. pythinker_code-0.57.0/src/pythinker_code/benchmark/discovery.py +169 -0
  23. pythinker_code-0.57.0/src/pythinker_code/benchmark/environment.py +74 -0
  24. pythinker_code-0.57.0/src/pythinker_code/benchmark/errors.py +57 -0
  25. pythinker_code-0.57.0/src/pythinker_code/benchmark/estimate.py +69 -0
  26. pythinker_code-0.57.0/src/pythinker_code/benchmark/export.py +69 -0
  27. pythinker_code-0.57.0/src/pythinker_code/benchmark/records.py +191 -0
  28. pythinker_code-0.57.0/src/pythinker_code/benchmark/redact.py +46 -0
  29. pythinker_code-0.57.0/src/pythinker_code/benchmark/report.py +143 -0
  30. pythinker_code-0.57.0/src/pythinker_code/benchmark/runner.py +425 -0
  31. pythinker_code-0.57.0/src/pythinker_code/benchmark/suites.py +82 -0
  32. pythinker_code-0.57.0/src/pythinker_code/benchmark/swe.py +193 -0
  33. pythinker_code-0.57.0/src/pythinker_code/benchmark/tasks.py +186 -0
  34. pythinker_code-0.57.0/src/pythinker_code/benchmark/types.py +11 -0
  35. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/config.py +15 -0
  36. pythinker_code-0.57.0/src/pythinker_code/soul/dynamic_injections/active_skills.py +131 -0
  37. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/pythinkersoul.py +4 -0
  38. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/slash.py +75 -0
  39. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/__init__.py +26 -0
  40. pythinker_code-0.57.0/src/pythinker_code/ui/shell/focus_model.py +105 -0
  41. pythinker_code-0.57.0/src/pythinker_code/ui/shell/focus_surface.py +94 -0
  42. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/prompt.py +204 -5
  43. pythinker_code-0.57.0/src/pythinker_code/ui/shell/tui/__init__.py +17 -0
  44. pythinker_code-0.57.0/src/pythinker_code/ui/shell/tui/components.py +94 -0
  45. pythinker_code-0.57.0/src/pythinker_code/ui/shell/tui/diff.py +37 -0
  46. pythinker_code-0.57.0/src/pythinker_code/ui/shell/tui/scene.py +20 -0
  47. pythinker_code-0.57.0/src/pythinker_code/ui/shell/tui/scheduler.py +23 -0
  48. pythinker_code-0.57.0/src/pythinker_code/ui/shell/tui/width.py +16 -0
  49. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/__init__.py +8 -0
  50. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_blocks.py +81 -2
  51. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_interactive.py +83 -7
  52. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_live_view.py +96 -6
  53. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/pyinstaller.py +1 -0
  54. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/slashcmd.py +2 -1
  55. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/architecture-7EHR7CIX-CFMeP6t3.js +1 -0
  56. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/architectureDiagram-3BPJPVTR-D-oTCQ9W.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/architectureDiagram-3BPJPVTR-CMjTHbQr.js +1 -1
  57. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/blockDiagram-GPEHLZMM-D34_j76S.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/blockDiagram-GPEHLZMM-DbNV66qZ.js +1 -1
  58. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/bootstrap-CpUR7Koq.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/bootstrap-DHJiVjsg.js +5 -5
  59. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/c4Diagram-AAUBKEIU-C2mqoh1h.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/c4Diagram-AAUBKEIU-_L7KfhiY.js +1 -1
  60. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/channel-CIonX3Sg.js +1 -0
  61. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/chunk-2J33WTMH-ShdbwtE-.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-2J33WTMH-Dsc-vkPL.js +1 -1
  62. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/chunk-3OPIFGDE-CJUUK0QK.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-3OPIFGDE-DkPxKRGJ.js +1 -1
  63. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/chunk-5ZQYHXKU-xeGaUwvY.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-5ZQYHXKU-DKsi-Xj_.js +1 -1
  64. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/chunk-727SXJPM-Cy_RD8yP.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-727SXJPM-DusG3GJh.js +1 -1
  65. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/chunk-AQP2D5EJ-DMNmGzA_.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-AQP2D5EJ-F4_a1a4u.js +1 -1
  66. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/chunk-CSCIHK7Q-BkY8yJxw.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-CSCIHK7Q-9L6bDdXh.js +1 -1
  67. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/chunk-JAPRZBRM-R_RAdw32.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-JAPRZBRM-BavSbd1t.js +4 -4
  68. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/chunk-KSCS5N6A-DOUIBKHM.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-KSCS5N6A-D9NmS9a_.js +1 -1
  69. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/chunk-L5ZTLDWV-D_5ebsa9.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-L5ZTLDWV-BSMfQ2IM.js +1 -1
  70. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/chunk-LZXEDZCA-CNIP5ZJc.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-LZXEDZCA-r4sJTTgY.js +2 -2
  71. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/chunk-ND2GUHAM-CJ5TG2Ro.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-ND2GUHAM-BL7ERbud.js +1 -1
  72. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/chunk-NZK2D7GU-COffKE0S.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-NZK2D7GU-G9jWyqp3.js +1 -1
  73. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/chunk-O5CBEL6O-C5w7EJCo.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-O5CBEL6O-QBSTZ593.js +1 -1
  74. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/chunk-WU5MYG2G-DWLWBJUd.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-WU5MYG2G-DYANwips.js +1 -1
  75. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/classDiagram-4FO5ZUOK-I2Og_7hO.js +1 -0
  76. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/classDiagram-v2-Q7XG4LA2-I2Og_7hO.js +1 -0
  77. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-C0JwfXrb.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-uNhBh7Jk.js +1 -1
  78. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/dagre-BM42HDAG-BS7OVne_.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/dagre-BM42HDAG-Cb91t8pu.js +1 -1
  79. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/diagram-2AECGRRQ-BTg3lFST.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/diagram-2AECGRRQ-CLZIVQzB.js +1 -1
  80. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/diagram-5GNKFQAL-BUAno9D9.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/diagram-5GNKFQAL-B6DPBt7v.js +1 -1
  81. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/diagram-KO2AKTUF-CGpQcGTu.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/diagram-KO2AKTUF-vb7QYejh.js +1 -1
  82. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/diagram-LMA3HP47-DdfoR8iH.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/diagram-LMA3HP47-DdFQHXp3.js +1 -1
  83. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/diagram-OG6HWLK6-B-2nIGQC.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/diagram-OG6HWLK6-nJ1_wWcq.js +1 -1
  84. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/dist-v9L6Y4tR.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/dist-D1EQtQ8U.js +1 -1
  85. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/erDiagram-TEJ5UH35-Dkn6nBXX.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/erDiagram-TEJ5UH35-sZ8vCcB8.js +1 -1
  86. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/eventmodeling-FCH6USID-Nxb8XybE.js +1 -0
  87. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/flowDiagram-I6XJVG4X-CqC1Lcvt.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/flowDiagram-I6XJVG4X-NagVrMCI.js +1 -1
  88. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/ganttDiagram-6RSMTGT7-BAoDDdO1.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/ganttDiagram-6RSMTGT7-D-1_XhUQ.js +1 -1
  89. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/gitGraph-WXDBUCRP-B6BXhOMH.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/gitGraph-WXDBUCRP-DT3QZQPP.js +1 -1
  90. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/gitGraphDiagram-PVQCEYII-DYk1hKu6.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/gitGraphDiagram-PVQCEYII-D8r0djS7.js +1 -1
  91. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/index-d4P4XfiK.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/index-2eH9dBB3.js +2 -2
  92. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/info-J43DQDTF-EId6Oz5v.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/info-J43DQDTF-CsKNLP2n.js +1 -1
  93. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/infoDiagram-5YYISTIA-CVSEC85r.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/infoDiagram-5YYISTIA-CIiPQAr1.js +1 -1
  94. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/ishikawaDiagram-YF4QCWOH-B8YI7s2L.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/ishikawaDiagram-YF4QCWOH-B0xZv1Ps.js +1 -1
  95. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/journeyDiagram-JHISSGLW-BfAOteUW.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/journeyDiagram-JHISSGLW-CSiKJ4Vm.js +1 -1
  96. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/kanban-definition-UN3LZRKU-DC0NPat0.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/kanban-definition-UN3LZRKU-BYVbc39d.js +1 -1
  97. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/line-RPziCRsV.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/line-DHysIuAr.js +1 -1
  98. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-BepD7Trl.js +1 -0
  99. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/mermaid-parser.core-DJ-lswOc.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/mermaid-parser.core-1Xw2pmTV.js +2 -2
  100. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/mermaid.core-BlZ1iz7p.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/mermaid.core-yguwm67R.js +3 -3
  101. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/mindmap-definition-RKZ34NQL-BmNncIUr.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/mindmap-definition-RKZ34NQL-BzbokPP4.js +1 -1
  102. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/packet-YPE3B663-DNxSBx_x.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/packet-YPE3B663-DvwZvo4I.js +1 -1
  103. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/pie-LRSECV5Y-4baAFGGq.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/pie-LRSECV5Y-D3m6fHWL.js +1 -1
  104. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/pieDiagram-4H26LBE5-D7VDURr8.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/pieDiagram-4H26LBE5-Ds6AGwnk.js +1 -1
  105. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/quadrantDiagram-W4KKPZXB-5BNRSed4.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/quadrantDiagram-W4KKPZXB-DX8m3F04.js +1 -1
  106. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/radar-GUYGQ44K-CJUK9U42.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/radar-GUYGQ44K-Bma1Der9.js +1 -1
  107. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/requirementDiagram-4Y6WPE33-WrVH562b.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/requirementDiagram-4Y6WPE33-OcYBKZGh.js +1 -1
  108. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/sankeyDiagram-5OEKKPKP-bq7l110w.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/sankeyDiagram-5OEKKPKP-qZTKBl0U.js +1 -1
  109. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/sequenceDiagram-3UESZ5HK-D7Co-TdH.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/sequenceDiagram-3UESZ5HK-Dat3afNR.js +1 -1
  110. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/stateDiagram-AJRCARHV-BxWHnHG4.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/stateDiagram-AJRCARHV-C25VdSrM.js +1 -1
  111. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/stateDiagram-v2-BHNVJYJU-CH7hdLfc.js +1 -0
  112. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/timeline-definition-PNZ67QCA-BPV0Bq-Q.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/timeline-definition-PNZ67QCA-BO52-l4o.js +1 -1
  113. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/treeView-BLDUP644-D2A9BwMa.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/treeView-BLDUP644-wTS6XClR.js +1 -1
  114. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/treemap-LRROVOQU-CKI0YtvA.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/treemap-LRROVOQU-H-Ce4Zv7.js +1 -1
  115. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/vennDiagram-CIIHVFJN-BxR_Flz7.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/vennDiagram-CIIHVFJN-C8VDHwNL.js +1 -1
  116. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/wardley-L42UT6IY-DoJhfL99.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/wardley-L42UT6IY-CWdFDSTM.js +1 -1
  117. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/wardleyDiagram-YWT4CUSO-C2cPq0nQ.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/wardleyDiagram-YWT4CUSO-Cl1J0nhW.js +1 -1
  118. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/xychartDiagram-2RQKCTM6-DbBm2yQI.js → pythinker_code-0.57.0/src/pythinker_code/web/static/assets/xychartDiagram-2RQKCTM6-DY3utX2b.js +1 -1
  119. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/index.html +1 -1
  120. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/architecture-7EHR7CIX-BYw92_V4.js +0 -1
  121. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/channel-BGX8hmrU.js +0 -1
  122. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/classDiagram-4FO5ZUOK-Dw4bWLQm.js +0 -1
  123. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/classDiagram-v2-Q7XG4LA2-Dw4bWLQm.js +0 -1
  124. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/eventmodeling-FCH6USID-solrKU8m.js +0 -1
  125. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-DEMWXrjn.js +0 -1
  126. pythinker_code-0.56.0/src/pythinker_code/web/static/assets/stateDiagram-v2-BHNVJYJU-D6odN83X.js +0 -1
  127. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/LICENSE +0 -0
  128. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/NOTICE +0 -0
  129. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/__init__.py +0 -0
  130. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/__main__.py +0 -0
  131. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/AGENTS.md +0 -0
  132. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/__init__.py +0 -0
  133. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/convert.py +0 -0
  134. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/host.py +0 -0
  135. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/mcp.py +0 -0
  136. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/server.py +0 -0
  137. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/session.py +0 -0
  138. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/tools.py +0 -0
  139. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/types.py +0 -0
  140. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/acp/version.py +0 -0
  141. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/agent.yaml +0 -0
  142. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/ask.yaml +0 -0
  143. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/code_reviewer.yaml +0 -0
  144. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/coder.yaml +0 -0
  145. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/debug.yaml +0 -0
  146. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/debugger.yaml +0 -0
  147. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/explore.yaml +0 -0
  148. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/implementer.yaml +0 -0
  149. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/judge.yaml +0 -0
  150. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/plan.yaml +0 -0
  151. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/planner.yaml +0 -0
  152. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/review.yaml +0 -0
  153. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/scout.yaml +0 -0
  154. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/security_reviewer.yaml +0 -0
  155. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/default/verifier.yaml +0 -0
  156. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/agents/okabe/agent.yaml +0 -0
  157. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/agentspec.py +0 -0
  158. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/app.py +0 -0
  159. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/approval_runtime/__init__.py +0 -0
  160. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/approval_runtime/models.py +0 -0
  161. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/approval_runtime/runtime.py +0 -0
  162. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/__init__.py +0 -0
  163. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/alibaba.py +0 -0
  164. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/anthropic_direct.py +0 -0
  165. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/browser_login_page.py +0 -0
  166. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/deepseek.py +0 -0
  167. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/github_feedback.py +0 -0
  168. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/kimi.py +0 -0
  169. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/lm_studio.py +0 -0
  170. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/minimax.py +0 -0
  171. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/moonshot.py +0 -0
  172. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/oauth.py +0 -0
  173. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/ollama.py +0 -0
  174. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openai/__init__.py +0 -0
  175. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openai/_shared.py +0 -0
  176. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openai/browser_flow.py +0 -0
  177. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openai/catalog.py +0 -0
  178. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openai/config_apply.py +0 -0
  179. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openai/constants.py +0 -0
  180. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openai/login.py +0 -0
  181. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openai/models.py +0 -0
  182. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openai/oauth_client.py +0 -0
  183. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/opencode_go.py +0 -0
  184. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/openrouter.py +0 -0
  185. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/platforms.py +0 -0
  186. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/auth/z_ai.py +0 -0
  187. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/background/__init__.py +0 -0
  188. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/background/agent_runner.py +0 -0
  189. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/background/ids.py +0 -0
  190. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/background/manager.py +0 -0
  191. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/background/models.py +0 -0
  192. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/background/store.py +0 -0
  193. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/background/summary.py +0 -0
  194. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/background/worker.py +0 -0
  195. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/__init__.py +0 -0
  196. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/__main__.py +0 -0
  197. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/_lazy_group.py +0 -0
  198. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/dashboard.py +0 -0
  199. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/debug.py +0 -0
  200. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/export.py +0 -0
  201. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/info.py +0 -0
  202. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/mcp.py +0 -0
  203. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/plugin.py +0 -0
  204. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/review.py +0 -0
  205. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/secscan.py +0 -0
  206. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/security_scan.py +0 -0
  207. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/skill.py +0 -0
  208. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/system_prompt.py +0 -0
  209. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/toad.py +0 -0
  210. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/update.py +0 -0
  211. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/cli/web.py +0 -0
  212. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/constant.py +0 -0
  213. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/__init__.py +0 -0
  214. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/api/__init__.py +0 -0
  215. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/api/sessions.py +0 -0
  216. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/api/statistics.py +0 -0
  217. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/api/system.py +0 -0
  218. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/app.py +0 -0
  219. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/highlighted-body-OFNGDK62-BxVUIXn9.js +0 -0
  220. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/index-DAN_VzOP.css +0 -0
  221. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/index-DYyxzHPY.js +0 -0
  222. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  223. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  224. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  225. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  226. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  227. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  228. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  229. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/assets/mermaid-GHXKKRXX-BR6KjYwB.js +0 -0
  230. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/dashboard/static/index.html +0 -0
  231. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/events.py +0 -0
  232. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/exception.py +0 -0
  233. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/execution_profiles.py +0 -0
  234. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/extensions.py +0 -0
  235. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/feedback.py +0 -0
  236. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/feedback_repo.py +0 -0
  237. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/file_restore.py +0 -0
  238. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/hooks/__init__.py +0 -0
  239. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/hooks/config.py +0 -0
  240. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/hooks/engine.py +0 -0
  241. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/hooks/events.py +0 -0
  242. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/hooks/runner.py +0 -0
  243. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/llm.py +0 -0
  244. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/__init__.py +0 -0
  245. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/client.py +0 -0
  246. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/diagnostics.py +0 -0
  247. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/framing.py +0 -0
  248. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/instance.py +0 -0
  249. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/manager.py +0 -0
  250. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/plugin_servers.py +0 -0
  251. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/protocol.py +0 -0
  252. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/recommend.py +0 -0
  253. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/lsp/service.py +0 -0
  254. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/memory/__init__.py +0 -0
  255. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/memory/consolidation.py +0 -0
  256. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/memory/harvest.py +0 -0
  257. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/memory/recall.py +0 -0
  258. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/memory/recap.py +0 -0
  259. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/memory/retriever.py +0 -0
  260. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/memory/sanitize.py +0 -0
  261. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/metadata.py +0 -0
  262. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/models_dev.py +0 -0
  263. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/native.py +0 -0
  264. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/notifications/__init__.py +0 -0
  265. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/notifications/llm.py +0 -0
  266. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/notifications/manager.py +0 -0
  267. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/notifications/models.py +0 -0
  268. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/notifications/notifier.py +0 -0
  269. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/notifications/store.py +0 -0
  270. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/notifications/wire.py +0 -0
  271. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/__init__.py +0 -0
  272. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/artifacts.py +0 -0
  273. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/dependency.py +0 -0
  274. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/directories.py +0 -0
  275. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/install.py +0 -0
  276. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/installed.py +0 -0
  277. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/integration.py +0 -0
  278. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/loader.py +0 -0
  279. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/manager.py +0 -0
  280. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/manifest.py +0 -0
  281. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/marketplace.py +0 -0
  282. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/options.py +0 -0
  283. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/policy.py +0 -0
  284. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/plugin/tool.py +0 -0
  285. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/project_memory.py +0 -0
  286. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/project_trust.py +0 -0
  287. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/prompt_templates.py +0 -0
  288. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/prompts/__init__.py +0 -0
  289. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/prompts/best_practices.md +0 -0
  290. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/prompts/compact.md +0 -0
  291. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/prompts/goal_continuation.md +0 -0
  292. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/prompts/goal_set.md +0 -0
  293. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/prompts/goal_wrap_up.md +0 -0
  294. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/prompts/init.md +0 -0
  295. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/prompts/learn.md +0 -0
  296. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/py.typed +0 -0
  297. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/scratchpad.py +0 -0
  298. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/session.py +0 -0
  299. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/session_cleanup.py +0 -0
  300. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/session_fork.py +0 -0
  301. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/session_recap.py +0 -0
  302. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/session_state.py +0 -0
  303. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/share.py +0 -0
  304. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skill/__init__.py +0 -0
  305. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skill/flow/__init__.py +0 -0
  306. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skill/flow/d2.py +0 -0
  307. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skill/flow/mermaid.py +0 -0
  308. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skill/lockfile.py +0 -0
  309. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/agent-creator/SKILL.md +0 -0
  310. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/check-impl-against-spec/SKILL.md +0 -0
  311. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/cleanup-audit/SKILL.md +0 -0
  312. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/create-pr/SKILL.md +0 -0
  313. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/customize-pythinker/SKILL.md +0 -0
  314. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/designer-skill/SKILL.md +0 -0
  315. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/diagnose-ci-failures/SKILL.md +0 -0
  316. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/fix-errors/SKILL.md +0 -0
  317. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/implement-specs/SKILL.md +0 -0
  318. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/judge-minimum-diff/SKILL.md +0 -0
  319. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/judge-overengineering-review/SKILL.md +0 -0
  320. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/pr-walkthrough/SKILL.md +0 -0
  321. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/pythinker-code-help/SKILL.md +0 -0
  322. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/reproduce-bug-report/SKILL.md +0 -0
  323. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/resolve-merge-conflicts/SKILL.md +0 -0
  324. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/review-pr/SKILL.md +0 -0
  325. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/skill-creator/SKILL.md +0 -0
  326. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/spec-driven-implementation/SKILL.md +0 -0
  327. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/write-product-spec/SKILL.md +0 -0
  328. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/skills/write-tech-spec/SKILL.md +0 -0
  329. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/__init__.py +0 -0
  330. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/agent.py +0 -0
  331. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/api_errors.py +0 -0
  332. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/approval.py +0 -0
  333. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/btw.py +0 -0
  334. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/compaction.py +0 -0
  335. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/compaction_restore.py +0 -0
  336. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/context.py +0 -0
  337. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/deliberation.py +0 -0
  338. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/denwarenji.py +0 -0
  339. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injection.py +0 -0
  340. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/__init__.py +0 -0
  341. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/agent_list.py +0 -0
  342. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/auto_mode.py +0 -0
  343. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/git_status.py +0 -0
  344. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/goal_mode.py +0 -0
  345. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/inline_commands.py +0 -0
  346. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/lsp_diagnostics.py +0 -0
  347. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/model_defense.py +0 -0
  348. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/orchestration.py +0 -0
  349. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/permissions_state.py +0 -0
  350. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/dynamic_injections/plan_mode.py +0 -0
  351. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/flow_runner.py +0 -0
  352. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/live_tokens.py +0 -0
  353. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/message.py +0 -0
  354. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/permission.py +0 -0
  355. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/soul/toolset.py +0 -0
  356. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/__init__.py +0 -0
  357. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/builder.py +0 -0
  358. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/codenames.py +0 -0
  359. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/core.py +0 -0
  360. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/discovery.py +0 -0
  361. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/git_context.py +0 -0
  362. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/models.py +0 -0
  363. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/output.py +0 -0
  364. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/registry.py +0 -0
  365. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/runner.py +0 -0
  366. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/store.py +0 -0
  367. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/usage.py +0 -0
  368. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/subagents/worktree.py +0 -0
  369. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/telemetry/__init__.py +0 -0
  370. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/telemetry/config.py +0 -0
  371. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/telemetry/crash.py +0 -0
  372. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/telemetry/errors.py +0 -0
  373. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/telemetry/metrics.py +0 -0
  374. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/telemetry/names.py +0 -0
  375. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/telemetry/otel.py +0 -0
  376. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/telemetry/sentry.py +0 -0
  377. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/telemetry/sink.py +0 -0
  378. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/thinking.py +0 -0
  379. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/AGENTS.md +0 -0
  380. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/__init__.py +0 -0
  381. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/agent/__init__.py +0 -0
  382. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/agent/description.md +0 -0
  383. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/ask_user/__init__.py +0 -0
  384. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/ask_user/description.md +0 -0
  385. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/background/__init__.py +0 -0
  386. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/background/handoff.md +0 -0
  387. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/background/input.md +0 -0
  388. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/background/list.md +0 -0
  389. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/background/output.md +0 -0
  390. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/background/stop.md +0 -0
  391. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/display.py +0 -0
  392. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/dmail/__init__.py +0 -0
  393. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/dmail/dmail.md +0 -0
  394. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/__init__.py +0 -0
  395. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/glob.md +0 -0
  396. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/glob.py +0 -0
  397. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/grep.md +0 -0
  398. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/grep_local.py +0 -0
  399. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/plan_mode.py +0 -0
  400. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/read.md +0 -0
  401. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/read.py +0 -0
  402. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/read_media.md +0 -0
  403. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/read_media.py +0 -0
  404. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/replace.md +0 -0
  405. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/replace.py +0 -0
  406. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/utils.py +0 -0
  407. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/write.md +0 -0
  408. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/file/write.py +0 -0
  409. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/goal/__init__.py +0 -0
  410. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/goal/update_goal.md +0 -0
  411. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/lsp/__init__.py +0 -0
  412. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/lsp/formatters.py +0 -0
  413. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/lsp/schemas.py +0 -0
  414. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/lsp/symbol_context.py +0 -0
  415. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/lsp/tool.md +0 -0
  416. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/lsp/tool.py +0 -0
  417. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/mcp_resource/__init__.py +0 -0
  418. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/mcp_resource/list_description.md +0 -0
  419. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/mcp_resource/prompt_description.md +0 -0
  420. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/mcp_resource/read_description.md +0 -0
  421. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/memory/__init__.py +0 -0
  422. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/memory/memory.md +0 -0
  423. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/memory/routing_guard.py +0 -0
  424. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/plan/__init__.py +0 -0
  425. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/plan/description.md +0 -0
  426. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/plan/enter.py +0 -0
  427. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/plan/enter_description.md +0 -0
  428. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/plan/handoff.py +0 -0
  429. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/plan/heroes.py +0 -0
  430. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/progress/__init__.py +0 -0
  431. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/progress/description.md +0 -0
  432. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/recall/__init__.py +0 -0
  433. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/recall/description.md +0 -0
  434. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/scratchpad/__init__.py +0 -0
  435. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/scratchpad/scratchpad_tool.md +0 -0
  436. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/shell/__init__.py +0 -0
  437. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/shell/bash.md +0 -0
  438. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/shell/powershell.md +0 -0
  439. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/skill/__init__.py +0 -0
  440. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/skill/_mcp_bridge.py +0 -0
  441. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/skill/description.md +0 -0
  442. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/suggest/__init__.py +0 -0
  443. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/suggest/description.md +0 -0
  444. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/test.py +0 -0
  445. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/think/__init__.py +0 -0
  446. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/think/think.md +0 -0
  447. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/todo/__init__.py +0 -0
  448. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/todo/set_todo_list.md +0 -0
  449. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/tool_search/__init__.py +0 -0
  450. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/tool_search/tool_search.md +0 -0
  451. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/utils.py +0 -0
  452. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/web/__init__.py +0 -0
  453. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/web/_allowlist.py +0 -0
  454. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/web/fetch.md +0 -0
  455. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/web/fetch.py +0 -0
  456. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/web/search.md +0 -0
  457. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/web/search.py +0 -0
  458. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/workflow/__init__.py +0 -0
  459. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/workflow/description.md +0 -0
  460. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/workflow/display.py +0 -0
  461. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/workflow/engine.py +0 -0
  462. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/worktree/__init__.py +0 -0
  463. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/worktree/enter_worktree.md +0 -0
  464. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/tools/worktree/exit_worktree.md +0 -0
  465. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/__init__.py +0 -0
  466. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/acp/__init__.py +0 -0
  467. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/color_utils.py +0 -0
  468. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/print/__init__.py +0 -0
  469. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/print/visualize.py +0 -0
  470. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/__init__.py +0 -0
  471. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/base.py +0 -0
  472. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/bash_execution.py +0 -0
  473. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/bordered_loader.py +0 -0
  474. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/diff.py +0 -0
  475. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/dynamic_border.py +0 -0
  476. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/footer.py +0 -0
  477. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/key_hints.py +0 -0
  478. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/markdown.py +0 -0
  479. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/messages.py +0 -0
  480. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/panel.py +0 -0
  481. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/render_utils.py +0 -0
  482. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/report.py +0 -0
  483. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/report_prose_blocks.py +0 -0
  484. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/report_update.py +0 -0
  485. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/settings_list.py +0 -0
  486. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/special_messages.py +0 -0
  487. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/components/tool_execution.py +0 -0
  488. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/console.py +0 -0
  489. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/debug.py +0 -0
  490. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/design_system.py +0 -0
  491. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/echo.py +0 -0
  492. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/export_import.py +0 -0
  493. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/glyphs.py +0 -0
  494. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/keyboard.py +0 -0
  495. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/keymap.py +0 -0
  496. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/markdown/__init__.py +0 -0
  497. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/markdown/audit.py +0 -0
  498. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/markdown/elements.py +0 -0
  499. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/markdown/fences.py +0 -0
  500. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/markdown/normalizers.py +0 -0
  501. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/markdown/renderer.py +0 -0
  502. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/markdown/streaming.py +0 -0
  503. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/mcp_status.py +0 -0
  504. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/model_picker.py +0 -0
  505. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/motion.py +0 -0
  506. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/oauth.py +0 -0
  507. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/placeholders.py +0 -0
  508. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/render_constants.py +0 -0
  509. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/replay.py +0 -0
  510. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/selector.py +0 -0
  511. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/selectors/__init__.py +0 -0
  512. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/selectors/code_theme.py +0 -0
  513. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/selectors/extension.py +0 -0
  514. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/selectors/oauth.py +0 -0
  515. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/selectors/settings.py +0 -0
  516. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/selectors/show_images.py +0 -0
  517. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/selectors/theme.py +0 -0
  518. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/selectors/thinking.py +0 -0
  519. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/session_picker.py +0 -0
  520. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/setup.py +0 -0
  521. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/slash.py +0 -0
  522. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/spacing.py +0 -0
  523. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/spinner_words.py +0 -0
  524. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/startup.py +0 -0
  525. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/stats.py +0 -0
  526. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/stats_collector.py +0 -0
  527. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/stats_pricing.py +0 -0
  528. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/statusline.py +0 -0
  529. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/sync_output.py +0 -0
  530. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/task_browser.py +0 -0
  531. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tips.py +0 -0
  532. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/__init__.py +0 -0
  533. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/_file_diff.py +0 -0
  534. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/_render_utils.py +0 -0
  535. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/agent.py +0 -0
  536. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/ask_user.py +0 -0
  537. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/background.py +0 -0
  538. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/bash.py +0 -0
  539. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/edit.py +0 -0
  540. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/find.py +0 -0
  541. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/generic.py +0 -0
  542. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/grep.py +0 -0
  543. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/implement_judge.py +0 -0
  544. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/lsp.py +0 -0
  545. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/mcp_resource.py +0 -0
  546. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/memory.py +0 -0
  547. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/plan.py +0 -0
  548. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/read.py +0 -0
  549. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/read_media.py +0 -0
  550. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/skill.py +0 -0
  551. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/smart_search.py +0 -0
  552. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/think.py +0 -0
  553. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/todo.py +0 -0
  554. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/tool_search.py +0 -0
  555. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/web.py +0 -0
  556. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/worktree.py +0 -0
  557. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/tool_renderers/write.py +0 -0
  558. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/update.py +0 -0
  559. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/update_orchestrator.py +0 -0
  560. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage.py +0 -0
  561. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_activity.py +0 -0
  562. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/__init__.py +0 -0
  563. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/alibaba.py +0 -0
  564. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/anthropic_admin.py +0 -0
  565. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/base.py +0 -0
  566. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/deepseek.py +0 -0
  567. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/minimax.py +0 -0
  568. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/openai_admin.py +0 -0
  569. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/openai_chatgpt.py +0 -0
  570. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/opencode_go.py +0 -0
  571. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/openrouter.py +0 -0
  572. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker.py +0 -0
  573. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker_ai.py +0 -0
  574. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/usage_render.py +0 -0
  575. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_activity_tree.py +0 -0
  576. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_approval_panel.py +0 -0
  577. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_btw_panel.py +0 -0
  578. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_dialog_shell.py +0 -0
  579. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_diff_live.py +0 -0
  580. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_input_router.py +0 -0
  581. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_question_panel.py +0 -0
  582. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_transcript.py +0 -0
  583. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/shell/visualize/_worklog.py +0 -0
  584. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/terminal_background.py +0 -0
  585. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/terminal_capabilities.py +0 -0
  586. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/__init__.py +0 -0
  587. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/adapters/__init__.py +0 -0
  588. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/adapters/markdown.py +0 -0
  589. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/adapters/task_browser.py +0 -0
  590. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/capabilities.py +0 -0
  591. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/palettes.py +0 -0
  592. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/pythinker_themes.py +0 -0
  593. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/registry.py +0 -0
  594. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/resolver.py +0 -0
  595. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/theme/spec.py +0 -0
  596. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/ui/tui_config.py +0 -0
  597. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/update_policy.py +0 -0
  598. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/usage_ratelimit_cache.py +0 -0
  599. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/__init__.py +0 -0
  600. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/aiohttp.py +0 -0
  601. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/aioqueue.py +0 -0
  602. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/artifacts.py +0 -0
  603. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/broadcast.py +0 -0
  604. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/changelog.py +0 -0
  605. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/clipboard.py +0 -0
  606. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/datetime.py +0 -0
  607. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/diff.py +0 -0
  608. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/editor.py +0 -0
  609. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/environment.py +0 -0
  610. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/envvar.py +0 -0
  611. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/export.py +0 -0
  612. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/file_filter.py +0 -0
  613. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/file_read_cache.py +0 -0
  614. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/frontmatter.py +0 -0
  615. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/gitignore.py +0 -0
  616. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/io.py +0 -0
  617. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/logging.py +0 -0
  618. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/mcp_names.py +0 -0
  619. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/media_limits.py +0 -0
  620. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/media_tags.py +0 -0
  621. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/message.py +0 -0
  622. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/path.py +0 -0
  623. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/proctitle.py +0 -0
  624. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/proxy.py +0 -0
  625. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/rich/__init__.py +0 -0
  626. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/rich/columns.py +0 -0
  627. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/rich/diff_render.py +0 -0
  628. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/rich/markdown.py +0 -0
  629. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/rich/markdown_sample.md +0 -0
  630. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/rich/markdown_sample_short.md +0 -0
  631. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/rich/syntax.py +0 -0
  632. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/sensitive.py +0 -0
  633. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/server.py +0 -0
  634. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/signals.py +0 -0
  635. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/sleep_inhibitor.py +0 -0
  636. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/string.py +0 -0
  637. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/subprocess_env.py +0 -0
  638. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/term.py +0 -0
  639. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/trust.py +0 -0
  640. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/utils/typing.py +0 -0
  641. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/__init__.py +0 -0
  642. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/api/__init__.py +0 -0
  643. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/api/config.py +0 -0
  644. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/api/open_in.py +0 -0
  645. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/api/sessions.py +0 -0
  646. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/app.py +0 -0
  647. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/auth.py +0 -0
  648. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/models.py +0 -0
  649. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/runner/__init__.py +0 -0
  650. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/runner/messages.py +0 -0
  651. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/runner/process.py +0 -0
  652. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/runner/worker.py +0 -0
  653. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/_headers +0 -0
  654. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  655. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  656. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  657. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  658. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  659. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  660. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  661. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  662. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  663. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  664. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  665. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  666. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  667. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  668. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  669. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  670. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  671. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  672. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  673. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  674. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  675. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  676. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  677. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  678. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  679. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  680. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  681. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  682. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  683. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  684. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  685. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  686. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  687. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  688. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  689. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  690. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  691. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  692. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  693. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  694. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  695. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  696. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  697. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  698. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  699. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  700. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  701. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  702. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  703. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  704. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  705. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  706. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  707. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  708. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  709. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  710. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  711. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  712. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  713. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/abap-CLvhMVsD.js +0 -0
  714. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/actionscript-3--17pq3dv.js +0 -0
  715. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ada-C5qYipkI.js +0 -0
  716. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/andromeeda-vGVdxbeo.js +0 -0
  717. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/angular-html-BKhkKBsm.js +0 -0
  718. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/angular-ts-CYPbMJCA.js +0 -0
  719. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/apache-U0d_L8uA.js +0 -0
  720. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/apex-CGTLDQj6.js +0 -0
  721. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/apl-D7bENxmy.js +0 -0
  722. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/applescript-CCn79oCD.js +0 -0
  723. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ara-4CJ0cIlV.js +0 -0
  724. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/arc-8BWbC-0s.js +0 -0
  725. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/array-BifhSqXX.js +0 -0
  726. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/asciidoc-DE70LPWp.js +0 -0
  727. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/asm-Cmm7eHzH.js +0 -0
  728. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/astro-B1l9MDUT.js +0 -0
  729. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/aurora-x-CDeNXAV0.js +0 -0
  730. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/awk-BWXHIvNe.js +0 -0
  731. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ayu-dark-DluEY0Gj.js +0 -0
  732. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ayu-light-C3h-C4tm.js +0 -0
  733. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ayu-mirage-Bqwy1Gya.js +0 -0
  734. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ballerina-B7ZEbQpA.js +0 -0
  735. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/bat-Bo4NYOV-.js +0 -0
  736. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/beancount-D-usSTwE.js +0 -0
  737. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/berry-DKpUyyne.js +0 -0
  738. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/bibtex-Ci_nEsc7.js +0 -0
  739. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/bicep-CUHmPFLl.js +0 -0
  740. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/bird2-C2hNVINV.js +0 -0
  741. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/blade-BlkqRXu6.js +0 -0
  742. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/bootstrap-BhLLvBaE.css +0 -0
  743. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/bsl-BkkzgIyY.js +0 -0
  744. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/c-PpPxyn8g.js +0 -0
  745. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/c3-CnJL0r0V.js +0 -0
  746. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/cadence-CQ2zXKGN.js +0 -0
  747. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/cairo-DLTphjLi.js +0 -0
  748. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/catppuccin-frappe-3VR1Za6u.js +0 -0
  749. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/catppuccin-latte-DwIHMF0Q.js +0 -0
  750. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/catppuccin-macchiato-DYnBP6_5.js +0 -0
  751. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/catppuccin-mocha-DYhrFGRu.js +0 -0
  752. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/character-entities-legacy-Wut6vMuj.js +0 -0
  753. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/chevrons-up-down-Dwo0Il5v.js +0 -0
  754. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-C0kf5ycP.js +0 -0
  755. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/chunk-55IACEB6-QyFAFTWp.js +0 -0
  756. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/chunk-BSJP7CBP-DIpfLhEz.js +0 -0
  757. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/chunk-Cyuzqnbw.js +0 -0
  758. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-C9D6P7Uq.js +0 -0
  759. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/chunk-NNHCCRGN-DmZbXBJw.js +0 -0
  760. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-CyVdgm44.js +0 -0
  761. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/chunk-XPW4576I-ru3A962d.js +0 -0
  762. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/clarity-SemFz856.js +0 -0
  763. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/clojure-DqKBuwfJ.js +0 -0
  764. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/cmake-Bj61d0ZC.js +0 -0
  765. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/cobol-BoXxFQjh.js +0 -0
  766. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/codeowners-C8r90Shi.js +0 -0
  767. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/codeql-oeQT6MSM.js +0 -0
  768. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/coffee-B5TREocO.js +0 -0
  769. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/common-lisp-Cv5bFMCO.js +0 -0
  770. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/coq-BrsZFFmf.js +0 -0
  771. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-PjRvINHM.js +0 -0
  772. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/cpp-CVIk4zoB.js +0 -0
  773. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/crystal-CvUuUt6_.js +0 -0
  774. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/csharp-Ct8U2NOr.js +0 -0
  775. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/css-D7o5g6xi.js +0 -0
  776. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/csv-Dx-8-gkx.js +0 -0
  777. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/cue-CE9AQfxI.js +0 -0
  778. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/cypher-ClKdZ_lG.js +0 -0
  779. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/cytoscape.esm-jXPf2pm4.js +0 -0
  780. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/d-qD-0Kul2.js +0 -0
  781. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dagre-Uyq5yTtG.js +0 -0
  782. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dark-plus-Cs2F2srj.js +0 -0
  783. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dart-DkHntEIa.js +0 -0
  784. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dax-BkyTk9wS.js +0 -0
  785. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/defaultLocale-C8Fc0cco.js +0 -0
  786. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/desktop-Dlh5hvp9.js +0 -0
  787. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/diff-BDNflWRl.js +0 -0
  788. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/diff-Dvab7kiv.css +0 -0
  789. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/diff-woXpYk--.js +0 -0
  790. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dist-B7jLwIkG.js +0 -0
  791. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dist-D4B_Bs5p.js +0 -0
  792. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dist-reBDvVlc.js +0 -0
  793. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/docker-IyjqRm3v.js +0 -0
  794. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dotenv-_5a1GRtc.js +0 -0
  795. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dracula-BHWKrbxM.js +0 -0
  796. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dracula-soft-5eyTD99u.js +0 -0
  797. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/dream-maker-DW3nJb8Q.js +0 -0
  798. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/edge-CmXZi-az.js +0 -0
  799. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/elixir-BoRIkjDi.js +0 -0
  800. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/elm-Cm7sFdI1.js +0 -0
  801. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/emacs-lisp-C9PiwqqW.js +0 -0
  802. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/erb-DuMAGb6i.js +0 -0
  803. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/erlang-Cphh6RMH.js +0 -0
  804. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/everforest-dark-sB-x3p7T.js +0 -0
  805. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/everforest-light-Df2xbC6M.js +0 -0
  806. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/fennel-DQxkIbk2.js +0 -0
  807. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/fish-BJitypiv.js +0 -0
  808. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/fluent-C03EYrpw.js +0 -0
  809. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/fortran-fixed-form-DEKoE2YW.js +0 -0
  810. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/fortran-free-form-CYNrtFtB.js +0 -0
  811. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/fsharp-D13ZGOAj.js +0 -0
  812. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gdresource-C0sCabJj.js +0 -0
  813. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gdscript-Cp2uCuqX.js +0 -0
  814. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gdshader-CBce3t8t.js +0 -0
  815. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/genie-CV2tkWYe.js +0 -0
  816. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gherkin-DExj1W_8.js +0 -0
  817. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/git-commit-BSykSTBG.js +0 -0
  818. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/git-rebase-D2tSwjJb.js +0 -0
  819. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/github-dark-C-LZuMrd.js +0 -0
  820. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/github-dark-default-DXG-b-1a.js +0 -0
  821. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/github-dark-dimmed-Bx1FflLF.js +0 -0
  822. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/github-dark-high-contrast-B_tTalzw.js +0 -0
  823. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/github-light-EUqPIrTm.js +0 -0
  824. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/github-light-default-BXViO-2h.js +0 -0
  825. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/github-light-high-contrast-B68TUdTA.js +0 -0
  826. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gleam-CSRkHgEL.js +0 -0
  827. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/glimmer-js--VVKNatA.js +0 -0
  828. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/glimmer-ts-Bfa_wiNC.js +0 -0
  829. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/glsl-MPwHyiXQ.js +0 -0
  830. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gn-ilITqXS6.js +0 -0
  831. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gnuplot-7GGW24-e.js +0 -0
  832. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/go-BJwz_mda.js +0 -0
  833. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/graphlib-C22s9MDV.js +0 -0
  834. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/graphql-NW854Khs.js +0 -0
  835. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/groovy-CacY0gHj.js +0 -0
  836. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gruvbox-dark-hard-C820rvS2.js +0 -0
  837. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gruvbox-dark-medium-BPjhmG05.js +0 -0
  838. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gruvbox-dark-soft-MrdJrrXF.js +0 -0
  839. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gruvbox-light-hard-BC_s9l72.js +0 -0
  840. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gruvbox-light-medium-BAWPOn9u.js +0 -0
  841. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/gruvbox-light-soft-BSMLrYjP.js +0 -0
  842. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/hack-CSl79E5u.js +0 -0
  843. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/haml-Dmb1YmHj.js +0 -0
  844. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/handlebars-Du8DtnRB.js +0 -0
  845. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/haskell-D8IpX4py.js +0 -0
  846. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/haxe-OTjmBuCE.js +0 -0
  847. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/hcl-Dh228itO.js +0 -0
  848. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/hjson-CxZEssPk.js +0 -0
  849. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/hlsl-Cvrh5tZx.js +0 -0
  850. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/horizon-CE9ld1lL.js +0 -0
  851. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/horizon-bright-Br1oVSNq.js +0 -0
  852. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/houston-CsvMBhTu.js +0 -0
  853. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/html-Kpl3bQKd.js +0 -0
  854. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/html-derivative-BEEWNZ8Y.js +0 -0
  855. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/http-HvMG3K54.js +0 -0
  856. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/hurl-CLh1t2ES.js +0 -0
  857. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/hxml-B0Qn7Nwc.js +0 -0
  858. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/hy-CZbG8q4J.js +0 -0
  859. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/imba-DsUTQ-LC.js +0 -0
  860. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ini-B5eOa1yu.js +0 -0
  861. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/init-D6jRqBbL.js +0 -0
  862. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  863. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  864. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  865. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  866. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  867. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  868. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  869. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/java-Cst_eZTE.js +0 -0
  870. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/javascript-i_rUTyCW.js +0 -0
  871. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/jinja-CaXggA6f.js +0 -0
  872. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/jison-D9Fg2JgN.js +0 -0
  873. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/json-DS5j4FfK.js +0 -0
  874. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/json5-BR5RXkoi.js +0 -0
  875. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/jsonc-CYpm1nAK.js +0 -0
  876. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/jsonl-CmCQp5Yx.js +0 -0
  877. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/jsonnet-CJTPZ8u_.js +0 -0
  878. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/jssm-DXw9l8Rf.js +0 -0
  879. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/jsx-CFyhNHav.js +0 -0
  880. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/jsx-runtime-wSvXh6gi.js +0 -0
  881. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/julia-R8NNmfP1.js +0 -0
  882. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/just-BhhHYlS8.js +0 -0
  883. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/kanagawa-dragon-CXtmUGW6.js +0 -0
  884. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/kanagawa-lotus-BN08jTvb.js +0 -0
  885. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/kanagawa-wave-CTweb8Dz.js +0 -0
  886. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/katex-BGaDVET_.js +0 -0
  887. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/katex-BorAY7qD.css +0 -0
  888. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/kdl-CsD5j6eV.js +0 -0
  889. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/kotlin-DhhofPvG.js +0 -0
  890. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/kusto-BUv0MjJC.js +0 -0
  891. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/laserwave-C_8bwKvT.js +0 -0
  892. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/latex-D5k_uhWv.js +0 -0
  893. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/lean-CewbzKMR.js +0 -0
  894. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/less-DVTAwKKz.js +0 -0
  895. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/lib-BLxG8W6T.js +0 -0
  896. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/libesm-8-2luV-1.js +0 -0
  897. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/light-plus-DVQuIRkW.js +0 -0
  898. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/linear-BktLjFGX.js +0 -0
  899. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/liquid-Q0_hzjly.js +0 -0
  900. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/llvm-Cm23YOpf.js +0 -0
  901. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/log-BNLmms1o.js +0 -0
  902. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/logo-Cluzi2Zq.js +0 -0
  903. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/lua-VoGSg0xb.js +0 -0
  904. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/luau-CNKltnaQ.js +0 -0
  905. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/make-Dixweg8N.js +0 -0
  906. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/markdown-BYOwaDjH.js +0 -0
  907. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/marked.esm-DLdcrU5H.js +0 -0
  908. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/marko-D_aeUD__.js +0 -0
  909. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/material-theme-Bm3Qr25_.js +0 -0
  910. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/material-theme-darker-2IIEA8gg.js +0 -0
  911. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/material-theme-lighter-uhdI0v04.js +0 -0
  912. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/material-theme-ocean-CHQ94UKr.js +0 -0
  913. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/material-theme-palenight-B5W6OYN7.js +0 -0
  914. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/matlab-D7qyCx1q.js +0 -0
  915. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/mdc-BSifqehP.js +0 -0
  916. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/mdx-DQZ5AkYe.js +0 -0
  917. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/mermaid-Bk4SNUv9.js +0 -0
  918. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/min-dark-BSWPekZh.js +0 -0
  919. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/min-light-DDpmG2fV.js +0 -0
  920. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/mipsasm-BMqwQI7S.js +0 -0
  921. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/mojo-BgCJLMeH.js +0 -0
  922. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/monokai-CdkpiU2Y.js +0 -0
  923. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/moonbit-CaWjb8XO.js +0 -0
  924. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/move-B1IS1UjX.js +0 -0
  925. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/narrat-_X_XdTYD.js +0 -0
  926. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/nextflow-Bbiyy34d.js +0 -0
  927. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/nextflow-groovy-Dc_ddanL.js +0 -0
  928. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/nginx-CgHaWcsO.js +0 -0
  929. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/night-owl-DhmEMT88.js +0 -0
  930. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/night-owl-light-eJ-hLW7d.js +0 -0
  931. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/nim-BuixXxPS.js +0 -0
  932. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/nix-IvuFDN5E.js +0 -0
  933. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/nord-Cb4Vim4T.js +0 -0
  934. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/nushell-DcLAeLz5.js +0 -0
  935. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/objective-c-D1A_Heim.js +0 -0
  936. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/objective-cpp-BsSzOQcm.js +0 -0
  937. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ocaml-O90oeIOV.js +0 -0
  938. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/odin-B1RWQWA5.js +0 -0
  939. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/one-dark-pro-CLwyXe_n.js +0 -0
  940. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/one-light-D7Lr4KcI.js +0 -0
  941. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/openscad-BUDT5pXO.js +0 -0
  942. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ordinal-hYBb2elL.js +0 -0
  943. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/pascal-4ZHwLPI5.js +0 -0
  944. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/path-BWPyau1x.js +0 -0
  945. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/perl-BLMySlFJ.js +0 -0
  946. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/php-Czf_fybR.js +0 -0
  947. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/pkl-ot-7Btpt.js +0 -0
  948. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/plastic-DQwYfKfQ.js +0 -0
  949. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/plsql-DGHpHOYJ.js +0 -0
  950. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/po-BiJDBrnU.js +0 -0
  951. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/poimandres-DRFjx7u4.js +0 -0
  952. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/polar-C7UOKdEL.js +0 -0
  953. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/postcss-BXeXVLqQ.js +0 -0
  954. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/powerquery-DNMTfnFr.js +0 -0
  955. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/powershell-DshXNtvi.js +0 -0
  956. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/prisma-BsRQq5mF.js +0 -0
  957. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/prolog-iXnhIJG7.js +0 -0
  958. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/proto-DB4EqR-F.js +0 -0
  959. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/pug-CsZglf8T.js +0 -0
  960. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/puppet-CDv2pdJW.js +0 -0
  961. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/purescript-9MfHhQsQ.js +0 -0
  962. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/python-gzcpVVnB.js +0 -0
  963. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/qml-DcW_sT3t.js +0 -0
  964. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/qmldir-DCQb3MpD.js +0 -0
  965. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/qss-Fe1Jh2GI.js +0 -0
  966. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/r-D2d3McyU.js +0 -0
  967. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/racket-DcIDlBhZ.js +0 -0
  968. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/raku-B3gFvitq.js +0 -0
  969. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/razor-oFpUW61Z.js +0 -0
  970. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/red-CJ3rzSJv.js +0 -0
  971. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/reg-CRGYupPL.js +0 -0
  972. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/regexp-Bu0flJgP.js +0 -0
  973. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/rel-BtDbiS_P.js +0 -0
  974. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/riscv-Ckw8ddFX.js +0 -0
  975. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ron-VUp2lXgN.js +0 -0
  976. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/rose-pine-BthvhNj6.js +0 -0
  977. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/rose-pine-dawn-Dg85fqjY.js +0 -0
  978. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/rose-pine-moon-hon4tzzS.js +0 -0
  979. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/rosmsg-CAekHB0j.js +0 -0
  980. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/rough.esm-CSKSodPl.js +0 -0
  981. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/rst-U6Eu7ipE.js +0 -0
  982. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ruby-CUQsVT6d.js +0 -0
  983. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/rust-Cfkwpbl8.js +0 -0
  984. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/sas-CNBFrLhc.js +0 -0
  985. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/sass-DXrisJhu.js +0 -0
  986. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/scala-DKOlJaKm.js +0 -0
  987. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/scheme-DQCgrYNe.js +0 -0
  988. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/scss-CPnU-uuv.js +0 -0
  989. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/sdbl-bTVj8UrX.js +0 -0
  990. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/shaderlab-TOUzSsQk.js +0 -0
  991. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/shellscript-BbTp1yjG.js +0 -0
  992. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/shellsession-BmAC8SMF.js +0 -0
  993. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/slack-dark-DnToyrRv.js +0 -0
  994. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/slack-ochin-B2OO5cIa.js +0 -0
  995. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/smalltalk-B16xEiuN.js +0 -0
  996. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/snazzy-light-4G7pJPwS.js +0 -0
  997. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/solarized-dark-DV17i1UV.js +0 -0
  998. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/solarized-light-DSh2HLQt.js +0 -0
  999. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/solidity-CKzVLygQ.js +0 -0
  1000. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/soy-CdbyEXp6.js +0 -0
  1001. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/space-separated-tokens-DpjE5PGy.js +0 -0
  1002. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/sparql-D_iOobhT.js +0 -0
  1003. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/splunk-BC2Px7Mm.js +0 -0
  1004. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/sql-hpBkusIy.js +0 -0
  1005. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/src-D-NMWEou.js +0 -0
  1006. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ssh-config-BgfXC-Er.js +0 -0
  1007. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/stata-DVbvk3qH.js +0 -0
  1008. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/stylus-B6D30XZt.js +0 -0
  1009. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/surrealql-DxccxuMd.js +0 -0
  1010. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/svelte-DzNm5V2w.js +0 -0
  1011. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/swift-DonLKvLd.js +0 -0
  1012. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/synthwave-84-nFMaYfgc.js +0 -0
  1013. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/system-verilog-DJ5XKQeo.js +0 -0
  1014. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/systemd-BxMlprV5.js +0 -0
  1015. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/talonscript-CohzipZa.js +0 -0
  1016. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/tasl-DMoTqEGO.js +0 -0
  1017. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/tcl-CZd0xW_V.js +0 -0
  1018. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/templ-CsM0tTsw.js +0 -0
  1019. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/terraform-DswuEJGm.js +0 -0
  1020. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/tex-B0f_hYr8.js +0 -0
  1021. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/tokyo-night-oM2G3aXe.js +0 -0
  1022. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/toml-CcmNWLt0.js +0 -0
  1023. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/ts-tags-Bf-FGGvT.js +0 -0
  1024. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/tsv-sltzmVWM.js +0 -0
  1025. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/tsx-DFvk7AwW.js +0 -0
  1026. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/turtle-ByJddavk.js +0 -0
  1027. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/twig-VJ4-Ntm0.js +0 -0
  1028. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/typescript-DHTLvXzV.js +0 -0
  1029. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/typespec-B88KGewJ.js +0 -0
  1030. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/typst-DI99ib-x.js +0 -0
  1031. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/v-DETTlOr0.js +0 -0
  1032. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/v4-DqR3yzBO.js +0 -0
  1033. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vala-zf12oZj6.js +0 -0
  1034. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vb-Djn5o6TS.js +0 -0
  1035. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/verilog-CiiDBU1e.js +0 -0
  1036. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vesper-D5bVUKB1.js +0 -0
  1037. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vhdl-BroJfC0k.js +0 -0
  1038. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/viml-DvXPmvsu.js +0 -0
  1039. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vitesse-black-fwtXNY1n.js +0 -0
  1040. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vitesse-dark-BZCL-v6S.js +0 -0
  1041. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vitesse-light-VbXTXTou.js +0 -0
  1042. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vue-D3dSYZKz.js +0 -0
  1043. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vue-html-DQch_7VQ.js +0 -0
  1044. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vue-vine-B67Dz05t.js +0 -0
  1045. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/vyper-CgoNMtux.js +0 -0
  1046. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/wasm-BnjxR4X6.js +0 -0
  1047. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/wasm-ByWQv1Qj.js +0 -0
  1048. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/wenyan-C8pVoKbM.js +0 -0
  1049. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/wgsl-BsKzXJz4.js +0 -0
  1050. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/wikitext-ClFFjSW2.js +0 -0
  1051. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/wit-DdvCle-K.js +0 -0
  1052. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/wolfram-DLL8P-h_.js +0 -0
  1053. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/xml-C33zriiW.js +0 -0
  1054. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/xsl-BFS2wyMt.js +0 -0
  1055. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/yaml-w0rMsuN4.js +0 -0
  1056. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/zenscript-BnlCZFoB.js +0 -0
  1057. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/assets/zig-CMLA9XwU.js +0 -0
  1058. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/apple-touch-icon.png +0 -0
  1059. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/arctecture.webp +0 -0
  1060. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/bimi-logo.svg +0 -0
  1061. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/favicon.ico +0 -0
  1062. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin-ext.woff2 +0 -0
  1063. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin.woff2 +0 -0
  1064. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin-ext.woff2 +0 -0
  1065. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin.woff2 +0 -0
  1066. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin-ext.woff2 +0 -0
  1067. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin.woff2 +0 -0
  1068. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin-ext.woff2 +0 -0
  1069. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin.woff2 +0 -0
  1070. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin-ext.woff2 +0 -0
  1071. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin.woff2 +0 -0
  1072. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin-ext.woff2 +0 -0
  1073. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin.woff2 +0 -0
  1074. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/icon-192.png +0 -0
  1075. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/icon-512.png +0 -0
  1076. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/icon.svg +0 -0
  1077. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/logo.png +0 -0
  1078. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/pythinker_animated.svg +0 -0
  1079. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/brand/robots.txt +0 -0
  1080. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/install.ps1 +0 -0
  1081. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/install.sh +0 -0
  1082. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/static/logo.png +0 -0
  1083. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/store/__init__.py +0 -0
  1084. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/web/store/sessions.py +0 -0
  1085. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/wire/__init__.py +0 -0
  1086. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/wire/file.py +0 -0
  1087. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/wire/jsonrpc.py +0 -0
  1088. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/wire/protocol.py +0 -0
  1089. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/wire/root_hub.py +0 -0
  1090. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/wire/serde.py +0 -0
  1091. {pythinker_code-0.56.0 → pythinker_code-0.57.0}/src/pythinker_code/wire/server.py +0 -0
  1092. {pythinker_code-0.56.0 → pythinker_code-0.57.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.56.0
3
+ Version: 0.57.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,13 +115,13 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
115
115
 
116
116
  ---
117
117
 
118
- ## 🆕 What's New in 0.56.0
118
+ ## 🆕 What's New in 0.57.0
119
119
 
120
- - **Windows shell UI recovers from mid-session console blanking.** Child processes spawned by the Shell tool, background tasks, and `!` commands no longer attach to the interactive console, and the prompt renderer forces an absolute repaint after terminal resizes and failed scrollback handoffs instead of diffing against a stale frame.
121
- - **Workflow progress rendering and lifecycle fixes.** Progress display no longer duplicates agents truncated by the per-phase display cap, leaked `agent()` coroutines are closed when `parallel()` rejects its arguments, and a 1000-agent lifetime backstop now guards against runaway workflow loops.
122
- - **Stale update-success notice cleared after downgrading.** Restarting into an older Homebrew install no longer leaves a permanent "Restart to apply" banner.
120
+ - **No more ghost/duplicate input prompt while the agent works.** The input card no longer fossilizes above the stream as a second, ghostly prompt; the prompt bar and top border stay visible through turn-start and lazy-load frames; running-agent output renders through a stable diff-rendered scene (ported from Pi); and an experimental Focus TUI mode (`tui.focus_mode`) pins the composer and hides file activity behind a compact live shelf.
121
+ - **Added a native `/benchmark` command suite.** Run deterministic local Pythinker model evaluations with bundled smoke tasks and SWE-style JSONL tasks (`/benchmark:swe`), plus `/benchmark compare`, `/benchmark export`, and `/benchmark discover` actions with replayable artifacts and branded markdown reports.
122
+ - **Hardened benchmark and skill security edges.** SWE verification commands are shape-validated before execution, benchmark discovery requires explicit network opt-in, and active-skill deactivation failures now surface instead of being swallowed.
123
123
 
124
- Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.56.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
124
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.57.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
125
125
 
126
126
 
127
127
  ---
@@ -191,6 +191,22 @@ Optional web frontend and visualization frontend ship alongside the CLI for rich
191
191
 
192
192
  Swap providers and models per-session: `--model openai/gpt-5.5`, hosted Pythinker models, or your own keys.
193
193
 
194
+ </td>
195
+ </tr>
196
+ <tr>
197
+ <td width="50%" valign="top">
198
+
199
+ ### 📊 Local Benchmarks
200
+
201
+ Run `/benchmark` to execute deterministic local coding tasks through the active Pythinker session, with replayable artifacts and verification reports.
202
+
203
+ </td>
204
+ <td width="50%" valign="top">
205
+
206
+ ### 🧪 SWE-Style Fixtures
207
+
208
+ Run trusted local JSONL fixtures with `/benchmark:swe --dataset <path> --trusted-dataset true` when you want SWE-style task inputs without a hosted evaluator.
209
+
194
210
  </td>
195
211
  </tr>
196
212
  </table>
@@ -211,7 +227,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
211
227
 
212
228
  | Platform | Recommended install | Artifact source |
213
229
  |---|---|---|
214
- | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.56.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
230
+ | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.57.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
215
231
  | **<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) |
216
232
  | **<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 |
217
233
  | **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
@@ -239,10 +255,11 @@ pythinker # start the interactive TUI
239
255
 
240
256
  ### 🪟 Windows — native installer
241
257
 
242
- `PythinkerSetup-0.56.0.exe` is a signed* Inno Setup wizard. Installs per-user
243
- into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
244
- PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
245
- the change. **No UAC prompt.**
258
+ `PythinkerSetup-0.57.0.exe` is an Inno Setup wizard. Release builds are signed
259
+ when Authenticode secrets are configured in CI; otherwise the installer ships
260
+ unsigned. Installs per-user into `%LOCALAPPDATA%\Programs\Pythinker`, registers
261
+ `pythinker` on your user PATH (`HKCU\Environment`), broadcasts
262
+ `WM_SETTINGCHANGE` so new shells see the change. **No UAC prompt.**
246
263
 
247
264
  ```powershell
248
265
  # One-line install (downloads the native .exe, verifies SHA-256, runs per-user)
@@ -250,24 +267,24 @@ irm https://pythinker.com/install.ps1 | iex
250
267
 
251
268
  # Or manually download the installer + checksum from the Releases page,
252
269
  # verify with Get-FileHash, then run:
253
- .\PythinkerSetup-0.56.0.exe
270
+ .\PythinkerSetup-0.57.0.exe
254
271
 
255
272
  # Open a fresh PowerShell
256
273
  pythinker --version
257
274
  ```
258
275
 
259
- **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.56.0.exe /ALLUSERS`
276
+ **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.57.0.exe /ALLUSERS`
260
277
  installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
261
278
 
262
279
  **Upgrade:** `pythinker update` from inside the running app — it downloads
263
- the newest installer, verifies SHA-256, and launches the signed Inno installer
280
+ the newest installer, verifies SHA-256, and launches the Inno installer
264
281
  with visible progress (`/SILENT /NORESTART /CURRENTUSER /CLOSEAPPLICATIONS /NORESTARTAPPLICATIONS`).
265
282
 
266
283
  **Uninstall:** Apps & Features → *Pythinker Code* → Uninstall reverts both
267
284
  the files and the PATH edit.
268
285
 
269
- > 🛡 **First-launch SmartScreen warning** — \*until the Authenticode cert is
270
- > provisioned in CI, the installer ships unsigned and Windows shows
286
+ > 🛡 **First-launch SmartScreen warning** — Until Authenticode secrets are
287
+ > configured in CI for a release, the installer ships unsigned and Windows shows
271
288
  > *"Windows protected your PC."* Click **More info → Run anyway**. Use the
272
289
  > published `.sha256` as your integrity check until signing comes online.
273
290
 
@@ -314,26 +331,26 @@ attached to every GitHub Release.
314
331
 
315
332
  ```sh
316
333
  # Debian / Ubuntu (x86_64)
317
- sudo dpkg -i pythinker-code_0.56.0_amd64.deb
334
+ sudo dpkg -i pythinker-code_0.57.0_amd64.deb
318
335
  sudo apt-get install -f # only if dpkg reports missing deps
319
336
 
320
337
  # Debian / Ubuntu (ARM64)
321
- sudo dpkg -i pythinker-code_0.56.0_arm64.deb
338
+ sudo dpkg -i pythinker-code_0.57.0_arm64.deb
322
339
 
323
340
  # Fedora / RHEL / openSUSE (x86_64)
324
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.56.0/pythinker-code-0.56.0.x86_64.rpm
325
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.56.0/pythinker-code-0.56.0.x86_64.rpm.sha256
326
- sha256sum -c pythinker-code-0.56.0.x86_64.rpm.sha256
341
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.57.0/pythinker-code-0.57.0.x86_64.rpm
342
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.57.0/pythinker-code-0.57.0.x86_64.rpm.sha256
343
+ sha256sum -c pythinker-code-0.57.0.x86_64.rpm.sha256
327
344
  # Fedora / RHEL:
328
- sudo dnf install ./pythinker-code-0.56.0.x86_64.rpm
345
+ sudo dnf install ./pythinker-code-0.57.0.x86_64.rpm
329
346
  # openSUSE:
330
- sudo zypper install ./pythinker-code-0.56.0.x86_64.rpm
347
+ sudo zypper install ./pythinker-code-0.57.0.x86_64.rpm
331
348
 
332
349
  # Fedora / RHEL (aarch64)
333
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.56.0/pythinker-code-0.56.0.aarch64.rpm
334
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.56.0/pythinker-code-0.56.0.aarch64.rpm.sha256
335
- sha256sum -c pythinker-code-0.56.0.aarch64.rpm.sha256
336
- sudo dnf install ./pythinker-code-0.56.0.aarch64.rpm
350
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.57.0/pythinker-code-0.57.0.aarch64.rpm
351
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.57.0/pythinker-code-0.57.0.aarch64.rpm.sha256
352
+ sha256sum -c pythinker-code-0.57.0.aarch64.rpm.sha256
353
+ sudo dnf install ./pythinker-code-0.57.0.aarch64.rpm
337
354
  ```
338
355
 
339
356
  Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
@@ -342,8 +359,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
342
359
  **Verify before install:**
343
360
 
344
361
  ```sh
345
- sha256sum -c pythinker-code_0.56.0_amd64.deb.sha256 # Debian/Ubuntu
346
- sha256sum -c pythinker-code-0.56.0.x86_64.rpm.sha256 # Fedora/RHEL
362
+ sha256sum -c pythinker-code_0.57.0_amd64.deb.sha256 # Debian/Ubuntu
363
+ sha256sum -c pythinker-code-0.57.0.x86_64.rpm.sha256 # Fedora/RHEL
347
364
  ```
348
365
 
349
366
  **Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
@@ -683,6 +700,7 @@ Pythinker is a small, extensible runtime — not a monolith. Build on it.
683
700
  | 🌊 **Flows** | `/flow:<name>` executes bundled prompt flows | bundled & user-defined |
684
701
  | 🪝 **Hooks** | Observe or block tool execution; integrate policy or automation | hook events API |
685
702
  | 🧩 **Plugins** | Installable extension packages | `pythinker plugin` |
703
+ | 📊 **Benchmarks** | Deterministic local coding tasks with verification reports | `/benchmark`, `src/pythinker_code/benchmark/` |
686
704
 
687
705
  ---
688
706
 
@@ -50,13 +50,13 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
50
50
 
51
51
  ---
52
52
 
53
- ## 🆕 What's New in 0.56.0
53
+ ## 🆕 What's New in 0.57.0
54
54
 
55
- - **Windows shell UI recovers from mid-session console blanking.** Child processes spawned by the Shell tool, background tasks, and `!` commands no longer attach to the interactive console, and the prompt renderer forces an absolute repaint after terminal resizes and failed scrollback handoffs instead of diffing against a stale frame.
56
- - **Workflow progress rendering and lifecycle fixes.** Progress display no longer duplicates agents truncated by the per-phase display cap, leaked `agent()` coroutines are closed when `parallel()` rejects its arguments, and a 1000-agent lifetime backstop now guards against runaway workflow loops.
57
- - **Stale update-success notice cleared after downgrading.** Restarting into an older Homebrew install no longer leaves a permanent "Restart to apply" banner.
55
+ - **No more ghost/duplicate input prompt while the agent works.** The input card no longer fossilizes above the stream as a second, ghostly prompt; the prompt bar and top border stay visible through turn-start and lazy-load frames; running-agent output renders through a stable diff-rendered scene (ported from Pi); and an experimental Focus TUI mode (`tui.focus_mode`) pins the composer and hides file activity behind a compact live shelf.
56
+ - **Added a native `/benchmark` command suite.** Run deterministic local Pythinker model evaluations with bundled smoke tasks and SWE-style JSONL tasks (`/benchmark:swe`), plus `/benchmark compare`, `/benchmark export`, and `/benchmark discover` actions with replayable artifacts and branded markdown reports.
57
+ - **Hardened benchmark and skill security edges.** SWE verification commands are shape-validated before execution, benchmark discovery requires explicit network opt-in, and active-skill deactivation failures now surface instead of being swallowed.
58
58
 
59
- Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.56.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
59
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.57.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
60
60
 
61
61
 
62
62
  ---
@@ -126,6 +126,22 @@ Optional web frontend and visualization frontend ship alongside the CLI for rich
126
126
 
127
127
  Swap providers and models per-session: `--model openai/gpt-5.5`, hosted Pythinker models, or your own keys.
128
128
 
129
+ </td>
130
+ </tr>
131
+ <tr>
132
+ <td width="50%" valign="top">
133
+
134
+ ### 📊 Local Benchmarks
135
+
136
+ Run `/benchmark` to execute deterministic local coding tasks through the active Pythinker session, with replayable artifacts and verification reports.
137
+
138
+ </td>
139
+ <td width="50%" valign="top">
140
+
141
+ ### 🧪 SWE-Style Fixtures
142
+
143
+ Run trusted local JSONL fixtures with `/benchmark:swe --dataset <path> --trusted-dataset true` when you want SWE-style task inputs without a hosted evaluator.
144
+
129
145
  </td>
130
146
  </tr>
131
147
  </table>
@@ -146,7 +162,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
146
162
 
147
163
  | Platform | Recommended install | Artifact source |
148
164
  |---|---|---|
149
- | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.56.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
165
+ | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.57.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
150
166
  | **<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) |
151
167
  | **<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 |
152
168
  | **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
@@ -174,10 +190,11 @@ pythinker # start the interactive TUI
174
190
 
175
191
  ### 🪟 Windows — native installer
176
192
 
177
- `PythinkerSetup-0.56.0.exe` is a signed* Inno Setup wizard. Installs per-user
178
- into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
179
- PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
180
- the change. **No UAC prompt.**
193
+ `PythinkerSetup-0.57.0.exe` is an Inno Setup wizard. Release builds are signed
194
+ when Authenticode secrets are configured in CI; otherwise the installer ships
195
+ unsigned. Installs per-user into `%LOCALAPPDATA%\Programs\Pythinker`, registers
196
+ `pythinker` on your user PATH (`HKCU\Environment`), broadcasts
197
+ `WM_SETTINGCHANGE` so new shells see the change. **No UAC prompt.**
181
198
 
182
199
  ```powershell
183
200
  # One-line install (downloads the native .exe, verifies SHA-256, runs per-user)
@@ -185,24 +202,24 @@ irm https://pythinker.com/install.ps1 | iex
185
202
 
186
203
  # Or manually download the installer + checksum from the Releases page,
187
204
  # verify with Get-FileHash, then run:
188
- .\PythinkerSetup-0.56.0.exe
205
+ .\PythinkerSetup-0.57.0.exe
189
206
 
190
207
  # Open a fresh PowerShell
191
208
  pythinker --version
192
209
  ```
193
210
 
194
- **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.56.0.exe /ALLUSERS`
211
+ **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.57.0.exe /ALLUSERS`
195
212
  installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
196
213
 
197
214
  **Upgrade:** `pythinker update` from inside the running app — it downloads
198
- the newest installer, verifies SHA-256, and launches the signed Inno installer
215
+ the newest installer, verifies SHA-256, and launches the Inno installer
199
216
  with visible progress (`/SILENT /NORESTART /CURRENTUSER /CLOSEAPPLICATIONS /NORESTARTAPPLICATIONS`).
200
217
 
201
218
  **Uninstall:** Apps & Features → *Pythinker Code* → Uninstall reverts both
202
219
  the files and the PATH edit.
203
220
 
204
- > 🛡 **First-launch SmartScreen warning** — \*until the Authenticode cert is
205
- > provisioned in CI, the installer ships unsigned and Windows shows
221
+ > 🛡 **First-launch SmartScreen warning** — Until Authenticode secrets are
222
+ > configured in CI for a release, the installer ships unsigned and Windows shows
206
223
  > *"Windows protected your PC."* Click **More info → Run anyway**. Use the
207
224
  > published `.sha256` as your integrity check until signing comes online.
208
225
 
@@ -249,26 +266,26 @@ attached to every GitHub Release.
249
266
 
250
267
  ```sh
251
268
  # Debian / Ubuntu (x86_64)
252
- sudo dpkg -i pythinker-code_0.56.0_amd64.deb
269
+ sudo dpkg -i pythinker-code_0.57.0_amd64.deb
253
270
  sudo apt-get install -f # only if dpkg reports missing deps
254
271
 
255
272
  # Debian / Ubuntu (ARM64)
256
- sudo dpkg -i pythinker-code_0.56.0_arm64.deb
273
+ sudo dpkg -i pythinker-code_0.57.0_arm64.deb
257
274
 
258
275
  # Fedora / RHEL / openSUSE (x86_64)
259
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.56.0/pythinker-code-0.56.0.x86_64.rpm
260
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.56.0/pythinker-code-0.56.0.x86_64.rpm.sha256
261
- sha256sum -c pythinker-code-0.56.0.x86_64.rpm.sha256
276
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.57.0/pythinker-code-0.57.0.x86_64.rpm
277
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.57.0/pythinker-code-0.57.0.x86_64.rpm.sha256
278
+ sha256sum -c pythinker-code-0.57.0.x86_64.rpm.sha256
262
279
  # Fedora / RHEL:
263
- sudo dnf install ./pythinker-code-0.56.0.x86_64.rpm
280
+ sudo dnf install ./pythinker-code-0.57.0.x86_64.rpm
264
281
  # openSUSE:
265
- sudo zypper install ./pythinker-code-0.56.0.x86_64.rpm
282
+ sudo zypper install ./pythinker-code-0.57.0.x86_64.rpm
266
283
 
267
284
  # Fedora / RHEL (aarch64)
268
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.56.0/pythinker-code-0.56.0.aarch64.rpm
269
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.56.0/pythinker-code-0.56.0.aarch64.rpm.sha256
270
- sha256sum -c pythinker-code-0.56.0.aarch64.rpm.sha256
271
- sudo dnf install ./pythinker-code-0.56.0.aarch64.rpm
285
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.57.0/pythinker-code-0.57.0.aarch64.rpm
286
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.57.0/pythinker-code-0.57.0.aarch64.rpm.sha256
287
+ sha256sum -c pythinker-code-0.57.0.aarch64.rpm.sha256
288
+ sudo dnf install ./pythinker-code-0.57.0.aarch64.rpm
272
289
  ```
273
290
 
274
291
  Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
@@ -277,8 +294,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
277
294
  **Verify before install:**
278
295
 
279
296
  ```sh
280
- sha256sum -c pythinker-code_0.56.0_amd64.deb.sha256 # Debian/Ubuntu
281
- sha256sum -c pythinker-code-0.56.0.x86_64.rpm.sha256 # Fedora/RHEL
297
+ sha256sum -c pythinker-code_0.57.0_amd64.deb.sha256 # Debian/Ubuntu
298
+ sha256sum -c pythinker-code-0.57.0.x86_64.rpm.sha256 # Fedora/RHEL
282
299
  ```
283
300
 
284
301
  **Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
@@ -618,6 +635,7 @@ Pythinker is a small, extensible runtime — not a monolith. Build on it.
618
635
  | 🌊 **Flows** | `/flow:<name>` executes bundled prompt flows | bundled & user-defined |
619
636
  | 🪝 **Hooks** | Observe or block tool execution; integrate policy or automation | hook events API |
620
637
  | 🧩 **Plugins** | Installable extension packages | `pythinker plugin` |
638
+ | 📊 **Benchmarks** | Deterministic local coding tasks with verification reports | `/benchmark`, `src/pythinker_code/benchmark/` |
621
639
 
622
640
  ---
623
641
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "pythinker-code"
3
- version = "0.56.0"
3
+ version = "0.57.0"
4
4
  description = "Pythinker — an agentic CLI developed by Pythoughts-labs."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -76,6 +76,10 @@ dev = [
76
76
  "pytest>=9.0.3",
77
77
  "pytest-asyncio>=1.3.0",
78
78
  "pytest-cov>=6.0",
79
+ # Pure-Python VT100/xterm emulator: PTY UI tests feed raw terminal bytes to
80
+ # a virtual screen so they can assert on the *rendered* frame (catching
81
+ # incomplete-erase "ghost" rows), not just the byte stream.
82
+ "pyte>=0.8.2",
79
83
  # Pinned: ruff 0.15's formatter reflow fails `make check`. Unpin once the
80
84
  # formatting churn is resolved. Mirrored as a Dependabot ignore in
81
85
  # .github/dependabot.yml.
@@ -15,6 +15,32 @@ GitHub Releases page; `0.8.0` is the new starting line.
15
15
 
16
16
  ## Unreleased
17
17
 
18
+ ## 0.57.0 (2026-07-05)
19
+
20
+ - **No more ghost/duplicate input prompt while the agent works.** After
21
+ submitting a prompt, the input card no longer fossilizes above the stream as
22
+ a second, ghostly prompt. The prompt bar and top border now stay visible
23
+ through turn-start and lazy-load frames, and running-agent output renders
24
+ through a stable diff-rendered scene (ported from Pi) so the input card no
25
+ longer jumps. An experimental Focus TUI mode (`tui.focus_mode`) pins the
26
+ composer and hides file activity behind a compact live shelf for a cleaner
27
+ fullscreen view, and active subagent tool work now surfaces in the pinned
28
+ status tail instead of a generic composing spinner.
29
+ - **Added a native `/benchmark` command suite.** Run deterministic local
30
+ Pythinker model evaluations with bundled smoke tasks and SWE-style JSONL
31
+ tasks (`/benchmark:swe`), plus `/benchmark compare`, `/benchmark export`,
32
+ and `/benchmark discover` actions that produce replayable artifacts,
33
+ activity metrics, and branded markdown reports.
34
+ - **Hardened benchmark and skill security edges.** SWE verification commands
35
+ are shape-validated before execution, benchmark discovery requires explicit
36
+ network opt-in, run IDs avoid clock collisions, runtime overrides restore
37
+ after setup failures, and active-skill deactivation failures now surface
38
+ instead of being swallowed. Explicitly invoked skills stay active across
39
+ later turns through a compact reminder until stopped by name or
40
+ "normal mode".
41
+
42
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.57.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
43
+
18
44
  ## 0.56.0 (2026-07-02)
19
45
 
20
46
  - **Windows shell UI recovers from mid-session console blanking.** The TUI's
@@ -127,7 +127,7 @@ Default to `ImplementAndJudge` for non-trivial scoped edits (see §4.4); reserve
127
127
 
128
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.
129
129
 
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.
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`. If the user explicitly invokes or names a skill as an active mode, keep applying that loaded skill until they ask to stop it or return to normal mode. Read skill details only when needed, to conserve context. Catalog and scope precedence in §12.
131
131
 
132
132
  **Inline `/command` references.** Slash commands execute only as their own message starting with `/`. A `/command` or `/skill:<name>` mentioned mid-message did not auto-run, but it still expresses intent — act on it rather than leading your reply by reporting it as failed. For `/plan`, call `EnterPlanMode` (a real tool in your toolset, not just prose); for `/goal`, pursue the described objective until it is verifiably done; for `/skill:<name>`, load it via `ReadSkill` and apply it; for other guidance commands, apply the equivalent guidance yourself. Mention invoking the real command only when genuinely needed. Never silently drop such a reference.
133
133
 
@@ -259,4 +259,4 @@ Skills are reusable, self-contained capability directories, each with a `SKILL.m
259
259
 
260
260
  ${PYTHINKER_SKILLS}
261
261
 
262
- Identify the skills relevant to the current task and read their `SKILL.md` before applying the workflow (§5). If a skill `<name>` has a companion `<name>-local`, treat it as local project specialization applied after the core skill. Read skill details only when needed, to conserve the context window.
262
+ Identify the skills relevant to the current task and read their `SKILL.md` before applying the workflow (§5). If a skill `<name>` has a companion `<name>-local`, treat it as local project specialization applied after the core skill. Read skill details only when needed, to conserve the context window.
@@ -0,0 +1,5 @@
1
+ """Native Pythinker Benchmark support."""
2
+
3
+ from pythinker_code.benchmark.commands import benchmark_usage
4
+
5
+ __all__ = ["benchmark_usage"]
@@ -0,0 +1,88 @@
1
+ from __future__ import annotations
2
+
3
+ import difflib
4
+ import json
5
+ from collections.abc import Mapping
6
+ from pathlib import Path
7
+ from typing import cast
8
+
9
+
10
+ def summarize_benchmark_activity(
11
+ before: Mapping[str, str],
12
+ after: Mapping[str, str],
13
+ wire_file: Path,
14
+ wire_offset: int,
15
+ ) -> dict[str, object]:
16
+ added, removed = _changed_line_counts(before, after)
17
+ tool_calls_by_name = _tool_calls_by_name(wire_file, wire_offset)
18
+ shell_tool_calls = sum(
19
+ count for name, count in tool_calls_by_name.items() if name.casefold() in {"bash", "shell"}
20
+ )
21
+ return {
22
+ "changed_files_count": len(_changed_file_names(before, after)),
23
+ "added_lines": added,
24
+ "removed_lines": removed,
25
+ "tool_calls_by_name": dict(sorted(tool_calls_by_name.items())),
26
+ "shell_tool_calls": shell_tool_calls,
27
+ }
28
+
29
+
30
+ def _changed_file_names(before: Mapping[str, str], after: Mapping[str, str]) -> set[str]:
31
+ names = set(before) | set(after)
32
+ return {name for name in names if before.get(name) != after.get(name)}
33
+
34
+
35
+ def _changed_line_counts(before: Mapping[str, str], after: Mapping[str, str]) -> tuple[int, int]:
36
+ added = 0
37
+ removed = 0
38
+ for name in sorted(_changed_file_names(before, after)):
39
+ diff = difflib.ndiff(
40
+ before.get(name, "").splitlines(),
41
+ after.get(name, "").splitlines(),
42
+ )
43
+ for line in diff:
44
+ if line.startswith("+ "):
45
+ added += 1
46
+ elif line.startswith("- "):
47
+ removed += 1
48
+ return added, removed
49
+
50
+
51
+ def _tool_calls_by_name(wire_file: Path, offset: int) -> dict[str, int]:
52
+ counts: dict[str, int] = {}
53
+ if not wire_file.exists():
54
+ return counts
55
+ try:
56
+ with wire_file.open("r", encoding="utf-8", errors="replace") as f:
57
+ f.seek(offset)
58
+ for line in f:
59
+ try:
60
+ raw: object = json.loads(line)
61
+ except json.JSONDecodeError:
62
+ continue
63
+ if not isinstance(raw, dict):
64
+ continue
65
+ message = cast(dict[str, object], raw).get("message")
66
+ if not isinstance(message, dict):
67
+ continue
68
+ message_data = cast(dict[str, object], message)
69
+ if message_data.get("type") != "ToolCall":
70
+ continue
71
+ payload = message_data.get("payload")
72
+ if not isinstance(payload, dict):
73
+ continue
74
+ name = _tool_name(cast(dict[str, object], payload))
75
+ if isinstance(name, str) and name:
76
+ counts[name] = counts.get(name, 0) + 1
77
+ except OSError:
78
+ return {}
79
+ return counts
80
+
81
+
82
+ def _tool_name(payload: Mapping[str, object]) -> str | None:
83
+ function = payload.get("function")
84
+ if isinstance(function, dict):
85
+ name = cast(dict[str, object], function).get("name")
86
+ return name if isinstance(name, str) else None
87
+ legacy_name = payload.get("name")
88
+ return legacy_name if isinstance(legacy_name, str) else None
@@ -0,0 +1 @@
1
+ """Bundled benchmark definitions."""
@@ -0,0 +1 @@
1
+ """Bundled benchmark suites."""
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "pythinker-core",
3
+ "title": "Pythinker Core Suite",
4
+ "description": "Deterministic local coding tasks covering common agent benchmark failure modes.",
5
+ "tasks": [
6
+ "core-atomic-transfer",
7
+ "core-dedup-order",
8
+ "core-explicit-none-metadata",
9
+ "core-safe-path-join"
10
+ ]
11
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "pythinker-smoke",
3
+ "title": "Pythinker Smoke Suite",
4
+ "description": "Small deterministic tasks for validating the native benchmark runner.",
5
+ "tasks": [
6
+ "smoke-edit-readme",
7
+ "smoke-fix-python-test",
8
+ "smoke-add-small-function"
9
+ ]
10
+ }
@@ -0,0 +1 @@
1
+ """Bundled benchmark tasks."""
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "core-atomic-transfer",
3
+ "title": "Atomic Ledger Transfer",
4
+ "description": "Fix a money-transfer bug without leaving partial state behind.",
5
+ "prompt": "Fix ledger.py. Ledger.transfer(src, dst, amount) must move funds atomically: reject missing source accounts, missing destination accounts, non-positive amounts, and insufficient funds without changing any balance. Keep the public API minimal.",
6
+ "workspace": {
7
+ "files": {
8
+ "ledger.py": "class Ledger:\n def __init__(self, balances):\n self.balances = dict(balances)\n\n def transfer(self, src, dst, amount):\n self.balances[src] -= amount\n if self.balances[src] < 0:\n raise ValueError('insufficient funds')\n self.balances[dst] += amount\n",
9
+ "test_ledger.py": "import pytest\n\nfrom ledger import Ledger\n\n\ndef test_transfer_moves_funds():\n ledger = Ledger({'a': 10, 'b': 1})\n ledger.transfer('a', 'b', 4)\n assert ledger.balances == {'a': 6, 'b': 5}\n\n\ndef test_insufficient_funds_rolls_back():\n ledger = Ledger({'a': 3, 'b': 1})\n with pytest.raises(ValueError):\n ledger.transfer('a', 'b', 5)\n assert ledger.balances == {'a': 3, 'b': 1}\n\n\ndef test_missing_destination_does_not_create_accounts():\n ledger = Ledger({'a': 3})\n with pytest.raises((KeyError, ValueError)):\n ledger.transfer('a', 'missing', 1)\n assert ledger.balances == {'a': 3}\n\n\ndef test_missing_source_rolls_back():\n ledger = Ledger({'a': 3, 'b': 1})\n with pytest.raises((KeyError, ValueError)):\n ledger.transfer('missing', 'b', 1)\n assert ledger.balances == {'a': 3, 'b': 1}\n\n\n@pytest.mark.parametrize('amount', [0, -1])\ndef test_non_positive_amount_rejected(amount):\n ledger = Ledger({'a': 3, 'b': 1})\n with pytest.raises(ValueError):\n ledger.transfer('a', 'b', amount)\n assert ledger.balances == {'a': 3, 'b': 1}\n\n\ndef test_non_positive_amount_checked_before_accounts():\n ledger = Ledger({'a': 3, 'b': 1})\n with pytest.raises(ValueError):\n ledger.transfer('missing', 'b', -1)\n assert ledger.balances == {'a': 3, 'b': 1}\n"
10
+ }
11
+ },
12
+ "verification": {
13
+ "type": "command",
14
+ "command": "python -m pytest test_ledger.py -q"
15
+ },
16
+ "limits": {
17
+ "timeout_seconds": 180,
18
+ "max_steps": 60
19
+ },
20
+ "tags": ["core", "python", "state", "deterministic"]
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "core-dedup-order",
3
+ "title": "Stable Deduplication",
4
+ "description": "Preserve first-seen order while removing duplicates.",
5
+ "prompt": "Fix seqkit.py. unique(items) must return unique values from any iterable in first-seen order. It must support unhashable values such as dictionaries and must not mutate the input.",
6
+ "workspace": {
7
+ "files": {
8
+ "seqkit.py": "def unique(items):\n return sorted(set(items))\n",
9
+ "test_seqkit.py": "from seqkit import unique\n\n\ndef test_unique_preserves_first_seen_order():\n assert unique(['b', 'a', 'b', 'c', 'a']) == ['b', 'a', 'c']\n\n\ndef test_unique_supports_unhashable_dicts():\n first = {'id': 1, 'name': 'first'}\n duplicate = {'id': 1, 'name': 'first'}\n second = {'id': 2, 'name': 'second'}\n assert unique([first, duplicate, second, first]) == [first, second]\n\n\ndef test_unique_does_not_mutate_input():\n values = ['b', 'a', 'b']\n assert unique(values) == ['b', 'a']\n assert values == ['b', 'a', 'b']\n\n\ndef test_unique_accepts_generators():\n assert unique(x for x in ['a', 'a', 'b']) == ['a', 'b']\n\n\ndef test_unique_keeps_falsey_values_distinct():\n assert unique([0, False, '', None, 0, None]) == [0, '', None]\n"
10
+ }
11
+ },
12
+ "verification": {
13
+ "type": "command",
14
+ "command": "python -m pytest test_seqkit.py -q"
15
+ },
16
+ "limits": {
17
+ "timeout_seconds": 180,
18
+ "max_steps": 60
19
+ },
20
+ "tags": ["core", "python", "algorithm", "deterministic"]
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "core-explicit-none-metadata",
3
+ "title": "Explicit None Metadata",
4
+ "description": "Distinguish omitted metadata from explicit None.",
5
+ "prompt": "Fix metadata.py. build_driver_info must distinguish omitted name/version from explicitly passing None: omitted fields use defaults, explicit None suppresses that field, and if both are explicitly None the result is empty. Other explicit falsey values, such as empty string, False, or 0, must be preserved.",
6
+ "workspace": {
7
+ "files": {
8
+ "metadata.py": "DEFAULT_NAME = 'pythinker-client'\nDEFAULT_VERSION = '1.0'\n\n\ndef build_driver_info(name=None, version=None):\n return {\n 'name': name or DEFAULT_NAME,\n 'version': version or DEFAULT_VERSION,\n }\n",
9
+ "test_metadata.py": "from metadata import build_driver_info\n\n\ndef test_omitted_fields_use_defaults():\n assert build_driver_info() == {'name': 'pythinker-client', 'version': '1.0'}\n\n\ndef test_explicit_none_suppresses_one_field():\n assert build_driver_info(name=None) == {'version': '1.0'}\n assert build_driver_info(version=None) == {'name': 'pythinker-client'}\n\n\ndef test_explicit_none_for_both_fields_returns_empty_metadata():\n assert build_driver_info(name=None, version=None) == {}\n\n\ndef test_explicit_values_are_used():\n assert build_driver_info(name='wrapper', version='2.5') == {'name': 'wrapper', 'version': '2.5'}\n\n\ndef test_falsey_explicit_values_are_preserved():\n assert build_driver_info(name='', version='0') == {'name': '', 'version': '0'}\n assert build_driver_info(name=False, version=0) == {'name': False, 'version': 0}\n assert build_driver_info(name=None, version='') == {'version': ''}\n"
10
+ }
11
+ },
12
+ "verification": {
13
+ "type": "command",
14
+ "command": "python -m pytest test_metadata.py -q"
15
+ },
16
+ "limits": {
17
+ "timeout_seconds": 180,
18
+ "max_steps": 60
19
+ },
20
+ "tags": ["core", "python", "api-semantics", "deterministic"]
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "core-safe-path-join",
3
+ "title": "Safe Path Join",
4
+ "description": "Reject path traversal while keeping normal relative paths usable.",
5
+ "prompt": "Fix paths.py. safe_join(root, user_path) must return a Path inside root for normal relative paths, and reject absolute paths, sibling-prefix paths, parent traversal, or symlink traversal outside root with ValueError.",
6
+ "workspace": {
7
+ "files": {
8
+ "paths.py": "from pathlib import Path\n\n\ndef safe_join(root, user_path):\n return Path(root) / user_path\n",
9
+ "test_paths.py": "from pathlib import Path\n\nimport pytest\n\nfrom paths import safe_join\n\n\ndef test_safe_join_allows_nested_relative_path(tmp_path):\n root = tmp_path / 'root'\n root.mkdir()\n assert safe_join(root, 'logs/app.txt') == root.resolve() / 'logs/app.txt'\n\n\ndef test_safe_join_allows_root_relative_path(tmp_path):\n root = tmp_path / 'root'\n root.mkdir()\n assert safe_join(root, '.') == root.resolve()\n\n\ndef test_safe_join_rejects_parent_traversal(tmp_path):\n root = tmp_path / 'root'\n root.mkdir()\n with pytest.raises(ValueError):\n safe_join(root, '../secret.txt')\n\n\ndef test_safe_join_rejects_absolute_path(tmp_path):\n root = tmp_path / 'root'\n root.mkdir()\n with pytest.raises(ValueError):\n safe_join(root, Path('/tmp/secret.txt'))\n\n\ndef test_safe_join_rejects_sibling_prefix_absolute_path(tmp_path):\n root = tmp_path / 'root'\n sibling = tmp_path / 'root-sibling'\n root.mkdir()\n sibling.mkdir()\n with pytest.raises(ValueError):\n safe_join(root, sibling / 'secret.txt')\n\n\ndef test_safe_join_rejects_symlink_escape(tmp_path):\n root = tmp_path / 'root'\n outside = tmp_path / 'outside'\n root.mkdir()\n outside.mkdir()\n link = root / 'link'\n try:\n link.symlink_to(outside, target_is_directory=True)\n except OSError:\n pytest.skip('symlinks unavailable')\n with pytest.raises(ValueError):\n safe_join(root, 'link/secret.txt')\n"
10
+ }
11
+ },
12
+ "verification": {
13
+ "type": "command",
14
+ "command": "python -m pytest test_paths.py -q"
15
+ },
16
+ "limits": {
17
+ "timeout_seconds": 180,
18
+ "max_steps": 60
19
+ },
20
+ "tags": ["core", "python", "security", "deterministic"]
21
+ }