pythinker-code 0.43.0__tar.gz → 0.44.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 (976) hide show
  1. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/PKG-INFO +23 -25
  2. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/README.md +22 -24
  3. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/pyproject.toml +1 -1
  4. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/CHANGELOG.md +8 -0
  5. pythinker_code-0.44.0/src/pythinker_code/cli/info.py +117 -0
  6. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/config.py +7 -3
  7. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/share.py +10 -2
  8. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/__init__.py +1 -1
  9. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/selectors/settings.py +25 -0
  10. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/slash.py +145 -2
  11. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/update.py +20 -94
  12. pythinker_code-0.44.0/src/pythinker_code/update_policy.py +89 -0
  13. pythinker_code-0.44.0/src/pythinker_code/web/static/assets/architecture-7EHR7CIX-B9IRTQo7.js +1 -0
  14. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/architectureDiagram-3BPJPVTR-BFNDjk0o.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/architectureDiagram-3BPJPVTR-BnkpaR5O.js +1 -1
  15. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/blockDiagram-GPEHLZMM-DavOtQzm.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/blockDiagram-GPEHLZMM-e_MhfITx.js +1 -1
  16. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/bootstrap-CiM9CMSL.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/bootstrap-CwMnV7Zd.js +5 -5
  17. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/c4Diagram-AAUBKEIU-B5oqQ4Nw.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/c4Diagram-AAUBKEIU-BHeP9Afi.js +1 -1
  18. pythinker_code-0.44.0/src/pythinker_code/web/static/assets/channel-D6eTbsR5.js +1 -0
  19. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/chunk-2J33WTMH-DUf3kMx5.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/chunk-2J33WTMH-sjzfsYRI.js +1 -1
  20. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/chunk-3OPIFGDE-BqWQTT-T.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/chunk-3OPIFGDE-Diy54J-m.js +1 -1
  21. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/chunk-5ZQYHXKU-B_tCceNT.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/chunk-5ZQYHXKU-Cha6K3fv.js +1 -1
  22. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/chunk-727SXJPM-BTlgorYU.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/chunk-727SXJPM-8maRYfGZ.js +1 -1
  23. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/chunk-AQP2D5EJ-DGXLLDXi.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/chunk-AQP2D5EJ-BugAJq9M.js +1 -1
  24. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/chunk-CSCIHK7Q-DWI_ps1p.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/chunk-CSCIHK7Q-fNfOkomy.js +1 -1
  25. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/chunk-JAPRZBRM-CNbI-ZM-.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/chunk-JAPRZBRM-BqD8tL42.js +4 -4
  26. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/chunk-KSCS5N6A-BesuoyNL.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/chunk-KSCS5N6A-DjE4cbB9.js +1 -1
  27. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/chunk-L5ZTLDWV-C1CtDpYH.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/chunk-L5ZTLDWV-BBuq_T7N.js +1 -1
  28. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/chunk-LZXEDZCA-BXyvAmrA.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/chunk-LZXEDZCA-C9Ib4xBs.js +2 -2
  29. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/chunk-ND2GUHAM-oDsfNjJW.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/chunk-ND2GUHAM-Bm81WxoP.js +1 -1
  30. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/chunk-NZK2D7GU-BQLz5Zcv.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/chunk-NZK2D7GU-BSRiYhUY.js +1 -1
  31. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/chunk-O5CBEL6O-dMFdGz_Q.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/chunk-O5CBEL6O-ikkVvriS.js +1 -1
  32. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/chunk-WU5MYG2G-DjdJnChl.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/chunk-WU5MYG2G-B0dxIX1Z.js +1 -1
  33. pythinker_code-0.44.0/src/pythinker_code/web/static/assets/classDiagram-4FO5ZUOK-D6Cn2t8q.js +1 -0
  34. pythinker_code-0.44.0/src/pythinker_code/web/static/assets/classDiagram-v2-Q7XG4LA2-D6Cn2t8q.js +1 -0
  35. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-D-9Ul0bM.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/code-block-IT6T5CEO-ykYQSspy.js +1 -1
  36. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/dagre-BM42HDAG-DtiMfqCu.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/dagre-BM42HDAG-BVgOGrpH.js +1 -1
  37. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/diagram-2AECGRRQ-DOTI1tbw.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/diagram-2AECGRRQ-B_OMSNvN.js +1 -1
  38. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/diagram-5GNKFQAL-B2usKm-c.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/diagram-5GNKFQAL-DAi1-R2d.js +1 -1
  39. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/diagram-KO2AKTUF-P6LKGh5L.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/diagram-KO2AKTUF-CVPaBXbF.js +1 -1
  40. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/diagram-LMA3HP47-CUOk9Ref.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/diagram-LMA3HP47-DfPWmpwz.js +1 -1
  41. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/diagram-OG6HWLK6-BrwkH_cl.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/diagram-OG6HWLK6-CpV9uXPx.js +1 -1
  42. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/dist-C8_WGaGi.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/dist-h8mi_-6j.js +1 -1
  43. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/erDiagram-TEJ5UH35-CVGVAjD2.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/erDiagram-TEJ5UH35-DDhG-euv.js +1 -1
  44. pythinker_code-0.44.0/src/pythinker_code/web/static/assets/eventmodeling-FCH6USID-ChNU-x8b.js +1 -0
  45. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/flowDiagram-I6XJVG4X-9eeyqyGY.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/flowDiagram-I6XJVG4X-CaS1OzXM.js +1 -1
  46. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/ganttDiagram-6RSMTGT7-CS6z-Y4q.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/ganttDiagram-6RSMTGT7-Bd7at8fB.js +1 -1
  47. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/gitGraph-WXDBUCRP-CZexM5V4.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/gitGraph-WXDBUCRP-BXZoPljO.js +1 -1
  48. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/gitGraphDiagram-PVQCEYII-glHNqBti.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/gitGraphDiagram-PVQCEYII-C6WKYJ1c.js +1 -1
  49. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/index-kiyPWoI5.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/index-BVLby4kT.js +2 -2
  50. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/info-J43DQDTF-BZiJBT7D.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/info-J43DQDTF-BSjXjPWD.js +1 -1
  51. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/infoDiagram-5YYISTIA-BoIHamqU.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/infoDiagram-5YYISTIA-BmRBSqys.js +1 -1
  52. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/ishikawaDiagram-YF4QCWOH-DvG-0Xo4.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/ishikawaDiagram-YF4QCWOH-fgPipcob.js +1 -1
  53. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/journeyDiagram-JHISSGLW-CL1FBc-S.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/journeyDiagram-JHISSGLW-DL8Jtwnh.js +1 -1
  54. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/kanban-definition-UN3LZRKU-B60x3RfK.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/kanban-definition-UN3LZRKU-D1Jts2BV.js +1 -1
  55. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/line-CD1jDTNu.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/line-BSuVwcdH.js +1 -1
  56. pythinker_code-0.44.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-B2gPIPJx.js +1 -0
  57. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/mermaid-parser.core-DtoExEpJ.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/mermaid-parser.core-D1JrN2zq.js +2 -2
  58. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/mermaid.core-BwwvM-AZ.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/mermaid.core-C3w1FMla.js +3 -3
  59. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/mindmap-definition-RKZ34NQL-Tz82z8s2.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/mindmap-definition-RKZ34NQL-BnMo2qJe.js +1 -1
  60. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/packet-YPE3B663-C9tfQGo2.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/packet-YPE3B663-CIXAH8ey.js +1 -1
  61. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/pie-LRSECV5Y-Cuto_YOc.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/pie-LRSECV5Y-BvQ_6Rhy.js +1 -1
  62. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/pieDiagram-4H26LBE5-CmBpYt_m.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/pieDiagram-4H26LBE5-lDidBc5t.js +1 -1
  63. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/quadrantDiagram-W4KKPZXB-BvgJKjpU.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/quadrantDiagram-W4KKPZXB-CqffYofN.js +1 -1
  64. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/radar-GUYGQ44K-Dgsa_1qu.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/radar-GUYGQ44K-BMqTdNUV.js +1 -1
  65. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/requirementDiagram-4Y6WPE33-DBKNIBk3.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/requirementDiagram-4Y6WPE33---Iqpcn8.js +1 -1
  66. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/sankeyDiagram-5OEKKPKP-BZ7Fq7wY.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/sankeyDiagram-5OEKKPKP-jx06oDq6.js +1 -1
  67. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/sequenceDiagram-3UESZ5HK-BgyXLY_y.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/sequenceDiagram-3UESZ5HK-HaEvgD49.js +1 -1
  68. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/stateDiagram-AJRCARHV-uRxhbT5K.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/stateDiagram-AJRCARHV-JLA-477t.js +1 -1
  69. pythinker_code-0.44.0/src/pythinker_code/web/static/assets/stateDiagram-v2-BHNVJYJU-C_zjek2r.js +1 -0
  70. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/timeline-definition-PNZ67QCA-Dc2IbbOT.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/timeline-definition-PNZ67QCA-CCTBgJfg.js +1 -1
  71. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/treeView-BLDUP644-DkIy1Jve.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/treeView-BLDUP644-BygVvhlI.js +1 -1
  72. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/treemap-LRROVOQU-vGlBGkTv.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/treemap-LRROVOQU-BuV3B2a0.js +1 -1
  73. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/vennDiagram-CIIHVFJN-D6thfpFu.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/vennDiagram-CIIHVFJN-Cl1lT_Ny.js +1 -1
  74. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/wardley-L42UT6IY-CwwtrRFS.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/wardley-L42UT6IY-K8n6TVEI.js +1 -1
  75. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/wardleyDiagram-YWT4CUSO-VTtMKFDl.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/wardleyDiagram-YWT4CUSO-D68VMB5e.js +1 -1
  76. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/xychartDiagram-2RQKCTM6-CcGq54eW.js → pythinker_code-0.44.0/src/pythinker_code/web/static/assets/xychartDiagram-2RQKCTM6-tTtP-k4s.js +1 -1
  77. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/index.html +1 -1
  78. pythinker_code-0.43.0/src/pythinker_code/cli/info.py +0 -65
  79. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/architecture-7EHR7CIX-ClfnoHaV.js +0 -1
  80. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/channel-CzC7Y4LO.js +0 -1
  81. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/classDiagram-4FO5ZUOK-DfbkecQ0.js +0 -1
  82. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/classDiagram-v2-Q7XG4LA2-DfbkecQ0.js +0 -1
  83. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/eventmodeling-FCH6USID-DrRs4guh.js +0 -1
  84. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/mermaid-VLURNSYL-CTw9ASXc.js +0 -1
  85. pythinker_code-0.43.0/src/pythinker_code/web/static/assets/stateDiagram-v2-BHNVJYJU-K-uskVhe.js +0 -1
  86. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/LICENSE +0 -0
  87. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/NOTICE +0 -0
  88. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/__init__.py +0 -0
  89. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/__main__.py +0 -0
  90. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/acp/AGENTS.md +0 -0
  91. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/acp/__init__.py +0 -0
  92. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/acp/convert.py +0 -0
  93. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/acp/host.py +0 -0
  94. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/acp/mcp.py +0 -0
  95. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/acp/server.py +0 -0
  96. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/acp/session.py +0 -0
  97. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/acp/tools.py +0 -0
  98. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/acp/types.py +0 -0
  99. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/acp/version.py +0 -0
  100. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/agents/default/agent.yaml +0 -0
  101. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/agents/default/ask.yaml +0 -0
  102. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/agents/default/code_reviewer.yaml +0 -0
  103. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/agents/default/coder.yaml +0 -0
  104. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/agents/default/debug.yaml +0 -0
  105. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/agents/default/debugger.yaml +0 -0
  106. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/agents/default/explore.yaml +0 -0
  107. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/agents/default/implementer.yaml +0 -0
  108. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/agents/default/judge.yaml +0 -0
  109. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/agents/default/plan.yaml +0 -0
  110. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/agents/default/planner.yaml +0 -0
  111. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/agents/default/review.yaml +0 -0
  112. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/agents/default/scout.yaml +0 -0
  113. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/agents/default/security_reviewer.yaml +0 -0
  114. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/agents/default/system.md +0 -0
  115. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/agents/default/verifier.yaml +0 -0
  116. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/agents/okabe/agent.yaml +0 -0
  117. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/agentspec.py +0 -0
  118. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/app.py +0 -0
  119. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/approval_runtime/__init__.py +0 -0
  120. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/approval_runtime/models.py +0 -0
  121. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/approval_runtime/runtime.py +0 -0
  122. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/__init__.py +0 -0
  123. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/alibaba.py +0 -0
  124. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/anthropic_direct.py +0 -0
  125. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/browser_login_page.py +0 -0
  126. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/deepseek.py +0 -0
  127. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/github_feedback.py +0 -0
  128. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/lm_studio.py +0 -0
  129. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/minimax.py +0 -0
  130. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/moonshot.py +0 -0
  131. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/oauth.py +0 -0
  132. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/ollama.py +0 -0
  133. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/openai/__init__.py +0 -0
  134. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/openai/_shared.py +0 -0
  135. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/openai/browser_flow.py +0 -0
  136. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/openai/catalog.py +0 -0
  137. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/openai/config_apply.py +0 -0
  138. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/openai/constants.py +0 -0
  139. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/openai/login.py +0 -0
  140. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/openai/models.py +0 -0
  141. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/openai/oauth_client.py +0 -0
  142. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/opencode_go.py +0 -0
  143. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/openrouter.py +0 -0
  144. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/platforms.py +0 -0
  145. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/auth/z_ai.py +0 -0
  146. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/background/__init__.py +0 -0
  147. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/background/agent_runner.py +0 -0
  148. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/background/ids.py +0 -0
  149. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/background/manager.py +0 -0
  150. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/background/models.py +0 -0
  151. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/background/store.py +0 -0
  152. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/background/summary.py +0 -0
  153. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/background/worker.py +0 -0
  154. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/cli/__init__.py +0 -0
  155. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/cli/__main__.py +0 -0
  156. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/cli/_lazy_group.py +0 -0
  157. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/cli/debug.py +0 -0
  158. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/cli/export.py +0 -0
  159. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/cli/mcp.py +0 -0
  160. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/cli/plugin.py +0 -0
  161. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/cli/review.py +0 -0
  162. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/cli/secscan.py +0 -0
  163. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/cli/security_scan.py +0 -0
  164. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/cli/skill.py +0 -0
  165. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/cli/toad.py +0 -0
  166. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/cli/update.py +0 -0
  167. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/cli/vis.py +0 -0
  168. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/cli/web.py +0 -0
  169. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/constant.py +0 -0
  170. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/events.py +0 -0
  171. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/exception.py +0 -0
  172. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/execution_profiles.py +0 -0
  173. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/extensions.py +0 -0
  174. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/feedback.py +0 -0
  175. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/feedback_repo.py +0 -0
  176. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/file_restore.py +0 -0
  177. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/hooks/__init__.py +0 -0
  178. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/hooks/config.py +0 -0
  179. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/hooks/engine.py +0 -0
  180. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/hooks/events.py +0 -0
  181. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/hooks/runner.py +0 -0
  182. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/llm.py +0 -0
  183. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/memory/__init__.py +0 -0
  184. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/memory/consolidation.py +0 -0
  185. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/memory/harvest.py +0 -0
  186. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/memory/recall.py +0 -0
  187. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/memory/recap.py +0 -0
  188. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/memory/retriever.py +0 -0
  189. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/memory/sanitize.py +0 -0
  190. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/metadata.py +0 -0
  191. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/models_dev.py +0 -0
  192. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/native.py +0 -0
  193. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/notifications/__init__.py +0 -0
  194. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/notifications/llm.py +0 -0
  195. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/notifications/manager.py +0 -0
  196. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/notifications/models.py +0 -0
  197. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/notifications/notifier.py +0 -0
  198. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/notifications/store.py +0 -0
  199. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/notifications/wire.py +0 -0
  200. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/plugin/__init__.py +0 -0
  201. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/plugin/manager.py +0 -0
  202. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/plugin/tool.py +0 -0
  203. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/project_memory.py +0 -0
  204. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/project_trust.py +0 -0
  205. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/prompt_templates.py +0 -0
  206. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/prompts/__init__.py +0 -0
  207. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/prompts/best_practices.md +0 -0
  208. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/prompts/compact.md +0 -0
  209. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/prompts/goal_continuation.md +0 -0
  210. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/prompts/goal_set.md +0 -0
  211. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/prompts/goal_wrap_up.md +0 -0
  212. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/prompts/init.md +0 -0
  213. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/prompts/learn.md +0 -0
  214. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/py.typed +0 -0
  215. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/scratchpad.py +0 -0
  216. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/session.py +0 -0
  217. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/session_cleanup.py +0 -0
  218. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/session_fork.py +0 -0
  219. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/session_recap.py +0 -0
  220. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/session_state.py +0 -0
  221. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skill/__init__.py +0 -0
  222. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skill/flow/__init__.py +0 -0
  223. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skill/flow/d2.py +0 -0
  224. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skill/flow/mermaid.py +0 -0
  225. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skill/lockfile.py +0 -0
  226. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skills/agent-creator/SKILL.md +0 -0
  227. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skills/check-impl-against-spec/SKILL.md +0 -0
  228. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skills/create-pr/SKILL.md +0 -0
  229. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skills/customize-pythinker/SKILL.md +0 -0
  230. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skills/designer-skill/SKILL.md +0 -0
  231. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skills/diagnose-ci-failures/SKILL.md +0 -0
  232. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skills/fix-errors/SKILL.md +0 -0
  233. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skills/implement-specs/SKILL.md +0 -0
  234. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skills/pr-walkthrough/SKILL.md +0 -0
  235. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skills/pythinker-code-help/SKILL.md +0 -0
  236. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skills/reproduce-bug-report/SKILL.md +0 -0
  237. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skills/resolve-merge-conflicts/SKILL.md +0 -0
  238. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skills/review-pr/SKILL.md +0 -0
  239. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skills/skill-creator/SKILL.md +0 -0
  240. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skills/spec-driven-implementation/SKILL.md +0 -0
  241. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skills/write-product-spec/SKILL.md +0 -0
  242. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/skills/write-tech-spec/SKILL.md +0 -0
  243. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/__init__.py +0 -0
  244. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/agent.py +0 -0
  245. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/api_errors.py +0 -0
  246. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/approval.py +0 -0
  247. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/btw.py +0 -0
  248. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/compaction.py +0 -0
  249. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/compaction_restore.py +0 -0
  250. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/context.py +0 -0
  251. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/deliberation.py +0 -0
  252. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/denwarenji.py +0 -0
  253. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/dynamic_injection.py +0 -0
  254. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/dynamic_injections/__init__.py +0 -0
  255. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/dynamic_injections/auto_mode.py +0 -0
  256. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/dynamic_injections/goal_mode.py +0 -0
  257. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/dynamic_injections/inline_commands.py +0 -0
  258. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/dynamic_injections/model_defense.py +0 -0
  259. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/dynamic_injections/orchestration.py +0 -0
  260. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/dynamic_injections/permissions_state.py +0 -0
  261. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/dynamic_injections/plan_mode.py +0 -0
  262. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/flow_runner.py +0 -0
  263. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/message.py +0 -0
  264. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/permission.py +0 -0
  265. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/pythinkersoul.py +0 -0
  266. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/slash.py +0 -0
  267. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/soul/toolset.py +0 -0
  268. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/subagents/__init__.py +0 -0
  269. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/subagents/builder.py +0 -0
  270. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/subagents/codenames.py +0 -0
  271. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/subagents/core.py +0 -0
  272. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/subagents/discovery.py +0 -0
  273. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/subagents/git_context.py +0 -0
  274. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/subagents/models.py +0 -0
  275. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/subagents/output.py +0 -0
  276. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/subagents/registry.py +0 -0
  277. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/subagents/runner.py +0 -0
  278. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/subagents/store.py +0 -0
  279. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/subagents/usage.py +0 -0
  280. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/subagents/worktree.py +0 -0
  281. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/telemetry/__init__.py +0 -0
  282. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/telemetry/config.py +0 -0
  283. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/telemetry/crash.py +0 -0
  284. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/telemetry/errors.py +0 -0
  285. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/telemetry/metrics.py +0 -0
  286. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/telemetry/otel.py +0 -0
  287. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/telemetry/sentry.py +0 -0
  288. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/telemetry/sink.py +0 -0
  289. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/thinking.py +0 -0
  290. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/AGENTS.md +0 -0
  291. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/__init__.py +0 -0
  292. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/agent/__init__.py +0 -0
  293. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/agent/description.md +0 -0
  294. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/ask_user/__init__.py +0 -0
  295. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/ask_user/description.md +0 -0
  296. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/background/__init__.py +0 -0
  297. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/background/handoff.md +0 -0
  298. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/background/input.md +0 -0
  299. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/background/list.md +0 -0
  300. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/background/output.md +0 -0
  301. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/background/stop.md +0 -0
  302. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/display.py +0 -0
  303. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/dmail/__init__.py +0 -0
  304. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/dmail/dmail.md +0 -0
  305. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/file/__init__.py +0 -0
  306. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/file/glob.md +0 -0
  307. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/file/glob.py +0 -0
  308. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/file/grep.md +0 -0
  309. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/file/grep_local.py +0 -0
  310. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/file/plan_mode.py +0 -0
  311. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/file/read.md +0 -0
  312. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/file/read.py +0 -0
  313. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/file/read_media.md +0 -0
  314. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/file/read_media.py +0 -0
  315. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/file/replace.md +0 -0
  316. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/file/replace.py +0 -0
  317. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/file/utils.py +0 -0
  318. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/file/write.md +0 -0
  319. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/file/write.py +0 -0
  320. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/goal/__init__.py +0 -0
  321. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/goal/update_goal.md +0 -0
  322. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/mcp_resource/__init__.py +0 -0
  323. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/mcp_resource/list_description.md +0 -0
  324. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/mcp_resource/read_description.md +0 -0
  325. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/memory/__init__.py +0 -0
  326. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/memory/memory.md +0 -0
  327. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/memory/routing_guard.py +0 -0
  328. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/plan/__init__.py +0 -0
  329. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/plan/description.md +0 -0
  330. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/plan/enter.py +0 -0
  331. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/plan/enter_description.md +0 -0
  332. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/plan/handoff.py +0 -0
  333. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/plan/heroes.py +0 -0
  334. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/progress/__init__.py +0 -0
  335. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/progress/description.md +0 -0
  336. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/recall/__init__.py +0 -0
  337. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/recall/description.md +0 -0
  338. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/scratchpad/__init__.py +0 -0
  339. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/scratchpad/scratchpad_tool.md +0 -0
  340. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/shell/__init__.py +0 -0
  341. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/shell/bash.md +0 -0
  342. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/shell/powershell.md +0 -0
  343. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/skill/__init__.py +0 -0
  344. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/skill/_mcp_bridge.py +0 -0
  345. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/skill/description.md +0 -0
  346. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/suggest/__init__.py +0 -0
  347. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/suggest/description.md +0 -0
  348. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/test.py +0 -0
  349. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/think/__init__.py +0 -0
  350. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/think/think.md +0 -0
  351. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/todo/__init__.py +0 -0
  352. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/todo/set_todo_list.md +0 -0
  353. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/utils.py +0 -0
  354. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/web/__init__.py +0 -0
  355. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/web/_allowlist.py +0 -0
  356. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/web/fetch.md +0 -0
  357. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/web/fetch.py +0 -0
  358. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/web/search.md +0 -0
  359. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/tools/web/search.py +0 -0
  360. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/__init__.py +0 -0
  361. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/acp/__init__.py +0 -0
  362. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/color_utils.py +0 -0
  363. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/print/__init__.py +0 -0
  364. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/print/visualize.py +0 -0
  365. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/components/__init__.py +0 -0
  366. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/components/base.py +0 -0
  367. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/components/bash_execution.py +0 -0
  368. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/components/bordered_loader.py +0 -0
  369. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/components/diff.py +0 -0
  370. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/components/dynamic_border.py +0 -0
  371. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/components/footer.py +0 -0
  372. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/components/key_hints.py +0 -0
  373. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/components/markdown.py +0 -0
  374. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/components/messages.py +0 -0
  375. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/components/panel.py +0 -0
  376. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/components/render_utils.py +0 -0
  377. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/components/report.py +0 -0
  378. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/components/settings_list.py +0 -0
  379. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/components/special_messages.py +0 -0
  380. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/components/tool_execution.py +0 -0
  381. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/console.py +0 -0
  382. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/debug.py +0 -0
  383. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/design_system.py +0 -0
  384. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/echo.py +0 -0
  385. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/export_import.py +0 -0
  386. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/glyphs.py +0 -0
  387. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/keyboard.py +0 -0
  388. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/keymap.py +0 -0
  389. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/mcp_status.py +0 -0
  390. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/model_picker.py +0 -0
  391. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/motion.py +0 -0
  392. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/oauth.py +0 -0
  393. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/placeholders.py +0 -0
  394. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/prompt.py +0 -0
  395. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/render_constants.py +0 -0
  396. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/replay.py +0 -0
  397. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/selector.py +0 -0
  398. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/selectors/__init__.py +0 -0
  399. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/selectors/extension.py +0 -0
  400. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/selectors/oauth.py +0 -0
  401. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/selectors/show_images.py +0 -0
  402. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/selectors/theme.py +0 -0
  403. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/selectors/thinking.py +0 -0
  404. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/session_picker.py +0 -0
  405. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/setup.py +0 -0
  406. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/spacing.py +0 -0
  407. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/spinner_words.py +0 -0
  408. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/startup.py +0 -0
  409. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/stats.py +0 -0
  410. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/stats_collector.py +0 -0
  411. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/stats_pricing.py +0 -0
  412. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/statusline.py +0 -0
  413. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/sync_output.py +0 -0
  414. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/task_browser.py +0 -0
  415. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tips.py +0 -0
  416. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tool_renderers/__init__.py +0 -0
  417. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tool_renderers/_file_diff.py +0 -0
  418. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tool_renderers/_render_utils.py +0 -0
  419. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tool_renderers/agent.py +0 -0
  420. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tool_renderers/ask_user.py +0 -0
  421. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tool_renderers/background.py +0 -0
  422. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tool_renderers/bash.py +0 -0
  423. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tool_renderers/edit.py +0 -0
  424. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tool_renderers/find.py +0 -0
  425. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tool_renderers/generic.py +0 -0
  426. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tool_renderers/grep.py +0 -0
  427. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tool_renderers/plan.py +0 -0
  428. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tool_renderers/read.py +0 -0
  429. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tool_renderers/skill.py +0 -0
  430. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tool_renderers/think.py +0 -0
  431. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tool_renderers/todo.py +0 -0
  432. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tool_renderers/web.py +0 -0
  433. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/tool_renderers/write.py +0 -0
  434. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/update_orchestrator.py +0 -0
  435. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/usage.py +0 -0
  436. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/usage_adapters/__init__.py +0 -0
  437. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/usage_adapters/alibaba.py +0 -0
  438. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/usage_adapters/anthropic_admin.py +0 -0
  439. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/usage_adapters/base.py +0 -0
  440. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/usage_adapters/deepseek.py +0 -0
  441. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/usage_adapters/minimax.py +0 -0
  442. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/usage_adapters/openai_admin.py +0 -0
  443. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/usage_adapters/openai_chatgpt.py +0 -0
  444. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/usage_adapters/opencode_go.py +0 -0
  445. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/usage_adapters/openrouter.py +0 -0
  446. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker.py +0 -0
  447. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/usage_adapters/pythinker_ai.py +0 -0
  448. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/usage_render.py +0 -0
  449. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/visualize/__init__.py +0 -0
  450. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/visualize/_activity_tree.py +0 -0
  451. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/visualize/_approval_panel.py +0 -0
  452. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/visualize/_blocks.py +0 -0
  453. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/visualize/_btw_panel.py +0 -0
  454. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/visualize/_dialog_shell.py +0 -0
  455. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/visualize/_input_router.py +0 -0
  456. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/visualize/_interactive.py +0 -0
  457. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/visualize/_live_view.py +0 -0
  458. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/visualize/_question_panel.py +0 -0
  459. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/visualize/_transcript.py +0 -0
  460. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/shell/visualize/_worklog.py +0 -0
  461. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/terminal_background.py +0 -0
  462. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/terminal_capabilities.py +0 -0
  463. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/theme.py +0 -0
  464. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/ui/tui_config.py +0 -0
  465. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/usage_ratelimit_cache.py +0 -0
  466. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/__init__.py +0 -0
  467. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/aiohttp.py +0 -0
  468. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/aioqueue.py +0 -0
  469. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/artifacts.py +0 -0
  470. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/broadcast.py +0 -0
  471. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/changelog.py +0 -0
  472. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/clipboard.py +0 -0
  473. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/datetime.py +0 -0
  474. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/diff.py +0 -0
  475. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/editor.py +0 -0
  476. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/environment.py +0 -0
  477. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/envvar.py +0 -0
  478. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/export.py +0 -0
  479. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/file_filter.py +0 -0
  480. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/frontmatter.py +0 -0
  481. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/gitignore.py +0 -0
  482. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/io.py +0 -0
  483. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/logging.py +0 -0
  484. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/media_tags.py +0 -0
  485. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/message.py +0 -0
  486. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/path.py +0 -0
  487. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/proctitle.py +0 -0
  488. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/proxy.py +0 -0
  489. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/pyinstaller.py +0 -0
  490. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/rich/__init__.py +0 -0
  491. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/rich/columns.py +0 -0
  492. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/rich/diff_render.py +0 -0
  493. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/rich/markdown.py +0 -0
  494. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/rich/markdown_sample.md +0 -0
  495. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/rich/markdown_sample_short.md +0 -0
  496. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/rich/syntax.py +0 -0
  497. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/sensitive.py +0 -0
  498. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/server.py +0 -0
  499. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/signals.py +0 -0
  500. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/slashcmd.py +0 -0
  501. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/sleep_inhibitor.py +0 -0
  502. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/string.py +0 -0
  503. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/subprocess_env.py +0 -0
  504. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/term.py +0 -0
  505. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/trust.py +0 -0
  506. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/utils/typing.py +0 -0
  507. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/vis/__init__.py +0 -0
  508. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/vis/api/__init__.py +0 -0
  509. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/vis/api/sessions.py +0 -0
  510. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/vis/api/statistics.py +0 -0
  511. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/vis/api/system.py +0 -0
  512. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/vis/app.py +0 -0
  513. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/vis/static/assets/highlighted-body-OFNGDK62-Bvu9aDxC.js +0 -0
  514. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/vis/static/assets/index-Bf7NpcRg.js +0 -0
  515. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/vis/static/assets/index-Cot2VCM1.css +0 -0
  516. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  517. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/vis/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  518. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/vis/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  519. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/vis/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  520. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/vis/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  521. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/vis/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  522. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/vis/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  523. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/vis/static/assets/mermaid-GHXKKRXX-C-XxnFiA.js +0 -0
  524. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/vis/static/index.html +0 -0
  525. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/__init__.py +0 -0
  526. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/api/__init__.py +0 -0
  527. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/api/config.py +0 -0
  528. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/api/open_in.py +0 -0
  529. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/api/sessions.py +0 -0
  530. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/app.py +0 -0
  531. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/auth.py +0 -0
  532. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/models.py +0 -0
  533. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/runner/__init__.py +0 -0
  534. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/runner/messages.py +0 -0
  535. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/runner/process.py +0 -0
  536. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/runner/worker.py +0 -0
  537. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/_headers +0 -0
  538. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  539. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  540. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  541. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  542. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  543. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  544. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  545. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  546. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  547. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  548. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  549. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  550. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  551. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  552. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  553. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  554. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  555. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  556. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  557. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  558. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  559. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  560. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  561. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  562. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  563. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  564. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  565. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  566. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  567. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  568. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  569. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  570. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  571. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  572. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  573. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  574. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  575. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  576. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  577. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  578. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  579. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  580. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  581. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  582. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  583. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  584. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  585. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  586. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  587. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  588. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  589. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  590. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  591. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  592. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  593. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  594. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  595. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  596. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  597. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/abap-CLvhMVsD.js +0 -0
  598. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/actionscript-3--17pq3dv.js +0 -0
  599. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/ada-C5qYipkI.js +0 -0
  600. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/andromeeda-vGVdxbeo.js +0 -0
  601. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/angular-html-BKhkKBsm.js +0 -0
  602. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/angular-ts-CYPbMJCA.js +0 -0
  603. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/apache-U0d_L8uA.js +0 -0
  604. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/apex-CGTLDQj6.js +0 -0
  605. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/apl-D7bENxmy.js +0 -0
  606. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/applescript-CCn79oCD.js +0 -0
  607. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/ara-4CJ0cIlV.js +0 -0
  608. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/arc-8BWbC-0s.js +0 -0
  609. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/array-BifhSqXX.js +0 -0
  610. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/asciidoc-DE70LPWp.js +0 -0
  611. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/asm-Cmm7eHzH.js +0 -0
  612. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/astro-B1l9MDUT.js +0 -0
  613. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/aurora-x-CDeNXAV0.js +0 -0
  614. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/awk-BWXHIvNe.js +0 -0
  615. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/ayu-dark-DluEY0Gj.js +0 -0
  616. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/ayu-light-C3h-C4tm.js +0 -0
  617. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/ayu-mirage-Bqwy1Gya.js +0 -0
  618. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/ballerina-B7ZEbQpA.js +0 -0
  619. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/bat-Bo4NYOV-.js +0 -0
  620. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/beancount-D-usSTwE.js +0 -0
  621. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/berry-DKpUyyne.js +0 -0
  622. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/bibtex-Ci_nEsc7.js +0 -0
  623. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/bicep-CUHmPFLl.js +0 -0
  624. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/bird2-C2hNVINV.js +0 -0
  625. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/blade-BlkqRXu6.js +0 -0
  626. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/bootstrap-BhLLvBaE.css +0 -0
  627. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/bsl-BkkzgIyY.js +0 -0
  628. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/c-PpPxyn8g.js +0 -0
  629. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/c3-CnJL0r0V.js +0 -0
  630. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/cadence-CQ2zXKGN.js +0 -0
  631. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/cairo-DLTphjLi.js +0 -0
  632. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/catppuccin-frappe-3VR1Za6u.js +0 -0
  633. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/catppuccin-latte-DwIHMF0Q.js +0 -0
  634. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/catppuccin-macchiato-DYnBP6_5.js +0 -0
  635. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/catppuccin-mocha-DYhrFGRu.js +0 -0
  636. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/character-entities-legacy-Wut6vMuj.js +0 -0
  637. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/chevrons-up-down-Dwo0Il5v.js +0 -0
  638. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/chunk-4BX2VUAB-C0kf5ycP.js +0 -0
  639. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/chunk-55IACEB6-QyFAFTWp.js +0 -0
  640. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/chunk-BSJP7CBP-DIpfLhEz.js +0 -0
  641. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/chunk-Cyuzqnbw.js +0 -0
  642. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/chunk-FMBD7UC4-C9D6P7Uq.js +0 -0
  643. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/chunk-NNHCCRGN-DmZbXBJw.js +0 -0
  644. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/chunk-QZHKN3VN-CyVdgm44.js +0 -0
  645. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/chunk-XPW4576I-ru3A962d.js +0 -0
  646. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/clarity-SemFz856.js +0 -0
  647. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/clojure-DqKBuwfJ.js +0 -0
  648. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/cmake-Bj61d0ZC.js +0 -0
  649. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/cobol-BoXxFQjh.js +0 -0
  650. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/codeowners-C8r90Shi.js +0 -0
  651. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/codeql-oeQT6MSM.js +0 -0
  652. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/coffee-B5TREocO.js +0 -0
  653. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/common-lisp-Cv5bFMCO.js +0 -0
  654. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/coq-BrsZFFmf.js +0 -0
  655. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/cose-bilkent-S5V4N54A-PjRvINHM.js +0 -0
  656. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/cpp-CVIk4zoB.js +0 -0
  657. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/crystal-CvUuUt6_.js +0 -0
  658. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/csharp-Ct8U2NOr.js +0 -0
  659. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/css-D7o5g6xi.js +0 -0
  660. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/csv-Dx-8-gkx.js +0 -0
  661. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/cue-CE9AQfxI.js +0 -0
  662. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/cypher-ClKdZ_lG.js +0 -0
  663. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/cytoscape.esm-jXPf2pm4.js +0 -0
  664. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/d-qD-0Kul2.js +0 -0
  665. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/dagre-Uyq5yTtG.js +0 -0
  666. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/dark-plus-Cs2F2srj.js +0 -0
  667. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/dart-DkHntEIa.js +0 -0
  668. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/dax-BkyTk9wS.js +0 -0
  669. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/defaultLocale-C8Fc0cco.js +0 -0
  670. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/desktop-Dlh5hvp9.js +0 -0
  671. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/diff-BDNflWRl.js +0 -0
  672. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/diff-Dvab7kiv.css +0 -0
  673. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/diff-woXpYk--.js +0 -0
  674. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/dist-B7jLwIkG.js +0 -0
  675. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/dist-D4B_Bs5p.js +0 -0
  676. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/dist-reBDvVlc.js +0 -0
  677. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/docker-IyjqRm3v.js +0 -0
  678. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/dotenv-_5a1GRtc.js +0 -0
  679. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/dracula-BHWKrbxM.js +0 -0
  680. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/dracula-soft-5eyTD99u.js +0 -0
  681. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/dream-maker-DW3nJb8Q.js +0 -0
  682. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/edge-CmXZi-az.js +0 -0
  683. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/elixir-BoRIkjDi.js +0 -0
  684. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/elm-Cm7sFdI1.js +0 -0
  685. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/emacs-lisp-C9PiwqqW.js +0 -0
  686. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/erb-DuMAGb6i.js +0 -0
  687. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/erlang-Cphh6RMH.js +0 -0
  688. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/everforest-dark-sB-x3p7T.js +0 -0
  689. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/everforest-light-Df2xbC6M.js +0 -0
  690. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/fennel-DQxkIbk2.js +0 -0
  691. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/fish-BJitypiv.js +0 -0
  692. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/fluent-C03EYrpw.js +0 -0
  693. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/fortran-fixed-form-DEKoE2YW.js +0 -0
  694. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/fortran-free-form-CYNrtFtB.js +0 -0
  695. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/fsharp-D13ZGOAj.js +0 -0
  696. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/gdresource-C0sCabJj.js +0 -0
  697. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/gdscript-Cp2uCuqX.js +0 -0
  698. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/gdshader-CBce3t8t.js +0 -0
  699. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/genie-CV2tkWYe.js +0 -0
  700. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/gherkin-DExj1W_8.js +0 -0
  701. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/git-commit-BSykSTBG.js +0 -0
  702. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/git-rebase-D2tSwjJb.js +0 -0
  703. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/github-dark-C-LZuMrd.js +0 -0
  704. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/github-dark-default-DXG-b-1a.js +0 -0
  705. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/github-dark-dimmed-Bx1FflLF.js +0 -0
  706. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/github-dark-high-contrast-B_tTalzw.js +0 -0
  707. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/github-light-EUqPIrTm.js +0 -0
  708. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/github-light-default-BXViO-2h.js +0 -0
  709. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/github-light-high-contrast-B68TUdTA.js +0 -0
  710. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/gleam-CSRkHgEL.js +0 -0
  711. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/glimmer-js--VVKNatA.js +0 -0
  712. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/glimmer-ts-Bfa_wiNC.js +0 -0
  713. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/glsl-MPwHyiXQ.js +0 -0
  714. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/gn-ilITqXS6.js +0 -0
  715. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/gnuplot-7GGW24-e.js +0 -0
  716. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/go-BJwz_mda.js +0 -0
  717. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/graphlib-C22s9MDV.js +0 -0
  718. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/graphql-NW854Khs.js +0 -0
  719. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/groovy-CacY0gHj.js +0 -0
  720. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/gruvbox-dark-hard-C820rvS2.js +0 -0
  721. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/gruvbox-dark-medium-BPjhmG05.js +0 -0
  722. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/gruvbox-dark-soft-MrdJrrXF.js +0 -0
  723. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/gruvbox-light-hard-BC_s9l72.js +0 -0
  724. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/gruvbox-light-medium-BAWPOn9u.js +0 -0
  725. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/gruvbox-light-soft-BSMLrYjP.js +0 -0
  726. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/hack-CSl79E5u.js +0 -0
  727. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/haml-Dmb1YmHj.js +0 -0
  728. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/handlebars-Du8DtnRB.js +0 -0
  729. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/haskell-D8IpX4py.js +0 -0
  730. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/haxe-OTjmBuCE.js +0 -0
  731. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/hcl-Dh228itO.js +0 -0
  732. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/hjson-CxZEssPk.js +0 -0
  733. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/hlsl-Cvrh5tZx.js +0 -0
  734. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/horizon-CE9ld1lL.js +0 -0
  735. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/horizon-bright-Br1oVSNq.js +0 -0
  736. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/houston-CsvMBhTu.js +0 -0
  737. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/html-Kpl3bQKd.js +0 -0
  738. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/html-derivative-BEEWNZ8Y.js +0 -0
  739. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/http-HvMG3K54.js +0 -0
  740. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/hurl-CLh1t2ES.js +0 -0
  741. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/hxml-B0Qn7Nwc.js +0 -0
  742. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/hy-CZbG8q4J.js +0 -0
  743. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/imba-DsUTQ-LC.js +0 -0
  744. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/ini-B5eOa1yu.js +0 -0
  745. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/init-D6jRqBbL.js +0 -0
  746. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  747. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  748. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  749. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  750. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  751. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  752. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  753. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/java-Cst_eZTE.js +0 -0
  754. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/javascript-i_rUTyCW.js +0 -0
  755. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/jinja-CaXggA6f.js +0 -0
  756. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/jison-D9Fg2JgN.js +0 -0
  757. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/json-DS5j4FfK.js +0 -0
  758. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/json5-BR5RXkoi.js +0 -0
  759. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/jsonc-CYpm1nAK.js +0 -0
  760. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/jsonl-CmCQp5Yx.js +0 -0
  761. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/jsonnet-CJTPZ8u_.js +0 -0
  762. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/jssm-DXw9l8Rf.js +0 -0
  763. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/jsx-CFyhNHav.js +0 -0
  764. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/jsx-runtime-wSvXh6gi.js +0 -0
  765. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/julia-R8NNmfP1.js +0 -0
  766. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/just-BhhHYlS8.js +0 -0
  767. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/kanagawa-dragon-CXtmUGW6.js +0 -0
  768. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/kanagawa-lotus-BN08jTvb.js +0 -0
  769. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/kanagawa-wave-CTweb8Dz.js +0 -0
  770. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/katex-BGaDVET_.js +0 -0
  771. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/katex-BorAY7qD.css +0 -0
  772. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/kdl-CsD5j6eV.js +0 -0
  773. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/kotlin-DhhofPvG.js +0 -0
  774. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/kusto-BUv0MjJC.js +0 -0
  775. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/laserwave-C_8bwKvT.js +0 -0
  776. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/latex-D5k_uhWv.js +0 -0
  777. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/lean-CewbzKMR.js +0 -0
  778. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/less-DVTAwKKz.js +0 -0
  779. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/lib-BLxG8W6T.js +0 -0
  780. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/libesm-8-2luV-1.js +0 -0
  781. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/light-plus-DVQuIRkW.js +0 -0
  782. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/linear-BktLjFGX.js +0 -0
  783. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/liquid-Q0_hzjly.js +0 -0
  784. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/llvm-Cm23YOpf.js +0 -0
  785. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/log-BNLmms1o.js +0 -0
  786. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/logo-Cluzi2Zq.js +0 -0
  787. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/lua-VoGSg0xb.js +0 -0
  788. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/luau-CNKltnaQ.js +0 -0
  789. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/make-Dixweg8N.js +0 -0
  790. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/markdown-BYOwaDjH.js +0 -0
  791. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/marked.esm-DLdcrU5H.js +0 -0
  792. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/marko-D_aeUD__.js +0 -0
  793. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/material-theme-Bm3Qr25_.js +0 -0
  794. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/material-theme-darker-2IIEA8gg.js +0 -0
  795. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/material-theme-lighter-uhdI0v04.js +0 -0
  796. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/material-theme-ocean-CHQ94UKr.js +0 -0
  797. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/material-theme-palenight-B5W6OYN7.js +0 -0
  798. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/matlab-D7qyCx1q.js +0 -0
  799. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/mdc-BSifqehP.js +0 -0
  800. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/mdx-DQZ5AkYe.js +0 -0
  801. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/mermaid-Bk4SNUv9.js +0 -0
  802. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/min-dark-BSWPekZh.js +0 -0
  803. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/min-light-DDpmG2fV.js +0 -0
  804. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/mipsasm-BMqwQI7S.js +0 -0
  805. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/mojo-BgCJLMeH.js +0 -0
  806. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/monokai-CdkpiU2Y.js +0 -0
  807. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/moonbit-CaWjb8XO.js +0 -0
  808. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/move-B1IS1UjX.js +0 -0
  809. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/narrat-_X_XdTYD.js +0 -0
  810. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/nextflow-Bbiyy34d.js +0 -0
  811. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/nextflow-groovy-Dc_ddanL.js +0 -0
  812. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/nginx-CgHaWcsO.js +0 -0
  813. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/night-owl-DhmEMT88.js +0 -0
  814. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/night-owl-light-eJ-hLW7d.js +0 -0
  815. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/nim-BuixXxPS.js +0 -0
  816. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/nix-IvuFDN5E.js +0 -0
  817. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/nord-Cb4Vim4T.js +0 -0
  818. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/nushell-DcLAeLz5.js +0 -0
  819. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/objective-c-D1A_Heim.js +0 -0
  820. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/objective-cpp-BsSzOQcm.js +0 -0
  821. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/ocaml-O90oeIOV.js +0 -0
  822. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/odin-B1RWQWA5.js +0 -0
  823. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/one-dark-pro-CLwyXe_n.js +0 -0
  824. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/one-light-D7Lr4KcI.js +0 -0
  825. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/openscad-BUDT5pXO.js +0 -0
  826. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/ordinal-hYBb2elL.js +0 -0
  827. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/pascal-4ZHwLPI5.js +0 -0
  828. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/path-BWPyau1x.js +0 -0
  829. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/perl-BLMySlFJ.js +0 -0
  830. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/php-Czf_fybR.js +0 -0
  831. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/pkl-ot-7Btpt.js +0 -0
  832. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/plastic-DQwYfKfQ.js +0 -0
  833. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/plsql-DGHpHOYJ.js +0 -0
  834. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/po-BiJDBrnU.js +0 -0
  835. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/poimandres-DRFjx7u4.js +0 -0
  836. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/polar-C7UOKdEL.js +0 -0
  837. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/postcss-BXeXVLqQ.js +0 -0
  838. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/powerquery-DNMTfnFr.js +0 -0
  839. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/powershell-DshXNtvi.js +0 -0
  840. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/prisma-BsRQq5mF.js +0 -0
  841. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/prolog-iXnhIJG7.js +0 -0
  842. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/proto-DB4EqR-F.js +0 -0
  843. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/pug-CsZglf8T.js +0 -0
  844. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/puppet-CDv2pdJW.js +0 -0
  845. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/purescript-9MfHhQsQ.js +0 -0
  846. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/python-gzcpVVnB.js +0 -0
  847. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/qml-DcW_sT3t.js +0 -0
  848. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/qmldir-DCQb3MpD.js +0 -0
  849. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/qss-Fe1Jh2GI.js +0 -0
  850. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/r-D2d3McyU.js +0 -0
  851. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/racket-DcIDlBhZ.js +0 -0
  852. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/raku-B3gFvitq.js +0 -0
  853. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/razor-oFpUW61Z.js +0 -0
  854. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/red-CJ3rzSJv.js +0 -0
  855. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/reg-CRGYupPL.js +0 -0
  856. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/regexp-Bu0flJgP.js +0 -0
  857. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/rel-BtDbiS_P.js +0 -0
  858. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/riscv-Ckw8ddFX.js +0 -0
  859. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/ron-VUp2lXgN.js +0 -0
  860. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/rose-pine-BthvhNj6.js +0 -0
  861. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/rose-pine-dawn-Dg85fqjY.js +0 -0
  862. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/rose-pine-moon-hon4tzzS.js +0 -0
  863. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/rosmsg-CAekHB0j.js +0 -0
  864. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/rough.esm-CSKSodPl.js +0 -0
  865. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/rst-U6Eu7ipE.js +0 -0
  866. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/ruby-CUQsVT6d.js +0 -0
  867. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/rust-Cfkwpbl8.js +0 -0
  868. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/sas-CNBFrLhc.js +0 -0
  869. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/sass-DXrisJhu.js +0 -0
  870. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/scala-DKOlJaKm.js +0 -0
  871. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/scheme-DQCgrYNe.js +0 -0
  872. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/scss-CPnU-uuv.js +0 -0
  873. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/sdbl-bTVj8UrX.js +0 -0
  874. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/shaderlab-TOUzSsQk.js +0 -0
  875. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/shellscript-BbTp1yjG.js +0 -0
  876. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/shellsession-BmAC8SMF.js +0 -0
  877. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/slack-dark-DnToyrRv.js +0 -0
  878. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/slack-ochin-B2OO5cIa.js +0 -0
  879. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/smalltalk-B16xEiuN.js +0 -0
  880. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/snazzy-light-4G7pJPwS.js +0 -0
  881. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/solarized-dark-DV17i1UV.js +0 -0
  882. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/solarized-light-DSh2HLQt.js +0 -0
  883. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/solidity-CKzVLygQ.js +0 -0
  884. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/soy-CdbyEXp6.js +0 -0
  885. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/space-separated-tokens-DpjE5PGy.js +0 -0
  886. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/sparql-D_iOobhT.js +0 -0
  887. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/splunk-BC2Px7Mm.js +0 -0
  888. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/sql-hpBkusIy.js +0 -0
  889. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/src-D-NMWEou.js +0 -0
  890. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/ssh-config-BgfXC-Er.js +0 -0
  891. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/stata-DVbvk3qH.js +0 -0
  892. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/stylus-B6D30XZt.js +0 -0
  893. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/surrealql-DxccxuMd.js +0 -0
  894. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/svelte-DzNm5V2w.js +0 -0
  895. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/swift-DonLKvLd.js +0 -0
  896. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/synthwave-84-nFMaYfgc.js +0 -0
  897. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/system-verilog-DJ5XKQeo.js +0 -0
  898. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/systemd-BxMlprV5.js +0 -0
  899. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/talonscript-CohzipZa.js +0 -0
  900. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/tasl-DMoTqEGO.js +0 -0
  901. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/tcl-CZd0xW_V.js +0 -0
  902. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/templ-CsM0tTsw.js +0 -0
  903. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/terraform-DswuEJGm.js +0 -0
  904. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/tex-B0f_hYr8.js +0 -0
  905. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/tokyo-night-oM2G3aXe.js +0 -0
  906. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/toml-CcmNWLt0.js +0 -0
  907. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/ts-tags-Bf-FGGvT.js +0 -0
  908. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/tsv-sltzmVWM.js +0 -0
  909. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/tsx-DFvk7AwW.js +0 -0
  910. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/turtle-ByJddavk.js +0 -0
  911. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/twig-VJ4-Ntm0.js +0 -0
  912. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/typescript-DHTLvXzV.js +0 -0
  913. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/typespec-B88KGewJ.js +0 -0
  914. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/typst-DI99ib-x.js +0 -0
  915. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/v-DETTlOr0.js +0 -0
  916. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/v4-DqR3yzBO.js +0 -0
  917. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/vala-zf12oZj6.js +0 -0
  918. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/vb-Djn5o6TS.js +0 -0
  919. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/verilog-CiiDBU1e.js +0 -0
  920. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/vesper-D5bVUKB1.js +0 -0
  921. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/vhdl-BroJfC0k.js +0 -0
  922. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/viml-DvXPmvsu.js +0 -0
  923. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/vitesse-black-fwtXNY1n.js +0 -0
  924. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/vitesse-dark-BZCL-v6S.js +0 -0
  925. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/vitesse-light-VbXTXTou.js +0 -0
  926. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/vue-D3dSYZKz.js +0 -0
  927. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/vue-html-DQch_7VQ.js +0 -0
  928. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/vue-vine-B67Dz05t.js +0 -0
  929. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/vyper-CgoNMtux.js +0 -0
  930. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/wasm-BnjxR4X6.js +0 -0
  931. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/wasm-ByWQv1Qj.js +0 -0
  932. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/wenyan-C8pVoKbM.js +0 -0
  933. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/wgsl-BsKzXJz4.js +0 -0
  934. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/wikitext-ClFFjSW2.js +0 -0
  935. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/wit-DdvCle-K.js +0 -0
  936. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/wolfram-DLL8P-h_.js +0 -0
  937. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/xml-C33zriiW.js +0 -0
  938. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/xsl-BFS2wyMt.js +0 -0
  939. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/yaml-w0rMsuN4.js +0 -0
  940. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/zenscript-BnlCZFoB.js +0 -0
  941. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/assets/zig-CMLA9XwU.js +0 -0
  942. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/apple-touch-icon.png +0 -0
  943. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/arctecture.webp +0 -0
  944. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/bimi-logo.svg +0 -0
  945. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/favicon.ico +0 -0
  946. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin-ext.woff2 +0 -0
  947. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/fonts/dm-sans-latin.woff2 +0 -0
  948. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin-ext.woff2 +0 -0
  949. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/fonts/instrument-sans-latin.woff2 +0 -0
  950. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin-ext.woff2 +0 -0
  951. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/fonts/instrument-serif-latin.woff2 +0 -0
  952. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin-ext.woff2 +0 -0
  953. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-italic-latin.woff2 +0 -0
  954. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin-ext.woff2 +0 -0
  955. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/fonts/libre-baskerville-latin.woff2 +0 -0
  956. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin-ext.woff2 +0 -0
  957. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/fonts/roboto-latin.woff2 +0 -0
  958. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/icon-192.png +0 -0
  959. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/icon-512.png +0 -0
  960. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/icon.svg +0 -0
  961. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/logo.png +0 -0
  962. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/pythinker_animated.svg +0 -0
  963. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/brand/robots.txt +0 -0
  964. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/install.ps1 +0 -0
  965. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/install.sh +0 -0
  966. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/static/logo.png +0 -0
  967. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/store/__init__.py +0 -0
  968. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/web/store/sessions.py +0 -0
  969. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/wire/__init__.py +0 -0
  970. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/wire/file.py +0 -0
  971. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/wire/jsonrpc.py +0 -0
  972. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/wire/protocol.py +0 -0
  973. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/wire/root_hub.py +0 -0
  974. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/wire/serde.py +0 -0
  975. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/wire/server.py +0 -0
  976. {pythinker_code-0.43.0 → pythinker_code-0.44.0}/src/pythinker_code/wire/types.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythinker-code
