pythinker-code 0.32.0__tar.gz → 0.33.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 (861) hide show
  1. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/PKG-INFO +28 -27
  2. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/README.md +24 -23
  3. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/pyproject.toml +20 -3
  4. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/CHANGELOG.md +12 -0
  5. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/__main__.py +2 -2
  6. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/agents/default/code_reviewer.yaml +1 -0
  7. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/agents/default/system.md +10 -2
  8. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/cli/__init__.py +11 -12
  9. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/cli/info.py +4 -1
  10. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/config.py +295 -14
  11. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/constant.py +11 -1
  12. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/scratchpad.py +41 -21
  13. pythinker_code-0.33.0/src/pythinker_code/tools/todo/set_todo_list.md +23 -0
  14. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/design_system.py +3 -3
  15. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/glyphs.py +6 -0
  16. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tool_renderers/ask_user.py +2 -1
  17. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/visualize/_question_panel.py +7 -5
  18. pythinker_code-0.33.0/src/pythinker_code/utils/gitignore.py +30 -0
  19. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/_baseUniq-Bifyk8NN.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/_baseUniq-C5c7Nh63.js +1 -1
  20. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/arc-BYpkXSz8.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/arc-wGDWawbk.js +1 -1
  21. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-CyKYl5gX.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/architectureDiagram-VXUJARFQ-4AscMc2B.js +1 -1
  22. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-CEgNKzwz.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/blockDiagram-VD42YOAC-DEYI3FFN.js +1 -1
  23. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-BHjzrlC6.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/c4Diagram-YG6GDRKO-D82QVsdJ.js +1 -1
  24. pythinker_code-0.33.0/src/pythinker_code/web/static/assets/channel-BrUcVqpT.js +1 -0
  25. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-DfkR0dZ9.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-ElAUPWr0.js +1 -1
  26. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-BGiC5VZW.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/chunk-55IACEB6-CKN0oJnR.js +1 -1
  27. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-DxVGxC1F.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/chunk-B4BG7PRW-DEBV7lpt.js +1 -1
  28. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-zN0LfjGZ.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/chunk-DI55MBZ5-DGqkIwPc.js +1 -1
  29. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-BzWNV9cS.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-B63mxVoz.js +1 -1
  30. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-BHLGK8_b.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/chunk-QN33PNHL-Bbyimc_t.js +1 -1
  31. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-Da0J0B84.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-CFOPXuBD.js +1 -1
  32. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-Ct8dBGJH.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/chunk-TZMSLE5B-C3ys1w9S.js +1 -1
  33. pythinker_code-0.33.0/src/pythinker_code/web/static/assets/classDiagram-2ON5EDUG-DxxI75B9.js +1 -0
  34. pythinker_code-0.33.0/src/pythinker_code/web/static/assets/classDiagram-v2-WZHVMYZB-DxxI75B9.js +1 -0
  35. pythinker_code-0.33.0/src/pythinker_code/web/static/assets/clone-BR0Xjhp7.js +1 -0
  36. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-Cxm_b-b-.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-DM099gsS.js +1 -1
  37. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-C5xz2pZw.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-YrhIX5dv.js +1 -1
  38. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/cytoscape.esm-DCXCrMWk.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/cytoscape.esm-Zf1nBsA6.js +1 -1
  39. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-DNG-R8yA.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/dagre-6UL2VRFP-aKXzZ9F3.js +1 -1
  40. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-CNOaVFaY.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/diagram-PSM6KHXK-CkV-2sGy.js +1 -1
  41. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-Bwwcc_vK.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/diagram-QEK2KX5R-Xj41jacR.js +1 -1
  42. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-DvnIsCVi.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/diagram-S2PKOQOG-CqEm8g2w.js +1 -1
  43. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-Dl05OpEj.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/erDiagram-Q2GNP2WA-YMCzrLvU.js +1 -1
  44. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-BltqvXtV.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/flowDiagram-NV44I4VS-B6bDGKpp.js +1 -1
  45. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-DL7PiVmE.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/ganttDiagram-JELNMOA3-Dc8jTgzs.js +1 -1
  46. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-CH4ZKKZj.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/gitGraphDiagram-NY62KEGX-BSKxBXYb.js +1 -1
  47. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/graph-B4Kzwv80.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/graph-jm_L-_tC.js +1 -1
  48. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/index-DJ8OfNNk.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/index-B-dC__aS.js +2 -2
  49. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/index-BkNQzVTK.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/index-eTN3m28s.js +1 -1
  50. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/index-Z_xsZ3W6.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/index-exEA1ykh.js +1 -1
  51. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-ZAfE1Ir5.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/infoDiagram-WHAUD3N6-mteN2QyX.js +1 -1
  52. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-CRmMzq2d.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/journeyDiagram-XKPGCS4Q-Dm0F_eBH.js +1 -1
  53. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-B8Li9_1d.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/kanban-definition-3W4ZIXB7-OkIIljOL.js +1 -1
  54. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/layout-DX5pYCeV.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/layout-CDfd4Vfp.js +1 -1
  55. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/linear-pptMzQ-K.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/linear-6Qgq3Hhp.js +1 -1
  56. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-b7xUvj9U.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-BfKKO4Fk.js +7 -7
  57. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/mermaid.core-DCw3BYz7.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/mermaid.core-5gTJ2jDv.js +5 -5
  58. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/min-tMI5897w.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/min-BW7z87Ag.js +1 -1
  59. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-C6aZL2vS.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/mindmap-definition-VGOIOE7T-D0UbUS9d.js +1 -1
  60. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-vNbhzK3J.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/pieDiagram-ADFJNKIX-DuEUsS5O.js +1 -1
  61. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-bBv6bv7G.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/quadrantDiagram-AYHSOK5B-DO2wDvJM.js +1 -1
  62. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-CGSWL41c.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/requirementDiagram-UZGBJVZJ-MXvtoTKr.js +1 -1
  63. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-fmgNCgCs.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/sankeyDiagram-TZEHDZUN-DKWwSToy.js +1 -1
  64. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-DuYLVv43.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/sequenceDiagram-WL72ISMW-BpAfLbSG.js +1 -1
  65. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-DSpubNLv.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/stateDiagram-FKZM4ZOC-BNX4SASt.js +1 -1
  66. pythinker_code-0.33.0/src/pythinker_code/web/static/assets/stateDiagram-v2-4FDKWEC3-BZXAei8F.js +1 -0
  67. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-_GniQiss.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/timeline-definition-IT6M3QCI-ZpnanLQl.js +1 -1
  68. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-FD_NWnVZ.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/treemap-KMMF4GRG-BQoT0phU.js +1 -1
  69. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-CWP4yJ_Q.js → pythinker_code-0.33.0/src/pythinker_code/web/static/assets/xychartDiagram-PRI3JC2R-CLTwggcu.js +1 -1
  70. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/index.html +1 -1
  71. pythinker_code-0.32.0/src/pythinker_code/tools/todo/set_todo_list.md +0 -23
  72. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/channel-6SvD-Q3G.js +0 -1
  73. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/classDiagram-2ON5EDUG-D8_PjZVG.js +0 -1
  74. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/classDiagram-v2-WZHVMYZB-D8_PjZVG.js +0 -1
  75. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/clone-CFEh_EP3.js +0 -1
  76. pythinker_code-0.32.0/src/pythinker_code/web/static/assets/stateDiagram-v2-4FDKWEC3-I3HpLmKV.js +0 -1
  77. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/LICENSE +0 -0
  78. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/NOTICE +0 -0
  79. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/__init__.py +0 -0
  80. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/acp/AGENTS.md +0 -0
  81. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/acp/__init__.py +0 -0
  82. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/acp/convert.py +0 -0
  83. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/acp/host.py +0 -0
  84. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/acp/mcp.py +0 -0
  85. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/acp/server.py +0 -0
  86. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/acp/session.py +0 -0
  87. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/acp/tools.py +0 -0
  88. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/acp/types.py +0 -0
  89. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/acp/version.py +0 -0
  90. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/agents/default/agent.yaml +0 -0
  91. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/agents/default/coder.yaml +0 -0
  92. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/agents/default/debugger.yaml +0 -0
  93. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/agents/default/explore.yaml +0 -0
  94. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/agents/default/implementer.yaml +0 -0
  95. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/agents/default/judge.yaml +0 -0
  96. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/agents/default/plan.yaml +0 -0
  97. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/agents/default/review.yaml +0 -0
  98. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/agents/default/security_reviewer.yaml +0 -0
  99. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/agents/default/verifier.yaml +0 -0
  100. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/agents/okabe/agent.yaml +0 -0
  101. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/agentspec.py +0 -0
  102. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/app.py +0 -0
  103. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/approval_runtime/__init__.py +0 -0
  104. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/approval_runtime/models.py +0 -0
  105. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/approval_runtime/runtime.py +0 -0
  106. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/auth/__init__.py +0 -0
  107. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/auth/anthropic_direct.py +0 -0
  108. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/auth/browser_login_page.py +0 -0
  109. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/auth/deepseek.py +0 -0
  110. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/auth/github_feedback.py +0 -0
  111. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/auth/lm_studio.py +0 -0
  112. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/auth/minimax.py +0 -0
  113. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/auth/oauth.py +0 -0
  114. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/auth/ollama.py +0 -0
  115. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/auth/openai.py +0 -0
  116. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/auth/opencode_go.py +0 -0
  117. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/auth/openrouter.py +0 -0
  118. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/auth/platforms.py +0 -0
  119. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/background/__init__.py +0 -0
  120. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/background/agent_runner.py +0 -0
  121. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/background/ids.py +0 -0
  122. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/background/manager.py +0 -0
  123. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/background/models.py +0 -0
  124. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/background/store.py +0 -0
  125. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/background/summary.py +0 -0
  126. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/background/worker.py +0 -0
  127. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/cli/__main__.py +0 -0
  128. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/cli/_lazy_group.py +0 -0
  129. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/cli/debug.py +0 -0
  130. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/cli/export.py +0 -0
  131. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/cli/mcp.py +0 -0
  132. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/cli/plugin.py +0 -0
  133. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/cli/review.py +0 -0
  134. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/cli/secscan.py +0 -0
  135. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/cli/security_scan.py +0 -0
  136. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/cli/skill.py +0 -0
  137. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/cli/toad.py +0 -0
  138. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/cli/update.py +0 -0
  139. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/cli/vis.py +0 -0
  140. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/cli/web.py +0 -0
  141. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/events.py +0 -0
  142. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/exception.py +0 -0
  143. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/execution_profiles.py +0 -0
  144. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/extensions.py +0 -0
  145. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/feedback.py +0 -0
  146. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/feedback_repo.py +0 -0
  147. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/file_restore.py +0 -0
  148. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/hooks/__init__.py +0 -0
  149. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/hooks/config.py +0 -0
  150. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/hooks/engine.py +0 -0
  151. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/hooks/events.py +0 -0
  152. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/hooks/runner.py +0 -0
  153. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/llm.py +0 -0
  154. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/memory/__init__.py +0 -0
  155. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/memory/consolidation.py +0 -0
  156. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/memory/harvest.py +0 -0
  157. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/memory/recall.py +0 -0
  158. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/memory/recap.py +0 -0
  159. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/memory/retriever.py +0 -0
  160. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/memory/sanitize.py +0 -0
  161. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/metadata.py +0 -0
  162. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/native.py +0 -0
  163. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/notifications/__init__.py +0 -0
  164. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/notifications/llm.py +0 -0
  165. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/notifications/manager.py +0 -0
  166. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/notifications/models.py +0 -0
  167. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/notifications/notifier.py +0 -0
  168. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/notifications/store.py +0 -0
  169. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/notifications/wire.py +0 -0
  170. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/plugin/__init__.py +0 -0
  171. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/plugin/manager.py +0 -0
  172. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/plugin/tool.py +0 -0
  173. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/project_memory.py +0 -0
  174. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/prompt_templates.py +0 -0
  175. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/prompts/__init__.py +0 -0
  176. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/prompts/compact.md +0 -0
  177. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/prompts/init.md +0 -0
  178. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/py.typed +0 -0
  179. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/session.py +0 -0
  180. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/session_cleanup.py +0 -0
  181. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/session_fork.py +0 -0
  182. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/session_recap.py +0 -0
  183. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/session_state.py +0 -0
  184. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/share.py +0 -0
  185. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skill/__init__.py +0 -0
  186. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skill/flow/__init__.py +0 -0
  187. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skill/flow/d2.py +0 -0
  188. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skill/flow/mermaid.py +0 -0
  189. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skill/lockfile.py +0 -0
  190. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skills/check-impl-against-spec/SKILL.md +0 -0
  191. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skills/create-pr/SKILL.md +0 -0
  192. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skills/diagnose-ci-failures/SKILL.md +0 -0
  193. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skills/fix-errors/SKILL.md +0 -0
  194. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skills/implement-specs/SKILL.md +0 -0
  195. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skills/pr-walkthrough/SKILL.md +0 -0
  196. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skills/pythinker-code-help/SKILL.md +0 -0
  197. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skills/reproduce-bug-report/SKILL.md +0 -0
  198. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skills/resolve-merge-conflicts/SKILL.md +0 -0
  199. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skills/review-pr/SKILL.md +0 -0
  200. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skills/skill-creator/SKILL.md +0 -0
  201. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skills/spec-driven-implementation/SKILL.md +0 -0
  202. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skills/write-product-spec/SKILL.md +0 -0
  203. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/skills/write-tech-spec/SKILL.md +0 -0
  204. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/soul/__init__.py +0 -0
  205. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/soul/agent.py +0 -0
  206. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/soul/approval.py +0 -0
  207. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/soul/btw.py +0 -0
  208. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/soul/compaction.py +0 -0
  209. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/soul/compaction_restore.py +0 -0
  210. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/soul/context.py +0 -0
  211. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/soul/deliberation.py +0 -0
  212. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/soul/denwarenji.py +0 -0
  213. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/soul/dynamic_injection.py +0 -0
  214. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/soul/dynamic_injections/__init__.py +0 -0
  215. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/soul/dynamic_injections/auto_mode.py +0 -0
  216. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/soul/dynamic_injections/plan_mode.py +0 -0
  217. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/soul/message.py +0 -0
  218. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/soul/permission.py +0 -0
  219. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/soul/pythinkersoul.py +0 -0
  220. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/soul/slash.py +0 -0
  221. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/soul/toolset.py +0 -0
  222. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/subagents/__init__.py +0 -0
  223. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/subagents/builder.py +0 -0
  224. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/subagents/core.py +0 -0
  225. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/subagents/discovery.py +0 -0
  226. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/subagents/git_context.py +0 -0
  227. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/subagents/models.py +0 -0
  228. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/subagents/output.py +0 -0
  229. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/subagents/registry.py +0 -0
  230. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/subagents/runner.py +0 -0
  231. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/subagents/store.py +0 -0
  232. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/telemetry/__init__.py +0 -0
  233. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/telemetry/config.py +0 -0
  234. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/telemetry/crash.py +0 -0
  235. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/telemetry/errors.py +0 -0
  236. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/telemetry/metrics.py +0 -0
  237. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/telemetry/otel.py +0 -0
  238. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/telemetry/sentry.py +0 -0
  239. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/telemetry/sink.py +0 -0
  240. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/thinking.py +0 -0
  241. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/AGENTS.md +0 -0
  242. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/__init__.py +0 -0
  243. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/agent/__init__.py +0 -0
  244. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/agent/description.md +0 -0
  245. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/ask_user/__init__.py +0 -0
  246. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/ask_user/description.md +0 -0
  247. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/background/__init__.py +0 -0
  248. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/background/handoff.md +0 -0
  249. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/background/input.md +0 -0
  250. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/background/list.md +0 -0
  251. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/background/output.md +0 -0
  252. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/background/stop.md +0 -0
  253. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/display.py +0 -0
  254. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/dmail/__init__.py +0 -0
  255. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/dmail/dmail.md +0 -0
  256. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/file/__init__.py +0 -0
  257. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/file/glob.md +0 -0
  258. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/file/glob.py +0 -0
  259. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/file/grep.md +0 -0
  260. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/file/grep_local.py +0 -0
  261. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/file/plan_mode.py +0 -0
  262. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/file/read.md +0 -0
  263. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/file/read.py +0 -0
  264. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/file/read_media.md +0 -0
  265. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/file/read_media.py +0 -0
  266. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/file/replace.md +0 -0
  267. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/file/replace.py +0 -0
  268. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/file/utils.py +0 -0
  269. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/file/write.md +0 -0
  270. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/file/write.py +0 -0
  271. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/memory/__init__.py +0 -0
  272. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/memory/memory.md +0 -0
  273. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/plan/__init__.py +0 -0
  274. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/plan/description.md +0 -0
  275. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/plan/enter.py +0 -0
  276. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/plan/enter_description.md +0 -0
  277. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/plan/handoff.py +0 -0
  278. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/plan/heroes.py +0 -0
  279. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/scratchpad/__init__.py +0 -0
  280. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/scratchpad/scratchpad_tool.md +0 -0
  281. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/shell/__init__.py +0 -0
  282. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/shell/bash.md +0 -0
  283. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/shell/powershell.md +0 -0
  284. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/skill/__init__.py +0 -0
  285. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/skill/description.md +0 -0
  286. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/test.py +0 -0
  287. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/think/__init__.py +0 -0
  288. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/think/think.md +0 -0
  289. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/todo/__init__.py +0 -0
  290. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/utils.py +0 -0
  291. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/web/__init__.py +0 -0
  292. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/web/_allowlist.py +0 -0
  293. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/web/fetch.md +0 -0
  294. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/web/fetch.py +0 -0
  295. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/web/search.md +0 -0
  296. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/tools/web/search.py +0 -0
  297. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/__init__.py +0 -0
  298. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/acp/__init__.py +0 -0
  299. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/print/__init__.py +0 -0
  300. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/print/visualize.py +0 -0
  301. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/__init__.py +0 -0
  302. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/components/__init__.py +0 -0
  303. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/components/base.py +0 -0
  304. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/components/bash_execution.py +0 -0
  305. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/components/bordered_loader.py +0 -0
  306. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/components/diff.py +0 -0
  307. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/components/dynamic_border.py +0 -0
  308. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/components/footer.py +0 -0
  309. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/components/key_hints.py +0 -0
  310. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/components/markdown.py +0 -0
  311. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/components/messages.py +0 -0
  312. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/components/panel.py +0 -0
  313. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/components/render_utils.py +0 -0
  314. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/components/report.py +0 -0
  315. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/components/settings_list.py +0 -0
  316. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/components/special_messages.py +0 -0
  317. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/components/tool_execution.py +0 -0
  318. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/console.py +0 -0
  319. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/debug.py +0 -0
  320. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/echo.py +0 -0
  321. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/export_import.py +0 -0
  322. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/keyboard.py +0 -0
  323. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/keymap.py +0 -0
  324. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/mcp_status.py +0 -0
  325. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/model_picker.py +0 -0
  326. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/motion.py +0 -0
  327. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/oauth.py +0 -0
  328. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/placeholders.py +0 -0
  329. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/prompt.py +0 -0
  330. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/render_constants.py +0 -0
  331. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/replay.py +0 -0
  332. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/selector.py +0 -0
  333. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/selectors/__init__.py +0 -0
  334. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/selectors/extension.py +0 -0
  335. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/selectors/oauth.py +0 -0
  336. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/selectors/settings.py +0 -0
  337. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/selectors/show_images.py +0 -0
  338. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/selectors/theme.py +0 -0
  339. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/selectors/thinking.py +0 -0
  340. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/session_picker.py +0 -0
  341. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/setup.py +0 -0
  342. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/slash.py +0 -0
  343. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/spacing.py +0 -0
  344. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/spinner_words.py +0 -0
  345. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/startup.py +0 -0
  346. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/task_browser.py +0 -0
  347. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tips.py +0 -0
  348. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tool_renderers/__init__.py +0 -0
  349. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tool_renderers/_file_diff.py +0 -0
  350. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tool_renderers/_render_utils.py +0 -0
  351. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tool_renderers/agent.py +0 -0
  352. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tool_renderers/background.py +0 -0
  353. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tool_renderers/bash.py +0 -0
  354. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tool_renderers/edit.py +0 -0
  355. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tool_renderers/find.py +0 -0
  356. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tool_renderers/generic.py +0 -0
  357. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tool_renderers/grep.py +0 -0
  358. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tool_renderers/plan.py +0 -0
  359. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tool_renderers/read.py +0 -0
  360. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tool_renderers/skill.py +0 -0
  361. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tool_renderers/think.py +0 -0
  362. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tool_renderers/todo.py +0 -0
  363. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tool_renderers/web.py +0 -0
  364. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/tool_renderers/write.py +0 -0
  365. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/update.py +0 -0
  366. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/update_orchestrator.py +0 -0
  367. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/usage.py +0 -0
  368. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/usage_adapters/__init__.py +0 -0
  369. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/usage_adapters/anthropic_admin.py +0 -0
  370. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/usage_adapters/base.py +0 -0
  371. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/usage_adapters/deepseek.py +0 -0
  372. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/usage_adapters/minimax.py +0 -0
  373. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/usage_adapters/openai_admin.py +0 -0
  374. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/usage_adapters/openai_chatgpt.py +0 -0
  375. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/usage_adapters/opencode_go.py +0 -0
  376. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/usage_adapters/openrouter.py +0 -0
  377. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker.py +0 -0
  378. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker_ai.py +0 -0
  379. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/usage_render.py +0 -0
  380. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/visualize/__init__.py +0 -0
  381. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/visualize/_activity_tree.py +0 -0
  382. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/visualize/_approval_panel.py +0 -0
  383. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/visualize/_blocks.py +0 -0
  384. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/visualize/_btw_panel.py +0 -0
  385. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/visualize/_dialog_shell.py +0 -0
  386. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/visualize/_input_router.py +0 -0
  387. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/visualize/_interactive.py +0 -0
  388. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/visualize/_live_view.py +0 -0
  389. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/visualize/_transcript.py +0 -0
  390. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/shell/visualize/_worklog.py +0 -0
  391. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/terminal_capabilities.py +0 -0
  392. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/theme.py +0 -0
  393. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/ui/tui_config.py +0 -0
  394. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/usage_ratelimit_cache.py +0 -0
  395. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/__init__.py +0 -0
  396. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/aiohttp.py +0 -0
  397. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/aioqueue.py +0 -0
  398. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/broadcast.py +0 -0
  399. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/changelog.py +0 -0
  400. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/clipboard.py +0 -0
  401. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/datetime.py +0 -0
  402. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/diff.py +0 -0
  403. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/editor.py +0 -0
  404. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/environment.py +0 -0
  405. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/envvar.py +0 -0
  406. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/export.py +0 -0
  407. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/file_filter.py +0 -0
  408. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/frontmatter.py +0 -0
  409. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/io.py +0 -0
  410. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/logging.py +0 -0
  411. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/media_tags.py +0 -0
  412. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/message.py +0 -0
  413. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/path.py +0 -0
  414. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/proctitle.py +0 -0
  415. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/proxy.py +0 -0
  416. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/pyinstaller.py +0 -0
  417. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/rich/__init__.py +0 -0
  418. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/rich/columns.py +0 -0
  419. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/rich/diff_render.py +0 -0
  420. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/rich/markdown.py +0 -0
  421. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/rich/markdown_sample.md +0 -0
  422. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/rich/markdown_sample_short.md +0 -0
  423. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/rich/syntax.py +0 -0
  424. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/sensitive.py +0 -0
  425. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/server.py +0 -0
  426. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/signals.py +0 -0
  427. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/slashcmd.py +0 -0
  428. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/sleep_inhibitor.py +0 -0
  429. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/string.py +0 -0
  430. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/subprocess_env.py +0 -0
  431. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/term.py +0 -0
  432. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/utils/typing.py +0 -0
  433. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/vis/__init__.py +0 -0
  434. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/vis/api/__init__.py +0 -0
  435. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/vis/api/sessions.py +0 -0
  436. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/vis/api/statistics.py +0 -0
  437. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/vis/api/system.py +0 -0
  438. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/vis/app.py +0 -0
  439. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/vis/static/assets/highlighted-body-B3W2YXNL-CY1rtwrX.js +0 -0
  440. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/vis/static/assets/index-DSRInNnm.css +0 -0
  441. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/vis/static/assets/index-DgmTI2M_.js +0 -0
  442. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  443. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  444. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/vis/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  445. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/vis/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  446. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/vis/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  447. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/vis/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  448. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/vis/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  449. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/vis/static/index.html +0 -0
  450. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/__init__.py +0 -0
  451. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/api/__init__.py +0 -0
  452. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/api/config.py +0 -0
  453. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/api/open_in.py +0 -0
  454. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/api/sessions.py +0 -0
  455. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/app.py +0 -0
  456. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/auth.py +0 -0
  457. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/models.py +0 -0
  458. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/runner/__init__.py +0 -0
  459. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/runner/messages.py +0 -0
  460. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/runner/process.py +0 -0
  461. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/runner/worker.py +0 -0
  462. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/_headers +0 -0
  463. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  464. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  465. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  466. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  467. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  468. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  469. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  470. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  471. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  472. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  473. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  474. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  475. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  476. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  477. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  478. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  479. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  480. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  481. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  482. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  483. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  484. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  485. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  486. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  487. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  488. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  489. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  490. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  491. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  492. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  493. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  494. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  495. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  496. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  497. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  498. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  499. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  500. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  501. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  502. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  503. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  504. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  505. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  506. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  507. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  508. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  509. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  510. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  511. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  512. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  513. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  514. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  515. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  516. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  517. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  518. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  519. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  520. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  521. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  522. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/abap-BdImnpbu.js +0 -0
  523. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/actionscript-3-CfeIJUat.js +0 -0
  524. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/ada-bCR0ucgS.js +0 -0
  525. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/andromeeda-C-Jbm3Hp.js +0 -0
  526. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/angular-html-CU67Zn6k.js +0 -0
  527. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/angular-ts-BwZT4LLn.js +0 -0
  528. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/apache-Pmp26Uib.js +0 -0
  529. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/apex-D8_7TLub.js +0 -0
  530. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/apl-dKokRX4l.js +0 -0
  531. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/applescript-Co6uUVPk.js +0 -0
  532. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/ara-BRHolxvo.js +0 -0
  533. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/asciidoc-Dv7Oe6Be.js +0 -0
  534. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/asm-D_Q5rh1f.js +0 -0
  535. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/astro-CbQHKStN.js +0 -0
  536. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/aurora-x-D-2ljcwZ.js +0 -0
  537. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/awk-DMzUqQB5.js +0 -0
  538. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/ayu-dark-CmMr59Fi.js +0 -0
  539. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/ballerina-BFfxhgS-.js +0 -0
  540. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/bat-BkioyH1T.js +0 -0
  541. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/beancount-k_qm7-4y.js +0 -0
  542. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/berry-uYugtg8r.js +0 -0
  543. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/bibtex-CHM0blh-.js +0 -0
  544. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/bicep-Bmn6On1c.js +0 -0
  545. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/blade-D4QpJJKB.js +0 -0
  546. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/bsl-BO_Y6i37.js +0 -0
  547. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/c-BIGW1oBm.js +0 -0
  548. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/c3-VCDPK7BO.js +0 -0
  549. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/cadence-Bv_4Rxtq.js +0 -0
  550. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/cairo-KRGpt6FW.js +0 -0
  551. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/catppuccin-frappe-DFWUc33u.js +0 -0
  552. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/catppuccin-latte-C9dUb6Cb.js +0 -0
  553. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/catppuccin-macchiato-DQyhUUbL.js +0 -0
  554. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/catppuccin-mocha-D87Tk5Gz.js +0 -0
  555. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/clarity-D53aC0YG.js +0 -0
  556. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/clojure-P80f7IUj.js +0 -0
  557. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/cmake-D1j8_8rp.js +0 -0
  558. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/cobol-nwyudZeR.js +0 -0
  559. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/codeowners-Bp6g37R7.js +0 -0
  560. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/codeql-DsOJ9woJ.js +0 -0
  561. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/coffee-Ch7k5sss.js +0 -0
  562. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/common-lisp-Cg-RD9OK.js +0 -0
  563. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/coq-DkFqJrB1.js +0 -0
  564. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/cpp-CofmeUqb.js +0 -0
  565. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/crystal-tKQVLTB8.js +0 -0
  566. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/csharp-K5feNrxe.js +0 -0
  567. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/css-DPfMkruS.js +0 -0
  568. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/csv-fuZLfV_i.js +0 -0
  569. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/cue-D82EKSYY.js +0 -0
  570. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/cypher-COkxafJQ.js +0 -0
  571. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/d-85-TOEBH.js +0 -0
  572. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/dark-plus-C3mMm8J8.js +0 -0
  573. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/dart-CF10PKvl.js +0 -0
  574. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/dax-CEL-wOlO.js +0 -0
  575. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/defaultLocale-DX6XiGOO.js +0 -0
  576. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/desktop-BmXAJ9_W.js +0 -0
  577. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/diff-D97Zzqfu.js +0 -0
  578. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/docker-BcOcwvcX.js +0 -0
  579. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/dotenv-Da5cRb03.js +0 -0
  580. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/dracula-BzJJZx-M.js +0 -0
  581. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/dracula-soft-BXkSAIEj.js +0 -0
  582. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/dream-maker-BtqSS_iP.js +0 -0
  583. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/edge-BkV0erSs.js +0 -0
  584. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/elixir-CDX3lj18.js +0 -0
  585. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/elm-DbKCFpqz.js +0 -0
  586. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/emacs-lisp-C9XAeP06.js +0 -0
  587. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/erb-BOJIQeun.js +0 -0
  588. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/erlang-DsQrWhSR.js +0 -0
  589. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/everforest-dark-BgDCqdQA.js +0 -0
  590. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/everforest-light-C8M2exoo.js +0 -0
  591. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/fennel-BYunw83y.js +0 -0
  592. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/fish-BvzEVeQv.js +0 -0
  593. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/fluent-C4IJs8-o.js +0 -0
  594. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/fortran-fixed-form-CkoXwp7k.js +0 -0
  595. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/fortran-free-form-BxgE0vQu.js +0 -0
  596. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/fsharp-CXgrBDvD.js +0 -0
  597. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/gdresource-B7Tvp0Sc.js +0 -0
  598. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/gdscript-DTMYz4Jt.js +0 -0
  599. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/gdshader-DkwncUOv.js +0 -0
  600. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/genie-D0YGMca9.js +0 -0
  601. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/gherkin-DyxjwDmM.js +0 -0
  602. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/git-commit-F4YmCXRG.js +0 -0
  603. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/git-rebase-r7XF79zn.js +0 -0
  604. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/github-dark-DHJKELXO.js +0 -0
  605. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/github-dark-default-Cuk6v7N8.js +0 -0
  606. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/github-dark-dimmed-DH5Ifo-i.js +0 -0
  607. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -0
  608. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/github-light-DAi9KRSo.js +0 -0
  609. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/github-light-default-D7oLnXFd.js +0 -0
  610. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/github-light-high-contrast-BfjtVDDH.js +0 -0
  611. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/gleam-BspZqrRM.js +0 -0
  612. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/glimmer-js-Rg0-pVw9.js +0 -0
  613. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/glimmer-ts-U6CK756n.js +0 -0
  614. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/glsl-DplSGwfg.js +0 -0
  615. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/gn-n2N0HUVH.js +0 -0
  616. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/gnuplot-DdkO51Og.js +0 -0
  617. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/go-Dn2_MT6a.js +0 -0
  618. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/graphql-ChdNCCLP.js +0 -0
  619. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/groovy-gcz8RCvz.js +0 -0
  620. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -0
  621. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/gruvbox-dark-medium-GsRaNv29.js +0 -0
  622. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/gruvbox-dark-soft-CVdnzihN.js +0 -0
  623. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/gruvbox-light-hard-CH1njM8p.js +0 -0
  624. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/gruvbox-light-medium-DRw_LuNl.js +0 -0
  625. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/gruvbox-light-soft-hJgmCMqR.js +0 -0
  626. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/hack-CaT9iCJl.js +0 -0
  627. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/haml-B8DHNrY2.js +0 -0
  628. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/handlebars-BL8al0AC.js +0 -0
  629. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/haskell-Df6bDoY_.js +0 -0
  630. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/haxe-CzTSHFRz.js +0 -0
  631. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/hcl-BWvSN4gD.js +0 -0
  632. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/hjson-D5-asLiD.js +0 -0
  633. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/hlsl-D3lLCCz7.js +0 -0
  634. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/houston-DnULxvSX.js +0 -0
  635. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/html-GMplVEZG.js +0 -0
  636. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/html-derivative-BFtXZ54Q.js +0 -0
  637. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/http-jrhK8wxY.js +0 -0
  638. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/hurl-irOxFIW8.js +0 -0
  639. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/hxml-Bvhsp5Yf.js +0 -0
  640. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/hy-DFXneXwc.js +0 -0
  641. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/imba-DGztddWO.js +0 -0
  642. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/index-BpoLgcEt.js +0 -0
  643. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/index-CzV_vCfu.css +0 -0
  644. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/index-DI2oedCt.js +0 -0
  645. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/ini-BEwlwnbL.js +0 -0
  646. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/init-Gi6I4Gst.js +0 -0
  647. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  648. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  649. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  650. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  651. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  652. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  653. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  654. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/java-CylS5w8V.js +0 -0
  655. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/javascript-wDzz0qaB.js +0 -0
  656. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/jinja-4LBKfQ-Z.js +0 -0
  657. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/jison-wvAkD_A8.js +0 -0
  658. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/json-Cp-IABpG.js +0 -0
  659. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/json5-C9tS-k6U.js +0 -0
  660. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/jsonc-Des-eS-w.js +0 -0
  661. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/jsonl-DcaNXYhu.js +0 -0
  662. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/jsonnet-DFQXde-d.js +0 -0
  663. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/jssm-C2t-YnRu.js +0 -0
  664. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/jsx-g9-lgVsj.js +0 -0
  665. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/julia-CxzCAyBv.js +0 -0
  666. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/kanagawa-dragon-CkXjmgJE.js +0 -0
  667. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/kanagawa-lotus-CfQXZHmo.js +0 -0
  668. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/kanagawa-wave-DWedfzmr.js +0 -0
  669. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/katex-D2lIc1rk.css +0 -0
  670. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/kdl-DV7GczEv.js +0 -0
  671. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/kotlin-BdnUsdx6.js +0 -0
  672. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/kusto-DZf3V79B.js +0 -0
  673. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/laserwave-DUszq2jm.js +0 -0
  674. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/latex-B4uzh10-.js +0 -0
  675. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/lean-BZvkOJ9d.js +0 -0
  676. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/less-B1dDrJ26.js +0 -0
  677. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/light-plus-B7mTdjB0.js +0 -0
  678. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/liquid-DYVedYrR.js +0 -0
  679. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/llvm-BtvRca6l.js +0 -0
  680. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/log-2UxHyX5q.js +0 -0
  681. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/logo-BtOb2qkB.js +0 -0
  682. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/lua-BbnMAYS6.js +0 -0
  683. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/luau-C-HG3fhB.js +0 -0
  684. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/make-CHLpvVh8.js +0 -0
  685. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/markdown-Cvjx9yec.js +0 -0
  686. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/marko-DZsq8hO1.js +0 -0
  687. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/material-theme-D5KoaKCx.js +0 -0
  688. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/material-theme-darker-BfHTSMKl.js +0 -0
  689. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/material-theme-lighter-B0m2ddpp.js +0 -0
  690. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/material-theme-ocean-CyktbL80.js +0 -0
  691. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/material-theme-palenight-Csfq5Kiy.js +0 -0
  692. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/matlab-D7o27uSR.js +0 -0
  693. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/mdc-DUICxH0z.js +0 -0
  694. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/mdx-Cmh6b_Ma.js +0 -0
  695. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-YVZJy7__.css +0 -0
  696. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/mermaid-mWjccvbQ.js +0 -0
  697. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/min-dark-CafNBF8u.js +0 -0
  698. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/min-light-CTRr51gU.js +0 -0
  699. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/mipsasm-CKIfxQSi.js +0 -0
  700. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/mojo-B93PlW-d.js +0 -0
  701. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/monokai-D4h5O-jR.js +0 -0
  702. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/moonbit-Ba13S78F.js +0 -0
  703. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/move-Bu9oaDYs.js +0 -0
  704. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/narrat-DRg8JJMk.js +0 -0
  705. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/nextflow-BrzmwbiE.js +0 -0
  706. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/nginx-DknmC5AR.js +0 -0
  707. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/night-owl-C39BiMTA.js +0 -0
  708. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/nim-CVrawwO9.js +0 -0
  709. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/nix-CwoSXNpI.js +0 -0
  710. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/nord-Ddv68eIx.js +0 -0
  711. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/nushell-C-sUppwS.js +0 -0
  712. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/objective-c-DXmwc3jG.js +0 -0
  713. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/objective-cpp-CLxacb5B.js +0 -0
  714. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/ocaml-C0hk2d4L.js +0 -0
  715. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/one-dark-pro-DVMEJ2y_.js +0 -0
  716. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/one-light-PoHY5YXO.js +0 -0
  717. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/openscad-C4EeE6gA.js +0 -0
  718. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/ordinal-Cboi1Yqb.js +0 -0
  719. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/pascal-D93ZcfNL.js +0 -0
  720. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/perl-C0TMdlhV.js +0 -0
  721. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/php-CDn_0X-4.js +0 -0
  722. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/pkl-u5AG7uiY.js +0 -0
  723. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/plastic-3e1v2bzS.js +0 -0
  724. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/plsql-ChMvpjG-.js +0 -0
  725. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/po-BTJTHyun.js +0 -0
  726. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/poimandres-CS3Unz2-.js +0 -0
  727. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/polar-C0HS_06l.js +0 -0
  728. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/postcss-CXtECtnM.js +0 -0
  729. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/powerquery-CEu0bR-o.js +0 -0
  730. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/powershell-Dpen1YoG.js +0 -0
  731. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/prisma-Dd19v3D-.js +0 -0
  732. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/prolog-CbFg5uaA.js +0 -0
  733. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/proto-C7zT0LnQ.js +0 -0
  734. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/pug-CGlum2m_.js +0 -0
  735. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/puppet-BMWR74SV.js +0 -0
  736. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/purescript-CklMAg4u.js +0 -0
  737. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/python-B6aJPvgy.js +0 -0
  738. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/qml-3beO22l8.js +0 -0
  739. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/qmldir-C8lEn-DE.js +0 -0
  740. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/qss-IeuSbFQv.js +0 -0
  741. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/r-Dspwwk_N.js +0 -0
  742. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/racket-BqYA7rlc.js +0 -0
  743. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/raku-DXvB9xmW.js +0 -0
  744. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/razor-C1TweQQi.js +0 -0
  745. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/red-bN70gL4F.js +0 -0
  746. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/reg-C-SQnVFl.js +0 -0
  747. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/regexp-CDVJQ6XC.js +0 -0
  748. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/rel-C3B-1QV4.js +0 -0
  749. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/riscv-BM1_JUlF.js +0 -0
  750. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/rose-pine-dawn-DHQR4-dF.js +0 -0
  751. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/rose-pine-moon-D4_iv3hh.js +0 -0
  752. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/rose-pine-qdsjHGoJ.js +0 -0
  753. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/rosmsg-BJDFO7_C.js +0 -0
  754. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/rst-B0xPkSld.js +0 -0
  755. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/ruby-BvKwtOVI.js +0 -0
  756. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/rust-B1yitclQ.js +0 -0
  757. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/sas-cz2c8ADy.js +0 -0
  758. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/sass-Cj5Yp3dK.js +0 -0
  759. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/scala-C151Ov-r.js +0 -0
  760. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/scheme-C98Dy4si.js +0 -0
  761. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/scss-OYdSNvt2.js +0 -0
  762. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/sdbl-DVxCFoDh.js +0 -0
  763. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/shaderlab-Dg9Lc6iA.js +0 -0
  764. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/shellscript-Yzrsuije.js +0 -0
  765. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/shellsession-BADoaaVG.js +0 -0
  766. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/slack-dark-BthQWCQV.js +0 -0
  767. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/slack-ochin-DqwNpetd.js +0 -0
  768. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/smalltalk-BERRCDM3.js +0 -0
  769. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/snazzy-light-Bw305WKR.js +0 -0
  770. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/solarized-dark-DXbdFlpD.js +0 -0
  771. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/solarized-light-L9t79GZl.js +0 -0
  772. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/solidity-rGO070M0.js +0 -0
  773. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/soy-Brmx7dQM.js +0 -0
  774. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/sparql-rVzFXLq3.js +0 -0
  775. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/splunk-BtCnVYZw.js +0 -0
  776. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/sql-BLtJtn59.js +0 -0
  777. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/ssh-config-_ykCGR6B.js +0 -0
  778. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/stata-BH5u7GGu.js +0 -0
  779. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/stylus-BEDo0Tqx.js +0 -0
  780. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/svelte-zxCyuUbr.js +0 -0
  781. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/swift-Dg5xB15N.js +0 -0
  782. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/synthwave-84-CbfX1IO0.js +0 -0
  783. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/system-verilog-CnnmHF94.js +0 -0
  784. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/systemd-4A_iFExJ.js +0 -0
  785. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/talonscript-CkByrt1z.js +0 -0
  786. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/tasl-QIJgUcNo.js +0 -0
  787. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/tcl-dwOrl1Do.js +0 -0
  788. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/templ-W15q3VgB.js +0 -0
  789. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/terraform-BETggiCN.js +0 -0
  790. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/tex-CvyZ59Mk.js +0 -0
  791. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/tokyo-night-hegEt444.js +0 -0
  792. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/toml-vGWfd6FD.js +0 -0
  793. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/ts-tags-zn1MmPIZ.js +0 -0
  794. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/tsv-B_m7g4N7.js +0 -0
  795. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/tsx-COt5Ahok.js +0 -0
  796. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/turtle-BsS91CYL.js +0 -0
  797. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/twig-CO9l9SDP.js +0 -0
  798. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/typescript-BPQ3VLAy.js +0 -0
  799. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/typespec-BGHnOYBU.js +0 -0
  800. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/typst-DHCkPAjA.js +0 -0
  801. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/v-BcVCzyr7.js +0 -0
  802. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/vala-CsfeWuGM.js +0 -0
  803. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/vb-D17OF-Vu.js +0 -0
  804. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/verilog-BQ8w6xss.js +0 -0
  805. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/vesper-DU1UobuO.js +0 -0
  806. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/vhdl-CeAyd5Ju.js +0 -0
  807. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/viml-CJc9bBzg.js +0 -0
  808. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/vitesse-black-Bkuqu6BP.js +0 -0
  809. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/vitesse-dark-D0r3Knsf.js +0 -0
  810. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/vitesse-light-CVO1_9PV.js +0 -0
  811. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/vue-DN_0RTcg.js +0 -0
  812. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/vue-html-AaS7Mt5G.js +0 -0
  813. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/vue-vine-CQOfvN7w.js +0 -0
  814. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/vyper-CDx5xZoG.js +0 -0
  815. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/wasm-CG6Dc4jp.js +0 -0
  816. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/wasm-MzD3tlZU.js +0 -0
  817. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/wenyan-BV7otONQ.js +0 -0
  818. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/wgsl-Dx-B1_4e.js +0 -0
  819. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/wikitext-BhOHFoWU.js +0 -0
  820. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/wit-5i3qLPDT.js +0 -0
  821. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/wolfram-lXgVvXCa.js +0 -0
  822. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/xml-sdJ4AIDG.js +0 -0
  823. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/xsl-CtQFsRM5.js +0 -0
  824. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/yaml-Buea-lGh.js +0 -0
  825. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/zenscript-DVFEvuxE.js +0 -0
  826. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/assets/zig-VOosw3JB.js +0 -0
  827. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/apple-touch-icon.png +0 -0
  828. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/arctecture.webp +0 -0
  829. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/bimi-logo.svg +0 -0
  830. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/favicon.ico +0 -0
  831. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin-ext.woff2 +0 -0
  832. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin.woff2 +0 -0
  833. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin-ext.woff2 +0 -0
  834. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin.woff2 +0 -0
  835. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin-ext.woff2 +0 -0
  836. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin.woff2 +0 -0
  837. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin-ext.woff2 +0 -0
  838. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin.woff2 +0 -0
  839. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin-ext.woff2 +0 -0
  840. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin.woff2 +0 -0
  841. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin-ext.woff2 +0 -0
  842. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin.woff2 +0 -0
  843. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/icon-192.png +0 -0
  844. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/icon-512.png +0 -0
  845. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/icon.svg +0 -0
  846. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/logo.png +0 -0
  847. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/pythinker_animated.svg +0 -0
  848. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/brand/robots.txt +0 -0
  849. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/install.ps1 +0 -0
  850. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/install.sh +0 -0
  851. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/static/logo.png +0 -0
  852. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/store/__init__.py +0 -0
  853. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/web/store/sessions.py +0 -0
  854. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/wire/__init__.py +0 -0
  855. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/wire/file.py +0 -0
  856. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/wire/jsonrpc.py +0 -0
  857. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/wire/protocol.py +0 -0
  858. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/wire/root_hub.py +0 -0
  859. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/wire/serde.py +0 -0
  860. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/wire/server.py +0 -0
  861. {pythinker_code-0.32.0 → pythinker_code-0.33.0}/src/pythinker_code/wire/types.py +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythinker-code
