pythinker-code 0.57.0__tar.gz → 0.59.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 (1105) hide show
  1. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/PKG-INFO +38 -23
  2. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/README.md +37 -22
  3. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/pyproject.toml +1 -1
  4. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/CHANGELOG.md +59 -0
  5. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/agents/default/system.md +1 -1
  6. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/agentspec.py +171 -11
  7. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/__init__.py +4 -2
  8. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/platforms.py +37 -15
  9. pythinker_code-0.59.0/src/pythinker_code/auth/z_ai.py +413 -0
  10. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/background/agent_runner.py +4 -0
  11. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/background/manager.py +8 -0
  12. pythinker_code-0.59.0/src/pythinker_code/benchmark/toolset_characterization.py +1118 -0
  13. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/cli/__init__.py +83 -4
  14. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/cli/system_prompt.py +2 -1
  15. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/llm.py +57 -227
  16. pythinker_code-0.59.0/src/pythinker_code/provider_compatibility.py +401 -0
  17. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skill/__init__.py +139 -8
  18. pythinker_code-0.59.0/src/pythinker_code/skill/catalog.py +509 -0
  19. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/agent.py +168 -69
  20. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/btw.py +35 -10
  21. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/compaction_restore.py +3 -3
  22. pythinker_code-0.59.0/src/pythinker_code/soul/context.py +1087 -0
  23. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/dynamic_injection.py +120 -80
  24. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/dynamic_injections/agent_list.py +2 -1
  25. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/dynamic_injections/model_defense.py +47 -12
  26. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/dynamic_injections/permissions_state.py +60 -9
  27. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/pythinkersoul.py +510 -219
  28. pythinker_code-0.59.0/src/pythinker_code/soul/request_assembly.py +770 -0
  29. pythinker_code-0.59.0/src/pythinker_code/soul/request_lifecycle.py +481 -0
  30. pythinker_code-0.59.0/src/pythinker_code/soul/request_primitives.py +34 -0
  31. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/slash.py +64 -2
  32. pythinker_code-0.59.0/src/pythinker_code/soul/tool_execution.py +945 -0
  33. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/toolset.py +73 -638
  34. pythinker_code-0.59.0/src/pythinker_code/subagents/catalogue.py +398 -0
  35. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/subagents/core.py +36 -8
  36. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/subagents/discovery.py +139 -22
  37. pythinker_code-0.59.0/src/pythinker_code/subagents/git_context.py +294 -0
  38. pythinker_code-0.59.0/src/pythinker_code/subagents/review_target.py +715 -0
  39. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/subagents/runner.py +19 -2
  40. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/telemetry/metrics.py +47 -0
  41. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/agent/__init__.py +102 -17
  42. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/agent/description.md +4 -0
  43. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/skill/__init__.py +29 -10
  44. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/oauth.py +32 -16
  45. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/slash.py +17 -4
  46. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/usage_adapters/__init__.py +5 -0
  47. pythinker_code-0.59.0/src/pythinker_code/ui/shell/usage_adapters/z_ai.py +33 -0
  48. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/visualize/_activity_tree.py +2 -5
  49. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/visualize/_blocks.py +55 -2
  50. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/frontmatter.py +14 -3
  51. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/trust.py +16 -0
  52. pythinker_code-0.59.0/src/pythinker_code/web/static/assets/architecture-7EHR7CIX-3gv838NK.js +1 -0
  53. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/architectureDiagram-3BPJPVTR-CMjTHbQr.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/architectureDiagram-3BPJPVTR-DLLFeZrO.js +1 -1
  54. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/blockDiagram-GPEHLZMM-DbNV66qZ.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/blockDiagram-GPEHLZMM-CkkDeCg3.js +1 -1
  55. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/bootstrap-DHJiVjsg.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/bootstrap-CYaJoziy.js +5 -5
  56. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/c4Diagram-AAUBKEIU-_L7KfhiY.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/c4Diagram-AAUBKEIU-Bp0uYF88.js +1 -1
  57. pythinker_code-0.59.0/src/pythinker_code/web/static/assets/channel-CkHUjHH1.js +1 -0
  58. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-2J33WTMH-Dsc-vkPL.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/chunk-2J33WTMH-fp3JfPmd.js +1 -1
  59. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-3OPIFGDE-DkPxKRGJ.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/chunk-3OPIFGDE-wcHktjqJ.js +1 -1
  60. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-5ZQYHXKU-DKsi-Xj_.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/chunk-5ZQYHXKU-0AKuUvLh.js +1 -1
  61. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-727SXJPM-DusG3GJh.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/chunk-727SXJPM-DyxXlkLC.js +1 -1
  62. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-AQP2D5EJ-F4_a1a4u.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/chunk-AQP2D5EJ-BXKoDDbF.js +1 -1
  63. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-CSCIHK7Q-9L6bDdXh.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/chunk-CSCIHK7Q-D2HuONst.js +1 -1
  64. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-JAPRZBRM-BavSbd1t.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/chunk-JAPRZBRM-mrWIOJ3Z.js +4 -4
  65. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-KSCS5N6A-D9NmS9a_.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/chunk-KSCS5N6A-HBBRdKIv.js +1 -1
  66. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-L5ZTLDWV-BSMfQ2IM.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/chunk-L5ZTLDWV-DXKFCZsy.js +1 -1
  67. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-LZXEDZCA-r4sJTTgY.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/chunk-LZXEDZCA-B3ZD-FXA.js +2 -2
  68. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-ND2GUHAM-BL7ERbud.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/chunk-ND2GUHAM-DuP52a96.js +1 -1
  69. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-NZK2D7GU-G9jWyqp3.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/chunk-NZK2D7GU-CnbADCJ7.js +1 -1
  70. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-O5CBEL6O-QBSTZ593.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/chunk-O5CBEL6O-pVVcoftv.js +1 -1
  71. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/chunk-WU5MYG2G-DYANwips.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/chunk-WU5MYG2G-BAGZBXu1.js +1 -1
  72. pythinker_code-0.59.0/src/pythinker_code/web/static/assets/classDiagram-4FO5ZUOK-dmKXWwan.js +1 -0
  73. pythinker_code-0.59.0/src/pythinker_code/web/static/assets/classDiagram-v2-Q7XG4LA2-dmKXWwan.js +1 -0
  74. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-uNhBh7Jk.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-DYAyge1a.js +1 -1
  75. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/dagre-BM42HDAG-Cb91t8pu.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/dagre-BM42HDAG-BKxxBFuu.js +1 -1
  76. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/diagram-2AECGRRQ-CLZIVQzB.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/diagram-2AECGRRQ-G94XlJaV.js +1 -1
  77. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/diagram-5GNKFQAL-B6DPBt7v.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/diagram-5GNKFQAL-CiSAYUQ6.js +1 -1
  78. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/diagram-KO2AKTUF-vb7QYejh.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/diagram-KO2AKTUF-BbSqB6Ns.js +1 -1
  79. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/diagram-LMA3HP47-DdFQHXp3.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/diagram-LMA3HP47-G8Eh-i79.js +1 -1
  80. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/diagram-OG6HWLK6-nJ1_wWcq.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/diagram-OG6HWLK6-D7IzVrGq.js +1 -1
  81. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/dist-D1EQtQ8U.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/dist-CZrlFtNU.js +1 -1
  82. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/erDiagram-TEJ5UH35-sZ8vCcB8.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/erDiagram-TEJ5UH35-BS2kAHFz.js +1 -1
  83. pythinker_code-0.59.0/src/pythinker_code/web/static/assets/eventmodeling-FCH6USID-D3DrnYSf.js +1 -0
  84. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/flowDiagram-I6XJVG4X-NagVrMCI.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/flowDiagram-I6XJVG4X-C_F9vMtr.js +1 -1
  85. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/ganttDiagram-6RSMTGT7-D-1_XhUQ.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/ganttDiagram-6RSMTGT7-B2jC1UUf.js +1 -1
  86. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/gitGraph-WXDBUCRP-DT3QZQPP.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/gitGraph-WXDBUCRP-B0vzLEp0.js +1 -1
  87. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/gitGraphDiagram-PVQCEYII-D8r0djS7.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/gitGraphDiagram-PVQCEYII-B-wPebOF.js +1 -1
  88. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/index-2eH9dBB3.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/index-laCurKYw.js +2 -2
  89. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/info-J43DQDTF-CsKNLP2n.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/info-J43DQDTF-DUjhI1nz.js +1 -1
  90. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/infoDiagram-5YYISTIA-CIiPQAr1.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/infoDiagram-5YYISTIA-Cbwstbdp.js +1 -1
  91. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/ishikawaDiagram-YF4QCWOH-B0xZv1Ps.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/ishikawaDiagram-YF4QCWOH-BkycF4AV.js +1 -1
  92. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/journeyDiagram-JHISSGLW-CSiKJ4Vm.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/journeyDiagram-JHISSGLW-CJ42Wqhp.js +1 -1
  93. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/kanban-definition-UN3LZRKU-BYVbc39d.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/kanban-definition-UN3LZRKU-CwqoUk88.js +1 -1
  94. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/line-DHysIuAr.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/line-D3Csi8Mz.js +1 -1
  95. pythinker_code-0.59.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-CxqVR2Qj.js +1 -0
  96. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/mermaid-parser.core-1Xw2pmTV.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/mermaid-parser.core-Be6EdzXv.js +2 -2
  97. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/mermaid.core-yguwm67R.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/mermaid.core-Bry8j9-Y.js +3 -3
  98. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/mindmap-definition-RKZ34NQL-BzbokPP4.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/mindmap-definition-RKZ34NQL-r7fWzBYs.js +1 -1
  99. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/packet-YPE3B663-DvwZvo4I.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/packet-YPE3B663-C9dNvYXo.js +1 -1
  100. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/pie-LRSECV5Y-D3m6fHWL.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/pie-LRSECV5Y-BAAPLVkr.js +1 -1
  101. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/pieDiagram-4H26LBE5-Ds6AGwnk.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/pieDiagram-4H26LBE5-vWjWwnGH.js +1 -1
  102. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/quadrantDiagram-W4KKPZXB-DX8m3F04.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/quadrantDiagram-W4KKPZXB-B_yvrBi5.js +1 -1
  103. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/radar-GUYGQ44K-Bma1Der9.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/radar-GUYGQ44K-dthF6sP5.js +1 -1
  104. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/requirementDiagram-4Y6WPE33-OcYBKZGh.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/requirementDiagram-4Y6WPE33-BdIjnY_y.js +1 -1
  105. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/sankeyDiagram-5OEKKPKP-qZTKBl0U.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/sankeyDiagram-5OEKKPKP-BO-wztnd.js +1 -1
  106. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/sequenceDiagram-3UESZ5HK-Dat3afNR.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/sequenceDiagram-3UESZ5HK-D4OTlb5_.js +1 -1
  107. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/stateDiagram-AJRCARHV-C25VdSrM.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/stateDiagram-AJRCARHV-DbM9zIup.js +1 -1
  108. pythinker_code-0.59.0/src/pythinker_code/web/static/assets/stateDiagram-v2-BHNVJYJU-Bx9jf2eN.js +1 -0
  109. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/timeline-definition-PNZ67QCA-BO52-l4o.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/timeline-definition-PNZ67QCA-Bdnq296j.js +1 -1
  110. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/treeView-BLDUP644-wTS6XClR.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/treeView-BLDUP644-CfSkXca9.js +1 -1
  111. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/treemap-LRROVOQU-H-Ce4Zv7.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/treemap-LRROVOQU-BfIIMFqt.js +1 -1
  112. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/vennDiagram-CIIHVFJN-C8VDHwNL.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/vennDiagram-CIIHVFJN-Bh4a039Q.js +1 -1
  113. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/wardley-L42UT6IY-CWdFDSTM.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/wardley-L42UT6IY-z1eD6dJ1.js +1 -1
  114. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/wardleyDiagram-YWT4CUSO-Cl1J0nhW.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/wardleyDiagram-YWT4CUSO-C4FzoV-Q.js +1 -1
  115. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/xychartDiagram-2RQKCTM6-DY3utX2b.js → pythinker_code-0.59.0/src/pythinker_code/web/static/assets/xychartDiagram-2RQKCTM6-DSrsRKRD.js +1 -1
  116. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/index.html +1 -1
  117. pythinker_code-0.57.0/src/pythinker_code/auth/z_ai.py +0 -349
  118. pythinker_code-0.57.0/src/pythinker_code/soul/context.py +0 -436
  119. pythinker_code-0.57.0/src/pythinker_code/subagents/git_context.py +0 -197
  120. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/architecture-7EHR7CIX-CFMeP6t3.js +0 -1
  121. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/channel-CIonX3Sg.js +0 -1
  122. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/classDiagram-4FO5ZUOK-I2Og_7hO.js +0 -1
  123. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/classDiagram-v2-Q7XG4LA2-I2Og_7hO.js +0 -1
  124. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/eventmodeling-FCH6USID-Nxb8XybE.js +0 -1
  125. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-BepD7Trl.js +0 -1
  126. pythinker_code-0.57.0/src/pythinker_code/web/static/assets/stateDiagram-v2-BHNVJYJU-CH7hdLfc.js +0 -1
  127. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/LICENSE +0 -0
  128. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/NOTICE +0 -0
  129. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/__init__.py +0 -0
  130. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/__main__.py +0 -0
  131. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/acp/AGENTS.md +0 -0
  132. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/acp/__init__.py +0 -0
  133. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/acp/convert.py +0 -0
  134. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/acp/host.py +0 -0
  135. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/acp/mcp.py +0 -0
  136. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/acp/server.py +0 -0
  137. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/acp/session.py +0 -0
  138. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/acp/tools.py +0 -0
  139. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/acp/types.py +0 -0
  140. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/acp/version.py +0 -0
  141. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/agents/default/agent.yaml +0 -0
  142. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/agents/default/ask.yaml +0 -0
  143. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/agents/default/code_reviewer.yaml +0 -0
  144. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/agents/default/coder.yaml +0 -0
  145. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/agents/default/debug.yaml +0 -0
  146. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/agents/default/debugger.yaml +0 -0
  147. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/agents/default/explore.yaml +0 -0
  148. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/agents/default/implementer.yaml +0 -0
  149. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/agents/default/judge.yaml +0 -0
  150. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/agents/default/plan.yaml +0 -0
  151. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/agents/default/planner.yaml +0 -0
  152. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/agents/default/review.yaml +0 -0
  153. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/agents/default/scout.yaml +0 -0
  154. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/agents/default/security_reviewer.yaml +0 -0
  155. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/agents/default/verifier.yaml +0 -0
  156. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/agents/okabe/agent.yaml +0 -0
  157. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/app.py +0 -0
  158. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/approval_runtime/__init__.py +0 -0
  159. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/approval_runtime/models.py +0 -0
  160. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/approval_runtime/runtime.py +0 -0
  161. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/alibaba.py +0 -0
  162. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/anthropic_direct.py +0 -0
  163. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/browser_login_page.py +0 -0
  164. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/deepseek.py +0 -0
  165. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/github_feedback.py +0 -0
  166. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/kimi.py +0 -0
  167. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/lm_studio.py +0 -0
  168. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/minimax.py +0 -0
  169. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/moonshot.py +0 -0
  170. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/oauth.py +0 -0
  171. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/ollama.py +0 -0
  172. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/openai/__init__.py +0 -0
  173. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/openai/_shared.py +0 -0
  174. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/openai/browser_flow.py +0 -0
  175. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/openai/catalog.py +0 -0
  176. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/openai/config_apply.py +0 -0
  177. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/openai/constants.py +0 -0
  178. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/openai/login.py +0 -0
  179. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/openai/models.py +0 -0
  180. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/openai/oauth_client.py +0 -0
  181. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/opencode_go.py +0 -0
  182. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/auth/openrouter.py +0 -0
  183. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/background/__init__.py +0 -0
  184. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/background/ids.py +0 -0
  185. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/background/models.py +0 -0
  186. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/background/store.py +0 -0
  187. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/background/summary.py +0 -0
  188. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/background/worker.py +0 -0
  189. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/__init__.py +0 -0
  190. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/activity.py +0 -0
  191. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/bundled/__init__.py +0 -0
  192. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/bundled/suites/__init__.py +0 -0
  193. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/bundled/suites/pythinker-core.json +0 -0
  194. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/bundled/suites/pythinker-smoke.json +0 -0
  195. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/bundled/tasks/__init__.py +0 -0
  196. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/bundled/tasks/core-atomic-transfer.json +0 -0
  197. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/bundled/tasks/core-dedup-order.json +0 -0
  198. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/bundled/tasks/core-explicit-none-metadata.json +0 -0
  199. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/bundled/tasks/core-safe-path-join.json +0 -0
  200. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/bundled/tasks/smoke-add-small-function.json +0 -0
  201. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/bundled/tasks/smoke-edit-readme.json +0 -0
  202. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/bundled/tasks/smoke-fix-python-test.json +0 -0
  203. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/commands.py +0 -0
  204. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/compare.py +0 -0
  205. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/discovery.py +0 -0
  206. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/environment.py +0 -0
  207. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/errors.py +0 -0
  208. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/estimate.py +0 -0
  209. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/export.py +0 -0
  210. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/records.py +0 -0
  211. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/redact.py +0 -0
  212. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/report.py +0 -0
  213. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/runner.py +0 -0
  214. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/suites.py +0 -0
  215. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/swe.py +0 -0
  216. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/tasks.py +0 -0
  217. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/benchmark/types.py +0 -0
  218. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/cli/__main__.py +0 -0
  219. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/cli/_lazy_group.py +0 -0
  220. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/cli/dashboard.py +0 -0
  221. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/cli/debug.py +0 -0
  222. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/cli/export.py +0 -0
  223. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/cli/info.py +0 -0
  224. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/cli/mcp.py +0 -0
  225. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/cli/plugin.py +0 -0
  226. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/cli/review.py +0 -0
  227. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/cli/secscan.py +0 -0
  228. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/cli/security_scan.py +0 -0
  229. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/cli/skill.py +0 -0
  230. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/cli/toad.py +0 -0
  231. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/cli/update.py +0 -0
  232. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/cli/web.py +0 -0
  233. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/config.py +0 -0
  234. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/constant.py +0 -0
  235. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/dashboard/__init__.py +0 -0
  236. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/dashboard/api/__init__.py +0 -0
  237. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/dashboard/api/sessions.py +0 -0
  238. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/dashboard/api/statistics.py +0 -0
  239. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/dashboard/api/system.py +0 -0
  240. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/dashboard/app.py +0 -0
  241. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/dashboard/static/assets/highlighted-body-OFNGDK62-BxVUIXn9.js +0 -0
  242. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/dashboard/static/assets/index-DAN_VzOP.css +0 -0
  243. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/dashboard/static/assets/index-DYyxzHPY.js +0 -0
  244. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/dashboard/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  245. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/dashboard/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  246. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/dashboard/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  247. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/dashboard/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  248. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/dashboard/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  249. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/dashboard/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  250. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/dashboard/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  251. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/dashboard/static/assets/mermaid-GHXKKRXX-BR6KjYwB.js +0 -0
  252. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/dashboard/static/index.html +0 -0
  253. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/events.py +0 -0
  254. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/exception.py +0 -0
  255. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/execution_profiles.py +0 -0
  256. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/extensions.py +0 -0
  257. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/feedback.py +0 -0
  258. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/feedback_repo.py +0 -0
  259. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/file_restore.py +0 -0
  260. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/hooks/__init__.py +0 -0
  261. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/hooks/config.py +0 -0
  262. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/hooks/engine.py +0 -0
  263. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/hooks/events.py +0 -0
  264. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/hooks/runner.py +0 -0
  265. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/lsp/__init__.py +0 -0
  266. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/lsp/client.py +0 -0
  267. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/lsp/diagnostics.py +0 -0
  268. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/lsp/framing.py +0 -0
  269. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/lsp/instance.py +0 -0
  270. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/lsp/manager.py +0 -0
  271. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/lsp/plugin_servers.py +0 -0
  272. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/lsp/protocol.py +0 -0
  273. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/lsp/recommend.py +0 -0
  274. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/lsp/service.py +0 -0
  275. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/memory/__init__.py +0 -0
  276. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/memory/consolidation.py +0 -0
  277. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/memory/harvest.py +0 -0
  278. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/memory/recall.py +0 -0
  279. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/memory/recap.py +0 -0
  280. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/memory/retriever.py +0 -0
  281. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/memory/sanitize.py +0 -0
  282. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/metadata.py +0 -0
  283. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/models_dev.py +0 -0
  284. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/native.py +0 -0
  285. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/notifications/__init__.py +0 -0
  286. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/notifications/llm.py +0 -0
  287. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/notifications/manager.py +0 -0
  288. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/notifications/models.py +0 -0
  289. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/notifications/notifier.py +0 -0
  290. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/notifications/store.py +0 -0
  291. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/notifications/wire.py +0 -0
  292. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/plugin/__init__.py +0 -0
  293. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/plugin/artifacts.py +0 -0
  294. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/plugin/dependency.py +0 -0
  295. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/plugin/directories.py +0 -0
  296. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/plugin/install.py +0 -0
  297. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/plugin/installed.py +0 -0
  298. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/plugin/integration.py +0 -0
  299. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/plugin/loader.py +0 -0
  300. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/plugin/manager.py +0 -0
  301. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/plugin/manifest.py +0 -0
  302. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/plugin/marketplace.py +0 -0
  303. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/plugin/options.py +0 -0
  304. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/plugin/policy.py +0 -0
  305. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/plugin/tool.py +0 -0
  306. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/project_memory.py +0 -0
  307. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/project_trust.py +0 -0
  308. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/prompt_templates.py +0 -0
  309. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/prompts/__init__.py +0 -0
  310. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/prompts/best_practices.md +0 -0
  311. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/prompts/compact.md +0 -0
  312. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/prompts/goal_continuation.md +0 -0
  313. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/prompts/goal_set.md +0 -0
  314. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/prompts/goal_wrap_up.md +0 -0
  315. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/prompts/init.md +0 -0
  316. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/prompts/learn.md +0 -0
  317. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/py.typed +0 -0
  318. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/scratchpad.py +0 -0
  319. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/session.py +0 -0
  320. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/session_cleanup.py +0 -0
  321. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/session_fork.py +0 -0
  322. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/session_recap.py +0 -0
  323. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/session_state.py +0 -0
  324. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/share.py +0 -0
  325. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skill/flow/__init__.py +0 -0
  326. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skill/flow/d2.py +0 -0
  327. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skill/flow/mermaid.py +0 -0
  328. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skill/lockfile.py +0 -0
  329. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/agent-creator/SKILL.md +0 -0
  330. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/check-impl-against-spec/SKILL.md +0 -0
  331. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/cleanup-audit/SKILL.md +0 -0
  332. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/create-pr/SKILL.md +0 -0
  333. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/customize-pythinker/SKILL.md +0 -0
  334. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/designer-skill/SKILL.md +0 -0
  335. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/diagnose-ci-failures/SKILL.md +0 -0
  336. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/fix-errors/SKILL.md +0 -0
  337. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/implement-specs/SKILL.md +0 -0
  338. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/judge-minimum-diff/SKILL.md +0 -0
  339. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/judge-overengineering-review/SKILL.md +0 -0
  340. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/pr-walkthrough/SKILL.md +0 -0
  341. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/pythinker-code-help/SKILL.md +0 -0
  342. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/reproduce-bug-report/SKILL.md +0 -0
  343. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/resolve-merge-conflicts/SKILL.md +0 -0
  344. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/review-pr/SKILL.md +0 -0
  345. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/skill-creator/SKILL.md +0 -0
  346. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/spec-driven-implementation/SKILL.md +0 -0
  347. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/write-product-spec/SKILL.md +0 -0
  348. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/skills/write-tech-spec/SKILL.md +0 -0
  349. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/__init__.py +0 -0
  350. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/api_errors.py +0 -0
  351. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/approval.py +0 -0
  352. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/compaction.py +0 -0
  353. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/deliberation.py +0 -0
  354. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/denwarenji.py +0 -0
  355. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/dynamic_injections/__init__.py +0 -0
  356. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/dynamic_injections/active_skills.py +0 -0
  357. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/dynamic_injections/auto_mode.py +0 -0
  358. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/dynamic_injections/git_status.py +0 -0
  359. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/dynamic_injections/goal_mode.py +0 -0
  360. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/dynamic_injections/inline_commands.py +0 -0
  361. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/dynamic_injections/lsp_diagnostics.py +0 -0
  362. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/dynamic_injections/orchestration.py +0 -0
  363. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/dynamic_injections/plan_mode.py +0 -0
  364. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/flow_runner.py +0 -0
  365. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/live_tokens.py +0 -0
  366. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/message.py +0 -0
  367. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/soul/permission.py +0 -0
  368. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/subagents/__init__.py +0 -0
  369. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/subagents/builder.py +0 -0
  370. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/subagents/codenames.py +0 -0
  371. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/subagents/models.py +0 -0
  372. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/subagents/output.py +0 -0
  373. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/subagents/registry.py +0 -0
  374. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/subagents/store.py +0 -0
  375. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/subagents/usage.py +0 -0
  376. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/subagents/worktree.py +0 -0
  377. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/telemetry/__init__.py +0 -0
  378. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/telemetry/config.py +0 -0
  379. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/telemetry/crash.py +0 -0
  380. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/telemetry/errors.py +0 -0
  381. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/telemetry/names.py +0 -0
  382. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/telemetry/otel.py +0 -0
  383. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/telemetry/sentry.py +0 -0
  384. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/telemetry/sink.py +0 -0
  385. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/thinking.py +0 -0
  386. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/AGENTS.md +0 -0
  387. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/__init__.py +0 -0
  388. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/ask_user/__init__.py +0 -0
  389. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/ask_user/description.md +0 -0
  390. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/background/__init__.py +0 -0
  391. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/background/handoff.md +0 -0
  392. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/background/input.md +0 -0
  393. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/background/list.md +0 -0
  394. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/background/output.md +0 -0
  395. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/background/stop.md +0 -0
  396. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/display.py +0 -0
  397. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/dmail/__init__.py +0 -0
  398. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/dmail/dmail.md +0 -0
  399. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/file/__init__.py +0 -0
  400. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/file/glob.md +0 -0
  401. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/file/glob.py +0 -0
  402. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/file/grep.md +0 -0
  403. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/file/grep_local.py +0 -0
  404. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/file/plan_mode.py +0 -0
  405. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/file/read.md +0 -0
  406. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/file/read.py +0 -0
  407. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/file/read_media.md +0 -0
  408. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/file/read_media.py +0 -0
  409. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/file/replace.md +0 -0
  410. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/file/replace.py +0 -0
  411. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/file/utils.py +0 -0
  412. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/file/write.md +0 -0
  413. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/file/write.py +0 -0
  414. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/goal/__init__.py +0 -0
  415. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/goal/update_goal.md +0 -0
  416. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/lsp/__init__.py +0 -0
  417. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/lsp/formatters.py +0 -0
  418. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/lsp/schemas.py +0 -0
  419. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/lsp/symbol_context.py +0 -0
  420. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/lsp/tool.md +0 -0
  421. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/lsp/tool.py +0 -0
  422. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/mcp_resource/__init__.py +0 -0
  423. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/mcp_resource/list_description.md +0 -0
  424. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/mcp_resource/prompt_description.md +0 -0
  425. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/mcp_resource/read_description.md +0 -0
  426. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/memory/__init__.py +0 -0
  427. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/memory/memory.md +0 -0
  428. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/memory/routing_guard.py +0 -0
  429. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/plan/__init__.py +0 -0
  430. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/plan/description.md +0 -0
  431. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/plan/enter.py +0 -0
  432. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/plan/enter_description.md +0 -0
  433. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/plan/handoff.py +0 -0
  434. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/plan/heroes.py +0 -0
  435. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/progress/__init__.py +0 -0
  436. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/progress/description.md +0 -0
  437. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/recall/__init__.py +0 -0
  438. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/recall/description.md +0 -0
  439. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/scratchpad/__init__.py +0 -0
  440. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/scratchpad/scratchpad_tool.md +0 -0
  441. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/shell/__init__.py +0 -0
  442. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/shell/bash.md +0 -0
  443. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/shell/powershell.md +0 -0
  444. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/skill/_mcp_bridge.py +0 -0
  445. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/skill/description.md +0 -0
  446. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/suggest/__init__.py +0 -0
  447. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/suggest/description.md +0 -0
  448. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/test.py +0 -0
  449. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/think/__init__.py +0 -0
  450. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/think/think.md +0 -0
  451. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/todo/__init__.py +0 -0
  452. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/todo/set_todo_list.md +0 -0
  453. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/tool_search/__init__.py +0 -0
  454. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/tool_search/tool_search.md +0 -0
  455. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/utils.py +0 -0
  456. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/web/__init__.py +0 -0
  457. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/web/_allowlist.py +0 -0
  458. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/web/fetch.md +0 -0
  459. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/web/fetch.py +0 -0
  460. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/web/search.md +0 -0
  461. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/web/search.py +0 -0
  462. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/workflow/__init__.py +0 -0
  463. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/workflow/description.md +0 -0
  464. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/workflow/display.py +0 -0
  465. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/workflow/engine.py +0 -0
  466. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/worktree/__init__.py +0 -0
  467. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/worktree/enter_worktree.md +0 -0
  468. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/tools/worktree/exit_worktree.md +0 -0
  469. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/__init__.py +0 -0
  470. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/acp/__init__.py +0 -0
  471. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/color_utils.py +0 -0
  472. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/print/__init__.py +0 -0
  473. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/print/visualize.py +0 -0
  474. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/__init__.py +0 -0
  475. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/components/__init__.py +0 -0
  476. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/components/base.py +0 -0
  477. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/components/bash_execution.py +0 -0
  478. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/components/bordered_loader.py +0 -0
  479. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/components/diff.py +0 -0
  480. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/components/dynamic_border.py +0 -0
  481. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/components/footer.py +0 -0
  482. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/components/key_hints.py +0 -0
  483. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/components/markdown.py +0 -0
  484. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/components/messages.py +0 -0
  485. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/components/panel.py +0 -0
  486. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/components/render_utils.py +0 -0
  487. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/components/report.py +0 -0
  488. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/components/report_prose_blocks.py +0 -0
  489. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/components/report_update.py +0 -0
  490. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/components/settings_list.py +0 -0
  491. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/components/special_messages.py +0 -0
  492. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/components/tool_execution.py +0 -0
  493. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/console.py +0 -0
  494. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/debug.py +0 -0
  495. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/design_system.py +0 -0
  496. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/echo.py +0 -0
  497. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/export_import.py +0 -0
  498. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/focus_model.py +0 -0
  499. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/focus_surface.py +0 -0
  500. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/glyphs.py +0 -0
  501. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/keyboard.py +0 -0
  502. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/keymap.py +0 -0
  503. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/markdown/__init__.py +0 -0
  504. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/markdown/audit.py +0 -0
  505. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/markdown/elements.py +0 -0
  506. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/markdown/fences.py +0 -0
  507. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/markdown/normalizers.py +0 -0
  508. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/markdown/renderer.py +0 -0
  509. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/markdown/streaming.py +0 -0
  510. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/mcp_status.py +0 -0
  511. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/model_picker.py +0 -0
  512. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/motion.py +0 -0
  513. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/placeholders.py +0 -0
  514. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/prompt.py +0 -0
  515. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/render_constants.py +0 -0
  516. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/replay.py +0 -0
  517. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/selector.py +0 -0
  518. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/selectors/__init__.py +0 -0
  519. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/selectors/code_theme.py +0 -0
  520. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/selectors/extension.py +0 -0
  521. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/selectors/oauth.py +0 -0
  522. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/selectors/settings.py +0 -0
  523. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/selectors/show_images.py +0 -0
  524. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/selectors/theme.py +0 -0
  525. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/selectors/thinking.py +0 -0
  526. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/session_picker.py +0 -0
  527. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/setup.py +0 -0
  528. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/spacing.py +0 -0
  529. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/spinner_words.py +0 -0
  530. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/startup.py +0 -0
  531. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/stats.py +0 -0
  532. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/stats_collector.py +0 -0
  533. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/stats_pricing.py +0 -0
  534. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/statusline.py +0 -0
  535. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/sync_output.py +0 -0
  536. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/task_browser.py +0 -0
  537. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tips.py +0 -0
  538. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/__init__.py +0 -0
  539. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/_file_diff.py +0 -0
  540. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/_render_utils.py +0 -0
  541. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/agent.py +0 -0
  542. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/ask_user.py +0 -0
  543. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/background.py +0 -0
  544. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/bash.py +0 -0
  545. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/edit.py +0 -0
  546. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/find.py +0 -0
  547. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/generic.py +0 -0
  548. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/grep.py +0 -0
  549. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/implement_judge.py +0 -0
  550. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/lsp.py +0 -0
  551. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/mcp_resource.py +0 -0
  552. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/memory.py +0 -0
  553. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/plan.py +0 -0
  554. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/read.py +0 -0
  555. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/read_media.py +0 -0
  556. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/skill.py +0 -0
  557. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/smart_search.py +0 -0
  558. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/think.py +0 -0
  559. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/todo.py +0 -0
  560. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/tool_search.py +0 -0
  561. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/web.py +0 -0
  562. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/worktree.py +0 -0
  563. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tool_renderers/write.py +0 -0
  564. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tui/__init__.py +0 -0
  565. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tui/components.py +0 -0
  566. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tui/diff.py +0 -0
  567. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tui/scene.py +0 -0
  568. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tui/scheduler.py +0 -0
  569. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/tui/width.py +0 -0
  570. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/update.py +0 -0
  571. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/update_orchestrator.py +0 -0
  572. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/usage.py +0 -0
  573. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/usage_activity.py +0 -0
  574. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/usage_adapters/alibaba.py +0 -0
  575. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/usage_adapters/anthropic_admin.py +0 -0
  576. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/usage_adapters/base.py +0 -0
  577. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/usage_adapters/deepseek.py +0 -0
  578. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/usage_adapters/minimax.py +0 -0
  579. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/usage_adapters/openai_admin.py +0 -0
  580. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/usage_adapters/openai_chatgpt.py +0 -0
  581. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/usage_adapters/opencode_go.py +0 -0
  582. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/usage_adapters/openrouter.py +0 -0
  583. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker.py +0 -0
  584. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker_ai.py +0 -0
  585. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/usage_render.py +0 -0
  586. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/visualize/__init__.py +0 -0
  587. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/visualize/_approval_panel.py +0 -0
  588. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/visualize/_btw_panel.py +0 -0
  589. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/visualize/_dialog_shell.py +0 -0
  590. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/visualize/_diff_live.py +0 -0
  591. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/visualize/_input_router.py +0 -0
  592. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/visualize/_interactive.py +0 -0
  593. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/visualize/_live_view.py +0 -0
  594. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/visualize/_question_panel.py +0 -0
  595. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/visualize/_transcript.py +0 -0
  596. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/shell/visualize/_worklog.py +0 -0
  597. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/terminal_background.py +0 -0
  598. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/terminal_capabilities.py +0 -0
  599. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/theme/__init__.py +0 -0
  600. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/theme/adapters/__init__.py +0 -0
  601. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/theme/adapters/markdown.py +0 -0
  602. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/theme/adapters/task_browser.py +0 -0
  603. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/theme/capabilities.py +0 -0
  604. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/theme/palettes.py +0 -0
  605. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/theme/pythinker_themes.py +0 -0
  606. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/theme/registry.py +0 -0
  607. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/theme/resolver.py +0 -0
  608. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/theme/spec.py +0 -0
  609. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/ui/tui_config.py +0 -0
  610. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/update_policy.py +0 -0
  611. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/usage_ratelimit_cache.py +0 -0
  612. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/__init__.py +0 -0
  613. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/aiohttp.py +0 -0
  614. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/aioqueue.py +0 -0
  615. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/artifacts.py +0 -0
  616. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/broadcast.py +0 -0
  617. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/changelog.py +0 -0
  618. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/clipboard.py +0 -0
  619. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/datetime.py +0 -0
  620. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/diff.py +0 -0
  621. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/editor.py +0 -0
  622. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/environment.py +0 -0
  623. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/envvar.py +0 -0
  624. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/export.py +0 -0
  625. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/file_filter.py +0 -0
  626. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/file_read_cache.py +0 -0
  627. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/gitignore.py +0 -0
  628. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/io.py +0 -0
  629. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/logging.py +0 -0
  630. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/mcp_names.py +0 -0
  631. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/media_limits.py +0 -0
  632. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/media_tags.py +0 -0
  633. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/message.py +0 -0
  634. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/path.py +0 -0
  635. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/proctitle.py +0 -0
  636. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/proxy.py +0 -0
  637. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/pyinstaller.py +0 -0
  638. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/rich/__init__.py +0 -0
  639. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/rich/columns.py +0 -0
  640. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/rich/diff_render.py +0 -0
  641. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/rich/markdown.py +0 -0
  642. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/rich/markdown_sample.md +0 -0
  643. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/rich/markdown_sample_short.md +0 -0
  644. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/rich/syntax.py +0 -0
  645. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/sensitive.py +0 -0
  646. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/server.py +0 -0
  647. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/signals.py +0 -0
  648. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/slashcmd.py +0 -0
  649. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/sleep_inhibitor.py +0 -0
  650. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/string.py +0 -0
  651. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/subprocess_env.py +0 -0
  652. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/term.py +0 -0
  653. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/utils/typing.py +0 -0
  654. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/__init__.py +0 -0
  655. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/api/__init__.py +0 -0
  656. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/api/config.py +0 -0
  657. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/api/open_in.py +0 -0
  658. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/api/sessions.py +0 -0
  659. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/app.py +0 -0
  660. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/auth.py +0 -0
  661. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/models.py +0 -0
  662. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/runner/__init__.py +0 -0
  663. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/runner/messages.py +0 -0
  664. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/runner/process.py +0 -0
  665. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/runner/worker.py +0 -0
  666. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/_headers +0 -0
  667. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  668. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  669. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  670. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  671. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  672. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  673. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  674. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  675. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  676. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  677. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  678. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  679. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  680. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  681. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  682. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  683. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  684. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  685. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  686. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  687. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  688. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  689. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  690. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  691. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  692. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  693. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  694. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  695. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  696. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  697. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  698. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  699. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  700. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  701. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  702. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  703. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  704. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  705. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  706. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  707. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  708. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  709. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  710. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  711. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  712. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  713. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  714. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  715. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  716. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  717. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  718. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  719. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  720. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  721. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  722. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  723. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  724. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  725. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  726. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/abap-CLvhMVsD.js +0 -0
  727. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/actionscript-3--17pq3dv.js +0 -0
  728. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/ada-C5qYipkI.js +0 -0
  729. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/andromeeda-vGVdxbeo.js +0 -0
  730. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/angular-html-BKhkKBsm.js +0 -0
  731. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/angular-ts-CYPbMJCA.js +0 -0
  732. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/apache-U0d_L8uA.js +0 -0
  733. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/apex-CGTLDQj6.js +0 -0
  734. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/apl-D7bENxmy.js +0 -0
  735. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/applescript-CCn79oCD.js +0 -0
  736. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/ara-4CJ0cIlV.js +0 -0
  737. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/arc-8BWbC-0s.js +0 -0
  738. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/array-BifhSqXX.js +0 -0
  739. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/asciidoc-DE70LPWp.js +0 -0
  740. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/asm-Cmm7eHzH.js +0 -0
  741. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/astro-B1l9MDUT.js +0 -0
  742. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/aurora-x-CDeNXAV0.js +0 -0
  743. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/awk-BWXHIvNe.js +0 -0
  744. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/ayu-dark-DluEY0Gj.js +0 -0
  745. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/ayu-light-C3h-C4tm.js +0 -0
  746. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/ayu-mirage-Bqwy1Gya.js +0 -0
  747. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/ballerina-B7ZEbQpA.js +0 -0
  748. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/bat-Bo4NYOV-.js +0 -0
  749. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/beancount-D-usSTwE.js +0 -0
  750. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/berry-DKpUyyne.js +0 -0
  751. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/bibtex-Ci_nEsc7.js +0 -0
  752. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/bicep-CUHmPFLl.js +0 -0
  753. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/bird2-C2hNVINV.js +0 -0
  754. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/blade-BlkqRXu6.js +0 -0
  755. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/bootstrap-BhLLvBaE.css +0 -0
  756. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/bsl-BkkzgIyY.js +0 -0
  757. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/c-PpPxyn8g.js +0 -0
  758. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/c3-CnJL0r0V.js +0 -0
  759. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/cadence-CQ2zXKGN.js +0 -0
  760. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/cairo-DLTphjLi.js +0 -0
  761. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/catppuccin-frappe-3VR1Za6u.js +0 -0
  762. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/catppuccin-latte-DwIHMF0Q.js +0 -0
  763. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/catppuccin-macchiato-DYnBP6_5.js +0 -0
  764. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/catppuccin-mocha-DYhrFGRu.js +0 -0
  765. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/character-entities-legacy-Wut6vMuj.js +0 -0
  766. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/chevrons-up-down-Dwo0Il5v.js +0 -0
  767. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-C0kf5ycP.js +0 -0
  768. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/chunk-55IACEB6-QyFAFTWp.js +0 -0
  769. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/chunk-BSJP7CBP-DIpfLhEz.js +0 -0
  770. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/chunk-Cyuzqnbw.js +0 -0
  771. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-C9D6P7Uq.js +0 -0
  772. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/chunk-NNHCCRGN-DmZbXBJw.js +0 -0
  773. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-CyVdgm44.js +0 -0
  774. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/chunk-XPW4576I-ru3A962d.js +0 -0
  775. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/clarity-SemFz856.js +0 -0
  776. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/clojure-DqKBuwfJ.js +0 -0
  777. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/cmake-Bj61d0ZC.js +0 -0
  778. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/cobol-BoXxFQjh.js +0 -0
  779. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/codeowners-C8r90Shi.js +0 -0
  780. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/codeql-oeQT6MSM.js +0 -0
  781. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/coffee-B5TREocO.js +0 -0
  782. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/common-lisp-Cv5bFMCO.js +0 -0
  783. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/coq-BrsZFFmf.js +0 -0
  784. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-PjRvINHM.js +0 -0
  785. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/cpp-CVIk4zoB.js +0 -0
  786. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/crystal-CvUuUt6_.js +0 -0
  787. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/csharp-Ct8U2NOr.js +0 -0
  788. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/css-D7o5g6xi.js +0 -0
  789. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/csv-Dx-8-gkx.js +0 -0
  790. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/cue-CE9AQfxI.js +0 -0
  791. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/cypher-ClKdZ_lG.js +0 -0
  792. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/cytoscape.esm-jXPf2pm4.js +0 -0
  793. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/d-qD-0Kul2.js +0 -0
  794. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/dagre-Uyq5yTtG.js +0 -0
  795. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/dark-plus-Cs2F2srj.js +0 -0
  796. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/dart-DkHntEIa.js +0 -0
  797. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/dax-BkyTk9wS.js +0 -0
  798. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/defaultLocale-C8Fc0cco.js +0 -0
  799. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/desktop-Dlh5hvp9.js +0 -0
  800. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/diff-BDNflWRl.js +0 -0
  801. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/diff-Dvab7kiv.css +0 -0
  802. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/diff-woXpYk--.js +0 -0
  803. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/dist-B7jLwIkG.js +0 -0
  804. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/dist-D4B_Bs5p.js +0 -0
  805. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/dist-reBDvVlc.js +0 -0
  806. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/docker-IyjqRm3v.js +0 -0
  807. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/dotenv-_5a1GRtc.js +0 -0
  808. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/dracula-BHWKrbxM.js +0 -0
  809. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/dracula-soft-5eyTD99u.js +0 -0
  810. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/dream-maker-DW3nJb8Q.js +0 -0
  811. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/edge-CmXZi-az.js +0 -0
  812. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/elixir-BoRIkjDi.js +0 -0
  813. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/elm-Cm7sFdI1.js +0 -0
  814. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/emacs-lisp-C9PiwqqW.js +0 -0
  815. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/erb-DuMAGb6i.js +0 -0
  816. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/erlang-Cphh6RMH.js +0 -0
  817. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/everforest-dark-sB-x3p7T.js +0 -0
  818. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/everforest-light-Df2xbC6M.js +0 -0
  819. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/fennel-DQxkIbk2.js +0 -0
  820. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/fish-BJitypiv.js +0 -0
  821. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/fluent-C03EYrpw.js +0 -0
  822. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/fortran-fixed-form-DEKoE2YW.js +0 -0
  823. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/fortran-free-form-CYNrtFtB.js +0 -0
  824. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/fsharp-D13ZGOAj.js +0 -0
  825. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/gdresource-C0sCabJj.js +0 -0
  826. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/gdscript-Cp2uCuqX.js +0 -0
  827. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/gdshader-CBce3t8t.js +0 -0
  828. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/genie-CV2tkWYe.js +0 -0
  829. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/gherkin-DExj1W_8.js +0 -0
  830. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/git-commit-BSykSTBG.js +0 -0
  831. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/git-rebase-D2tSwjJb.js +0 -0
  832. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/github-dark-C-LZuMrd.js +0 -0
  833. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/github-dark-default-DXG-b-1a.js +0 -0
  834. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/github-dark-dimmed-Bx1FflLF.js +0 -0
  835. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/github-dark-high-contrast-B_tTalzw.js +0 -0
  836. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/github-light-EUqPIrTm.js +0 -0
  837. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/github-light-default-BXViO-2h.js +0 -0
  838. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/github-light-high-contrast-B68TUdTA.js +0 -0
  839. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/gleam-CSRkHgEL.js +0 -0
  840. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/glimmer-js--VVKNatA.js +0 -0
  841. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/glimmer-ts-Bfa_wiNC.js +0 -0
  842. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/glsl-MPwHyiXQ.js +0 -0
  843. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/gn-ilITqXS6.js +0 -0
  844. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/gnuplot-7GGW24-e.js +0 -0
  845. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/go-BJwz_mda.js +0 -0
  846. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/graphlib-C22s9MDV.js +0 -0
  847. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/graphql-NW854Khs.js +0 -0
  848. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/groovy-CacY0gHj.js +0 -0
  849. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/gruvbox-dark-hard-C820rvS2.js +0 -0
  850. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/gruvbox-dark-medium-BPjhmG05.js +0 -0
  851. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/gruvbox-dark-soft-MrdJrrXF.js +0 -0
  852. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/gruvbox-light-hard-BC_s9l72.js +0 -0
  853. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/gruvbox-light-medium-BAWPOn9u.js +0 -0
  854. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/gruvbox-light-soft-BSMLrYjP.js +0 -0
  855. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/hack-CSl79E5u.js +0 -0
  856. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/haml-Dmb1YmHj.js +0 -0
  857. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/handlebars-Du8DtnRB.js +0 -0
  858. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/haskell-D8IpX4py.js +0 -0
  859. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/haxe-OTjmBuCE.js +0 -0
  860. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/hcl-Dh228itO.js +0 -0
  861. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/hjson-CxZEssPk.js +0 -0
  862. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/hlsl-Cvrh5tZx.js +0 -0
  863. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/horizon-CE9ld1lL.js +0 -0
  864. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/horizon-bright-Br1oVSNq.js +0 -0
  865. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/houston-CsvMBhTu.js +0 -0
  866. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/html-Kpl3bQKd.js +0 -0
  867. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/html-derivative-BEEWNZ8Y.js +0 -0
  868. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/http-HvMG3K54.js +0 -0
  869. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/hurl-CLh1t2ES.js +0 -0
  870. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/hxml-B0Qn7Nwc.js +0 -0
  871. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/hy-CZbG8q4J.js +0 -0
  872. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/imba-DsUTQ-LC.js +0 -0
  873. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/ini-B5eOa1yu.js +0 -0
  874. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/init-D6jRqBbL.js +0 -0
  875. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  876. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  877. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  878. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  879. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  880. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  881. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  882. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/java-Cst_eZTE.js +0 -0
  883. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/javascript-i_rUTyCW.js +0 -0
  884. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/jinja-CaXggA6f.js +0 -0
  885. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/jison-D9Fg2JgN.js +0 -0
  886. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/json-DS5j4FfK.js +0 -0
  887. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/json5-BR5RXkoi.js +0 -0
  888. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/jsonc-CYpm1nAK.js +0 -0
  889. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/jsonl-CmCQp5Yx.js +0 -0
  890. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/jsonnet-CJTPZ8u_.js +0 -0
  891. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/jssm-DXw9l8Rf.js +0 -0
  892. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/jsx-CFyhNHav.js +0 -0
  893. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/jsx-runtime-wSvXh6gi.js +0 -0
  894. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/julia-R8NNmfP1.js +0 -0
  895. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/just-BhhHYlS8.js +0 -0
  896. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/kanagawa-dragon-CXtmUGW6.js +0 -0
  897. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/kanagawa-lotus-BN08jTvb.js +0 -0
  898. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/kanagawa-wave-CTweb8Dz.js +0 -0
  899. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/katex-BGaDVET_.js +0 -0
  900. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/katex-BorAY7qD.css +0 -0
  901. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/kdl-CsD5j6eV.js +0 -0
  902. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/kotlin-DhhofPvG.js +0 -0
  903. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/kusto-BUv0MjJC.js +0 -0
  904. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/laserwave-C_8bwKvT.js +0 -0
  905. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/latex-D5k_uhWv.js +0 -0
  906. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/lean-CewbzKMR.js +0 -0
  907. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/less-DVTAwKKz.js +0 -0
  908. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/lib-BLxG8W6T.js +0 -0
  909. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/libesm-8-2luV-1.js +0 -0
  910. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/light-plus-DVQuIRkW.js +0 -0
  911. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/linear-BktLjFGX.js +0 -0
  912. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/liquid-Q0_hzjly.js +0 -0
  913. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/llvm-Cm23YOpf.js +0 -0
  914. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/log-BNLmms1o.js +0 -0
  915. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/logo-Cluzi2Zq.js +0 -0
  916. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/lua-VoGSg0xb.js +0 -0
  917. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/luau-CNKltnaQ.js +0 -0
  918. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/make-Dixweg8N.js +0 -0
  919. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/markdown-BYOwaDjH.js +0 -0
  920. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/marked.esm-DLdcrU5H.js +0 -0
  921. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/marko-D_aeUD__.js +0 -0
  922. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/material-theme-Bm3Qr25_.js +0 -0
  923. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/material-theme-darker-2IIEA8gg.js +0 -0
  924. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/material-theme-lighter-uhdI0v04.js +0 -0
  925. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/material-theme-ocean-CHQ94UKr.js +0 -0
  926. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/material-theme-palenight-B5W6OYN7.js +0 -0
  927. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/matlab-D7qyCx1q.js +0 -0
  928. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/mdc-BSifqehP.js +0 -0
  929. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/mdx-DQZ5AkYe.js +0 -0
  930. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/mermaid-Bk4SNUv9.js +0 -0
  931. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/min-dark-BSWPekZh.js +0 -0
  932. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/min-light-DDpmG2fV.js +0 -0
  933. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/mipsasm-BMqwQI7S.js +0 -0
  934. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/mojo-BgCJLMeH.js +0 -0
  935. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/monokai-CdkpiU2Y.js +0 -0
  936. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/moonbit-CaWjb8XO.js +0 -0
  937. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/move-B1IS1UjX.js +0 -0
  938. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/narrat-_X_XdTYD.js +0 -0
  939. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/nextflow-Bbiyy34d.js +0 -0
  940. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/nextflow-groovy-Dc_ddanL.js +0 -0
  941. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/nginx-CgHaWcsO.js +0 -0
  942. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/night-owl-DhmEMT88.js +0 -0
  943. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/night-owl-light-eJ-hLW7d.js +0 -0
  944. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/nim-BuixXxPS.js +0 -0
  945. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/nix-IvuFDN5E.js +0 -0
  946. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/nord-Cb4Vim4T.js +0 -0
  947. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/nushell-DcLAeLz5.js +0 -0
  948. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/objective-c-D1A_Heim.js +0 -0
  949. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/objective-cpp-BsSzOQcm.js +0 -0
  950. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/ocaml-O90oeIOV.js +0 -0
  951. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/odin-B1RWQWA5.js +0 -0
  952. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/one-dark-pro-CLwyXe_n.js +0 -0
  953. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/one-light-D7Lr4KcI.js +0 -0
  954. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/openscad-BUDT5pXO.js +0 -0
  955. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/ordinal-hYBb2elL.js +0 -0
  956. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/pascal-4ZHwLPI5.js +0 -0
  957. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/path-BWPyau1x.js +0 -0
  958. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/perl-BLMySlFJ.js +0 -0
  959. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/php-Czf_fybR.js +0 -0
  960. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/pkl-ot-7Btpt.js +0 -0
  961. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/plastic-DQwYfKfQ.js +0 -0
  962. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/plsql-DGHpHOYJ.js +0 -0
  963. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/po-BiJDBrnU.js +0 -0
  964. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/poimandres-DRFjx7u4.js +0 -0
  965. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/polar-C7UOKdEL.js +0 -0
  966. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/postcss-BXeXVLqQ.js +0 -0
  967. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/powerquery-DNMTfnFr.js +0 -0
  968. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/powershell-DshXNtvi.js +0 -0
  969. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/prisma-BsRQq5mF.js +0 -0
  970. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/prolog-iXnhIJG7.js +0 -0
  971. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/proto-DB4EqR-F.js +0 -0
  972. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/pug-CsZglf8T.js +0 -0
  973. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/puppet-CDv2pdJW.js +0 -0
  974. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/purescript-9MfHhQsQ.js +0 -0
  975. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/python-gzcpVVnB.js +0 -0
  976. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/qml-DcW_sT3t.js +0 -0
  977. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/qmldir-DCQb3MpD.js +0 -0
  978. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/qss-Fe1Jh2GI.js +0 -0
  979. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/r-D2d3McyU.js +0 -0
  980. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/racket-DcIDlBhZ.js +0 -0
  981. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/raku-B3gFvitq.js +0 -0
  982. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/razor-oFpUW61Z.js +0 -0
  983. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/red-CJ3rzSJv.js +0 -0
  984. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/reg-CRGYupPL.js +0 -0
  985. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/regexp-Bu0flJgP.js +0 -0
  986. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/rel-BtDbiS_P.js +0 -0
  987. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/riscv-Ckw8ddFX.js +0 -0
  988. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/ron-VUp2lXgN.js +0 -0
  989. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/rose-pine-BthvhNj6.js +0 -0
  990. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/rose-pine-dawn-Dg85fqjY.js +0 -0
  991. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/rose-pine-moon-hon4tzzS.js +0 -0
  992. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/rosmsg-CAekHB0j.js +0 -0
  993. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/rough.esm-CSKSodPl.js +0 -0
  994. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/rst-U6Eu7ipE.js +0 -0
  995. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/ruby-CUQsVT6d.js +0 -0
  996. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/rust-Cfkwpbl8.js +0 -0
  997. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/sas-CNBFrLhc.js +0 -0
  998. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/sass-DXrisJhu.js +0 -0
  999. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/scala-DKOlJaKm.js +0 -0
  1000. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/scheme-DQCgrYNe.js +0 -0
  1001. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/scss-CPnU-uuv.js +0 -0
  1002. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/sdbl-bTVj8UrX.js +0 -0
  1003. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/shaderlab-TOUzSsQk.js +0 -0
  1004. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/shellscript-BbTp1yjG.js +0 -0
  1005. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/shellsession-BmAC8SMF.js +0 -0
  1006. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/slack-dark-DnToyrRv.js +0 -0
  1007. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/slack-ochin-B2OO5cIa.js +0 -0
  1008. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/smalltalk-B16xEiuN.js +0 -0
  1009. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/snazzy-light-4G7pJPwS.js +0 -0
  1010. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/solarized-dark-DV17i1UV.js +0 -0
  1011. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/solarized-light-DSh2HLQt.js +0 -0
  1012. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/solidity-CKzVLygQ.js +0 -0
  1013. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/soy-CdbyEXp6.js +0 -0
  1014. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/space-separated-tokens-DpjE5PGy.js +0 -0
  1015. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/sparql-D_iOobhT.js +0 -0
  1016. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/splunk-BC2Px7Mm.js +0 -0
  1017. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/sql-hpBkusIy.js +0 -0
  1018. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/src-D-NMWEou.js +0 -0
  1019. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/ssh-config-BgfXC-Er.js +0 -0
  1020. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/stata-DVbvk3qH.js +0 -0
  1021. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/stylus-B6D30XZt.js +0 -0
  1022. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/surrealql-DxccxuMd.js +0 -0
  1023. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/svelte-DzNm5V2w.js +0 -0
  1024. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/swift-DonLKvLd.js +0 -0
  1025. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/synthwave-84-nFMaYfgc.js +0 -0
  1026. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/system-verilog-DJ5XKQeo.js +0 -0
  1027. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/systemd-BxMlprV5.js +0 -0
  1028. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/talonscript-CohzipZa.js +0 -0
  1029. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/tasl-DMoTqEGO.js +0 -0
  1030. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/tcl-CZd0xW_V.js +0 -0
  1031. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/templ-CsM0tTsw.js +0 -0
  1032. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/terraform-DswuEJGm.js +0 -0
  1033. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/tex-B0f_hYr8.js +0 -0
  1034. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/tokyo-night-oM2G3aXe.js +0 -0
  1035. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/toml-CcmNWLt0.js +0 -0
  1036. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/ts-tags-Bf-FGGvT.js +0 -0
  1037. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/tsv-sltzmVWM.js +0 -0
  1038. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/tsx-DFvk7AwW.js +0 -0
  1039. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/turtle-ByJddavk.js +0 -0
  1040. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/twig-VJ4-Ntm0.js +0 -0
  1041. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/typescript-DHTLvXzV.js +0 -0
  1042. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/typespec-B88KGewJ.js +0 -0
  1043. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/typst-DI99ib-x.js +0 -0
  1044. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/v-DETTlOr0.js +0 -0
  1045. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/v4-DqR3yzBO.js +0 -0
  1046. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/vala-zf12oZj6.js +0 -0
  1047. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/vb-Djn5o6TS.js +0 -0
  1048. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/verilog-CiiDBU1e.js +0 -0
  1049. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/vesper-D5bVUKB1.js +0 -0
  1050. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/vhdl-BroJfC0k.js +0 -0
  1051. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/viml-DvXPmvsu.js +0 -0
  1052. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/vitesse-black-fwtXNY1n.js +0 -0
  1053. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/vitesse-dark-BZCL-v6S.js +0 -0
  1054. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/vitesse-light-VbXTXTou.js +0 -0
  1055. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/vue-D3dSYZKz.js +0 -0
  1056. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/vue-html-DQch_7VQ.js +0 -0
  1057. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/vue-vine-B67Dz05t.js +0 -0
  1058. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/vyper-CgoNMtux.js +0 -0
  1059. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/wasm-BnjxR4X6.js +0 -0
  1060. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/wasm-ByWQv1Qj.js +0 -0
  1061. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/wenyan-C8pVoKbM.js +0 -0
  1062. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/wgsl-BsKzXJz4.js +0 -0
  1063. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/wikitext-ClFFjSW2.js +0 -0
  1064. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/wit-DdvCle-K.js +0 -0
  1065. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/wolfram-DLL8P-h_.js +0 -0
  1066. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/xml-C33zriiW.js +0 -0
  1067. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/xsl-BFS2wyMt.js +0 -0
  1068. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/yaml-w0rMsuN4.js +0 -0
  1069. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/zenscript-BnlCZFoB.js +0 -0
  1070. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/assets/zig-CMLA9XwU.js +0 -0
  1071. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/apple-touch-icon.png +0 -0
  1072. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/arctecture.webp +0 -0
  1073. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/bimi-logo.svg +0 -0
  1074. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/favicon.ico +0 -0
  1075. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin-ext.woff2 +0 -0
  1076. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin.woff2 +0 -0
  1077. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin-ext.woff2 +0 -0
  1078. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin.woff2 +0 -0
  1079. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin-ext.woff2 +0 -0
  1080. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin.woff2 +0 -0
  1081. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin-ext.woff2 +0 -0
  1082. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin.woff2 +0 -0
  1083. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin-ext.woff2 +0 -0
  1084. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin.woff2 +0 -0
  1085. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin-ext.woff2 +0 -0
  1086. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin.woff2 +0 -0
  1087. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/icon-192.png +0 -0
  1088. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/icon-512.png +0 -0
  1089. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/icon.svg +0 -0
  1090. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/logo.png +0 -0
  1091. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/pythinker_animated.svg +0 -0
  1092. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/brand/robots.txt +0 -0
  1093. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/install.ps1 +0 -0
  1094. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/install.sh +0 -0
  1095. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/static/logo.png +0 -0
  1096. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/store/__init__.py +0 -0
  1097. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/web/store/sessions.py +0 -0
  1098. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/wire/__init__.py +0 -0
  1099. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/wire/file.py +0 -0
  1100. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/wire/jsonrpc.py +0 -0
  1101. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/wire/protocol.py +0 -0
  1102. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/wire/root_hub.py +0 -0
  1103. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/wire/serde.py +0 -0
  1104. {pythinker_code-0.57.0 → pythinker_code-0.59.0}/src/pythinker_code/wire/server.py +0 -0
  1105. {pythinker_code-0.57.0 → pythinker_code-0.59.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.57.0
3
+ Version: 0.59.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.57.0
118
+ ## 🆕 What's New in 0.59.0
119
119
 
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.
120
+ - **Explicit Z.AI compatibility routes.** Independent Z.AI Coding Plan and API login routes now use separate credentials, endpoints, model identities, catalog refresh, logout, and usage/rate-limit state, with immutable compatibility profiles keeping request-format quirks behind the chat-provider boundary.
121
+ - **Streamed tool calls are correlated safely.** Interleaved argument chunks stay attached to their indexed calls, malformed or truncated call streams stop before tool execution, and failed attempts are not retried after output has already been shown.
122
+ - **Deterministic reviewer scopes and supervised tool batches.** Reviewer subagents receive fully resolved Git commit anchors with invalid or empty scopes rejected explicitly, and tool execution runs through a supervised batch engine with ordered results, bounded cancellation, and fail-closed new batches until cleanup drains.
123
123
 
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).
124
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.59.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
  ---