3
- Version: 0.43.0
3
+ Version: 0.44.0
4
4
  Summary: Pythinker — an agentic CLI developed by Pythoughts-labs.
5
5
  Keywords: cli,agent,ai,coding-assistant,llm,claude,openai,terminal
6
6
  Author: Pythoughts-labs
@@ -115,15 +115,13 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
115
115
 
116
116
  ---
117
117
 
118
- ## 🆕 What's New in 0.43.0
118
+ ## 🆕 What's New in 0.44.0
119
119
 
120
- - **Silent startup auto-updates, on by default.** Managed and native installs now check for and apply updates in the background at startup, surfacing a restart-to-apply notice instead of a blocking prompt. Opt out with `auto_update = false` or `PYTHINKER_AUTO_UPDATE=0`; the Windows binary-replacement path no longer crashes the shell.
121
- - **Redesigned tracing dashboard.** The visualization dashboard (`pythinker vis`) gets a soft-enterprise refresh: redesigned Statistics and Sessions surfaces, a new Usage page with a usage heatmap and metric cards, and a consistent blue-accent treatment.
122
- - **Robust project-memory tooling.** Capacity rejections now report exact free space (delimiter-aware accounting), the `Memory` tool gains a read-only `list` action, `/memory` shows per-store capacity with a "nearly full" panel at ≥85%, and rule-/value-/file-like writes are gated behind a confirmation that steers corrections toward the authoritative file instead of silently accumulating in memory.
123
- - **Sharper agent guardrails.** Absence claims ("no em-dashes", "matches the source") must be backed by an actual zero-hit scan; a `designer-skill` MCP bridge routes frontend work to connected MCP tools; `best_practices_always` folds `/best-practices` guidance into every session at startup; and `StrReplaceFile` returns precise, actionable errors when a multi-edit batch fails validation.
124
- - **Quality of life.** `/recap on|off` with autosuggest and `<system-reminder>`-stripped recaps; a decluttered, spaced-out slash command menu with a persistent footer and `+N more` overflow; diff context lines render in normal text color; `/login` selector polish; scratch files clean up on exception exit; and error/crash telemetry is emitted at ERROR severity so it actually surfaces in dashboards.
120
+ - **Toggle auto-update from the CLI.** `/update` now opens a menu *Check for updates now* (the default, so a bare `/update` still checks immediately) or *Auto-update on startup* with its current state. `/update auto on|off` sets it directly, the same toggle appears in `/settings`, and `pythinker info` reports the status. Every surface shows the *effective* state, so an external override (`PYTHINKER_CLI_NO_AUTO_UPDATE` or a source checkout) is surfaced as the reason instead of silently no-opping.
121
+ - **No more spurious "could not close the program" error on Windows updates.** The native installer now waits for the launching `pythinker.exe` to fully exit (its PID is passed via `/PID`) before its Restart Manager scan runs, so the scan no longer races the launcher's teardown into a false "close the program and retry" dialog. The update already succeeded in that case; now it completes cleanly.
122
+ - **Simpler Windows update path.** With every shipped Windows install updating through the native installer, the Windows-only detached-spawn upgrade helper is gone; the remaining pip/uv/pipx path runs the upgrade inline and surfaces real command output and errors instead of a fire-and-forget process.
125
123
 