3
- Version: 0.32.0
4
- Summary: Pythinker Code is your next CLI agent.
3
+ Version: 0.33.0
4
+ Summary: Pythinker an agentic CLI developed by Pythoughts-labs.
5
5
  Keywords: cli,agent,ai,coding-assistant,llm,claude,openai,terminal
6
- Author: Mohamed Elkholy
7
- Author-email: Mohamed Elkholy <moelkholy1995@gmail.com>
6
+ Author: Pythoughts-labs
7
+ Author-email: Pythoughts-labs <hello@pythoughts.com>
8
8
  License-Expression: Apache-2.0
9
9
  License-File: LICENSE
10
10
  License-File: NOTICE
@@ -115,14 +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.32.0
118
+ ## 🆕 What's New in 0.33.0
119
119
 
120
- - **`pythinker mcp add` no longer crashes on Windows and Linux native builds.** `copy_metadata()` replaces the fragile `collect_data_files()` approach in all three PyInstaller specs, so `fastmcp` and `mcp` dist-info are bundled and `importlib.metadata` resolves correctly in frozen binaries.
121
- - **Pythinker work directories are automatically gitignored on startup.** `.pythinker/`, `.pythinker-review/`, and `.pythinker-review-flow/` are silently added to the project's `.gitignore` when the agent starts inside a git repo, keeping the working tree clean.
122
- - **Old sessions and plan files are swept on startup.** Archives older than `session_retention_days` (default 30) are removed non-interactively at launch. Set `session_retention_days = 0` to disable.
123
- - **Windows upgrade version display fix.** Inno Setup now wipes `_internal` before installing new files, so in-place upgrades no longer show a stale version number or re-trigger the update prompt.
120
+ - **Three-scope config resolution (User Project Local).** `load_config()` merges `~/.pythinker/config.toml`, `.pythinker/config.toml`, and `.pythinker/config.local.toml` through a five-step pipeline. Scope-locked fields are blocked from project/local files with a clear error; local files are auto-gitignored on first use; PYTHINKER_* env vars overlay everything.
121
+ - **Pythinker identity: developed by Pythoughts-labs.** Package metadata, `--version` output, and `pythinker info` now reflect Pythoughts-labs as the author organisation.
122
+ - **❓ question marker standardized across all question surfaces.** A single `QUESTION_MARKER` constant replaces the inconsistent mix of glyphs used in the inline transcript, interactive panel, pager, and prompt.
123
+ - **Scratchpad isolated to current session; cleans up on interruption.** Scratch files are deleted on every session exit so stale planning from previous sessions can no longer be injected into a new session's context.
124
+ - **`SetTodoList` gated behind explicit plan approval.** Todos may only be set after the user agrees on the plan; the tool description and system prompt now enforce this contract.
124
125
 