@@ -227,7 +227,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
227
227
 
228
228
  | Platform | Recommended install | Artifact source |
229
229
  |---|---|---|
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) |
230
+ | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.59.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
231
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) |
232
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 |
233
233
  | **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
@@ -255,7 +255,7 @@ pythinker # start the interactive TUI
255
255
 
256
256
  ### 🪟 Windows — native installer
257
257
 
258
- `PythinkerSetup-0.57.0.exe` is an Inno Setup wizard. Release builds are signed
258
+ `PythinkerSetup-0.59.0.exe` is an Inno Setup wizard. Release builds are signed
259
259
  when Authenticode secrets are configured in CI; otherwise the installer ships
260
260
  unsigned. Installs per-user into `%LOCALAPPDATA%\Programs\Pythinker`, registers
261
261
  `pythinker` on your user PATH (`HKCU\Environment`), broadcasts
@@ -267,13 +267,13 @@ irm https://pythinker.com/install.ps1 | iex
267
267
 
268
268
  # Or manually download the installer + checksum from the Releases page,
269
269
  # verify with Get-FileHash, then run:
270
- .\PythinkerSetup-0.57.0.exe
270
+ .\PythinkerSetup-0.59.0.exe
271
271
 
272
272
  # Open a fresh PowerShell
273
273
  pythinker --version