126
- Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.43.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
124
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.44.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
127
125
 
128
126
 
129
127
  ---
@@ -213,7 +211,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
213
211
 
214
212
  | Platform | Recommended install | Artifact source |
215
213
  |---|---|---|
216
- | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.43.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
214
+ | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.44.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
217
215
  | **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux">** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
218
216
  | **<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 |
219
217
  | **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
@@ -241,7 +239,7 @@ pythinker # start the interactive TUI
241
239
 
242
240
  ### 🪟 Windows — native installer
243
241
 
244
- `PythinkerSetup-0.43.0.exe` is a signed* Inno Setup wizard. Installs per-user
242
+ `PythinkerSetup-0.44.0.exe` is a signed* Inno Setup wizard. Installs per-user
245
243
  into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
246
244
  PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
247
245
  the change. **No UAC prompt.**
@@ -252,13 +250,13 @@ irm https://pythinker.com/install.ps1 | iex
252
250
 
253
251
  # Or manually download the installer + checksum from the Releases page,
254
252
  # verify with Get-FileHash, then run:
255
- .\PythinkerSetup-0.43.0.exe
253
+ .\PythinkerSetup-0.44.0.exe
256
254
 
257
255
  # Open a fresh PowerShell
258
256
  pythinker --version
259
257
  ```
260
258
 
261
- **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.43.0.exe /ALLUSERS`
259
+ **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.44.0.exe /ALLUSERS`
262
260
  installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
263
261
 
264
262
  **Upgrade:** `pythinker update` from inside the running app — it downloads
@@ -316,26 +314,26 @@ attached to every GitHub Release.
316
314
 
317
315
  ```sh