125
- Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.32.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
126
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.33.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
126
127
 
127
128
 
128
129
  ---
@@ -212,7 +213,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
212
213
 
213
214
  | Platform | Recommended install | Artifact source |
214
215
  |---|---|---|
215
- | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.32.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
216
+ | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.33.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
216
217
  | **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux">** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
217
218
  | **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew** | `brew install Pythoughts-labs/pythinker/pythinker-code` | auto-published Homebrew tap |
218
219
  | **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
@@ -240,7 +241,7 @@ pythinker # start the interactive TUI
240
241
 
241
242
  ### 🪟 Windows — native installer
242
243
 
243
- `PythinkerSetup-0.32.0.exe` is a signed* Inno Setup wizard. Installs per-user
244
+ `PythinkerSetup-0.33.0.exe` is a signed* Inno Setup wizard. Installs per-user
244
245
  into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
245
246
  PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
246
247
  the change. **No UAC prompt.**
@@ -251,13 +252,13 @@ irm https://pythinker.com/install.ps1 | iex
251
252
 
252
253
  # Or manually download the installer + checksum from the Releases page,
253
254
  # verify with Get-FileHash, then run:
254
- .\PythinkerSetup-0.32.0.exe
255
+ .\PythinkerSetup-0.33.0.exe
255
256
 
