pythinker-code 0.22.0__tar.gz → 0.24.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 (848) hide show
  1. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/PKG-INFO +52 -50
  2. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/README.md +46 -44
  3. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/pyproject.toml +6 -6
  4. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/CHANGELOG.md +22 -2
  5. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/__main__.py +2 -2
  6. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/cli/__init__.py +2 -2
  7. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/config.py +1 -1
  8. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/native.py +1 -1
  9. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skills/pythinker-code-help/SKILL.md +4 -4
  10. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/__init__.py +10 -2
  11. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/prompt.py +11 -3
  12. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/slash.py +2 -2
  13. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/update.py +176 -20
  14. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/pyinstaller.py +6 -0
  15. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/_baseUniq-BXcS6U9e.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/_baseUniq-xke532Oy.js +1 -1
  16. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/arc-BNq1Iv02.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/arc-CegJbAFP.js +1 -1
  17. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-COtefIY7.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-gRgnu-gr.js +1 -1
  18. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-CUjF2foC.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-Dg5w_2Yh.js +1 -1
  19. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-D_Y6bDQD.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-CCef5OiF.js +1 -1
  20. pythinker_code-0.24.0/src/pythinker_code/web/static/assets/channel-D_mnrgqH.js +1 -0
  21. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB--mdcF7p_.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-EgaX5uMv.js +1 -1
  22. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-BxQr5TFd.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-DxrhgIEt.js +1 -1
  23. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-mI97X6zc.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-CQVqjkPw.js +1 -1
  24. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-BLCienbB.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-CB92ALDq.js +1 -1
  25. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-DhlVeEwu.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-Dx0SG_k_.js +1 -1
  26. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-22_G1TRF.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-CPf0eYoM.js +1 -1
  27. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-Dab7LQk9.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-CCzKoWw1.js +1 -1
  28. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-D9QOBVZX.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-DRcEkhpm.js +1 -1
  29. pythinker_code-0.24.0/src/pythinker_code/web/static/assets/classDiagram-2ON5EDUG-CitTAFHx.js +1 -0
  30. pythinker_code-0.24.0/src/pythinker_code/web/static/assets/classDiagram-v2-WZHVMYZB-CitTAFHx.js +1 -0
  31. pythinker_code-0.24.0/src/pythinker_code/web/static/assets/clone-Bz9PJd84.js +1 -0
  32. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-Y8jIDMkm.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-B9Gx7wfK.js +1 -1
  33. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-CHoYO0MQ.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-Bk_TZfTb.js +1 -1
  34. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/cytoscape.esm-CYPnwb-z.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/cytoscape.esm-BHcnjk-H.js +1 -1
  35. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-BDWG8O_3.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-Crkbecci.js +1 -1
  36. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-233wR97s.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-CZZA6AcG.js +1 -1
  37. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-C6VFZAgG.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-Cl9Bn4z0.js +1 -1
  38. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-B0Ou3Fj0.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-Cfd515FT.js +1 -1
  39. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-DPvMlUeq.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-bKIec5rn.js +1 -1
  40. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-DjvKqRtf.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-QpAOui2R.js +1 -1
  41. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-BFPyg2b5.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-9b-6k-Ce.js +1 -1
  42. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-Be3sQCQ3.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-1jsNU7Xj.js +1 -1
  43. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/graph-DcTNtmQ6.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/graph-BpD9mq1e.js +1 -1
  44. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/index-CAqaZIKR.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/index-CcDfQ78O.js +2 -2
  45. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/index-CFHnQDnc.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/index-DOqWBZxx.js +1 -1
  46. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/index-DjPaO8bY.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/index-JGsigFy8.js +1 -1
  47. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-DK_AsDEP.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-DDG7tF9O.js +1 -1
  48. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-C60ssHAu.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-CbGNODS3.js +1 -1
  49. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-DNegBx6O.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-C-9k-K2F.js +1 -1
  50. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/layout-DVxITcd7.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/layout-C_z0jB06.js +1 -1
  51. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/linear-CV8E9cnp.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/linear-BvpHbFJ9.js +1 -1
  52. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-DtKXKzOG.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-BQYgOUUq.js +7 -7
  53. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/mermaid.core-BUO5QUtX.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/mermaid.core-BJL5GYve.js +5 -5
  54. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/min-ktHr7hq9.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/min-BEcwyy0D.js +1 -1
  55. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-Db-3f33d.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-DGJ3sluz.js +1 -1
  56. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-rr8KzY9D.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-CopVB6-T.js +1 -1
  57. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-CiqaJPRc.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-BdniBu5I.js +1 -1
  58. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-DPJrvZla.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-_-TE819T.js +1 -1
  59. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-CjctvTsO.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-Q0nhrVAc.js +1 -1
  60. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-DLkN6-QP.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-CM9YS9lz.js +1 -1
  61. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-HzR2Pp4E.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-CN07f0ow.js +1 -1
  62. pythinker_code-0.24.0/src/pythinker_code/web/static/assets/stateDiagram-v2-4FDKWEC3-Cdl7WqDO.js +1 -0
  63. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-FNu4b3Qf.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-BLVxjxj5.js +1 -1
  64. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-EcNvzROw.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-DkxAx6_v.js +1 -1
  65. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-D22BsDGG.js → pythinker_code-0.24.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-r872XVoE.js +1 -1
  66. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/index.html +1 -1
  67. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/install.ps1 +3 -3
  68. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/install.sh +3 -3
  69. pythinker_code-0.24.0/src/pythinker_code/web/static/logo.png +0 -0
  70. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/channel-BGh7tn6D.js +0 -1
  71. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/classDiagram-2ON5EDUG-p7rNLQMC.js +0 -1
  72. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/classDiagram-v2-WZHVMYZB-p7rNLQMC.js +0 -1
  73. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/clone-BZ5h4PiC.js +0 -1
  74. pythinker_code-0.22.0/src/pythinker_code/web/static/assets/stateDiagram-v2-4FDKWEC3-Dg-GLlsO.js +0 -1
  75. pythinker_code-0.22.0/src/pythinker_code/web/static/logo.png +0 -0
  76. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/LICENSE +0 -0
  77. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/NOTICE +0 -0
  78. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/__init__.py +0 -0
  79. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/acp/AGENTS.md +0 -0
  80. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/acp/__init__.py +0 -0
  81. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/acp/convert.py +0 -0
  82. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/acp/host.py +0 -0
  83. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/acp/mcp.py +0 -0
  84. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/acp/server.py +0 -0
  85. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/acp/session.py +0 -0
  86. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/acp/tools.py +0 -0
  87. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/acp/types.py +0 -0
  88. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/acp/version.py +0 -0
  89. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/agents/default/agent.yaml +0 -0
  90. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/agents/default/code_reviewer.yaml +0 -0
  91. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/agents/default/coder.yaml +0 -0
  92. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/agents/default/debugger.yaml +0 -0
  93. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/agents/default/explore.yaml +0 -0
  94. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/agents/default/implementer.yaml +0 -0
  95. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/agents/default/plan.yaml +0 -0
  96. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/agents/default/review.yaml +0 -0
  97. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/agents/default/security_reviewer.yaml +0 -0
  98. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/agents/default/system.md +0 -0
  99. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/agents/default/verifier.yaml +0 -0
  100. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/agents/okabe/agent.yaml +0 -0
  101. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/agentspec.py +0 -0
  102. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/app.py +0 -0
  103. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/approval_runtime/__init__.py +0 -0
  104. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/approval_runtime/models.py +0 -0
  105. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/approval_runtime/runtime.py +0 -0
  106. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/auth/__init__.py +0 -0
  107. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/auth/anthropic_direct.py +0 -0
  108. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/auth/deepseek.py +0 -0
  109. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/auth/github_feedback.py +0 -0
  110. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/auth/lm_studio.py +0 -0
  111. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/auth/minimax.py +0 -0
  112. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/auth/oauth.py +0 -0
  113. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/auth/ollama.py +0 -0
  114. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/auth/openai.py +0 -0
  115. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/auth/opencode_go.py +0 -0
  116. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/auth/openrouter.py +0 -0
  117. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/auth/platforms.py +0 -0
  118. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/background/__init__.py +0 -0
  119. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/background/agent_runner.py +0 -0
  120. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/background/ids.py +0 -0
  121. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/background/manager.py +0 -0
  122. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/background/models.py +0 -0
  123. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/background/store.py +0 -0
  124. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/background/summary.py +0 -0
  125. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/background/worker.py +0 -0
  126. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/cli/__main__.py +0 -0
  127. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/cli/_lazy_group.py +0 -0
  128. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/cli/debug.py +0 -0
  129. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/cli/export.py +0 -0
  130. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/cli/info.py +0 -0
  131. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/cli/mcp.py +0 -0
  132. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/cli/plugin.py +0 -0
  133. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/cli/review.py +0 -0
  134. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/cli/secscan.py +0 -0
  135. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/cli/security_scan.py +0 -0
  136. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/cli/skill.py +0 -0
  137. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/cli/toad.py +0 -0
  138. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/cli/update.py +0 -0
  139. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/cli/vis.py +0 -0
  140. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/cli/web.py +0 -0
  141. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/constant.py +0 -0
  142. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/events.py +0 -0
  143. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/exception.py +0 -0
  144. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/execution_profiles.py +0 -0
  145. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/extensions.py +0 -0
  146. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/file_restore.py +0 -0
  147. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/hooks/__init__.py +0 -0
  148. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/hooks/config.py +0 -0
  149. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/hooks/engine.py +0 -0
  150. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/hooks/events.py +0 -0
  151. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/hooks/runner.py +0 -0
  152. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/llm.py +0 -0
  153. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/memory/__init__.py +0 -0
  154. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/memory/consolidation.py +0 -0
  155. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/memory/harvest.py +0 -0
  156. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/memory/recall.py +0 -0
  157. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/memory/recap.py +0 -0
  158. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/memory/retriever.py +0 -0
  159. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/memory/retriever_sqlite.py +0 -0
  160. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/memory/sanitize.py +0 -0
  161. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/metadata.py +0 -0
  162. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/notifications/__init__.py +0 -0
  163. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/notifications/llm.py +0 -0
  164. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/notifications/manager.py +0 -0
  165. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/notifications/models.py +0 -0
  166. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/notifications/notifier.py +0 -0
  167. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/notifications/store.py +0 -0
  168. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/notifications/wire.py +0 -0
  169. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/plugin/__init__.py +0 -0
  170. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/plugin/manager.py +0 -0
  171. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/plugin/tool.py +0 -0
  172. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/project_memory.py +0 -0
  173. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/prompt_templates.py +0 -0
  174. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/prompts/__init__.py +0 -0
  175. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/prompts/compact.md +0 -0
  176. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/prompts/init.md +0 -0
  177. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/py.typed +0 -0
  178. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/scratchpad.py +0 -0
  179. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/session.py +0 -0
  180. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/session_fork.py +0 -0
  181. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/session_state.py +0 -0
  182. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/share.py +0 -0
  183. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skill/__init__.py +0 -0
  184. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skill/flow/__init__.py +0 -0
  185. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skill/flow/d2.py +0 -0
  186. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skill/flow/mermaid.py +0 -0
  187. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skill/lockfile.py +0 -0
  188. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skills/check-impl-against-spec/SKILL.md +0 -0
  189. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skills/create-pr/SKILL.md +0 -0
  190. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skills/diagnose-ci-failures/SKILL.md +0 -0
  191. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skills/fix-errors/SKILL.md +0 -0
  192. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skills/implement-specs/SKILL.md +0 -0
  193. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skills/pr-walkthrough/SKILL.md +0 -0
  194. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skills/reproduce-bug-report/SKILL.md +0 -0
  195. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skills/resolve-merge-conflicts/SKILL.md +0 -0
  196. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skills/review-pr/SKILL.md +0 -0
  197. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skills/skill-creator/SKILL.md +0 -0
  198. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skills/spec-driven-implementation/SKILL.md +0 -0
  199. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skills/write-product-spec/SKILL.md +0 -0
  200. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/skills/write-tech-spec/SKILL.md +0 -0
  201. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/soul/__init__.py +0 -0
  202. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/soul/agent.py +0 -0
  203. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/soul/approval.py +0 -0
  204. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/soul/btw.py +0 -0
  205. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/soul/compaction.py +0 -0
  206. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/soul/compaction_restore.py +0 -0
  207. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/soul/context.py +0 -0
  208. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/soul/denwarenji.py +0 -0
  209. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/soul/dynamic_injection.py +0 -0
  210. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/soul/dynamic_injections/__init__.py +0 -0
  211. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/soul/dynamic_injections/auto_mode.py +0 -0
  212. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/soul/dynamic_injections/plan_mode.py +0 -0
  213. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/soul/message.py +0 -0
  214. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/soul/permission.py +0 -0
  215. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/soul/pythinkersoul.py +0 -0
  216. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/soul/slash.py +0 -0
  217. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/soul/toolset.py +0 -0
  218. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/subagents/__init__.py +0 -0
  219. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/subagents/builder.py +0 -0
  220. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/subagents/core.py +0 -0
  221. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/subagents/discovery.py +0 -0
  222. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/subagents/git_context.py +0 -0
  223. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/subagents/models.py +0 -0
  224. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/subagents/output.py +0 -0
  225. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/subagents/registry.py +0 -0
  226. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/subagents/runner.py +0 -0
  227. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/subagents/store.py +0 -0
  228. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/telemetry/__init__.py +0 -0
  229. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/telemetry/config.py +0 -0
  230. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/telemetry/crash.py +0 -0
  231. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/telemetry/errors.py +0 -0
  232. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/telemetry/metrics.py +0 -0
  233. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/telemetry/otel.py +0 -0
  234. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/telemetry/sentry.py +0 -0
  235. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/telemetry/sink.py +0 -0
  236. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/AGENTS.md +0 -0
  237. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/__init__.py +0 -0
  238. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/agent/__init__.py +0 -0
  239. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/agent/description.md +0 -0
  240. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/ask_user/__init__.py +0 -0
  241. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/ask_user/description.md +0 -0
  242. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/background/__init__.py +0 -0
  243. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/background/handoff.md +0 -0
  244. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/background/input.md +0 -0
  245. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/background/list.md +0 -0
  246. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/background/output.md +0 -0
  247. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/background/stop.md +0 -0
  248. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/display.py +0 -0
  249. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/dmail/__init__.py +0 -0
  250. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/dmail/dmail.md +0 -0
  251. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/file/__init__.py +0 -0
  252. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/file/glob.md +0 -0
  253. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/file/glob.py +0 -0
  254. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/file/grep.md +0 -0
  255. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/file/grep_local.py +0 -0
  256. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/file/plan_mode.py +0 -0
  257. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/file/read.md +0 -0
  258. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/file/read.py +0 -0
  259. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/file/read_media.md +0 -0
  260. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/file/read_media.py +0 -0
  261. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/file/replace.md +0 -0
  262. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/file/replace.py +0 -0
  263. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/file/utils.py +0 -0
  264. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/file/write.md +0 -0
  265. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/file/write.py +0 -0
  266. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/memory/__init__.py +0 -0
  267. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/memory/memory.md +0 -0
  268. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/plan/__init__.py +0 -0
  269. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/plan/description.md +0 -0
  270. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/plan/enter.py +0 -0
  271. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/plan/enter_description.md +0 -0
  272. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/plan/handoff.py +0 -0
  273. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/plan/heroes.py +0 -0
  274. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/scratchpad/__init__.py +0 -0
  275. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/scratchpad/scratchpad_tool.md +0 -0
  276. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/shell/__init__.py +0 -0
  277. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/shell/bash.md +0 -0
  278. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/shell/powershell.md +0 -0
  279. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/skill/__init__.py +0 -0
  280. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/skill/description.md +0 -0
  281. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/test.py +0 -0
  282. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/think/__init__.py +0 -0
  283. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/think/think.md +0 -0
  284. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/todo/__init__.py +0 -0
  285. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/todo/set_todo_list.md +0 -0
  286. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/utils.py +0 -0
  287. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/web/__init__.py +0 -0
  288. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/web/fetch.md +0 -0
  289. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/web/fetch.py +0 -0
  290. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/web/search.md +0 -0
  291. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/tools/web/search.py +0 -0
  292. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/__init__.py +0 -0
  293. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/acp/__init__.py +0 -0
  294. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/print/__init__.py +0 -0
  295. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/print/visualize.py +0 -0
  296. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/components/__init__.py +0 -0
  297. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/components/base.py +0 -0
  298. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/components/bash_execution.py +0 -0
  299. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/components/bordered_loader.py +0 -0
  300. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/components/diff.py +0 -0
  301. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/components/dynamic_border.py +0 -0
  302. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/components/footer.py +0 -0
  303. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/components/key_hints.py +0 -0
  304. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/components/markdown.py +0 -0
  305. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/components/messages.py +0 -0
  306. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/components/panel.py +0 -0
  307. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/components/render_utils.py +0 -0
  308. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/components/settings_list.py +0 -0
  309. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/components/special_messages.py +0 -0
  310. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/components/tool_execution.py +0 -0
  311. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/console.py +0 -0
  312. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/debug.py +0 -0
  313. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/design_system.py +0 -0
  314. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/echo.py +0 -0
  315. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/export_import.py +0 -0
  316. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/glyphs.py +0 -0
  317. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/keyboard.py +0 -0
  318. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/keymap.py +0 -0
  319. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/mcp_status.py +0 -0
  320. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/model_picker.py +0 -0
  321. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/motion.py +0 -0
  322. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/oauth.py +0 -0
  323. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/placeholders.py +0 -0
  324. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/render_constants.py +0 -0
  325. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/replay.py +0 -0
  326. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/selector.py +0 -0
  327. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/selectors/__init__.py +0 -0
  328. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/selectors/extension.py +0 -0
  329. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/selectors/oauth.py +0 -0
  330. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/selectors/settings.py +0 -0
  331. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/selectors/show_images.py +0 -0
  332. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/selectors/theme.py +0 -0
  333. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/selectors/thinking.py +0 -0
  334. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/session_picker.py +0 -0
  335. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/setup.py +0 -0
  336. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/spacing.py +0 -0
  337. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/spinner_words.py +0 -0
  338. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/startup.py +0 -0
  339. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/task_browser.py +0 -0
  340. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/tips.py +0 -0
  341. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/tool_renderers/__init__.py +0 -0
  342. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/tool_renderers/_file_diff.py +0 -0
  343. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/tool_renderers/_render_utils.py +0 -0
  344. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/tool_renderers/agent.py +0 -0
  345. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/tool_renderers/ask_user.py +0 -0
  346. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/tool_renderers/background.py +0 -0
  347. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/tool_renderers/bash.py +0 -0
  348. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/tool_renderers/edit.py +0 -0
  349. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/tool_renderers/find.py +0 -0
  350. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/tool_renderers/generic.py +0 -0
  351. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/tool_renderers/grep.py +0 -0
  352. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/tool_renderers/plan.py +0 -0
  353. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/tool_renderers/read.py +0 -0
  354. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/tool_renderers/think.py +0 -0
  355. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/tool_renderers/todo.py +0 -0
  356. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/tool_renderers/web.py +0 -0
  357. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/tool_renderers/write.py +0 -0
  358. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/usage.py +0 -0
  359. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/usage_adapters/__init__.py +0 -0
  360. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/usage_adapters/anthropic_admin.py +0 -0
  361. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/usage_adapters/base.py +0 -0
  362. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/usage_adapters/deepseek.py +0 -0
  363. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/usage_adapters/minimax.py +0 -0
  364. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/usage_adapters/openai_admin.py +0 -0
  365. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/usage_adapters/openai_chatgpt.py +0 -0
  366. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/usage_adapters/opencode_go.py +0 -0
  367. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/usage_adapters/openrouter.py +0 -0
  368. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker.py +0 -0
  369. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker_ai.py +0 -0
  370. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/usage_render.py +0 -0
  371. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/visualize/__init__.py +0 -0
  372. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/visualize/_activity_tree.py +0 -0
  373. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/visualize/_approval_panel.py +0 -0
  374. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/visualize/_blocks.py +0 -0
  375. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/visualize/_btw_panel.py +0 -0
  376. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/visualize/_dialog_shell.py +0 -0
  377. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/visualize/_input_router.py +0 -0
  378. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/visualize/_interactive.py +0 -0
  379. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/visualize/_live_view.py +0 -0
  380. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/visualize/_question_panel.py +0 -0
  381. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/visualize/_transcript.py +0 -0
  382. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/shell/visualize/_worklog.py +0 -0
  383. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/theme.py +0 -0
  384. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/ui/tui_config.py +0 -0
  385. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/usage_ratelimit_cache.py +0 -0
  386. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/__init__.py +0 -0
  387. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/aiohttp.py +0 -0
  388. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/aioqueue.py +0 -0
  389. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/broadcast.py +0 -0
  390. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/changelog.py +0 -0
  391. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/clipboard.py +0 -0
  392. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/datetime.py +0 -0
  393. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/diff.py +0 -0
  394. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/editor.py +0 -0
  395. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/environment.py +0 -0
  396. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/envvar.py +0 -0
  397. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/export.py +0 -0
  398. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/file_filter.py +0 -0
  399. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/frontmatter.py +0 -0
  400. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/io.py +0 -0
  401. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/logging.py +0 -0
  402. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/media_tags.py +0 -0
  403. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/message.py +0 -0
  404. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/path.py +0 -0
  405. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/proctitle.py +0 -0
  406. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/proxy.py +0 -0
  407. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/rich/__init__.py +0 -0
  408. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/rich/columns.py +0 -0
  409. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/rich/diff_render.py +0 -0
  410. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/rich/markdown.py +0 -0
  411. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/rich/markdown_sample.md +0 -0
  412. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/rich/markdown_sample_short.md +0 -0
  413. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/rich/syntax.py +0 -0
  414. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/sensitive.py +0 -0
  415. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/server.py +0 -0
  416. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/signals.py +0 -0
  417. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/slashcmd.py +0 -0
  418. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/sleep_inhibitor.py +0 -0
  419. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/string.py +0 -0
  420. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/subprocess_env.py +0 -0
  421. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/term.py +0 -0
  422. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/utils/typing.py +0 -0
  423. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/vis/__init__.py +0 -0
  424. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/vis/api/__init__.py +0 -0
  425. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/vis/api/sessions.py +0 -0
  426. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/vis/api/statistics.py +0 -0
  427. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/vis/api/system.py +0 -0
  428. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/vis/app.py +0 -0
  429. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/vis/static/assets/highlighted-body-B3W2YXNL-CY1rtwrX.js +0 -0
  430. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/vis/static/assets/index-DSRInNnm.css +0 -0
  431. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/vis/static/assets/index-DgmTI2M_.js +0 -0
  432. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  433. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  434. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/vis/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  435. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/vis/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  436. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/vis/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  437. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/vis/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  438. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/vis/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  439. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/vis/static/index.html +0 -0
  440. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/__init__.py +0 -0
  441. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/api/__init__.py +0 -0
  442. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/api/config.py +0 -0
  443. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/api/open_in.py +0 -0
  444. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/api/sessions.py +0 -0
  445. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/app.py +0 -0
  446. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/auth.py +0 -0
  447. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/models.py +0 -0
  448. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/runner/__init__.py +0 -0
  449. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/runner/messages.py +0 -0
  450. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/runner/process.py +0 -0
  451. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/runner/worker.py +0 -0
  452. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/_headers +0 -0
  453. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  454. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  455. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  456. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  457. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  458. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  459. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  460. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  461. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  462. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  463. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  464. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  465. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  466. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  467. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  468. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  469. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  470. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  471. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  472. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  473. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  474. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  475. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  476. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  477. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  478. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  479. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  480. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  481. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  482. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  483. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  484. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  485. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  486. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  487. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  488. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  489. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  490. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  491. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  492. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  493. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  494. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  495. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  496. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  497. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  498. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  499. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  500. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  501. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  502. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  503. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  504. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  505. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  506. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  507. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  508. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  509. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  510. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  511. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  512. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/abap-BdImnpbu.js +0 -0
  513. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/actionscript-3-CfeIJUat.js +0 -0
  514. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/ada-bCR0ucgS.js +0 -0
  515. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/andromeeda-C-Jbm3Hp.js +0 -0
  516. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/angular-html-CU67Zn6k.js +0 -0
  517. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/angular-ts-BwZT4LLn.js +0 -0
  518. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/apache-Pmp26Uib.js +0 -0
  519. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/apex-D8_7TLub.js +0 -0
  520. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/apl-dKokRX4l.js +0 -0
  521. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/applescript-Co6uUVPk.js +0 -0
  522. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/ara-BRHolxvo.js +0 -0
  523. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/asciidoc-Dv7Oe6Be.js +0 -0
  524. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/asm-D_Q5rh1f.js +0 -0
  525. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/astro-CbQHKStN.js +0 -0
  526. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/aurora-x-D-2ljcwZ.js +0 -0
  527. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/awk-DMzUqQB5.js +0 -0
  528. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/ayu-dark-CmMr59Fi.js +0 -0
  529. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/ballerina-BFfxhgS-.js +0 -0
  530. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/bat-BkioyH1T.js +0 -0
  531. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/beancount-k_qm7-4y.js +0 -0
  532. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/berry-uYugtg8r.js +0 -0
  533. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/bibtex-CHM0blh-.js +0 -0
  534. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/bicep-Bmn6On1c.js +0 -0
  535. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/blade-D4QpJJKB.js +0 -0
  536. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/bsl-BO_Y6i37.js +0 -0
  537. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/c-BIGW1oBm.js +0 -0
  538. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/c3-VCDPK7BO.js +0 -0
  539. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/cadence-Bv_4Rxtq.js +0 -0
  540. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/cairo-KRGpt6FW.js +0 -0
  541. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/catppuccin-frappe-DFWUc33u.js +0 -0
  542. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/catppuccin-latte-C9dUb6Cb.js +0 -0
  543. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/catppuccin-macchiato-DQyhUUbL.js +0 -0
  544. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/catppuccin-mocha-D87Tk5Gz.js +0 -0
  545. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/clarity-D53aC0YG.js +0 -0
  546. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/clojure-P80f7IUj.js +0 -0
  547. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/cmake-D1j8_8rp.js +0 -0
  548. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/cobol-nwyudZeR.js +0 -0
  549. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/codeowners-Bp6g37R7.js +0 -0
  550. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/codeql-DsOJ9woJ.js +0 -0
  551. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/coffee-Ch7k5sss.js +0 -0
  552. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/common-lisp-Cg-RD9OK.js +0 -0
  553. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/coq-DkFqJrB1.js +0 -0
  554. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/cpp-CofmeUqb.js +0 -0
  555. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/crystal-tKQVLTB8.js +0 -0
  556. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/csharp-K5feNrxe.js +0 -0
  557. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/css-DPfMkruS.js +0 -0
  558. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/csv-fuZLfV_i.js +0 -0
  559. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/cue-D82EKSYY.js +0 -0
  560. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/cypher-COkxafJQ.js +0 -0
  561. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/d-85-TOEBH.js +0 -0
  562. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/dark-plus-C3mMm8J8.js +0 -0
  563. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/dart-CF10PKvl.js +0 -0
  564. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/dax-CEL-wOlO.js +0 -0
  565. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/defaultLocale-DX6XiGOO.js +0 -0
  566. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/desktop-BmXAJ9_W.js +0 -0
  567. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/diff-D97Zzqfu.js +0 -0
  568. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/docker-BcOcwvcX.js +0 -0
  569. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/dotenv-Da5cRb03.js +0 -0
  570. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/dracula-BzJJZx-M.js +0 -0
  571. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/dracula-soft-BXkSAIEj.js +0 -0
  572. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/dream-maker-BtqSS_iP.js +0 -0
  573. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/edge-BkV0erSs.js +0 -0
  574. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/elixir-CDX3lj18.js +0 -0
  575. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/elm-DbKCFpqz.js +0 -0
  576. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/emacs-lisp-C9XAeP06.js +0 -0
  577. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/erb-BOJIQeun.js +0 -0
  578. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/erlang-DsQrWhSR.js +0 -0
  579. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/everforest-dark-BgDCqdQA.js +0 -0
  580. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/everforest-light-C8M2exoo.js +0 -0
  581. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/fennel-BYunw83y.js +0 -0
  582. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/fish-BvzEVeQv.js +0 -0
  583. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/fluent-C4IJs8-o.js +0 -0
  584. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/fortran-fixed-form-CkoXwp7k.js +0 -0
  585. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/fortran-free-form-BxgE0vQu.js +0 -0
  586. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/fsharp-CXgrBDvD.js +0 -0
  587. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/gdresource-B7Tvp0Sc.js +0 -0
  588. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/gdscript-DTMYz4Jt.js +0 -0
  589. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/gdshader-DkwncUOv.js +0 -0
  590. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/genie-D0YGMca9.js +0 -0
  591. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/gherkin-DyxjwDmM.js +0 -0
  592. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/git-commit-F4YmCXRG.js +0 -0
  593. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/git-rebase-r7XF79zn.js +0 -0
  594. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/github-dark-DHJKELXO.js +0 -0
  595. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/github-dark-default-Cuk6v7N8.js +0 -0
  596. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/github-dark-dimmed-DH5Ifo-i.js +0 -0
  597. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -0
  598. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/github-light-DAi9KRSo.js +0 -0
  599. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/github-light-default-D7oLnXFd.js +0 -0
  600. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/github-light-high-contrast-BfjtVDDH.js +0 -0
  601. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/gleam-BspZqrRM.js +0 -0
  602. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/glimmer-js-Rg0-pVw9.js +0 -0
  603. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/glimmer-ts-U6CK756n.js +0 -0
  604. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/glsl-DplSGwfg.js +0 -0
  605. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/gn-n2N0HUVH.js +0 -0
  606. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/gnuplot-DdkO51Og.js +0 -0
  607. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/go-Dn2_MT6a.js +0 -0
  608. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/graphql-ChdNCCLP.js +0 -0
  609. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/groovy-gcz8RCvz.js +0 -0
  610. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -0
  611. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/gruvbox-dark-medium-GsRaNv29.js +0 -0
  612. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/gruvbox-dark-soft-CVdnzihN.js +0 -0
  613. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/gruvbox-light-hard-CH1njM8p.js +0 -0
  614. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/gruvbox-light-medium-DRw_LuNl.js +0 -0
  615. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/gruvbox-light-soft-hJgmCMqR.js +0 -0
  616. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/hack-CaT9iCJl.js +0 -0
  617. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/haml-B8DHNrY2.js +0 -0
  618. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/handlebars-BL8al0AC.js +0 -0
  619. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/haskell-Df6bDoY_.js +0 -0
  620. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/haxe-CzTSHFRz.js +0 -0
  621. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/hcl-BWvSN4gD.js +0 -0
  622. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/hjson-D5-asLiD.js +0 -0
  623. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/hlsl-D3lLCCz7.js +0 -0
  624. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/houston-DnULxvSX.js +0 -0
  625. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/html-GMplVEZG.js +0 -0
  626. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/html-derivative-BFtXZ54Q.js +0 -0
  627. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/http-jrhK8wxY.js +0 -0
  628. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/hurl-irOxFIW8.js +0 -0
  629. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/hxml-Bvhsp5Yf.js +0 -0
  630. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/hy-DFXneXwc.js +0 -0
  631. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/imba-DGztddWO.js +0 -0
  632. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/index-BpoLgcEt.js +0 -0
  633. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/index-CzV_vCfu.css +0 -0
  634. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/index-DI2oedCt.js +0 -0
  635. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/ini-BEwlwnbL.js +0 -0
  636. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/init-Gi6I4Gst.js +0 -0
  637. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  638. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  639. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  640. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  641. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  642. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  643. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  644. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/java-CylS5w8V.js +0 -0
  645. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/javascript-wDzz0qaB.js +0 -0
  646. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/jinja-4LBKfQ-Z.js +0 -0
  647. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/jison-wvAkD_A8.js +0 -0
  648. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/json-Cp-IABpG.js +0 -0
  649. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/json5-C9tS-k6U.js +0 -0
  650. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/jsonc-Des-eS-w.js +0 -0
  651. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/jsonl-DcaNXYhu.js +0 -0
  652. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/jsonnet-DFQXde-d.js +0 -0
  653. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/jssm-C2t-YnRu.js +0 -0
  654. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/jsx-g9-lgVsj.js +0 -0
  655. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/julia-CxzCAyBv.js +0 -0
  656. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/kanagawa-dragon-CkXjmgJE.js +0 -0
  657. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/kanagawa-lotus-CfQXZHmo.js +0 -0
  658. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/kanagawa-wave-DWedfzmr.js +0 -0
  659. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/katex-D2lIc1rk.css +0 -0
  660. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/kdl-DV7GczEv.js +0 -0
  661. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/kotlin-BdnUsdx6.js +0 -0
  662. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/kusto-DZf3V79B.js +0 -0
  663. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/laserwave-DUszq2jm.js +0 -0
  664. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/latex-B4uzh10-.js +0 -0
  665. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/lean-BZvkOJ9d.js +0 -0
  666. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/less-B1dDrJ26.js +0 -0
  667. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/light-plus-B7mTdjB0.js +0 -0
  668. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/liquid-DYVedYrR.js +0 -0
  669. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/llvm-BtvRca6l.js +0 -0
  670. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/log-2UxHyX5q.js +0 -0
  671. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/logo-BtOb2qkB.js +0 -0
  672. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/lua-BbnMAYS6.js +0 -0
  673. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/luau-C-HG3fhB.js +0 -0
  674. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/make-CHLpvVh8.js +0 -0
  675. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/markdown-Cvjx9yec.js +0 -0
  676. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/marko-DZsq8hO1.js +0 -0
  677. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/material-theme-D5KoaKCx.js +0 -0
  678. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/material-theme-darker-BfHTSMKl.js +0 -0
  679. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/material-theme-lighter-B0m2ddpp.js +0 -0
  680. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/material-theme-ocean-CyktbL80.js +0 -0
  681. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/material-theme-palenight-Csfq5Kiy.js +0 -0
  682. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/matlab-D7o27uSR.js +0 -0
  683. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/mdc-DUICxH0z.js +0 -0
  684. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/mdx-Cmh6b_Ma.js +0 -0
  685. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-B2P5VJ9v.css +0 -0
  686. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/mermaid-mWjccvbQ.js +0 -0
  687. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/min-dark-CafNBF8u.js +0 -0
  688. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/min-light-CTRr51gU.js +0 -0
  689. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/mipsasm-CKIfxQSi.js +0 -0
  690. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/mojo-B93PlW-d.js +0 -0
  691. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/monokai-D4h5O-jR.js +0 -0
  692. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/moonbit-Ba13S78F.js +0 -0
  693. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/move-Bu9oaDYs.js +0 -0
  694. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/narrat-DRg8JJMk.js +0 -0
  695. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/nextflow-BrzmwbiE.js +0 -0
  696. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/nginx-DknmC5AR.js +0 -0
  697. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/night-owl-C39BiMTA.js +0 -0
  698. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/nim-CVrawwO9.js +0 -0
  699. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/nix-CwoSXNpI.js +0 -0
  700. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/nord-Ddv68eIx.js +0 -0
  701. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/nushell-C-sUppwS.js +0 -0
  702. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/objective-c-DXmwc3jG.js +0 -0
  703. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/objective-cpp-CLxacb5B.js +0 -0
  704. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/ocaml-C0hk2d4L.js +0 -0
  705. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/one-dark-pro-DVMEJ2y_.js +0 -0
  706. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/one-light-PoHY5YXO.js +0 -0
  707. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/openscad-C4EeE6gA.js +0 -0
  708. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/ordinal-Cboi1Yqb.js +0 -0
  709. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/pascal-D93ZcfNL.js +0 -0
  710. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/perl-C0TMdlhV.js +0 -0
  711. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/php-CDn_0X-4.js +0 -0
  712. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/pkl-u5AG7uiY.js +0 -0
  713. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/plastic-3e1v2bzS.js +0 -0
  714. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/plsql-ChMvpjG-.js +0 -0
  715. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/po-BTJTHyun.js +0 -0
  716. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/poimandres-CS3Unz2-.js +0 -0
  717. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/polar-C0HS_06l.js +0 -0
  718. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/postcss-CXtECtnM.js +0 -0
  719. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/powerquery-CEu0bR-o.js +0 -0
  720. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/powershell-Dpen1YoG.js +0 -0
  721. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/prisma-Dd19v3D-.js +0 -0
  722. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/prolog-CbFg5uaA.js +0 -0
  723. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/proto-C7zT0LnQ.js +0 -0
  724. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/pug-CGlum2m_.js +0 -0
  725. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/puppet-BMWR74SV.js +0 -0
  726. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/purescript-CklMAg4u.js +0 -0
  727. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/python-B6aJPvgy.js +0 -0
  728. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/qml-3beO22l8.js +0 -0
  729. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/qmldir-C8lEn-DE.js +0 -0
  730. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/qss-IeuSbFQv.js +0 -0
  731. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/r-Dspwwk_N.js +0 -0
  732. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/racket-BqYA7rlc.js +0 -0
  733. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/raku-DXvB9xmW.js +0 -0
  734. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/razor-C1TweQQi.js +0 -0
  735. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/red-bN70gL4F.js +0 -0
  736. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/reg-C-SQnVFl.js +0 -0
  737. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/regexp-CDVJQ6XC.js +0 -0
  738. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/rel-C3B-1QV4.js +0 -0
  739. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/riscv-BM1_JUlF.js +0 -0
  740. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/rose-pine-dawn-DHQR4-dF.js +0 -0
  741. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/rose-pine-moon-D4_iv3hh.js +0 -0
  742. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/rose-pine-qdsjHGoJ.js +0 -0
  743. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/rosmsg-BJDFO7_C.js +0 -0
  744. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/rst-B0xPkSld.js +0 -0
  745. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/ruby-BvKwtOVI.js +0 -0
  746. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/rust-B1yitclQ.js +0 -0
  747. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/sas-cz2c8ADy.js +0 -0
  748. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/sass-Cj5Yp3dK.js +0 -0
  749. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/scala-C151Ov-r.js +0 -0
  750. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/scheme-C98Dy4si.js +0 -0
  751. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/scss-OYdSNvt2.js +0 -0
  752. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/sdbl-DVxCFoDh.js +0 -0
  753. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/shaderlab-Dg9Lc6iA.js +0 -0
  754. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/shellscript-Yzrsuije.js +0 -0
  755. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/shellsession-BADoaaVG.js +0 -0
  756. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/slack-dark-BthQWCQV.js +0 -0
  757. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/slack-ochin-DqwNpetd.js +0 -0
  758. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/smalltalk-BERRCDM3.js +0 -0
  759. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/snazzy-light-Bw305WKR.js +0 -0
  760. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/solarized-dark-DXbdFlpD.js +0 -0
  761. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/solarized-light-L9t79GZl.js +0 -0
  762. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/solidity-rGO070M0.js +0 -0
  763. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/soy-Brmx7dQM.js +0 -0
  764. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/sparql-rVzFXLq3.js +0 -0
  765. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/splunk-BtCnVYZw.js +0 -0
  766. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/sql-BLtJtn59.js +0 -0
  767. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/ssh-config-_ykCGR6B.js +0 -0
  768. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/stata-BH5u7GGu.js +0 -0
  769. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/stylus-BEDo0Tqx.js +0 -0
  770. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/svelte-zxCyuUbr.js +0 -0
  771. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/swift-Dg5xB15N.js +0 -0
  772. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/synthwave-84-CbfX1IO0.js +0 -0
  773. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/system-verilog-CnnmHF94.js +0 -0
  774. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/systemd-4A_iFExJ.js +0 -0
  775. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/talonscript-CkByrt1z.js +0 -0
  776. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/tasl-QIJgUcNo.js +0 -0
  777. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/tcl-dwOrl1Do.js +0 -0
  778. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/templ-W15q3VgB.js +0 -0
  779. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/terraform-BETggiCN.js +0 -0
  780. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/tex-CvyZ59Mk.js +0 -0
  781. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/tokyo-night-hegEt444.js +0 -0
  782. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/toml-vGWfd6FD.js +0 -0
  783. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/ts-tags-zn1MmPIZ.js +0 -0
  784. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/tsv-B_m7g4N7.js +0 -0
  785. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/tsx-COt5Ahok.js +0 -0
  786. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/turtle-BsS91CYL.js +0 -0
  787. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/twig-CO9l9SDP.js +0 -0
  788. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/typescript-BPQ3VLAy.js +0 -0
  789. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/typespec-BGHnOYBU.js +0 -0
  790. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/typst-DHCkPAjA.js +0 -0
  791. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/v-BcVCzyr7.js +0 -0
  792. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/vala-CsfeWuGM.js +0 -0
  793. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/vb-D17OF-Vu.js +0 -0
  794. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/verilog-BQ8w6xss.js +0 -0
  795. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/vesper-DU1UobuO.js +0 -0
  796. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/vhdl-CeAyd5Ju.js +0 -0
  797. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/viml-CJc9bBzg.js +0 -0
  798. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/vitesse-black-Bkuqu6BP.js +0 -0
  799. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/vitesse-dark-D0r3Knsf.js +0 -0
  800. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/vitesse-light-CVO1_9PV.js +0 -0
  801. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/vue-DN_0RTcg.js +0 -0
  802. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/vue-html-AaS7Mt5G.js +0 -0
  803. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/vue-vine-CQOfvN7w.js +0 -0
  804. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/vyper-CDx5xZoG.js +0 -0
  805. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/wasm-CG6Dc4jp.js +0 -0
  806. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/wasm-MzD3tlZU.js +0 -0
  807. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/wenyan-BV7otONQ.js +0 -0
  808. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/wgsl-Dx-B1_4e.js +0 -0
  809. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/wikitext-BhOHFoWU.js +0 -0
  810. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/wit-5i3qLPDT.js +0 -0
  811. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/wolfram-lXgVvXCa.js +0 -0
  812. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/xml-sdJ4AIDG.js +0 -0
  813. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/xsl-CtQFsRM5.js +0 -0
  814. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/yaml-Buea-lGh.js +0 -0
  815. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/zenscript-DVFEvuxE.js +0 -0
  816. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/assets/zig-VOosw3JB.js +0 -0
  817. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/apple-touch-icon.png +0 -0
  818. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/arctecture.webp +0 -0
  819. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/bimi-logo.svg +0 -0
  820. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/favicon.ico +0 -0
  821. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin-ext.woff2 +0 -0
  822. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin.woff2 +0 -0
  823. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin-ext.woff2 +0 -0
  824. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin.woff2 +0 -0
  825. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin-ext.woff2 +0 -0
  826. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin.woff2 +0 -0
  827. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin-ext.woff2 +0 -0
  828. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin.woff2 +0 -0
  829. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin-ext.woff2 +0 -0
  830. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin.woff2 +0 -0
  831. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin-ext.woff2 +0 -0
  832. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin.woff2 +0 -0
  833. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/icon-192.png +0 -0
  834. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/icon-512.png +0 -0
  835. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/icon.svg +0 -0
  836. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/logo.png +0 -0
  837. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/pythinker_animated.svg +0 -0
  838. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/static/brand/robots.txt +0 -0
  839. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/store/__init__.py +0 -0
  840. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/web/store/sessions.py +0 -0
  841. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/wire/__init__.py +0 -0
  842. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/wire/file.py +0 -0
  843. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/wire/jsonrpc.py +0 -0
  844. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/wire/protocol.py +0 -0
  845. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/wire/root_hub.py +0 -0
  846. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/wire/serde.py +0 -0
  847. {pythinker_code-0.22.0 → pythinker_code-0.24.0}/src/pythinker_code/wire/server.py +0 -0
  848. {pythinker_code-0.22.0 → pythinker_code-0.24.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.22.0
3
+ Version: 0.24.0
4
4
  Summary: Pythinker Code is your next CLI agent.
5
5
  Keywords: cli,agent,ai,coding-assistant,llm,claude,openai,terminal
6
6
  Author: Mohamed Elkholy
@@ -56,16 +56,16 @@ Requires-Dist: opentelemetry-api>=1.30,<2
56
56
  Requires-Dist: opentelemetry-sdk>=1.30,<2
57
57
  Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.30,<2
58
58
  Requires-Python: >=3.12
59
- Project-URL: Changelog, https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/CHANGELOG.md
60
- Project-URL: Documentation, https://github.com/mohamed-elkholy95/Pythinker-Code#readme
61
- Project-URL: Homepage, https://github.com/mohamed-elkholy95/Pythinker-Code
62
- Project-URL: Issues, https://github.com/mohamed-elkholy95/Pythinker-Code/issues
63
- Project-URL: Repository, https://github.com/mohamed-elkholy95/Pythinker-Code
59
+ Project-URL: Changelog, https://github.com/TechMatrix-labs/pythinker-code/blob/main/CHANGELOG.md
60
+ Project-URL: Documentation, https://github.com/TechMatrix-labs/pythinker-code#readme
61
+ Project-URL: Homepage, https://github.com/TechMatrix-labs/pythinker-code
62
+ Project-URL: Issues, https://github.com/TechMatrix-labs/pythinker-code/issues
63
+ Project-URL: Repository, https://github.com/TechMatrix-labs/pythinker-code
64
64
  Description-Content-Type: text/markdown
65
65
 
66
66
  <div align="center">
67
67
 
68
- # <img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/logo.png" alt="Pythinker logo" width="42" align="top"> Pythinker Code
68
+ # <img src="https://raw.githubusercontent.com/TechMatrix-labs/pythinker-code/main/docs/media/logo.png" alt="Pythinker logo" width="42" align="top"> Pythinker Code
69
69
 
70
70
  ### *Think first, then code. Your terminal-native review-first AI engineering agent.*
71
71
 
@@ -75,9 +75,9 @@ Description-Content-Type: text/markdown
75
75
  <br />
76
76
 
77
77
  [![PyPI](https://img.shields.io/pypi/v/pythinker-code?style=for-the-badge&logo=pypi&logoColor=white&color=2563eb&label=pythinker-code&cacheSeconds=60)](https://pypi.org/project/pythinker-code/)
78
- [![Python](https://img.shields.io/badge/Python-3.12%2B-3776ab?style=for-the-badge&logo=python&logoColor=white)](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/pyproject.toml)
79
- [![License: Apache-2.0](https://img.shields.io/badge/License-Apache--2.0-16a34a.svg?style=for-the-badge)](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/LICENSE)
80
- [![CI](https://img.shields.io/github/actions/workflow/status/mohamed-elkholy95/Pythinker-Code/ci-pythinker-cli.yml?branch=main&label=CI&style=for-the-badge&logo=githubactions&logoColor=white)](https://github.com/mohamed-elkholy95/Pythinker-Code/actions/workflows/ci-pythinker-cli.yml?query=branch%3Amain)
78
+ [![Python](https://img.shields.io/badge/Python-3.12%2B-3776ab?style=for-the-badge&logo=python&logoColor=white)](https://github.com/TechMatrix-labs/pythinker-code/blob/main/pyproject.toml)
79
+ [![License: Apache-2.0](https://img.shields.io/badge/License-Apache--2.0-16a34a.svg?style=for-the-badge)](https://github.com/TechMatrix-labs/pythinker-code/blob/main/LICENSE)
80
+ [![CI](https://img.shields.io/github/actions/workflow/status/TechMatrix-labs/pythinker-code/ci-pythinker-cli.yml?branch=main&label=CI&style=for-the-badge&logo=githubactions&logoColor=white)](https://github.com/TechMatrix-labs/pythinker-code/actions/workflows/ci-pythinker-cli.yml?query=branch%3Amain)
81
81
 
82
82
  [![PyPI downloads](https://assets.piptrends.com/get-last-month-downloads-badge/pythinker-code.svg)](https://piptrends.com/package/pythinker-code)
83
83
  [![Code style: Ruff](https://img.shields.io/badge/code%20style-ruff-f59e0b.svg?style=flat-square&logo=ruff&logoColor=white)](https://docs.astral.sh/ruff/)
@@ -97,7 +97,7 @@ Description-Content-Type: text/markdown
97
97
 
98
98
  <br /><br />
99
99
 
100
- <img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/pythinker-cli.gif" alt="Pythinker Code terminal demo" width="860">
100
+ <img src="https://raw.githubusercontent.com/TechMatrix-labs/pythinker-code/main/docs/media/pythinker-cli.gif" alt="Pythinker Code terminal demo" width="860">
101
101
 
102
102
  </div>
103
103
 
@@ -115,13 +115,15 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
115
115
 
116
116
  ---
117
117
 
118
- ## 🆕 What's New in 0.22.0
118
+ ## 🆕 What's New in 0.24.0
119
119
 
120
- - **Reliable update banner.** The auto-update check no longer skips when `prompt_toolkit` wraps stdout, and the 24-hour throttle is armed only after a successful round-trip transient first-launch failures no longer silence the banner for a day. The blocking pre-start prompt is gone; the bottom-bar toast is the sole update UI.
121
- - **Lighter GitHub releases polling.** Update checks send `If-None-Match` with the cached ETag and serve `304 Not Modified` from disk, so shared-NAT users no longer burn unauthenticated rate limit on every launch.
122
- - **Robust Windows upgrade flow.** The detached upgrade helper is launched as a single base64 `-EncodedCommand` PowerShell call (no more leaked quotes through `cmd.exe`), and the non-PowerShell installer fallback sets `close_fds=True` so the running `pythinker.exe` handle is no longer locked against replacement. Linux and macOS upgrades now wrap staging in `try`/`finally` so the tmpdir is removed on every exit.
120
+ - **Update prompt is now wired and highlighted.** The blocking 4-choice update menu was defined but never invoked users only ever saw the passive toast. It now runs before the auto-update path in every interactive session, and the status-line notice renders in bold bright-yellow.
121
+ - **Complete native installer `Fetch` fix.** The `.exe`, `.deb`, and `.rpm` builds now bundle both `trafilatura` and `justext` data files so `Fetch` no longer crashes with `FileNotFoundError` on stoplists in native installs. PyPI / `pip install` was unaffected.
122
+ - **Atomic "latest" release gating.** `/releases/latest` is no longer flipped until every platform asset is attached, preventing the in-app updater from serving a partially-built release.
123
+ - **Smarter `/update` command.** Gets a fresh PyPI version and verifies the platform binary exists on the release before initiating a native upgrade.
124
+ - **Repository transferred to TechMatrix-labs.** All URLs now point to `github.com/TechMatrix-labs/pythinker-code`.
123
125
 
124
- Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.22.0`, or use the native installer for your platform from the [Releases page](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest).
126
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.24.0`, or use the native installer for your platform from the [Releases page](https://github.com/TechMatrix-labs/pythinker-code/releases/latest).
125
127
 
126
128
 
127
129
  ---
@@ -199,7 +201,7 @@ Swap providers and models per-session: `--model openai/gpt-5.5`, hosted Pythinke
199
201
  > Built-in shell commands such as `cd` are not yet supported in shell command mode.
200
202
 
201
203
  <div align="center">
202
- <img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/shell-mode.gif" alt="Shell command mode demo" width="860">
204
+ <img src="https://raw.githubusercontent.com/TechMatrix-labs/pythinker-code/main/docs/media/shell-mode.gif" alt="Shell command mode demo" width="860">
203
205
  </div>
204
206
 
205
207
  ---
@@ -211,10 +213,10 @@ matches your OS — no Python, Node, or `uv` prerequisite.
211
213
 
212
214
  | Platform | Recommended install | Artifact source |
213
215
  |---|---|---|
214
- | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.22.0.exe` from [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
215
- | **<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/mohamed-elkholy95/Pythinker-Code/releases/latest) |
216
- | **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew** | `brew install mohamed-elkholy95/pythinker/pythinker-code` | auto-published Homebrew tap |
217
- | **<img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux"> — system package** | Download the `.deb` or `.rpm` for your distro below | [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
216
+ | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.24.0.exe` from [Releases](https://github.com/TechMatrix-labs/pythinker-code/releases/latest) |
217
+ | **<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/TechMatrix-labs/pythinker-code/releases/latest) |
218
+ | **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew** | `brew install TechMatrix-labs/pythinker/pythinker-code` | auto-published Homebrew tap |
219
+ | **<img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux"> — system package** | Download the `.deb` or `.rpm` for your distro below | [Releases](https://github.com/TechMatrix-labs/pythinker-code/releases/latest) |
218
220
  | **🐍 Python fallback** | `pip install pythinker-code` | PyPI |
219
221
 
220
222
  Every artifact ships with a matching `.sha256` file — verify before install on
@@ -236,7 +238,7 @@ pythinker # start the interactive TUI
236
238
 
237
239
  ### 🪟 Windows — native installer
238
240
 
239
- `PythinkerSetup-0.22.0.exe` is a signed* Inno Setup wizard. Installs per-user
241
+ `PythinkerSetup-0.24.0.exe` is a signed* Inno Setup wizard. Installs per-user
240
242
  into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
241
243
  PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
242
244
  the change. **No UAC prompt.**
@@ -247,13 +249,13 @@ irm https://pythinker.com/install.ps1 | iex
247
249
 
248
250
  # Or manually download the installer + checksum from the Releases page,
249
251
  # verify with Get-FileHash, then run:
250
- .\PythinkerSetup-0.22.0.exe
252
+ .\PythinkerSetup-0.24.0.exe
251
253
 
252
254
  # Open a fresh PowerShell
253
255
  pythinker --version
254
256
  ```
255
257
 
256
- **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.22.0.exe /ALLUSERS`
258
+ **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.24.0.exe /ALLUSERS`
257
259
  installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
258
260
 
259
261
  **Upgrade:** `pythinker update` from inside the running app — it downloads
@@ -274,7 +276,7 @@ the files and the PATH edit.
274
276
 
275
277
  ```sh
276
278
  # 1. Install
277
- brew install mohamed-elkholy95/pythinker/pythinker-code
279
+ brew install TechMatrix-labs/pythinker/pythinker-code
278
280
 
279
281
  # 2. Verify
280
282
  pythinker --version
@@ -290,9 +292,9 @@ latest version.
290
292
  **Upgrade:** `brew upgrade pythinker-code` (Homebrew packages don't
291
293
  auto-update; run this whenever you want the latest).
292
294
 
293
- **Uninstall:** `brew uninstall pythinker-code && brew untap mohamed-elkholy95/pythinker`.
295
+ **Uninstall:** `brew uninstall pythinker-code && brew untap TechMatrix-labs/pythinker`.
294
296
 
295
- > The tap repo is [mohamed-elkholy95/homebrew-pythinker](https://github.com/mohamed-elkholy95/homebrew-pythinker)
297
+ > The tap repo is [TechMatrix-labs/homebrew-pythinker](https://github.com/TechMatrix-labs/homebrew-pythinker)
296
298
  > — auto-maintained, do not hand-edit.
297
299
 
298
300
  ---
@@ -304,26 +306,26 @@ attached to every GitHub Release.
304
306
 
305
307
  ```sh
306
308
  # Debian / Ubuntu (x86_64)
307
- sudo dpkg -i pythinker-code_0.22.0_amd64.deb
309
+ sudo dpkg -i pythinker-code_0.24.0_amd64.deb
308
310
  sudo apt-get install -f # only if dpkg reports missing deps
309
311
 
310
312
  # Debian / Ubuntu (ARM64)
311
- sudo dpkg -i pythinker-code_0.22.0_arm64.deb
313
+ sudo dpkg -i pythinker-code_0.24.0_arm64.deb
312
314
 
313
315
  # Fedora / RHEL / openSUSE (x86_64)
314
- curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.22.0/pythinker-code-0.22.0.x86_64.rpm
315
- curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.22.0/pythinker-code-0.22.0.x86_64.rpm.sha256
316
- sha256sum -c pythinker-code-0.22.0.x86_64.rpm.sha256
316
+ curl -LO https://github.com/TechMatrix-labs/pythinker-code/releases/download/v0.24.0/pythinker-code-0.24.0.x86_64.rpm
317
+ curl -LO https://github.com/TechMatrix-labs/pythinker-code/releases/download/v0.24.0/pythinker-code-0.24.0.x86_64.rpm.sha256
318
+ sha256sum -c pythinker-code-0.24.0.x86_64.rpm.sha256
317
319
  # Fedora / RHEL:
318
- sudo dnf install ./pythinker-code-0.22.0.x86_64.rpm
320
+ sudo dnf install ./pythinker-code-0.24.0.x86_64.rpm
319
321
  # openSUSE:
320
- sudo zypper install ./pythinker-code-0.22.0.x86_64.rpm
322
+ sudo zypper install ./pythinker-code-0.24.0.x86_64.rpm
321
323
 
322
324
  # Fedora / RHEL (aarch64)
323
- curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.22.0/pythinker-code-0.22.0.aarch64.rpm
324
- curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.22.0/pythinker-code-0.22.0.aarch64.rpm.sha256
325
- sha256sum -c pythinker-code-0.22.0.aarch64.rpm.sha256
326
- sudo dnf install ./pythinker-code-0.22.0.aarch64.rpm
325
+ curl -LO https://github.com/TechMatrix-labs/pythinker-code/releases/download/v0.24.0/pythinker-code-0.24.0.aarch64.rpm
326
+ curl -LO https://github.com/TechMatrix-labs/pythinker-code/releases/download/v0.24.0/pythinker-code-0.24.0.aarch64.rpm.sha256
327
+ sha256sum -c pythinker-code-0.24.0.aarch64.rpm.sha256
328
+ sudo dnf install ./pythinker-code-0.24.0.aarch64.rpm
327
329
  ```
328
330
 
329
331
  Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
@@ -332,8 +334,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
332
334
  **Verify before install:**
333
335
 
334
336
  ```sh
335
- sha256sum -c pythinker-code_0.22.0_amd64.deb.sha256 # Debian/Ubuntu
336
- sha256sum -c pythinker-code-0.22.0.x86_64.rpm.sha256 # Fedora/RHEL
337
+ sha256sum -c pythinker-code_0.24.0_amd64.deb.sha256 # Debian/Ubuntu
338
+ sha256sum -c pythinker-code-0.24.0.x86_64.rpm.sha256 # Fedora/RHEL
337
339
  ```
338
340
 
339
341
  **Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
@@ -363,7 +365,7 @@ at `~/.local/bin/pythinker`.
363
365
  curl -fsSL https://pythinker.com/install.sh | bash
364
366
 
365
367
  # Pin a specific version
366
- curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.22.0
368
+ curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.24.0
367
369
 
368
370
  # Custom prefix (defaults to $HOME/.local)
369
371
  curl -fsSL https://pythinker.com/install.sh | bash -s -- --prefix /opt/pythinker
@@ -604,7 +606,7 @@ The ACP server provides:
604
606
  | 🔄 **Hot model swap** | Change models for a running ACP session |
605
607
 
606
608
  <div align="center">
607
- <img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/acp-integration.gif" alt="ACP IDE integration demo" width="860">
609
+ <img src="https://raw.githubusercontent.com/TechMatrix-labs/pythinker-code/main/docs/media/acp-integration.gif" alt="ACP IDE integration demo" width="860">
608
610
  </div>
609
611
 
610
612
  ---
@@ -679,7 +681,7 @@ Pythinker is a small, extensible runtime — not a monolith. Build on it.
679
681
  ## 🏗️ Architecture
680
682
 
681
683
  <div align="center">
682
- <img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/Architecture.webp" alt="Pythinker Code architecture diagram" width="860">
684
+ <img src="https://raw.githubusercontent.com/TechMatrix-labs/pythinker-code/main/docs/media/Architecture.webp" alt="Pythinker Code architecture diagram" width="860">
683
685
  </div>
684
686
 
685
687
  ---
@@ -759,8 +761,8 @@ are used automatically unless you turn telemetry off.
759
761
  ### 🏁 Prepare the workspace
760
762
 
761
763
  ```sh
762
- git clone https://github.com/mohamed-elkholy95/Pythinker-Code.git
763
- cd Pythinker-Code
764
+ git clone https://github.com/TechMatrix-labs/pythinker-code.git
765
+ cd pythinker-code
764
766
  make prepare
765
767
  ```
766
768
 
@@ -840,9 +842,9 @@ pythinker-code/
840
842
 
841
843
  Contributions are warmly welcome — bug reports, PRs, plugins, skills, and docs all help.
842
844
 
843
- - 📖 Start with [`CONTRIBUTING.md`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/CONTRIBUTING.md)
844
- - 🔐 See [`SECURITY.md`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/SECURITY.md) for responsible disclosure
845
- - 📜 Skim [`AGENTS.md`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/AGENTS.md) for the agent design notes
845
+ - 📖 Start with [`CONTRIBUTING.md`](https://github.com/TechMatrix-labs/pythinker-code/blob/main/CONTRIBUTING.md)
846
+ - 🔐 See [`SECURITY.md`](https://github.com/TechMatrix-labs/pythinker-code/blob/main/SECURITY.md) for responsible disclosure
847
+ - 📜 Skim [`AGENTS.md`](https://github.com/TechMatrix-labs/pythinker-code/blob/main/AGENTS.md) for the agent design notes
846
848
 
847
849
  If Pythinker helps you, **a ⭐ on GitHub goes a long way.**
848
850
 
@@ -850,7 +852,7 @@ If Pythinker helps you, **a ⭐ on GitHub goes a long way.**
850
852
 
851
853
  ## 📜 License
852
854
 
853
- Distributed under the **Apache-2.0 License**. See [`LICENSE`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/LICENSE) for the full text and [`NOTICE`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/NOTICE) for attributions.
855
+ Distributed under the **Apache-2.0 License**. See [`LICENSE`](https://github.com/TechMatrix-labs/pythinker-code/blob/main/LICENSE) for the full text and [`NOTICE`](https://github.com/TechMatrix-labs/pythinker-code/blob/main/NOTICE) for attributions.
854
856
 
855
857
  <br />
856
858
 
@@ -860,7 +862,7 @@ Distributed under the **Apache-2.0 License**. See [`LICENSE`](https://github.com
860
862
 
861
863
  [🌐 pythinker.com](https://pythinker.com) &nbsp;·&nbsp;
862
864
  [📦 PyPI](https://pypi.org/project/pythinker-code/) &nbsp;·&nbsp;
863
- [🐙 GitHub](https://github.com/mohamed-elkholy95/Pythinker-Code) &nbsp;·&nbsp;
865
+ [🐙 GitHub](https://github.com/TechMatrix-labs/pythinker-code) &nbsp;·&nbsp;
864
866
  [🧩 ACP](https://github.com/agentclientprotocol/agent-client-protocol) &nbsp;·&nbsp;
865
867
  [🔌 MCP](https://modelcontextprotocol.io/)
866
868
 
@@ -1,6 +1,6 @@
1
1
  <div align="center">
2
2
 
3
- # <img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/logo.png" alt="Pythinker logo" width="42" align="top"> Pythinker Code
3
+ # <img src="https://raw.githubusercontent.com/TechMatrix-labs/pythinker-code/main/docs/media/logo.png" alt="Pythinker logo" width="42" align="top"> Pythinker Code
4
4
 
5
5
  ### *Think first, then code. Your terminal-native review-first AI engineering agent.*
6
6
 
@@ -10,9 +10,9 @@
10
10
  <br />
11
11
 
12
12
  [![PyPI](https://img.shields.io/pypi/v/pythinker-code?style=for-the-badge&logo=pypi&logoColor=white&color=2563eb&label=pythinker-code&cacheSeconds=60)](https://pypi.org/project/pythinker-code/)
13
- [![Python](https://img.shields.io/badge/Python-3.12%2B-3776ab?style=for-the-badge&logo=python&logoColor=white)](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/pyproject.toml)
14
- [![License: Apache-2.0](https://img.shields.io/badge/License-Apache--2.0-16a34a.svg?style=for-the-badge)](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/LICENSE)
15
- [![CI](https://img.shields.io/github/actions/workflow/status/mohamed-elkholy95/Pythinker-Code/ci-pythinker-cli.yml?branch=main&label=CI&style=for-the-badge&logo=githubactions&logoColor=white)](https://github.com/mohamed-elkholy95/Pythinker-Code/actions/workflows/ci-pythinker-cli.yml?query=branch%3Amain)
13
+ [![Python](https://img.shields.io/badge/Python-3.12%2B-3776ab?style=for-the-badge&logo=python&logoColor=white)](https://github.com/TechMatrix-labs/pythinker-code/blob/main/pyproject.toml)
14
+ [![License: Apache-2.0](https://img.shields.io/badge/License-Apache--2.0-16a34a.svg?style=for-the-badge)](https://github.com/TechMatrix-labs/pythinker-code/blob/main/LICENSE)
15
+ [![CI](https://img.shields.io/github/actions/workflow/status/TechMatrix-labs/pythinker-code/ci-pythinker-cli.yml?branch=main&label=CI&style=for-the-badge&logo=githubactions&logoColor=white)](https://github.com/TechMatrix-labs/pythinker-code/actions/workflows/ci-pythinker-cli.yml?query=branch%3Amain)
16
16
 
17
17
  [![PyPI downloads](https://assets.piptrends.com/get-last-month-downloads-badge/pythinker-code.svg)](https://piptrends.com/package/pythinker-code)
18
18
  [![Code style: Ruff](https://img.shields.io/badge/code%20style-ruff-f59e0b.svg?style=flat-square&logo=ruff&logoColor=white)](https://docs.astral.sh/ruff/)
@@ -32,7 +32,7 @@
32
32
 
33
33
  <br /><br />
34
34
 
35
- <img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/pythinker-cli.gif" alt="Pythinker Code terminal demo" width="860">
35
+ <img src="https://raw.githubusercontent.com/TechMatrix-labs/pythinker-code/main/docs/media/pythinker-cli.gif" alt="Pythinker Code terminal demo" width="860">
36
36
 
37
37
  </div>
38
38
 
@@ -50,13 +50,15 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
50
50
 
51
51
  ---
52
52
 
53
- ## 🆕 What's New in 0.22.0
53
+ ## 🆕 What's New in 0.24.0
54
54
 
55
- - **Reliable update banner.** The auto-update check no longer skips when `prompt_toolkit` wraps stdout, and the 24-hour throttle is armed only after a successful round-trip transient first-launch failures no longer silence the banner for a day. The blocking pre-start prompt is gone; the bottom-bar toast is the sole update UI.
56
- - **Lighter GitHub releases polling.** Update checks send `If-None-Match` with the cached ETag and serve `304 Not Modified` from disk, so shared-NAT users no longer burn unauthenticated rate limit on every launch.
57
- - **Robust Windows upgrade flow.** The detached upgrade helper is launched as a single base64 `-EncodedCommand` PowerShell call (no more leaked quotes through `cmd.exe`), and the non-PowerShell installer fallback sets `close_fds=True` so the running `pythinker.exe` handle is no longer locked against replacement. Linux and macOS upgrades now wrap staging in `try`/`finally` so the tmpdir is removed on every exit.
55
+ - **Update prompt is now wired and highlighted.** The blocking 4-choice update menu was defined but never invoked users only ever saw the passive toast. It now runs before the auto-update path in every interactive session, and the status-line notice renders in bold bright-yellow.
56
+ - **Complete native installer `Fetch` fix.** The `.exe`, `.deb`, and `.rpm` builds now bundle both `trafilatura` and `justext` data files so `Fetch` no longer crashes with `FileNotFoundError` on stoplists in native installs. PyPI / `pip install` was unaffected.
57
+ - **Atomic "latest" release gating.** `/releases/latest` is no longer flipped until every platform asset is attached, preventing the in-app updater from serving a partially-built release.
58
+ - **Smarter `/update` command.** Gets a fresh PyPI version and verifies the platform binary exists on the release before initiating a native upgrade.
59
+ - **Repository transferred to TechMatrix-labs.** All URLs now point to `github.com/TechMatrix-labs/pythinker-code`.
58
60
 
59
- Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.22.0`, or use the native installer for your platform from the [Releases page](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest).
61
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.24.0`, or use the native installer for your platform from the [Releases page](https://github.com/TechMatrix-labs/pythinker-code/releases/latest).
60
62
 
61
63
 
62
64
  ---
@@ -134,7 +136,7 @@ Swap providers and models per-session: `--model openai/gpt-5.5`, hosted Pythinke
134
136
  > Built-in shell commands such as `cd` are not yet supported in shell command mode.
135
137
 
136
138
  <div align="center">
137
- <img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/shell-mode.gif" alt="Shell command mode demo" width="860">
139
+ <img src="https://raw.githubusercontent.com/TechMatrix-labs/pythinker-code/main/docs/media/shell-mode.gif" alt="Shell command mode demo" width="860">
138
140
  </div>
139
141
 
140
142
  ---
@@ -146,10 +148,10 @@ matches your OS — no Python, Node, or `uv` prerequisite.
146
148
 
147
149
  | Platform | Recommended install | Artifact source |
148
150
  |---|---|---|
149
- | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.22.0.exe` from [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
150
- | **<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/mohamed-elkholy95/Pythinker-Code/releases/latest) |
151
- | **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew** | `brew install mohamed-elkholy95/pythinker/pythinker-code` | auto-published Homebrew tap |
152
- | **<img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux"> — system package** | Download the `.deb` or `.rpm` for your distro below | [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
151
+ | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.24.0.exe` from [Releases](https://github.com/TechMatrix-labs/pythinker-code/releases/latest) |
152
+ | **<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/TechMatrix-labs/pythinker-code/releases/latest) |
153
+ | **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew** | `brew install TechMatrix-labs/pythinker/pythinker-code` | auto-published Homebrew tap |
154
+ | **<img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux"> — system package** | Download the `.deb` or `.rpm` for your distro below | [Releases](https://github.com/TechMatrix-labs/pythinker-code/releases/latest) |
153
155
  | **🐍 Python fallback** | `pip install pythinker-code` | PyPI |
154
156
 
155
157
  Every artifact ships with a matching `.sha256` file — verify before install on
@@ -171,7 +173,7 @@ pythinker # start the interactive TUI
171
173
 
172
174
  ### 🪟 Windows — native installer
173
175
 
174
- `PythinkerSetup-0.22.0.exe` is a signed* Inno Setup wizard. Installs per-user
176
+ `PythinkerSetup-0.24.0.exe` is a signed* Inno Setup wizard. Installs per-user
175
177
  into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
176
178
  PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
177
179
  the change. **No UAC prompt.**
@@ -182,13 +184,13 @@ irm https://pythinker.com/install.ps1 | iex
182
184
 
183
185
  # Or manually download the installer + checksum from the Releases page,
184
186
  # verify with Get-FileHash, then run:
185
- .\PythinkerSetup-0.22.0.exe
187
+ .\PythinkerSetup-0.24.0.exe
186
188
 
187
189
  # Open a fresh PowerShell
188
190
  pythinker --version
189
191
  ```
190
192
 
191
- **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.22.0.exe /ALLUSERS`
193
+ **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.24.0.exe /ALLUSERS`
192
194
  installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
193
195
 
194
196
  **Upgrade:** `pythinker update` from inside the running app — it downloads
@@ -209,7 +211,7 @@ the files and the PATH edit.
209
211
 
210
212
  ```sh
211
213
  # 1. Install
212
- brew install mohamed-elkholy95/pythinker/pythinker-code
214
+ brew install TechMatrix-labs/pythinker/pythinker-code
213
215
 
214
216
  # 2. Verify
215
217
  pythinker --version
@@ -225,9 +227,9 @@ latest version.
225
227
  **Upgrade:** `brew upgrade pythinker-code` (Homebrew packages don't
226
228
  auto-update; run this whenever you want the latest).
227
229
 
228
- **Uninstall:** `brew uninstall pythinker-code && brew untap mohamed-elkholy95/pythinker`.
230
+ **Uninstall:** `brew uninstall pythinker-code && brew untap TechMatrix-labs/pythinker`.
229
231
 
230
- > The tap repo is [mohamed-elkholy95/homebrew-pythinker](https://github.com/mohamed-elkholy95/homebrew-pythinker)
232
+ > The tap repo is [TechMatrix-labs/homebrew-pythinker](https://github.com/TechMatrix-labs/homebrew-pythinker)
231
233
  > — auto-maintained, do not hand-edit.
232
234
 
233
235
  ---
@@ -239,26 +241,26 @@ attached to every GitHub Release.
239
241
 
240
242
  ```sh
241
243
  # Debian / Ubuntu (x86_64)
242
- sudo dpkg -i pythinker-code_0.22.0_amd64.deb
244
+ sudo dpkg -i pythinker-code_0.24.0_amd64.deb
243
245
  sudo apt-get install -f # only if dpkg reports missing deps
244
246
 
245
247
  # Debian / Ubuntu (ARM64)
246
- sudo dpkg -i pythinker-code_0.22.0_arm64.deb
248
+ sudo dpkg -i pythinker-code_0.24.0_arm64.deb
247
249
 
248
250
  # Fedora / RHEL / openSUSE (x86_64)
249
- curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.22.0/pythinker-code-0.22.0.x86_64.rpm
250
- curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.22.0/pythinker-code-0.22.0.x86_64.rpm.sha256
251
- sha256sum -c pythinker-code-0.22.0.x86_64.rpm.sha256
251
+ curl -LO https://github.com/TechMatrix-labs/pythinker-code/releases/download/v0.24.0/pythinker-code-0.24.0.x86_64.rpm
252
+ curl -LO https://github.com/TechMatrix-labs/pythinker-code/releases/download/v0.24.0/pythinker-code-0.24.0.x86_64.rpm.sha256
253
+ sha256sum -c pythinker-code-0.24.0.x86_64.rpm.sha256
252
254
  # Fedora / RHEL:
253
- sudo dnf install ./pythinker-code-0.22.0.x86_64.rpm
255
+ sudo dnf install ./pythinker-code-0.24.0.x86_64.rpm
254
256
  # openSUSE:
255
- sudo zypper install ./pythinker-code-0.22.0.x86_64.rpm
257
+ sudo zypper install ./pythinker-code-0.24.0.x86_64.rpm
256
258
 
257
259
  # Fedora / RHEL (aarch64)
258
- curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.22.0/pythinker-code-0.22.0.aarch64.rpm
259
- curl -LO https://github.com/mohamed-elkholy95/Pythinker-Code/releases/download/v0.22.0/pythinker-code-0.22.0.aarch64.rpm.sha256
260
- sha256sum -c pythinker-code-0.22.0.aarch64.rpm.sha256
261
- sudo dnf install ./pythinker-code-0.22.0.aarch64.rpm
260
+ curl -LO https://github.com/TechMatrix-labs/pythinker-code/releases/download/v0.24.0/pythinker-code-0.24.0.aarch64.rpm
261
+ curl -LO https://github.com/TechMatrix-labs/pythinker-code/releases/download/v0.24.0/pythinker-code-0.24.0.aarch64.rpm.sha256
262
+ sha256sum -c pythinker-code-0.24.0.aarch64.rpm.sha256
263
+ sudo dnf install ./pythinker-code-0.24.0.aarch64.rpm
262
264
  ```
263
265
 
264
266
  Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
@@ -267,8 +269,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
267
269
  **Verify before install:**
268
270
 
269
271
  ```sh
270
- sha256sum -c pythinker-code_0.22.0_amd64.deb.sha256 # Debian/Ubuntu
271
- sha256sum -c pythinker-code-0.22.0.x86_64.rpm.sha256 # Fedora/RHEL
272
+ sha256sum -c pythinker-code_0.24.0_amd64.deb.sha256 # Debian/Ubuntu
273
+ sha256sum -c pythinker-code-0.24.0.x86_64.rpm.sha256 # Fedora/RHEL
272
274
  ```
273
275
 
274
276
  **Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
@@ -298,7 +300,7 @@ at `~/.local/bin/pythinker`.
298
300
  curl -fsSL https://pythinker.com/install.sh | bash
299
301
 
300
302
  # Pin a specific version
301
- curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.22.0
303
+ curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.24.0
302
304
 
303
305
  # Custom prefix (defaults to $HOME/.local)
304
306
  curl -fsSL https://pythinker.com/install.sh | bash -s -- --prefix /opt/pythinker
@@ -539,7 +541,7 @@ The ACP server provides:
539
541
  | 🔄 **Hot model swap** | Change models for a running ACP session |
540
542
 
541
543
  <div align="center">
542
- <img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/acp-integration.gif" alt="ACP IDE integration demo" width="860">
544
+ <img src="https://raw.githubusercontent.com/TechMatrix-labs/pythinker-code/main/docs/media/acp-integration.gif" alt="ACP IDE integration demo" width="860">
543
545
  </div>
544
546
 
545
547
  ---
@@ -614,7 +616,7 @@ Pythinker is a small, extensible runtime — not a monolith. Build on it.
614
616
  ## 🏗️ Architecture
615
617
 
616
618
  <div align="center">
617
- <img src="https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/docs/media/Architecture.webp" alt="Pythinker Code architecture diagram" width="860">
619
+ <img src="https://raw.githubusercontent.com/TechMatrix-labs/pythinker-code/main/docs/media/Architecture.webp" alt="Pythinker Code architecture diagram" width="860">
618
620
  </div>
619
621
 
620
622
  ---
@@ -694,8 +696,8 @@ are used automatically unless you turn telemetry off.
694
696
  ### 🏁 Prepare the workspace
695
697
 
696
698
  ```sh
697
- git clone https://github.com/mohamed-elkholy95/Pythinker-Code.git
698
- cd Pythinker-Code
699
+ git clone https://github.com/TechMatrix-labs/pythinker-code.git
700
+ cd pythinker-code
699
701
  make prepare
700
702
  ```
701
703
 
@@ -775,9 +777,9 @@ pythinker-code/
775
777
 
776
778
  Contributions are warmly welcome — bug reports, PRs, plugins, skills, and docs all help.
777
779
 
778
- - 📖 Start with [`CONTRIBUTING.md`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/CONTRIBUTING.md)
779
- - 🔐 See [`SECURITY.md`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/SECURITY.md) for responsible disclosure
780
- - 📜 Skim [`AGENTS.md`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/AGENTS.md) for the agent design notes
780
+ - 📖 Start with [`CONTRIBUTING.md`](https://github.com/TechMatrix-labs/pythinker-code/blob/main/CONTRIBUTING.md)
781
+ - 🔐 See [`SECURITY.md`](https://github.com/TechMatrix-labs/pythinker-code/blob/main/SECURITY.md) for responsible disclosure
782
+ - 📜 Skim [`AGENTS.md`](https://github.com/TechMatrix-labs/pythinker-code/blob/main/AGENTS.md) for the agent design notes
781
783
 
782
784
  If Pythinker helps you, **a ⭐ on GitHub goes a long way.**
783
785
 
@@ -785,7 +787,7 @@ If Pythinker helps you, **a ⭐ on GitHub goes a long way.**
785
787
 
786
788
  ## 📜 License
787
789
 
788
- Distributed under the **Apache-2.0 License**. See [`LICENSE`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/LICENSE) for the full text and [`NOTICE`](https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/NOTICE) for attributions.
790
+ Distributed under the **Apache-2.0 License**. See [`LICENSE`](https://github.com/TechMatrix-labs/pythinker-code/blob/main/LICENSE) for the full text and [`NOTICE`](https://github.com/TechMatrix-labs/pythinker-code/blob/main/NOTICE) for attributions.
789
791
 
790
792
  <br />
791
793
 
@@ -795,7 +797,7 @@ Distributed under the **Apache-2.0 License**. See [`LICENSE`](https://github.com
795
797
 
796
798
  [🌐 pythinker.com](https://pythinker.com) &nbsp;·&nbsp;
797
799
  [📦 PyPI](https://pypi.org/project/pythinker-code/) &nbsp;·&nbsp;
798
- [🐙 GitHub](https://github.com/mohamed-elkholy95/Pythinker-Code) &nbsp;·&nbsp;
800
+ [🐙 GitHub](https://github.com/TechMatrix-labs/pythinker-code) &nbsp;·&nbsp;
799
801
  [🧩 ACP](https://github.com/agentclientprotocol/agent-client-protocol) &nbsp;·&nbsp;
800
802
  [🔌 MCP](https://modelcontextprotocol.io/)
801
803
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "pythinker-code"
3
- version = "0.22.0"
3
+ version = "0.24.0"
4
4
  description = "Pythinker Code is your next CLI agent."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -102,11 +102,11 @@ pythinker = "pythinker_code.__main__:main"
102
102
  pythinker-code = "pythinker_code.__main__:main"
103
103
 
104
104
  [project.urls]
105
- Homepage = "https://github.com/mohamed-elkholy95/Pythinker-Code"
106
- Repository = "https://github.com/mohamed-elkholy95/Pythinker-Code"
107
- Issues = "https://github.com/mohamed-elkholy95/Pythinker-Code/issues"
108
- Changelog = "https://github.com/mohamed-elkholy95/Pythinker-Code/blob/main/CHANGELOG.md"
109
- Documentation = "https://github.com/mohamed-elkholy95/Pythinker-Code#readme"
105
+ Homepage = "https://github.com/TechMatrix-labs/pythinker-code"
106
+ Repository = "https://github.com/TechMatrix-labs/pythinker-code"
107
+ Issues = "https://github.com/TechMatrix-labs/pythinker-code/issues"
108
+ Changelog = "https://github.com/TechMatrix-labs/pythinker-code/blob/main/CHANGELOG.md"
109
+ Documentation = "https://github.com/TechMatrix-labs/pythinker-code#readme"
110
110
 
111
111
  [tool.ruff]
112
112
  line-length = 100
@@ -15,6 +15,26 @@ GitHub Releases page; `0.8.0` is the new starting line.
15
15
 
16
16
  ## Unreleased
17
17
 
18
+ ## 0.24.0 (2026-05-28)
19
+
20
+ ### What changed in this release
21
+
22
+ - **Update prompt is now wired and highlighted.** The blocking 4-choice update menu (Update now / Skip / Dismiss / Exit) was defined but never invoked at shell startup — users only ever saw the passive bottom-bar toast. It now runs before the auto-update path in every interactive session. The persistent status-line update notice also renders in bold bright-yellow so it is harder to miss.
23
+ - **Complete native installer `Fetch` fix.** The 0.23.0 release bundled trafilatura's data files but missed `justext`'s stoplists directory, so the `Fetch` tool still crashed with `FileNotFoundError: ./_MEIxxxx/justext/stoplists` on `.exe`, `.deb`, and `.rpm` installs. All three installer specs now bundle both `trafilatura` and `justext` data files. PyPI / `pip install` was unaffected.
24
+ - **Atomic "latest" release gating.** The GitHub Release is no longer marked "latest" until every platform asset (4 archives, 1 `.exe`, 4 `.deb`/`.rpm`) is attached. A dispatch workflow polls for completeness before flipping the flag, so `/releases/latest` and the in-app updater no longer serve a partially-built release during the publish window.
25
+ - **Smarter `/update` command.** `run_update_prompt` now routes through `do_update(check_only=True)` to get a fresh PyPI version before showing the update modal, and verifies that the expected binary asset for your platform exists on the GitHub Release before initiating a native upgrade.
26
+ - **Repository transferred to TechMatrix-labs.** All GitHub URLs, install script references, and CI configuration now point to `github.com/TechMatrix-labs/pythinker-code`.
27
+
28
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.24.0`, or use the native installer for your OS (see the README install table).
29
+
30
+ ## 0.23.0 (2026-05-28)
31
+
32
+ ### What changed in this release
33
+
34
+ - **Fetch tool works again in native installers.** The PyInstaller-built `pythinker` binaries (Homebrew, `.deb`, `.rpm`, `PythinkerSetup-*.exe`) shipped without `trafilatura/settings.cfg`, so the first `Fetch` call against any non-empty page crashed with `No option 'min_extracted_size' in section: 'DEFAULT'` as trafilatura tried to read an empty `ConfigParser`. The PyInstaller datas tuple now collects trafilatura's data files, so the bundled binary's `Fetch` tool extracts page content as expected. PyPI / `pip` installs were unaffected.
35
+
36
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.23.0`, or use the native installer for your OS (see the README install table).
37
+
18
38
  ## 0.22.0 (2026-05-28)
19
39
 
20
40
  ### What changed in this release
@@ -116,8 +136,8 @@ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.14.0`,
116
136
 
117
137
  ### What changed in this release
118
138
 
119
- - **Native installers for macOS and Linux.** `brew install mohamed-elkholy95/pythinker/pythinker-code` (Homebrew tap) covers both macOS (Intel + Apple Silicon) and Linux brew installs from a single auto-generated formula. Debian/Ubuntu users get `pythinker-code_x.y.z_<arch>.deb` and Fedora/RHEL/openSUSE users get `pythinker-code-x.y.z.<arch>.rpm`, both attached to every GitHub Release for `x86_64` and `aarch64`. Together with the Windows `PythinkerSetup-x.y.z.exe` shipped in 0.12.0, Pythinker now ships native installers for every supported platform — no Python, Node, or `uv` prerequisite.
120
- - **Cross-OS curl-bash native installer.** `curl -fsSL https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install-native.sh | bash` detects your OS + arch, downloads the matching PyInstaller-frozen tarball from the latest Release, verifies its SHA-256, and lands the binary at `~/.local/bin/pythinker`. Supports `linux-x86_64`, `linux-aarch64`, and `macos-arm64`. Honors `--version`, `--prefix`, and `NO_COLOR`.
139
+ - **Native installers for macOS and Linux.** `brew install TechMatrix-labs/pythinker/pythinker-code` (Homebrew tap) covers both macOS (Intel + Apple Silicon) and Linux brew installs from a single auto-generated formula. Debian/Ubuntu users get `pythinker-code_x.y.z_<arch>.deb` and Fedora/RHEL/openSUSE users get `pythinker-code-x.y.z.<arch>.rpm`, both attached to every GitHub Release for `x86_64` and `aarch64`. Together with the Windows `PythinkerSetup-x.y.z.exe` shipped in 0.12.0, Pythinker now ships native installers for every supported platform — no Python, Node, or `uv` prerequisite.
140
+ - **Cross-OS curl-bash native installer.** `curl -fsSL https://raw.githubusercontent.com/TechMatrix-labs/pythinker-code/main/scripts/install-native.sh | bash` detects your OS + arch, downloads the matching PyInstaller-frozen tarball from the latest Release, verifies its SHA-256, and lands the binary at `~/.local/bin/pythinker`. Supports `linux-x86_64`, `linux-aarch64`, and `macos-arm64`. Honors `--version`, `--prefix`, and `NO_COLOR`.
121
141
  - **Homebrew tap auto-published on every release.** A new `.github/workflows/homebrew-tap.yml` waits for the PyPI publish to land, runs an in-tree formula generator (replaces the unmaintained `homebrew-pypi-poet` — see release notes for the why), and pushes `Formula/pythinker-code.rb` to the `homebrew-pythinker` tap repo. 132 transitive deps are enumerated automatically — no hand-curation per release.
122
142
  - **Tag-triggered Linux package pipeline.** A new `.github/workflows/linux-installer.yml` matrix-builds `.deb` and `.rpm` for `x86_64` and `aarch64` (the latter via QEMU on `ubuntu-latest`), then uploads all six artifacts to the GitHub Release via `softprops/action-gh-release@v2`.
123
143
  - **Frozen-binary data-files fix.** The PyInstaller specs for both the Windows and Linux pipelines now call `collect_data_files(pkg, include_py_files=False)` per package, so `pythinker_code/prompts/*.md`, `agents/default/*.yaml`, `tools/*/description.md`, `skills/*/SKILL.md`, and similar package resources are bundled into `_internal/`. Without this fix the frozen binary crashed the first time it tried to load `init.md` or an agent yaml. The Windows installer that shipped in 0.12.0 is affected; users on that build should upgrade to 0.13.0.
@@ -54,8 +54,8 @@ Commands:
54
54
  vis Run Pythinker Agent Tracing Visualizer.
55
55
  web Run Pythinker CLI web interface.
56
56
 
57
- Documentation: https://mohamed-elkholy95.github.io/Pythinker-Code/
58
- LLM friendly version: https://mohamed-elkholy95.github.io/Pythinker-Code/llms.txt
57
+ Documentation: https://techmatrix-labs.github.io/pythinker-code/
58
+ LLM friendly version: https://techmatrix-labs.github.io/pythinker-code/llms.txt
59
59
  """
60
60
 
61
61
 
@@ -157,8 +157,8 @@ LazySubcommandGroup = import_module(f"{__name__}._lazy_group").LazySubcommandGro
157
157
  cli = typer.Typer(
158
158
  cls=LazySubcommandGroup,
159
159
  epilog="""\b\
160
- Documentation: https://mohamed-elkholy95.github.io/Pythinker-Code/\n
161
- LLM friendly version: https://mohamed-elkholy95.github.io/Pythinker-Code/llms.txt""",
160
+ Documentation: https://techmatrix-labs.github.io/pythinker-code/\n
161
+ LLM friendly version: https://techmatrix-labs.github.io/pythinker-code/llms.txt""",
162
162
  add_completion=False,
163
163
  context_settings={"help_option_names": ["-h", "--help"]},
164
164
  help="Pythinker, your next CLI agent.",