318
316
  # Debian / Ubuntu (x86_64)
319
- sudo dpkg -i pythinker-code_0.43.0_amd64.deb
317
+ sudo dpkg -i pythinker-code_0.44.0_amd64.deb
320
318
  sudo apt-get install -f # only if dpkg reports missing deps
321
319
 
322
320
  # Debian / Ubuntu (ARM64)
323
- sudo dpkg -i pythinker-code_0.43.0_arm64.deb
321
+ sudo dpkg -i pythinker-code_0.44.0_arm64.deb
324
322
 
325
323
  # Fedora / RHEL / openSUSE (x86_64)
326
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.43.0/pythinker-code-0.43.0.x86_64.rpm
327
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.43.0/pythinker-code-0.43.0.x86_64.rpm.sha256
328
- sha256sum -c pythinker-code-0.43.0.x86_64.rpm.sha256
324
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.44.0/pythinker-code-0.44.0.x86_64.rpm
325
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.44.0/pythinker-code-0.44.0.x86_64.rpm.sha256
326
+ sha256sum -c pythinker-code-0.44.0.x86_64.rpm.sha256
329
327
  # Fedora / RHEL:
330
- sudo dnf install ./pythinker-code-0.43.0.x86_64.rpm
328
+ sudo dnf install ./pythinker-code-0.44.0.x86_64.rpm
331
329
  # openSUSE:
332
- sudo zypper install ./pythinker-code-0.43.0.x86_64.rpm
330
+ sudo zypper install ./pythinker-code-0.44.0.x86_64.rpm
333
331
 
334
332
  # Fedora / RHEL (aarch64)
335
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.43.0/pythinker-code-0.43.0.aarch64.rpm
336
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.43.0/pythinker-code-0.43.0.aarch64.rpm.sha256
337
- sha256sum -c pythinker-code-0.43.0.aarch64.rpm.sha256
338
- sudo dnf install ./pythinker-code-0.43.0.aarch64.rpm
333
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.44.0/pythinker-code-0.44.0.aarch64.rpm
334
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.44.0/pythinker-code-0.44.0.aarch64.rpm.sha256
335
+ sha256sum -c pythinker-code-0.44.0.aarch64.rpm.sha256
336
+ sudo dnf install ./pythinker-code-0.44.0.aarch64.rpm
339
337
  ```
340
338
 
341
339
  Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
@@ -344,8 +342,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
344
342
  **Verify before install:**
345
343
 
346
344
  ```sh
347
- sha256sum -c pythinker-code_0.43.0_amd64.deb.sha256 # Debian/Ubuntu
348
- sha256sum -c pythinker-code-0.43.0.x86_64.rpm.sha256 # Fedora/RHEL
345
+ sha256sum -c pythinker-code_0.44.0_amd64.deb.sha256 # Debian/Ubuntu
346
+ sha256sum -c pythinker-code-0.44.0.x86_64.rpm.sha256 # Fedora/RHEL
349
347
  ```
350
348
 
351
349
  **Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
@@ -50,15 +50,13 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
50
50
 
51
51
  ---
52
52
 
53
- ## 🆕 What's New in 0.43.0
53
+ ## 🆕 What's New in 0.44.0
54
54
 
55
- - **Silent startup auto-updates, on by default.** Managed and native installs now check for and apply updates in the background at startup, surfacing a restart-to-apply notice instead of a blocking prompt. Opt out with `auto_update = false` or `PYTHINKER_AUTO_UPDATE=0`; the Windows binary-replacement path no longer crashes the shell.
56
- - **Redesigned tracing dashboard.** The visualization dashboard (`pythinker vis`) gets a soft-enterprise refresh: redesigned Statistics and Sessions surfaces, a new Usage page with a usage heatmap and metric cards, and a consistent blue-accent treatment.
57
- - **Robust project-memory tooling.** Capacity rejections now report exact free space (delimiter-aware accounting), the `Memory` tool gains a read-only `list` action, `/memory` shows per-store capacity with a "nearly full" panel at ≥85%, and rule-/value-/file-like writes are gated behind a confirmation that steers corrections toward the authoritative file instead of silently accumulating in memory.
58
- - **Sharper agent guardrails.** Absence claims ("no em-dashes", "matches the source") must be backed by an actual zero-hit scan; a `designer-skill` MCP bridge routes frontend work to connected MCP tools; `best_practices_always` folds `/best-practices` guidance into every session at startup; and `StrReplaceFile` returns precise, actionable errors when a multi-edit batch fails validation.
59
- - **Quality of life.** `/recap on|off` with autosuggest and `<system-reminder>`-stripped recaps; a decluttered, spaced-out slash command menu with a persistent footer and `+N more` overflow; diff context lines render in normal text color; `/login` selector polish; scratch files clean up on exception exit; and error/crash telemetry is emitted at ERROR severity so it actually surfaces in dashboards.
55
+ - **Toggle auto-update from the CLI.** `/update` now opens a menu *Check for updates now* (the default, so a bare `/update` still checks immediately) or *Auto-update on startup* with its current state. `/update auto on|off` sets it directly, the same toggle appears in `/settings`, and `pythinker info` reports the status. Every surface shows the *effective* state, so an external override (`PYTHINKER_CLI_NO_AUTO_UPDATE` or a source checkout) is surfaced as the reason instead of silently no-opping.
56
+ - **No more spurious "could not close the program" error on Windows updates.** The native installer now waits for the launching `pythinker.exe` to fully exit (its PID is passed via `/PID`) before its Restart Manager scan runs, so the scan no longer races the launcher's teardown into a false "close the program and retry" dialog. The update already succeeded in that case; now it completes cleanly.
57
+ - **Simpler Windows update path.** With every shipped Windows install updating through the native installer, the Windows-only detached-spawn upgrade helper is gone; the remaining pip/uv/pipx path runs the upgrade inline and surfaces real command output and errors instead of a fire-and-forget process.
60
58
 
61
- Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.43.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
59
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.44.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
62
60
 
63
61
 
64
62
  ---
@@ -148,7 +146,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
148
146
 
149
147
  | Platform | Recommended install | Artifact source |
150
148
  |---|---|---|
151
- | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.43.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
149
+ | **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.44.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
152
150
  | **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux">** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
153
151
  | **<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 |
154
152
  | **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
@@ -176,7 +174,7 @@ pythinker # start the interactive TUI
176
174
 
177
175
  ### 🪟 Windows — native installer
178
176
 
179
- `PythinkerSetup-0.43.0.exe` is a signed* Inno Setup wizard. Installs per-user
177
+ `PythinkerSetup-0.44.0.exe` is a signed* Inno Setup wizard. Installs per-user
180
178
  into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
181
179
  PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
182
180
  the change. **No UAC prompt.**
@@ -187,13 +185,13 @@ irm https://pythinker.com/install.ps1 | iex
187
185
 
188
186
  # Or manually download the installer + checksum from the Releases page,
189
187
  # verify with Get-FileHash, then run:
190
- .\PythinkerSetup-0.43.0.exe
188
+ .\PythinkerSetup-0.44.0.exe
191
189
 
192
190
  # Open a fresh PowerShell
193
191
  pythinker --version
194
192
  ```