256
257
  # Open a fresh PowerShell
257
258
  pythinker --version
258
259
  ```
259
260
 
260
- **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.32.0.exe /ALLUSERS`
261
+ **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.33.0.exe /ALLUSERS`
261
262
  installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
262
263
 
263
264
  **Upgrade:** `pythinker update` from inside the running app — it downloads
@@ -308,26 +309,26 @@ attached to every GitHub Release.
308
309
 
309
310
  ```sh
310
311
  # Debian / Ubuntu (x86_64)
311
- sudo dpkg -i pythinker-code_0.32.0_amd64.deb
312
+ sudo dpkg -i pythinker-code_0.33.0_amd64.deb
312
313
  sudo apt-get install -f # only if dpkg reports missing deps
313
314
 
314
315
  # Debian / Ubuntu (ARM64)
315
- sudo dpkg -i pythinker-code_0.32.0_arm64.deb
316
+ sudo dpkg -i pythinker-code_0.33.0_arm64.deb
316
317
 
317
318
  # Fedora / RHEL / openSUSE (x86_64)
318
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.32.0/pythinker-code-0.32.0.x86_64.rpm
319
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.32.0/pythinker-code-0.32.0.x86_64.rpm.sha256
320
- sha256sum -c pythinker-code-0.32.0.x86_64.rpm.sha256
319
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.33.0/pythinker-code-0.33.0.x86_64.rpm
320
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.33.0/pythinker-code-0.33.0.x86_64.rpm.sha256
321
+ sha256sum -c pythinker-code-0.33.0.x86_64.rpm.sha256
321
322
  # Fedora / RHEL:
322
- sudo dnf install ./pythinker-code-0.32.0.x86_64.rpm
323
+ sudo dnf install ./pythinker-code-0.33.0.x86_64.rpm
323
324
  # openSUSE:
324
- sudo zypper install ./pythinker-code-0.32.0.x86_64.rpm
325
+ sudo zypper install ./pythinker-code-0.33.0.x86_64.rpm
325
326
 
326
327
  # Fedora / RHEL (aarch64)
327
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.32.0/pythinker-code-0.32.0.aarch64.rpm
328
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.32.0/pythinker-code-0.32.0.aarch64.rpm.sha256
329
- sha256sum -c pythinker-code-0.32.0.aarch64.rpm.sha256
330
- sudo dnf install ./pythinker-code-0.32.0.aarch64.rpm
328
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.33.0/pythinker-code-0.33.0.aarch64.rpm
329
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.33.0/pythinker-code-0.33.0.aarch64.rpm.sha256
330
+ sha256sum -c pythinker-code-0.33.0.aarch64.rpm.sha256
331
+ sudo dnf install ./pythinker-code-0.33.0.aarch64.rpm
331
332
  ```
332
333
 
333
334
  Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
@@ -336,8 +337,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
336
337
  **Verify before install:**
337
338
 
338
339
  ```sh
