pythinker-code 0.11.0__tar.gz → 0.13.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 (802) hide show
  1. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/PKG-INFO +117 -28
  2. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/README.md +116 -27
  3. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/pyproject.toml +1 -1
  4. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/CHANGELOG.md +24 -0
  5. pythinker_code-0.13.0/src/pythinker_code/native.py +38 -0
  6. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/design_system.py +2 -2
  7. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/echo.py +3 -3
  8. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/motion.py +18 -7
  9. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/update.py +151 -1
  10. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/theme.py +7 -7
  11. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/_baseUniq-C8Vm-s5G.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/_baseUniq-GA9iHBCA.js +1 -1
  12. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/arc-Bl8TmgUm.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/arc-gZsnPwO2.js +1 -1
  13. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-BVGBY1Zr.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-De9R8C4O.js +1 -1
  14. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-B_v49l_U.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-Ba1pNYg1.js +1 -1
  15. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-DXl05v-V.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-CfDxaCio.js +1 -1
  16. pythinker_code-0.13.0/src/pythinker_code/web/static/assets/channel-DqUWNFW2.js +1 -0
  17. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-DpqTdhHZ.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-BiC5GeSy.js +1 -1
  18. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-BfJzLxfB.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-D6KcpRaK.js +1 -1
  19. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-C9tHMiZl.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-DQT-M2Ri.js +1 -1
  20. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-DEGEEj0Z.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-lBjGLMy9.js +1 -1
  21. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-CQ1KKOHk.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-CUCm6jYE.js +1 -1
  22. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-B4mTpmM0.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-CpsKX8Gv.js +1 -1
  23. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-CDOrj-r7.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-CtBe7xAX.js +1 -1
  24. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-QhgZOUxZ.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-B1HdUVbC.js +1 -1
  25. pythinker_code-0.13.0/src/pythinker_code/web/static/assets/classDiagram-2ON5EDUG-XRBRYS_C.js +1 -0
  26. pythinker_code-0.13.0/src/pythinker_code/web/static/assets/classDiagram-v2-WZHVMYZB-XRBRYS_C.js +1 -0
  27. pythinker_code-0.13.0/src/pythinker_code/web/static/assets/clone-CWCNc-WR.js +1 -0
  28. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-B_uMiJXe.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-Nauf-Dns.js +1 -1
  29. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-BY9LVGid.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-BzwfIOkj.js +1 -1
  30. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/cytoscape.esm-BGbOmFRB.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/cytoscape.esm-DgYGkf8s.js +1 -1
  31. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-sur5p5NW.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-CcObcdCu.js +1 -1
  32. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-CrF8_xNX.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-CnkBDMfa.js +1 -1
  33. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-CsFFEfnc.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-BytO-i_3.js +1 -1
  34. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-DoC68K_b.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-bjqHpsrQ.js +1 -1
  35. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-Di7dyqAd.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-CJQQtgOx.js +1 -1
  36. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-CycbaIsk.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-CH8l9Ex2.js +1 -1
  37. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-CQi9ssAv.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-yzCc3Zgk.js +1 -1
  38. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-DN5v_FG9.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-CLpNg80l.js +1 -1
  39. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/graph-C2ZsTy1B.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/graph-BKnezX3S.js +1 -1
  40. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/index-C36KD0lP.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/index-BWNhTxyw.js +1 -1
  41. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/index-C1bFMExm.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/index-B_Fm5OEh.js +2 -2
  42. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/index-Dtq-M8w-.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/index-CaRChC6H.js +1 -1
  43. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-BsSIH3Qo.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-FyO5FoYg.js +1 -1
  44. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-CRuVO9aw.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-D7Jn9SfT.js +1 -1
  45. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-R4QyOuvf.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-wL8zlaLe.js +1 -1
  46. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/layout-CpWvp0O7.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/layout-CCwuOGWj.js +1 -1
  47. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/linear-DUulTEqk.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/linear-DgSlbeag.js +1 -1
  48. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-DDAXDNOk.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-DsnP_6Ye.js +7 -7
  49. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/mermaid.core-Do7HhOuC.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/mermaid.core-CXHCA8HV.js +5 -5
  50. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/min-BiFWtQ8R.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/min-BRsY-oqe.js +1 -1
  51. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-CYFQjmK7.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-B64Ljx8w.js +1 -1
  52. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-Dwg66_J9.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-C3ejBxx6.js +1 -1
  53. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-Dx_gyC0O.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-DRf2jFv5.js +1 -1
  54. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-yKyOcalB.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-CSCNoh6-.js +1 -1
  55. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-D68f_psT.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-ichGSxO0.js +1 -1
  56. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-C1hB4zgM.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-bIWhFPmb.js +1 -1
  57. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-6XdAmwqs.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-WxQjAvgp.js +1 -1
  58. pythinker_code-0.13.0/src/pythinker_code/web/static/assets/stateDiagram-v2-4FDKWEC3-CuAJMEkh.js +1 -0
  59. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-CJG-qhm_.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-CrlTiAiF.js +1 -1
  60. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-YaGyt4VQ.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-CWWhPD7D.js +1 -1
  61. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-Zr6-qP0W.js → pythinker_code-0.13.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-Bqs5RaDP.js +1 -1
  62. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/index.html +1 -1
  63. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/channel-BYPABu6z.js +0 -1
  64. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/classDiagram-2ON5EDUG-Cp1WyJdn.js +0 -1
  65. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/classDiagram-v2-WZHVMYZB-Cp1WyJdn.js +0 -1
  66. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/clone-gYdnM1ik.js +0 -1
  67. pythinker_code-0.11.0/src/pythinker_code/web/static/assets/stateDiagram-v2-4FDKWEC3-DFQqtI5_.js +0 -1
  68. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/LICENSE +0 -0
  69. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/NOTICE +0 -0
  70. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/__init__.py +0 -0
  71. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/__main__.py +0 -0
  72. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/acp/AGENTS.md +0 -0
  73. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/acp/__init__.py +0 -0
  74. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/acp/convert.py +0 -0
  75. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/acp/host.py +0 -0
  76. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/acp/mcp.py +0 -0
  77. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/acp/server.py +0 -0
  78. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/acp/session.py +0 -0
  79. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/acp/tools.py +0 -0
  80. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/acp/types.py +0 -0
  81. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/acp/version.py +0 -0
  82. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/agents/default/agent.yaml +0 -0
  83. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/agents/default/code_reviewer.yaml +0 -0
  84. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/agents/default/coder.yaml +0 -0
  85. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/agents/default/debugger.yaml +0 -0
  86. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/agents/default/explore.yaml +0 -0
  87. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/agents/default/implementer.yaml +0 -0
  88. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/agents/default/plan.yaml +0 -0
  89. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/agents/default/review.yaml +0 -0
  90. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/agents/default/security_reviewer.yaml +0 -0
  91. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/agents/default/system.md +0 -0
  92. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/agents/default/verifier.yaml +0 -0
  93. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/agents/okabe/agent.yaml +0 -0
  94. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/agentspec.py +0 -0
  95. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/app.py +0 -0
  96. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/approval_runtime/__init__.py +0 -0
  97. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/approval_runtime/models.py +0 -0
  98. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/approval_runtime/runtime.py +0 -0
  99. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/auth/__init__.py +0 -0
  100. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/auth/anthropic_direct.py +0 -0
  101. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/auth/deepseek.py +0 -0
  102. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/auth/github_feedback.py +0 -0
  103. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/auth/lm_studio.py +0 -0
  104. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/auth/minimax.py +0 -0
  105. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/auth/oauth.py +0 -0
  106. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/auth/ollama.py +0 -0
  107. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/auth/openai.py +0 -0
  108. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/auth/opencode_go.py +0 -0
  109. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/auth/openrouter.py +0 -0
  110. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/auth/platforms.py +0 -0
  111. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/background/__init__.py +0 -0
  112. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/background/agent_runner.py +0 -0
  113. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/background/ids.py +0 -0
  114. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/background/manager.py +0 -0
  115. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/background/models.py +0 -0
  116. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/background/store.py +0 -0
  117. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/background/summary.py +0 -0
  118. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/background/worker.py +0 -0
  119. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/cli/__init__.py +0 -0
  120. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/cli/__main__.py +0 -0
  121. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/cli/_lazy_group.py +0 -0
  122. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/cli/debug.py +0 -0
  123. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/cli/export.py +0 -0
  124. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/cli/info.py +0 -0
  125. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/cli/mcp.py +0 -0
  126. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/cli/plugin.py +0 -0
  127. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/cli/review.py +0 -0
  128. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/cli/secscan.py +0 -0
  129. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/cli/security_scan.py +0 -0
  130. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/cli/toad.py +0 -0
  131. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/cli/update.py +0 -0
  132. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/cli/vis.py +0 -0
  133. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/cli/web.py +0 -0
  134. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/config.py +0 -0
  135. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/constant.py +0 -0
  136. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/events.py +0 -0
  137. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/exception.py +0 -0
  138. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/extensions.py +0 -0
  139. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/file_restore.py +0 -0
  140. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/hooks/__init__.py +0 -0
  141. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/hooks/config.py +0 -0
  142. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/hooks/engine.py +0 -0
  143. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/hooks/events.py +0 -0
  144. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/hooks/runner.py +0 -0
  145. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/llm.py +0 -0
  146. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/metadata.py +0 -0
  147. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/notifications/__init__.py +0 -0
  148. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/notifications/llm.py +0 -0
  149. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/notifications/manager.py +0 -0
  150. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/notifications/models.py +0 -0
  151. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/notifications/notifier.py +0 -0
  152. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/notifications/store.py +0 -0
  153. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/notifications/wire.py +0 -0
  154. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/plugin/__init__.py +0 -0
  155. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/plugin/manager.py +0 -0
  156. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/plugin/tool.py +0 -0
  157. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/prompt_templates.py +0 -0
  158. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/prompts/__init__.py +0 -0
  159. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/prompts/compact.md +0 -0
  160. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/prompts/init.md +0 -0
  161. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/py.typed +0 -0
  162. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/session.py +0 -0
  163. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/session_fork.py +0 -0
  164. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/session_state.py +0 -0
  165. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/share.py +0 -0
  166. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/skill/__init__.py +0 -0
  167. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/skill/flow/__init__.py +0 -0
  168. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/skill/flow/d2.py +0 -0
  169. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/skill/flow/mermaid.py +0 -0
  170. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/skills/pythinker-code-help/SKILL.md +0 -0
  171. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/skills/skill-creator/SKILL.md +0 -0
  172. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/soul/__init__.py +0 -0
  173. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/soul/agent.py +0 -0
  174. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/soul/approval.py +0 -0
  175. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/soul/btw.py +0 -0
  176. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/soul/compaction.py +0 -0
  177. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/soul/context.py +0 -0
  178. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/soul/denwarenji.py +0 -0
  179. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/soul/dynamic_injection.py +0 -0
  180. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/soul/dynamic_injections/__init__.py +0 -0
  181. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/soul/dynamic_injections/auto_mode.py +0 -0
  182. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/soul/dynamic_injections/plan_mode.py +0 -0
  183. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/soul/message.py +0 -0
  184. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/soul/permission.py +0 -0
  185. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/soul/pythinkersoul.py +0 -0
  186. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/soul/slash.py +0 -0
  187. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/soul/toolset.py +0 -0
  188. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/subagents/__init__.py +0 -0
  189. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/subagents/builder.py +0 -0
  190. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/subagents/core.py +0 -0
  191. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/subagents/discovery.py +0 -0
  192. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/subagents/git_context.py +0 -0
  193. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/subagents/models.py +0 -0
  194. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/subagents/output.py +0 -0
  195. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/subagents/registry.py +0 -0
  196. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/subagents/runner.py +0 -0
  197. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/subagents/store.py +0 -0
  198. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/telemetry/__init__.py +0 -0
  199. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/telemetry/config.py +0 -0
  200. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/telemetry/crash.py +0 -0
  201. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/telemetry/errors.py +0 -0
  202. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/telemetry/metrics.py +0 -0
  203. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/telemetry/otel.py +0 -0
  204. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/telemetry/sentry.py +0 -0
  205. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/telemetry/sink.py +0 -0
  206. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/AGENTS.md +0 -0
  207. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/__init__.py +0 -0
  208. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/agent/__init__.py +0 -0
  209. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/agent/description.md +0 -0
  210. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/ask_user/__init__.py +0 -0
  211. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/ask_user/description.md +0 -0
  212. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/background/__init__.py +0 -0
  213. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/background/list.md +0 -0
  214. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/background/output.md +0 -0
  215. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/background/stop.md +0 -0
  216. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/display.py +0 -0
  217. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/dmail/__init__.py +0 -0
  218. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/dmail/dmail.md +0 -0
  219. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/file/__init__.py +0 -0
  220. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/file/glob.md +0 -0
  221. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/file/glob.py +0 -0
  222. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/file/grep.md +0 -0
  223. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/file/grep_local.py +0 -0
  224. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/file/plan_mode.py +0 -0
  225. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/file/read.md +0 -0
  226. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/file/read.py +0 -0
  227. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/file/read_media.md +0 -0
  228. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/file/read_media.py +0 -0
  229. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/file/replace.md +0 -0
  230. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/file/replace.py +0 -0
  231. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/file/utils.py +0 -0
  232. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/file/write.md +0 -0
  233. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/file/write.py +0 -0
  234. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/plan/__init__.py +0 -0
  235. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/plan/description.md +0 -0
  236. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/plan/enter.py +0 -0
  237. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/plan/enter_description.md +0 -0
  238. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/plan/handoff.py +0 -0
  239. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/plan/heroes.py +0 -0
  240. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/shell/__init__.py +0 -0
  241. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/shell/bash.md +0 -0
  242. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/shell/powershell.md +0 -0
  243. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/test.py +0 -0
  244. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/think/__init__.py +0 -0
  245. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/think/think.md +0 -0
  246. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/todo/__init__.py +0 -0
  247. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/todo/set_todo_list.md +0 -0
  248. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/utils.py +0 -0
  249. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/web/__init__.py +0 -0
  250. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/web/fetch.md +0 -0
  251. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/web/fetch.py +0 -0
  252. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/web/search.md +0 -0
  253. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/tools/web/search.py +0 -0
  254. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/__init__.py +0 -0
  255. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/acp/__init__.py +0 -0
  256. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/print/__init__.py +0 -0
  257. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/print/visualize.py +0 -0
  258. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/__init__.py +0 -0
  259. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/components/__init__.py +0 -0
  260. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/components/base.py +0 -0
  261. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/components/bash_execution.py +0 -0
  262. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/components/bordered_loader.py +0 -0
  263. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/components/diff.py +0 -0
  264. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/components/footer.py +0 -0
  265. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/components/key_hints.py +0 -0
  266. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/components/markdown.py +0 -0
  267. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/components/messages.py +0 -0
  268. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/components/render_utils.py +0 -0
  269. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/components/settings_list.py +0 -0
  270. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/components/special_messages.py +0 -0
  271. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/components/tool_execution.py +0 -0
  272. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/console.py +0 -0
  273. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/debug.py +0 -0
  274. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/export_import.py +0 -0
  275. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/keyboard.py +0 -0
  276. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/keymap.py +0 -0
  277. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/mcp_status.py +0 -0
  278. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/model_picker.py +0 -0
  279. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/oauth.py +0 -0
  280. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/placeholders.py +0 -0
  281. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/prompt.py +0 -0
  282. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/replay.py +0 -0
  283. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/selector.py +0 -0
  284. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/selectors/__init__.py +0 -0
  285. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/selectors/extension.py +0 -0
  286. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/selectors/oauth.py +0 -0
  287. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/selectors/settings.py +0 -0
  288. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/selectors/show_images.py +0 -0
  289. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/selectors/theme.py +0 -0
  290. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/selectors/thinking.py +0 -0
  291. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/session_picker.py +0 -0
  292. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/setup.py +0 -0
  293. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/slash.py +0 -0
  294. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/spinner_words.py +0 -0
  295. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/startup.py +0 -0
  296. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/task_browser.py +0 -0
  297. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/tool_renderers/__init__.py +0 -0
  298. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/tool_renderers/_render_utils.py +0 -0
  299. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/tool_renderers/agent.py +0 -0
  300. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/tool_renderers/ask_user.py +0 -0
  301. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/tool_renderers/background.py +0 -0
  302. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/tool_renderers/bash.py +0 -0
  303. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/tool_renderers/edit.py +0 -0
  304. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/tool_renderers/find.py +0 -0
  305. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/tool_renderers/generic.py +0 -0
  306. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/tool_renderers/grep.py +0 -0
  307. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/tool_renderers/plan.py +0 -0
  308. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/tool_renderers/read.py +0 -0
  309. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/tool_renderers/think.py +0 -0
  310. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/tool_renderers/todo.py +0 -0
  311. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/tool_renderers/web.py +0 -0
  312. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/tool_renderers/write.py +0 -0
  313. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/usage.py +0 -0
  314. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/usage_adapters/__init__.py +0 -0
  315. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/usage_adapters/anthropic_admin.py +0 -0
  316. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/usage_adapters/base.py +0 -0
  317. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/usage_adapters/deepseek.py +0 -0
  318. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/usage_adapters/minimax.py +0 -0
  319. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/usage_adapters/openai_admin.py +0 -0
  320. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/usage_adapters/openai_chatgpt.py +0 -0
  321. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/usage_adapters/opencode_go.py +0 -0
  322. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/usage_adapters/openrouter.py +0 -0
  323. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker.py +0 -0
  324. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker_ai.py +0 -0
  325. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/usage_render.py +0 -0
  326. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/visualize/__init__.py +0 -0
  327. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/visualize/_activity_tree.py +0 -0
  328. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/visualize/_approval_panel.py +0 -0
  329. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/visualize/_blocks.py +0 -0
  330. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/visualize/_btw_panel.py +0 -0
  331. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/visualize/_dialog_shell.py +0 -0
  332. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/visualize/_input_router.py +0 -0
  333. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/visualize/_interactive.py +0 -0
  334. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/visualize/_live_view.py +0 -0
  335. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/visualize/_question_panel.py +0 -0
  336. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/visualize/_transcript.py +0 -0
  337. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/shell/visualize/_worklog.py +0 -0
  338. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/ui/tui_config.py +0 -0
  339. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/usage_ratelimit_cache.py +0 -0
  340. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/__init__.py +0 -0
  341. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/aiohttp.py +0 -0
  342. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/aioqueue.py +0 -0
  343. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/broadcast.py +0 -0
  344. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/changelog.py +0 -0
  345. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/clipboard.py +0 -0
  346. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/datetime.py +0 -0
  347. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/diff.py +0 -0
  348. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/editor.py +0 -0
  349. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/environment.py +0 -0
  350. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/envvar.py +0 -0
  351. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/export.py +0 -0
  352. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/file_filter.py +0 -0
  353. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/frontmatter.py +0 -0
  354. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/io.py +0 -0
  355. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/logging.py +0 -0
  356. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/media_tags.py +0 -0
  357. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/message.py +0 -0
  358. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/path.py +0 -0
  359. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/proctitle.py +0 -0
  360. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/proxy.py +0 -0
  361. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/pyinstaller.py +0 -0
  362. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/rich/__init__.py +0 -0
  363. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/rich/columns.py +0 -0
  364. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/rich/diff_render.py +0 -0
  365. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/rich/markdown.py +0 -0
  366. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/rich/markdown_sample.md +0 -0
  367. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/rich/markdown_sample_short.md +0 -0
  368. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/rich/syntax.py +0 -0
  369. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/sensitive.py +0 -0
  370. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/server.py +0 -0
  371. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/signals.py +0 -0
  372. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/slashcmd.py +0 -0
  373. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/string.py +0 -0
  374. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/subprocess_env.py +0 -0
  375. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/term.py +0 -0
  376. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/utils/typing.py +0 -0
  377. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/vis/__init__.py +0 -0
  378. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/vis/api/__init__.py +0 -0
  379. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/vis/api/sessions.py +0 -0
  380. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/vis/api/statistics.py +0 -0
  381. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/vis/api/system.py +0 -0
  382. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/vis/app.py +0 -0
  383. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/vis/static/assets/highlighted-body-B3W2YXNL-CY1rtwrX.js +0 -0
  384. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/vis/static/assets/index-DSRInNnm.css +0 -0
  385. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/vis/static/assets/index-DgmTI2M_.js +0 -0
  386. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  387. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  388. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/vis/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  389. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/vis/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  390. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/vis/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  391. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/vis/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  392. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/vis/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  393. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/vis/static/index.html +0 -0
  394. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/__init__.py +0 -0
  395. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/api/__init__.py +0 -0
  396. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/api/config.py +0 -0
  397. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/api/open_in.py +0 -0
  398. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/api/sessions.py +0 -0
  399. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/app.py +0 -0
  400. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/auth.py +0 -0
  401. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/models.py +0 -0
  402. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/runner/__init__.py +0 -0
  403. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/runner/messages.py +0 -0
  404. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/runner/process.py +0 -0
  405. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/runner/worker.py +0 -0
  406. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  407. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  408. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  409. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  410. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  411. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  412. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  413. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  414. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  415. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  416. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  417. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  418. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  419. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  420. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  421. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  422. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  423. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  424. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  425. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  426. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  427. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  428. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  429. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  430. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  431. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  432. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  433. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  434. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  435. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  436. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  437. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  438. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  439. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  440. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  441. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  442. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  443. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  444. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  445. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  446. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  447. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  448. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  449. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  450. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  451. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  452. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  453. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  454. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  455. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  456. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  457. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  458. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  459. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  460. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  461. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  462. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  463. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  464. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  465. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/abap-BdImnpbu.js +0 -0
  466. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/actionscript-3-CfeIJUat.js +0 -0
  467. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/ada-bCR0ucgS.js +0 -0
  468. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/andromeeda-C-Jbm3Hp.js +0 -0
  469. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/angular-html-CU67Zn6k.js +0 -0
  470. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/angular-ts-BwZT4LLn.js +0 -0
  471. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/apache-Pmp26Uib.js +0 -0
  472. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/apex-D8_7TLub.js +0 -0
  473. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/apl-dKokRX4l.js +0 -0
  474. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/applescript-Co6uUVPk.js +0 -0
  475. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/ara-BRHolxvo.js +0 -0
  476. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/asciidoc-Dv7Oe6Be.js +0 -0
  477. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/asm-D_Q5rh1f.js +0 -0
  478. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/astro-CbQHKStN.js +0 -0
  479. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/aurora-x-D-2ljcwZ.js +0 -0
  480. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/awk-DMzUqQB5.js +0 -0
  481. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/ayu-dark-CmMr59Fi.js +0 -0
  482. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/ballerina-BFfxhgS-.js +0 -0
  483. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/bat-BkioyH1T.js +0 -0
  484. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/beancount-k_qm7-4y.js +0 -0
  485. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/berry-uYugtg8r.js +0 -0
  486. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/bibtex-CHM0blh-.js +0 -0
  487. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/bicep-Bmn6On1c.js +0 -0
  488. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/blade-D4QpJJKB.js +0 -0
  489. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/bsl-BO_Y6i37.js +0 -0
  490. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/c-BIGW1oBm.js +0 -0
  491. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/c3-VCDPK7BO.js +0 -0
  492. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/cadence-Bv_4Rxtq.js +0 -0
  493. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/cairo-KRGpt6FW.js +0 -0
  494. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/catppuccin-frappe-DFWUc33u.js +0 -0
  495. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/catppuccin-latte-C9dUb6Cb.js +0 -0
  496. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/catppuccin-macchiato-DQyhUUbL.js +0 -0
  497. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/catppuccin-mocha-D87Tk5Gz.js +0 -0
  498. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/clarity-D53aC0YG.js +0 -0
  499. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/clojure-P80f7IUj.js +0 -0
  500. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/cmake-D1j8_8rp.js +0 -0
  501. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/cobol-nwyudZeR.js +0 -0
  502. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/codeowners-Bp6g37R7.js +0 -0
  503. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/codeql-DsOJ9woJ.js +0 -0
  504. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/coffee-Ch7k5sss.js +0 -0
  505. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/common-lisp-Cg-RD9OK.js +0 -0
  506. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/coq-DkFqJrB1.js +0 -0
  507. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/cpp-CofmeUqb.js +0 -0
  508. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/crystal-tKQVLTB8.js +0 -0
  509. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/csharp-K5feNrxe.js +0 -0
  510. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/css-DPfMkruS.js +0 -0
  511. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/csv-fuZLfV_i.js +0 -0
  512. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/cue-D82EKSYY.js +0 -0
  513. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/cypher-COkxafJQ.js +0 -0
  514. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/d-85-TOEBH.js +0 -0
  515. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/dark-plus-C3mMm8J8.js +0 -0
  516. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/dart-CF10PKvl.js +0 -0
  517. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/dax-CEL-wOlO.js +0 -0
  518. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/defaultLocale-DX6XiGOO.js +0 -0
  519. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/desktop-BmXAJ9_W.js +0 -0
  520. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/diff-D97Zzqfu.js +0 -0
  521. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/docker-BcOcwvcX.js +0 -0
  522. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/dotenv-Da5cRb03.js +0 -0
  523. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/dracula-BzJJZx-M.js +0 -0
  524. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/dracula-soft-BXkSAIEj.js +0 -0
  525. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/dream-maker-BtqSS_iP.js +0 -0
  526. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/edge-BkV0erSs.js +0 -0
  527. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/elixir-CDX3lj18.js +0 -0
  528. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/elm-DbKCFpqz.js +0 -0
  529. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/emacs-lisp-C9XAeP06.js +0 -0
  530. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/erb-BOJIQeun.js +0 -0
  531. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/erlang-DsQrWhSR.js +0 -0
  532. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/everforest-dark-BgDCqdQA.js +0 -0
  533. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/everforest-light-C8M2exoo.js +0 -0
  534. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/fennel-BYunw83y.js +0 -0
  535. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/fish-BvzEVeQv.js +0 -0
  536. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/fluent-C4IJs8-o.js +0 -0
  537. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/fortran-fixed-form-CkoXwp7k.js +0 -0
  538. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/fortran-free-form-BxgE0vQu.js +0 -0
  539. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/fsharp-CXgrBDvD.js +0 -0
  540. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/gdresource-B7Tvp0Sc.js +0 -0
  541. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/gdscript-DTMYz4Jt.js +0 -0
  542. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/gdshader-DkwncUOv.js +0 -0
  543. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/genie-D0YGMca9.js +0 -0
  544. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/gherkin-DyxjwDmM.js +0 -0
  545. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/git-commit-F4YmCXRG.js +0 -0
  546. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/git-rebase-r7XF79zn.js +0 -0
  547. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/github-dark-DHJKELXO.js +0 -0
  548. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/github-dark-default-Cuk6v7N8.js +0 -0
  549. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/github-dark-dimmed-DH5Ifo-i.js +0 -0
  550. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -0
  551. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/github-light-DAi9KRSo.js +0 -0
  552. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/github-light-default-D7oLnXFd.js +0 -0
  553. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/github-light-high-contrast-BfjtVDDH.js +0 -0
  554. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/gleam-BspZqrRM.js +0 -0
  555. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/glimmer-js-Rg0-pVw9.js +0 -0
  556. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/glimmer-ts-U6CK756n.js +0 -0
  557. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/glsl-DplSGwfg.js +0 -0
  558. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/gn-n2N0HUVH.js +0 -0
  559. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/gnuplot-DdkO51Og.js +0 -0
  560. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/go-Dn2_MT6a.js +0 -0
  561. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/graphql-ChdNCCLP.js +0 -0
  562. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/groovy-gcz8RCvz.js +0 -0
  563. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -0
  564. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/gruvbox-dark-medium-GsRaNv29.js +0 -0
  565. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/gruvbox-dark-soft-CVdnzihN.js +0 -0
  566. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/gruvbox-light-hard-CH1njM8p.js +0 -0
  567. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/gruvbox-light-medium-DRw_LuNl.js +0 -0
  568. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/gruvbox-light-soft-hJgmCMqR.js +0 -0
  569. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/hack-CaT9iCJl.js +0 -0
  570. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/haml-B8DHNrY2.js +0 -0
  571. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/handlebars-BL8al0AC.js +0 -0
  572. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/haskell-Df6bDoY_.js +0 -0
  573. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/haxe-CzTSHFRz.js +0 -0
  574. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/hcl-BWvSN4gD.js +0 -0
  575. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/hjson-D5-asLiD.js +0 -0
  576. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/hlsl-D3lLCCz7.js +0 -0
  577. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/houston-DnULxvSX.js +0 -0
  578. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/html-GMplVEZG.js +0 -0
  579. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/html-derivative-BFtXZ54Q.js +0 -0
  580. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/http-jrhK8wxY.js +0 -0
  581. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/hurl-irOxFIW8.js +0 -0
  582. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/hxml-Bvhsp5Yf.js +0 -0
  583. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/hy-DFXneXwc.js +0 -0
  584. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/imba-DGztddWO.js +0 -0
  585. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/index-BpoLgcEt.js +0 -0
  586. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/index-CzV_vCfu.css +0 -0
  587. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/index-DI2oedCt.js +0 -0
  588. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/ini-BEwlwnbL.js +0 -0
  589. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/init-Gi6I4Gst.js +0 -0
  590. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  591. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  592. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  593. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  594. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  595. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  596. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  597. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/java-CylS5w8V.js +0 -0
  598. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/javascript-wDzz0qaB.js +0 -0
  599. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/jinja-4LBKfQ-Z.js +0 -0
  600. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/jison-wvAkD_A8.js +0 -0
  601. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/json-Cp-IABpG.js +0 -0
  602. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/json5-C9tS-k6U.js +0 -0
  603. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/jsonc-Des-eS-w.js +0 -0
  604. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/jsonl-DcaNXYhu.js +0 -0
  605. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/jsonnet-DFQXde-d.js +0 -0
  606. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/jssm-C2t-YnRu.js +0 -0
  607. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/jsx-g9-lgVsj.js +0 -0
  608. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/julia-CxzCAyBv.js +0 -0
  609. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/kanagawa-dragon-CkXjmgJE.js +0 -0
  610. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/kanagawa-lotus-CfQXZHmo.js +0 -0
  611. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/kanagawa-wave-DWedfzmr.js +0 -0
  612. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/katex-D2lIc1rk.css +0 -0
  613. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/kdl-DV7GczEv.js +0 -0
  614. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/kotlin-BdnUsdx6.js +0 -0
  615. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/kusto-DZf3V79B.js +0 -0
  616. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/laserwave-DUszq2jm.js +0 -0
  617. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/latex-B4uzh10-.js +0 -0
  618. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/lean-BZvkOJ9d.js +0 -0
  619. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/less-B1dDrJ26.js +0 -0
  620. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/light-plus-B7mTdjB0.js +0 -0
  621. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/liquid-DYVedYrR.js +0 -0
  622. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/llvm-BtvRca6l.js +0 -0
  623. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/log-2UxHyX5q.js +0 -0
  624. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/logo-BtOb2qkB.js +0 -0
  625. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/lua-BbnMAYS6.js +0 -0
  626. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/luau-C-HG3fhB.js +0 -0
  627. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/make-CHLpvVh8.js +0 -0
  628. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/markdown-Cvjx9yec.js +0 -0
  629. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/marko-DZsq8hO1.js +0 -0
  630. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/material-theme-D5KoaKCx.js +0 -0
  631. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/material-theme-darker-BfHTSMKl.js +0 -0
  632. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/material-theme-lighter-B0m2ddpp.js +0 -0
  633. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/material-theme-ocean-CyktbL80.js +0 -0
  634. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/material-theme-palenight-Csfq5Kiy.js +0 -0
  635. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/matlab-D7o27uSR.js +0 -0
  636. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/mdc-DUICxH0z.js +0 -0
  637. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/mdx-Cmh6b_Ma.js +0 -0
  638. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-B2P5VJ9v.css +0 -0
  639. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/mermaid-mWjccvbQ.js +0 -0
  640. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/min-dark-CafNBF8u.js +0 -0
  641. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/min-light-CTRr51gU.js +0 -0
  642. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/mipsasm-CKIfxQSi.js +0 -0
  643. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/mojo-B93PlW-d.js +0 -0
  644. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/monokai-D4h5O-jR.js +0 -0
  645. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/moonbit-Ba13S78F.js +0 -0
  646. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/move-Bu9oaDYs.js +0 -0
  647. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/narrat-DRg8JJMk.js +0 -0
  648. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/nextflow-BrzmwbiE.js +0 -0
  649. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/nginx-DknmC5AR.js +0 -0
  650. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/night-owl-C39BiMTA.js +0 -0
  651. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/nim-CVrawwO9.js +0 -0
  652. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/nix-CwoSXNpI.js +0 -0
  653. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/nord-Ddv68eIx.js +0 -0
  654. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/nushell-C-sUppwS.js +0 -0
  655. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/objective-c-DXmwc3jG.js +0 -0
  656. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/objective-cpp-CLxacb5B.js +0 -0
  657. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/ocaml-C0hk2d4L.js +0 -0
  658. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/one-dark-pro-DVMEJ2y_.js +0 -0
  659. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/one-light-PoHY5YXO.js +0 -0
  660. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/openscad-C4EeE6gA.js +0 -0
  661. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/ordinal-Cboi1Yqb.js +0 -0
  662. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/pascal-D93ZcfNL.js +0 -0
  663. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/perl-C0TMdlhV.js +0 -0
  664. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/php-CDn_0X-4.js +0 -0
  665. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/pkl-u5AG7uiY.js +0 -0
  666. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/plastic-3e1v2bzS.js +0 -0
  667. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/plsql-ChMvpjG-.js +0 -0
  668. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/po-BTJTHyun.js +0 -0
  669. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/poimandres-CS3Unz2-.js +0 -0
  670. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/polar-C0HS_06l.js +0 -0
  671. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/postcss-CXtECtnM.js +0 -0
  672. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/powerquery-CEu0bR-o.js +0 -0
  673. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/powershell-Dpen1YoG.js +0 -0
  674. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/prisma-Dd19v3D-.js +0 -0
  675. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/prolog-CbFg5uaA.js +0 -0
  676. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/proto-C7zT0LnQ.js +0 -0
  677. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/pug-CGlum2m_.js +0 -0
  678. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/puppet-BMWR74SV.js +0 -0
  679. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/purescript-CklMAg4u.js +0 -0
  680. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/python-B6aJPvgy.js +0 -0
  681. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/qml-3beO22l8.js +0 -0
  682. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/qmldir-C8lEn-DE.js +0 -0
  683. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/qss-IeuSbFQv.js +0 -0
  684. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/r-Dspwwk_N.js +0 -0
  685. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/racket-BqYA7rlc.js +0 -0
  686. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/raku-DXvB9xmW.js +0 -0
  687. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/razor-C1TweQQi.js +0 -0
  688. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/red-bN70gL4F.js +0 -0
  689. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/reg-C-SQnVFl.js +0 -0
  690. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/regexp-CDVJQ6XC.js +0 -0
  691. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/rel-C3B-1QV4.js +0 -0
  692. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/riscv-BM1_JUlF.js +0 -0
  693. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/rose-pine-dawn-DHQR4-dF.js +0 -0
  694. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/rose-pine-moon-D4_iv3hh.js +0 -0
  695. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/rose-pine-qdsjHGoJ.js +0 -0
  696. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/rosmsg-BJDFO7_C.js +0 -0
  697. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/rst-B0xPkSld.js +0 -0
  698. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/ruby-BvKwtOVI.js +0 -0
  699. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/rust-B1yitclQ.js +0 -0
  700. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/sas-cz2c8ADy.js +0 -0
  701. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/sass-Cj5Yp3dK.js +0 -0
  702. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/scala-C151Ov-r.js +0 -0
  703. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/scheme-C98Dy4si.js +0 -0
  704. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/scss-OYdSNvt2.js +0 -0
  705. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/sdbl-DVxCFoDh.js +0 -0
  706. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/shaderlab-Dg9Lc6iA.js +0 -0
  707. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/shellscript-Yzrsuije.js +0 -0
  708. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/shellsession-BADoaaVG.js +0 -0
  709. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/slack-dark-BthQWCQV.js +0 -0
  710. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/slack-ochin-DqwNpetd.js +0 -0
  711. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/smalltalk-BERRCDM3.js +0 -0
  712. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/snazzy-light-Bw305WKR.js +0 -0
  713. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/solarized-dark-DXbdFlpD.js +0 -0
  714. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/solarized-light-L9t79GZl.js +0 -0
  715. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/solidity-rGO070M0.js +0 -0
  716. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/soy-Brmx7dQM.js +0 -0
  717. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/sparql-rVzFXLq3.js +0 -0
  718. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/splunk-BtCnVYZw.js +0 -0
  719. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/sql-BLtJtn59.js +0 -0
  720. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/ssh-config-_ykCGR6B.js +0 -0
  721. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/stata-BH5u7GGu.js +0 -0
  722. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/stylus-BEDo0Tqx.js +0 -0
  723. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/svelte-zxCyuUbr.js +0 -0
  724. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/swift-Dg5xB15N.js +0 -0
  725. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/synthwave-84-CbfX1IO0.js +0 -0
  726. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/system-verilog-CnnmHF94.js +0 -0
  727. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/systemd-4A_iFExJ.js +0 -0
  728. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/talonscript-CkByrt1z.js +0 -0
  729. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/tasl-QIJgUcNo.js +0 -0
  730. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/tcl-dwOrl1Do.js +0 -0
  731. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/templ-W15q3VgB.js +0 -0
  732. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/terraform-BETggiCN.js +0 -0
  733. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/tex-CvyZ59Mk.js +0 -0
  734. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/tokyo-night-hegEt444.js +0 -0
  735. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/toml-vGWfd6FD.js +0 -0
  736. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/ts-tags-zn1MmPIZ.js +0 -0
  737. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/tsv-B_m7g4N7.js +0 -0
  738. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/tsx-COt5Ahok.js +0 -0
  739. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/turtle-BsS91CYL.js +0 -0
  740. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/twig-CO9l9SDP.js +0 -0
  741. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/typescript-BPQ3VLAy.js +0 -0
  742. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/typespec-BGHnOYBU.js +0 -0
  743. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/typst-DHCkPAjA.js +0 -0
  744. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/v-BcVCzyr7.js +0 -0
  745. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/vala-CsfeWuGM.js +0 -0
  746. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/vb-D17OF-Vu.js +0 -0
  747. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/verilog-BQ8w6xss.js +0 -0
  748. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/vesper-DU1UobuO.js +0 -0
  749. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/vhdl-CeAyd5Ju.js +0 -0
  750. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/viml-CJc9bBzg.js +0 -0
  751. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/vitesse-black-Bkuqu6BP.js +0 -0
  752. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/vitesse-dark-D0r3Knsf.js +0 -0
  753. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/vitesse-light-CVO1_9PV.js +0 -0
  754. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/vue-DN_0RTcg.js +0 -0
  755. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/vue-html-AaS7Mt5G.js +0 -0
  756. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/vue-vine-CQOfvN7w.js +0 -0
  757. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/vyper-CDx5xZoG.js +0 -0
  758. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/wasm-CG6Dc4jp.js +0 -0
  759. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/wasm-MzD3tlZU.js +0 -0
  760. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/wenyan-BV7otONQ.js +0 -0
  761. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/wgsl-Dx-B1_4e.js +0 -0
  762. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/wikitext-BhOHFoWU.js +0 -0
  763. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/wit-5i3qLPDT.js +0 -0
  764. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/wolfram-lXgVvXCa.js +0 -0
  765. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/xml-sdJ4AIDG.js +0 -0
  766. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/xsl-CtQFsRM5.js +0 -0
  767. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/yaml-Buea-lGh.js +0 -0
  768. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/zenscript-DVFEvuxE.js +0 -0
  769. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/assets/zig-VOosw3JB.js +0 -0
  770. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/apple-touch-icon.png +0 -0
  771. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/arctecture.webp +0 -0
  772. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/bimi-logo.svg +0 -0
  773. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/favicon.ico +0 -0
  774. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin-ext.woff2 +0 -0
  775. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin.woff2 +0 -0
  776. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin-ext.woff2 +0 -0
  777. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin.woff2 +0 -0
  778. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin-ext.woff2 +0 -0
  779. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin.woff2 +0 -0
  780. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin-ext.woff2 +0 -0
  781. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin.woff2 +0 -0
  782. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin-ext.woff2 +0 -0
  783. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin.woff2 +0 -0
  784. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin-ext.woff2 +0 -0
  785. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin.woff2 +0 -0
  786. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/icon-192.png +0 -0
  787. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/icon-512.png +0 -0
  788. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/icon.svg +0 -0
  789. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/logo.png +0 -0
  790. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/pythinker_animated.svg +0 -0
  791. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/brand/robots.txt +0 -0
  792. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/static/logo.png +0 -0
  793. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/store/__init__.py +0 -0
  794. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/web/store/sessions.py +0 -0
  795. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/wire/__init__.py +0 -0
  796. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/wire/file.py +0 -0
  797. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/wire/jsonrpc.py +0 -0
  798. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/wire/protocol.py +0 -0
  799. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/wire/root_hub.py +0 -0
  800. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/wire/serde.py +0 -0
  801. {pythinker_code-0.11.0 → pythinker_code-0.13.0}/src/pythinker_code/wire/server.py +0 -0
  802. {pythinker_code-0.11.0 → pythinker_code-0.13.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.11.0
3
+ Version: 0.13.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
@@ -115,22 +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.11.0
118
+ ## 🆕 What's New in 0.13.0
119
119
 
120
- - **Fixed PyPI install conflict (was failing on Windows and every other platform).** The published `pythinker-core 1.1.0` capped `mcp<1.17` while `fastmcp==3.2.0` required `mcp>=1.24.0`, so `pip install pythinker-code==0.10.0` could not resolve. 0.11.0 pins the republished `pythinker-core 1.1.1` whose `mcp>=1.23,<2` constraint is compatible with `fastmcp`.
121
- - **Blackbox-style TUI port phase 1.** New shell design primitives, compact transcript activity rows, motion status, standardized dialogs, aligned footer styling, and a restyled tool-result surface. The TUI now shares one visual language across rows, dialogs, and motion.
122
- - **Refreshed accent palette.** Dark/light TUI accent retuned to sky-blue (`#7dd3fc` / `#0284c7`) for better contrast on the new surfaces.
123
- - **Report + markdown polish.** Improved spacing and consistent code-block rendering in report output.
124
- - **Live stream + thinking indicators.** Rotating thinking-word indicator restored, with a leading space before the live stream status.
125
- - **Tool failure recovery improvements.** The agent loop now handles malformed or empty tool-call responses more gracefully and can continue the session instead of leaving the UI stuck after a bad provider turn.
126
- - **Safer file edits.** File write and replace tools now create restore points before mutating files, giving sessions a clearer recovery path after risky changes.
127
- - **Session UX state tracking.** Runtime session state now records additional UX metadata so shell surfaces can provide better continuity across long-running work.
128
- - **Shell command enhancements.** New shell slash-command plumbing improves discoverability and keeps interactive workflows smoother.
129
- - **TUI renderer polish.** Tool cards now share more consistent status glyphs, truncation behavior, and result summaries across bash, read, write, edit, grep, find, web, subagent, background, ask-user, and think renderers.
130
- - **Clipboard handling hardening.** Clipboard helpers now degrade more cleanly when platform clipboard access is unavailable.
131
- - **Release and TUI specs.** The repository now includes the blackbox TUI port design and a visual smoke-test criterion for future terminal UI work.
120
+ - **Native installers for macOS and Linux.** `brew install mohamed-elkholy95/pythinker/pythinker-code` works on both macOS (Intel + Apple Silicon) and Linux brew installs. Debian/Ubuntu users get `pythinker-code_0.13.0_<arch>.deb`, Fedora/RHEL/openSUSE users get `pythinker-code-0.13.0.<arch>.rpm`, both built for `x86_64` and `aarch64`. Together with the Windows `PythinkerSetup-0.13.0.exe` shipped in 0.12.0, Pythinker now has a real native installer on every supported platform.
121
+ - **Cross-OS `install-native.sh`.** `curl -fsSL .../install-native.sh | bash` auto-detects your OS + arch, verifies SHA-256, and lands `pythinker` at `~/.local/bin/`. The script is the no-package-manager fallback for containers and fresh VMs.
122
+ - **Homebrew tap auto-publishes on every release.** A new tag-triggered workflow regenerates `Formula/pythinker-code.rb` (132 transitive deps enumerated automatically) and pushes it to [mohamed-elkholy95/homebrew-pythinker](https://github.com/mohamed-elkholy95/homebrew-pythinker). `brew upgrade pythinker-code` picks up new versions; no hand-curation per release.
123
+ - **Frozen-binary fix for 0.12.0's installer.** The PyInstaller specs now bundle every `.md` / `.yaml` package data file (`prompts/`, `agents/`, `tools/*/description.md`, `skills/*/SKILL.md`). 0.12.0's Windows installer crashed on first prompt load — **upgrade to 0.13.0** to fix it.
124
+ - **Legacy install paths deprecated.** The helper shell scripts (`install.sh`, `install.ps1`), `uvx`, `uv tool install`, `pipx install`, and bare `pip install` keep working but are now flagged as legacy. README Quick Start leads with the per-OS native installer table. Set `PYTHINKER_INSTALL_QUIET_DEPRECATION=1` to silence the deprecation banner in the helper scripts.
132
125
 
133
- Upgrade with `pythinker update` or `pip install --upgrade pythinker-code==0.11.0`.
126
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.13.0`, or use the native installer for your platform from the [Releases page](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest).
134
127
 
135
128
 
136
129
  ---
@@ -215,36 +208,132 @@ Swap providers and models per-session: `--model openai/gpt-5.5`, hosted Pythinke
215
208
 
216
209
  ## ⚡ Quick Start
217
210
 
218
- ### Recommended install (clean, with logo)
211
+ Pythinker ships **native installers for every platform**. Pick the row that
212
+ matches your OS — no Python, Node, or `uv` prerequisite.
213
+
214
+ | Platform | One-line install | Artifact |
215
+ |---|---|---|
216
+ | **🪟 Windows** | Download + double-click `PythinkerSetup-x.y.z.exe` | [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
217
+ | **🍎 macOS (Apple Silicon + Intel)** | `brew install mohamed-elkholy95/pythinker/pythinker-code` | Homebrew tap |
218
+ | **🐧 Linux (Debian / Ubuntu)** | `sudo dpkg -i pythinker-code_x.y.z_amd64.deb` | [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
219
+ | **🐧 Linux (Fedora / RHEL / openSUSE)** | `sudo rpm -i pythinker-code-x.y.z.x86_64.rpm` | [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
220
+ | **🌐 macOS / Linux — curl-bash** | `curl -fsSL https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install-native.sh \| bash` | tarball |
221
+
222
+ > **Updates** — Once installed, `pythinker update` checks the GitHub Releases
223
+ > API, verifies the new artifact's SHA-256, and re-runs the installer for you.
224
+ > Set `PYTHINKER_CLI_NO_AUTO_UPDATE=1` to disable the startup update check.
225
+
226
+ > **Verifying downloads** — Every artifact ships with a matching `.sha256`
227
+ > file. Verify before installing with `sha256sum`, `shasum -a 256`, or
228
+ > PowerShell's `Get-FileHash` (see platform sections below).
229
+
230
+ ### 🪟 Windows native installer — details
231
+
232
+ `PythinkerSetup-x.y.z.exe` installs per-user to `%LOCALAPPDATA%\Programs\Pythinker`
233
+ and adds `pythinker` to your user PATH (`HKCU\Environment`). No UAC prompt.
234
+
235
+ ```powershell
236
+ # 1. Verify the download
237
+ Get-FileHash .\PythinkerSetup-x.y.z.exe -Algorithm SHA256
238
+ Get-Content .\PythinkerSetup-x.y.z.exe.sha256
239
+
240
+ # 2. Run the installer (double-click also works)
241
+ .\PythinkerSetup-x.y.z.exe
242
+
243
+ # 3. Open a fresh PowerShell
244
+ pythinker --version
245
+ ```
246
+
247
+ **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-x.y.z.exe /ALLUSERS`
248
+ installs to `%ProgramFiles%\Pythinker` and writes to HKLM.
249
+
250
+ **Uninstall:** Apps & Features → *Pythinker Code* → Uninstall reverts both the
251
+ files and the PATH edit.
252
+
253
+ > 🛡 **First-launch SmartScreen warning** — until the Authenticode cert is in
254
+ > CI, the installer ships unsigned and SmartScreen shows *"Windows protected
255
+ > your PC."* Click **More info → Run anyway**. Use the published SHA-256 as
256
+ > your integrity check.
257
+
258
+ ### 🍎 macOS — Homebrew
219
259
 
220
260
  ```sh
221
- curl -fsSL https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install.sh | bash
261
+ brew install mohamed-elkholy95/pythinker/pythinker-code
262
+ brew upgrade pythinker-code # manual updates; brew packages don't auto-update
222
263
  ```
223
264
 
224
- Windows PowerShell:
265
+ Drops `pythinker` at `$(brew --prefix)/bin/pythinker`. Works on Apple Silicon
266
+ and Intel; brew picks the right Python build for you.
225
267
 
226
- ```powershell
227
- $installer = Join-Path $env:TEMP "pythinker-install.ps1"
228
- iwr -UseBasicParsing https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install.ps1 -OutFile $installer
229
- & $installer
230
- Remove-Item $installer
268
+ ### 🐧 Linux — system packages
269
+
270
+ Native packages are attached to every GitHub Release. Both `.deb` and `.rpm`
271
+ are built for `x86_64` and `aarch64`:
272
+
273
+ ```sh
274
+ # Debian / Ubuntu
275
+ sudo dpkg -i pythinker-code_x.y.z_amd64.deb
276
+ # If apt complains about missing deps:
277
+ sudo apt-get install -f
278
+
279
+ # Fedora / RHEL / openSUSE
280
+ sudo rpm -i pythinker-code-x.y.z.x86_64.rpm
281
+ # or:
282
+ sudo dnf install ./pythinker-code-x.y.z.x86_64.rpm
231
283
  ```
232
284
 
233
- The installer fetches `uv` if missing, installs `pythinker-code` quietly, and prints a single-line confirmation instead of the full dependency wall. Windows downloads the script to a file (instead of `irm ... | iex`) so PowerShell antivirus scanning is less likely to block it, but it is invoked with `&` in the current session so PATH updates from `uv` are immediately visible — `pythinker` works without opening a new shell.
285
+ Both packages drop `/usr/bin/pythinker` (a small launcher that execs the real
286
+ binary under `/usr/lib/pythinker/`).
287
+
288
+ ### 🌐 macOS / Linux — curl-bash native installer
234
289
 
235
- ### 🚀 One-off run with `uvx`
290
+ For machines without a package manager (containers, fresh VMs), the
291
+ [install-native.sh](./scripts/install-native.sh) helper downloads the right
292
+ tarball for your OS + arch, verifies SHA-256, and installs to `~/.local/`.
236
293
 
237
294
  ```sh
238
- uvx pythinker-code
295
+ curl -fsSL https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install-native.sh | bash
296
+
297
+ # Pin a specific version:
298
+ curl -fsSL ...install-native.sh | bash -s -- --version 0.13.0
239
299
  ```
240
300
 
241
- ### 📦 Install as a uv tool
301
+ The script lands the binary at `~/.local/share/pythinker/` and symlinks
302
+ `~/.local/bin/pythinker`. It prints PATH guidance if `~/.local/bin` isn't on
303
+ your `$PATH`.
304
+
305
+ ### 🛠 Power-user / legacy install paths
306
+
307
+ > 🚧 **Deprecated.** These paths still work, but the per-OS native installers
308
+ > above are the canonical install method for **all new releases**. The legacy
309
+ > options below remain for existing automation; new tooling, examples, and
310
+ > support docs target the native installers exclusively.
311
+
312
+ <details>
313
+ <summary>Legacy shell-script wrappers + uv / pipx</summary>
242
314
 
243
315
  ```sh
316
+ # Legacy: uv-based shell-script wrappers (prints a deprecation banner on run)
317
+ curl -fsSL https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install.sh | bash
318
+ # Windows PowerShell wrapper:
319
+ $installer = Join-Path $env:TEMP "pythinker-install.ps1"
320
+ iwr -UseBasicParsing https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install.ps1 -OutFile $installer
321
+ & $installer
322
+ Remove-Item $installer
323
+
324
+ # Legacy: one-off run via uvx
325
+ uvx pythinker-code
326
+
327
+ # Legacy: install as a uv tool
244
328
  uv tool install pythinker-code
245
- pythinker
329
+
330
+ # Legacy: PyPI directly (universal fallback)
331
+ pip install pythinker-code
332
+ pipx install pythinker-code
246
333
  ```
247
334
 
335
+ </details>
336
+
248
337
  ### 🔐 Authenticate (optional)
249
338
 
250
339
  For hosted Pythinker models or ACP terminal auth:
@@ -50,22 +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.11.0
53
+ ## 🆕 What's New in 0.13.0
54
54
 
55
- - **Fixed PyPI install conflict (was failing on Windows and every other platform).** The published `pythinker-core 1.1.0` capped `mcp<1.17` while `fastmcp==3.2.0` required `mcp>=1.24.0`, so `pip install pythinker-code==0.10.0` could not resolve. 0.11.0 pins the republished `pythinker-core 1.1.1` whose `mcp>=1.23,<2` constraint is compatible with `fastmcp`.
56
- - **Blackbox-style TUI port phase 1.** New shell design primitives, compact transcript activity rows, motion status, standardized dialogs, aligned footer styling, and a restyled tool-result surface. The TUI now shares one visual language across rows, dialogs, and motion.
57
- - **Refreshed accent palette.** Dark/light TUI accent retuned to sky-blue (`#7dd3fc` / `#0284c7`) for better contrast on the new surfaces.
58
- - **Report + markdown polish.** Improved spacing and consistent code-block rendering in report output.
59
- - **Live stream + thinking indicators.** Rotating thinking-word indicator restored, with a leading space before the live stream status.
60
- - **Tool failure recovery improvements.** The agent loop now handles malformed or empty tool-call responses more gracefully and can continue the session instead of leaving the UI stuck after a bad provider turn.
61
- - **Safer file edits.** File write and replace tools now create restore points before mutating files, giving sessions a clearer recovery path after risky changes.
62
- - **Session UX state tracking.** Runtime session state now records additional UX metadata so shell surfaces can provide better continuity across long-running work.
63
- - **Shell command enhancements.** New shell slash-command plumbing improves discoverability and keeps interactive workflows smoother.
64
- - **TUI renderer polish.** Tool cards now share more consistent status glyphs, truncation behavior, and result summaries across bash, read, write, edit, grep, find, web, subagent, background, ask-user, and think renderers.
65
- - **Clipboard handling hardening.** Clipboard helpers now degrade more cleanly when platform clipboard access is unavailable.
66
- - **Release and TUI specs.** The repository now includes the blackbox TUI port design and a visual smoke-test criterion for future terminal UI work.
55
+ - **Native installers for macOS and Linux.** `brew install mohamed-elkholy95/pythinker/pythinker-code` works on both macOS (Intel + Apple Silicon) and Linux brew installs. Debian/Ubuntu users get `pythinker-code_0.13.0_<arch>.deb`, Fedora/RHEL/openSUSE users get `pythinker-code-0.13.0.<arch>.rpm`, both built for `x86_64` and `aarch64`. Together with the Windows `PythinkerSetup-0.13.0.exe` shipped in 0.12.0, Pythinker now has a real native installer on every supported platform.
56
+ - **Cross-OS `install-native.sh`.** `curl -fsSL .../install-native.sh | bash` auto-detects your OS + arch, verifies SHA-256, and lands `pythinker` at `~/.local/bin/`. The script is the no-package-manager fallback for containers and fresh VMs.
57
+ - **Homebrew tap auto-publishes on every release.** A new tag-triggered workflow regenerates `Formula/pythinker-code.rb` (132 transitive deps enumerated automatically) and pushes it to [mohamed-elkholy95/homebrew-pythinker](https://github.com/mohamed-elkholy95/homebrew-pythinker). `brew upgrade pythinker-code` picks up new versions; no hand-curation per release.
58
+ - **Frozen-binary fix for 0.12.0's installer.** The PyInstaller specs now bundle every `.md` / `.yaml` package data file (`prompts/`, `agents/`, `tools/*/description.md`, `skills/*/SKILL.md`). 0.12.0's Windows installer crashed on first prompt load — **upgrade to 0.13.0** to fix it.
59
+ - **Legacy install paths deprecated.** The helper shell scripts (`install.sh`, `install.ps1`), `uvx`, `uv tool install`, `pipx install`, and bare `pip install` keep working but are now flagged as legacy. README Quick Start leads with the per-OS native installer table. Set `PYTHINKER_INSTALL_QUIET_DEPRECATION=1` to silence the deprecation banner in the helper scripts.
67
60
 
68
- Upgrade with `pythinker update` or `pip install --upgrade pythinker-code==0.11.0`.
61
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.13.0`, or use the native installer for your platform from the [Releases page](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest).
69
62
 
70
63
 
71
64
  ---
@@ -150,36 +143,132 @@ Swap providers and models per-session: `--model openai/gpt-5.5`, hosted Pythinke
150
143
 
151
144
  ## ⚡ Quick Start
152
145
 
153
- ### Recommended install (clean, with logo)
146
+ Pythinker ships **native installers for every platform**. Pick the row that
147
+ matches your OS — no Python, Node, or `uv` prerequisite.
148
+
149
+ | Platform | One-line install | Artifact |
150
+ |---|---|---|
151
+ | **🪟 Windows** | Download + double-click `PythinkerSetup-x.y.z.exe` | [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
152
+ | **🍎 macOS (Apple Silicon + Intel)** | `brew install mohamed-elkholy95/pythinker/pythinker-code` | Homebrew tap |
153
+ | **🐧 Linux (Debian / Ubuntu)** | `sudo dpkg -i pythinker-code_x.y.z_amd64.deb` | [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
154
+ | **🐧 Linux (Fedora / RHEL / openSUSE)** | `sudo rpm -i pythinker-code-x.y.z.x86_64.rpm` | [Releases](https://github.com/mohamed-elkholy95/Pythinker-Code/releases/latest) |
155
+ | **🌐 macOS / Linux — curl-bash** | `curl -fsSL https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install-native.sh \| bash` | tarball |
156
+
157
+ > **Updates** — Once installed, `pythinker update` checks the GitHub Releases
158
+ > API, verifies the new artifact's SHA-256, and re-runs the installer for you.
159
+ > Set `PYTHINKER_CLI_NO_AUTO_UPDATE=1` to disable the startup update check.
160
+
161
+ > **Verifying downloads** — Every artifact ships with a matching `.sha256`
162
+ > file. Verify before installing with `sha256sum`, `shasum -a 256`, or
163
+ > PowerShell's `Get-FileHash` (see platform sections below).
164
+
165
+ ### 🪟 Windows native installer — details
166
+
167
+ `PythinkerSetup-x.y.z.exe` installs per-user to `%LOCALAPPDATA%\Programs\Pythinker`
168
+ and adds `pythinker` to your user PATH (`HKCU\Environment`). No UAC prompt.
169
+
170
+ ```powershell
171
+ # 1. Verify the download
172
+ Get-FileHash .\PythinkerSetup-x.y.z.exe -Algorithm SHA256
173
+ Get-Content .\PythinkerSetup-x.y.z.exe.sha256
174
+
175
+ # 2. Run the installer (double-click also works)
176
+ .\PythinkerSetup-x.y.z.exe
177
+
178
+ # 3. Open a fresh PowerShell
179
+ pythinker --version
180
+ ```
181
+
182
+ **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-x.y.z.exe /ALLUSERS`
183
+ installs to `%ProgramFiles%\Pythinker` and writes to HKLM.
184
+
185
+ **Uninstall:** Apps & Features → *Pythinker Code* → Uninstall reverts both the
186
+ files and the PATH edit.
187
+
188
+ > 🛡 **First-launch SmartScreen warning** — until the Authenticode cert is in
189
+ > CI, the installer ships unsigned and SmartScreen shows *"Windows protected
190
+ > your PC."* Click **More info → Run anyway**. Use the published SHA-256 as
191
+ > your integrity check.
192
+
193
+ ### 🍎 macOS — Homebrew
154
194
 
155
195
  ```sh
156
- curl -fsSL https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install.sh | bash
196
+ brew install mohamed-elkholy95/pythinker/pythinker-code
197
+ brew upgrade pythinker-code # manual updates; brew packages don't auto-update
157
198
  ```
158
199
 
159
- Windows PowerShell:
200
+ Drops `pythinker` at `$(brew --prefix)/bin/pythinker`. Works on Apple Silicon
201
+ and Intel; brew picks the right Python build for you.
160
202
 
161
- ```powershell
162
- $installer = Join-Path $env:TEMP "pythinker-install.ps1"
163
- iwr -UseBasicParsing https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install.ps1 -OutFile $installer
164
- & $installer
165
- Remove-Item $installer
203
+ ### 🐧 Linux — system packages
204
+
205
+ Native packages are attached to every GitHub Release. Both `.deb` and `.rpm`
206
+ are built for `x86_64` and `aarch64`:
207
+
208
+ ```sh
209
+ # Debian / Ubuntu
210
+ sudo dpkg -i pythinker-code_x.y.z_amd64.deb
211
+ # If apt complains about missing deps:
212
+ sudo apt-get install -f
213
+
214
+ # Fedora / RHEL / openSUSE
215
+ sudo rpm -i pythinker-code-x.y.z.x86_64.rpm
216
+ # or:
217
+ sudo dnf install ./pythinker-code-x.y.z.x86_64.rpm
166
218
  ```
167
219
 
168
- The installer fetches `uv` if missing, installs `pythinker-code` quietly, and prints a single-line confirmation instead of the full dependency wall. Windows downloads the script to a file (instead of `irm ... | iex`) so PowerShell antivirus scanning is less likely to block it, but it is invoked with `&` in the current session so PATH updates from `uv` are immediately visible — `pythinker` works without opening a new shell.
220
+ Both packages drop `/usr/bin/pythinker` (a small launcher that execs the real
221
+ binary under `/usr/lib/pythinker/`).
222
+
223
+ ### 🌐 macOS / Linux — curl-bash native installer
169
224
 
170
- ### 🚀 One-off run with `uvx`
225
+ For machines without a package manager (containers, fresh VMs), the
226
+ [install-native.sh](./scripts/install-native.sh) helper downloads the right
227
+ tarball for your OS + arch, verifies SHA-256, and installs to `~/.local/`.
171
228
 
172
229
  ```sh
173
- uvx pythinker-code
230
+ curl -fsSL https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install-native.sh | bash
231
+
232
+ # Pin a specific version:
233
+ curl -fsSL ...install-native.sh | bash -s -- --version 0.13.0
174
234
  ```
175
235
 
176
- ### 📦 Install as a uv tool
236
+ The script lands the binary at `~/.local/share/pythinker/` and symlinks
237
+ `~/.local/bin/pythinker`. It prints PATH guidance if `~/.local/bin` isn't on
238
+ your `$PATH`.
239
+
240
+ ### 🛠 Power-user / legacy install paths
241
+
242
+ > 🚧 **Deprecated.** These paths still work, but the per-OS native installers
243
+ > above are the canonical install method for **all new releases**. The legacy
244
+ > options below remain for existing automation; new tooling, examples, and
245
+ > support docs target the native installers exclusively.
246
+
247
+ <details>
248
+ <summary>Legacy shell-script wrappers + uv / pipx</summary>
177
249
 
178
250
  ```sh
251
+ # Legacy: uv-based shell-script wrappers (prints a deprecation banner on run)
252
+ curl -fsSL https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install.sh | bash
253
+ # Windows PowerShell wrapper:
254
+ $installer = Join-Path $env:TEMP "pythinker-install.ps1"
255
+ iwr -UseBasicParsing https://raw.githubusercontent.com/mohamed-elkholy95/Pythinker-Code/main/scripts/install.ps1 -OutFile $installer
256
+ & $installer
257
+ Remove-Item $installer
258
+
259
+ # Legacy: one-off run via uvx
260
+ uvx pythinker-code
261
+
262
+ # Legacy: install as a uv tool
179
263
  uv tool install pythinker-code
180
- pythinker
264
+
265
+ # Legacy: PyPI directly (universal fallback)
266
+ pip install pythinker-code
267
+ pipx install pythinker-code
181
268
  ```
182
269
 
270
+ </details>
271
+
183
272
  ### 🔐 Authenticate (optional)
184
273
 
185
274
  For hosted Pythinker models or ACP terminal auth:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "pythinker-code"
3
- version = "0.11.0"
3
+ version = "0.13.0"
4
4
  description = "Pythinker Code is your next CLI agent."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -15,6 +15,30 @@ GitHub Releases page; `0.8.0` is the new starting line.
15
15
 
16
16
  ## Unreleased
17
17
 
18
+ ## 0.13.0 (2026-05-22)
19
+
20
+ ### What changed in this release
21
+
22
+ - **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.
23
+ - **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`.
24
+ - **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.
25
+ - **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`.
26
+ - **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.
27
+ - **Legacy install paths deprecated.** `scripts/install.sh`, `scripts/install.ps1`, `uvx pythinker-code`, `uv tool install pythinker-code`, `pipx install pythinker-code`, and bare `pip install pythinker-code` continue to work for existing automation. The two helper scripts now print a `[DEPRECATED]` banner at startup, pause 3 s, and point at the OS-specific native installer; set `PYTHINKER_INSTALL_QUIET_DEPRECATION=1` to suppress the banner. README Quick Start now leads with the per-OS install table.
28
+
29
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.13.0`, or use the native installer for your OS (see the README install table).
30
+
31
+ ## 0.12.0 (2026-05-22)
32
+
33
+ ### What changed in this release
34
+
35
+ - **Native Windows installer.** A signed `PythinkerSetup-x.y.z.exe` is now attached to every GitHub Release — install Pythinker on Windows with one download, no Python / Node / uv prerequisite. The wizard installs per-user (no UAC) into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on the user PATH, and broadcasts `WM_SETTINGCHANGE` so new shells pick the change up immediately. Uninstall reverses the PATH edit. Code-signing is wired through `signtool` and ships unsigned until the Authenticode cert lands; from that point forward the same CI job produces signed installers with no code change required.
36
+ - **In-app updates for the native build.** `pythinker update` from a native install detects the build (via a `.pythinker-native` sentinel next to `pythinker.exe`), fetches the latest GitHub Release asset, verifies its SHA-256, and re-runs the installer silently (`/VERYSILENT /SUPPRESSMSGBOXES /NORESTART`). The `PYTHINKER_CLI_NO_AUTO_UPDATE` opt-out env var that the PyPI path already honors now also gates the native auto-update path — one knob, both flows. The update banner shows a human-readable `PythinkerSetup-x.y.z.exe` line instead of leaking internal markers.
37
+ - **Tag-triggered Windows build pipeline.** A new `.github/workflows/windows-installer.yml` runs on every `pythinker-code-v*` tag, freezes `pythinker` via PyInstaller (`--onedir` for faster startup and fewer AV false positives), compiles the Inno Setup script, signs the result if `WINDOWS_CERT_PFX_BASE64` / `WINDOWS_CERT_PASSWORD` secrets are populated, and uploads the `.exe` plus its `.sha256` to the corresponding Release.
38
+ - **Shell terminal rhythm refinements.** Tone tokens, motion timing, and theme palette were retuned (sky-blue `#7dd3fc` / `#93c5fd` accents) so transcript rows, motion status, and dialog surfaces breathe consistently. UI snapshot tests updated to lock the new rhythm in place.
39
+
40
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.12.0`, or — on Windows — download `PythinkerSetup-0.12.0.exe` from the Releases page.
41
+
18
42
  ## 0.11.0 (2026-05-22)
19
43
 
20
44
  ### What changed in this release
@@ -0,0 +1,38 @@
1
+ """Native-build detection + GitHub Releases lookup helpers.
2
+
3
+ The Windows native installer drops a sentinel file ``.pythinker-native`` next
4
+ to the PyInstaller-frozen ``pythinker.exe``. The runtime probes for that file
5
+ to decide whether ``pythinker update`` should re-run the native installer
6
+ instead of shelling out to ``uv tool upgrade``.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ import sys
12
+ from pathlib import Path
13
+
14
+ GITHUB_REPO = "mohamed-elkholy95/Pythinker-Code"
15
+ SENTINEL_FILENAME = ".pythinker-native"
16
+
17
+
18
+ def is_native_build() -> bool:
19
+ """True iff this process is a Pythinker native (Inno Setup) install."""
20
+ if not getattr(sys, "frozen", False):
21
+ return False
22
+ try:
23
+ exe_dir = Path(sys.executable).resolve().parent
24
+ except OSError:
25
+ return False
26
+ return (exe_dir / SENTINEL_FILENAME).is_file()
27
+
28
+
29
+ def native_installer_release_url(channel: str = "latest") -> str:
30
+ """Return the GitHub API URL for the requested release channel."""
31
+ if channel == "latest":
32
+ return f"https://api.github.com/repos/{GITHUB_REPO}/releases/latest"
33
+ return f"https://api.github.com/repos/{GITHUB_REPO}/releases/tags/{channel}"
34
+
35
+
36
+ def native_installer_asset_name(version: str) -> str:
37
+ """Filename of the installer asset attached to a Release."""
38
+ return f"PythinkerSetup-{version}.exe"
@@ -37,11 +37,11 @@ StatusName = Literal[
37
37
  _TONE_STYLES: dict[ShellTone, Style] = {
38
38
  ShellTone.NORMAL: Style(color="default"),
39
39
  ShellTone.MUTED: Style(color="grey50"),
40
- ShellTone.ACCENT: Style(color="cyan"),
40
+ ShellTone.ACCENT: Style(color="#7dd3fc"),
41
41
  ShellTone.SUCCESS: Style(color="green"),
42
42
  ShellTone.WARNING: Style(color="yellow"),
43
43
  ShellTone.ERROR: Style(color="red"),
44
- ShellTone.INFO: Style(color="blue"),
44
+ ShellTone.INFO: Style(color="#93c5fd"),
45
45
  }
46
46
 
47
47
  _STATUS: dict[StatusName, tuple[str, ShellTone]] = {
@@ -5,7 +5,7 @@ from rich.console import RenderableType
5
5
  from rich.text import Text
6
6
 
7
7
  from pythinker_code.ui.shell.components import render_user_message
8
- from pythinker_code.ui.shell.prompt import PROMPT_SYMBOL
8
+ from pythinker_code.ui.shell.prompt import PROMPT_SYMBOL_AGENT_INPUT
9
9
  from pythinker_code.ui.tui_config import is_card_style
10
10
  from pythinker_code.utils.message import message_stringify
11
11
 
@@ -20,11 +20,11 @@ def render_user_echo(message: Message) -> RenderableType:
20
20
  text = message_stringify(message)
21
21
  if is_card_style():
22
22
  return render_user_message(text)
23
- return Text(f"{PROMPT_SYMBOL} {text}")
23
+ return Text(f"{PROMPT_SYMBOL_AGENT_INPUT} {text}")
24
24
 
25
25
 
26
26
  def render_user_echo_text(text: str) -> RenderableType:
27
27
  """Render the local prompt text exactly as the user saw it in the buffer."""
28
28
  if is_card_style():
29
29
  return render_user_message(text)
30
- return Text(f"{PROMPT_SYMBOL} {text}")
30
+ return Text(f"{PROMPT_SYMBOL_AGENT_INPUT} {text}")
@@ -23,7 +23,7 @@ class ActivitySnapshot:
23
23
  tokens: int = 0
24
24
  token_rate: int | None = None
25
25
  stalled: bool = False
26
- interrupt_hint: str = "esc to interrupt"
26
+ interrupt_hint: str = ""
27
27
  reduced_motion: bool = False
28
28
 
29
29
 
@@ -46,14 +46,22 @@ def spinner_frame_at(elapsed_s: float, *, reduced_motion: bool = False) -> str:
46
46
  def _candidate_parts(snapshot: ActivitySnapshot) -> list[str]:
47
47
  parts = [format_elapsed(snapshot.elapsed_s)]
48
48
  if snapshot.tokens:
49
- parts.append(f"{format_token_count(snapshot.tokens)} tokens")
49
+ parts.append(f"{format_token_count(snapshot.tokens)} tokens")
50
50
  if snapshot.token_rate:
51
- parts.append(f"{snapshot.token_rate} tok/s")
51
+ parts.append(f"{snapshot.token_rate} t/s")
52
52
  if snapshot.interrupt_hint:
53
- parts.append(snapshot.interrupt_hint)
53
+ hint = "esc" if snapshot.interrupt_hint == "esc to interrupt" else snapshot.interrupt_hint
54
+ parts.append(hint)
54
55
  return parts
55
56
 
56
57
 
58
+ def _activity_label(label: str) -> str:
59
+ stripped = label.rstrip()
60
+ if stripped.endswith(("…", "...")):
61
+ return stripped
62
+ return f"{stripped}…"
63
+
64
+
57
65
  def activity_status_line(snapshot: ActivitySnapshot, *, width: int | None = None) -> Text:
58
66
  reduced = snapshot.reduced_motion or reduced_motion_enabled()
59
67
  glyph_style = ShellTone.WARNING if snapshot.stalled else ShellTone.ACCENT
@@ -62,7 +70,10 @@ def activity_status_line(snapshot: ActivitySnapshot, *, width: int | None = None
62
70
  style=shell_style(glyph_style),
63
71
  )
64
72
  text.append(" ")
65
- text.append(snapshot.label, style="italic" if snapshot.label.lower() == "thinking" else "")
73
+ text.append(
74
+ _activity_label(snapshot.label),
75
+ style="italic" if snapshot.label.lower() == "thinking" else "",
76
+ )
66
77
 
67
78
  parts = _candidate_parts(snapshot)
68
79
  if width is not None:
@@ -70,10 +81,10 @@ def activity_status_line(snapshot: ActivitySnapshot, *, width: int | None = None
70
81
  kept: list[str] = []
71
82
  for part in parts:
72
83
  candidate = " · ".join([*kept, part])
73
- if base_width + 2 + cell_width(candidate) <= width:
84
+ if base_width + 3 + cell_width(candidate) <= width:
74
85
  kept.append(part)
75
86
  parts = kept
76
87
  if parts:
77
88
  text.append(" ")
78
- text.append(" · ".join(parts), style=shell_style(ShellTone.MUTED))
89
+ text.append(f"({' · '.join(parts)})", style=shell_style(ShellTone.MUTED))
79
90
  return text