195
193
 
196
- **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.43.0.exe /ALLUSERS`
194
+ **Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.44.0.exe /ALLUSERS`
197
195
  installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
198
196
 
199
197
  **Upgrade:** `pythinker update` from inside the running app — it downloads
@@ -251,26 +249,26 @@ attached to every GitHub Release.
251
249
 
252
250
  ```sh
253
251
  # Debian / Ubuntu (x86_64)
254
- sudo dpkg -i pythinker-code_0.43.0_amd64.deb
252
+ sudo dpkg -i pythinker-code_0.44.0_amd64.deb
255
253
  sudo apt-get install -f # only if dpkg reports missing deps
256
254
 
257
255
  # Debian / Ubuntu (ARM64)
258
- sudo dpkg -i pythinker-code_0.43.0_arm64.deb
256
+ sudo dpkg -i pythinker-code_0.44.0_arm64.deb
259
257
 
260
258
  # Fedora / RHEL / openSUSE (x86_64)
261
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.43.0/pythinker-code-0.43.0.x86_64.rpm
262
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.43.0/pythinker-code-0.43.0.x86_64.rpm.sha256
263
- sha256sum -c pythinker-code-0.43.0.x86_64.rpm.sha256
259
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.44.0/pythinker-code-0.44.0.x86_64.rpm
260
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.44.0/pythinker-code-0.44.0.x86_64.rpm.sha256
261
+ sha256sum -c pythinker-code-0.44.0.x86_64.rpm.sha256
264
262
  # Fedora / RHEL:
265
- sudo dnf install ./pythinker-code-0.43.0.x86_64.rpm
263
+ sudo dnf install ./pythinker-code-0.44.0.x86_64.rpm
266
264
  # openSUSE:
267
- sudo zypper install ./pythinker-code-0.43.0.x86_64.rpm
265
+ sudo zypper install ./pythinker-code-0.44.0.x86_64.rpm
268
266
 
269
267
  # Fedora / RHEL (aarch64)
270
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.43.0/pythinker-code-0.43.0.aarch64.rpm
271
- curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.43.0/pythinker-code-0.43.0.aarch64.rpm.sha256
272
- sha256sum -c pythinker-code-0.43.0.aarch64.rpm.sha256
273
- sudo dnf install ./pythinker-code-0.43.0.aarch64.rpm
268
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.44.0/pythinker-code-0.44.0.aarch64.rpm
269
+ curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.44.0/pythinker-code-0.44.0.aarch64.rpm.sha256
270
+ sha256sum -c pythinker-code-0.44.0.aarch64.rpm.sha256
271
+ sudo dnf install ./pythinker-code-0.44.0.aarch64.rpm
274
272
  ```