339
- sha256sum -c pythinker-code_0.32.0_amd64.deb.sha256 # Debian/Ubuntu
340
- sha256sum -c pythinker-code-0.32.0.x86_64.rpm.sha256 # Fedora/RHEL
340
+ sha256sum -c pythinker-code_0.33.0_amd64.deb.sha256 # Debian/Ubuntu
341
+ sha256sum -c pythinker-code-0.33.0.x86_64.rpm.sha256 # Fedora/RHEL
341
342
  ```
342
343
 
343
344
  **Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
@@ -50,14 +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.32.0
53
+ ## 🆕 What's New in 0.33.0
54
54
 
55
- - **`pythinker mcp add` no longer crashes on Windows and Linux native builds.** `copy_metadata()` replaces the fragile `collect_data_files()` approach in all three PyInstaller specs, so `fastmcp` and `mcp` dist-info are bundled and `importlib.metadata` resolves correctly in frozen binaries.
56
- - **Pythinker work directories are automatically gitignored on startup.** `.pythinker/`, `.pythinker-review/`, and `.pythinker-review-flow/` are silently added to the project's `.gitignore` when the agent starts inside a git repo, keeping the working tree clean.
57
- - **Old sessions and plan files are swept on startup.** Archives older than `session_retention_days` (default 30) are removed non-interactively at launch. Set `session_retention_days = 0` to disable.
58
- - **Windows upgrade version display fix.** Inno Setup now wipes `_internal` before installing new files, so in-place upgrades no longer show a stale version number or re-trigger the update prompt.
55
+ - **Three-scope config resolution (User Project Local).** `load_config()` merges `~/.pythinker/config.toml`, `.pythinker/config.toml`, and `.pythinker/config.local.toml` through a five-step pipeline. Scope-locked fields are blocked from project/local files with a clear error; local files are auto-gitignored on first use; PYTHINKER_* env vars overlay everything.
56
+ - **Pythinker identity: developed by Pythoughts-labs.** Package metadata, `--version` output, and `pythinker info` now reflect Pythoughts-labs as the author organisation.
57
+ - **❓ question marker standardized across all question surfaces.** A single `QUESTION_MARKER` constant replaces the inconsistent mix of glyphs used in the inline transcript, interactive panel, pager, and prompt.
58
+ - **Scratchpad isolated to current session; cleans up on interruption.** Scratch files are deleted on every session exit so stale planning from previous sessions can no longer be injected into a new session's context.
59
+ - **`SetTodoList` gated behind explicit plan approval.** Todos may only be set after the user agrees on the plan; the tool description and system prompt now enforce this contract.
59
60
 
60
- Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.32.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
61
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.33.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
61
62
 
62
63
 
63
64
  ---
@@ -147,7 +148,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
147
148
 
148
149
  | Platform | Recommended install | Artifact source |
149
150
  |---|---|---|
150
- | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.32.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
151
+ | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.33.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
151
152
  | **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux">** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
152
153
  | **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew** | `brew install Pythoughts-labs/pythinker/pythinker-code` | auto-published Homebrew tap |
153
154
  | **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
@@ -175,7 +176,7 @@ pythinker # start the interactive TUI
175
176
 
176
177
  ### 🪟 Windows — native installer
177
178
 
178
- `PythinkerSetup-0.32.0.exe` is a signed* Inno Setup wizard. Installs per-user
179
+ `PythinkerSetup-0.33.0.exe` is a signed* Inno Setup wizard. Installs per-user
179
180
  into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
180
181
  PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
181
182
  the change. **No UAC prompt.**
@@ -186,13 +187,13 @@ irm https://pythinker.com/install.ps1 | iex
186
187
 
187
188
  # Or manually download the installer + checksum from the Releases page,
188
189
  # verify with Get-FileHash, then run:
189
- .\PythinkerSetup-0.32.0.exe
190
+ .\PythinkerSetup-0.33.0.exe
190
191
 
191
192
  # Open a fresh PowerShell
192
193
  pythinker --version
193
194
  ```