274
274
  ```
275
275
 
276
- **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.57.0.exe /ALLUSERS`
276
+ **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.59.0.exe /ALLUSERS`
277
277
  installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
278
278
 
279
279
  **Upgrade:** `pythinker update` from inside the running app — it downloads
@@ -331,26 +331,26 @@ attached to every GitHub Release.
331
331
 
332
332
  ```sh
333
333
  # Debian / Ubuntu (x86_64)
334
- sudo dpkg -i pythinker-code_0.57.0_amd64.deb
334
+ sudo dpkg -i pythinker-code_0.59.0_amd64.deb
335
335
  sudo apt-get install -f # only if dpkg reports missing deps
336
336
 
337
337
  # Debian / Ubuntu (ARM64)
338
- sudo dpkg -i pythinker-code_0.57.0_arm64.deb
338
+ sudo dpkg -i pythinker-code_0.59.0_arm64.deb
339
339
 
340
340
  # Fedora / RHEL / openSUSE (x86_64)
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
341
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.59.0/pythinker-code-0.59.0.x86_64.rpm
342
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.59.0/pythinker-code-0.59.0.x86_64.rpm.sha256
343
+ sha256sum -c pythinker-code-0.59.0.x86_64.rpm.sha256
344
344
  # Fedora / RHEL:
345
- sudo dnf install ./pythinker-code-0.57.0.x86_64.rpm
345
+ sudo dnf install ./pythinker-code-0.59.0.x86_64.rpm
346
346
  # openSUSE:
347
- sudo zypper install ./pythinker-code-0.57.0.x86_64.rpm
347
+ sudo zypper install ./pythinker-code-0.59.0.x86_64.rpm
348
348
 
349
349
  # Fedora / RHEL (aarch64)
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
350
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.59.0/pythinker-code-0.59.0.aarch64.rpm
351
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.59.0/pythinker-code-0.59.0.aarch64.rpm.sha256
352
+ sha256sum -c pythinker-code-0.59.0.aarch64.rpm.sha256
353
+ sudo dnf install ./pythinker-code-0.59.0.aarch64.rpm
354
354
  ```
355
355
 
356
356
  Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
@@ -359,8 +359,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
359
359
  **Verify before install:**
360
360
 
361
361
  ```sh
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
362
+ sha256sum -c pythinker-code_0.59.0_amd64.deb.sha256 # Debian/Ubuntu
363
+ sha256sum -c pythinker-code-0.59.0.x86_64.rpm.sha256 # Fedora/RHEL
364
364
  ```
365
365
 
366
366
  **Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
@@ -440,6 +440,21 @@ For hosted Pythinker models or ACP terminal auth:
440
440
  pythinker login
441
441
  ```