275
273
 
276
274
  Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
@@ -279,8 +277,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
279
277
  **Verify before install:**
280
278
 
281
279
  ```sh
282
- sha256sum -c pythinker-code_0.43.0_amd64.deb.sha256 # Debian/Ubuntu
283
- sha256sum -c pythinker-code-0.43.0.x86_64.rpm.sha256 # Fedora/RHEL
280
+ sha256sum -c pythinker-code_0.44.0_amd64.deb.sha256 # Debian/Ubuntu
281
+ sha256sum -c pythinker-code-0.44.0.x86_64.rpm.sha256 # Fedora/RHEL
284
282
  ```
285
283
 
286
284
  **Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "pythinker-code"
3
- version = "0.43.0"
3
+ version = "0.44.0"
4
4
  description = "Pythinker — an agentic CLI developed by Pythoughts-labs."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -15,6 +15,14 @@ GitHub Releases page; `0.8.0` is the new starting line.
15
15
 
16
16
  ## Unreleased
17
17
 
18
+ ## 0.44.0 (2026-06-13)
19
+
20
+ - **Toggle auto-update from the CLI.** Running `/update` now opens a menu — *Check for updates now* (the default, so a bare `/update` + Enter still checks immediately) or *Auto-update on startup* with its current state — so the toggle is discoverable without knowing a subcommand. `/update auto on|off` still sets it directly, and `/update auto` with no value opens an interactive On/Off picker (cursor defaulted to the current setting). The same toggle appears in the interactive `/settings` panel, and `pythinker info` reports the auto-update status. All surfaces show the *effective* state — an external override (`PYTHINKER_CLI_NO_AUTO_UPDATE` or a source checkout) is surfaced as the reason, renders the `/settings` row read-only, and makes `/update auto` report the read-only state rather than popping a no-op picker, so the toggle is never a silent no-op.
21
+ - **Windows in-app update no longer shows a spurious "could not close the program" error.** The native installer now waits for the launching `pythinker.exe` to fully exit (its PID is passed via `/PID`) before its Restart Manager scan runs, so the scan no longer races the launcher's teardown into a false "close the program and retry" dialog. The update already succeeded in that case; now it completes cleanly without the alarming prompt.
22
+ - **Simplified the Windows pip/uv/pipx update path.** Now that every shipped Windows install updates through the native installer, the Windows-only detached-spawn upgrade helper is removed; the remaining pip/uv/pipx path (a Windows source checkout, or any macOS/Linux install) runs the upgrade inline like POSIX, surfacing real command output and errors instead of a fire-and-forget process.
23
+
24
+ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.44.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
25
+
18
26
  ## 0.43.0 (2026-06-13)
19
27
 
20
28
  - **Silent startup auto-updates (default on).** Managed and native installs now check for and apply updates in the background at startup, surfacing a restart-to-apply notice instead of a blocking prompt. Opt out with `auto_update = false` in config or `PYTHINKER_AUTO_UPDATE=0` in the environment. The Windows update path that replaces the running binary no longer escapes as an uncaught `SystemExit` and crashes the shell.
@@ -0,0 +1,117 @@
1
+ from __future__ import annotations
2
+
3
+ import json
4
+ import platform
5
+ from typing import Annotated, TypedDict
6
+
7
+ import typer
8
+
9
+
10
+ class InfoData(TypedDict):
11
+ pythinker_code_version: str
12
+ organization: str
13
+ agent_spec_versions: list[str]
14
+ wire_protocol_version: str
15
+ python_version: str
16
+ auto_update: bool | None
17
+ auto_update_config: bool | None
18
+ auto_update_override: str | None
19
+
20
+
21
+ def _auto_update_info() -> tuple[bool | None, bool | None, str | None]:
22
+ """Return ``(effective_enabled, config_value, override_reason)``.
23
+
24
+ Every element is ``None`` when the status cannot be resolved. The whole
25
+ block is guarded so an unreadable config or any other failure never turns
26
+ the always-available ``info`` diagnostic into a crash.
27
+ """
28
+ try:
29
+ from pythinker_code.config import Config, get_config_file, load_config
30
+ from pythinker_code.update_policy import (
31
+ auto_update_enabled,
32
+ auto_update_override_reason,
33
+ )
34
+
35
+ override = auto_update_override_reason()
36
+ # `load_config()` seeds a default config file when none exists; `info`
37
+ # must stay read-only, so fall back to in-memory defaults when the user
38
+ # has no config file yet rather than creating one as a side effect.
39
+ config_exists = get_config_file(create=False).expanduser().exists()
40
+ config = load_config() if config_exists else Config()
41
+ return auto_update_enabled(config), config.auto_update, override
42
+ except (OSError, ValueError, ImportError) as exc:
43
+ # Read-only diagnostic: never abort `info`, but log the degraded path
44
+ # instead of silently masking a real config/policy failure. ConfigError
45
+ # and pydantic validation errors are ValueError subclasses.
46
+ from pythinker_code.utils.logging import logger
47
+
48
+ logger.debug("Could not resolve auto-update status for `info`: {}", exc)
49
+ return None, None, None
50
+
51
+
52
+ def _collect_info() -> InfoData:
53
+ from pythinker_code.agentspec import SUPPORTED_AGENT_SPEC_VERSIONS
54
+ from pythinker_code.constant import ORGANIZATION, get_version
55
+ from pythinker_code.wire.protocol import WIRE_PROTOCOL_VERSION
56
+
57
+ auto_update_effective, auto_update_config, auto_update_override = _auto_update_info()
58
+
59
+ return {
60
+ "pythinker_code_version": get_version(),
61
+ "organization": ORGANIZATION,
62
+ "agent_spec_versions": [str(version) for version in SUPPORTED_AGENT_SPEC_VERSIONS],
63
+ "wire_protocol_version": WIRE_PROTOCOL_VERSION,
64
+ "python_version": platform.python_version(),
65
+ "auto_update": auto_update_effective,
66
+ "auto_update_config": auto_update_config,
67
+ "auto_update_override": auto_update_override,
68
+ }
69
+
70
+
71
+ def _auto_update_line(info: InfoData) -> str:
72
+ effective = info["auto_update"]
73
+ if effective is None:
74
+ return "auto-update: unknown"
75
+ state = "enabled" if effective else "disabled"
76
+ detail = f"config auto_update={'true' if info['auto_update_config'] else 'false'}"
77
+ override = info["auto_update_override"]
78
+ if override:
79
+ detail += f"; {override}"
80
+ return f"auto-update: {state} ({detail})"
81
+
82
+
83
+ def _emit_info(json_output: bool) -> None:
84
+ info = _collect_info()
85
+ if json_output:
86
+ typer.echo(json.dumps(info, ensure_ascii=False))
87
+ return
88
+
89
+ agent_versions_text = ", ".join(str(version) for version in info["agent_spec_versions"])
90
+
91
+ lines = [
92
+ f"pythinker-code version: {info['pythinker_code_version']}",
93
+ f"developed by: {info['organization']}",
94
+ f"agent spec versions: {agent_versions_text}",
95
+ f"wire protocol: {info['wire_protocol_version']}",
96
+ f"python version: {info['python_version']}",
97
+ _auto_update_line(info),
98
+ ]
99
+ for line in lines:
100
+ typer.echo(line)
101
+
102
+
103
+ cli = typer.Typer(help="Show version and protocol information.")
104
+
105
+
106
+ @cli.callback(invoke_without_command=True)
107
+ def info(
108
+ json_output: Annotated[
109
+ bool,
110
+ typer.Option(
111
+ "--json",
112
+ help="Output information as JSON.",
113
+ ),
114
+ ] = False,
115
+ ):
116
+ """Show version and protocol information."""
117
+ _emit_info(json_output)
@@ -1206,9 +1206,13 @@ class Config(BaseModel):
1206
1206
  self.ask_user_question_policy = "ask_except_auto"
1207
1207
 
1208
1208
 
1209
- def get_config_file() -> Path:
1210
- """Get the configuration file path."""
1211
- return get_share_dir() / "config.toml"
1209
+ def get_config_file(*, create: bool = True) -> Path:
1210
+ """Get the configuration file path.
1211
+
1212
+ Pass ``create=False`` to resolve the path without creating the share
1213
+ directory, for read-only callers that must avoid filesystem side effects.
1214
+ """
1215
+ return get_share_dir(create=create) / "config.toml"
1212
1216
 
1213
1217
 
1214
1218
  def get_default_config() -> Config:
@@ -5,12 +5,20 @@ import os
5
5
  from pathlib import Path
6
6
 
7
7
 
8
- def get_share_dir() -> Path:
9
- """Get the share directory path."""
8
+ def get_share_dir(*, create: bool = True) -> Path:
9
+ """Get the share directory path.
10
+
11
+ Creates and hardens the directory by default. Pass ``create=False`` to
12
+ resolve the path without any filesystem side effect — needed by read-only
13
+ callers (e.g. ``pythinker info``) that must not materialize ``~/.pythinker``
14
+ just to look something up.
15
+ """
10
16
  if share_dir := os.getenv("PYTHINKER_SHARE_DIR"):