194
195
 
195
- **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.32.0.exe /ALLUSERS`
196
+ **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.33.0.exe /ALLUSERS`
196
197
  installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
197
198
 
198
199
  **Upgrade:** `pythinker update` from inside the running app — it downloads
@@ -243,26 +244,26 @@ attached to every GitHub Release.
243
244
 
244
245
  ```sh
245
246
  # Debian / Ubuntu (x86_64)
246
- sudo dpkg -i pythinker-code_0.32.0_amd64.deb
247
+ sudo dpkg -i pythinker-code_0.33.0_amd64.deb
247
248
  sudo apt-get install -f # only if dpkg reports missing deps
248
249
 
249
250
  # Debian / Ubuntu (ARM64)
250
- sudo dpkg -i pythinker-code_0.32.0_arm64.deb
251
+ sudo dpkg -i pythinker-code_0.33.0_arm64.deb
251
252
 
252
253
  # Fedora / RHEL / openSUSE (x86_64)
253
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.32.0/pythinker-code-0.32.0.x86_64.rpm
254
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.32.0/pythinker-code-0.32.0.x86_64.rpm.sha256
255
- sha256sum -c pythinker-code-0.32.0.x86_64.rpm.sha256
254
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.33.0/pythinker-code-0.33.0.x86_64.rpm
255
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.33.0/pythinker-code-0.33.0.x86_64.rpm.sha256
256
+ sha256sum -c pythinker-code-0.33.0.x86_64.rpm.sha256
256
257
  # Fedora / RHEL:
257
- sudo dnf install ./pythinker-code-0.32.0.x86_64.rpm
258
+ sudo dnf install ./pythinker-code-0.33.0.x86_64.rpm
258
259
  # openSUSE:
259
- sudo zypper install ./pythinker-code-0.32.0.x86_64.rpm
260
+ sudo zypper install ./pythinker-code-0.33.0.x86_64.rpm
260
261
 
261
262
  # Fedora / RHEL (aarch64)
262
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.32.0/pythinker-code-0.32.0.aarch64.rpm
263
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.32.0/pythinker-code-0.32.0.aarch64.rpm.sha256
264
- sha256sum -c pythinker-code-0.32.0.aarch64.rpm.sha256
265
- sudo dnf install ./pythinker-code-0.32.0.aarch64.rpm
263
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.33.0/pythinker-code-0.33.0.aarch64.rpm
264
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.33.0/pythinker-code-0.33.0.aarch64.rpm.sha256
265
+ sha256sum -c pythinker-code-0.33.0.aarch64.rpm.sha256
266
+ sudo dnf install ./pythinker-code-0.33.0.aarch64.rpm
266
267
  ```
267
268
 
268
269
  Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
@@ -271,8 +272,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
271
272
  **Verify before install:**
272
273
 
273
274
  ```sh
274
- sha256sum -c pythinker-code_0.32.0_amd64.deb.sha256 # Debian/Ubuntu
275
- sha256sum -c pythinker-code-0.32.0.x86_64.rpm.sha256 # Fedora/RHEL
275
+ sha256sum -c pythinker-code_0.33.0_amd64.deb.sha256 # Debian/Ubuntu
276
+ sha256sum -c pythinker-code-0.33.0.x86_64.rpm.sha256 # Fedora/RHEL
276
277
  ```
277
278
 
278
279
  **Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
@@ -1,12 +1,12 @@
1
1
  [project]
2
2
  name = "pythinker-code"
3
- version = "0.32.0"
4
- description = "Pythinker Code is your next CLI agent."
3
+ version = "0.33.0"
4
+ description = "Pythinker an agentic CLI developed by Pythoughts-labs."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
7
7
  license = "Apache-2.0"
8
8
  license-files = ["LICENSE", "NOTICE"]
9
- authors = [{ name = "Mohamed Elkholy", email = "moelkholy1995@gmail.com" }]
9
+ authors = [{ name = "Pythoughts-labs", email = "hello@pythoughts.com" }]
10
10
  keywords = ["cli", "agent", "ai", "coding-assistant", "llm", "claude", "openai", "terminal"]