442
442
 
443
+ Z.AI exposes two independent OpenAI-compatible routes. Choose the route that owns your key;
444
+ both may coexist, and Pythinker never infers, migrates, falls back, or retries across them:
445
+
446
+ ```sh
447
+ # Coding Plan subscription
448
+ pythinker login --z-ai-coding # reads ZAI_CODING_API_KEY when set
449
+
450
+ # Standard pay-as-you-go API
451
+ pythinker login --z-ai-api # reads ZAI_API_KEY when set
452
+ ```
453
+
454
+ These create distinct `z-ai-coding/*` and `z-ai-api/*` model identities. See the
455
+ [provider guide](./docs/en/configuration/providers.md#managed-zai-routes) for endpoints,
456
+ curated GLM capabilities, and route-scoped `/usage` behavior.
457
+
443
458
  ### 💬 Try it out
444
459
 
445
460
  ```sh
@@ -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.57.0
53
+ ## 🆕 What's New in 0.59.0
54
54
 
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.
55
+ - **Explicit Z.AI compatibility routes.** Independent Z.AI Coding Plan and API login routes now use separate credentials, endpoints, model identities, catalog refresh, logout, and usage/rate-limit state, with immutable compatibility profiles keeping request-format quirks behind the chat-provider boundary.
56
+ - **Streamed tool calls are correlated safely.** Interleaved argument chunks stay attached to their indexed calls, malformed or truncated call streams stop before tool execution, and failed attempts are not retried after output has already been shown.
57
+ - **Deterministic reviewer scopes and supervised tool batches.** Reviewer subagents receive fully resolved Git commit anchors with invalid or empty scopes rejected explicitly, and tool execution runs through a supervised batch engine with ordered results, bounded cancellation, and fail-closed new batches until cleanup drains.
58
58
 
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).
59
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.59.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
  ---
@@ -162,7 +162,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
162
162
 
163
163
  | Platform | Recommended install | Artifact source |
164
164
  |---|---|---|
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) |
165
+ | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.59.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
166
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) |
167
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 |
168
168
  | **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
@@ -190,7 +190,7 @@ pythinker # start the interactive TUI
190
190
 
191
191
  ### 🪟 Windows — native installer
192
192
 
193
- `PythinkerSetup-0.57.0.exe` is an Inno Setup wizard. Release builds are signed
193
+ `PythinkerSetup-0.59.0.exe` is an Inno Setup wizard. Release builds are signed
194
194
  when Authenticode secrets are configured in CI; otherwise the installer ships
195
195
  unsigned. Installs per-user into `%LOCALAPPDATA%\Programs\Pythinker`, registers
196
196
  `pythinker` on your user PATH (`HKCU\Environment`), broadcasts
@@ -202,13 +202,13 @@ irm https://pythinker.com/install.ps1 | iex
202
202
 
203
203
  # Or manually download the installer + checksum from the Releases page,
204
204
  # verify with Get-FileHash, then run:
205
- .\PythinkerSetup-0.57.0.exe
205
+ .\PythinkerSetup-0.59.0.exe
206
206
 
207
207
  # Open a fresh PowerShell
208
208
  pythinker --version
209
209
  ```
210
210
 
211
- **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.57.0.exe /ALLUSERS`
211
+ **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.59.0.exe /ALLUSERS`
212
212
  installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
213
213
 
214
214
  **Upgrade:** `pythinker update` from inside the running app — it downloads
@@ -266,26 +266,26 @@ attached to every GitHub Release.
266
266
 
267
267
  ```sh
268
268
  # Debian / Ubuntu (x86_64)
269
- sudo dpkg -i pythinker-code_0.57.0_amd64.deb
269
+ sudo dpkg -i pythinker-code_0.59.0_amd64.deb
270
270
  sudo apt-get install -f # only if dpkg reports missing deps
271
271
 
272
272
  # Debian / Ubuntu (ARM64)
273
- sudo dpkg -i pythinker-code_0.57.0_arm64.deb
273
+ sudo dpkg -i pythinker-code_0.59.0_arm64.deb
274
274
 
275
275
  # Fedora / RHEL / openSUSE (x86_64)
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
276
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.59.0/pythinker-code-0.59.0.x86_64.rpm
277
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.59.0/pythinker-code-0.59.0.x86_64.rpm.sha256
278
+ sha256sum -c pythinker-code-0.59.0.x86_64.rpm.sha256
279
279
  # Fedora / RHEL:
280
- sudo dnf install ./pythinker-code-0.57.0.x86_64.rpm
280
+ sudo dnf install ./pythinker-code-0.59.0.x86_64.rpm
281
281
  # openSUSE:
282
- sudo zypper install ./pythinker-code-0.57.0.x86_64.rpm
282
+ sudo zypper install ./pythinker-code-0.59.0.x86_64.rpm
283
283
 
284
284
  # Fedora / RHEL (aarch64)
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
285
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.59.0/pythinker-code-0.59.0.aarch64.rpm
286
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.59.0/pythinker-code-0.59.0.aarch64.rpm.sha256
287
+ sha256sum -c pythinker-code-0.59.0.aarch64.rpm.sha256
288
+ sudo dnf install ./pythinker-code-0.59.0.aarch64.rpm
289
289
  ```
290
290
 
291
291
  Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
@@ -294,8 +294,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
294
294
  **Verify before install:**
295
295
 
296
296
  ```sh
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
297
+ sha256sum -c pythinker-code_0.59.0_amd64.deb.sha256 # Debian/Ubuntu
298
+ sha256sum -c pythinker-code-0.59.0.x86_64.rpm.sha256 # Fedora/RHEL
299
299
  ```
300
300
 
301
301
  **Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
@@ -375,6 +375,21 @@ For hosted Pythinker models or ACP terminal auth:
375
375
  pythinker login
376
376
  ```
377
377
 
378
+ Z.AI exposes two independent OpenAI-compatible routes. Choose the route that owns your key;
379
+ both may coexist, and Pythinker never infers, migrates, falls back, or retries across them:
380
+
381
+ ```sh
382
+ # Coding Plan subscription
383
+ pythinker login --z-ai-coding # reads ZAI_CODING_API_KEY when set
384
+
385
+ # Standard pay-as-you-go API
386
+ pythinker login --z-ai-api # reads ZAI_API_KEY when set
387
+ ```
388
+
389
+ These create distinct `z-ai-coding/*` and `z-ai-api/*` model identities. See the
390
+ [provider guide](./docs/en/configuration/providers.md#managed-zai-routes) for endpoints,
391
+ curated GLM capabilities, and route-scoped `/usage` behavior.
392
+
378
393
  ### 💬 Try it out
379
394
 
380
395
  ```sh
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "pythinker-code"
3
- version = "0.57.0"
3
+ version = "0.59.0"
4
4
  description = "Pythinker — an agentic CLI developed by Pythoughts-labs."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -15,6 +15,65 @@ GitHub Releases page; `0.8.0` is the new starting line.
15
15
 
16
16
  ## Unreleased
17
17
 
18
+ ## 0.59.0 (2026-07-17)
19
+
20
+ - **Reviewer subagents now receive deterministic Git scopes.** Structured automatic,
21
+ uncommitted, base, and commit targets resolve to full commit anchors before dispatch, reject
22
+ invalid or empty scopes explicitly, and keep repository metadata isolated from instructions
23
+ across foreground and background runs.
24
+ - **Parallel streamed tool calls are now correlated safely.** Interleaved argument chunks stay attached to their indexed calls, malformed or truncated call streams stop before tool execution, and failed attempts are not retried after output has already been shown.
25
+ - **Provider compatibility and Z.AI routing are now explicit.** Immutable compatibility profiles keep request-format quirks behind the chat-provider boundary, while independent Z.AI Coding Plan and API login routes use separate credentials, endpoints, model identities, catalog refresh, logout, and usage/rate-limit state. Curated GLM requests now apply exact context/output limits, thinking controls, reasoning replay, and tool-stream support without activating for local or unknown models.
26
+ - **Tool execution is now supervised as a terminal batch.** A private execution engine preserves the Toolset registry and legacy per-call API while centralizing ordered results, deduplication, callbacks, and batch summaries; cancellation is bounded, late work stays owned, and new batches fail closed until timed-out cleanup drains.
27
+
28
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.59.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
29
+
30
+ ## 0.58.0 (2026-07-11)
31
+
32
+ - **Agent-spec loading is more defensive and truthful.** Subagent `path`, `extend`, and
33
+ `system_prompt_path` references that resolve outside their spec's directory (or the built-in
34
+ agents directory) are now rejected instead of loaded, and the markdown agent catalogue no longer
35
+ reclassifies an unexpected parser error as a harmless "invalid field" skip — only genuinely
36
+ malformed frontmatter is skipped.
37
+ - **Thinking and subagent activity now render cleanly in the terminal.** Live reasoning previews
38
+ render complete Markdown without exposing top-level HTML comments, activity-tree rows remain
39
+ visually stable, and the coral shimmer is reserved for the active verb spinner.
40
+ - **Agent request compatibility is now executable and reviewable.** Provider handoff,
41
+ prompt ordering, persisted-versus-effective history, context JSONL restoration,
42
+ agent projections, and Toolset lifecycle behavior now have explicit compatibility
43
+ contracts guarding future agent-core changes.
44
+ - **Skill discovery is bounded without making skills unreachable.** Pythinker now
45
+ searches one deterministic `SkillCatalog`, keeps exhaustive exact-name resolution,
46
+ and sends only task-relevant candidates to the model within an 8,000-character
47
+ request budget. The exhaustive `Runtime.skills` mapping remains available during
48
+ the compatibility window.
49
+ - **Agent requests now have one observable assembly path.** Required guidance fails
50
+ closed, optional guidance reports sanitized degradation outcomes, and the new
51
+ `/prompt-manifest` command explains the latest request composition without storing
52
+ raw prompts, user text, or provenance paths.
53
+ - **Conversation history updates are transactional.** Normal appends persist before
54
+ changing memory, while compaction, pruning, revert, and clear flows use atomic
55
+ replacement with coherent cancellation and rollback behavior. Concurrent revert
56
+ conflicts now stop after a bounded retry budget instead of starving indefinitely.
57
+ Existing JSONL records and restoration behavior remain compatible.
58
+ - **Agent definitions now resolve through one source-aware catalogue.** YAML and
59
+ Markdown definitions share deterministic precedence, collision diagnostics, and
60
+ safe provenance handling. Unknown fields warn in this release, become errors in
61
+ the following minor release, and the `LaborMarket`, `AgentTypeDefinition`, and
62
+ generated-wrapper adapters remain through that strict-default release.
63
+ - **Tool execution and MCP lifecycle behavior now have deterministic fault coverage.**
64
+ Publication rebuilds preserve the previous MCP tool registry if registration
65
+ fails. Characterization crossed the execution-overhead threshold, but a controlled
66
+ private extraction measured slightly worse and was reverted, so
67
+ `PythinkerToolset` remains the implementation boundary.
68
+ - **Agent-core seams hardened from review.** Persisted usage/checkpoint records reject
69
+ boolean and negative token counts, `update_token_count` validates at the boundary, a
70
+ temporary system-prompt descriptor is closed if `fdopen` fails, request finalization
71
+ surfaces every provider acknowledgement failure, a failed skill projection is always
72
+ recorded as failed (never blurred to not-applicable), and request-assembly telemetry no
73
+ longer emits unbounded per-request token values as metric attributes.
74
+
75
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.58.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
76
+
18
77
  ## 0.57.0 (2026-07-05)
19
78
 
20
79
  - **No more ghost/duplicate input prompt while the agent works.** After
@@ -255,7 +255,7 @@ Precedence per §2. `README`/`README.md` files are optional supplementary contex
255
255
 
256
256
  ## 12. Skills
257
257
 
258
- Skills are reusable, self-contained capability directories, each with a `SKILL.md` of instructions, examples, scripts, and reference material — specialized domain knowledge, workflow patterns, pre-configured tool chains, and templates. They are grouped by scope (`Project`, `User`, `Extra`, `Built-in`); when scopes define the same name, the more specific wins: **Project › User › Extra › Built-in.**
258
+ Skills are reusable, self-contained capability directories, each with a `SKILL.md` of instructions, examples, scripts, and reference material — specialized domain knowledge, workflow patterns, pre-configured tool chains, and templates. When scopes define the same name, the more specific wins: **Project › User › Extra › Built-in.**
259
259
 
260
260
  ${PYTHINKER_SKILLS}
261
261
 
@@ -1,11 +1,13 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import hashlib
4
+ import re
3
5
  from dataclasses import dataclass
4
6
  from pathlib import Path
5
7
  from typing import Any, Literal, NamedTuple, cast
6
8
 
7
9
  import yaml
8
- from pydantic import BaseModel, Field
10
+ from pydantic import BaseModel, Field, ValidationError
9
11
 
10
12
  from pythinker_code.exception import AgentSpecError
11
13
 
@@ -89,6 +91,14 @@ class ResolvedAgentSpec:
89
91
  subagents: dict[str, SubagentSpec]
90
92
 
91
93
 
94
+ @dataclass(frozen=True, slots=True, kw_only=True)
95
+ class AgentSpecSourceValidation:
96
+ """Unknown fields observed in one canonical YAML source before projection."""
97
+
98
+ source_path: Path
99
+ field_paths: tuple[str, ...]
100
+
101
+
92
102
  def load_agent_spec(agent_file: Path) -> ResolvedAgentSpec:
93
103
  """
94
104
  Load agent specification from file.
@@ -97,7 +107,22 @@ def load_agent_spec(agent_file: Path) -> ResolvedAgentSpec:
97
107
  FileNotFoundError: If the agent spec file is not found.
98
108
  AgentSpecError: If the agent spec is not valid.
99
109
  """
100
- agent_spec = _load_agent_spec(agent_file)
110
+ agent_spec, _ = load_agent_spec_validated(agent_file)
111
+ return agent_spec
112
+
113
+
114
+ def load_agent_spec_validated(
115
+ agent_file: Path,
116
+ *,
117
+ forbid_unknown_fields: bool = False,
118
+ ) -> tuple[ResolvedAgentSpec, tuple[AgentSpecSourceValidation, ...]]:
119
+ """Load a spec and report raw unknown fields from every inherited source."""
120
+ validations: dict[Path, AgentSpecSourceValidation] = {}
121
+ agent_spec = _load_agent_spec(
122
+ agent_file,
123
+ _validations=validations,
124
+ _forbid_unknown_fields=forbid_unknown_fields,
125
+ )
101
126
  assert agent_spec.extend is None, "agent extension should be recursively resolved"
102
127
  if isinstance(agent_spec.name, Inherit):
103
128
  raise AgentSpecError("Agent name is required")
@@ -111,7 +136,7 @@ def load_agent_spec(agent_file: Path) -> ResolvedAgentSpec:
111
136
  agent_spec.exclude_tools = []
112
137
  if isinstance(agent_spec.subagents, Inherit):
113
138
  agent_spec.subagents = {}
114
- return ResolvedAgentSpec(
139
+ resolved = ResolvedAgentSpec(
115
140
  name=agent_spec.name,
116
141
  system_prompt_path=agent_spec.system_prompt_path,
117
142
  system_prompt_args=agent_spec.system_prompt_args,
@@ -127,9 +152,36 @@ def load_agent_spec(agent_file: Path) -> ResolvedAgentSpec:
127
152
  exclude_tools=agent_spec.exclude_tools or [],
128
153
  subagents=agent_spec.subagents or {},
129
154
  )
155
+ return resolved, tuple(validations.values())
156
+
157
+
158
+ def _resolve_within_agent_roots(agent_file: Path, declared: str | Path) -> Path:
159
+ """Join *declared* onto *agent_file*'s directory, rejecting escaping paths.
160
+
161
+ Trusted local agent specs reference sibling files with relative paths. A
162
+ ``..`` traversal or symlink whose canonical target lands outside both the
163
+ originating spec's directory and the built-in agents directory is rejected
164
+ fail-closed as defense-in-depth, since the joined path is otherwise opened
165
+ or recursively loaded directly. The stored value keeps its ``.absolute()``
166
+ form, so permitted paths are unchanged.
167
+ """
168
+ parent = agent_file.parent
169
+ absolute = (parent / declared).absolute()
170
+ allowed_roots = (parent.resolve(), get_agents_dir().resolve())
171
+ if not any(absolute.resolve().is_relative_to(root) for root in allowed_roots):
172
+ raise AgentSpecError(
173
+ f"Agent spec reference {declared!r} resolves outside the permitted agent directories"
174
+ )
175
+ return absolute
130
176
 
131
177
 
132
- def _load_agent_spec(agent_file: Path, _visited: set[Path] | None = None) -> AgentSpec:
178
+ def _load_agent_spec(
179
+ agent_file: Path,
180
+ _visited: set[Path] | None = None,
181
+ *,
182
+ _validations: dict[Path, AgentSpecSourceValidation] | None = None,
183
+ _forbid_unknown_fields: bool = False,
184
+ ) -> AgentSpec:
133
185
  resolved = agent_file.resolve()
134
186
  if _visited is None:
135
187
  _visited = set()
@@ -149,24 +201,46 @@ def _load_agent_spec(agent_file: Path, _visited: set[Path] | None = None) -> Age
149
201
  raise AgentSpecError(f"Agent spec file must contain a mapping: {agent_file}")
150
202
  data = cast("dict[str, Any]", data)
151
203
 
204
+ unknown_fields, has_invalid_field_key = _unknown_agent_spec_fields(data)
205
+ if unknown_fields:
206
+ if has_invalid_field_key:
207
+ fields = ", ".join(unknown_fields)
208
+ raise AgentSpecError(f"Invalid agent field key: {fields}")
209
+ if _forbid_unknown_fields:
210
+ fields = ", ".join(unknown_fields)
211
+ raise AgentSpecError(f"Unknown fields in required agent source: {fields}")
212
+ if _validations is not None and resolved not in _validations:
213
+ _validations[resolved] = AgentSpecSourceValidation(
214
+ source_path=resolved,
215
+ field_paths=unknown_fields,
216
+ )
217
+
152
218
  version = str(data.get("version", DEFAULT_AGENT_SPEC_VERSION))
153
219
  if version not in SUPPORTED_AGENT_SPEC_VERSIONS:
154
220
  raise AgentSpecError(f"Unsupported agent spec version: {version}")
155
221
 
156
- agent_spec = AgentSpec(**data.get("agent", {}))
222
+ try:
223
+ agent_spec = AgentSpec(**data.get("agent", {}))
224
+ except (TypeError, ValidationError) as exc:
225
+ raise AgentSpecError("Agent spec contains an invalid known field") from exc
157
226
  if isinstance(agent_spec.system_prompt_path, Path):
158
- agent_spec.system_prompt_path = (
159
- agent_file.parent / agent_spec.system_prompt_path
160
- ).absolute()
227
+ agent_spec.system_prompt_path = _resolve_within_agent_roots(
228
+ agent_file, agent_spec.system_prompt_path
229
+ )
161
230
  if isinstance(agent_spec.subagents, dict):
162
231
  for v in agent_spec.subagents.values():
163
- v.path = (agent_file.parent / v.path).absolute()
232
+ v.path = _resolve_within_agent_roots(agent_file, v.path)
164
233
  if agent_spec.extend:
165
234
  if agent_spec.extend == "default":
166
235
  base_agent_file = DEFAULT_AGENT_FILE
167
236
  else:
168
- base_agent_file = (agent_file.parent / agent_spec.extend).absolute()
169
- base_agent_spec = _load_agent_spec(base_agent_file, _visited)
237
+ base_agent_file = _resolve_within_agent_roots(agent_file, agent_spec.extend)
238
+ base_agent_spec = _load_agent_spec(
239
+ base_agent_file,
240
+ _visited,
241
+ _validations=_validations,
242
+ _forbid_unknown_fields=_forbid_unknown_fields,
243
+ )
170
244
  if not isinstance(agent_spec.name, Inherit):
171
245
  base_agent_spec.name = agent_spec.name
172
246
  if not isinstance(agent_spec.system_prompt_path, Inherit):
@@ -207,3 +281,89 @@ def _load_agent_spec(agent_file: Path, _visited: set[Path] | None = None) -> Age
207
281
  base_agent_spec.subagents = agent_spec.subagents
208
282
  agent_spec = base_agent_spec
209
283
  return agent_spec
284
+
285
+
286
+ def _unknown_agent_spec_fields(data: dict[str, Any]) -> tuple[tuple[str, ...], bool]:
287
+ unknown: list[str] = []
288
+ has_invalid_key = False
289
+ for key in cast("dict[object, object]", data):
290
+ if isinstance(key, str) and key in {"version", "agent"}:
291
+ continue
292
+ rendered = render_agent_field_segment(key)
293
+ unknown.append(rendered.text)
294
+ has_invalid_key = has_invalid_key or rendered.structurally_invalid
295
+ raw_agent = data.get("agent")
296
+ if not isinstance(raw_agent, dict):
297
+ return tuple(sorted(unknown)), has_invalid_key
298
+ agent = cast("dict[str, Any]", raw_agent)
299
+ known_agent_fields = set(AgentSpec.model_fields)
300
+ for key in cast("dict[object, object]", agent):
301
+ if isinstance(key, str) and key in known_agent_fields:
302
+ continue
303
+ rendered = render_agent_field_segment(key)
304
+ unknown.append(f"agent.{rendered.text}")
305
+ has_invalid_key = has_invalid_key or rendered.structurally_invalid
306
+ raw_subagents = agent.get("subagents")
307
+ if isinstance(raw_subagents, dict):
308
+ known_subagent_fields = set(SubagentSpec.model_fields)
309
+ for name, raw_subagent in cast("dict[object, object]", raw_subagents).items():
310
+ rendered_name = render_agent_field_segment(name)
311
+ has_invalid_key = has_invalid_key or rendered_name.structurally_invalid
312
+ if rendered_name.structurally_invalid:
313
+ unknown.append(f"agent.subagents.{rendered_name.text}")
314
+ if not isinstance(raw_subagent, dict):
315
+ continue
316
+ for key in cast("dict[object, object]", raw_subagent):
317
+ if isinstance(key, str) and key in known_subagent_fields:
318
+ continue
319
+ rendered = render_agent_field_segment(key)
320
+ unknown.append(f"agent.subagents.{rendered_name.text}.{rendered.text}")
321
+ has_invalid_key = has_invalid_key or rendered.structurally_invalid
322
+ return tuple(sorted(unknown)), has_invalid_key
323
+
324
+
325
+ _FIELD_IDENTIFIER_RE = re.compile(r"[A-Za-z_][A-Za-z0-9_-]*")
326
+ _SENSITIVE_FIELD_HINTS = (
327
+ "password",
328
+ "passwd",
329
+ "secret",
330
+ "token",
331
+ "api_key",
332
+ "apikey",
333
+ "access_key",
334
+ "private_key",
335
+ "credential",
336
+ "auth",
337
+ )
338
+
339
+
340
+ @dataclass(frozen=True, slots=True, kw_only=True)
341
+ class AgentFieldSegment:
342
+ text: str
343
+ redacted_for_safety: bool
344
+ structurally_invalid: bool
345
+
346
+
347
+ def render_agent_field_segment(value: object) -> AgentFieldSegment:
348
+ """Render a stable field segment without conflating redaction and validity."""
349
+ if isinstance(value, str):
350
+ lowered = value.casefold()
351
+ if _FIELD_IDENTIFIER_RE.fullmatch(value) and not any(
352
+ hint in lowered for hint in _SENSITIVE_FIELD_HINTS
353
+ ):
354
+ return AgentFieldSegment(
355
+ text=value,
356
+ redacted_for_safety=False,
357
+ structurally_invalid=False,
358
+ )
359
+ digest_input = f"str:{value}"
360
+ structurally_invalid = _FIELD_IDENTIFIER_RE.fullmatch(value) is None
361
+ else:
362
+ digest_input = f"{type(value).__qualname__}:{value!r}"
363
+ structurally_invalid = True
364
+ digest = hashlib.sha256(digest_input.encode(encoding="utf-8")).hexdigest()[:12]
365
+ return AgentFieldSegment(
366
+ text=f"field[{digest}]",
367
+ redacted_for_safety=True,
368
+ structurally_invalid=structurally_invalid,
369
+ )
@@ -13,7 +13,8 @@ ANTHROPIC_PLATFORM_ID = "anthropic"
13
13
  OPENROUTER_PLATFORM_ID = "openrouter"
14
14
  LM_STUDIO_PLATFORM_ID = "lm-studio"
15
15
  OLLAMA_PLATFORM_ID = "ollama"
16
- ZAI_PLATFORM_ID = "z-ai"
16
+ ZAI_CODING_PLATFORM_ID = "z-ai-coding"
17
+ ZAI_API_PLATFORM_ID = "z-ai-api"
17
18
 
18
19
  __all__ = [
19
20
  "ALIBABA_PLATFORM_ID",
@@ -29,5 +30,6 @@ __all__ = [
29
30
  "OPENCODE_GO_PLATFORM_ID",
30
31
  "OPENROUTER_PLATFORM_ID",
31
32
  "PYTHINKER_CODE_PLATFORM_ID",
32
- "ZAI_PLATFORM_ID",
33
+ "ZAI_API_PLATFORM_ID",
34
+ "ZAI_CODING_PLATFORM_ID",
33
35
  ]