11
17
  share_dir = Path(share_dir)
12
18
  else:
13
19
  share_dir = Path.home() / ".pythinker"
20
+ if not create:
21
+ return share_dir
14
22
  share_dir.mkdir(parents=True, exist_ok=True)
15
23
  # Harden unconditionally: an older version may have left the dir at 0755, so
16
24
  # only tightening on first-create would leave that secret-bearing dir traversable.
@@ -73,7 +73,6 @@ from pythinker_code.ui.shell.update import (
73
73
  _detect_upgrade_command, # pyright: ignore[reportPrivateUsage]
74
74
  _mark_auto_update_check_attempt, # pyright: ignore[reportPrivateUsage]
75
75
  _should_auto_check_for_updates, # pyright: ignore[reportPrivateUsage]
76
- auto_update_enabled,
77
76
  consume_whats_new,
78
77
  format_managed_channel_notice,
79
78
  pending_update_notice,
@@ -92,6 +91,7 @@ from pythinker_code.ui.shell.visualize import (
92
91
  from pythinker_code.ui.terminal_capabilities import ascii_glyphs_enabled, motion_disabled
93
92
  from pythinker_code.ui.theme import get_tui_tokens as _get_tui_tokens
94
93
  from pythinker_code.ui.theme import tui_rich_style
94
+ from pythinker_code.update_policy import auto_update_enabled
95
95
  from pythinker_code.utils.aioqueue import QueueShutDown
96
96
  from pythinker_code.utils.envvar import get_env_bool
97
97
  from pythinker_code.utils.logging import logger
@@ -48,6 +48,9 @@ def _float_values(current: float, presets: list[float]) -> list[str]:
48
48
 
49
49
  def _build_settings_config(config: Config) -> SettingsListConfig:
50
50
  """Build the settings-list config from a Pythinker ``Config`` object."""
51
+ from pythinker_code.update_policy import auto_update_override_reason
52
+
53
+ _auto_update_override = auto_update_override_reason()
51
54
  model_values = [_NONE_MODEL_VALUE, *sorted(config.models)]
52
55
  current_model = config.default_model or _NONE_MODEL_VALUE
53
56
  current_model_cfg = config.models.get(config.default_model) if config.default_model else None
@@ -160,6 +163,21 @@ def _build_settings_config(config: Config) -> SettingsListConfig:
160
163
  current_value=_bool(config.telemetry),
161
164
  values=_BOOL_VALUES,
162
165
  ),
166
+ SettingItem(
167
+ id="auto_update",
168
+ label="Auto-update",
169
+ description=(
170
+ "Silently install new releases in the background at startup "
171
+ "(applied on next restart)."
172
+ if _auto_update_override is None
173
+ else f"Auto-update is {_auto_update_override}; that override outranks this setting."
174
+ ),
175
+ # Show the *effective* state, and make the row read-only when an
176
+ # override (env kill-switch / source checkout) forces it off, so the
177
+ # panel never offers a no-op toggle.
178
+ current_value=(_bool(config.auto_update) if _auto_update_override is None else "false"),
179
+ values=_BOOL_VALUES if _auto_update_override is None else None,
180
+ ),
163
181
  SettingItem(
164
182
  id="merge_all_available_skills",
165
183
  label="Merge all skills",
@@ -343,6 +361,13 @@ def apply_settings_changes(config: Config, changes: dict[str, str]) -> list[str]
343
361
  if config.telemetry != new:
344
362
  config.telemetry = new
345
363
  mark(setting_id)
364
+ case "auto_update":
365
+ # Only reached for the live (non-override) row; a read-only row
366
+ # never submits a change.
367
+ new = value == "true"
368
+ if config.auto_update != new:
369
+ config.auto_update = new
370
+ mark(setting_id)
346
371
  case "merge_all_available_skills":
347
372
  new = value == "true"
348
373
  if config.merge_all_available_skills != new:
@@ -2084,11 +2084,26 @@ async def show_memory(app: Shell, args: str):
2084
2084
 
2085
2085
  @registry.command(name="update", aliases=["upgrade"])
2086
2086
  async def update_command(app: Shell, args: str):
2087
- """Check for and optionally install the latest Pythinker version."""
2088
- _ = args, app
2087
+ """Check for updates, or `auto [on|off]` to toggle silent startup auto-updates."""
2089
2088
  from pythinker_code.ui.shell.update import UpdateResult, run_update_prompt
2090
2089
  from pythinker_code.ui.shell.update_orchestrator import run_update_job
2091
2090
 
2091
+ parts = args.strip().split()
2092
+ if parts and parts[0].lower() in {"auto", "auto-update", "autoupdate"}:
2093
+ await _auto_update_toggle(app, parts[1:])
2094
+ return
2095
+
2096
+ # Bare `/update` opens a top-level menu so the auto-update toggle is
2097
+ # discoverable without knowing the `auto` subcommand. Explicit args skip
2098
+ # straight to the check/update flow.
2099
+ if not parts:
2100
+ action = await _prompt_update_action(app)
2101
+ if action == "auto":
2102
+ await _auto_update_toggle(app, [])
2103
+ return
2104
+ if action != "check":
2105
+ return
2106
+
2092
2107
  async def _runner(*, print_output: bool, check_only: bool) -> UpdateResult:
2093
2108
  return await run_update_job(
2094
2109
  print_output=print_output, check_only=check_only, source="slash"
@@ -2099,6 +2114,134 @@ async def update_command(app: Shell, args: str):
2099
2114
  console.print("Updated — restart Pythinker to use the new version.")
2100
2115
 
2101
2116
 
2117
+ async def _prompt_update_action(app: Shell) -> str | None:
2118
+ """Top-level `/update` menu.
2119
+
2120
+ Returns ``"check"`` to run the update check/install flow, ``"auto"`` to open
2121
+ the auto-update toggle, or ``None`` when the user cancels/aborts. The cursor
2122
+ defaults to "check" so a bare ``/update`` + Enter still goes straight to the
2123
+ update check.
2124
+ """
2125
+ from prompt_toolkit.shortcuts.choice_input import ChoiceInput
2126
+
2127
+ from pythinker_code.update_policy import auto_update_enabled
2128
+
2129
+ auto_label = "Auto-update on startup"
2130
+ if isinstance(app.soul, PythinkerSoul):
2131
+ state = "on" if auto_update_enabled(app.soul.runtime.config) else "off"
2132
+ auto_label = f"{auto_label}: {state}"
2133
+
2134
+ try:
2135
+ selection = await ChoiceInput(
2136
+ message="Update",
2137
+ options=[
2138
+ ("check", "Check for updates now"),
2139
+ ("auto", auto_label),
2140
+ ("cancel", "Cancel"),
2141
+ ],
2142
+ default="check",
2143
+ ).prompt_async()
2144
+ except (EOFError, KeyboardInterrupt):
2145
+ return None
2146
+ return selection if selection in {"check", "auto"} else None
2147
+
2148
+
2149
+ async def _auto_update_toggle(app: Shell, args: list[str]) -> None:
2150
+ """Show or set the silent startup auto-update preference.
2151
+
2152
+ `/update auto on|off` sets it directly; `/update auto` with no value opens an
2153
+ interactive On/Off picker (or, when an external override has made the setting
2154
+ read-only, reports the effective state instead of popping a no-op picker).
2155
+ """
2156
+ from pythinker_code.telemetry import track
2157
+ from pythinker_code.ui.theme import get_tui_tokens as _get_tok
2158
+ from pythinker_code.update_policy import auto_update_enabled, auto_update_override_reason
2159
+
2160
+ _t = _get_tok()
2161
+ soul = ensure_pythinker_soul(app)
2162
+ if soul is None:
2163
+ return
2164
+ config = soul.runtime.config
2165
+ override = auto_update_override_reason()
2166
+
2167
+ def _print_override() -> None:
2168
+ if override is not None:
2169
+ console.print(f"[{_t.muted}]Note: {override}; this overrides the setting.[/]")
2170
+
2171
+ if args:
2172
+ value = args[0].lower()
2173
+ if len(args) > 1 or value not in {"on", "off"}:
2174
+ console.print(f"[{_t.warning}]Usage: /update auto [on|off][/]")
2175
+ return
2176
+ enabled = value == "on"
2177
+ elif override is not None:
2178
+ # An override makes the stored setting read-only: changing it would not
2179
+ # change behavior, so report the effective state instead of a no-op picker.
2180
+ effective = "on" if auto_update_enabled(config) else "off"
2181
+ stored = "on" if config.auto_update else "off"
2182
+ console.print(f"[{_t.info}]Auto-update: {effective}[/] (config auto_update={stored})")
2183
+ _print_override()
2184
+ return
2185
+ else:
2186
+ selected = await _prompt_auto_update_selection(current=config.auto_update)
2187
+ if selected is None:
2188
+ return
2189
+ enabled = selected
2190
+
2191
+ value = "on" if enabled else "off"
2192
+ if config.auto_update == enabled:
2193
+ console.print(f"[{_t.warning}]Auto-update already {value}.[/]")
2194
+ _print_override()
2195
+ return
2196
+
2197
+ config_file = config.source_file
2198
+ if config_file is None:
2199
+ console.print(
2200
+ f"[{_t.warning}]Toggling auto-update requires a config file; "
2201
+ f"restart without --config (or use --config-file) to persist settings.[/]"
2202
+ )
2203
+ return
2204
+ try:
2205
+ config_for_save = load_config(config_file)
2206
+ config_for_save.auto_update = enabled
2207
+ save_config(config_for_save, config_file)
2208
+ except (ConfigError, OSError) as exc:
2209
+ console.print(f"[{_t.error}]Failed to save config: {_rich_escape(exc)}[/]")
2210
+ return
2211
+ # auto_update is only consulted at startup, so nothing live depends on it:
2212
+ # mirror the saved value into the running config instead of forcing a reload
2213
+ # (a reload would re-trigger the startup auto-update task we just toggled).
2214
+ config.auto_update = enabled
2215
+
2216
+ track("settings_update", changed="auto_update", count=1)
2217
+ console.print(f"[{_t.success}]Auto-update {value}. Takes effect at next startup.[/]")
2218
+ _print_override()
2219
+
2220
+
2221
+ async def _prompt_auto_update_selection(*, current: bool) -> bool | None:
2222
+ """Interactive On/Off picker for silent startup auto-update.
2223
+
2224
+ Returns ``True``/``False`` for the chosen state, or ``None`` when the user
2225
+ cancels (selects Cancel, or aborts with Esc/Ctrl-C). The cursor defaults to
2226
+ the current setting so leaving it unchanged is the zero-effort choice.
2227
+ """
2228
+ from prompt_toolkit.shortcuts.choice_input import ChoiceInput
2229
+
2230
+ try:
2231
+ selection = await ChoiceInput(
2232
+ message="Auto-update on startup",
2233
+ options=[("on", "On"), ("off", "Off"), ("cancel", "Cancel")],
2234
+ default="on" if current else "off",
2235
+ ).prompt_async()
2236
+ except (EOFError, KeyboardInterrupt):
2237
+ return None
2238
+ if selection == "on":
2239
+ return True
2240
+ if selection == "off":
2241
+ return False
2242
+ return None
2243
+
2244
+
2102
2245
  @registry.command
2103
2246
  async def mcp(app: Shell, args: str):
2104
2247
  """Show MCP servers and tools"""