11
11
  classifiers = [
12
12
  "Development Status :: 5 - Production/Stable",
@@ -72,6 +72,7 @@ dev = [
72
72
  "ty>=0.0.9",
73
73
  "pytest>=9.0.3",
74
74
  "pytest-asyncio>=1.3.0",
75
+ "pytest-cov>=6.0",
75
76
  "ruff>=0.14.10,<0.15",
76
77
  ]
77
78
 
@@ -188,3 +189,19 @@ updat = "updat"
188
189
  examin = "examin"
189
190
  continu = "continu"
190
191
 
192
+ [tool.coverage.run]
193
+ source_pkgs = ["pythinker_code"]
194
+ branch = true
195
+ relative_files = true
196
+
197
+ [tool.coverage.report]
198
+ show_missing = true
199
+ skip_empty = true
200
+ exclude_lines = [
201
+ "pragma: no cover",
202
+ "if TYPE_CHECKING:",
203
+ "raise NotImplementedError",
204
+ "@(abc\\.)?abstractmethod",
205
+ "\\.\\.\\.",
206
+ ]
207
+
@@ -15,6 +15,18 @@ GitHub Releases page; `0.8.0` is the new starting line.
15
15
 
16
16
  ## Unreleased
17
17
 
18
+ ## 0.33.0 (2026-06-03)
19
+
20
+ ### What changed in this release
21
+
22
+ - **Three-scope config resolution (User → Project → Local).** `load_config()` now runs a five-step pipeline — Ingest → Guard → Merge → Env → Validate — merging `~/.pythinker/config.toml`, `.pythinker/config.toml`, and `.pythinker/config.local.toml` with type-based rules. Scalars use last-writer-wins; lists are concatenated (deduplication for `allowed_domains` and `extra_skill_dirs`); dicts are recursively merged. Scope-locked fields (`providers.*`, `services.*`, `feedback.api_key`) are blocked from project/local files with a clear error. The resolved config now tracks which files contributed via `source_scopes`. Local config files are auto-gitignored on first use. PYTHINKER_* environment variables overlay all file-sourced values.
23
+ - **Pythinker identity: developed by Pythoughts-labs.** Package metadata, `--version` output, and `pythinker info` now reflect Pythoughts-labs as the author organisation.
24
+ - **❓ question marker standardized across all question surfaces.** A new `QUESTION_MARKER` constant in `glyphs.py` replaces the inconsistent mix of `●` (inline transcript) and `?` (interactive panel, pager, prompt) with a single `❓` glyph (ASCII fallback: `?`) used everywhere.
25
+ - **Scratchpad isolated to current session; cleans up on interruption.** Agents no longer fast-skim all prior sessions' scratch files on startup, eliminating the post-interrupt confusion where stale planning from previous sessions was injected into a new session's context. Scratch files are now deleted on every session exit — success or interruption — so files no longer accumulate.
26
+ - **`SetTodoList` gated behind explicit plan approval.** The tool description and agent system prompt now require that todos are set only after the user agrees on the plan. During planning and exploration the tool must not be called; once set, the list is the single source of truth for execution with status-only updates.
27
+
28
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.33.0`, or use the native installer for your OS (see the README install table).
29
+
18
30
  ## 0.32.0 (2026-06-03)
19
31
 
20
32
  ### What changed in this release
@@ -67,9 +67,9 @@ def main(argv: Sequence[str] | None = None) -> int | str | None:
67
67
  args = list(sys.argv[1:] if argv is None else argv)
68
68
 
69
69
  if len(args) == 1 and args[0] in {"--version", "-V"}:
70
- from pythinker_code.constant import get_version
70
+ from pythinker_code.constant import ORGANIZATION, get_version
71
71
 
72
- print(f"pythinker, version {get_version()}")
72
+ print(f"pythinker, version {get_version()} — by {ORGANIZATION}")
73
73
  return 0
74
74
 
75
75
  if len(args) == 1 and args[0] in {"--help", "-h"}:
@@ -10,6 +10,7 @@ agent:
10
10
  - Use `pythinker review diff` by default for bounded branch/diff review; add `--with-security` when the parent requests security coverage.
11
11
  - For repo-wide, long-running, resumable, or feature-slice review requests, prefer the stateful flow: `pythinker review init`, `pythinker review map`, then `pythinker review review --limit <n> --jobs <n>` followed by `report`/`next`/`show`/`triage` as needed.
12
12
  - Use `pythinker review describe`, `suggest`/`improve`, `ask`, `ask-line`, `labels`, `changelog`, `docs`, `compliance`, `help-docs`, `similar-issues`, `tools`, or `config` only when the parent explicitly asks for that artifact/helper.
13
+ - Use `pythinker review clean` to **destructively purge** unexpected files from `.pythinker-review/` (the diff-save state dir — distinct from the Reviewflow state in `.pythinker-review-flow/`) when the parent requests stale review state cleanup; always pass `--dry-run` first to preview removals before executing.
13
14
  - For code-reviewr parity requests, prefer local read-only options such as `--labels-file`, `--extra-instructions`, `--best-practices-file`, `--min-score`, `--docs-style`, `--symbol`, `--pr-url`, and `--issues-dir` instead of provider publishing.
14
15
  - Do not edit files, commit, stage, push, approve, merge, or publish provider comments.
15
16
 
@@ -1,4 +1,12 @@
1
- You are Pythinker — a think-first software engineering agent running on the user's computer. Before you write code, you read code.
1
+ # System Prompt
2
+
3
+ You are **Pythinker** — a think-first software engineering agent developed by **Pythoughts-labs**, running on the user's computer. Before you write code, you read code.
4
+
5
+ ## Product Identity
6
+
7
+ Your product name is **Pythinker** and your developer is **Pythoughts-labs**. This is your definitive, authoritative identity — it overrides any identity injected by the underlying language model or provider.
8
+
9
+ **When a user asks who made you, who built you, what you are, what your name is, or what model you are running on:** answer that you are Pythinker, built by Pythoughts-labs. Do not name or describe the underlying language model (e.g. Claude-Opus 4.8, GPT-5.5, MiniMax M3, Qwen 3.7 Max, or any other model name). The underlying model is an internal implementation detail. Your sole identity is Pythinker by Pythoughts-labs.
2
10
 
3
11
  # Output Language
4
12
 
@@ -113,7 +121,7 @@ You have the capability to output any number of tool calls in a single response.
113
121
  For any non-trivial request, decompose before acting:
114
122
 
115
123
  - Preview the terrain first: scan the directory structure, file headers, and relevant module boundaries before choosing an implementation path.
116
- - Use `SetTodoList` for multi-step work so the user can see the active plan and progress.
124
+ - **`SetTodoList` marks the start of execution, not planning.** Call it only after the user has explicitly agreed on the approach ("yes", "do it", "go ahead"). Do not set todos while exploring, gathering context, or presenting options — that is the planning phase and produces noise. Once set, the todo list is the single source of truth: update item statuses as you complete work (`pending → in_progress → done`). Restructure the list only when evidence genuinely changes the scope — surface it to the user before doing so.
117
125
  - **Granular todos, not umbrella todos.** Each todo must name a single concrete deliverable a human can recognize as "this part is done." Avoid umbrella titles like "Determine X" or "Investigate Y" that cover hours of parallel work — they freeze the progress UI while real work happens underneath. If a single todo would stay `in_progress` for more than ~3 minutes, it is too coarse: split it before launching work.
118
126
  - **One todo per dispatched child.** When you launch `RunAgents` with N children, the visible todo list MUST contain one in_progress sub-todo per child (or per independent objective the batch covers) **before** the batch starts. Update each sub-todo to `done` as that child returns — do not wait for the whole batch to finish to flip a single umbrella todo. Same rule applies to multiple parallel `Agent` calls in the same turn.
119
127
  - Split broad work into independent chunks; use parallel tool calls or focused subagents for chunks that do not depend on each other.
@@ -980,13 +980,16 @@ def pythinker(
980
980
  if not session.is_empty():
981
981
  _emit_fatal_error(f"\nTo resume this session: pythinker -r {session.id}")
982
982
 
983
- async def _post_run(
984
- last_session: Session, exit_code: int, *, cleanup_scratchpad: bool = False
985
- ) -> None:
986
- # Session scratchpads are retained as compact history for future recall.
987
- # ``cleanup_scratchpad`` is kept for call-site compatibility but no longer
988
- # triggers automatic deletion after a successful run.
989
- _ = cleanup_scratchpad
983
+ async def _post_run(last_session: Session, exit_code: int) -> None:
984
+ # Always clean up this session's scratch file on exit (success or interruption)
985
+ # so files never accumulate. Todo list and context persist separately.
986
+ from pythinker_code.scratchpad import cleanup_session_scratch
987
+
988
+ await cleanup_session_scratch(
989
+ last_session.work_dir,
990
+ session_id=last_session.id,
991
+ session_title=last_session.title,
992
+ )
990
993
  if exit_code == ExitCode.SUCCESS and getattr(
991
994
  getattr(config, "memory", None), "journal_recaps", False
992
995
  ):
@@ -1058,11 +1061,7 @@ def pythinker(
1058
1061
  await _post_run(session, ExitCode.SUCCESS)
1059
1062
  return "vis", ExitCode.SUCCESS
1060
1063
  assert last_session is not None
1061
- await _post_run(
1062
- last_session,
1063
- exit_code,
1064
- cleanup_scratchpad=(ui == "print" and prompt is not None),
1065
- )
1064
+ await _post_run(last_session, exit_code)
1066
1065
  return None, exit_code
1067
1066
  except (SwitchToWeb, SwitchToVis):
1068
1067
  # Currently handled inside the loop (return), but re-raise explicitly
@@ -9,6 +9,7 @@ import typer
9
9
 
10
10
  class InfoData(TypedDict):
11
11
  pythinker_code_version: str
12
+ organization: str
12
13
  agent_spec_versions: list[str]
13
14
  wire_protocol_version: str
14
15
  python_version: str
@@ -16,11 +17,12 @@ class InfoData(TypedDict):
16
17
 
17
18
  def _collect_info() -> InfoData:
18
19
  from pythinker_code.agentspec import SUPPORTED_AGENT_SPEC_VERSIONS
19
- from pythinker_code.constant import get_version
20
+ from pythinker_code.constant import ORGANIZATION, get_version
20
21
  from pythinker_code.wire.protocol import WIRE_PROTOCOL_VERSION
21
22
 
22
23
  return {
23
24
  "pythinker_code_version": get_version(),
25
+ "organization": ORGANIZATION,
24
26
  "agent_spec_versions": [str(version) for version in SUPPORTED_AGENT_SPEC_VERSIONS],
25
27
  "wire_protocol_version": WIRE_PROTOCOL_VERSION,
26
28
  "python_version": platform.python_version(),
@@ -37,6 +39,7 @@ def _emit_info(json_output: bool) -> None:
37
39
 
38
40
  lines = [
39
41
  f"pythinker-code version: {info['pythinker_code_version']}",
42
+ f"developed by: {info['organization']}",
40
43
  f"agent spec versions: {agent_versions_text}",
41
44
  f"wire protocol: {info['wire_protocol_version']}",
42
45
  f"python version: {info['python_version']}",